!function(t) {
    function e(e) {
        for (var n, r, o = e[0], a = e[1], s = 0, l = []; s < o.length; s++)
            r = o[s],
            Object.prototype.hasOwnProperty.call(i, r) && i[r] && l.push(i[r][0]),
            i[r] = 0;
        for (n in a)
            Object.prototype.hasOwnProperty.call(a, n) && (t[n] = a[n]);
        for (c && c(e); l.length; )
            l.shift()()
    }
    var n = {}
      , i = {
        9: 0
    };
    function r(e) {
        if (n[e])
            return n[e].exports;
        var i = n[e] = {
            i: e,
            l: !1,
            exports: {}
        };
        return t[e].call(i.exports, i, i.exports, r),
        i.l = !0,
        i.exports
    }
    r.e = function(t) {
        var e = []
          , n = i[t];
        if (0 !== n)
            if (n)
                e.push(n[2]);
            else {
                var o = new Promise((function(e, r) {
                    n = i[t] = [e, r]
                }
                ));
                e.push(n[2] = o);
                var a, s = document.createElement("script");
                s.charset = "utf-8",
                s.timeout = 120,
                r.nc && s.setAttribute("nonce", r.nc),
                s.src = function(t) {
                    return r.p + "" + ({
                        4: "NotoSansCJKjp-Regular",
                        5: "NotoSansCJKsc-Regular",
                        6: "NotoSansCJKtc-Regular",
                        7: "PTSans-Regular",
                        8: "fonts",
                        10: "main.async",
                        11: "openlayers",
                        12: "vendors~main.async",
                        13: "vendors~openlayers"
                    }[t] || t) + "." + {
                        0: "000f190386b228875e25",
                        1: "c1853290f670423b7527",
                        2: "2ce6b49b8b065f35ecd0",
                        3: "eaed849cc22768e36240",
                        4: "c180b1217acb50b16596",
                        5: "3d696b37feacacc5ade6",
                        6: "64b7b547b4e6a67626a7",
                        7: "dbde102023883b514726",
                        8: "5129d374a8ae9f620fd1",
                        10: "937f8f38454add70d57b",
                        11: "9e59effec83cc3693b5d",
                        12: "cbcba49054e73e98695c",
                        13: "bda930fc91df500ed80d",
                        14: "4331acc2c778ecc64c4a",
                        15: "911fc079db6705d168db",
                        16: "6063f7445eac865e067e",
                        17: "82bbf60e16d46d39aea0",
                        18: "74aff998a9a0809c55ec",
                        19: "77825ef0e44aed4d6923",
                        20: "6b25999da18928efa560",
                        21: "6e35bf5486d7bec96c04",
                        22: "5e732276a454498ed917",
                        23: "8641b8fc3d6165bb187f",
                        24: "4b5f0f3ea342b634f9c3",
                        25: "1f3d6c9616e13f12f5f2"
                    }[t] + ".js"
                }(t);
                var c = new Error;
                a = function(e) {
                    s.onerror = s.onload = null,
                    clearTimeout(l);
                    var n = i[t];
                    if (0 !== n) {
                        if (n) {
                            var r = e && ("load" === e.type ? "missing" : e.type)
                              , o = e && e.target && e.target.src;
                            c.message = "Loading chunk " + t + " failed.\n(" + r + ": " + o + ")",
                            c.name = "ChunkLoadError",
                            c.type = r,
                            c.request = o,
                            n[1](c)
                        }
                        i[t] = void 0
                    }
                }
                ;
                var l = setTimeout((function() {
                    a({
                        type: "timeout",
                        target: s
                    })
                }
                ), 12e4);
                s.onerror = s.onload = a,
                document.head.appendChild(s)
            }
        return Promise.all(e)
    }
    ,
    r.m = t,
    r.c = n,
    r.d = function(t, e, n) {
        r.o(t, e) || Object.defineProperty(t, e, {
            enumerable: !0,
            get: n
        })
    }
    ,
    r.r = function(t) {
        "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {
            value: "Module"
        }),
        Object.defineProperty(t, "__esModule", {
            value: !0
        })
    }
    ,
    r.t = function(t, e) {
        if (1 & e && (t = r(t)),
        8 & e)
            return t;
        if (4 & e && "object" == typeof t && t && t.__esModule)
            return t;
        var n = Object.create(null);
        if (r.r(n),
        Object.defineProperty(n, "default", {
            enumerable: !0,
            value: t
        }),
        2 & e && "string" != typeof t)
            for (var i in t)
                r.d(n, i, function(e) {
                    return t[e]
                }
                .bind(null, i));
        return n
    }
    ,
    r.n = function(t) {
        var e = t && t.__esModule ? function() {
            return t.default
        }
        : function() {
            return t
        }
        ;
        return r.d(e, "a", e),
        e
    }
    ,
    r.o = function(t, e) {
        return Object.prototype.hasOwnProperty.call(t, e)
    }
    ,
    r.p = "",
    r.oe = function(t) {
        throw console.error(t),
        t
    }
    ;
    var o = window.webpackJsonpNVIV = window.webpackJsonpNVIV || []
      , a = o.push.bind(o);
    o.push = e,
    o = o.slice();
    for (var s = 0; s < o.length; s++)
        e(o[s]);
    var c = a;
    r(r.s = 651)
}([function(t, e, n) {
    "use strict";
    n.r(e),
    function(t) {
        n.d(e, "ANALYZE_FOR_ENTRY_COMPONENTS", (function() {
            return ol
        }
        )),
        n.d(e, "APP_BOOTSTRAP_LISTENER", (function() {
            return Gy
        }
        )),
        n.d(e, "APP_ID", (function() {
            return Ny
        }
        )),
        n.d(e, "APP_INITIALIZER", (function() {
            return Ry
        }
        )),
        n.d(e, "ApplicationInitStatus", (function() {
            return Ly
        }
        )),
        n.d(e, "ApplicationModule", (function() {
            return _w
        }
        )),
        n.d(e, "ApplicationRef", (function() {
            return Fb
        }
        )),
        n.d(e, "Attribute", (function() {
            return C
        }
        )),
        n.d(e, "COMPILER_OPTIONS", (function() {
            return cb
        }
        )),
        n.d(e, "CUSTOM_ELEMENTS_SCHEMA", (function() {
            return Li
        }
        )),
        n.d(e, "ChangeDetectionStrategy", (function() {
            return At
        }
        )),
        n.d(e, "ChangeDetectorRef", (function() {
            return Ws
        }
        )),
        n.d(e, "Compiler", (function() {
            return sb
        }
        )),
        n.d(e, "CompilerFactory", (function() {
            return lb
        }
        )),
        n.d(e, "Component", (function() {
            return by
        }
        )),
        n.d(e, "ComponentFactory", (function() {
            return Hp
        }
        )),
        n.d(e, "ComponentFactoryResolver", (function() {
            return Yp
        }
        )),
        n.d(e, "ComponentRef", (function() {
            return Gp
        }
        )),
        n.d(e, "ContentChild", (function() {
            return cl
        }
        )),
        n.d(e, "ContentChildren", (function() {
            return sl
        }
        )),
        n.d(e, "DEFAULT_CURRENCY_CODE", (function() {
            return Xy
        }
        )),
        n.d(e, "DebugElement", (function() {
            return ww
        }
        )),
        n.d(e, "DebugEventListener", (function() {
            return $b
        }
        )),
        n.d(e, "DebugNode", (function() {
            return bw
        }
        )),
        n.d(e, "DefaultIterableDiffer", (function() {
            return uh
        }
        )),
        n.d(e, "Directive", (function() {
            return yy
        }
        )),
        n.d(e, "ElementRef", (function() {
            return Qp
        }
        )),
        n.d(e, "EmbeddedViewRef", (function() {
            return Qb
        }
        )),
        n.d(e, "ErrorHandler", (function() {
            return Ri
        }
        )),
        n.d(e, "EventEmitter", (function() {
            return uv
        }
        )),
        n.d(e, "Host", (function() {
            return M
        }
        )),
        n.d(e, "HostBinding", (function() {
            return My
        }
        )),
        n.d(e, "HostListener", (function() {
            return Ey
        }
        )),
        n.d(e, "INJECTOR", (function() {
            return lt
        }
        )),
        n.d(e, "Inject", (function() {
            return b
        }
        )),
        n.d(e, "InjectFlags", (function() {
            return v
        }
        )),
        n.d(e, "Injectable", (function() {
            return dc
        }
        )),
        n.d(e, "InjectionToken", (function() {
            return ct
        }
        )),
        n.d(e, "Injector", (function() {
            return Pc
        }
        )),
        n.d(e, "Input", (function() {
            return Sy
        }
        )),
        n.d(e, "IterableDiffers", (function() {
            return yh
        }
        )),
        n.d(e, "KeyValueDiffers", (function() {
            return bh
        }
        )),
        n.d(e, "LOCALE_ID", (function() {
            return qy
        }
        )),
        n.d(e, "MissingTranslationStrategy", (function() {
            return Uy
        }
        )),
        n.d(e, "ModuleWithComponentFactories", (function() {
            return Qy
        }
        )),
        n.d(e, "NO_ERRORS_SCHEMA", (function() {
            return Ni
        }
        )),
        n.d(e, "NgModule", (function() {
            return Iy
        }
        )),
        n.d(e, "NgModuleFactory", (function() {
            return Pt
        }
        )),
        n.d(e, "NgModuleFactoryLoader", (function() {
            return zb
        }
        )),
        n.d(e, "NgModuleRef", (function() {
            return _t
        }
        )),
        n.d(e, "NgProbeToken", (function() {
            return Ib
        }
        )),
        n.d(e, "NgZone", (function() {
            return pb
        }
        )),
        n.d(e, "Optional", (function() {
            return w
        }
        )),
        n.d(e, "Output", (function() {
            return xy
        }
        )),
        n.d(e, "PACKAGE_ROOT_URL", (function() {
            return Hy
        }
        )),
        n.d(e, "PLATFORM_ID", (function() {
            return zy
        }
        )),
        n.d(e, "PLATFORM_INITIALIZER", (function() {
            return By
        }
        )),
        n.d(e, "Pipe", (function() {
            return wy
        }
        )),
        n.d(e, "PlatformRef", (function() {
            return jb
        }
        )),
        n.d(e, "Query", (function() {
            return al
        }
        )),
        n.d(e, "QueryList", (function() {
            return pv
        }
        )),
        n.d(e, "ReflectiveInjector", (function() {
            return il
        }
        )),
        n.d(e, "ReflectiveKey", (function() {
            return Gc
        }
        )),
        n.d(e, "Renderer2", (function() {
            return nh
        }
        )),
        n.d(e, "RendererFactory2", (function() {
            return eh
        }
        )),
        n.d(e, "RendererStyleFlags2", (function() {
            return Jp
        }
        )),
        n.d(e, "ResolvedReflectiveFactory", (function() {
            return Kc
        }
        )),
        n.d(e, "Sanitizer", (function() {
            return oh
        }
        )),
        n.d(e, "SecurityContext", (function() {
            return lr
        }
        )),
        n.d(e, "Self", (function() {
            return S
        }
        )),
        n.d(e, "SimpleChange", (function() {
            return Ip
        }
        )),
        n.d(e, "SkipSelf", (function() {
            return x
        }
        )),
        n.d(e, "SystemJsNgModuleLoader", (function() {
            return Kb
        }
        )),
        n.d(e, "SystemJsNgModuleLoaderConfig", (function() {
            return Xb
        }
        )),
        n.d(e, "TRANSLATIONS", (function() {
            return Yy
        }
        )),
        n.d(e, "TRANSLATIONS_FORMAT", (function() {
            return Ky
        }
        )),
        n.d(e, "TemplateRef", (function() {
            return Eh
        }
        )),
        n.d(e, "Testability", (function() {
            return wb
        }
        )),
        n.d(e, "TestabilityRegistry", (function() {
            return Sb
        }
        )),
        n.d(e, "Type", (function() {
            return Ys
        }
        )),
        n.d(e, "VERSION", (function() {
            return sh
        }
        )),
        n.d(e, "Version", (function() {
            return ah
        }
        )),
        n.d(e, "ViewChild", (function() {
            return ul
        }
        )),
        n.d(e, "ViewChildren", (function() {
            return ll
        }
        )),
        n.d(e, "ViewContainerRef", (function() {
            return Th
        }
        )),
        n.d(e, "ViewEncapsulation", (function() {
            return Ot
        }
        )),
        n.d(e, "ViewRef", (function() {
            return Jb
        }
        )),
        n.d(e, "WrappedValue", (function() {
            return xl
        }
        )),
        n.d(e, "asNativeElements", (function() {
            return nw
        }
        )),
        n.d(e, "assertPlatform", (function() {
            return Rb
        }
        )),
        n.d(e, "createPlatform", (function() {
            return kb
        }
        )),
        n.d(e, "createPlatformFactory", (function() {
            return Db
        }
        )),
        n.d(e, "defineInjectable", (function() {
            return _
        }
        )),
        n.d(e, "destroyPlatform", (function() {
            return Lb
        }
        )),
        n.d(e, "enableProdMode", (function() {
            return tr
        }
        )),
        n.d(e, "forwardRef", (function() {
            return z
        }
        )),
        n.d(e, "getDebugNode", (function() {
            return mw
        }
        )),
        n.d(e, "getModuleFactory", (function() {
            return Wb
        }
        )),
        n.d(e, "getPlatform", (function() {
            return Nb
        }
        )),
        n.d(e, "inject", (function() {
            return bt
        }
        )),
        n.d(e, "isDevMode", (function() {
            return $i
        }
        )),
        n.d(e, "platformCore", (function() {
            return Sw
        }
        )),
        n.d(e, "resolveForwardRef", (function() {
            return G
        }
        )),
        n.d(e, "setTestabilityGetter", (function() {
            return xb
        }
        )),
        n.d(e, "ɵ0", (function() {
            return y
        }
        )),
        n.d(e, "ɵ1", (function() {
            return E
        }
        )),
        n.d(e, "ɵALLOW_MULTIPLE_PLATFORMS", (function() {
            return Pb
        }
        )),
        n.d(e, "ɵAPP_ID_RANDOM_PROVIDER", (function() {
            return Vy
        }
        )),
        n.d(e, "ɵChangeDetectorStatus", (function() {
            return Tt
        }
        )),
        n.d(e, "ɵCodegenComponentFactoryResolver", (function() {
            return Kp
        }
        )),
        n.d(e, "ɵCompiler_compileModuleAndAllComponentsAsync__POST_R3__", (function() {
            return ob
        }
        )),
        n.d(e, "ɵCompiler_compileModuleAndAllComponentsSync__POST_R3__", (function() {
            return ib
        }
        )),
        n.d(e, "ɵCompiler_compileModuleAsync__POST_R3__", (function() {
            return eb
        }
        )),
        n.d(e, "ɵCompiler_compileModuleSync__POST_R3__", (function() {
            return $y
        }
        )),
        n.d(e, "ɵComponentFactory", (function() {
            return Hp
        }
        )),
        n.d(e, "ɵConsole", (function() {
            return Wy
        }
        )),
        n.d(e, "ɵDEFAULT_LOCALE_ID", (function() {
            return Um
        }
        )),
        n.d(e, "ɵEMPTY_ARRAY", (function() {
            return Ef
        }
        )),
        n.d(e, "ɵEMPTY_MAP", (function() {
            return Cf
        }
        )),
        n.d(e, "ɵINJECTOR_IMPL__POST_R3__", (function() {
            return Oc
        }
        )),
        n.d(e, "ɵINJECTOR_SCOPE", (function() {
            return fc
        }
        )),
        n.d(e, "ɵLifecycleHooksFeature", (function() {
            return wp
        }
        )),
        n.d(e, "ɵLocaleDataIndex", (function() {
            return Pm
        }
        )),
        n.d(e, "ɵNG_COMP_DEF", (function() {
            return $
        }
        )),
        n.d(e, "ɵNG_DIR_DEF", (function() {
            return tt
        }
        )),
        n.d(e, "ɵNG_ELEMENT_ID", (function() {
            return ot
        }
        )),
        n.d(e, "ɵNG_INJ_DEF", (function() {
            return L
        }
        )),
        n.d(e, "ɵNG_MOD_DEF", (function() {
            return nt
        }
        )),
        n.d(e, "ɵNG_PIPE_DEF", (function() {
            return et
        }
        )),
        n.d(e, "ɵNG_PROV_DEF", (function() {
            return R
        }
        )),
        n.d(e, "ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR", (function() {
            return vm
        }
        )),
        n.d(e, "ɵNO_CHANGE", (function() {
            return mo
        }
        )),
        n.d(e, "ɵNgModuleFactory", (function() {
            return Fg
        }
        )),
        n.d(e, "ɵNoopNgZone", (function() {
            return bb
        }
        )),
        n.d(e, "ɵReflectionCapabilities", (function() {
            return tc
        }
        )),
        n.d(e, "ɵRender3ComponentFactory", (function() {
            return Tm
        }
        )),
        n.d(e, "ɵRender3ComponentRef", (function() {
            return Om
        }
        )),
        n.d(e, "ɵRender3NgModuleRef", (function() {
            return Vg
        }
        )),
        n.d(e, "ɵSWITCH_CHANGE_DETECTOR_REF_FACTORY__POST_R3__", (function() {
            return qs
        }
        )),
        n.d(e, "ɵSWITCH_COMPILE_COMPONENT__POST_R3__", (function() {
            return Cy
        }
        )),
        n.d(e, "ɵSWITCH_COMPILE_DIRECTIVE__POST_R3__", (function() {
            return Ay
        }
        )),
        n.d(e, "ɵSWITCH_COMPILE_INJECTABLE__POST_R3__", (function() {
            return pc
        }
        )),
        n.d(e, "ɵSWITCH_COMPILE_NGMODULE__POST_R3__", (function() {
            return ky
        }
        )),
        n.d(e, "ɵSWITCH_COMPILE_PIPE__POST_R3__", (function() {
            return Ty
        }
        )),
        n.d(e, "ɵSWITCH_ELEMENT_REF_FACTORY__POST_R3__", (function() {
            return $p
        }
        )),
        n.d(e, "ɵSWITCH_IVY_ENABLED__POST_R3__", (function() {
            return Zy
        }
        )),
        n.d(e, "ɵSWITCH_RENDERER2_FACTORY__POST_R3__", (function() {
            return ih
        }
        )),
        n.d(e, "ɵSWITCH_TEMPLATE_REF_FACTORY__POST_R3__", (function() {
            return Ch
        }
        )),
        n.d(e, "ɵSWITCH_VIEW_CONTAINER_REF_FACTORY__POST_R3__", (function() {
            return Oh
        }
        )),
        n.d(e, "ɵ_sanitizeHtml", (function() {
            return Tr
        }
        )),
        n.d(e, "ɵ_sanitizeStyle", (function() {
            return Ir
        }
        )),
        n.d(e, "ɵ_sanitizeUrl", (function() {
            return rr
        }
        )),
        n.d(e, "ɵallowSanitizationBypassAndThrow", (function() {
            return Hi
        }
        )),
        n.d(e, "ɵand", (function() {
            return Pw
        }
        )),
        n.d(e, "ɵangular_packages_core_core_a", (function() {
            return H
        }
        )),
        n.d(e, "ɵangular_packages_core_core_b", (function() {
            return gt
        }
        )),
        n.d(e, "ɵangular_packages_core_core_ba", (function() {
            return an
        }
        )),
        n.d(e, "ɵangular_packages_core_core_bb", (function() {
            return ln
        }
        )),
        n.d(e, "ɵangular_packages_core_core_bc", (function() {
            return mn
        }
        )),
        n.d(e, "ɵangular_packages_core_core_bd", (function() {
            return kn
        }
        )),
        n.d(e, "ɵangular_packages_core_core_bf", (function() {
            return Jg
        }
        )),
        n.d(e, "ɵangular_packages_core_core_bg", (function() {
            return Qg
        }
        )),
        n.d(e, "ɵangular_packages_core_core_bh", (function() {
            return $g
        }
        )),
        n.d(e, "ɵangular_packages_core_core_bi", (function() {
            return tv
        }
        )),
        n.d(e, "ɵangular_packages_core_core_bj", (function() {
            return ev
        }
        )),
        n.d(e, "ɵangular_packages_core_core_bk", (function() {
            return jr
        }
        )),
        n.d(e, "ɵangular_packages_core_core_bl", (function() {
            return m
        }
        )),
        n.d(e, "ɵangular_packages_core_core_bm", (function() {
            return g
        }
        )),
        n.d(e, "ɵangular_packages_core_core_bn", (function() {
            return A
        }
        )),
        n.d(e, "ɵangular_packages_core_core_bp", (function() {
            return l
        }
        )),
        n.d(e, "ɵangular_packages_core_core_bq", (function() {
            return yo
        }
        )),
        n.d(e, "ɵangular_packages_core_core_c", (function() {
            return xt
        }
        )),
        n.d(e, "ɵangular_packages_core_core_d", (function() {
            return rl
        }
        )),
        n.d(e, "ɵangular_packages_core_core_e", (function() {
            return qc
        }
        )),
        n.d(e, "ɵangular_packages_core_core_f", (function() {
            return Qc
        }
        )),
        n.d(e, "ɵangular_packages_core_core_g", (function() {
            return jy
        }
        )),
        n.d(e, "ɵangular_packages_core_core_h", (function() {
            return Bs
        }
        )),
        n.d(e, "ɵangular_packages_core_core_i", (function() {
            return zs
        }
        )),
        n.d(e, "ɵangular_packages_core_core_j", (function() {
            return Gb
        }
        )),
        n.d(e, "ɵangular_packages_core_core_k", (function() {
            return tw
        }
        )),
        n.d(e, "ɵangular_packages_core_core_l", (function() {
            return ew
        }
        )),
        n.d(e, "ɵangular_packages_core_core_m", (function() {
            return gw
        }
        )),
        n.d(e, "ɵangular_packages_core_core_n", (function() {
            return ch
        }
        )),
        n.d(e, "ɵangular_packages_core_core_o", (function() {
            return mh
        }
        )),
        n.d(e, "ɵangular_packages_core_core_p", (function() {
            return xw
        }
        )),
        n.d(e, "ɵangular_packages_core_core_q", (function() {
            return Mw
        }
        )),
        n.d(e, "ɵangular_packages_core_core_r", (function() {
            return Ew
        }
        )),
        n.d(e, "ɵangular_packages_core_core_s", (function() {
            return Aw
        }
        )),
        n.d(e, "ɵangular_packages_core_core_t", (function() {
            return Tw
        }
        )),
        n.d(e, "ɵangular_packages_core_core_u", (function() {
            return Bm
        }
        )),
        n.d(e, "ɵangular_packages_core_core_v", (function() {
            return um
        }
        )),
        n.d(e, "ɵangular_packages_core_core_w", (function() {
            return Uh
        }
        )),
        n.d(e, "ɵangular_packages_core_core_x", (function() {
            return Am
        }
        )),
        n.d(e, "ɵangular_packages_core_core_y", (function() {
            return wi
        }
        )),
        n.d(e, "ɵangular_packages_core_core_z", (function() {
            return en
        }
        )),
        n.d(e, "ɵbypassSanitizationTrustHtml", (function() {
            return qi
        }
        )),
        n.d(e, "ɵbypassSanitizationTrustResourceUrl", (function() {
            return Zi
        }
        )),
        n.d(e, "ɵbypassSanitizationTrustScript", (function() {
            return Yi
        }
        )),
        n.d(e, "ɵbypassSanitizationTrustStyle", (function() {
            return Xi
        }
        )),
        n.d(e, "ɵbypassSanitizationTrustUrl", (function() {
            return Ki
        }
        )),
        n.d(e, "ɵccf", (function() {
            return Ff
        }
        )),
        n.d(e, "ɵclearOverrides", (function() {
            return rx
        }
        )),
        n.d(e, "ɵclearResolutionOfComponentResourcesQueue", (function() {
            return ml
        }
        )),
        n.d(e, "ɵcmf", (function() {
            return ox
        }
        )),
        n.d(e, "ɵcompileComponent", (function() {
            return ny
        }
        )),
        n.d(e, "ɵcompileDirective", (function() {
            return iy
        }
        )),
        n.d(e, "ɵcompileNgModule", (function() {
            return zv
        }
        )),
        n.d(e, "ɵcompileNgModuleDefs", (function() {
            return Gv
        }
        )),
        n.d(e, "ɵcompileNgModuleFactory__POST_R3__", (function() {
            return Ab
        }
        )),
        n.d(e, "ɵcompilePipe", (function() {
            return gy
        }
        )),
        n.d(e, "ɵcreateInjector", (function() {
            return wc
        }
        )),
        n.d(e, "ɵcrt", (function() {
            return qh
        }
        )),
        n.d(e, "ɵdefaultIterableDiffers", (function() {
            return xh
        }
        )),
        n.d(e, "ɵdefaultKeyValueDiffers", (function() {
            return Mh
        }
        )),
        n.d(e, "ɵdetectChanges", (function() {
            return Zl
        }
        )),
        n.d(e, "ɵdevModeEqual", (function() {
            return Sl
        }
        )),
        n.d(e, "ɵdid", (function() {
            return sm
        }
        )),
        n.d(e, "ɵeld", (function() {
            return Iw
        }
        )),
        n.d(e, "ɵfindLocaleData", (function() {
            return Rm
        }
        )),
        n.d(e, "ɵflushModuleScopingQueueAsMuchAsPossible", (function() {
            return Uv
        }
        )),
        n.d(e, "ɵgetComponentViewDefinitionFactory", (function() {
            return Uf
        }
        )),
        n.d(e, "ɵgetDebugNodeR2", (function() {
            return vw
        }
        )),
        n.d(e, "ɵgetDebugNode__POST_R3__", (function() {
            return fw
        }
        )),
        n.d(e, "ɵgetDirectives", (function() {
            return ap
        }
        )),
        n.d(e, "ɵgetHostElement", (function() {
            return cp
        }
        )),
        n.d(e, "ɵgetInjectableDef", (function() {
            return I
        }
        )),
        n.d(e, "ɵgetLContext", (function() {
            return qr
        }
        )),
        n.d(e, "ɵgetLocaleCurrencyCode", (function() {
            return Lm
        }
        )),
        n.d(e, "ɵgetLocalePluralCase", (function() {
            return Nm
        }
        )),
        n.d(e, "ɵgetModuleFactory__POST_R3__", (function() {
            return Hb
        }
        )),
        n.d(e, "ɵgetSanitizationBypassType", (function() {
            return Wi
        }
        )),
        n.d(e, "ɵglobal", (function() {
            return J
        }
        )),
        n.d(e, "ɵinitServicesIfNeeded", (function() {
            return yS
        }
        )),
        n.d(e, "ɵinlineInterpolate", (function() {
            return xf
        }
        )),
        n.d(e, "ɵinterpolate", (function() {
            return Sf
        }
        )),
        n.d(e, "ɵisBoundToModule__POST_R3__", (function() {
            return _b
        }
        )),
        n.d(e, "ɵisDefaultChangeDetectionStrategy", (function() {
            return ee
        }
        )),
        n.d(e, "ɵisListLikeIterable", (function() {
            return Ml
        }
        )),
        n.d(e, "ɵisObservable", (function() {
            return mu
        }
        )),
        n.d(e, "ɵisPromise", (function() {
            return fu
        }
        )),
        n.d(e, "ɵivyEnabled", (function() {
            return Jy
        }
        )),
        n.d(e, "ɵlooseIdentical", (function() {
            return wl
        }
        )),
        n.d(e, "ɵmakeDecorator", (function() {
            return h
        }
        )),
        n.d(e, "ɵmarkDirty", (function() {
            return Jl
        }
        )),
        n.d(e, "ɵmod", (function() {
            return If
        }
        )),
        n.d(e, "ɵmpd", (function() {
            return Pf
        }
        )),
        n.d(e, "ɵncd", (function() {
            return Bw
        }
        )),
        n.d(e, "ɵnov", (function() {
            return Jf
        }
        )),
        n.d(e, "ɵoverrideComponentView", (function() {
            return ix
        }
        )),
        n.d(e, "ɵoverrideProvider", (function() {
            return nx
        }
        )),
        n.d(e, "ɵpad", (function() {
            return Hw
        }
        )),
        n.d(e, "ɵpatchComponentDefWithScope", (function() {
            return Qv
        }
        )),
        n.d(e, "ɵpid", (function() {
            return cm
        }
        )),
        n.d(e, "ɵpod", (function() {
            return Ww
        }
        )),
        n.d(e, "ɵppd", (function() {
            return Gw
        }
        )),
        n.d(e, "ɵprd", (function() {
            return lm
        }
        )),
        n.d(e, "ɵpublishDefaultGlobalUtils", (function() {
            return fp
        }
        )),
        n.d(e, "ɵpublishGlobalUtil", (function() {
            return mp
        }
        )),
        n.d(e, "ɵqud", (function() {
            return Nw
        }
        )),
        n.d(e, "ɵregisterLocaleData", (function() {
            return Dm
        }
        )),
        n.d(e, "ɵregisterModuleFactory", (function() {
            return Rg
        }
        )),
        n.d(e, "ɵregisterNgModuleType", (function() {
            return Ng
        }
        )),
        n.d(e, "ɵrenderComponent", (function() {
            return gp
        }
        )),
        n.d(e, "ɵresetCompiledComponents", (function() {
            return Kv
        }
        )),
        n.d(e, "ɵresetJitOptions", (function() {
            return Nv
        }
        )),
        n.d(e, "ɵresolveComponentResources", (function() {
            return dl
        }
        )),
        n.d(e, "ɵsetClassMetadata", (function() {
            return kg
        }
        )),
        n.d(e, "ɵsetCurrentInjector", (function() {
            return ft
        }
        )),
        n.d(e, "ɵsetDocument", (function() {
            return je
        }
        )),
        n.d(e, "ɵsetLocaleId", (function() {
            return Ig
        }
        )),
        n.d(e, "ɵstore", (function() {
            return $l
        }
        )),
        n.d(e, "ɵstringify", (function() {
            return F
        }
        )),
        n.d(e, "ɵted", (function() {
            return Xw
        }
        )),
        n.d(e, "ɵtransitiveScopesFor", (function() {
            return $v
        }
        )),
        n.d(e, "ɵunregisterLocaleData", (function() {
            return Vm
        }
        )),
        n.d(e, "ɵunv", (function() {
            return Wh
        }
        )),
        n.d(e, "ɵunwrapSafeValue", (function() {
            return Gi
        }
        )),
        n.d(e, "ɵvid", (function() {
            return Zw
        }
        )),
        n.d(e, "ɵwhenRendered", (function() {
            return Sp
        }
        )),
        n.d(e, "ɵɵCopyDefinitionFeature", (function() {
            return Pp
        }
        )),
        n.d(e, "ɵɵInheritDefinitionFeature", (function() {
            return Mp
        }
        )),
        n.d(e, "ɵɵNgOnChangesFeature", (function() {
            return kp
        }
        )),
        n.d(e, "ɵɵProvidersFeature", (function() {
            return zp
        }
        )),
        n.d(e, "ɵɵadvance", (function() {
            return xo
        }
        )),
        n.d(e, "ɵɵattribute", (function() {
            return Il
        }
        )),
        n.d(e, "ɵɵattributeInterpolate1", (function() {
            return Bl
        }
        )),
        n.d(e, "ɵɵattributeInterpolate2", (function() {
            return zl
        }
        )),
        n.d(e, "ɵɵattributeInterpolate3", (function() {
            return Gl
        }
        )),
        n.d(e, "ɵɵattributeInterpolate4", (function() {
            return Hl
        }
        )),
        n.d(e, "ɵɵattributeInterpolate5", (function() {
            return Wl
        }
        )),
        n.d(e, "ɵɵattributeInterpolate6", (function() {
            return ql
        }
        )),
        n.d(e, "ɵɵattributeInterpolate7", (function() {
            return Xl
        }
        )),
        n.d(e, "ɵɵattributeInterpolate8", (function() {
            return Yl
        }
        )),
        n.d(e, "ɵɵattributeInterpolateV", (function() {
            return Kl
        }
        )),
        n.d(e, "ɵɵclassMap", (function() {
            return nd
        }
        )),
        n.d(e, "ɵɵclassMapInterpolate1", (function() {
            return Ad
        }
        )),
        n.d(e, "ɵɵclassMapInterpolate2", (function() {
            return Td
        }
        )),
        n.d(e, "ɵɵclassMapInterpolate3", (function() {
            return Od
        }
        )),
        n.d(e, "ɵɵclassMapInterpolate4", (function() {
            return _d
        }
        )),
        n.d(e, "ɵɵclassMapInterpolate5", (function() {
            return Pd
        }
        )),
        n.d(e, "ɵɵclassMapInterpolate6", (function() {
            return Id
        }
        )),
        n.d(e, "ɵɵclassMapInterpolate7", (function() {
            return kd
        }
        )),
        n.d(e, "ɵɵclassMapInterpolate8", (function() {
            return Dd
        }
        )),
        n.d(e, "ɵɵclassMapInterpolateV", (function() {
            return Rd
        }
        )),
        n.d(e, "ɵɵclassProp", (function() {
            return $u
        }
        )),
        n.d(e, "ɵɵcomponentHostSyntheticListener", (function() {
            return vu
        }
        )),
        n.d(e, "ɵɵcontentQuery", (function() {
            return Cv
        }
        )),
        n.d(e, "ɵɵdefaultStyleSanitizer", (function() {
            return Fr
        }
        )),
        n.d(e, "ɵɵdefineComponent", (function() {
            return oe
        }
        )),
        n.d(e, "ɵɵdefineDirective", (function() {
            return he
        }
        )),
        n.d(e, "ɵɵdefineInjectable", (function() {
            return O
        }
        )),
        n.d(e, "ɵɵdefineInjector", (function() {
            return P
        }
        )),
        n.d(e, "ɵɵdefineNgModule", (function() {
            return ue
        }
        )),
        n.d(e, "ɵɵdefinePipe", (function() {
            return fe
        }
        )),
        n.d(e, "ɵɵdirectiveInject", (function() {
            return eu
        }
        )),
        n.d(e, "ɵɵdisableBindings", (function() {
            return on
        }
        )),
        n.d(e, "ɵɵelement", (function() {
            return lu
        }
        )),
        n.d(e, "ɵɵelementContainer", (function() {
            return pu
        }
        )),
        n.d(e, "ɵɵelementContainerEnd", (function() {
            return du
        }
        )),
        n.d(e, "ɵɵelementContainerStart", (function() {
            return uu
        }
        )),
        n.d(e, "ɵɵelementEnd", (function() {
            return cu
        }
        )),
        n.d(e, "ɵɵelementStart", (function() {
            return su
        }
        )),
        n.d(e, "ɵɵenableBindings", (function() {
            return rn
        }
        )),
        n.d(e, "ɵɵgetCurrentView", (function() {
            return hu
        }
        )),
        n.d(e, "ɵɵgetFactoryOf", (function() {
            return _i
        }
        )),
        n.d(e, "ɵɵgetInheritedFactory", (function() {
            return Pi
        }
        )),
        n.d(e, "ɵɵhostProperty", (function() {
            return $d
        }
        )),
        n.d(e, "ɵɵi18n", (function() {
            return bg
        }
        )),
        n.d(e, "ɵɵi18nApply", (function() {
            return Eg
        }
        )),
        n.d(e, "ɵɵi18nAttributes", (function() {
            return wg
        }
        )),
        n.d(e, "ɵɵi18nEnd", (function() {
            return mg
        }
        )),
        n.d(e, "ɵɵi18nExp", (function() {
            return Mg
        }
        )),
        n.d(e, "ɵɵi18nPostprocess", (function() {
            return fg
        }
        )),
        n.d(e, "ɵɵi18nStart", (function() {
            return ug
        }
        )),
        n.d(e, "ɵɵinject", (function() {
            return vt
        }
        )),
        n.d(e, "ɵɵinjectAttribute", (function() {
            return nu
        }
        )),
        n.d(e, "ɵɵinjectPipeChangeDetectorRef", (function() {
            return Dv
        }
        )),
        n.d(e, "ɵɵinvalidFactory", (function() {
            return iu
        }
        )),
        n.d(e, "ɵɵinvalidFactoryDep", (function() {
            return yt
        }
        )),
        n.d(e, "ɵɵlistener", (function() {
            return gu
        }
        )),
        n.d(e, "ɵɵloadQuery", (function() {
            return Ov
        }
        )),
        n.d(e, "ɵɵnamespaceHTML", (function() {
            return Vn
        }
        )),
        n.d(e, "ɵɵnamespaceMathML", (function() {
            return jn
        }
        )),
        n.d(e, "ɵɵnamespaceSVG", (function() {
            return Nn
        }
        )),
        n.d(e, "ɵɵnextContext", (function() {
            return Su
        }
        )),
        n.d(e, "ɵɵpipe", (function() {
            return nv
        }
        )),
        n.d(e, "ɵɵpipeBind1", (function() {
            return iv
        }
        )),
        n.d(e, "ɵɵpipeBind2", (function() {
            return rv
        }
        )),
        n.d(e, "ɵɵpipeBind3", (function() {
            return ov
        }
        )),
        n.d(e, "ɵɵpipeBind4", (function() {
            return av
        }
        )),
        n.d(e, "ɵɵpipeBindV", (function() {
            return sv
        }
        )),
        n.d(e, "ɵɵprojection", (function() {
            return Au
        }
        )),
        n.d(e, "ɵɵprojectionDef", (function() {
            return Mu
        }
        )),
        n.d(e, "ɵɵproperty", (function() {
            return ru
        }
        )),
        n.d(e, "ɵɵpropertyInterpolate", (function() {
            return Tu
        }
        )),
        n.d(e, "ɵɵpropertyInterpolate1", (function() {
            return Ou
        }
        )),
        n.d(e, "ɵɵpropertyInterpolate2", (function() {
            return _u
        }
        )),
        n.d(e, "ɵɵpropertyInterpolate3", (function() {
            return Pu
        }
        )),
        n.d(e, "ɵɵpropertyInterpolate4", (function() {
            return Iu
        }
        )),
        n.d(e, "ɵɵpropertyInterpolate5", (function() {
            return ku
        }
        )),
        n.d(e, "ɵɵpropertyInterpolate6", (function() {
            return Du
        }
        )),
        n.d(e, "ɵɵpropertyInterpolate7", (function() {
            return Ru
        }
        )),
        n.d(e, "ɵɵpropertyInterpolate8", (function() {
            return Lu
        }
        )),
        n.d(e, "ɵɵpropertyInterpolateV", (function() {
            return Nu
        }
        )),
        n.d(e, "ɵɵpureFunction0", (function() {
            return Ug
        }
        )),
        n.d(e, "ɵɵpureFunction1", (function() {
            return Bg
        }
        )),
        n.d(e, "ɵɵpureFunction2", (function() {
            return zg
        }
        )),
        n.d(e, "ɵɵpureFunction3", (function() {
            return Gg
        }
        )),
        n.d(e, "ɵɵpureFunction4", (function() {
            return Hg
        }
        )),
        n.d(e, "ɵɵpureFunction5", (function() {
            return Wg
        }
        )),
        n.d(e, "ɵɵpureFunction6", (function() {
            return qg
        }
        )),
        n.d(e, "ɵɵpureFunction7", (function() {
            return Xg
        }
        )),
        n.d(e, "ɵɵpureFunction8", (function() {
            return Yg
        }
        )),
        n.d(e, "ɵɵpureFunctionV", (function() {
            return Kg
        }
        )),
        n.d(e, "ɵɵqueryRefresh", (function() {
            return Sv
        }
        )),
        n.d(e, "ɵɵreference", (function() {
            return tu
        }
        )),
        n.d(e, "ɵɵresolveBody", (function() {
            return ui
        }
        )),
        n.d(e, "ɵɵresolveDocument", (function() {
            return li
        }
        )),
        n.d(e, "ɵɵresolveWindow", (function() {
            return ci
        }
        )),
        n.d(e, "ɵɵrestoreView", (function() {
            return cn
        }
        )),
        n.d(e, "ɵɵsanitizeHtml", (function() {
            return kr
        }
        )),
        n.d(e, "ɵɵsanitizeResourceUrl", (function() {
            return Lr
        }
        )),
        n.d(e, "ɵɵsanitizeScript", (function() {
            return Nr
        }
        )),
        n.d(e, "ɵɵsanitizeStyle", (function() {
            return Dr
        }
        )),
        n.d(e, "ɵɵsanitizeUrl", (function() {
            return Rr
        }
        )),
        n.d(e, "ɵɵsanitizeUrlOrResourceUrl", (function() {
            return Vr
        }
        )),
        n.d(e, "ɵɵselect", (function() {
            return Mo
        }
        )),
        n.d(e, "ɵɵsetComponentScope", (function() {
            return ae
        }
        )),
        n.d(e, "ɵɵsetNgModuleScope", (function() {
            return de
        }
        )),
        n.d(e, "ɵɵstaticContentQuery", (function() {
            return Av
        }
        )),
        n.d(e, "ɵɵstaticViewQuery", (function() {
            return xv
        }
        )),
        n.d(e, "ɵɵstyleMap", (function() {
            return td
        }
        )),
        n.d(e, "ɵɵstyleMapInterpolate1", (function() {
            return Ld
        }
        )),
        n.d(e, "ɵɵstyleMapInterpolate2", (function() {
            return Nd
        }
        )),
        n.d(e, "ɵɵstyleMapInterpolate3", (function() {
            return jd
        }
        )),
        n.d(e, "ɵɵstyleMapInterpolate4", (function() {
            return Vd
        }
        )),
        n.d(e, "ɵɵstyleMapInterpolate5", (function() {
            return Fd
        }
        )),
        n.d(e, "ɵɵstyleMapInterpolate6", (function() {
            return Ud
        }
        )),
        n.d(e, "ɵɵstyleMapInterpolate7", (function() {
            return Bd
        }
        )),
        n.d(e, "ɵɵstyleMapInterpolate8", (function() {
            return zd
        }
        )),
        n.d(e, "ɵɵstyleMapInterpolateV", (function() {
            return Gd
        }
        )),
        n.d(e, "ɵɵstyleProp", (function() {
            return Qu
        }
        )),
        n.d(e, "ɵɵstylePropInterpolate1", (function() {
            return Hd
        }
        )),
        n.d(e, "ɵɵstylePropInterpolate2", (function() {
            return Wd
        }
        )),
        n.d(e, "ɵɵstylePropInterpolate3", (function() {
            return qd
        }
        )),
        n.d(e, "ɵɵstylePropInterpolate4", (function() {
            return Xd
        }
        )),
        n.d(e, "ɵɵstylePropInterpolate5", (function() {
            return Yd
        }
        )),
        n.d(e, "ɵɵstylePropInterpolate6", (function() {
            return Kd
        }
        )),
        n.d(e, "ɵɵstylePropInterpolate7", (function() {
            return Zd
        }
        )),
        n.d(e, "ɵɵstylePropInterpolate8", (function() {
            return Jd
        }
        )),
        n.d(e, "ɵɵstylePropInterpolateV", (function() {
            return Qd
        }
        )),
        n.d(e, "ɵɵstyleSanitizer", (function() {
            return Ju
        }
        )),
        n.d(e, "ɵɵtemplate", (function() {
            return Ql
        }
        )),
        n.d(e, "ɵɵtemplateRefExtractor", (function() {
            return kv
        }
        )),
        n.d(e, "ɵɵtext", (function() {
            return md
        }
        )),
        n.d(e, "ɵɵtextInterpolate", (function() {
            return gd
        }
        )),
        n.d(e, "ɵɵtextInterpolate1", (function() {
            return vd
        }
        )),
        n.d(e, "ɵɵtextInterpolate2", (function() {
            return yd
        }
        )),
        n.d(e, "ɵɵtextInterpolate3", (function() {
            return bd
        }
        )),
        n.d(e, "ɵɵtextInterpolate4", (function() {
            return wd
        }
        )),
        n.d(e, "ɵɵtextInterpolate5", (function() {
            return Sd
        }
        )),
        n.d(e, "ɵɵtextInterpolate6", (function() {
            return xd
        }
        )),
        n.d(e, "ɵɵtextInterpolate7", (function() {
            return Md
        }
        )),
        n.d(e, "ɵɵtextInterpolate8", (function() {
            return Ed
        }
        )),
        n.d(e, "ɵɵtextInterpolateV", (function() {
            return Cd
        }
        )),
        n.d(e, "ɵɵupdateSyntheticHostBinding", (function() {
            return tp
        }
        )),
        n.d(e, "ɵɵviewQuery", (function() {
            return Mv
        }
        ));
        var i = n(1)
          , r = n(33)
          , o = n(32)
          , a = n(12)
          , s = n(279)
          , c = n(632);
        /**
 * @license Angular v9.1.9
 * (c) 2010-2020 Google LLC. https://angular.io/
 * License: MIT
 */
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function l(t) {
            return {
                toString: t
            }.toString()
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var u = "__annotations__"
          , d = "__parameters__"
          , p = "__prop__metadata__";
        function h(t, e, n, r, o) {
            return l((function() {
                var a = f(e);
                function s() {
                    for (var t, e = [], n = 0; n < arguments.length; n++)
                        e[n] = arguments[n];
                    if (this instanceof s)
                        return a.call.apply(a, Object(i.h)([this], e)),
                        this;
                    var c = new ((t = s).bind.apply(t, Object(i.h)([void 0], e)));
                    return function(t) {
                        return o && o.apply(void 0, Object(i.h)([t], e)),
                        (t.hasOwnProperty(u) ? t[u] : Object.defineProperty(t, u, {
                            value: []
                        })[u]).push(c),
                        r && r(t),
                        t
                    }
                }
                return n && (s.prototype = Object.create(n.prototype)),
                s.prototype.ngMetadataName = t,
                s.annotationCls = s,
                s
            }
            ))
        }
        function f(t) {
            return function() {
                for (var e = [], n = 0; n < arguments.length; n++)
                    e[n] = arguments[n];
                if (t) {
                    var r = t.apply(void 0, Object(i.h)(e));
                    for (var o in r)
                        this[o] = r[o]
                }
            }
        }
        function m(t, e, n) {
            return l((function() {
                var r = f(e);
                function o() {
                    for (var t, e = [], n = 0; n < arguments.length; n++)
                        e[n] = arguments[n];
                    if (this instanceof o)
                        return r.apply(this, e),
                        this;
                    var a = new ((t = o).bind.apply(t, Object(i.h)([void 0], e)));
                    return s.annotation = a,
                    s;
                    function s(t, e, n) {
                        for (var i = t.hasOwnProperty(d) ? t[d] : Object.defineProperty(t, d, {
                            value: []
                        })[d]; i.length <= n; )
                            i.push(null);
                        return (i[n] = i[n] || []).push(a),
                        t
                    }
                }
                return n && (o.prototype = Object.create(n.prototype)),
                o.prototype.ngMetadataName = t,
                o.annotationCls = o,
                o
            }
            ))
        }
        function g(t, e, n, r) {
            return l((function() {
                var o = f(e);
                function a() {
                    for (var t, e = [], n = 0; n < arguments.length; n++)
                        e[n] = arguments[n];
                    if (this instanceof a)
                        return o.apply(this, e),
                        this;
                    var s = new ((t = a).bind.apply(t, Object(i.h)([void 0], e)));
                    function c(t, n) {
                        var o = t.constructor
                          , a = o.hasOwnProperty(p) ? o[p] : Object.defineProperty(o, p, {
                            value: {}
                        })[p];
                        a[n] = a.hasOwnProperty(n) && a[n] || [],
                        a[n].unshift(s),
                        r && r.apply(void 0, Object(i.h)([t, n], e))
                    }
                    return c
                }
                return n && (a.prototype = Object.create(n.prototype)),
                a.prototype.ngMetadataName = t,
                a.annotationCls = a,
                a
            }
            ))
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var v, y = function(t) {
            return {
                token: t
            }
        }, b = m("Inject", y), w = m("Optional"), S = m("Self"), x = m("SkipSelf"), M = m("Host"), E = function(t) {
            return {
                attributeName: t
            }
        }, C = m("Attribute", E);
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function A(t) {
            for (var e in t)
                if (t[e] === A)
                    return e;
            throw Error("Could not find renamed property on target object.")
        }
        function T(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && !t.hasOwnProperty(n) && (t[n] = e[n])
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function O(t) {
            return {
                token: t.token,
                providedIn: t.providedIn || null,
                factory: t.factory,
                value: void 0
            }
        }
        !function(t) {
            t[t.Default = 0] = "Default",
            t[t.Host = 1] = "Host",
            t[t.Self = 2] = "Self",
            t[t.SkipSelf = 4] = "SkipSelf",
            t[t.Optional = 8] = "Optional"
        }(v || (v = {}));
        var _ = O;
        function P(t) {
            return {
                factory: t.factory,
                providers: t.providers || [],
                imports: t.imports || []
            }
        }
        function I(t) {
            return k(t, t[R]) || k(t, t[j])
        }
        function k(t, e) {
            return e && e.token === t ? e : null
        }
        function D(t) {
            return t && (t.hasOwnProperty(L) || t.hasOwnProperty(V)) ? t[L] : null
        }
        var R = A({
            "ɵprov": A
        })
          , L = A({
            "ɵinj": A
        })
          , N = A({
            "ɵprovFallback": A
        })
          , j = A({
            ngInjectableDef: A
        })
          , V = A({
            ngInjectorDef: A
        });
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function F(t) {
            if ("string" == typeof t)
                return t;
            if (Array.isArray(t))
                return "[" + t.map(F).join(", ") + "]";
            if (null == t)
                return "" + t;
            if (t.overriddenName)
                return "" + t.overriddenName;
            if (t.name)
                return "" + t.name;
            var e = t.toString();
            if (null == e)
                return "" + e;
            var n = e.indexOf("\n");
            return -1 === n ? e : e.substring(0, n)
        }
        function U(t, e) {
            return null == t || "" === t ? null === e ? "" : e : null == e || "" === e ? t : t + " " + e
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var B = A({
            __forward_ref__: A
        });
        function z(t) {
            return t.__forward_ref__ = z,
            t.toString = function() {
                return F(this())
            }
            ,
            t
        }
        function G(t) {
            return H(t) ? t() : t
        }
        function H(t) {
            return "function" == typeof t && t.hasOwnProperty(B) && t.__forward_ref__ === z
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var W, q, X, Y = "undefined" != typeof globalThis && globalThis, K = "undefined" != typeof window && window, Z = "undefined" != typeof self && "undefined" != typeof WorkerGlobalScope && self instanceof WorkerGlobalScope && self, J = Y || void 0 !== t && t || K || Z;
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Q() {
            var t = J.ng;
            if (!t || !t.ɵcompilerFacade)
                throw new Error("Angular JIT compilation failed: '@angular/compiler' not loaded!\n  - JIT compilation is discouraged for production use-cases! Consider AOT mode instead.\n  - Did you bootstrap using '@angular/platform-browser-dynamic' or '@angular/platform-server'?\n  - Alternatively provide the compiler with 'import \"@angular/compiler\";' before bootstrapping.");
            return t.ɵcompilerFacade
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        !function(t) {
            t[t.Token = 0] = "Token",
            t[t.Attribute = 1] = "Attribute",
            t[t.ChangeDetectorRef = 2] = "ChangeDetectorRef",
            t[t.Invalid = 3] = "Invalid"
        }(W || (W = {})),
        function(t) {
            t[t.Directive = 0] = "Directive",
            t[t.Component = 1] = "Component",
            t[t.Injectable = 2] = "Injectable",
            t[t.Pipe = 3] = "Pipe",
            t[t.NgModule = 4] = "NgModule"
        }(q || (q = {})),
        function(t) {
            t[t.Emulated = 0] = "Emulated",
            t[t.Native = 1] = "Native",
            t[t.None = 2] = "None",
            t[t.ShadowDom = 3] = "ShadowDom"
        }(X || (X = {}));
        var $ = A({
            "ɵcmp": A
        })
          , tt = A({
            "ɵdir": A
        })
          , et = A({
            "ɵpipe": A
        })
          , nt = A({
            "ɵmod": A
        })
          , it = A({
            "ɵloc": A
        })
          , rt = A({
            "ɵfac": A
        })
          , ot = A({
            __NG_ELEMENT_ID__: A
        });
        function at() {
            return !("undefined" != typeof ngDevMode && !ngDevMode) && ("object" != typeof ngDevMode && (t = "undefined" != typeof location ? location.toString() : "",
            e = {
                namedConstructors: -1 != t.indexOf("ngDevMode=namedConstructors"),
                firstCreatePass: 0,
                tNode: 0,
                tView: 0,
                rendererCreateTextNode: 0,
                rendererSetText: 0,
                rendererCreateElement: 0,
                rendererAddEventListener: 0,
                rendererSetAttribute: 0,
                rendererRemoveAttribute: 0,
                rendererSetProperty: 0,
                rendererSetClassName: 0,
                rendererAddClass: 0,
                rendererRemoveClass: 0,
                rendererSetStyle: 0,
                rendererRemoveStyle: 0,
                rendererDestroy: 0,
                rendererDestroyNode: 0,
                rendererMoveNode: 0,
                rendererRemoveNode: 0,
                rendererAppendChild: 0,
                rendererInsertBefore: 0,
                rendererCreateComment: 0
            },
            n = -1 === t.indexOf("ngDevMode=false"),
            J.ngDevMode = n && e),
            !!ngDevMode);
            /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
            var t, e, n
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var st, ct = function() {
            function t(t, e) {
                this._desc = t,
                this.ngMetadataName = "InjectionToken",
                this.ɵprov = void 0,
                "number" == typeof e ? this.__NG_ELEMENT_ID__ = e : void 0 !== e && (this.ɵprov = O({
                    token: this,
                    providedIn: e.providedIn || "root",
                    factory: e.factory
                }))
            }
            return t.prototype.toString = function() {
                return "InjectionToken " + this._desc
            }
            ,
            t
        }(), lt = new ct("INJECTOR",-1), ut = {}, dt = /\n/gm, pt = A({
            provide: String,
            useValue: A
        }), ht = void 0;
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function ft(t) {
            var e = ht;
            return ht = t,
            e
        }
        function mt(t) {
            var e = st;
            return st = t,
            e
        }
        function gt(t, e) {
            if (void 0 === e && (e = v.Default),
            void 0 === ht)
                throw new Error("inject() must be called from an injection context");
            return null === ht ? wt(t, void 0, e) : ht.get(t, e & v.Optional ? null : void 0, e)
        }
        function vt(t, e) {
            return void 0 === e && (e = v.Default),
            (st || gt)(G(t), e)
        }
        function yt(t) {
            var e = ngDevMode ? "This constructor is not compatible with Angular Dependency Injection because its dependency at index " + t + " of the parameter list is invalid.\nThis can happen if the dependency type is a primitive like a string or if an ancestor of this class is missing an Angular decorator.\n\nPlease check that 1) the type for the parameter at index " + t + " is correct and 2) the correct Angular decorators are defined for this class and its ancestors." : "invalid";
            throw new Error(e)
        }
        var bt = vt;
        function wt(t, e, n) {
            var i = I(t);
            if (i && "root" == i.providedIn)
                return void 0 === i.value ? i.value = i.factory() : i.value;
            if (n & v.Optional)
                return null;
            if (void 0 !== e)
                return e;
            throw new Error("Injector: NOT_FOUND [" + F(t) + "]")
        }
        function St(t) {
            for (var e = [], n = 0; n < t.length; n++) {
                var i = G(t[n]);
                if (Array.isArray(i)) {
                    if (0 === i.length)
                        throw new Error("Arguments array must have arguments.");
                    for (var r = void 0, o = v.Default, a = 0; a < i.length; a++) {
                        var s = i[a];
                        s instanceof w || "Optional" === s.ngMetadataName || s === w ? o |= v.Optional : s instanceof x || "SkipSelf" === s.ngMetadataName || s === x ? o |= v.SkipSelf : s instanceof S || "Self" === s.ngMetadataName || s === S ? o |= v.Self : r = s instanceof b || s === b ? s.token : s
                    }
                    e.push(vt(r, o))
                } else
                    e.push(vt(i))
            }
            return e
        }
        var xt = function() {
            function t() {}
            return t.prototype.get = function(t, e) {
                if (void 0 === e && (e = ut),
                e === ut) {
                    var n = new Error("NullInjectorError: No provider for " + F(t) + "!");
                    throw n.name = "NullInjectorError",
                    n
                }
                return e
            }
            ,
            t
        }();
        function Mt(t, e, n, i) {
            var r = t.ngTempTokenPath;
            throw e.__source && r.unshift(e.__source),
            t.message = Et("\n" + t.message, r, n, i),
            t.ngTokenPath = r,
            t.ngTempTokenPath = null,
            t
        }
        function Et(t, e, n, i) {
            void 0 === i && (i = null),
            t = t && "\n" === t.charAt(0) && "ɵ" == t.charAt(1) ? t.substr(2) : t;
            var r = F(e);
            if (Array.isArray(e))
                r = e.map(F).join(" -> ");
            else if ("object" == typeof e) {
                var o = [];
                for (var a in e)
                    if (e.hasOwnProperty(a)) {
                        var s = e[a];
                        o.push(a + ":" + ("string" == typeof s ? JSON.stringify(s) : F(s)))
                    }
                r = "{" + o.join(", ") + "}"
            }
            return n + (i ? "(" + i + ")" : "") + "[" + r + "]: " + t.replace(dt, "\n  ")
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Ct = {
            "ɵɵdefineInjectable": O,
            "ɵɵdefineInjector": P,
            "ɵɵinject": vt,
            "ɵɵgetFactoryOf": function t(e) {
                var n = e;
                if (H(e))
                    return function() {
                        var e = t(G(n));
                        return e ? e() : null
                    }
                    ;
                var i = I(n) || D(n);
                if (!i || void 0 === i.factory)
                    return null;
                return i.factory
            }/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
            ,
            "ɵɵinvalidFactoryDep": yt
        };
        var At, Tt, Ot, _t = function() {}, Pt = function() {};
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function It(t, e) {
            "number" != typeof t && zt(e, typeof t, "number", "===")
        }
        function kt(t, e, n) {
            It(t, "Expected a number"),
            Ft(t, n, "Expected number to be less than or equal to"),
            function(t, e, n) {
                t >= e || zt(n, t, e, ">=")
            }(t, e, "Expected number to be greater than or equal to")
        }
        function Dt(t, e) {
            "string" != typeof t && zt(e, null === t ? "null" : typeof t, "string", "===")
        }
        function Rt(t, e, n) {
            t != e && zt(n, t, e, "==")
        }
        function Lt(t, e, n) {
            t == e && zt(n, t, e, "!=")
        }
        function Nt(t, e, n) {
            t !== e && zt(n, t, e, "===")
        }
        function jt(t, e, n) {
            t === e && zt(n, t, e, "!==")
        }
        function Vt(t, e, n) {
            t < e || zt(n, t, e, "<")
        }
        function Ft(t, e, n) {
            t <= e || zt(n, t, e, "<=")
        }
        function Ut(t, e, n) {
            t > e || zt(n, t, e, ">")
        }
        function Bt(t, e) {
            null == t && zt(e, t, null, "!=")
        }
        function zt(t, e, n, i) {
            throw new Error("ASSERTION ERROR: " + t + (null == i ? "" : " [Expected=> " + n + " " + i + " " + e + " <=Actual]"))
        }
        function Gt(t) {
            Rt("undefined" != typeof Node && t instanceof Node || "object" == typeof t && null != t && "WebWorkerRenderNode" === t.constructor.name, !0, "The provided value must be an instance of a DOM Node but got " + F(t))
        }
        function Ht(t, e) {
            var n = t ? t.length : 0;
            Vt(e, n, "Index expected to be less than " + n + " but got " + e)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Wt(t, e) {
            for (var n = 0; n < t.length; n++)
                e.push(t[n])
        }
        function qt(t, e) {
            void 0 === e && (e = t);
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                Array.isArray(i) ? (e === t && (e = t.slice(0, n)),
                qt(i, e)) : e !== t && e.push(i)
            }
            return e
        }
        function Xt(t, e) {
            t.forEach((function(t) {
                return Array.isArray(t) ? Xt(t, e) : e(t)
            }
            ))
        }
        function Yt(t, e, n) {
            e >= t.length ? t.push(n) : t.splice(e, 0, n)
        }
        function Kt(t, e) {
            return e >= t.length - 1 ? t.pop() : t.splice(e, 1)[0]
        }
        function Zt(t, e) {
            for (var n = [], i = 0; i < t; i++)
                n.push(e);
            return n
        }
        function Jt(t, e, n) {
            var i = $t(t, e);
            return i >= 0 ? t[1 | i] = n : function(t, e, n, i) {
                ngDevMode && Ft(e, t.length, "Can't insert past array end.");
                var r = t.length;
                if (r == e)
                    t.push(n, i);
                else if (1 === r)
                    t.push(i, t[0]),
                    t[0] = n;
                else {
                    for (r--,
                    t.push(t[r - 1], t[r]); r > e; ) {
                        var o = r - 2;
                        t[r] = t[o],
                        r--
                    }
                    t[e] = n,
                    t[e + 1] = i
                }
            }(t, i = ~i, e, n),
            i
        }
        function Qt(t, e) {
            var n = $t(t, e);
            if (n >= 0)
                return t[1 | n]
        }
        function $t(t, e) {
            return te(t, e, 1)
        }
        function te(t, e, n) {
            ngDevMode && Rt(Array.isArray(t), !0, "Expecting an array");
            for (var i = 0, r = t.length >> n; r !== i; ) {
                var o = i + (r - i >> 1)
                  , a = t[o << n];
                if (e === a)
                    return o << n;
                a > e ? r = o : i = o + 1
            }
            return ~(r << n)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function ee(t) {
            return null == t || t === At.Default
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        !function(t) {
            t[t.OnPush = 0] = "OnPush",
            t[t.Default = 1] = "Default"
        }(At || (At = {})),
        function(t) {
            t[t.CheckOnce = 0] = "CheckOnce",
            t[t.Checked = 1] = "Checked",
            t[t.CheckAlways = 2] = "CheckAlways",
            t[t.Detached = 3] = "Detached",
            t[t.Errored = 4] = "Errored",
            t[t.Destroyed = 5] = "Destroyed"
        }(Tt || (Tt = {})),
        function(t) {
            t[t.Emulated = 0] = "Emulated",
            t[t.Native = 1] = "Native",
            t[t.None = 2] = "None",
            t[t.ShadowDom = 3] = "ShadowDom"
        }(Ot || (Ot = {}));
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var ne = {}
          , ie = [];
        ("undefined" == typeof ngDevMode || ngDevMode) && at() && (Object.freeze(ne),
        Object.freeze(ie))/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        ;
        var re = 0;
        function oe(t) {
            return l((function() {
                ("undefined" == typeof ngDevMode || ngDevMode) && at();
                var e = t.type
                  , n = e.prototype
                  , i = {}
                  , r = {
                    type: e,
                    providersResolver: null,
                    decls: t.decls,
                    vars: t.vars,
                    factory: null,
                    template: t.template || null,
                    consts: t.consts || null,
                    ngContentSelectors: t.ngContentSelectors,
                    hostBindings: t.hostBindings || null,
                    hostVars: t.hostVars || 0,
                    hostAttrs: t.hostAttrs || null,
                    contentQueries: t.contentQueries || null,
                    declaredInputs: i,
                    inputs: null,
                    outputs: null,
                    exportAs: t.exportAs || null,
                    onChanges: null,
                    onInit: n.ngOnInit || null,
                    doCheck: n.ngDoCheck || null,
                    afterContentInit: n.ngAfterContentInit || null,
                    afterContentChecked: n.ngAfterContentChecked || null,
                    afterViewInit: n.ngAfterViewInit || null,
                    afterViewChecked: n.ngAfterViewChecked || null,
                    onDestroy: n.ngOnDestroy || null,
                    onPush: t.changeDetection === At.OnPush,
                    directiveDefs: null,
                    pipeDefs: null,
                    selectors: t.selectors || ie,
                    viewQuery: t.viewQuery || null,
                    features: t.features || null,
                    data: t.data || {},
                    encapsulation: t.encapsulation || Ot.Emulated,
                    id: "c",
                    styles: t.styles || ie,
                    _: null,
                    setInput: null,
                    schemas: t.schemas || null,
                    tView: null
                }
                  , o = t.directives
                  , a = t.features
                  , s = t.pipes;
                return r.id += re++,
                r.inputs = pe(t.inputs, i),
                r.outputs = pe(t.outputs),
                a && a.forEach((function(t) {
                    return t(r)
                }
                )),
                r.directiveDefs = o ? function() {
                    return ("function" == typeof o ? o() : o).map(se)
                }
                : null,
                r.pipeDefs = s ? function() {
                    return ("function" == typeof s ? s() : s).map(ce)
                }
                : null,
                r
            }
            ))
        }
        function ae(t, e, n) {
            var i = t.ɵcmp;
            i.directiveDefs = function() {
                return e.map(se)
            }
            ,
            i.pipeDefs = function() {
                return n.map(ce)
            }
        }
        function se(t) {
            var e = me(t) || ge(t);
            if (ngDevMode && !e)
                throw new Error("'" + t.name + "' is neither 'ComponentType' or 'DirectiveType'.");
            return e
        }
        function ce(t) {
            var e = ve(t);
            if (ngDevMode && !e)
                throw new Error("'" + t.name + "' is not a 'PipeType'.");
            return e
        }
        var le = {};
        function ue(t) {
            var e = {
                type: t.type,
                bootstrap: t.bootstrap || ie,
                declarations: t.declarations || ie,
                imports: t.imports || ie,
                exports: t.exports || ie,
                transitiveCompileScopes: null,
                schemas: t.schemas || null,
                id: t.id || null
            };
            return null != t.id && l((function() {
                le[t.id] = t.type
            }
            )),
            e
        }
        function de(t, e) {
            return l((function() {
                var n = be(t, !0);
                n.declarations = e.declarations || ie,
                n.imports = e.imports || ie,
                n.exports = e.exports || ie
            }
            ))
        }
        function pe(t, e) {
            if (null == t)
                return ne;
            var n = {};
            for (var i in t)
                if (t.hasOwnProperty(i)) {
                    var r = t[i]
                      , o = r;
                    Array.isArray(r) && (o = r[1],
                    r = r[0]),
                    n[r] = i,
                    e && (e[r] = o)
                }
            return n
        }
        var he = oe;
        function fe(t) {
            return {
                type: t.type,
                name: t.name,
                factory: null,
                pure: !1 !== t.pure,
                onDestroy: t.type.prototype.ngOnDestroy || null
            }
        }
        function me(t) {
            return t[$] || null
        }
        function ge(t) {
            return t[tt] || null
        }
        function ve(t) {
            return t[et] || null
        }
        function ye(t, e) {
            var n = t.hasOwnProperty(rt);
            if (!n && !0 === e && ngDevMode)
                throw new Error("Type " + F(t) + " does not have 'ɵfac' property.");
            return n ? t[rt] : null
        }
        function be(t, e) {
            var n = t[nt] || null;
            if (!n && !0 === e)
                throw new Error("Type " + F(t) + " does not have 'ɵmod' property.");
            return n
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function we(t) {
            return Array.isArray(t) && "object" == typeof t[1]
        }
        function Se(t) {
            return Array.isArray(t) && !0 === t[1]
        }
        function xe(t) {
            return 0 != (8 & t.flags)
        }
        function Me(t) {
            return 2 == (2 & t.flags)
        }
        function Ee(t) {
            return 1 == (1 & t.flags)
        }
        function Ce(t) {
            return null !== t.template
        }
        function Ae(t) {
            return 0 != (512 & t[2])
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Te(t, e) {
            t.hasOwnProperty("tView_") && Rt(t.tView_, e[1], "This TNode does not belong to this LView.")
        }
        function Oe(t, e) {
            void 0 === e && (e = "Type passed in is not ComponentType, it does not have 'ɵcmp' property."),
            me(t) || zt(e)
        }
        function _e(t) {
            Bt(t, "previousOrParentTNode should exist!"),
            Bt(t.parent, "previousOrParentTNode should have a parent")
        }
        function Pe(t) {
            Bt(t, "LContainer must be defined"),
            Rt(Se(t), !0, "Expecting LContainer")
        }
        function Ie(t) {
            t && Rt(we(t), !0, "Expecting LView or undefined or null")
        }
        function ke(t) {
            Bt(t, "LView must be defined"),
            Rt(we(t), !0, "Expecting LView")
        }
        function De(t, e) {
            Rt(t.firstCreatePass, !0, e || "Should only be called in first create pass.")
        }
        function Re(t, e) {
            Rt(t.firstUpdatePass, !0, e || "Should only be called in first update pass.")
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Le, Ne = void 0;
        function je(t) {
            Ne = t
        }
        function Ve() {
            return void 0 !== Ne ? Ne : "undefined" != typeof document ? document : void 0
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Fe(t) {
            return !!t.listen
        }
        !function(t) {
            t[t.Important = 1] = "Important",
            t[t.DashCase = 2] = "DashCase"
        }(Le || (Le = {}));
        var Ue = {
            createRenderer: function(t, e) {
                return Ve()
            }
        };
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Be(t) {
            for (; Array.isArray(t); )
                t = t[0];
            return t
        }
        function ze(t, e) {
            return Be(e[t + 20])
        }
        function Ge(t, e) {
            ngDevMode && Te(t, e),
            ngDevMode && Ht(e, t.index);
            var n = Be(e[t.index]);
            return ngDevMode && !Fe(e[11]) && Gt(n),
            n
        }
        function He(t, e) {
            var n = t.index;
            if (-1 !== n) {
                ngDevMode && Te(t, e);
                var i = Be(e[n]);
                return ngDevMode && null !== i && !Fe(e[11]) && Gt(i),
                i
            }
            return null
        }
        function We(t, e) {
            return ngDevMode && Ut(e, -1, "wrong index for TNode"),
            ngDevMode && Vt(e, t.data.length, "wrong index for TNode"),
            t.data[e + 20]
        }
        function qe(t, e) {
            return ngDevMode && Ht(t, e + 20),
            t[e + 20]
        }
        function Xe(t, e) {
            ngDevMode && Ht(e, t);
            var n = e[t];
            return we(n) ? n : n[0]
        }
        function Ye(t) {
            return ngDevMode && Bt(t, "Target expected"),
            t.__ngContext__ || null
        }
        function Ke(t) {
            var e = Ye(t);
            return e ? Array.isArray(e) ? e : e.lView : null
        }
        function Ze(t) {
            return 4 == (4 & t[2])
        }
        function Je(t) {
            return 128 == (128 & t[2])
        }
        function Qe(t, e) {
            return null === t || null == e ? null : t[e]
        }
        function $e(t) {
            t[18] = 0
        }
        function tn(t, e) {
            t[5] += e;
            for (var n = t, i = t[3]; null !== i && (1 === e && 1 === n[5] || -1 === e && 0 === n[5]); )
                i[5] += e,
                n = i,
                i = i[3]
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var en = {
            lFrame: On(null),
            bindingsEnabled: !0,
            checkNoChangesMode: !1
        };
        function nn() {
            return en.bindingsEnabled
        }
        function rn() {
            en.bindingsEnabled = !0
        }
        function on() {
            en.bindingsEnabled = !1
        }
        function an() {
            return en.lFrame.lView
        }
        function sn() {
            return en.lFrame.tView
        }
        function cn(t) {
            en.lFrame.contextLView = t
        }
        function ln() {
            return en.lFrame.previousOrParentTNode
        }
        function un(t, e) {
            en.lFrame.previousOrParentTNode = t,
            en.lFrame.isParent = e
        }
        function dn() {
            return en.lFrame.isParent
        }
        function pn() {
            en.lFrame.isParent = !1
        }
        function hn() {
            return en.checkNoChangesMode
        }
        function fn(t) {
            en.checkNoChangesMode = t
        }
        function mn() {
            var t = en.lFrame
              , e = t.bindingRootIndex;
            return -1 === e && (e = t.bindingRootIndex = t.tView.bindingStartIndex),
            e
        }
        function gn() {
            return en.lFrame.bindingIndex
        }
        function vn(t) {
            return en.lFrame.bindingIndex = t
        }
        function yn() {
            return en.lFrame.bindingIndex++
        }
        function bn(t) {
            var e = en.lFrame
              , n = e.bindingIndex;
            return e.bindingIndex = e.bindingIndex + t,
            n
        }
        function wn(t, e) {
            var n = en.lFrame;
            n.bindingIndex = n.bindingRootIndex = t,
            Sn(e)
        }
        function Sn(t) {
            en.lFrame.currentDirectiveIndex = t
        }
        function xn(t) {
            var e = en.lFrame.currentDirectiveIndex;
            return -1 === e ? null : t[e]
        }
        function Mn() {
            return en.lFrame.currentQueryIndex
        }
        function En(t) {
            en.lFrame.currentQueryIndex = t
        }
        function Cn(t, e) {
            ngDevMode && Ie(t);
            var n = Tn();
            en.lFrame = n,
            n.previousOrParentTNode = e,
            n.lView = t
        }
        function An(t, e) {
            ngDevMode && Ie(t);
            var n = Tn();
            ngDevMode && (Rt(n.isParent, !0, "Expected clean LFrame"),
            Rt(n.lView, null, "Expected clean LFrame"),
            Rt(n.tView, null, "Expected clean LFrame"),
            Rt(n.selectedIndex, 0, "Expected clean LFrame"),
            Rt(n.elementDepthCount, 0, "Expected clean LFrame"),
            Rt(n.currentDirectiveIndex, -1, "Expected clean LFrame"),
            Rt(n.currentNamespace, null, "Expected clean LFrame"),
            Rt(n.currentSanitizer, null, "Expected clean LFrame"),
            Rt(n.bindingRootIndex, -1, "Expected clean LFrame"),
            Rt(n.currentQueryIndex, 0, "Expected clean LFrame"));
            var i = t[1];
            en.lFrame = n,
            n.previousOrParentTNode = e,
            n.lView = t,
            n.tView = i,
            n.contextLView = t,
            n.bindingIndex = i.bindingStartIndex
        }
        function Tn() {
            var t = en.lFrame
              , e = null === t ? null : t.child;
            return null === e ? On(t) : e
        }
        function On(t) {
            var e = {
                previousOrParentTNode: null,
                isParent: !0,
                lView: null,
                tView: null,
                selectedIndex: 0,
                contextLView: null,
                elementDepthCount: 0,
                currentNamespace: null,
                currentSanitizer: null,
                currentDirectiveIndex: -1,
                bindingRootIndex: -1,
                bindingIndex: -1,
                currentQueryIndex: 0,
                parent: t,
                child: null
            };
            return null !== t && (t.child = e),
            e
        }
        function _n() {
            var t = en.lFrame;
            return en.lFrame = t.parent,
            t.previousOrParentTNode = null,
            t.lView = null,
            t
        }
        var Pn = _n;
        function In() {
            var t = _n();
            t.isParent = !0,
            t.tView = null,
            t.selectedIndex = 0,
            t.contextLView = null,
            t.elementDepthCount = 0,
            t.currentDirectiveIndex = -1,
            t.currentNamespace = null,
            t.currentSanitizer = null,
            t.bindingRootIndex = -1,
            t.bindingIndex = -1,
            t.currentQueryIndex = 0
        }
        function kn(t) {
            return (en.lFrame.contextLView = function(t, e) {
                for (; t > 0; )
                    ngDevMode && Bt(e[15], "Declaration view should be defined if nesting level is greater than 0."),
                    e = e[15],
                    t--;
                return e
            }(t, en.lFrame.contextLView))[8]
        }
        function Dn() {
            return en.lFrame.selectedIndex
        }
        function Rn(t) {
            en.lFrame.selectedIndex = t
        }
        function Ln() {
            var t = en.lFrame;
            return We(t.tView, t.selectedIndex)
        }
        function Nn() {
            en.lFrame.currentNamespace = "http://www.w3.org/2000/svg"
        }
        function jn() {
            en.lFrame.currentNamespace = "http://www.w3.org/1998/MathML/"
        }
        function Vn() {
            en.lFrame.currentNamespace = null
        }
        function Fn(t) {
            en.lFrame.currentSanitizer = t
        }
        function Un(t, e) {
            ngDevMode && De(t);
            for (var n = e.directiveStart, i = e.directiveEnd; n < i; n++) {
                var r = t.data[n];
                r.afterContentInit && (t.contentHooks || (t.contentHooks = [])).push(-n, r.afterContentInit),
                r.afterContentChecked && ((t.contentHooks || (t.contentHooks = [])).push(n, r.afterContentChecked),
                (t.contentCheckHooks || (t.contentCheckHooks = [])).push(n, r.afterContentChecked)),
                r.afterViewInit && (t.viewHooks || (t.viewHooks = [])).push(-n, r.afterViewInit),
                r.afterViewChecked && ((t.viewHooks || (t.viewHooks = [])).push(n, r.afterViewChecked),
                (t.viewCheckHooks || (t.viewCheckHooks = [])).push(n, r.afterViewChecked)),
                null != r.onDestroy && (t.destroyHooks || (t.destroyHooks = [])).push(n, r.onDestroy)
            }
        }
        function Bn(t, e, n) {
            Hn(t, e, 3, n)
        }
        function zn(t, e, n, i) {
            ngDevMode && Lt(n, 3, "Init pre-order hooks should not be called more than once"),
            (3 & t[2]) === n && Hn(t, e, n, i)
        }
        function Gn(t, e) {
            ngDevMode && Lt(e, 3, "Init hooks phase should not be incremented after all init hooks have been run.");
            var n = t[2];
            (3 & n) === e && (n &= 2047,
            n += 1,
            t[2] = n)
        }
        function Hn(t, e, n, i) {
            ngDevMode && Rt(hn(), !1, "Hooks should never be run in the check no changes mode.");
            for (var r = null != i ? i : -1, o = 0, a = void 0 !== i ? 65535 & t[18] : 0; a < e.length; a++) {
                if ("number" == typeof e[a + 1]) {
                    if (o = e[a],
                    null != i && o >= i)
                        break
                } else
                    e[a] < 0 && (t[18] += 65536),
                    (o < r || -1 == r) && (Wn(t, n, e, a),
                    t[18] = (4294901760 & t[18]) + a + 2),
                    a++
            }
        }
        function Wn(t, e, n, i) {
            var r = n[i] < 0
              , o = n[i + 1]
              , a = t[r ? -n[i] : n[i]];
            r ? t[2] >> 11 < t[18] >> 16 && (3 & t[2]) === e && (t[2] += 2048,
            o.call(a)) : o.call(a)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var qn = function(t, e, n) {
            this.factory = t,
            this.resolving = !1,
            this.canSeeViewProviders = e,
            this.injectImpl = n
        };
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Xn(t, e) {
            Bt(t, "should be called with a TNode"),
            Rt(t.type, e, "should be a " + Kn(e))
        }
        function Yn(t) {
            for (var e = [], n = 1; n < arguments.length; n++)
                e[n - 1] = arguments[n];
            Bt(t, "should be called with a TNode");
            var i = e.some((function(e) {
                return t.type === e
            }
            ));
            Rt(i, !0, "Should be one of " + e.map(Kn).join(", ") + " but got " + Kn(t.type))
        }
        function Kn(t) {
            return 1 == t ? "Projection" : 0 == t ? "Container" : 5 == t ? "IcuContainer" : 2 == t ? "View" : 3 == t ? "Element" : 4 == t ? "ElementContainer" : "<unknown>"
        }
        function Zn(t, e, n) {
            for (var i = Fe(t), r = 0; r < n.length; ) {
                var o = n[r];
                if ("number" == typeof o) {
                    if (0 !== o)
                        break;
                    r++;
                    var a = n[r++]
                      , s = n[r++]
                      , c = n[r++];
                    ngDevMode && ngDevMode.rendererSetAttribute++,
                    i ? t.setAttribute(e, s, c, a) : e.setAttributeNS(a, s, c)
                } else {
                    s = o,
                    c = n[++r];
                    ngDevMode && ngDevMode.rendererSetAttribute++,
                    Qn(s) ? i && t.setProperty(e, s, c) : i ? t.setAttribute(e, s, c) : e.setAttribute(s, c),
                    r++
                }
            }
            return r
        }
        function Jn(t) {
            return 3 === t || 4 === t || 6 === t
        }
        function Qn(t) {
            return 64 === t.charCodeAt(0)
        }
        function $n(t, e) {
            if (null === e || 0 === e.length)
                ;
            else if (null === t || 0 === t.length)
                t = e.slice();
            else
                for (var n = -1, i = 0; i < e.length; i++) {
                    var r = e[i];
                    "number" == typeof r ? n = r : 0 === n || ti(t, n, r, null, -1 === n || 2 === n ? e[++i] : null)
                }
            return t
        }
        function ti(t, e, n, i, r) {
            var o = 0
              , a = t.length;
            if (-1 === e)
                a = -1;
            else
                for (; o < t.length; ) {
                    var s = t[o++];
                    if ("number" == typeof s) {
                        if (s === e) {
                            a = -1;
                            break
                        }
                        if (s > e) {
                            a = o - 1;
                            break
                        }
                    }
                }
            for (; o < t.length; ) {
                var c = t[o];
                if ("number" == typeof c)
                    break;
                if (c === n) {
                    if (null === i)
                        return void (null !== r && (t[o + 1] = r));
                    if (i === t[o + 1])
                        return void (t[o + 2] = r)
                }
                o++,
                null !== i && o++,
                null !== r && o++
            }
            -1 !== a && (t.splice(a, 0, e),
            o = a + 1),
            t.splice(o++, 0, n),
            null !== i && t.splice(o++, 0, i),
            null !== r && t.splice(o++, 0, r)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function ei(t) {
            return -1 !== t
        }
        function ni(t) {
            return 32767 & t
        }
        function ii(t) {
            return t >> 16
        }
        function ri(t, e) {
            for (var n = ii(t), i = e; n > 0; )
                i = i[15],
                n--;
            return i
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function oi(t) {
            return "string" == typeof t ? t : null == t ? "" : "" + t
        }
        function ai(t) {
            return "function" == typeof t ? t.name || t.toString() : "object" == typeof t && null != t && "function" == typeof t.type ? t.type.name || t.type.toString() : oi(t)
        }
        var si = ("undefined" != typeof requestAnimationFrame && requestAnimationFrame || setTimeout).bind(J);
        function ci(t) {
            return {
                name: "window",
                target: t.ownerDocument.defaultView
            }
        }
        function li(t) {
            return {
                name: "document",
                target: t.ownerDocument
            }
        }
        function ui(t) {
            return {
                name: "body",
                target: t.ownerDocument.body
            }
        }
        function di(t) {
            return t instanceof Function ? t() : t
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var pi = !0;
        function hi(t) {
            var e = pi;
            return pi = t,
            e
        }
        var fi = 0;
        function mi(t, e) {
            var n = vi(t, e);
            if (-1 !== n)
                return n;
            var i = e[1];
            i.firstCreatePass && (t.injectorIndex = e.length,
            gi(i.data, t),
            gi(e, null),
            gi(i.blueprint, null));
            var r = yi(t, e)
              , o = t.injectorIndex;
            if (ei(r))
                for (var a = ni(r), s = ri(r, e), c = s[1].data, l = 0; l < 8; l++)
                    e[o + l] = s[a + l] | c[a + l];
            return e[o + 8] = r,
            o
        }
        function gi(t, e) {
            t.push(0, 0, 0, 0, 0, 0, 0, 0, e)
        }
        function vi(t, e) {
            return -1 === t.injectorIndex || t.parent && t.parent.injectorIndex === t.injectorIndex || null == e[t.injectorIndex + 8] ? -1 : t.injectorIndex
        }
        function yi(t, e) {
            if (t.parent && -1 !== t.parent.injectorIndex)
                return t.parent.injectorIndex;
            for (var n = e[6], i = 1; n && -1 === n.injectorIndex; )
                n = (e = e[15]) ? e[6] : null,
                i++;
            return n ? n.injectorIndex | i << 16 : -1
        }
        function bi(t, e, n) {
            !function(t, e, n) {
                ngDevMode && Rt(e.firstCreatePass, !0, "expected firstCreatePass to be true");
                var i = "string" != typeof n ? n[ot] : n.charCodeAt(0) || 0;
                null == i && (i = n[ot] = fi++);
                var r = 255 & i
                  , o = 1 << r
                  , a = 128 & r
                  , s = 64 & r
                  , c = 32 & r
                  , l = e.data;
                a ? s ? c ? l[t + 7] |= o : l[t + 6] |= o : c ? l[t + 5] |= o : l[t + 4] |= o : s ? c ? l[t + 3] |= o : l[t + 2] |= o : c ? l[t + 1] |= o : l[t] |= o
            }(t, e, n)
        }
        function wi(t, e) {
            if (ngDevMode && Yn(t, 0, 3, 4),
            ngDevMode && Bt(t, "expecting tNode"),
            "class" === e)
                return t.classes;
            if ("style" === e)
                return t.styles;
            var n = t.attrs;
            if (n)
                for (var i = n.length, r = 0; r < i; ) {
                    var o = n[r];
                    if (Jn(o))
                        break;
                    if (0 === o)
                        r += 2;
                    else if ("number" == typeof o)
                        for (r++; r < i && "string" == typeof n[r]; )
                            r++;
                    else {
                        if (o === e)
                            return n[r + 1];
                        r += 2
                    }
                }
            return null
        }
        function Si(t, e, n, i, r) {
            if (void 0 === i && (i = v.Default),
            null !== t) {
                var o = function(t) {
                    if (ngDevMode && Bt(t, "token must be defined"),
                    "string" == typeof t)
                        return t.charCodeAt(0) || 0;
                    var e = t[ot];
                    return "number" == typeof e && e > 0 ? 255 & e : e
                }(n);
                if ("function" == typeof o) {
                    Cn(e, t);
                    try {
                        var a = o();
                        if (null != a || i & v.Optional)
                            return a;
                        throw new Error("No provider for " + ai(n) + "!")
                    } finally {
                        Pn()
                    }
                } else if ("number" == typeof o) {
                    if (-1 === o)
                        return new Oi(t,e);
                    var s = null
                      , c = vi(t, e)
                      , l = -1
                      , u = i & v.Host ? e[16][6] : null;
                    for ((-1 === c || i & v.SkipSelf) && (l = -1 === c ? yi(t, e) : e[c + 8],
                    Ti(i, !1) ? (s = e[1],
                    c = ni(l),
                    e = ri(l, e)) : c = -1); -1 !== c; ) {
                        l = e[c + 8];
                        var d = e[1];
                        if (Ai(o, c, d.data)) {
                            var p = Mi(c, e, n, s, i, u);
                            if (p !== xi)
                                return p
                        }
                        Ti(i, e[1].data[c + 8] === u) && Ai(o, c, e) ? (s = d,
                        c = ni(l),
                        e = ri(l, e)) : c = -1
                    }
                }
            }
            if (i & v.Optional && void 0 === r && (r = null),
            0 == (i & (v.Self | v.Host))) {
                var h = e[9]
                  , f = mt(void 0);
                try {
                    return h ? h.get(n, r, i & v.Optional) : wt(n, r, i & v.Optional)
                } finally {
                    mt(f)
                }
            }
            if (i & v.Optional)
                return r;
            throw new Error("NodeInjector: NOT_FOUND [" + ai(n) + "]")
        }
        var xi = {};
        function Mi(t, e, n, i, r, o) {
            var a = e[1]
              , s = a.data[t + 8]
              , c = Ei(s, a, n, null == i ? Me(s) && pi : i != a && 3 === s.type, r & v.Host && o === s);
            return null !== c ? Ci(e, a, c, s) : xi
        }
        function Ei(t, e, n, i, r) {
            for (var o = t.providerIndexes, a = e.data, s = 65535 & o, c = t.directiveStart, l = t.directiveEnd, u = o >> 16, d = r ? s + u : l, p = i ? s : s + u; p < d; p++) {
                var h = a[p];
                if (p < c && n === h || p >= c && h.type === n)
                    return p
            }
            if (r) {
                var f = a[c];
                if (f && Ce(f) && f.type === n)
                    return c
            }
            return null
        }
        function Ci(t, e, n, i) {
            var r = t[n]
              , o = e.data;
            if (r instanceof qn) {
                var a = r;
                if (a.resolving)
                    throw new Error("Circular dep for " + ai(o[n]));
                var s = hi(a.canSeeViewProviders);
                a.resolving = !0;
                var c = void 0;
                a.injectImpl && (c = mt(a.injectImpl)),
                Cn(t, i);
                try {
                    r = t[n] = a.factory(void 0, o, t, i),
                    e.firstCreatePass && n >= i.directiveStart && (ngDevMode && function(t) {
                        void 0 !== t.type && null != t.selectors && void 0 !== t.inputs || zt("Expected a DirectiveDef/ComponentDef and this object does not seem to have the expected shape.")
                    }(o[n]),
                    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
                    function(t, e, n) {
                        ngDevMode && De(n);
                        var i = e.onChanges
                          , r = e.onInit
                          , o = e.doCheck;
                        i && ((n.preOrderHooks || (n.preOrderHooks = [])).push(t, i),
                        (n.preOrderCheckHooks || (n.preOrderCheckHooks = [])).push(t, i)),
                        r && (n.preOrderHooks || (n.preOrderHooks = [])).push(-t, r),
                        o && ((n.preOrderHooks || (n.preOrderHooks = [])).push(t, o),
                        (n.preOrderCheckHooks || (n.preOrderCheckHooks = [])).push(t, o))
                    }(n, o[n], e))
                } finally {
                    a.injectImpl && mt(c),
                    hi(s),
                    a.resolving = !1,
                    Pn()
                }
            }
            return r
        }
        function Ai(t, e, n) {
            var i = 1 << t
              , r = 64 & t
              , o = 32 & t;
            return !!((128 & t ? r ? o ? n[e + 7] : n[e + 6] : o ? n[e + 5] : n[e + 4] : r ? o ? n[e + 3] : n[e + 2] : o ? n[e + 1] : n[e]) & i)
        }
        function Ti(t, e) {
            return !(t & v.Self || t & v.Host && e)
        }
        var Oi = function() {
            function t(t, e) {
                this._tNode = t,
                this._lView = e
            }
            return t.prototype.get = function(t, e) {
                return Si(this._tNode, this._lView, t, void 0, e)
            }
            ,
            t
        }();
        function _i(t) {
            var e = t;
            if (H(t))
                return function() {
                    var t = _i(G(e));
                    return t ? t() : null
                }
                ;
            var n = ye(e);
            if (null === n) {
                var i = D(e);
                n = i && i.factory
            }
            return n || null
        }
        function Pi(t) {
            return l((function() {
                var e = Object.getPrototypeOf(t.prototype).constructor
                  , n = e[rt] || _i(e);
                return null !== n ? n : function(t) {
                    return new t
                }
            }
            ))
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Ii(t) {
            return t.ngDebugContext
        }
        function ki(t) {
            return t.ngOriginalError
        }
        function Di(t) {
            for (var e = [], n = 1; n < arguments.length; n++)
                e[n - 1] = arguments[n];
            t.error.apply(t, Object(i.h)(e))
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Ri = function() {
            function t() {
                this._console = console
            }
            return t.prototype.handleError = function(t) {
                var e = this._findOriginalError(t)
                  , n = this._findContext(t)
                  , i = function(t) {
                    return t.ngErrorLogger || Di
                }(t);
                i(this._console, "ERROR", t),
                e && i(this._console, "ORIGINAL ERROR", e),
                n && i(this._console, "ERROR CONTEXT", n)
            }
            ,
            t.prototype._findContext = function(t) {
                return t ? Ii(t) ? Ii(t) : this._findContext(ki(t)) : null
            }
            ,
            t.prototype._findOriginalError = function(t) {
                for (var e = ki(t); e && ki(e); )
                    e = ki(e);
                return e
            }
            ,
            t
        }()
          , Li = {
            name: "custom-elements"
        }
          , Ni = {
            name: "no-errors-schema"
        }
          , ji = function() {
            function t(t) {
                this.changingThisBreaksApplicationSecurity = t
            }
            return t.prototype.toString = function() {
                return "SafeValue must use [property]=binding: " + this.changingThisBreaksApplicationSecurity + " (see http://g.co/ng/security#xss)"
            }
            ,
            t
        }()
          , Vi = function(t) {
            function e() {
                return null !== t && t.apply(this, arguments) || this
            }
            return Object(i.c)(e, t),
            e.prototype.getTypeName = function() {
                return "HTML"
            }
            ,
            e
        }(ji)
          , Fi = function(t) {
            function e() {
                return null !== t && t.apply(this, arguments) || this
            }
            return Object(i.c)(e, t),
            e.prototype.getTypeName = function() {
                return "Style"
            }
            ,
            e
        }(ji)
          , Ui = function(t) {
            function e() {
                return null !== t && t.apply(this, arguments) || this
            }
            return Object(i.c)(e, t),
            e.prototype.getTypeName = function() {
                return "Script"
            }
            ,
            e
        }(ji)
          , Bi = function(t) {
            function e() {
                return null !== t && t.apply(this, arguments) || this
            }
            return Object(i.c)(e, t),
            e.prototype.getTypeName = function() {
                return "URL"
            }
            ,
            e
        }(ji)
          , zi = function(t) {
            function e() {
                return null !== t && t.apply(this, arguments) || this
            }
            return Object(i.c)(e, t),
            e.prototype.getTypeName = function() {
                return "ResourceURL"
            }
            ,
            e
        }(ji);
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Gi(t) {
            return t instanceof ji ? t.changingThisBreaksApplicationSecurity : t
        }
        function Hi(t, e) {
            var n = Wi(t);
            if (null != n && n !== e) {
                if ("ResourceURL" === n && "URL" === e)
                    return !0;
                throw new Error("Required a safe " + e + ", got a " + n + " (see http://g.co/ng/security#xss)")
            }
            return n === e
        }
        function Wi(t) {
            return t instanceof ji && t.getTypeName() || null
        }
        function qi(t) {
            return new Vi(t)
        }
        function Xi(t) {
            return new Fi(t)
        }
        function Yi(t) {
            return new Ui(t)
        }
        function Ki(t) {
            return new Bi(t)
        }
        function Zi(t) {
            return new zi(t)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Ji = !0
          , Qi = !1;
        function $i() {
            return Qi = !0,
            Ji
        }
        function tr() {
            if (Qi)
                throw new Error("Cannot enable prod mode after platform setup.");
            Ji = !1
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var er = function() {
            function t(t) {
                this.defaultDoc = t,
                this.inertDocument = this.defaultDoc.implementation.createHTMLDocument("sanitization-inert");
                var e = this.inertDocument.body;
                if (null == e) {
                    var n = this.inertDocument.createElement("html");
                    this.inertDocument.appendChild(n),
                    e = this.inertDocument.createElement("body"),
                    n.appendChild(e)
                }
                e.innerHTML = '<svg><g onload="this.parentNode.remove()"></g></svg>',
                !e.querySelector || e.querySelector("svg") ? (e.innerHTML = '<svg><p><style><img src="</style><img src=x onerror=alert(1)//">',
                e.querySelector && e.querySelector("svg img") && function() {
                    try {
                        return !!window.DOMParser
                    } catch (t) {
                        return !1
                    }
                }/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
                () ? this.getInertBodyElement = this.getInertBodyElement_DOMParser : this.getInertBodyElement = this.getInertBodyElement_InertDocument) : this.getInertBodyElement = this.getInertBodyElement_XHR
            }
            return t.prototype.getInertBodyElement_XHR = function(t) {
                t = "<body><remove></remove>" + t + "</body>";
                try {
                    t = encodeURI(t)
                } catch (t) {
                    return null
                }
                var e = new XMLHttpRequest;
                e.responseType = "document",
                e.open("GET", "data:text/html;charset=utf-8," + t, !1),
                e.send(void 0);
                var n = e.response.body;
                return n.removeChild(n.firstChild),
                n
            }
            ,
            t.prototype.getInertBodyElement_DOMParser = function(t) {
                t = "<body><remove></remove>" + t + "</body>";
                try {
                    var e = (new window.DOMParser).parseFromString(t, "text/html").body;
                    return e.removeChild(e.firstChild),
                    e
                } catch (t) {
                    return null
                }
            }
            ,
            t.prototype.getInertBodyElement_InertDocument = function(t) {
                var e = this.inertDocument.createElement("template");
                if ("content"in e)
                    return e.innerHTML = t,
                    e;
                var n = this.inertDocument.createElement("body");
                return n.innerHTML = t,
                this.defaultDoc.documentMode && this.stripCustomNsAttrs(n),
                n
            }
            ,
            t.prototype.stripCustomNsAttrs = function(t) {
                for (var e = t.attributes, n = e.length - 1; 0 < n; n--) {
                    var i = e.item(n).name;
                    "xmlns:ns1" !== i && 0 !== i.indexOf("ns1:") || t.removeAttribute(i)
                }
                for (var r = t.firstChild; r; )
                    r.nodeType === Node.ELEMENT_NODE && this.stripCustomNsAttrs(r),
                    r = r.nextSibling
            }
            ,
            t
        }();
        var nr = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi
          , ir = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+\/]+=*$/i;
        function rr(t) {
            return (t = String(t)).match(nr) || t.match(ir) ? t : ($i() && console.warn("WARNING: sanitizing unsafe URL value " + t + " (see http://g.co/ng/security#xss)"),
            "unsafe:" + t)
        }
        function or(t) {
            return (t = String(t)).split(",").map((function(t) {
                return rr(t.trim())
            }
            )).join(", ")
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function ar(t) {
            var e, n, r = {};
            try {
                for (var o = Object(i.j)(t.split(",")), a = o.next(); !a.done; a = o.next()) {
                    r[a.value] = !0
                }
            } catch (t) {
                e = {
                    error: t
                }
            } finally {
                try {
                    a && !a.done && (n = o.return) && n.call(o)
                } finally {
                    if (e)
                        throw e.error
                }
            }
            return r
        }
        function sr() {
            for (var t, e, n = [], r = 0; r < arguments.length; r++)
                n[r] = arguments[r];
            var o = {};
            try {
                for (var a = Object(i.j)(n), s = a.next(); !s.done; s = a.next()) {
                    var c = s.value;
                    for (var l in c)
                        c.hasOwnProperty(l) && (o[l] = !0)
                }
            } catch (e) {
                t = {
                    error: e
                }
            } finally {
                try {
                    s && !s.done && (e = a.return) && e.call(a)
                } finally {
                    if (t)
                        throw t.error
                }
            }
            return o
        }
        var cr, lr, ur = ar("area,br,col,hr,img,wbr"), dr = ar("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"), pr = ar("rp,rt"), hr = sr(pr, dr), fr = sr(dr, ar("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")), mr = sr(pr, ar("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")), gr = sr(ur, fr, mr, hr), vr = ar("background,cite,href,itemtype,longdesc,poster,src,xlink:href"), yr = ar("srcset"), br = ar("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"), wr = ar("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext"), Sr = sr(vr, yr, br, wr), xr = ar("script,style,template"), Mr = function() {
            function t() {
                this.sanitizedSomething = !1,
                this.buf = []
            }
            return t.prototype.sanitizeChildren = function(t) {
                for (var e = t.firstChild, n = !0; e; )
                    if (e.nodeType === Node.ELEMENT_NODE ? n = this.startElement(e) : e.nodeType === Node.TEXT_NODE ? this.chars(e.nodeValue) : this.sanitizedSomething = !0,
                    n && e.firstChild)
                        e = e.firstChild;
                    else
                        for (; e; ) {
                            e.nodeType === Node.ELEMENT_NODE && this.endElement(e);
                            var i = this.checkClobberedElement(e, e.nextSibling);
                            if (i) {
                                e = i;
                                break
                            }
                            e = this.checkClobberedElement(e, e.parentNode)
                        }
                return this.buf.join("")
            }
            ,
            t.prototype.startElement = function(t) {
                var e = t.nodeName.toLowerCase();
                if (!gr.hasOwnProperty(e))
                    return this.sanitizedSomething = !0,
                    !xr.hasOwnProperty(e);
                this.buf.push("<"),
                this.buf.push(e);
                for (var n = t.attributes, i = 0; i < n.length; i++) {
                    var r = n.item(i)
                      , o = r.name
                      , a = o.toLowerCase();
                    if (Sr.hasOwnProperty(a)) {
                        var s = r.value;
                        vr[a] && (s = rr(s)),
                        yr[a] && (s = or(s)),
                        this.buf.push(" ", o, '="', Ar(s), '"')
                    } else
                        this.sanitizedSomething = !0
                }
                return this.buf.push(">"),
                !0
            }
            ,
            t.prototype.endElement = function(t) {
                var e = t.nodeName.toLowerCase();
                gr.hasOwnProperty(e) && !ur.hasOwnProperty(e) && (this.buf.push("</"),
                this.buf.push(e),
                this.buf.push(">"))
            }
            ,
            t.prototype.chars = function(t) {
                this.buf.push(Ar(t))
            }
            ,
            t.prototype.checkClobberedElement = function(t, e) {
                if (e && (t.compareDocumentPosition(e) & Node.DOCUMENT_POSITION_CONTAINED_BY) === Node.DOCUMENT_POSITION_CONTAINED_BY)
                    throw new Error("Failed to sanitize html because the element is clobbered: " + t.outerHTML);
                return e
            }
            ,
            t
        }(), Er = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g, Cr = /([^\#-~ |!])/g;
        function Ar(t) {
            return t.replace(/&/g, "&amp;").replace(Er, (function(t) {
                return "&#" + (1024 * (t.charCodeAt(0) - 55296) + (t.charCodeAt(1) - 56320) + 65536) + ";"
            }
            )).replace(Cr, (function(t) {
                return "&#" + t.charCodeAt(0) + ";"
            }
            )).replace(/</g, "&lt;").replace(/>/g, "&gt;")
        }
        function Tr(t, e) {
            var n = null;
            try {
                cr = cr || new er(t);
                var i = e ? String(e) : "";
                n = cr.getInertBodyElement(i);
                var r = 5
                  , o = i;
                do {
                    if (0 === r)
                        throw new Error("Failed to sanitize html because the input is unstable");
                    r--,
                    i = o,
                    o = n.innerHTML,
                    n = cr.getInertBodyElement(i)
                } while (i !== o);
                var a = new Mr
                  , s = a.sanitizeChildren(Or(n) || n);
                return $i() && a.sanitizedSomething && console.warn("WARNING: sanitizing HTML stripped some content, see http://g.co/ng/security#xss"),
                s
            } finally {
                if (n)
                    for (var c = Or(n) || n; c.firstChild; )
                        c.removeChild(c.firstChild)
            }
        }
        function Or(t) {
            return "content"in t && function(t) {
                return t.nodeType === Node.ELEMENT_NODE && "TEMPLATE" === t.nodeName
            }/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
            (t) ? t.content : null
        }
        !function(t) {
            t[t.NONE = 0] = "NONE",
            t[t.HTML = 1] = "HTML",
            t[t.STYLE = 2] = "STYLE",
            t[t.SCRIPT = 3] = "SCRIPT",
            t[t.URL = 4] = "URL",
            t[t.RESOURCE_URL = 5] = "RESOURCE_URL"
        }(lr || (lr = {}));
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var _r = new RegExp("^([-,.\"'%_!# a-zA-Z0-9]+|(?:(?:matrix|translate|scale|rotate|skew|perspective)(?:X|Y|Z|3d)?|(?:rgb|hsl)a?|(?:repeating-)?(?:linear|radial)-gradient|(?:attr|calc|var))\\([-0-9.%, #a-zA-Z]+\\))$","g")
          , Pr = /^url\(([^)]+)\)$/;
        function Ir(t) {
            if (!(t = String(t).trim()))
                return "";
            var e = t.match(Pr);
            return e && rr(e[1]) === e[1] || t.match(_r) && function(t) {
                for (var e = !0, n = !0, i = 0; i < t.length; i++) {
                    var r = t.charAt(i);
                    "'" === r && n ? e = !e : '"' === r && e && (n = !n)
                }
                return e && n
            }(t) ? t : ($i() && console.warn("WARNING: sanitizing unsafe style value " + t + " (see http://g.co/ng/security#xss)."),
            "unsafe")
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function kr(t) {
            var e = Br();
            return e ? e.sanitize(lr.HTML, t) || "" : Hi(t, "HTML") ? Gi(t) : Tr(Ve(), oi(t))
        }
        function Dr(t) {
            var e = Br();
            return e ? e.sanitize(lr.STYLE, t) || "" : Hi(t, "Style") ? Gi(t) : Ir(oi(t))
        }
        function Rr(t) {
            var e = Br();
            return e ? e.sanitize(lr.URL, t) || "" : Hi(t, "URL") ? Gi(t) : rr(oi(t))
        }
        function Lr(t) {
            var e = Br();
            if (e)
                return e.sanitize(lr.RESOURCE_URL, t) || "";
            if (Hi(t, "ResourceURL"))
                return Gi(t);
            throw new Error("unsafe value used in a resource URL context (see http://g.co/ng/security#xss)")
        }
        function Nr(t) {
            var e = Br();
            if (e)
                return e.sanitize(lr.SCRIPT, t) || "";
            if (Hi(t, "Script"))
                return Gi(t);
            throw new Error("unsafe value used in a script context")
        }
        function jr(t, e) {
            return "src" === e && ("embed" === t || "frame" === t || "iframe" === t || "media" === t || "script" === t) || "href" === e && ("base" === t || "link" === t) ? Lr : Rr
        }
        function Vr(t, e, n) {
            return jr(e, n)(t)
        }
        var Fr = function(t, e, n) {
            if (void 0 === e && void 0 === n)
                return Dr(t);
            var i = !0;
            return 1 & (n = n || 3) && (i = Ur(t)),
            2 & n ? i ? Dr(e) : Gi(e) : i
        };
        function Ur(t) {
            return "background-image" === t || "backgroundImage" === t || "background" === t || "border-image" === t || "borderImage" === t || "border-image-source" === t || "borderImageSource" === t || "filter" === t || "list-style" === t || "listStyle" === t || "list-style-image" === t || "listStyleImage" === t || "clip-path" === t || "clipPath" === t
        }
        function Br() {
            var t = an();
            return t && t[12]
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function zr(t) {
            if (!ngDevMode)
                throw new Error("Looks like we are in 'prod mode', but we are creating a named Array type, which is wrong! Check your code");
            try {
                return new (0,
                zr.constructor)("Array","return class " + t + " extends Array{}")(Array)
            } catch (t) {
                return Array
            }
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Gr(t) {
            var e;
            return e = t.replace(/[$@]/g, "_"),
            "ng-reflect-" + (t = e.replace(Hr, (function() {
                for (var t = [], e = 0; e < arguments.length; e++)
                    t[e] = arguments[e];
                return "-" + t[1].toLowerCase()
            }
            )))
        }
        var Hr = /([A-Z])/g;
        function Wr(t) {
            try {
                return null != t ? t.toString().slice(0, 30) : t
            } catch (t) {
                return "[ERROR] Exception while trying to serialize the value"
            }
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function qr(t) {
            var e, n = Ye(t);
            if (n) {
                if (Array.isArray(n)) {
                    var i = n
                      , r = void 0
                      , o = void 0
                      , a = void 0;
                    if ((e = t) && e.constructor && e.constructor.ɵcmp) {
                        if (-1 == (r = Qr(i, t)))
                            throw new Error("The provided component was not found in the application");
                        o = t
                    } else if (function(t) {
                        return t && t.constructor && t.constructor.ɵdir
                    }(t)) {
                        if (-1 == (r = function(t, e) {
                            var n = t[1].firstChild;
                            for (; n; ) {
                                for (var i = n.directiveStart, r = n.directiveEnd, o = i; o < r; o++)
                                    if (t[o] === e)
                                        return n.index;
                                n = Jr(n)
                            }
                            return -1
                        }(i, t)))
                            throw new Error("The provided directive was not found in the application");
                        a = $r(r, i, !1)
                    } else if (-1 == (r = Zr(i, t)))
                        return null;
                    var s = Ye(f = Be(i[r]))
                      , c = s && !Array.isArray(s) ? s : Xr(i, r, f);
                    if (o && void 0 === c.component && (c.component = o,
                    Kr(c.component, c)),
                    a && void 0 === c.directives) {
                        c.directives = a;
                        for (var l = 0; l < a.length; l++)
                            Kr(a[l], c)
                    }
                    Kr(c.native, c),
                    n = c
                }
            } else {
                var u = t;
                ngDevMode && Gt(u);
                for (var d = u; d = d.parentNode; ) {
                    var p = Ye(d);
                    if (p) {
                        i = void 0;
                        if (!(i = Array.isArray(p) ? p : p.lView))
                            return null;
                        var h = Zr(i, u);
                        if (h >= 0) {
                            var f;
                            Kr(f = Be(i[h]), c = Xr(i, h, f)),
                            n = c;
                            break
                        }
                    }
                }
            }
            return n || null
        }
        function Xr(t, e, n) {
            return {
                lView: t,
                nodeIndex: e,
                native: n,
                component: void 0,
                directives: void 0,
                localRefs: void 0
            }
        }
        function Yr(t) {
            var e, n = Ye(t);
            if (Array.isArray(n)) {
                var i = Qr(n, t);
                (r = Xr(n, i, (e = Xe(i, n))[0])).component = t,
                Kr(t, r),
                Kr(r.native, r)
            } else {
                var r;
                e = Xe((r = n).nodeIndex, r.lView)
            }
            return e
        }
        function Kr(t, e) {
            t.__ngContext__ = e
        }
        function Zr(t, e) {
            for (var n = t[1].firstChild; n; ) {
                if (He(n, t) === e)
                    return n.index;
                n = Jr(n)
            }
            return -1
        }
        function Jr(t) {
            if (t.child)
                return t.child;
            if (t.next)
                return t.next;
            for (; t.parent && !t.parent.next; )
                t = t.parent;
            return t.parent && t.parent.next
        }
        function Qr(t, e) {
            var n = t[1].components;
            if (n)
                for (var i = 0; i < n.length; i++) {
                    var r = n[i];
                    if (Xe(r, t)[8] === e)
                        return r
                }
            else if (Xe(20, t)[8] === e)
                return 20;
            return -1
        }
        function $r(t, e, n) {
            var i = e[1].data[t]
              , r = i.directiveStart;
            if (0 == r)
                return ie;
            var o = i.directiveEnd;
            return !n && 2 & i.flags && r++,
            e.slice(r, o)
        }
        function to(t) {
            throw new Error("Multiple components match node with tagname " + t.tagName)
        }
        function eo() {
            throw new Error("Cannot mix multi providers and regular providers")
        }
        function no(t, e, n, r, o) {
            for (var a = Object(i.f)(r.split("�")), s = a[0], c = a[1], l = a.slice(2), u = c, d = c, p = 0; p < l.length; p++) {
                var h = e + p;
                u += "" + t[h] + l[p],
                d += "" + (h === n ? o : t[h]) + l[p]
            }
            return {
                propName: s,
                oldValue: u,
                newValue: d
            }
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function io(t, e, n) {
            ngDevMode && Lt(e, "", 'can not look for "" string.');
            for (var i = t.length; ; ) {
                var r = t.indexOf(e, n);
                if (-1 === r)
                    return r;
                if (0 === r || t.charCodeAt(r - 1) <= 32) {
                    var o = e.length;
                    if (r + o === i || t.charCodeAt(r + o) <= 32)
                        return r
                }
                n = r + 1
            }
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function ro(t, e, n) {
            ngDevMode && Rt(e, e.toLowerCase(), "Class name expected to be lowercase.");
            for (var i = 0; i < t.length; ) {
                var r = t[i++];
                if (n && "class" === r) {
                    if (-1 !== io((r = t[i]).toLowerCase(), e, 0))
                        return !0
                } else if (1 === r) {
                    for (; i < t.length && "string" == typeof (r = t[i++]); )
                        if (r.toLowerCase() === e)
                            return !0;
                    return !1
                }
            }
            return !1
        }
        function oo(t) {
            return 0 === t.type && "ng-template" !== t.tagName
        }
        function ao(t, e, n) {
            return e === (0 !== t.type || n ? t.tagName : "ng-template")
        }
        function so(t, e, n) {
            ngDevMode && Bt(e[0], "Selector should have a tag name");
            for (var i = 4, r = t.attrs || [], o = function(t) {
                for (var e = 0; e < t.length; e++) {
                    if (Jn(t[e]))
                        return e
                }
                return t.length
            }(r), a = !1, s = 0; s < e.length; s++) {
                var c = e[s];
                if ("number" != typeof c) {
                    if (!a)
                        if (4 & i) {
                            if (i = 2 | 1 & i,
                            "" !== c && !ao(t, c, n) || "" === c && 1 === e.length) {
                                if (co(i))
                                    return !1;
                                a = !0
                            }
                        } else {
                            var l = 8 & i ? c : e[++s];
                            if (8 & i && null !== t.attrs) {
                                if (!ro(t.attrs, l, n)) {
                                    if (co(i))
                                        return !1;
                                    a = !0
                                }
                                continue
                            }
                            var u = lo(8 & i ? "class" : c, r, oo(t), n);
                            if (-1 === u) {
                                if (co(i))
                                    return !1;
                                a = !0;
                                continue
                            }
                            if ("" !== l) {
                                var d = void 0;
                                u > o ? d = "" : (ngDevMode && Lt(r[u], 0, "We do not match directives on namespaced attributes"),
                                d = r[u + 1].toLowerCase());
                                var p = 8 & i ? d : null;
                                if (p && -1 !== io(p, l, 0) || 2 & i && l !== d) {
                                    if (co(i))
                                        return !1;
                                    a = !0
                                }
                            }
                        }
                } else {
                    if (!a && !co(i) && !co(c))
                        return !1;
                    if (a && co(c))
                        continue;
                    a = !1,
                    i = c | 1 & i
                }
            }
            return co(i) || a
        }
        function co(t) {
            return 0 == (1 & t)
        }
        function lo(t, e, n, i) {
            if (null === e)
                return -1;
            var r = 0;
            if (i || !n) {
                for (var o = !1; r < e.length; ) {
                    var a = e[r];
                    if (a === t)
                        return r;
                    if (3 === a || 6 === a)
                        o = !0;
                    else {
                        if (1 === a || 2 === a) {
                            for (var s = e[++r]; "string" == typeof s; )
                                s = e[++r];
                            continue
                        }
                        if (4 === a)
                            break;
                        if (0 === a) {
                            r += 4;
                            continue
                        }
                    }
                    r += o ? 1 : 2
                }
                return -1
            }
            return function(t, e) {
                var n = t.indexOf(4);
                if (n > -1)
                    for (n++; n < t.length; ) {
                        var i = t[n];
                        if ("number" == typeof i)
                            return -1;
                        if (i === e)
                            return n;
                        n++
                    }
                return -1
            }(e, t)
        }
        function uo(t, e, n) {
            void 0 === n && (n = !1);
            for (var i = 0; i < e.length; i++)
                if (so(t, e[i], n))
                    return !0;
            return !1
        }
        function po(t, e) {
            t: for (var n = 0; n < e.length; n++) {
                var i = e[n];
                if (t.length === i.length) {
                    for (var r = 0; r < t.length; r++)
                        if (t[r] !== i[r])
                            continue t;
                    return !0
                }
            }
            return !1
        }
        function ho(t, e) {
            return t ? ":not(" + e.trim() + ")" : e
        }
        function fo(t) {
            for (var e = t[0], n = 1, i = 2, r = "", o = !1; n < t.length; ) {
                var a = t[n];
                if ("string" == typeof a)
                    if (2 & i) {
                        var s = t[++n];
                        r += "[" + a + (s.length > 0 ? '="' + s + '"' : "") + "]"
                    } else
                        8 & i ? r += "." + a : 4 & i && (r += " " + a);
                else
                    "" === r || co(a) || (e += ho(o, r),
                    r = ""),
                    i = a,
                    o = o || !co(i);
                n++
            }
            return "" !== r && (e += ho(o, r)),
            e
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var mo = "undefined" == typeof ngDevMode || ngDevMode ? {
            __brand__: "NO_CHANGE"
        } : {};
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function go(t) {
            ngDevMode && ke(t);
            var e = t[3];
            return Se(e) ? e[3] : e
        }
        function vo(t) {
            ngDevMode && Bt(t, "component");
            for (var e = we(t) ? t : Ke(t); e && !(512 & e[2]); )
                e = go(e);
            return ngDevMode && ke(e),
            e
        }
        function yo(t) {
            var e = vo(t);
            return ngDevMode && Bt(e[8], "RootView has no context. Perhaps it is disconnected?"),
            e[8]
        }
        function bo(t) {
            return So(t[13])
        }
        function wo(t) {
            return So(t[4])
        }
        function So(t) {
            for (; null !== t && !Se(t); )
                t = t[4];
            return t
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function xo(t) {
            ngDevMode && Ut(t, 0, "Can only advance forward"),
            Eo(sn(), an(), Dn() + t, hn())
        }
        function Mo(t) {
            Eo(sn(), an(), t, hn())
        }
        function Eo(t, e, n, i) {
            if (ngDevMode && Ut(n, -1, "Invalid index"),
            ngDevMode && Ht(e, n + 20),
            !i)
                if (3 == (3 & e[2])) {
                    var r = t.preOrderCheckHooks;
                    null !== r && Bn(e, r, n)
                } else {
                    var o = t.preOrderHooks;
                    null !== o && zn(e, o, 0, n)
                }
            Rn(n)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Co = {
            marker: "element"
        }
          , Ao = {
            marker: "comment"
        };
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function To(t, e) {
            return ngDevMode && kt(t, 0, 32767),
            ngDevMode && kt(e, 0, 32767),
            t << 17 | e << 2
        }
        function Oo(t) {
            return ngDevMode && It(t, "expected number"),
            t >> 17 & 32767
        }
        function _o(t) {
            return ngDevMode && It(t, "expected number"),
            2 == (2 & t)
        }
        function Po(t) {
            return ngDevMode && It(t, "expected number"),
            2 | t
        }
        function Io(t) {
            return ngDevMode && It(t, "expected number"),
            (131068 & t) >> 2
        }
        function ko(t, e) {
            return ngDevMode && It(t, "expected number"),
            ngDevMode && kt(e, 0, 32767),
            -131069 & t | e << 2
        }
        function Do(t) {
            return ngDevMode && It(t, "expected number"),
            1 == (1 & t)
        }
        function Ro(t) {
            return ngDevMode && It(t, "expected number"),
            1 | t
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Lo(t, e) {
            Object.defineProperty(t, "debug", {
                value: e,
                enumerable: !1
            })
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var No, jo, Vo, Fo = ("undefined" == typeof ngDevMode || !!ngDevMode) && at();
        function Uo(t) {
            return function(t, e) {
                switch (t) {
                case 0:
                    return void 0 === Vo && (Vo = new (zr("LRootView"))),
                    Vo;
                case 1:
                    void 0 === No && (No = new Map);
                    var n = No.get(e);
                    return void 0 === n && (n = new (zr("LComponentView" + Bo(e))),
                    No.set(e, n)),
                    n;
                case 2:
                    void 0 === jo && (jo = new Map);
                    var i = jo.get(e);
                    return void 0 === i && (i = new (zr("LEmbeddedView" + Bo(e))),
                    jo.set(e, i)),
                    i
                }
                throw new Error("unreachable code")
            }(t.type, t.template && t.template.name).concat(t.blueprint)
        }
        function Bo(t) {
            if (null == t)
                return "";
            var e = t.lastIndexOf("_Template");
            return "_" + (-1 === e ? t : t.substr(0, e))
        }
        var zo = function() {
            function t(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g, v, y, b, w, S, x, M, E, C, A, T, O, _, P) {
                this.type = t,
                this.id = e,
                this.blueprint = n,
                this.template = i,
                this.queries = r,
                this.viewQuery = o,
                this.node = a,
                this.data = s,
                this.bindingStartIndex = c,
                this.expandoStartIndex = l,
                this.expandoInstructions = u,
                this.firstCreatePass = d,
                this.firstUpdatePass = p,
                this.staticViewQueries = h,
                this.staticContentQueries = f,
                this.preOrderHooks = m,
                this.preOrderCheckHooks = g,
                this.contentHooks = v,
                this.contentCheckHooks = y,
                this.viewHooks = b,
                this.viewCheckHooks = w,
                this.destroyHooks = S,
                this.cleanup = x,
                this.contentQueries = M,
                this.components = E,
                this.directiveRegistry = C,
                this.pipeRegistry = A,
                this.firstChild = T,
                this.schemas = O,
                this.consts = _,
                this.incompleteFirstPass = P
            }
            return Object.defineProperty(t.prototype, "template_", {
                get: function() {
                    var t = [];
                    return Wo(this.firstChild, t),
                    t.join("")
                },
                enumerable: !0,
                configurable: !0
            }),
            t
        }()
          , Go = function() {
            function t(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g, v, y, b, w, S, x, M, E, C, A, T, O, _, P) {
                this.tView_ = t,
                this.type = e,
                this.index = n,
                this.injectorIndex = i,
                this.directiveStart = r,
                this.directiveEnd = o,
                this.directiveStylingLast = a,
                this.propertyBindings = s,
                this.flags = c,
                this.providerIndexes = l,
                this.tagName = u,
                this.attrs = d,
                this.mergedAttrs = p,
                this.localNames = h,
                this.initialInputs = f,
                this.inputs = m,
                this.outputs = g,
                this.tViews = v,
                this.next = y,
                this.projectionNext = b,
                this.child = w,
                this.parent = S,
                this.projection = x,
                this.styles = M,
                this.stylesWithoutHost = E,
                this.residualStyles = C,
                this.classes = A,
                this.classesWithoutHost = T,
                this.residualClasses = O,
                this.classBindings = _,
                this.styleBindings = P
            }
            return Object.defineProperty(t.prototype, "type_", {
                get: function() {
                    switch (this.type) {
                    case 0:
                        return "TNodeType.Container";
                    case 3:
                        return "TNodeType.Element";
                    case 4:
                        return "TNodeType.ElementContainer";
                    case 5:
                        return "TNodeType.IcuContainer";
                    case 1:
                        return "TNodeType.Projection";
                    case 2:
                        return "TNodeType.View";
                    default:
                        return "TNodeType.???"
                    }
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "flags_", {
                get: function() {
                    var t = [];
                    return 16 & this.flags && t.push("TNodeFlags.hasClassInput"),
                    8 & this.flags && t.push("TNodeFlags.hasContentQuery"),
                    32 & this.flags && t.push("TNodeFlags.hasStyleInput"),
                    128 & this.flags && t.push("TNodeFlags.hasHostBindings"),
                    2 & this.flags && t.push("TNodeFlags.isComponentHost"),
                    1 & this.flags && t.push("TNodeFlags.isDirectiveHost"),
                    64 & this.flags && t.push("TNodeFlags.isDetached"),
                    4 & this.flags && t.push("TNodeFlags.isProjected"),
                    t.join("|")
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "template_", {
                get: function() {
                    var t = [];
                    if (t.push("<", this.tagName || this.type_),
                    this.attrs)
                        for (var e = 0; e < this.attrs.length; ) {
                            var n = this.attrs[e++];
                            if ("number" == typeof n)
                                break;
                            var i = this.attrs[e++];
                            t.push(" ", n, '="', i, '"')
                        }
                    return t.push(">"),
                    Wo(this.child, t),
                    t.push("</", this.tagName || this.type_, ">"),
                    t.join("")
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "styleBindings_", {
                get: function() {
                    return Ho(this, !1)
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "classBindings_", {
                get: function() {
                    return Ho(this, !0)
                },
                enumerable: !0,
                configurable: !0
            }),
            t
        }();
        function Ho(t, e) {
            for (var n = t.tView_.data, i = [], r = e ? t.classBindings : t.styleBindings, o = Oo(r), a = Io(r), s = 0 !== a, c = s ? a : o; 0 !== c; ) {
                var l = n[c]
                  , u = n[c + 1];
                i.unshift({
                    key: l,
                    index: c,
                    isTemplate: s,
                    prevDuplicate: _o(u),
                    nextDuplicate: Do(u),
                    nextIndex: Io(u),
                    prevIndex: Oo(u)
                }),
                c === o && (s = !1),
                c = Oo(u)
            }
            return i.push((e ? t.residualClasses : t.residualStyles) || null),
            i
        }
        function Wo(t, e) {
            for (; t; )
                e.push(t.template_),
                t = t.next
        }
        var qo, Xo = Fo && zr("TViewData") || null;
        var Yo = Fo && zr("LViewBlueprint") || null
          , Ko = Fo && zr("MatchesArray") || null
          , Zo = Fo && zr("TViewComponents") || null
          , Jo = Fo && zr("TNodeLocalNames") || null
          , Qo = Fo && zr("TNodeInitialInputs") || null
          , $o = (Fo && zr("TNodeInitialData"),
        Fo && zr("LCleanup") || null)
          , ta = Fo && zr("TCleanup") || null;
        function ea(t) {
            if (t) {
                var e = t.debug;
                return Bt(e, "Object does not have a debug representation."),
                e
            }
            return t
        }
        function na(t, e) {
            void 0 === e && (e = !1);
            var n = Be(t);
            if (n) {
                var i = n.nodeType === Node.TEXT_NODE
                  , r = (i ? n.textContent : n.outerHTML) || "";
                if (e || i)
                    return r;
                var o = ">" + n.innerHTML + "<";
                return r.split(o)[0] + ">"
            }
            return null
        }
        var ia = function() {
            function t(t) {
                this._raw_lView = t
            }
            return Object.defineProperty(t.prototype, "flags", {
                get: function() {
                    var t = this._raw_lView[2];
                    return {
                        __raw__flags__: t,
                        initPhaseState: 3 & t,
                        creationMode: !!(4 & t),
                        firstViewPass: !!(8 & t),
                        checkAlways: !!(16 & t),
                        dirty: !!(64 & t),
                        attached: !!(128 & t),
                        destroyed: !!(256 & t),
                        isRoot: !!(512 & t),
                        indexWithinInitPhase: t >> 11
                    }
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "parent", {
                get: function() {
                    return ea(this._raw_lView[3])
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "host", {
                get: function() {
                    return na(this._raw_lView[0], !0)
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "html", {
                get: function() {
                    return (this.nodes || []).map((function(t) {
                        return na(t.native, !0)
                    }
                    )).join("")
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "context", {
                get: function() {
                    return this._raw_lView[8]
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "nodes", {
                get: function() {
                    var t = this._raw_lView;
                    return ra(t[1].firstChild, t)
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "tView", {
                get: function() {
                    return this._raw_lView[1]
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "cleanup", {
                get: function() {
                    return this._raw_lView[7]
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "injector", {
                get: function() {
                    return this._raw_lView[9]
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "rendererFactory", {
                get: function() {
                    return this._raw_lView[10]
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "renderer", {
                get: function() {
                    return this._raw_lView[11]
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "sanitizer", {
                get: function() {
                    return this._raw_lView[12]
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "childHead", {
                get: function() {
                    return ea(this._raw_lView[13])
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "next", {
                get: function() {
                    return ea(this._raw_lView[4])
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "childTail", {
                get: function() {
                    return ea(this._raw_lView[14])
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "declarationView", {
                get: function() {
                    return ea(this._raw_lView[15])
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "queries", {
                get: function() {
                    return this._raw_lView[19]
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "tHost", {
                get: function() {
                    return this._raw_lView[6]
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "childViews", {
                get: function() {
                    for (var t = [], e = this.childHead; e; )
                        t.push(e),
                        e = e.next;
                    return t
                },
                enumerable: !0,
                configurable: !0
            }),
            t
        }();
        function ra(t, e) {
            if (t) {
                for (var n = [], i = t; i; )
                    n.push(oa(i, e, i.index)),
                    i = i.next;
                return n
            }
            return null
        }
        function oa(t, e, n) {
            var i = e[n]
              , r = Be(i)
              , o = ea(function(t) {
                for (; Array.isArray(t); ) {
                    if (t.length >= 19)
                        return t;
                    t = t[0]
                }
                return null
            }(i));
            return {
                html: na(r),
                native: r,
                nodes: ra(t.child, e),
                component: o
            }
        }
        var aa = function() {
            function t(t) {
                this._raw_lContainer = t
            }
            return Object.defineProperty(t.prototype, "hasTransplantedViews", {
                get: function() {
                    return this._raw_lContainer[2]
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "views", {
                get: function() {
                    return this._raw_lContainer.slice(10).map(ea)
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "parent", {
                get: function() {
                    return ea(this._raw_lContainer[3])
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "movedViews", {
                get: function() {
                    return this._raw_lContainer[9]
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "host", {
                get: function() {
                    return this._raw_lContainer[0]
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "native", {
                get: function() {
                    return this._raw_lContainer[7]
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "next", {
                get: function() {
                    return ea(this._raw_lContainer[4])
                },
                enumerable: !0,
                configurable: !0
            }),
            t
        }();
        var sa = function() {
            function t(t, e, n, i) {
                this.__raw_opCode = t,
                this._lView = e,
                this.nodeIndex = n,
                this.type = i
            }
            return Object.defineProperty(t.prototype, "tNode", {
                get: function() {
                    return We(this._lView[1], this.nodeIndex)
                },
                enumerable: !0,
                configurable: !0
            }),
            t
        }();
        var ca = function() {
            function t(t, e) {
                this.__raw_opCodes = t,
                this.__lView = e
            }
            return Object.defineProperty(t.prototype, "operations", {
                get: function() {
                    for (var t = this.__lView, e = this.__raw_opCodes, n = [], i = 0; i < e.length; i++) {
                        var r = e[i]
                          , o = void 0;
                        if ("string" == typeof r && (o = {
                            __raw_opCode: r,
                            type: "Create Text Node",
                            nodeIndex: e[++i],
                            text: r
                        }),
                        "number" == typeof r)
                            switch (7 & r) {
                            case 1:
                                o = new sa(r,t,r >>> 17,"AppendChild");
                                break;
                            case 0:
                                o = new sa(r,t,r >>> 3,"Select");
                                break;
                            case 5:
                                var a = r >>> 3;
                                o = new sa(r,t,a,"ElementEnd");
                                break;
                            case 4:
                                (o = new sa(r,t,a = r >>> 3,"Attr")).attrName = e[++i],
                                o.attrValue = e[++i]
                            }
                        if (!o)
                            switch (r) {
                            case Ao:
                                o = {
                                    __raw_opCode: r,
                                    type: "COMMENT_MARKER",
                                    commentValue: e[++i],
                                    nodeIndex: e[++i]
                                };
                                break;
                            case Co:
                                o = {
                                    __raw_opCode: r,
                                    type: "ELEMENT_MARKER"
                                }
                            }
                        o || (o = {
                            __raw_opCode: r,
                            type: "Unknown Op Code",
                            code: r
                        }),
                        n.push(o)
                    }
                    return n
                },
                enumerable: !0,
                configurable: !0
            }),
            t
        }()
          , la = function() {
            function t(t, e, n) {
                this.__raw_opCodes = t,
                this.icus = e,
                this.__lView = n
            }
            return Object.defineProperty(t.prototype, "operations", {
                get: function() {
                    for (var t = this.__lView, e = this.__raw_opCodes, n = this.icus, i = [], r = 0; r < e.length; r++) {
                        for (var o = e[r], a = e[++r], s = "", c = r + 1; c <= r + a; c++) {
                            var l = e[c];
                            if ("string" == typeof l)
                                s += l;
                            else if ("number" == typeof l)
                                if (l < 0)
                                    s += "�" + (-l - 1) + "�";
                                else {
                                    var u = l >>> 2
                                      , d = void 0
                                      , p = void 0;
                                    switch (3 & l) {
                                    case 1:
                                        var h = e[++c]
                                          , f = e[++c];
                                        i.push({
                                            __raw_opCode: l,
                                            checkBit: o,
                                            type: "Attr",
                                            attrValue: s,
                                            attrName: h,
                                            sanitizeFn: f
                                        });
                                        break;
                                    case 0:
                                        i.push({
                                            __raw_opCode: l,
                                            checkBit: o,
                                            type: "Text",
                                            nodeIndex: u,
                                            text: s
                                        });
                                        break;
                                    case 2:
                                        p = n[d = e[++c]];
                                        var m = new sa(l,t,u,"IcuSwitch");
                                        m.tIcuIndex = d,
                                        m.checkBit = o,
                                        m.mainBinding = s,
                                        m.tIcu = p,
                                        i.push(m);
                                        break;
                                    case 3:
                                        p = n[d = e[++c]],
                                        (m = new sa(l,t,u,"IcuUpdate")).tIcuIndex = d,
                                        m.checkBit = o,
                                        m.tIcu = p,
                                        i.push(m)
                                    }
                                }
                        }
                        r += a
                    }
                    return i
                },
                enumerable: !0,
                configurable: !0
            }),
            t
        }()
          , ua = Promise.resolve(null);
        function da(t, e) {
            var n = t.contentQueries;
            if (null !== n)
                for (var i = 0; i < n.length; i += 2) {
                    var r = n[i]
                      , o = n[i + 1];
                    if (-1 !== o) {
                        var a = t.data[o];
                        ngDevMode && Bt(a.contentQueries, "contentQueries function should be defined"),
                        En(r),
                        a.contentQueries(2, e[o], o)
                    }
                }
        }
        function pa(t, e, n) {
            return Fe(e) ? e.createElement(t, n) : null === n ? e.createElement(t) : e.createElementNS(n, t)
        }
        function ha(t, e, n, i, r, o, a, s, c, l) {
            var u = ngDevMode ? Uo(e) : e.blueprint.slice();
            return u[0] = r,
            u[2] = 140 | i,
            $e(u),
            u[3] = u[15] = t,
            u[8] = n,
            u[10] = a || t && t[10],
            ngDevMode && Bt(u[10], "RendererFactory is required"),
            u[11] = s || t && t[11],
            ngDevMode && Bt(u[11], "Renderer is required"),
            u[12] = c || t && t[12] || null,
            u[9] = l || t && t[9] || null,
            u[6] = o,
            ngDevMode && Rt(2 != e.type || null !== t, !0, "Embedded views must have parentLView"),
            u[16] = 2 == e.type ? t[16] : u,
            ngDevMode && function(t) {
                Lo(t, new ia(t))
            }(u),
            u
        }
        function fa(t, e, n, i, r, o) {
            var a = n + 20
              , s = t.data[a] || function(t, e, n, i, r, o) {
                var a = ln()
                  , s = dn()
                  , c = s ? a : a && a.parent
                  , l = c && c !== e ? c : null
                  , u = t.data[n] = Aa(t, l, i, n, r, o);
                null === t.firstChild && (t.firstChild = u);
                a && (!s || null != a.child || null === u.parent && 2 !== a.type ? s || (a.next = u) : a.child = u);
                return u
            }(t, e, a, i, r, o);
            return un(s, !0),
            s
        }
        function ma(t, e, n) {
            ngDevMode && Rt(Ze(e), !0, "Should be run in creation mode"),
            An(e, e[6]);
            try {
                var i = t.viewQuery;
                null !== i && es(1, i, n);
                var r = t.template;
                null !== r && ya(t, e, r, 1, n),
                t.firstCreatePass && (t.firstCreatePass = !1),
                t.staticContentQueries && da(t, e),
                t.staticViewQueries && es(2, t.viewQuery, n);
                var o = t.components;
                null !== o && function(t, e) {
                    for (var n = 0; n < e.length; n++)
                        Ka(t, e[n])
                }(e, o)
            } catch (e) {
                throw t.firstCreatePass && (t.incompleteFirstPass = !0),
                e
            } finally {
                e[2] &= -5,
                In()
            }
        }
        function ga(t, e, n, i) {
            ngDevMode && Rt(Ze(e), !1, "Should be run in update mode");
            var r = e[2];
            if (256 != (256 & r)) {
                An(e, e[6]);
                var o = hn();
                try {
                    $e(e),
                    vn(t.bindingStartIndex),
                    null !== n && ya(t, e, n, 2, i);
                    var a = 3 == (3 & r);
                    if (!o)
                        if (a) {
                            var s = t.preOrderCheckHooks;
                            null !== s && Bn(e, s, null)
                        } else {
                            var c = t.preOrderHooks;
                            null !== c && zn(e, c, 0, null),
                            Gn(e, 0)
                        }
                    if (function(t) {
                        for (var e = bo(t); null !== e; e = wo(e))
                            if (e[2]) {
                                var n = e[9];
                                ngDevMode && Bt(n, "Transplanted View flags set but missing MOVED_VIEWS");
                                for (var i = 0; i < n.length; i++) {
                                    var r = n[i]
                                      , o = r[3];
                                    ngDevMode && Pe(o),
                                    0 == (1024 & r[2]) && tn(o, 1),
                                    r[2] |= 1024
                                }
                            }
                    }(e),
                    function(t) {
                        for (var e = bo(t); null !== e; e = wo(e))
                            for (var n = 10; n < e.length; n++) {
                                var i = e[n]
                                  , r = i[1];
                                ngDevMode && Bt(r, "TView must be allocated"),
                                Je(i) && ga(r, i, r.template, i[8])
                            }
                    }(e),
                    null !== t.contentQueries && da(t, e),
                    !o)
                        if (a) {
                            var l = t.contentCheckHooks;
                            null !== l && Bn(e, l)
                        } else {
                            var u = t.contentHooks;
                            null !== u && zn(e, u, 1),
                            Gn(e, 1)
                        }
                    !function(t, e) {
                        ngDevMode && Nt(t, e[1], "`LView` is not associated with the `TView`!");
                        try {
                            var n = t.expandoInstructions;
                            if (null !== n)
                                for (var i = t.expandoStartIndex, r = -1, o = 0; o < n.length; o++) {
                                    var a = n[o];
                                    if ("number" == typeof a) {
                                        if (a <= 0)
                                            Rn(0 - a),
                                            r = i += 9 + n[++o];
                                        else
                                            i += a
                                    } else {
                                        if (null !== a)
                                            wn(i, r),
                                            a(2, e[r]);
                                        r++
                                    }
                                }
                        } finally {
                            Rn(-1)
                        }
                    }(t, e);
                    var d = t.components;
                    null !== d && function(t, e) {
                        for (var n = 0; n < e.length; n++)
                            Ya(t, e[n])
                    }(e, d);
                    var p = t.viewQuery;
                    if (null !== p && es(2, p, i),
                    !o)
                        if (a) {
                            var h = t.viewCheckHooks;
                            null !== h && Bn(e, h)
                        } else {
                            var f = t.viewHooks;
                            null !== f && zn(e, f, 2),
                            Gn(e, 2)
                        }
                    !0 === t.firstUpdatePass && (t.firstUpdatePass = !1),
                    o || (e[2] &= -73),
                    1024 & e[2] && (e[2] &= -1025,
                    tn(e[3], -1))
                } finally {
                    In()
                }
            }
        }
        function va(t, e, n, i) {
            var r = e[10]
              , o = !hn()
              , a = Ze(e);
            try {
                o && !a && r.begin && r.begin(),
                a && ma(t, e, i),
                ga(t, e, n, i)
            } finally {
                o && !a && r.end && r.end()
            }
        }
        function ya(t, e, n, i, r) {
            var o = Dn();
            try {
                Rn(-1),
                2 & i && e.length > 20 && Eo(t, e, 0, hn()),
                n(i, r)
            } finally {
                Rn(o)
            }
        }
        function ba(t, e, n) {
            if (xe(e))
                for (var i = e.directiveStart, r = e.directiveEnd, o = i; o < r; o++) {
                    var a = t.data[o];
                    a.contentQueries && a.contentQueries(1, n[o], o)
                }
        }
        function wa(t, e, n) {
            nn() && (function(t, e, n, i) {
                var r = n.directiveStart
                  , o = n.directiveEnd;
                t.firstCreatePass || mi(n, e);
                Kr(i, e);
                for (var a = n.initialInputs, s = r; s < o; s++) {
                    var c = t.data[s]
                      , l = Ce(c);
                    l && (ngDevMode && Yn(n, 3),
                    za(e, n, c));
                    var u = Ci(e, t, s, n);
                    if (Kr(u, e),
                    null !== a && Ha(e, s - r, u, c, n, a),
                    l)
                        Xe(n.index, e)[8] = u
                }
            }(t, e, n, Ge(n, e)),
            128 == (128 & n.flags) && function(t, e, n) {
                var i = n.directiveStart
                  , r = n.directiveEnd
                  , o = t.expandoInstructions
                  , a = t.firstCreatePass
                  , s = n.index - 20
                  , c = en.lFrame.currentDirectiveIndex;
                try {
                    Rn(s);
                    for (var l = i; l < r; l++) {
                        var u = t.data[l]
                          , d = e[l];
                        Sn(l),
                        null !== u.hostBindings || 0 !== u.hostVars || null !== u.hostAttrs ? Na(u, d) : a && o.push(null)
                    }
                } finally {
                    Rn(-1),
                    Sn(c)
                }
            }(t, e, n))
        }
        function Sa(t, e, n) {
            void 0 === n && (n = Ge);
            var i = e.localNames;
            if (null !== i)
                for (var r = e.index + 1, o = 0; o < i.length; o += 2) {
                    var a = i[o + 1]
                      , s = -1 === a ? n(e, t) : t[a];
                    t[r++] = s
                }
        }
        function xa(t) {
            var e = t.tView;
            return null === e || e.incompleteFirstPass ? t.tView = Ma(1, -1, t.template, t.decls, t.vars, t.directiveDefs, t.pipeDefs, t.viewQuery, t.schemas, t.consts) : e
        }
        function Ma(t, e, n, i, r, o, a, s, c, l) {
            ngDevMode && ngDevMode.tView++;
            var u, d = 20 + i, p = d + r, h = function(t, e) {
                for (var n = ngDevMode ? new Yo : [], i = 0; i < e; i++)
                    n.push(i < t ? null : mo);
                return n
            }(d, p);
            return h[1] = ngDevMode ? new zo(t,e,h,n,null,s,null,(u = h,
            void 0 === qo && (qo = new Xo),
            qo.concat(u)).fill(null, d),d,p,null,!0,!0,!1,!1,null,null,null,null,null,null,null,null,null,null,"function" == typeof o ? o() : o,"function" == typeof a ? a() : a,null,c,l,!1) : {
                type: t,
                id: e,
                blueprint: h,
                template: n,
                queries: null,
                viewQuery: s,
                node: null,
                data: h.slice().fill(null, d),
                bindingStartIndex: d,
                expandoStartIndex: p,
                expandoInstructions: null,
                firstCreatePass: !0,
                firstUpdatePass: !0,
                staticViewQueries: !1,
                staticContentQueries: !1,
                preOrderHooks: null,
                preOrderCheckHooks: null,
                contentHooks: null,
                contentCheckHooks: null,
                viewHooks: null,
                viewCheckHooks: null,
                destroyHooks: null,
                cleanup: null,
                contentQueries: null,
                components: null,
                directiveRegistry: "function" == typeof o ? o() : o,
                pipeRegistry: "function" == typeof a ? a() : a,
                firstChild: null,
                schemas: c,
                consts: l,
                incompleteFirstPass: !1
            }
        }
        function Ea(t, e) {
            return new Error("Renderer: " + t + " [" + ai(e) + "]")
        }
        function Ca(t, e, n) {
            if (Fe(t)) {
                var i = n === Ot.ShadowDom;
                return t.selectRootElement(e, i)
            }
            var r = "string" == typeof e ? t.querySelector(e) : e;
            return ngDevMode && function(t, e) {
                if (!t)
                    throw Ea("string" == typeof e ? "Host node with selector not found:" : "Host node is required:", e)
            }(r, e),
            r.textContent = "",
            r
        }
        function Aa(t, e, n, i, r, o) {
            ngDevMode && ngDevMode.tNode++;
            var a = e ? e.injectorIndex : -1;
            return ngDevMode ? new Go(t,n,i,a,-1,-1,-1,null,0,0,r,o,null,null,void 0,null,null,null,null,null,null,e,null,null,null,void 0,null,null,void 0,0,0) : {
                type: n,
                index: i,
                injectorIndex: a,
                directiveStart: -1,
                directiveEnd: -1,
                directiveStylingLast: -1,
                propertyBindings: null,
                flags: 0,
                providerIndexes: 0,
                tagName: r,
                attrs: o,
                mergedAttrs: null,
                localNames: null,
                initialInputs: void 0,
                inputs: null,
                outputs: null,
                tViews: null,
                next: null,
                projectionNext: null,
                child: null,
                parent: e,
                projection: null,
                styles: null,
                stylesWithoutHost: null,
                residualStyles: void 0,
                classes: null,
                classesWithoutHost: null,
                residualClasses: void 0,
                classBindings: 0,
                styleBindings: 0
            }
        }
        function Ta(t, e, n) {
            for (var i in t)
                if (t.hasOwnProperty(i)) {
                    n = null === n ? {} : n;
                    var r = t[i];
                    n.hasOwnProperty(i) ? n[i].push(e, r) : n[i] = [e, r]
                }
            return n
        }
        function Oa(t, e, n, i, r, o, a, s) {
            ngDevMode && jt(r, mo, "Incoming value should never be NO_CHANGE.");
            var c, l = Ge(e, n), u = e.inputs;
            if (!s && null != u && (c = u[i]))
                cs(t, n, c, i, r),
                Me(e) && function(t, e) {
                    ngDevMode && ke(t);
                    var n = Xe(e, t);
                    16 & n[2] || (n[2] |= 64)
                }(n, e.index),
                ngDevMode && Pa(n, l, e.type, c, r);
            else if (3 === e.type) {
                if (i = function(t) {
                    return "class" === t ? "className" : "for" === t ? "htmlFor" : "formaction" === t ? "formAction" : "innerHtml" === t ? "innerHTML" : "readonly" === t ? "readOnly" : "tabindex" === t ? "tabIndex" : t
                }(i),
                ngDevMode) {
                    if (function(t) {
                        if (t.toLowerCase().startsWith("on")) {
                            var e = "Binding to event property '" + t + "' is disallowed for security reasons, please use (" + t.slice(2) + ")=...\nIf '" + t + "' is a directive input, make sure the directive is imported by the current module.";
                            throw new Error(e)
                        }
                    }(i),
                    !function(t, e, n, i, r) {
                        if (null === t.schemas)
                            return !0;
                        if (Ia(t, e, r.tagName) || i in n || Qn(i))
                            return !0;
                        return "undefined" == typeof Node || null === Node || !(n instanceof Node)
                    }(t, n, l, i, e))
                        return void ka(i, e);
                    ngDevMode.rendererSetProperty++
                }
                r = null != a ? a(r, e.tagName || "", i) : r,
                Fe(o) ? o.setProperty(l, i, r) : Qn(i) || (l.setProperty ? l.setProperty(i, r) : l[i] = r)
            } else
                0 === e.type && ngDevMode && !Ia(t, n, e.tagName) && ka(i, e)
        }
        function _a(t, e, n, i, r) {
            var o, a = t[11];
            i = Gr(i);
            var s = Wr(r);
            if (3 === n)
                null == r ? Fe(a) ? a.removeAttribute(e, i) : e.removeAttribute(i) : Fe(a) ? a.setAttribute(e, i, s) : e.setAttribute(i, s);
            else {
                var c = "bindings=" + JSON.stringify(((o = {})[i] = s,
                o), null, 2);
                Fe(a) ? a.setValue(e, c) : e.textContent = c
            }
        }
        function Pa(t, e, n, i, r) {
            if (3 === n || 0 === n)
                for (var o = 0; o < i.length; o += 2)
                    _a(t, e, n, i[o + 1], r)
        }
        function Ia(t, e, n) {
            var i = t.schemas;
            if (null !== i)
                for (var r = 0; r < i.length; r++) {
                    var o = i[r];
                    if (o === Ni || o === Li && n && n.indexOf("-") > -1)
                        return !0
                }
            return !1
        }
        function ka(t, e) {
            console.warn("Can't bind to '" + t + "' since it isn't a known property of '" + e.tagName + "'.")
        }
        function Da(t, e, n, i) {
            ngDevMode && De(t);
            var r = !1;
            if (nn()) {
                var o = function(t, e, n) {
                    ngDevMode && De(t),
                    ngDevMode && Yn(n, 3, 4, 0);
                    var i = t.directiveRegistry
                      , r = null;
                    if (i)
                        for (var o = 0; o < i.length; o++) {
                            var a = i[o];
                            uo(n, a.selectors, !1) && (r || (r = ngDevMode ? new Ko : []),
                            bi(mi(n, e), t, a.type),
                            Ce(a) ? (2 & n.flags && to(n),
                            Va(t, n),
                            r.unshift(a)) : r.push(a))
                        }
                    return r
                }(t, e, n)
                  , a = null === i ? null : {
                    "": -1
                };
                if (null !== o) {
                    var s = 0;
                    r = !0,
                    Ua(n, t.data.length, o.length);
                    for (var c = 0; c < o.length; c++) {
                        (d = o[c]).providersResolver && d.providersResolver(d)
                    }
                    ja(t, n, o.length);
                    var l = !1
                      , u = !1;
                    for (c = 0; c < o.length; c++) {
                        var d = o[c];
                        n.mergedAttrs = $n(n.mergedAttrs, d.hostAttrs),
                        Ba(t, e, d),
                        Fa(t.data.length - 1, d, a),
                        null !== d.contentQueries && (n.flags |= 8),
                        null === d.hostBindings && null === d.hostAttrs && 0 === d.hostVars || (n.flags |= 128),
                        !l && (d.onChanges || d.onInit || d.doCheck) && ((t.preOrderHooks || (t.preOrderHooks = [])).push(n.index - 20),
                        l = !0),
                        u || !d.onChanges && !d.doCheck || ((t.preOrderCheckHooks || (t.preOrderCheckHooks = [])).push(n.index - 20),
                        u = !0),
                        Ra(t, d),
                        s += d.hostVars
                    }
                    !function(t, e) {
                        ngDevMode && De(t);
                        for (var n = e.directiveStart, i = e.directiveEnd, r = t.data, o = e.attrs, a = ngDevMode ? new Qo : [], s = null, c = null, l = n; l < i; l++) {
                            var u = r[l]
                              , d = u.inputs
                              , p = null === o || oo(e) ? null : Wa(d, o);
                            a.push(p),
                            s = Ta(d, l, s),
                            c = Ta(u.outputs, l, c)
                        }
                        null !== s && (s.hasOwnProperty("class") && (e.flags |= 16),
                        s.hasOwnProperty("style") && (e.flags |= 32)),
                        e.initialInputs = a,
                        e.inputs = s,
                        e.outputs = c
                    }(t, n),
                    La(t, e, s)
                }
                a && function(t, e, n) {
                    if (e)
                        for (var i = t.localNames = ngDevMode ? new Jo : [], r = 0; r < e.length; r += 2) {
                            var o = n[e[r + 1]];
                            if (null == o)
                                throw new Error("Export of name '" + e[r + 1] + "' not found!");
                            i.push(e[r], o)
                        }
                }(n, i, a)
            }
            return n.mergedAttrs = $n(n.mergedAttrs, n.attrs),
            r
        }
        function Ra(t, e) {
            ngDevMode && De(t);
            var n = t.expandoInstructions;
            n.push(e.hostBindings),
            0 !== e.hostVars && n.push(e.hostVars)
        }
        function La(t, e, n) {
            ngDevMode && De(t),
            ngDevMode && Nt(t, e[1], "`LView` must be associated with `TView`!");
            for (var i = 0; i < n; i++)
                e.push(mo),
                t.blueprint.push(mo),
                t.data.push(null)
        }
        function Na(t, e) {
            null !== t.hostBindings && t.hostBindings(1, e)
        }
        function ja(t, e, n) {
            ngDevMode && Rt(t.firstCreatePass, !0, "Expando block should only be generated on first create pass.");
            var i = 20 - e.index
              , r = 65535 & e.providerIndexes
              , o = t.data.length - r;
            (t.expandoInstructions || (t.expandoInstructions = [])).push(i, o, n)
        }
        function Va(t, e) {
            ngDevMode && De(t),
            e.flags |= 2,
            (t.components || (t.components = ngDevMode ? new Zo : [])).push(e.index)
        }
        function Fa(t, e, n) {
            if (n) {
                if (e.exportAs)
                    for (var i = 0; i < e.exportAs.length; i++)
                        n[e.exportAs[i]] = t;
                Ce(e) && (n[""] = t)
            }
        }
        function Ua(t, e, n) {
            ngDevMode && Lt(n, t.directiveEnd - t.directiveStart, "Reached the max number of directives"),
            t.flags |= 1,
            t.directiveStart = e,
            t.directiveEnd = e + n,
            t.providerIndexes = e
        }
        function Ba(t, e, n) {
            t.data.push(n);
            var i = n.factory || (n.factory = ye(n.type, !0))
              , r = new qn(i,Ce(n),null);
            t.blueprint.push(r),
            e.push(r)
        }
        function za(t, e, n) {
            var i = Ge(e, t)
              , r = xa(n)
              , o = t[10]
              , a = Za(t, ha(t, r, null, n.onPush ? 64 : 16, i, e, o, o.createRenderer(i, n)));
            t[e.index] = a
        }
        function Ga(t, e, n, i, r, o) {
            ngDevMode && jt(i, mo, "Incoming value should never be NO_CHANGE."),
            ngDevMode && function(t) {
                if (t.toLowerCase().startsWith("on")) {
                    var e = "Binding to event attribute '" + t + "' is disallowed for security reasons, please use (" + t.slice(2) + ")=...";
                    throw new Error(e)
                }
            }(n);
            var a = Ge(t, e)
              , s = e[11];
            if (null == i)
                ngDevMode && ngDevMode.rendererRemoveAttribute++,
                Fe(s) ? s.removeAttribute(a, n, o) : a.removeAttribute(n);
            else {
                ngDevMode && ngDevMode.rendererSetAttribute++;
                var c = null == r ? oi(i) : r(i, t.tagName || "", n);
                Fe(s) ? s.setAttribute(a, n, c, o) : o ? a.setAttributeNS(o, n, c) : a.setAttribute(n, c)
            }
        }
        function Ha(t, e, n, i, r, o) {
            var a = o[e];
            if (null !== a)
                for (var s = i.setInput, c = 0; c < a.length; ) {
                    var l = a[c++]
                      , u = a[c++]
                      , d = a[c++];
                    if (null !== s ? i.setInput(n, d, l, u) : n[u] = d,
                    ngDevMode)
                        _a(t, Ge(r, t), r.type, u, d)
                }
        }
        function Wa(t, e) {
            for (var n = null, i = 0; i < e.length; ) {
                var r = e[i];
                if (0 !== r)
                    if (5 !== r) {
                        if ("number" == typeof r)
                            break;
                        t.hasOwnProperty(r) && (null === n && (n = []),
                        n.push(r, t[r], e[i + 1])),
                        i += 2
                    } else
                        i += 2;
                else
                    i += 4
            }
            return n
        }
        var qa = ("undefined" == typeof ngDevMode || ngDevMode) && at() && zr("LContainer");
        function Xa(t, e, n, i) {
            ngDevMode && ke(e),
            ngDevMode && !Fe(e[11]) && Gt(n);
            var r = new (ngDevMode ? qa : Array)(t,!0,!1,e,null,0,i,n,null,null);
            return ngDevMode && Rt(r.length, 10, "Should allocate correct number of slots for LContainer header."),
            ngDevMode && function(t) {
                Lo(t, new aa(t))
            }(r),
            r
        }
        function Ya(t, e) {
            ngDevMode && Rt(Ze(t), !1, "Should be run in update mode");
            var n = Xe(e, t);
            if (Je(n)) {
                var i = n[1];
                80 & n[2] ? ga(i, n, i.template, n[8]) : n[5] > 0 && function t(e) {
                    for (var n = bo(e); null !== n; n = wo(n))
                        for (var i = 10; i < n.length; i++) {
                            var r = n[i];
                            if (1024 & r[2]) {
                                var o = r[1];
                                ngDevMode && Bt(o, "TView must be allocated"),
                                ga(o, r, o.template, r[8])
                            } else
                                r[5] > 0 && t(r)
                        }
                    var a = e[1].components;
                    if (null !== a)
                        for (i = 0; i < a.length; i++) {
                            var s = Xe(a[i], e);
                            Je(s) && s[5] > 0 && t(s)
                        }
                }(n)
            }
        }
        function Ka(t, e) {
            ngDevMode && Rt(Ze(t), !0, "Should be run in creation mode");
            var n = Xe(e, t)
              , i = n[1];
            !function(t, e) {
                for (var n = e.length; n < t.blueprint.length; n++)
                    e.push(t.blueprint[n])
            }(i, n),
            ma(i, n, n[8])
        }
        function Za(t, e) {
            return t[13] ? t[14][4] = e : t[13] = e,
            t[14] = e,
            e
        }
        function Ja(t) {
            for (; t; ) {
                t[2] |= 64;
                var e = go(t);
                if (Ae(t) && !e)
                    return t;
                t = e
            }
            return null
        }
        function Qa(t) {
            for (var e = 0; e < t.components.length; e++) {
                var n = t.components[e]
                  , i = Ke(n)
                  , r = i[1];
                va(r, i, r.template, n)
            }
        }
        function $a(t, e, n) {
            var i = e[10];
            i.begin && i.begin();
            try {
                ga(t, e, t.template, n)
            } catch (t) {
                throw ss(e, t),
                t
            } finally {
                i.end && i.end()
            }
        }
        function ts(t) {
            Qa(t[8])
        }
        function es(t, e, n) {
            ngDevMode && Bt(e, "View queries function to execute must be defined."),
            En(0),
            e(t, n)
        }
        function ns(t, e, n, i) {
            for (var r = [], o = 4; o < arguments.length; o++)
                r[o - 4] = arguments[o];
            if (null === t[i] && (null == e.inputs || !e.inputs[n])) {
                var a = e.propertyBindings || (e.propertyBindings = []);
                a.push(i);
                var s = n;
                r.length > 0 && (s += "�" + r.join("�")),
                t[i] = s
            }
        }
        var is = ua;
        function rs(t) {
            return t[7] || (t[7] = ngDevMode ? new $o : [])
        }
        function os(t) {
            return t.cleanup || (t.cleanup = ngDevMode ? new ta : [])
        }
        function as(t, e, n) {
            return (null === t || Ce(t)) && (n = function(t) {
                for (; Array.isArray(t); ) {
                    if ("object" == typeof t[1])
                        return t;
                    t = t[0]
                }
                return null
            }(n[e.index])),
            n[11]
        }
        function ss(t, e) {
            var n = t[9]
              , i = n ? n.get(Ri, null) : null;
            i && i.handleError(e)
        }
        function cs(t, e, n, i, r) {
            for (var o = 0; o < n.length; ) {
                var a = n[o++]
                  , s = n[o++]
                  , c = e[a];
                ngDevMode && Ht(e, a);
                var l = t.data[a];
                null !== l.setInput ? l.setInput(c, r, i, s) : c[s] = r
            }
        }
        function ls(t, e, n) {
            ngDevMode && jt(n, mo, "value should not be NO_CHANGE"),
            ngDevMode && Ht(t, e + 20);
            var i = ze(e, t);
            ngDevMode && Bt(i, "native element should exist"),
            ngDevMode && ngDevMode.rendererSetText++;
            var r = t[11];
            Fe(r) ? r.setValue(i, n) : i.textContent = n
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function us(t, e) {
            ngDevMode && ke(e);
            var n = e[3];
            return -1 === t.index ? Se(n) ? n : null : (ngDevMode && Pe(n),
            n)
        }
        function ds(t, e) {
            var n = us(t, e);
            return n ? Cs(e[11], n[7]) : null
        }
        function ps(t, e, n, i, r) {
            if (null != i) {
                var o = void 0
                  , a = !1;
                Se(i) ? o = i : we(i) && (a = !0,
                ngDevMode && Bt(i[0], "HOST must be defined for a component LView"),
                i = i[0]);
                var s = Be(i);
                ngDevMode && !Fe(e) && Gt(s),
                0 === t && null !== n ? null == r ? Ms(e, n, s) : xs(e, n, s, r || null) : 1 === t && null !== n ? xs(e, n, s, r || null) : 2 === t ? _s(e, s, a) : 3 === t && (ngDevMode && ngDevMode.rendererDestroyNode++,
                e.destroyNode(s)),
                null != o && function(t, e, n, i, r) {
                    ngDevMode && Pe(n);
                    var o = n[7]
                      , a = Be(n);
                    o !== a && ps(e, t, i, o, r);
                    for (var s = 10; s < n.length; s++) {
                        var c = n[s];
                        Is(c[1], c, t, e, i, o)
                    }
                }(e, t, o, n, r)
            }
        }
        function hs(t, e) {
            return ngDevMode && ngDevMode.rendererCreateTextNode++,
            ngDevMode && ngDevMode.rendererSetText++,
            Fe(e) ? e.createText(t) : e.createTextNode(t)
        }
        function fs(t, e, n, i) {
            var r = ds(t.node, e);
            (ngDevMode && Xn(t.node, 2),
            r) && Is(t, e, e[11], n ? 1 : 2, r, i)
        }
        function ms(t, e, n, i) {
            ngDevMode && ke(e),
            ngDevMode && Pe(n);
            var r = 10 + i
              , o = n.length;
            i > 0 && (n[r - 1][4] = e),
            i < o - 10 ? (e[4] = n[r],
            Yt(n, 10 + i, e)) : (n.push(e),
            e[4] = null),
            e[3] = n;
            var a = e[17];
            null !== a && n !== a && function(t, e) {
                ngDevMode && Bt(e, "LView required"),
                ngDevMode && Pe(t);
                var n = t[9]
                  , i = e[3];
                ngDevMode && Pe(i);
                var r = i[3][16];
                ngDevMode && Bt(r, "Missing insertedComponentLView");
                var o = e[16];
                ngDevMode && Bt(o, "Missing declaredComponentLView"),
                o !== r && (t[2] = !0);
                null === n ? t[9] = [e] : n.push(e)
            }(a, e);
            var s = e[19];
            null !== s && s.insertView(t),
            e[2] |= 128
        }
        function gs(t, e) {
            ngDevMode && Pe(t),
            ngDevMode && Bt(t[9], "A projected view should belong to a non-empty projected views collection");
            var n = t[9]
              , i = n.indexOf(e)
              , r = e[3];
            ngDevMode && Pe(r),
            1024 & e[2] && tn(r, -1),
            n.splice(i, 1)
        }
        function vs(t, e) {
            if (!(t.length <= 10)) {
                var n = 10 + e
                  , i = t[n];
                if (i) {
                    var r = i[17];
                    null !== r && r !== t && gs(r, i),
                    e > 0 && (t[n - 1][4] = i[4]);
                    var o = Kt(t, 10 + e);
                    fs(i[1], i, !1, null);
                    var a = o[19];
                    null !== a && a.detachView(o[1]),
                    i[3] = null,
                    i[4] = null,
                    i[2] &= -129
                }
                return i
            }
        }
        function ys(t, e) {
            if (!(256 & e[2])) {
                var n = e[11];
                Fe(n) && n.destroyNode && Is(t, e, n, 3, null, null),
                function(t) {
                    var e = t[13];
                    if (!e)
                        return ws(t[1], t);
                    for (; e; ) {
                        var n = null;
                        if (we(e))
                            n = e[13];
                        else {
                            ngDevMode && Pe(e);
                            var i = e[10];
                            i && (n = i)
                        }
                        if (!n) {
                            for (; e && !e[4] && e !== t; )
                                we(e) && ws(e[1], e),
                                e = bs(e, t);
                            null === e && (e = t),
                            we(e) && ws(e[1], e),
                            n = e && e[4]
                        }
                        e = n
                    }
                }(e)
            }
        }
        function bs(t, e) {
            var n;
            return we(t) && (n = t[6]) && 2 === n.type ? us(n, t) : t[3] === e ? null : t[3]
        }
        function ws(t, e) {
            if (!(256 & e[2])) {
                e[2] &= -129,
                e[2] |= 256,
                function(t, e) {
                    var n;
                    if (null != t && null != (n = t.destroyHooks))
                        for (var i = 0; i < n.length; i += 2) {
                            var r = e[n[i]];
                            if (!(r instanceof qn)) {
                                var o = n[i + 1];
                                if (Array.isArray(o))
                                    for (var a = 0; a < o.length; a += 2)
                                        o[a + 1].call(r[o[a]]);
                                else
                                    o.call(r)
                            }
                        }
                }(t, e),
                function(t, e) {
                    var n = t.cleanup;
                    if (null !== n) {
                        for (var i = e[7], r = 0; r < n.length - 1; r += 2)
                            if ("string" == typeof n[r]) {
                                var o = n[r + 1]
                                  , a = "function" == typeof o ? o(e) : Be(e[o])
                                  , s = i[n[r + 2]]
                                  , c = n[r + 3];
                                "boolean" == typeof c ? a.removeEventListener(n[r], s, c) : c >= 0 ? i[c]() : i[-c].unsubscribe(),
                                r += 2
                            } else {
                                var l = i[n[r + 1]];
                                n[r].call(l)
                            }
                        e[7] = null
                    }
                }(t, e);
                var n = e[6];
                n && 3 === n.type && Fe(e[11]) && (ngDevMode && ngDevMode.rendererDestroy++,
                e[11].destroy());
                var i = e[17];
                if (null !== i && Se(e[3])) {
                    i !== e[3] && gs(i, e);
                    var r = e[19];
                    null !== r && r.detachView(t)
                }
            }
        }
        function Ss(t, e, n) {
            for (var i = e.parent; null != i && (4 === i.type || 5 === i.type); )
                i = (e = i).parent;
            if (null == i) {
                var r = n[6];
                return 2 === r.type ? ds(r, n) : (ngDevMode && Yn(r, 3),
                n[0])
            }
            if (e && 5 === e.type && 4 & e.flags)
                return Ge(e, n).parentNode;
            if (ngDevMode && Xn(i, 3),
            2 & i.flags) {
                var o = t.data
                  , a = o[o[i.index].directiveStart].encapsulation;
                if (a !== Ot.ShadowDom && a !== Ot.Native)
                    return null
            }
            return Ge(i, n)
        }
        function xs(t, e, n, i) {
            ngDevMode && ngDevMode.rendererInsertBefore++,
            Fe(t) ? t.insertBefore(e, n, i) : e.insertBefore(n, i, !0)
        }
        function Ms(t, e, n) {
            ngDevMode && ngDevMode.rendererAppendChild++,
            ngDevMode && Bt(e, "parent node must be defined"),
            Fe(t) ? t.appendChild(e, n) : e.appendChild(n)
        }
        function Es(t, e, n, i) {
            null !== i ? xs(t, e, n, i) : Ms(t, e, n)
        }
        function Cs(t, e) {
            return Fe(t) ? t.parentNode(e) : e.parentNode
        }
        function As(t, e) {
            if (2 === t.type) {
                var n = us(t, e);
                return null === n ? null : Os(n.indexOf(e, 10) - 10, n)
            }
            return 4 === t.type || 5 === t.type ? Ge(t, e) : null
        }
        function Ts(t, e, n, i) {
            var r = Ss(t, i, e);
            if (null != r) {
                var o = e[11]
                  , a = As(i.parent || e[6], e);
                if (Array.isArray(n))
                    for (var s = 0; s < n.length; s++)
                        Es(o, r, n[s], a);
                else
                    Es(o, r, n, a)
            }
        }
        function Os(t, e) {
            var n = 10 + t + 1;
            if (n < e.length) {
                var i = e[n]
                  , r = i[1].firstChild;
                if (null !== r)
                    return function t(e, n) {
                        if (null !== n) {
                            ngDevMode && Yn(n, 3, 0, 4, 5, 1);
                            var i = n.type;
                            if (3 === i)
                                return Ge(n, e);
                            if (0 === i)
                                return Os(-1, e[n.index]);
                            if (4 === i || 5 === i) {
                                var r = n.child;
                                if (null !== r)
                                    return t(e, r);
                                var o = e[n.index];
                                return Se(o) ? Os(-1, o) : Be(o)
                            }
                            var a = e[16]
                              , s = a[6]
                              , c = go(a)
                              , l = s.projection[n.projection];
                            return null != l ? t(c, l) : t(e, n.next)
                        }
                        return null
                    }(i, r)
            }
            return e[7]
        }
        function _s(t, e, n) {
            var i = Cs(t, e);
            i && function(t, e, n, i) {
                Fe(t) ? t.removeChild(e, n, i) : e.removeChild(n)
            }(t, i, e, n)
        }
        function Ps(t, e, n, i, r, o, a) {
            for (; null != n; ) {
                ngDevMode && Te(n, i),
                ngDevMode && Yn(n, 0, 3, 4, 1, 1, 5);
                var s = i[n.index]
                  , c = n.type;
                a && 0 === e && (s && Kr(Be(s), i),
                n.flags |= 4),
                64 != (64 & n.flags) && (4 === c || 5 === c ? (Ps(t, e, n.child, i, r, o, !1),
                ps(e, t, r, s, o)) : 1 === c ? Ds(t, e, i, n, r, o) : (ngDevMode && Yn(n, 3, 0),
                ps(e, t, r, s, o))),
                n = a ? n.projectionNext : n.next
            }
        }
        function Is(t, e, n, i, r, o) {
            ngDevMode && Xn(t.node, 2),
            Ps(n, i, t.node.child, e, r, o, !1)
        }
        function ks(t, e, n) {
            Ds(e[11], 0, e, n, Ss(t, n, e), As(n.parent || e[6], e))
        }
        function Ds(t, e, n, i, r, o) {
            var a = n[16]
              , s = a[6];
            ngDevMode && Rt(typeof i.projection, "number", "expecting projection index");
            var c = s.projection[i.projection];
            if (Array.isArray(c))
                for (var l = 0; l < c.length; l++) {
                    ps(e, t, r, c[l], o)
                }
            else
                Ps(t, e, c, a[3], r, o, !0)
        }
        function Rs(t, e, n) {
            ngDevMode && Dt(n, "'newValue' should be a string"),
            Fe(t) ? t.setAttribute(e, "style", n) : e.style.cssText = n,
            ngDevMode && ngDevMode.rendererSetStyle++
        }
        function Ls(t, e, n) {
            ngDevMode && Dt(n, "'newValue' should be a string"),
            Fe(t) ? "" === n ? t.removeAttribute(e, "class") : t.setAttribute(e, "class", n) : e.className = n,
            ngDevMode && ngDevMode.rendererSetClassName++
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Ns, js, Vs, Fs = function() {
            function t(t, e) {
                this._lView = t,
                this._cdRefInjectingView = e,
                this._appRef = null,
                this._viewContainerRef = null
            }
            return Object.defineProperty(t.prototype, "rootNodes", {
                get: function() {
                    var t = this._lView;
                    if (null == t[0]) {
                        var e = t[6];
                        return function t(e, n, r, o, a) {
                            void 0 === a && (a = !1);
                            for (; null !== r; ) {
                                ngDevMode && Yn(r, 3, 0, 1, 4, 5);
                                var s = n[r.index];
                                if (null !== s && o.push(Be(s)),
                                Se(s))
                                    for (var c = 10; c < s.length; c++) {
                                        var l = s[c]
                                          , u = l[1].firstChild;
                                        null !== u && t(l[1], l, u, o)
                                    }
                                var d = r.type;
                                if (4 === d || 5 === d)
                                    t(e, n, r.child, o);
                                else if (1 === d) {
                                    var p = n[16]
                                      , h = p[6]
                                      , f = r.projection;
                                    ngDevMode && Bt(h.projection, "Components with projection nodes (<ng-content>) must have projection slots defined.");
                                    var m = h.projection[f];
                                    if (Array.isArray(m))
                                        o.push.apply(o, Object(i.h)(m));
                                    else {
                                        var g = go(p);
                                        ngDevMode && Bt(g, "Component views should always have a parent view (component's host view)"),
                                        t(g[1], g, m, o, !0)
                                    }
                                }
                                r = a ? r.projectionNext : r.next
                            }
                            return o
                        }/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
                        (t[1], t, e.child, [])
                    }
                    return []
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "context", {
                get: function() {
                    return this._lView[8]
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "destroyed", {
                get: function() {
                    return 256 == (256 & this._lView[2])
                },
                enumerable: !0,
                configurable: !0
            }),
            t.prototype.destroy = function() {
                if (this._appRef)
                    this._appRef.detachView(this);
                else if (this._viewContainerRef) {
                    var t = this._viewContainerRef.indexOf(this);
                    t > -1 && this._viewContainerRef.detach(t),
                    this._viewContainerRef = null
                }
                ys(this._lView[1], this._lView)
            }
            ,
            t.prototype.onDestroy = function(t) {
                var e, n, i;
                e = this._lView[1],
                n = this._lView,
                i = t,
                rs(n).push(i),
                e.firstCreatePass && os(e).push(n[7].length - 1, null)
            }
            ,
            t.prototype.markForCheck = function() {
                Ja(this._cdRefInjectingView || this._lView)
            }
            ,
            t.prototype.detach = function() {
                this._lView[2] &= -129
            }
            ,
            t.prototype.reattach = function() {
                this._lView[2] |= 128
            }
            ,
            t.prototype.detectChanges = function() {
                $a(this._lView[1], this._lView, this.context)
            }
            ,
            t.prototype.checkNoChanges = function() {
                !function(t, e, n) {
                    fn(!0);
                    try {
                        $a(t, e, n)
                    } finally {
                        fn(!1)
                    }
                }(this._lView[1], this._lView, this.context)
            }
            ,
            t.prototype.attachToViewContainerRef = function(t) {
                if (this._appRef)
                    throw new Error("This view is already attached directly to the ApplicationRef!");
                this._viewContainerRef = t
            }
            ,
            t.prototype.detachFromAppRef = function() {
                var t, e;
                this._appRef = null,
                t = this._lView[1],
                e = this._lView,
                Is(t, e, e[11], 2, null, null)
            }
            ,
            t.prototype.attachToAppRef = function(t) {
                if (this._viewContainerRef)
                    throw new Error("This view is already attached to a ViewContainer!");
                this._appRef = t
            }
            ,
            t
        }(), Us = function(t) {
            function e(e) {
                var n = t.call(this, e) || this;
                return n._view = e,
                n
            }
            return Object(i.c)(e, t),
            e.prototype.detectChanges = function() {
                ts(this._view)
            }
            ,
            e.prototype.checkNoChanges = function() {
                !function(t) {
                    fn(!0);
                    try {
                        ts(t)
                    } finally {
                        fn(!1)
                    }
                }(this._view)
            }
            ,
            Object.defineProperty(e.prototype, "context", {
                get: function() {
                    return null
                },
                enumerable: !0,
                configurable: !0
            }),
            e
        }(Fs);
        function Bs(t, e, n) {
            return Ns || (Ns = function(t) {
                function e() {
                    return null !== t && t.apply(this, arguments) || this
                }
                return Object(i.c)(e, t),
                e
            }(t)),
            new Ns(Ge(e, n))
        }
        function zs(t, e, n, r) {
            return js || (js = function(t) {
                function e(e, n, i) {
                    var r = t.call(this) || this;
                    return r._declarationView = e,
                    r._declarationTContainer = n,
                    r.elementRef = i,
                    r
                }
                return Object(i.c)(e, t),
                e.prototype.createEmbeddedView = function(t) {
                    var e = this._declarationTContainer.tViews
                      , n = ha(this._declarationView, e, t, 16, null, e.node)
                      , i = this._declarationView[this._declarationTContainer.index];
                    ngDevMode && Pe(i),
                    n[17] = i;
                    var r = this._declarationView[19];
                    return null !== r && (n[19] = r.createEmbeddedView(e)),
                    ma(e, n, t),
                    new Fs(n)
                }
                ,
                e
            }(t)),
            0 === n.type ? (ngDevMode && Bt(n.tViews, "TView must be allocated"),
            new js(r,n,Bs(e, n, r))) : null
        }
        function Gs(t, e, n, r) {
            var o;
            Vs || (Vs = function(t) {
                function n(e, n, i) {
                    var r = t.call(this) || this;
                    return r._lContainer = e,
                    r._hostTNode = n,
                    r._hostView = i,
                    r
                }
                return Object(i.c)(n, t),
                Object.defineProperty(n.prototype, "element", {
                    get: function() {
                        return Bs(e, this._hostTNode, this._hostView)
                    },
                    enumerable: !0,
                    configurable: !0
                }),
                Object.defineProperty(n.prototype, "injector", {
                    get: function() {
                        return new Oi(this._hostTNode,this._hostView)
                    },
                    enumerable: !0,
                    configurable: !0
                }),
                Object.defineProperty(n.prototype, "parentInjector", {
                    get: function() {
                        var t = yi(this._hostTNode, this._hostView)
                          , e = ri(t, this._hostView)
                          , n = function(t, e, n) {
                            if (n.parent && -1 !== n.parent.injectorIndex) {
                                for (var i = n.parent.injectorIndex, r = n.parent; null != r.parent && i == r.parent.injectorIndex; )
                                    r = r.parent;
                                return r
                            }
                            for (var o = ii(t), a = e, s = e[6]; o > 1; )
                                s = (a = a[15])[6],
                                o--;
                            return s
                        }(t, this._hostView, this._hostTNode);
                        return ei(t) && null != n ? new Oi(n,e) : new Oi(null,this._hostView)
                    },
                    enumerable: !0,
                    configurable: !0
                }),
                n.prototype.clear = function() {
                    for (; this.length > 0; )
                        this.remove(this.length - 1)
                }
                ,
                n.prototype.get = function(t) {
                    return null !== this._lContainer[8] && this._lContainer[8][t] || null
                }
                ,
                Object.defineProperty(n.prototype, "length", {
                    get: function() {
                        return this._lContainer.length - 10
                    },
                    enumerable: !0,
                    configurable: !0
                }),
                n.prototype.createEmbeddedView = function(t, e, n) {
                    var i = t.createEmbeddedView(e || {});
                    return this.insert(i, n),
                    i
                }
                ,
                n.prototype.createComponent = function(t, e, n, i, r) {
                    var o = n || this.parentInjector;
                    if (!r && null == t.ngModule && o) {
                        var a = o.get(_t, null);
                        a && (r = a)
                    }
                    var s = t.create(o, i, void 0, r);
                    return this.insert(s.hostView, e),
                    s
                }
                ,
                n.prototype.insert = function(t, e) {
                    var n = t._lView
                      , i = n[1];
                    if (t.destroyed)
                        throw new Error("Cannot insert a destroyed View in a ViewContainer!");
                    if (this.allocateContainerIfNeeded(),
                    Se(n[3])) {
                        var r = this.indexOf(t);
                        if (-1 !== r)
                            this.detach(r);
                        else {
                            var o = n[3];
                            ngDevMode && Rt(Se(o), !0, "An attached view should have its PARENT point to a container.");
                            var a = new Vs(o,o[6],o[3]);
                            a.detach(a.indexOf(t))
                        }
                    }
                    var s = this._adjustIndex(e);
                    return ms(i, n, this._lContainer, s),
                    fs(i, n, !0, Os(s, this._lContainer)),
                    t.attachToViewContainerRef(this),
                    Yt(this._lContainer[8], s, t),
                    t
                }
                ,
                n.prototype.move = function(t, e) {
                    if (t.destroyed)
                        throw new Error("Cannot move a destroyed View in a ViewContainer!");
                    return this.insert(t, e)
                }
                ,
                n.prototype.indexOf = function(t) {
                    var e = this._lContainer[8];
                    return null !== e ? e.indexOf(t) : -1
                }
                ,
                n.prototype.remove = function(t) {
                    this.allocateContainerIfNeeded();
                    var e = this._adjustIndex(t, -1);
                    !function(t, e) {
                        var n = vs(t, e);
                        n && ys(n[1], n)
                    }(this._lContainer, e),
                    Kt(this._lContainer[8], e)
                }
                ,
                n.prototype.detach = function(t) {
                    this.allocateContainerIfNeeded();
                    var e = this._adjustIndex(t, -1)
                      , n = vs(this._lContainer, e);
                    return n && null != Kt(this._lContainer[8], e) ? new Fs(n) : null
                }
                ,
                n.prototype._adjustIndex = function(t, e) {
                    return void 0 === e && (e = 0),
                    null == t ? this.length + e : (ngDevMode && (Ut(t, -1, "ViewRef index must be positive, got " + t),
                    Vt(t, this.length + 1 + e, "index")),
                    t)
                }
                ,
                n.prototype.allocateContainerIfNeeded = function() {
                    null === this._lContainer[8] && (this._lContainer[8] = [])
                }
                ,
                n
            }(t)),
            ngDevMode && Yn(n, 0, 3, 4);
            var a = r[n.index];
            if (Se(a))
                o = a;
            else {
                var s = void 0;
                if (4 === n.type)
                    s = Be(a);
                else if (ngDevMode && ngDevMode.rendererCreateComment++,
                s = r[11].createComment(ngDevMode ? "container" : ""),
                Ae(r)) {
                    var c = r[11]
                      , l = Ge(n, r);
                    xs(c, Cs(c, l), s, function(t, e) {
                        return Fe(t) ? t.nextSibling(e) : e.nextSibling
                    }(c, l))
                } else
                    Ts(r[1], r, s, n);
                r[n.index] = o = Xa(a, r, s, n),
                Za(r, o)
            }
            return new Vs(o,n,r)
        }
        function Hs(t) {
            return void 0 === t && (t = !1),
            function(t, e, n) {
                if (!n && Me(t)) {
                    var i = Xe(t.index, e);
                    return new Fs(i,i)
                }
                if (3 === t.type || 0 === t.type || 4 === t.type || 5 === t.type) {
                    var r = e[16];
                    return new Fs(r,e)
                }
                return null
            }(ln(), an(), t)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Ws = function() {
            function t() {}
            return t.__NG_ELEMENT_ID__ = function() {
                return Xs()
            }
            ,
            t
        }()
          , qs = Hs
          , Xs = qs
          , Ys = Function;
        function Ks(t) {
            return "function" == typeof t
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Zs = /^function\s+\S+\(\)\s*{[\s\S]+\.apply\(this,\s*arguments\)/
          , Js = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{/
          , Qs = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(/
          , $s = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(\)\s*{\s*super\(\.\.\.arguments\)/;
        var tc = function() {
            function t(t) {
                this._reflect = t || J.Reflect
            }
            return t.prototype.isReflectionEnabled = function() {
                return !0
            }
            ,
            t.prototype.factory = function(t) {
                return function() {
                    for (var e = [], n = 0; n < arguments.length; n++)
                        e[n] = arguments[n];
                    return new (t.bind.apply(t, Object(i.h)([void 0], e)))
                }
            }
            ,
            t.prototype._zipTypesAndAnnotations = function(t, e) {
                var n;
                n = Zt(void 0 === t ? e.length : t.length);
                for (var i = 0; i < n.length; i++)
                    void 0 === t ? n[i] = [] : t[i] && t[i] != Object ? n[i] = [t[i]] : n[i] = [],
                    e && null != e[i] && (n[i] = n[i].concat(e[i]));
                return n
            }
            ,
            t.prototype._ownParameters = function(t, e) {
                if (function(t) {
                    return Zs.test(t) || $s.test(t) || Js.test(t) && !Qs.test(t)
                }(t.toString()))
                    return null;
                if (t.parameters && t.parameters !== e.parameters)
                    return t.parameters;
                var n = t.ctorParameters;
                if (n && n !== e.ctorParameters) {
                    var i = "function" == typeof n ? n() : n
                      , r = i.map((function(t) {
                        return t && t.type
                    }
                    ))
                      , o = i.map((function(t) {
                        return t && ec(t.decorators)
                    }
                    ));
                    return this._zipTypesAndAnnotations(r, o)
                }
                var a = t.hasOwnProperty(d) && t[d]
                  , s = this._reflect && this._reflect.getOwnMetadata && this._reflect.getOwnMetadata("design:paramtypes", t);
                return s || a ? this._zipTypesAndAnnotations(s, a) : Zt(t.length)
            }
            ,
            t.prototype.parameters = function(t) {
                if (!Ks(t))
                    return [];
                var e = nc(t)
                  , n = this._ownParameters(t, e);
                return n || e === Object || (n = this.parameters(e)),
                n || []
            }
            ,
            t.prototype._ownAnnotations = function(t, e) {
                if (t.annotations && t.annotations !== e.annotations) {
                    var n = t.annotations;
                    return "function" == typeof n && n.annotations && (n = n.annotations),
                    n
                }
                return t.decorators && t.decorators !== e.decorators ? ec(t.decorators) : t.hasOwnProperty(u) ? t[u] : null
            }
            ,
            t.prototype.annotations = function(t) {
                if (!Ks(t))
                    return [];
                var e = nc(t)
                  , n = this._ownAnnotations(t, e) || [];
                return (e !== Object ? this.annotations(e) : []).concat(n)
            }
            ,
            t.prototype._ownPropMetadata = function(t, e) {
                if (t.propMetadata && t.propMetadata !== e.propMetadata) {
                    var n = t.propMetadata;
                    return "function" == typeof n && n.propMetadata && (n = n.propMetadata),
                    n
                }
                if (t.propDecorators && t.propDecorators !== e.propDecorators) {
                    var i = t.propDecorators
                      , r = {};
                    return Object.keys(i).forEach((function(t) {
                        r[t] = ec(i[t])
                    }
                    )),
                    r
                }
                return t.hasOwnProperty(p) ? t[p] : null
            }
            ,
            t.prototype.propMetadata = function(t) {
                if (!Ks(t))
                    return {};
                var e = nc(t)
                  , n = {};
                if (e !== Object) {
                    var r = this.propMetadata(e);
                    Object.keys(r).forEach((function(t) {
                        n[t] = r[t]
                    }
                    ))
                }
                var o = this._ownPropMetadata(t, e);
                return o && Object.keys(o).forEach((function(t) {
                    var e = [];
                    n.hasOwnProperty(t) && e.push.apply(e, Object(i.h)(n[t])),
                    e.push.apply(e, Object(i.h)(o[t])),
                    n[t] = e
                }
                )),
                n
            }
            ,
            t.prototype.ownPropMetadata = function(t) {
                return Ks(t) && this._ownPropMetadata(t, nc(t)) || {}
            }
            ,
            t.prototype.hasLifecycleHook = function(t, e) {
                return t instanceof Ys && e in t.prototype
            }
            ,
            t.prototype.guards = function(t) {
                return {}
            }
            ,
            t.prototype.getter = function(t) {
                return new Function("o","return o." + t + ";")
            }
            ,
            t.prototype.setter = function(t) {
                return new Function("o","v","return o." + t + " = v;")
            }
            ,
            t.prototype.method = function(t) {
                return new Function("o","args","if (!o." + t + ") throw new Error('\"" + t + "\" is undefined');\n        return o." + t + ".apply(o, args);")
            }
            ,
            t.prototype.importUri = function(t) {
                return "object" == typeof t && t.filePath ? t.filePath : "./" + F(t)
            }
            ,
            t.prototype.resourceUri = function(t) {
                return "./" + F(t)
            }
            ,
            t.prototype.resolveIdentifier = function(t, e, n, i) {
                return i
            }
            ,
            t.prototype.resolveEnum = function(t, e) {
                return t[e]
            }
            ,
            t
        }();
        function ec(t) {
            return t ? t.map((function(t) {
                var e = t.type.annotationCls
                  , n = t.args ? t.args : [];
                return new (e.bind.apply(e, Object(i.h)([void 0], n)))
            }
            )) : []
        }
        function nc(t) {
            var e = t.prototype ? Object.getPrototypeOf(t.prototype) : null;
            return (e ? e.constructor : null) || Object
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var ic = null;
        function rc() {
            return ic = ic || new tc
        }
        function oc(t) {
            return ac(rc().parameters(t))
        }
        function ac(t) {
            var e = Q();
            return t.map((function(t) {
                return function(t, e) {
                    var n = {
                        token: null,
                        host: !1,
                        optional: !1,
                        resolved: t.R3ResolvedDependencyType.Token,
                        self: !1,
                        skipSelf: !1
                    };
                    function i(e) {
                        n.resolved = t.R3ResolvedDependencyType.Token,
                        n.token = e
                    }
                    if (Array.isArray(e) && e.length > 0)
                        for (var r = 0; r < e.length; r++) {
                            var o = e[r];
                            if (void 0 !== o) {
                                var a = Object.getPrototypeOf(o);
                                if (o instanceof w || "Optional" === a.ngMetadataName)
                                    n.optional = !0;
                                else if (o instanceof x || "SkipSelf" === a.ngMetadataName)
                                    n.skipSelf = !0;
                                else if (o instanceof S || "Self" === a.ngMetadataName)
                                    n.self = !0;
                                else if (o instanceof M || "Host" === a.ngMetadataName)
                                    n.host = !0;
                                else if (o instanceof b)
                                    n.token = o.token;
                                else if (o instanceof C) {
                                    if (void 0 === o.attributeName)
                                        throw new Error("Attribute name must be defined.");
                                    n.token = o.attributeName,
                                    n.resolved = t.R3ResolvedDependencyType.Attribute
                                } else
                                    o === Ws ? (n.token = o,
                                    n.resolved = t.R3ResolvedDependencyType.ChangeDetectorRef) : i(o)
                            }
                        }
                    else
                        void 0 === e || Array.isArray(e) && 0 === e.length ? (n.token = void 0,
                        n.resolved = W.Invalid) : i(e);
                    return n
                }/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
                (e, t)
            }
            ))
        }
        var sc = A({
            provide: String,
            useValue: A
        });
        function cc(t) {
            return void 0 !== t.useClass
        }
        function lc(t) {
            return void 0 !== t.useFactory
        }
        function uc(t, e) {
            var n = e || {
                providedIn: null
            }
              , i = {
                name: t.name,
                type: t,
                typeArgumentCount: 0,
                providedIn: n.providedIn,
                userDeps: void 0
            };
            return (cc(n) || lc(n)) && void 0 !== n.deps && (i.userDeps = ac(n.deps)),
            cc(n) ? i.useClass = G(n.useClass) : !function(t) {
                return sc in t
            }(n) ? lc(n) ? i.useFactory = n.useFactory : function(t) {
                return void 0 !== t.useExisting
            }(n) && (i.useExisting = G(n.useExisting)) : i.useValue = G(n.useValue),
            i
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        A({
            provide: String,
            useValue: A
        });
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var dc = h("Injectable", void 0, void 0, void 0, (function(t, e) {
            return hc(t, e)
        }
        ));
        var pc = function(t, e) {
            var n = null
              , i = null;
            t.hasOwnProperty(R) || (Object.defineProperty(t, R, {
                get: function() {
                    return null === n && (n = Q().compileInjectable(Ct, "ng:///" + t.name + "/ɵprov.js", uc(t, e))),
                    n
                }
            }),
            t.hasOwnProperty(N) || (t[N] = function() {
                return t[R]
            }
            )),
            t.hasOwnProperty(rt) || Object.defineProperty(t, rt, {
                get: function() {
                    if (null === i) {
                        var n = uc(t, e)
                          , r = Q();
                        i = r.compileFactory(Ct, "ng:///" + t.name + "/ɵfac.js", {
                            name: n.name,
                            type: n.type,
                            typeArgumentCount: n.typeArgumentCount,
                            deps: oc(t),
                            injectFn: "inject",
                            target: r.R3FactoryTarget.Injectable
                        })
                    }
                    return i
                },
                configurable: !0
            })
        }
          , hc = pc
          , fc = new ct("Set Injector scope.")
          , mc = {}
          , gc = {}
          , vc = []
          , yc = void 0;
        function bc() {
            return void 0 === yc && (yc = new xt),
            yc
        }
        function wc(t, e, n, i) {
            void 0 === e && (e = null),
            void 0 === n && (n = null);
            var r = Sc(t, e, n, i);
            return r._resolveInjectorDefTypes(),
            r
        }
        function Sc(t, e, n, i) {
            return void 0 === e && (e = null),
            void 0 === n && (n = null),
            new xc(t,n,e || bc(),i)
        }
        var xc = function() {
            function t(t, e, n, i) {
                var r = this;
                void 0 === i && (i = null),
                this.parent = n,
                this.records = new Map,
                this.injectorDefTypes = new Set,
                this.onDestroy = new Set,
                this._destroyed = !1;
                var o = [];
                e && Xt(e, (function(n) {
                    return r.processProvider(n, t, e)
                }
                )),
                Xt([t], (function(t) {
                    return r.processInjectorType(t, [], o)
                }
                )),
                this.records.set(lt, Cc(void 0, this));
                var a = this.records.get(fc);
                this.scope = null != a ? a.value : null,
                this.source = i || ("object" == typeof t ? null : F(t))
            }
            return Object.defineProperty(t.prototype, "destroyed", {
                get: function() {
                    return this._destroyed
                },
                enumerable: !0,
                configurable: !0
            }),
            t.prototype.destroy = function() {
                this.assertNotDestroyed(),
                this._destroyed = !0;
                try {
                    this.onDestroy.forEach((function(t) {
                        return t.ngOnDestroy()
                    }
                    ))
                } finally {
                    this.records.clear(),
                    this.onDestroy.clear(),
                    this.injectorDefTypes.clear()
                }
            }
            ,
            t.prototype.get = function(t, e, n) {
                void 0 === e && (e = ut),
                void 0 === n && (n = v.Default),
                this.assertNotDestroyed();
                var i, r = ft(this);
                try {
                    if (!(n & v.SkipSelf)) {
                        var o = this.records.get(t);
                        if (void 0 === o) {
                            var a = ("function" == typeof (i = t) || "object" == typeof i && i instanceof ct) && I(t);
                            o = a && this.injectableDefInScope(a) ? Cc(Mc(t), mc) : null,
                            this.records.set(t, o)
                        }
                        if (null != o)
                            return this.hydrate(t, o)
                    }
                    var s = n & v.Self ? bc() : this.parent;
                    return e = n & v.Optional && e === ut ? null : e,
                    s.get(t, e)
                } catch (e) {
                    if ("NullInjectorError" === e.name) {
                        if ((e.ngTempTokenPath = e.ngTempTokenPath || []).unshift(F(t)),
                        r)
                            throw e;
                        return Mt(e, t, "R3InjectorError", this.source)
                    }
                    throw e
                } finally {
                    ft(r)
                }
            }
            ,
            t.prototype._resolveInjectorDefTypes = function() {
                var t = this;
                this.injectorDefTypes.forEach((function(e) {
                    return t.get(e)
                }
                ))
            }
            ,
            t.prototype.toString = function() {
                var t = [];
                return this.records.forEach((function(e, n) {
                    return t.push(F(n))
                }
                )),
                "R3Injector[" + t.join(", ") + "]"
            }
            ,
            t.prototype.assertNotDestroyed = function() {
                if (this._destroyed)
                    throw new Error("Injector has already been destroyed.")
            }
            ,
            t.prototype.processInjectorType = function(t, e, n) {
                var i = this;
                if (!(t = G(t)))
                    return !1;
                var r = D(t)
                  , o = null == r && t.ngModule || void 0
                  , a = void 0 === o ? t : o;
                if (ngDevMode && -1 !== e.indexOf(a)) {
                    var s = F(a);
                    throw new Error("Circular dependency in DI detected for type " + s + ". Dependency path: " + e.map((function(t) {
                        return F(t)
                    }
                    )).join(" > ") + " > " + s + ".")
                }
                var c = -1 !== n.indexOf(a);
                if (void 0 !== o && (r = D(o)),
                null == r)
                    return !1;
                if (null != r.imports && !c) {
                    var l;
                    ngDevMode && e.push(a),
                    n.push(a);
                    try {
                        Xt(r.imports, (function(t) {
                            i.processInjectorType(t, e, n) && (void 0 === l && (l = []),
                            l.push(t))
                        }
                        ))
                    } finally {
                        ngDevMode && e.pop()
                    }
                    if (void 0 !== l)
                        for (var u = function(t) {
                            var e = l[t]
                              , n = e.ngModule
                              , r = e.providers;
                            Xt(r, (function(t) {
                                return i.processProvider(t, n, r || vc)
                            }
                            ))
                        }, d = 0; d < l.length; d++)
                            u(d)
                }
                this.injectorDefTypes.add(a),
                this.records.set(a, Cc(r.factory, mc));
                var p = r.providers;
                if (null != p && !c) {
                    var h = t;
                    Xt(p, (function(t) {
                        return i.processProvider(t, h, p)
                    }
                    ))
                }
                return void 0 !== o && void 0 !== t.providers
            }
            ,
            t.prototype.processProvider = function(t, e, n) {
                var i = Tc(t = G(t)) ? t : G(t && t.provide)
                  , r = function(t, e, n) {
                    return Ac(t) ? Cc(void 0, t.useValue) : Cc(Ec(t, e, n), mc)
                }(t, e, n);
                if (Tc(t) || !0 !== t.multi) {
                    var o = this.records.get(i);
                    o && void 0 !== o.multi && eo()
                } else {
                    var a = this.records.get(i);
                    a ? void 0 === a.multi && eo() : ((a = Cc(void 0, mc, !0)).factory = function() {
                        return St(a.multi)
                    }
                    ,
                    this.records.set(i, a)),
                    i = t,
                    a.multi.push(t)
                }
                this.records.set(i, r)
            }
            ,
            t.prototype.hydrate = function(t, e) {
                var n;
                return e.value === gc ? function(t) {
                    throw new Error("Cannot instantiate cyclic dependency! " + t)
                }(F(t)) : e.value === mc && (e.value = gc,
                e.value = e.factory()),
                "object" == typeof e.value && e.value && (null !== (n = e.value) && "object" == typeof n && "function" == typeof n.ngOnDestroy) && this.onDestroy.add(e.value),
                e.value
            }
            ,
            t.prototype.injectableDefInScope = function(t) {
                return !!t.providedIn && ("string" == typeof t.providedIn ? "any" === t.providedIn || t.providedIn === this.scope : this.injectorDefTypes.has(t.providedIn))
            }
            ,
            t
        }();
        function Mc(t) {
            var e = I(t)
              , n = null !== e ? e.factory : ye(t);
            if (null !== n)
                return n;
            var i = D(t);
            if (null !== i)
                return i.factory;
            if (t instanceof ct)
                throw new Error("Token " + F(t) + " is missing a ɵprov definition.");
            if (t instanceof Function)
                return function(t) {
                    var e = t.length;
                    if (e > 0) {
                        var n = Zt(e, "?");
                        throw new Error("Can't resolve all parameters for " + F(t) + ": (" + n.join(", ") + ").")
                    }
                    var i = function(t) {
                        var e = t && (t[R] || t[j] || t[N] && t[N]());
                        if (e) {
                            var n = function(t) {
                                if (t.hasOwnProperty("name"))
                                    return t.name;
                                var e = ("" + t).match(/^function\s*([^\s(]+)/);
                                return null === e ? "" : e[1]
                            }(t);
                            return console.warn('DEPRECATED: DI is instantiating a token "' + n + '" that inherits its @Injectable decorator but does not provide one itself.\nThis will become an error in v10. Please add @Injectable() to the "' + n + '" class.'),
                            e
                        }
                        return null
                    }(t);
                    return null !== i ? function() {
                        return i.factory(t)
                    }
                    : function() {
                        return new t
                    }
                }(t);
            throw new Error("unreachable")
        }
        function Ec(t, e, n) {
            var r, o = void 0;
            if (Tc(t)) {
                var a = G(t);
                return ye(a) || Mc(a)
            }
            if (Ac(t))
                o = function() {
                    return G(t.useValue)
                }
                ;
            else if ((r = t) && r.useFactory)
                o = function() {
                    return t.useFactory.apply(t, Object(i.h)(St(t.deps || [])))
                }
                ;
            else if (function(t) {
                return !(!t || !t.useExisting)
            }(t))
                o = function() {
                    return vt(G(t.useExisting))
                }
                ;
            else {
                var s = G(t && (t.useClass || t.provide));
                if (s || function(t, e, n) {
                    var i = "";
                    throw t && e && (i = " - only instances of Provider and Type are allowed, got: [" + e.map((function(t) {
                        return t == n ? "?" + n + "?" : "..."
                    }
                    )).join(", ") + "]"),
                    new Error("Invalid provider for the NgModule '" + F(t) + "'" + i)
                }(e, n, t),
                !function(t) {
                    return !!t.deps
                }(t))
                    return ye(s) || Mc(s);
                o = function() {
                    return new (s.bind.apply(s, Object(i.h)([void 0], St(t.deps))))
                }
            }
            return o
        }
        function Cc(t, e, n) {
            return void 0 === n && (n = !1),
            {
                factory: t,
                value: e,
                multi: n ? [] : void 0
            }
        }
        function Ac(t) {
            return null !== t && "object" == typeof t && pt in t
        }
        function Tc(t) {
            return "function" == typeof t
        }
        function Oc(t, e, n) {
            return wc({
                name: n
            }, e, t, n)
        }
        var _c = Oc
          , Pc = function() {
            function t() {}
            return t.create = function(t, e) {
                return Array.isArray(t) ? _c(t, e, "") : _c(t.providers, t.parent, t.name || "")
            }
            ,
            t.THROW_IF_NOT_FOUND = ut,
            t.NULL = new xt,
            t.ɵprov = O({
                token: t,
                providedIn: "any",
                factory: function() {
                    return vt(lt)
                }
            }),
            t.__NG_ELEMENT_ID__ = -1,
            t
        }()
          , Ic = function(t) {
            return t
        }
          , kc = []
          , Dc = Ic
          , Rc = function() {
            return Array.prototype.slice.call(arguments)
        };
        !function() {
            function t(t, e, n) {
                void 0 === e && (e = Pc.NULL),
                void 0 === n && (n = null),
                this.parent = e,
                this.source = n;
                var i = this._records = new Map;
                i.set(Pc, {
                    token: Pc,
                    fn: Ic,
                    deps: kc,
                    value: this,
                    useNew: !1
                }),
                i.set(lt, {
                    token: lt,
                    fn: Ic,
                    deps: kc,
                    value: this,
                    useNew: !1
                }),
                this.scope = function t(e, n) {
                    var i = null;
                    if (n)
                        if (n = G(n),
                        Array.isArray(n))
                            for (var r = 0; r < n.length; r++)
                                i = t(e, n[r]) || i;
                        else {
                            if ("function" == typeof n)
                                throw Vc("Function/Class not supported", n);
                            if (!n || "object" != typeof n || !n.provide)
                                throw Vc("Unexpected provider", n);
                            var o = G(n.provide)
                              , a = Lc(n);
                            if (!0 === n.multi) {
                                var s = e.get(o);
                                if (s) {
                                    if (s.fn !== Rc)
                                        throw Nc(o)
                                } else
                                    e.set(o, s = {
                                        token: n.provide,
                                        deps: [],
                                        useNew: !1,
                                        fn: Rc,
                                        value: kc
                                    });
                                o = n,
                                s.deps.push({
                                    token: o,
                                    options: 6
                                })
                            }
                            var c = e.get(o);
                            if (c && c.fn == Rc)
                                throw Nc(o);
                            o === fc && (i = a.value),
                            e.set(o, a)
                        }
                    return i
                }(i, t)
            }
            t.prototype.get = function(t, e, n) {
                void 0 === n && (n = v.Default);
                var i = this._records
                  , r = i.get(t);
                if (void 0 === r) {
                    var o = I(t);
                    if (o) {
                        var a = o && o.providedIn;
                        ("any" === a || null != a && a === this.scope) && i.set(t, r = Lc({
                            provide: t,
                            useFactory: o.factory,
                            deps: kc
                        }))
                    }
                    void 0 === r && i.set(t, null)
                }
                var s = ft(this);
                try {
                    return jc(t, r, i, this.parent, e, n)
                } catch (e) {
                    return Mt(e, t, "StaticInjectorError", this.source)
                } finally {
                    ft(s)
                }
            }
            ,
            t.prototype.toString = function() {
                var t = [];
                return this._records.forEach((function(e, n) {
                    return t.push(F(n))
                }
                )),
                "StaticInjector[" + t.join(", ") + "]"
            }
        }();
        function Lc(t) {
            var e = function(t) {
                var e = kc
                  , n = t.deps;
                if (n && n.length) {
                    e = [];
                    for (var i = 0; i < n.length; i++) {
                        var r = 6
                          , o = G(n[i]);
                        if (Array.isArray(o))
                            for (var a = 0, s = o; a < s.length; a++) {
                                var c = s[a];
                                c instanceof w || c == w ? r |= 1 : c instanceof x || c == x ? r &= -3 : c instanceof S || c == S ? r &= -5 : o = c instanceof b ? c.token : G(c)
                            }
                        e.push({
                            token: o,
                            options: r
                        })
                    }
                } else if (t.useExisting) {
                    o = G(t.useExisting);
                    e = [{
                        token: o,
                        options: 6
                    }]
                } else if (!n && !(pt in t))
                    throw Vc("'deps' required", t);
                return e
            }(t)
              , n = Ic
              , i = kc
              , r = !1
              , o = G(t.provide);
            if (pt in t)
                i = t.useValue;
            else if (t.useFactory)
                n = t.useFactory;
            else if (t.useExisting)
                ;
            else if (t.useClass)
                r = !0,
                n = G(t.useClass);
            else {
                if ("function" != typeof o)
                    throw Vc("StaticProvider does not have [useValue|useFactory|useExisting|useClass] or [provide] is not newable", t);
                r = !0,
                n = o
            }
            return {
                deps: e,
                fn: n,
                useNew: r,
                value: i
            }
        }
        function Nc(t) {
            return Vc("Cannot mix multi providers and regular providers", t)
        }
        function jc(t, e, n, r, o, a) {
            try {
                return function(t, e, n, r, o, a) {
                    var s, c;
                    if (!e || a & v.SkipSelf)
                        c = a & v.Self ? a & v.Optional ? Pc.NULL.get(t, void 0 !== o ? o : null) : Pc.NULL.get(t, o) : r.get(t, o, v.Default);
                    else {
                        if ((c = e.value) == Dc)
                            throw Error("ɵCircular dependency");
                        if (c === kc) {
                            e.value = Dc;
                            var l = e.useNew
                              , u = e.fn
                              , d = e.deps
                              , p = kc;
                            if (d.length) {
                                p = [];
                                for (var h = 0; h < d.length; h++) {
                                    var f = d[h]
                                      , m = f.options
                                      , g = 2 & m ? n.get(f.token) : void 0;
                                    p.push(jc(f.token, g, n, g || 4 & m ? r : Pc.NULL, 1 & m ? null : Pc.THROW_IF_NOT_FOUND, v.Default))
                                }
                            }
                            e.value = c = l ? new ((s = u).bind.apply(s, Object(i.h)([void 0], p))) : u.apply(void 0, p)
                        }
                    }
                    return c
                }(t, e, n, r, o, a)
            } catch (n) {
                throw n instanceof Error || (n = new Error(n)),
                (n.ngTempTokenPath = n.ngTempTokenPath || []).unshift(t),
                e && e.value == Dc && (e.value = kc),
                n
            }
        }
        function Vc(t, e) {
            return new Error(Et(t, e, "StaticInjectorError"))
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Fc(t) {
            return t.length > 1 ? " (" + function(t) {
                for (var e = [], n = 0; n < t.length; ++n) {
                    if (e.indexOf(t[n]) > -1)
                        return e.push(t[n]),
                        e;
                    e.push(t[n])
                }
                return e
            }(t.slice().reverse()).map((function(t) {
                return F(t.token)
            }
            )).join(" -> ") + ")" : ""
        }
        function Uc(t, e, n, i) {
            var r = [e]
              , o = n(r)
              , a = i ? function(t, e) {
                var n = t + " caused by: " + (e instanceof Error ? e.message : e)
                  , i = Error(n);
                return i.ngOriginalError = e,
                i
            }/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
            (o, i) : Error(o);
            return a.addKey = Bc,
            a.keys = r,
            a.injectors = [t],
            a.constructResolvingMessage = n,
            a.ngOriginalError = i,
            a
        }
        function Bc(t, e) {
            this.injectors.push(t),
            this.keys.push(e),
            this.message = this.constructResolvingMessage(this.keys)
        }
        function zc(t, e) {
            for (var n = [], i = 0, r = e.length; i < r; i++) {
                var o = e[i];
                o && 0 != o.length ? n.push(o.map(F).join(" ")) : n.push("?")
            }
            return Error("Cannot resolve all parameters for '" + F(t) + "'(" + n.join(", ") + "). Make sure that all the parameters are decorated with Inject or have valid type annotations and that '" + F(t) + "' is decorated with Injectable.")
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Gc = function() {
            function t(t, e) {
                if (this.token = t,
                this.id = e,
                !t)
                    throw new Error("Token must be defined!");
                this.displayName = F(this.token)
            }
            return t.get = function(t) {
                return Hc.get(G(t))
            }
            ,
            Object.defineProperty(t, "numberOfKeys", {
                get: function() {
                    return Hc.numberOfKeys
                },
                enumerable: !0,
                configurable: !0
            }),
            t
        }()
          , Hc = new (function() {
            function t() {
                this._allKeys = new Map
            }
            return t.prototype.get = function(t) {
                if (t instanceof Gc)
                    return t;
                if (this._allKeys.has(t))
                    return this._allKeys.get(t);
                var e = new Gc(t,Gc.numberOfKeys);
                return this._allKeys.set(t, e),
                e
            }
            ,
            Object.defineProperty(t.prototype, "numberOfKeys", {
                get: function() {
                    return this._allKeys.size
                },
                enumerable: !0,
                configurable: !0
            }),
            t
        }())
          , Wc = new (function() {
            function t(t) {
                this.reflectionCapabilities = t
            }
            return t.prototype.updateCapabilities = function(t) {
                this.reflectionCapabilities = t
            }
            ,
            t.prototype.factory = function(t) {
                return this.reflectionCapabilities.factory(t)
            }
            ,
            t.prototype.parameters = function(t) {
                return this.reflectionCapabilities.parameters(t)
            }
            ,
            t.prototype.annotations = function(t) {
                return this.reflectionCapabilities.annotations(t)
            }
            ,
            t.prototype.propMetadata = function(t) {
                return this.reflectionCapabilities.propMetadata(t)
            }
            ,
            t.prototype.hasLifecycleHook = function(t, e) {
                return this.reflectionCapabilities.hasLifecycleHook(t, e)
            }
            ,
            t.prototype.getter = function(t) {
                return this.reflectionCapabilities.getter(t)
            }
            ,
            t.prototype.setter = function(t) {
                return this.reflectionCapabilities.setter(t)
            }
            ,
            t.prototype.method = function(t) {
                return this.reflectionCapabilities.method(t)
            }
            ,
            t.prototype.importUri = function(t) {
                return this.reflectionCapabilities.importUri(t)
            }
            ,
            t.prototype.resourceUri = function(t) {
                return this.reflectionCapabilities.resourceUri(t)
            }
            ,
            t.prototype.resolveIdentifier = function(t, e, n, i) {
                return this.reflectionCapabilities.resolveIdentifier(t, e, n, i)
            }
            ,
            t.prototype.resolveEnum = function(t, e) {
                return this.reflectionCapabilities.resolveEnum(t, e)
            }
            ,
            t
        }())(new tc)
          , qc = function() {
            function t(t, e, n) {
                this.key = t,
                this.optional = e,
                this.visibility = n
            }
            return t.fromKey = function(e) {
                return new t(e,!1,null)
            }
            ,
            t
        }()
          , Xc = []
          , Yc = function(t, e, n) {
            this.key = t,
            this.resolvedFactories = e,
            this.multiProvider = n,
            this.resolvedFactory = this.resolvedFactories[0]
        }
          , Kc = function(t, e) {
            this.factory = t,
            this.dependencies = e
        };
        function Zc(t) {
            var e, n;
            if (t.useClass) {
                var i = G(t.useClass);
                e = Wc.factory(i),
                n = $c(i)
            } else
                t.useExisting ? (e = function(t) {
                    return t
                }
                ,
                n = [qc.fromKey(Gc.get(t.useExisting))]) : t.useFactory ? (e = t.useFactory,
                n = function(t, e) {
                    if (e) {
                        var n = e.map((function(t) {
                            return [t]
                        }
                        ));
                        return e.map((function(e) {
                            return tl(t, e, n)
                        }
                        ))
                    }
                    return $c(t)
                }(t.useFactory, t.deps)) : (e = function() {
                    return t.useValue
                }
                ,
                n = Xc);
            return new Kc(e,n)
        }
        function Jc(t) {
            return new Yc(Gc.get(t.provide),[Zc(t)],t.multi || !1)
        }
        function Qc(t) {
            var e = function(t, e) {
                for (var n = 0; n < t.length; n++) {
                    var i = t[n]
                      , r = e.get(i.key.id);
                    if (r) {
                        if (i.multiProvider !== r.multiProvider)
                            throw Error("Cannot mix multi providers and regular providers, got: " + r + " " + i);
                        if (i.multiProvider)
                            for (var o = 0; o < i.resolvedFactories.length; o++)
                                r.resolvedFactories.push(i.resolvedFactories[o]);
                        else
                            e.set(i.key.id, i)
                    } else {
                        var a = void 0;
                        a = i.multiProvider ? new Yc(i.key,i.resolvedFactories.slice(),i.multiProvider) : i,
                        e.set(i.key.id, a)
                    }
                }
                return e
            }(function t(e, n) {
                return e.forEach((function(e) {
                    if (e instanceof Ys)
                        n.push({
                            provide: e,
                            useClass: e
                        });
                    else if (e && "object" == typeof e && void 0 !== e.provide)
                        n.push(e);
                    else {
                        if (!Array.isArray(e))
                            throw Error("Invalid provider - only instances of Provider and Type are allowed, got: " + e);
                        t(e, n)
                    }
                }
                )),
                n
            }(t, []).map(Jc), new Map);
            return Array.from(e.values())
        }
        function $c(t) {
            var e = Wc.parameters(t);
            if (!e)
                return [];
            if (e.some((function(t) {
                return null == t
            }
            )))
                throw zc(t, e);
            return e.map((function(n) {
                return tl(t, n, e)
            }
            ))
        }
        function tl(t, e, n) {
            var i = null
              , r = !1;
            if (!Array.isArray(e))
                return el(e instanceof b ? e.token : e, r, null);
            for (var o = null, a = 0; a < e.length; ++a) {
                var s = e[a];
                s instanceof Ys ? i = s : s instanceof b ? i = s.token : s instanceof w ? r = !0 : s instanceof S || s instanceof x ? o = s : s instanceof ct && (i = s)
            }
            if (null != (i = G(i)))
                return el(i, r, o);
            throw zc(t, n)
        }
        function el(t, e, n) {
            return new qc(Gc.get(t),e,n)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var nl = {}
          , il = function() {
            function t() {}
            return t.resolve = function(t) {
                return Qc(t)
            }
            ,
            t.resolveAndCreate = function(e, n) {
                var i = t.resolve(e);
                return t.fromResolvedProviders(i, n)
            }
            ,
            t.fromResolvedProviders = function(t, e) {
                return new rl(t,e)
            }
            ,
            t
        }()
          , rl = function() {
            function t(t, e) {
                this._constructionCounter = 0,
                this._providers = t,
                this.parent = e || null;
                var n = t.length;
                this.keyIds = [],
                this.objs = [];
                for (var i = 0; i < n; i++)
                    this.keyIds[i] = t[i].key.id,
                    this.objs[i] = nl
            }
            return t.prototype.get = function(t, e) {
                return void 0 === e && (e = ut),
                this._getByKey(Gc.get(t), null, e)
            }
            ,
            t.prototype.resolveAndCreateChild = function(t) {
                var e = il.resolve(t);
                return this.createChildFromResolved(e)
            }
            ,
            t.prototype.createChildFromResolved = function(e) {
                var n = new t(e);
                return n.parent = this,
                n
            }
            ,
            t.prototype.resolveAndInstantiate = function(t) {
                return this.instantiateResolved(il.resolve([t])[0])
            }
            ,
            t.prototype.instantiateResolved = function(t) {
                return this._instantiateProvider(t)
            }
            ,
            t.prototype.getProviderAtIndex = function(t) {
                if (t < 0 || t >= this._providers.length)
                    throw function(t) {
                        return Error("Index " + t + " is out-of-bounds.")
                    }(t);
                return this._providers[t]
            }
            ,
            t.prototype._new = function(t) {
                if (this._constructionCounter++ > this._getMaxNumberOfObjects())
                    throw e = this,
                    n = t.key,
                    Uc(e, n, (function(t) {
                        return "Cannot instantiate cyclic dependency!" + Fc(t)
                    }
                    ));
                var e, n;
                return this._instantiateProvider(t)
            }
            ,
            t.prototype._getMaxNumberOfObjects = function() {
                return this.objs.length
            }
            ,
            t.prototype._instantiateProvider = function(t) {
                if (t.multiProvider) {
                    for (var e = [], n = 0; n < t.resolvedFactories.length; ++n)
                        e[n] = this._instantiate(t, t.resolvedFactories[n]);
                    return e
                }
                return this._instantiate(t, t.resolvedFactories[0])
            }
            ,
            t.prototype._instantiate = function(t, e) {
                var n, r, o, a, s, c = this, l = e.factory;
                try {
                    n = e.dependencies.map((function(t) {
                        return c._getByReflectiveDependency(t)
                    }
                    ))
                } catch (e) {
                    throw e.addKey && e.addKey(this, t.key),
                    e
                }
                try {
                    r = l.apply(void 0, Object(i.h)(n))
                } catch (e) {
                    throw o = this,
                    a = e,
                    e.stack,
                    s = t.key,
                    Uc(o, s, (function(t) {
                        var e = F(t[0].token);
                        return a.message + ": Error during instantiation of " + e + "!" + Fc(t) + "."
                    }
                    ), a)
                }
                return r
            }
            ,
            t.prototype._getByReflectiveDependency = function(t) {
                return this._getByKey(t.key, t.visibility, t.optional ? null : ut)
            }
            ,
            t.prototype._getByKey = function(e, n, i) {
                return e === t.INJECTOR_KEY ? this : n instanceof S ? this._getByKeySelf(e, i) : this._getByKeyDefault(e, i, n)
            }
            ,
            t.prototype._getObjByKeyId = function(t) {
                for (var e = 0; e < this.keyIds.length; e++)
                    if (this.keyIds[e] === t)
                        return this.objs[e] === nl && (this.objs[e] = this._new(this._providers[e])),
                        this.objs[e];
                return nl
            }
            ,
            t.prototype._throwOrNull = function(t, e) {
                if (e !== ut)
                    return e;
                throw function(t, e) {
                    return Uc(t, e, (function(t) {
                        return "No provider for " + F(t[0].token) + "!" + Fc(t)
                    }
                    ))
                }(this, t)
            }
            ,
            t.prototype._getByKeySelf = function(t, e) {
                var n = this._getObjByKeyId(t.id);
                return n !== nl ? n : this._throwOrNull(t, e)
            }
            ,
            t.prototype._getByKeyDefault = function(e, n, i) {
                var r;
                for (r = i instanceof x ? this.parent : this; r instanceof t; ) {
                    var o = r
                      , a = o._getObjByKeyId(e.id);
                    if (a !== nl)
                        return a;
                    r = o.parent
                }
                return null !== r ? r.get(e.token, n) : this._throwOrNull(e, n)
            }
            ,
            Object.defineProperty(t.prototype, "displayName", {
                get: function() {
                    return "ReflectiveInjector(providers: [" + function(t, e) {
                        for (var n = [], i = 0; i < t._providers.length; ++i)
                            n[i] = e(t.getProviderAtIndex(i));
                        return n
                    }/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
                    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
                    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
                    (this, (function(t) {
                        return ' "' + t.key.displayName + '" '
                    }
                    )).join(", ") + "])"
                },
                enumerable: !0,
                configurable: !0
            }),
            t.prototype.toString = function() {
                return this.displayName
            }
            ,
            t.INJECTOR_KEY = Gc.get(Pc),
            t
        }();
        var ol = new ct("AnalyzeForEntryComponents")
          , al = function() {}
          , sl = g("ContentChildren", (function(t, e) {
            return void 0 === e && (e = {}),
            Object(i.a)({
                selector: t,
                first: !1,
                isViewQuery: !1,
                descendants: !1
            }, e)
        }
        ), al)
          , cl = g("ContentChild", (function(t, e) {
            return void 0 === e && (e = {}),
            Object(i.a)({
                selector: t,
                first: !0,
                isViewQuery: !1,
                descendants: !0
            }, e)
        }
        ), al)
          , ll = g("ViewChildren", (function(t, e) {
            return void 0 === e && (e = {}),
            Object(i.a)({
                selector: t,
                first: !1,
                isViewQuery: !0,
                descendants: !0
            }, e)
        }
        ), al)
          , ul = g("ViewChild", (function(t, e) {
            return Object(i.a)({
                selector: t,
                first: !0,
                isViewQuery: !0,
                descendants: !0
            }, e)
        }
        ), al);
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function dl(t) {
            var e = []
              , n = new Map;
            function i(e) {
                var i = n.get(e);
                if (!i) {
                    var r = t(e);
                    n.set(e, i = r.then(gl))
                }
                return i
            }
            return pl.forEach((function(t, n) {
                var r = [];
                t.templateUrl && r.push(i(t.templateUrl).then((function(e) {
                    t.template = e
                }
                )));
                var o = t.styleUrls
                  , a = t.styles || (t.styles = [])
                  , s = t.styles.length;
                o && o.forEach((function(e, n) {
                    a.push(""),
                    r.push(i(e).then((function(i) {
                        a[s + n] = i,
                        o.splice(o.indexOf(e), 1),
                        0 == o.length && (t.styleUrls = void 0)
                    }
                    )))
                }
                ));
                var c = Promise.all(r).then((function() {
                    return function(t) {
                        hl.delete(t)
                    }/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
                    (n)
                }
                ));
                e.push(c)
            }
            )),
            ml(),
            Promise.all(e).then((function() {}
            ))
        }
        var pl = new Map
          , hl = new Set;
        function fl(t) {
            return !!(t.templateUrl && !t.hasOwnProperty("template") || t.styleUrls && t.styleUrls.length)
        }
        function ml() {
            var t = pl;
            return pl = new Map,
            t
        }
        function gl(t) {
            return "string" == typeof t ? t : t.text()
        }
        function vl(t, e, n) {
            ngDevMode && De(sn(), "Expecting to be called in first template pass only");
            var i = n ? t.styles : null
              , r = n ? t.classes : null
              , o = 0;
            if (null !== e)
                for (var a = 0; a < e.length; a++) {
                    var s = e[a];
                    if ("number" == typeof s)
                        o = s;
                    else if (1 == o)
                        r = U(r, s);
                    else if (2 == o) {
                        i = U(i, s + ": " + e[++a] + ";")
                    }
                }
            n ? t.styles = i : t.stylesWithoutHost = i,
            n ? t.classes = r : t.classesWithoutHost = r
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var yl = null;
        function bl() {
            if (!yl) {
                var t = J.Symbol;
                if (t && t.iterator)
                    yl = t.iterator;
                else
                    for (var e = Object.getOwnPropertyNames(Map.prototype), n = 0; n < e.length; ++n) {
                        var i = e[n];
                        "entries" !== i && "size" !== i && Map.prototype[i] === Map.prototype.entries && (yl = i)
                    }
            }
            return yl
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function wl(t, e) {
            return t === e || "number" == typeof t && "number" == typeof e && isNaN(t) && isNaN(e)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Sl(t, e) {
            var n = Ml(t)
              , i = Ml(e);
            return n && i ? function(t, e, n) {
                var i = t[bl()]()
                  , r = e[bl()]();
                for (; ; ) {
                    var o = i.next()
                      , a = r.next();
                    if (o.done && a.done)
                        return !0;
                    if (o.done || a.done)
                        return !1;
                    if (!n(o.value, a.value))
                        return !1
                }
            }(t, e, Sl) : !(n || !(t && ("object" == typeof t || "function" == typeof t)) || i || !(e && ("object" == typeof e || "function" == typeof e))) || wl(t, e)
        }
        var xl = function() {
            function t(t) {
                this.wrapped = t
            }
            return t.wrap = function(e) {
                return new t(e)
            }
            ,
            t.unwrap = function(e) {
                return t.isWrapped(e) ? e.wrapped : e
            }
            ,
            t.isWrapped = function(e) {
                return e instanceof t
            }
            ,
            t
        }();
        function Ml(t) {
            return !!El(t) && (Array.isArray(t) || !(t instanceof Map) && bl()in t)
        }
        function El(t) {
            return null !== t && ("function" == typeof t || "object" == typeof t)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Cl(t, e, n) {
            return t[e] = n
        }
        function Al(t, e) {
            return ngDevMode && Ht(t, e),
            ngDevMode && jt(t[e], mo, "Stored value should never be NO_CHANGE."),
            t[e]
        }
        function Tl(t, e, n) {
            ngDevMode && jt(n, mo, "Incoming value should never be NO_CHANGE."),
            ngDevMode && Vt(e, t.length, "Slot should have been initialized to NO_CHANGE");
            var i = t[e];
            if (Object.is(i, n))
                return !1;
            if (ngDevMode && hn()) {
                var r = i !== mo ? i : void 0;
                if (!Sl(r, n)) {
                    var o = function(t, e, n, i) {
                        var r = t[1].data
                          , o = r[e];
                        if ("string" == typeof o)
                            return o.indexOf("�") > -1 ? no(t, e, e, o, i) : {
                                propName: o,
                                oldValue: n,
                                newValue: i
                            };
                        if (null === o) {
                            for (var a = e - 1; "string" != typeof r[a] && null === r[a + 1]; )
                                a--;
                            var s = r[a];
                            if ("string" == typeof s) {
                                var c = s.match(new RegExp("�","g"));
                                if (c && c.length - 1 > e - a)
                                    return no(t, a, e, s, i)
                            }
                        }
                        return {
                            propName: void 0,
                            oldValue: n,
                            newValue: i
                        }
                    }(t, e, r, n);
                    !function(t, e, n, i) {
                        var r = "ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value" + (i ? " for '" + i + "'" : "") + ": '" + e + "'. Current value: '" + n + "'.";
                        throw t && (r += " It seems like the view has been created after its parent and its children have been dirty checked. Has it been created in a change detection hook?"),
                        new Error(r)
                    }(i === mo, o.oldValue, o.newValue, o.propName)
                }
                return !1
            }
            return t[e] = n,
            !0
        }
        function Ol(t, e, n, i) {
            var r = Tl(t, e, n);
            return Tl(t, e + 1, i) || r
        }
        function _l(t, e, n, i, r) {
            var o = Ol(t, e, n, i);
            return Tl(t, e + 2, r) || o
        }
        function Pl(t, e, n, i, r, o) {
            var a = Ol(t, e, n, i);
            return Ol(t, e + 2, r, o) || a
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Il(t, e, n, i) {
            var r = an()
              , o = yn();
            if (Tl(r, o, e)) {
                var a = sn()
                  , s = Ln();
                Ga(s, r, t, e, n, i),
                ngDevMode && ns(a.data, s, "attr." + t, o)
            }
            return Il
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function kl(t, e) {
            ngDevMode && Vt(2, e.length, "should have at least 3 values"),
            ngDevMode && Rt(e.length % 2, 1, "should have an odd number of values");
            for (var n = !1, i = gn(), r = 1; r < e.length; r += 2)
                n = Tl(t, i++, e[r]) || n;
            if (vn(i),
            !n)
                return mo;
            var o = e[0];
            for (r = 1; r < e.length; r += 2)
                o += oi(e[r]) + e[r + 1];
            return o
        }
        function Dl(t, e, n, i) {
            return Tl(t, yn(), n) ? e + oi(n) + i : mo
        }
        function Rl(t, e, n, i, r, o) {
            var a = Ol(t, gn(), n, r);
            return bn(2),
            a ? e + oi(n) + i + oi(r) + o : mo
        }
        function Ll(t, e, n, i, r, o, a, s) {
            var c = _l(t, gn(), n, r, a);
            return bn(3),
            c ? e + oi(n) + i + oi(r) + o + oi(a) + s : mo
        }
        function Nl(t, e, n, i, r, o, a, s, c, l) {
            var u = Pl(t, gn(), n, r, a, c);
            return bn(4),
            u ? e + oi(n) + i + oi(r) + o + oi(a) + s + oi(c) + l : mo
        }
        function jl(t, e, n, i, r, o, a, s, c, l, u, d) {
            var p = gn()
              , h = Pl(t, p, n, r, a, c);
            return h = Tl(t, p + 4, u) || h,
            bn(5),
            h ? e + oi(n) + i + oi(r) + o + oi(a) + s + oi(c) + l + oi(u) + d : mo
        }
        function Vl(t, e, n, i, r, o, a, s, c, l, u, d, p, h) {
            var f = gn()
              , m = Pl(t, f, n, r, a, c);
            return m = Ol(t, f + 4, u, p) || m,
            bn(6),
            m ? e + oi(n) + i + oi(r) + o + oi(a) + s + oi(c) + l + oi(u) + d + oi(p) + h : mo
        }
        function Fl(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m) {
            var g = gn()
              , v = Pl(t, g, n, r, a, c);
            return v = _l(t, g + 4, u, p, f) || v,
            bn(7),
            v ? e + oi(n) + i + oi(r) + o + oi(a) + s + oi(c) + l + oi(u) + d + oi(p) + h + oi(f) + m : mo
        }
        function Ul(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g, v) {
            var y = gn()
              , b = Pl(t, y, n, r, a, c);
            return b = Pl(t, y + 4, u, p, f, g) || b,
            bn(8),
            b ? e + oi(n) + i + oi(r) + o + oi(a) + s + oi(c) + l + oi(u) + d + oi(p) + h + oi(f) + m + oi(g) + v : mo
        }
        function Bl(t, e, n, i, r, o) {
            var a = an()
              , s = Dl(a, e, n, i);
            if (s !== mo) {
                var c = Ln();
                Ga(c, a, t, s, r, o),
                ngDevMode && ns(sn().data, c, "attr." + t, gn() - 1, e, i)
            }
            return Bl
        }
        function zl(t, e, n, i, r, o, a, s) {
            var c = an()
              , l = Rl(c, e, n, i, r, o);
            if (l !== mo) {
                var u = Ln();
                Ga(u, c, t, l, a, s),
                ngDevMode && ns(sn().data, u, "attr." + t, gn() - 2, e, i, o)
            }
            return zl
        }
        function Gl(t, e, n, i, r, o, a, s, c, l) {
            var u = an()
              , d = Ll(u, e, n, i, r, o, a, s);
            if (d !== mo) {
                var p = Ln();
                Ga(p, u, t, d, c, l),
                ngDevMode && ns(sn().data, p, "attr." + t, gn() - 3, e, i, o, s)
            }
            return Gl
        }
        function Hl(t, e, n, i, r, o, a, s, c, l, u, d) {
            var p = an()
              , h = Nl(p, e, n, i, r, o, a, s, c, l);
            if (h !== mo) {
                var f = Ln();
                Ga(f, p, t, h, u, d),
                ngDevMode && ns(sn().data, f, "attr." + t, gn() - 4, e, i, o, s, l)
            }
            return Hl
        }
        function Wl(t, e, n, i, r, o, a, s, c, l, u, d, p, h) {
            var f = an()
              , m = jl(f, e, n, i, r, o, a, s, c, l, u, d);
            if (m !== mo) {
                var g = Ln();
                Ga(g, f, t, m, p, h),
                ngDevMode && ns(sn().data, g, "attr." + t, gn() - 5, e, i, o, s, l, d)
            }
            return Wl
        }
        function ql(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m) {
            var g = an()
              , v = Vl(g, e, n, i, r, o, a, s, c, l, u, d, p, h);
            if (v !== mo) {
                var y = Ln();
                Ga(y, g, t, v, f, m),
                ngDevMode && ns(sn().data, y, "attr." + t, gn() - 6, e, i, o, s, l, d, h)
            }
            return ql
        }
        function Xl(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g, v) {
            var y = an()
              , b = Fl(y, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m);
            if (b !== mo) {
                var w = Ln();
                Ga(w, y, t, b, g, v),
                ngDevMode && ns(sn().data, w, "attr." + t, gn() - 7, e, i, o, s, l, d, h, m)
            }
            return Xl
        }
        function Yl(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g, v, y, b) {
            var w = an()
              , S = Ul(w, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g, v);
            if (S !== mo) {
                var x = Ln();
                Ga(x, w, t, S, y, b),
                ngDevMode && ns(sn().data, x, "attr." + t, gn() - 8, e, i, o, s, l, d, h, m, v)
            }
            return Yl
        }
        function Kl(t, e, n, r) {
            var o = an()
              , a = kl(o, e);
            if (a !== mo) {
                var s = Ln();
                if (Ga(s, o, t, a, n, r),
                ngDevMode) {
                    for (var c = [e[0]], l = 2; l < e.length; l += 2)
                        c.push(e[l]);
                    ns.apply(void 0, Object(i.h)([sn().data, s, "attr." + t, gn() - c.length + 1], c))
                }
            }
            return Kl
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Zl(t) {
            var e = Yr(t);
            $a(e[1], e, t)
        }
        function Jl(t) {
            ngDevMode && Bt(t, "component");
            var e, n, i, r, o = Ja(Yr(t));
            ngDevMode && Bt(o[8], "rootContext should be defined"),
            e = o[8],
            n = 1,
            r = 0 === e.flags,
            e.flags |= n,
            r && e.clean == ua && (e.clean = new Promise((function(t) {
                return i = t
            }
            )),
            e.scheduler((function() {
                if (1 & e.flags && (e.flags &= -2,
                Qa(e)),
                2 & e.flags) {
                    e.flags &= -3;
                    var t = e.playerHandler;
                    t && t.flushPlayers()
                }
                e.clean = ua,
                i(null)
            }
            )))
        }
        function Ql(t, e, n, i, r, o, a, s) {
            var c = an()
              , l = sn()
              , u = t + 20
              , d = l.firstCreatePass ? /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
            function(t, e, n, i, r, o, a, s, c) {
                ngDevMode && De(e),
                ngDevMode && ngDevMode.firstCreatePass++;
                var l = e.consts
                  , u = fa(e, n[6], t, 0, a || null, Qe(l, s));
                Da(e, n, u, Qe(l, c)),
                Un(e, u);
                var d = u.tViews = Ma(2, -1, i, r, o, e.directiveRegistry, e.pipeRegistry, null, e.schemas, l)
                  , p = Aa(e, null, 2, -1, null, null);
                return p.injectorIndex = u.injectorIndex,
                d.node = p,
                null !== e.queries && (e.queries.template(e, u),
                d.queries = e.queries.embeddedTView(u)),
                u
            }(t, l, c, e, n, i, r, o, a) : l.data[u];
            un(d, !1);
            var p = c[11].createComment(ngDevMode ? "container" : "");
            Ts(l, c, p, d),
            Kr(p, c),
            Za(c, c[u] = Xa(p, c, p, d)),
            Ee(d) && wa(l, c, d),
            null != a && Sa(c, d, s)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function $l(t, e, n, i) {
            var r = n + 20;
            r >= t.data.length && (t.data[r] = null,
            t.blueprint[r] = null),
            e[r] = i
        }
        function tu(t) {
            return qe(en.lFrame.contextLView, t)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function eu(t, e) {
            void 0 === e && (e = v.Default);
            var n = an();
            return null == n ? vt(t, e) : Si(ln(), n, G(t), e)
        }
        function nu(t) {
            return wi(ln(), t)
        }
        function iu() {
            var t = ngDevMode ? "This constructor was not compatible with Dependency Injection." : "invalid";
            throw new Error(t)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function ru(t, e, n) {
            var i = an()
              , r = yn();
            if (Tl(i, r, e)) {
                var o = sn()
                  , a = Ln();
                Oa(o, a, i, t, e, i[11], n, !1),
                ngDevMode && ns(o.data, a, t, r)
            }
            return ru
        }
        function ou(t, e, n, i, r) {
            var o = r ? "class" : "style";
            cs(t, n, e.inputs[o], o, i)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function au(t, e, n, i, r, o, a) {
            ngDevMode && De(e),
            ngDevMode && ngDevMode.firstCreatePass++;
            var s = e.consts
              , c = Qe(s, o)
              , l = fa(e, n[6], t, 3, r, c)
              , u = Da(e, n, l, Qe(s, a));
            return ngDevMode && function(t, e, n, i, r) {
                if (null === t.schemas)
                    return;
                var o = i.tagName;
                if (!r && null !== o) {
                    if (("undefined" != typeof HTMLUnknownElement && HTMLUnknownElement && n instanceof HTMLUnknownElement || "undefined" != typeof customElements && o.indexOf("-") > -1 && !customElements.get(o)) && !Ia(t, 0, o)) {
                        var a = "'" + o + "' is not a known element:\n";
                        a += "1. If '" + o + "' is an Angular component, then verify that it is part of this module.\n",
                        o && o.indexOf("-") > -1 ? a += "2. If '" + o + "' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message." : a += "2. To allow any element add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component.",
                        console.warn(a)
                    }
                }
            }/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
            (e, 0, i, l, u),
            null !== l.attrs && vl(l, l.attrs, !1),
            null !== l.mergedAttrs && vl(l, l.mergedAttrs, !0),
            null !== e.queries && e.queries.elementStart(e, l),
            l
        }
        function su(t, e, n, i) {
            var r = an()
              , o = sn()
              , a = 20 + t;
            ngDevMode && Rt(gn(), o.bindingStartIndex, "elements should be created before any bindings"),
            ngDevMode && ngDevMode.rendererCreateElement++,
            ngDevMode && Ht(r, a);
            var s = r[11]
              , c = r[a] = pa(e, s, en.lFrame.currentNamespace)
              , l = o.firstCreatePass ? au(t, o, r, c, e, n, i) : o.data[a];
            un(l, !0);
            var u = l.mergedAttrs;
            null !== u && Zn(s, c, u);
            var d = l.classes;
            null !== d && Ls(s, c, d);
            var p = l.styles;
            null !== p && Rs(s, c, p),
            Ts(o, r, c, l),
            0 === en.lFrame.elementDepthCount && Kr(c, r),
            en.lFrame.elementDepthCount++,
            Ee(l) && (wa(o, r, l),
            ba(o, l, r)),
            null !== i && Sa(r, l)
        }
        function cu() {
            var t = ln();
            ngDevMode && Bt(t, "No parent node to close."),
            dn() ? pn() : (ngDevMode && _e(ln()),
            un(t = t.parent, !1));
            var e = t;
            ngDevMode && Xn(e, 3),
            en.lFrame.elementDepthCount--;
            var n = sn();
            n.firstCreatePass && (Un(n, t),
            xe(t) && n.queries.elementEnd(t)),
            null != e.classesWithoutHost && function(t) {
                return 0 != (16 & t.flags)
            }(e) && ou(n, e, an(), e.classesWithoutHost, !0),
            null != e.stylesWithoutHost && function(t) {
                return 0 != (32 & t.flags)
            }/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
            (e) && ou(n, e, an(), e.stylesWithoutHost, !1)
        }
        function lu(t, e, n, i) {
            su(t, e, n, i),
            cu()
        }
        function uu(t, e, n) {
            var i = an()
              , r = sn()
              , o = t + 20;
            ngDevMode && Ht(i, o),
            ngDevMode && Rt(gn(), r.bindingStartIndex, "element containers should be created before any bindings");
            var a = r.firstCreatePass ? function(t, e, n, i, r) {
                ngDevMode && ngDevMode.firstCreatePass++;
                var o = e.consts
                  , a = Qe(o, i)
                  , s = fa(e, n[6], t, 4, "ng-container", a);
                return null !== a && vl(s, a, !0),
                Da(e, n, s, Qe(o, r)),
                null !== e.queries && e.queries.elementStart(e, s),
                s
            }(t, r, i, e, n) : r.data[o];
            un(a, !0),
            ngDevMode && ngDevMode.rendererCreateComment++;
            var s = i[o] = i[11].createComment(ngDevMode ? "ng-container" : "");
            Ts(r, i, s, a),
            Kr(s, i),
            Ee(a) && (wa(r, i, a),
            ba(r, a, i)),
            null != n && Sa(i, a)
        }
        function du() {
            var t = ln()
              , e = sn();
            dn() ? pn() : (ngDevMode && _e(t),
            un(t = t.parent, !1)),
            ngDevMode && Xn(t, 4),
            e.firstCreatePass && (Un(e, t),
            xe(t) && e.queries.elementEnd(t))
        }
        function pu(t, e, n) {
            uu(t, e, n),
            du()
        }
        function hu() {
            return an()
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function fu(t) {
            return !!t && "function" == typeof t.then
        }
        function mu(t) {
            return !!t && "function" == typeof t.subscribe
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function gu(t, e, n, i) {
            void 0 === n && (n = !1);
            var r = an()
              , o = sn()
              , a = ln();
            return yu(o, r, r[11], a, t, e, n, i),
            gu
        }
        function vu(t, e, n, i) {
            void 0 === n && (n = !1);
            var r = ln()
              , o = an()
              , a = sn();
            return yu(a, o, as(xn(a.data), r, o), r, t, e, n, i),
            vu
        }
        function yu(t, e, n, i, r, o, a, s) {
            void 0 === a && (a = !1);
            var c = Ee(i)
              , l = t.firstCreatePass && (t.cleanup || (t.cleanup = []))
              , u = rs(e);
            ngDevMode && Yn(i, 3, 0, 4);
            var d = !0;
            if (3 === i.type) {
                var p = Ge(i, e)
                  , h = s ? s(p) : ne
                  , f = h.target || p
                  , m = u.length
                  , g = s ? function(t) {
                    return s(Be(t[i.index])).target
                }
                : i.index;
                if (Fe(n)) {
                    var v = null;
                    if (!s && c && (v = function(t, e, n, i) {
                        var r = t.cleanup;
                        if (null != r)
                            for (var o = 0; o < r.length - 1; o += 2) {
                                var a = r[o];
                                if (a === n && r[o + 1] === i) {
                                    var s = e[7]
                                      , c = r[o + 2];
                                    return s.length > c ? s[c] : null
                                }
                                "string" == typeof a && (o += 2)
                            }
                        return null
                    }(t, e, r, i.index)),
                    null !== v) {
                        (v.__ngLastListenerFn__ || v).__ngNextListenerFn__ = o,
                        v.__ngLastListenerFn__ = o,
                        d = !1
                    } else {
                        o = wu(i, e, o, !1);
                        var y = n.listen(h.name || f, r, o);
                        ngDevMode && ngDevMode.rendererAddEventListener++,
                        u.push(o, y),
                        l && l.push(r, g, m, m + 1)
                    }
                } else
                    o = wu(i, e, o, !0),
                    f.addEventListener(r, o, a),
                    ngDevMode && ngDevMode.rendererAddEventListener++,
                    u.push(o),
                    l && l.push(r, g, m, a)
            }
            var b, w = i.outputs;
            if (d && null !== w && (b = w[r])) {
                var S = b.length;
                if (S)
                    for (var x = 0; x < S; x += 2) {
                        var M = b[x];
                        ngDevMode && Ht(e, M);
                        var E = b[x + 1]
                          , C = e[M]
                          , A = C[E];
                        if (ngDevMode && !mu(A))
                            throw new Error("@Output " + E + " not initialized in '" + C.constructor.name + "'.");
                        var T = A.subscribe(o)
                          , O = u.length;
                        u.push(o, T),
                        l && l.push(r, i.index, O, -(O + 1))
                    }
            }
        }
        function bu(t, e, n) {
            try {
                return !1 !== e(n)
            } catch (e) {
                return ss(t, e),
                !1
            }
        }
        function wu(t, e, n, i) {
            return function r(o) {
                if (o === Function)
                    return n;
                var a = 2 & t.flags ? Xe(t.index, e) : e;
                0 == (32 & e[2]) && Ja(a);
                for (var s = bu(e, n, o), c = r.__ngNextListenerFn__; c; )
                    s = bu(e, c, o) && s,
                    c = c.__ngNextListenerFn__;
                return i && !1 === s && (o.preventDefault(),
                o.returnValue = !1),
                s
            }
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Su(t) {
            return void 0 === t && (t = 1),
            kn(t)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function xu(t, e) {
            for (var n = null, i = function(t) {
                var e = t.attrs;
                if (null != e) {
                    var n = e.indexOf(5);
                    if (0 == (1 & n))
                        return e[n + 1]
                }
                return null
            }(t), r = 0; r < e.length; r++) {
                var o = e[r];
                if ("*" !== o) {
                    if (null === i ? uo(t, o, !0) : po(i, o))
                        return r
                } else
                    n = r
            }
            return n
        }
        function Mu(t) {
            var e = an()[16][6];
            if (!e.projection)
                for (var n = t ? t.length : 1, i = e.projection = Zt(n, null), r = i.slice(), o = e.child; null !== o; ) {
                    var a = t ? xu(o, t) : 0;
                    null !== a && (r[a] ? r[a].projectionNext = o : i[a] = o,
                    r[a] = o),
                    o = o.next
                }
        }
        var Eu = !1;
        function Cu(t) {
            Eu = t
        }
        function Au(t, e, n) {
            void 0 === e && (e = 0);
            var i = an()
              , r = sn()
              , o = fa(r, i[6], t, 1, null, n || null);
            null === o.projection && (o.projection = e),
            pn(),
            Eu || ks(r, i, o)
        }
        function Tu(t, e, n) {
            return Ou(t, "", e, "", n),
            Tu
        }
        function Ou(t, e, n, i, r) {
            var o = an()
              , a = Dl(o, e, n, i);
            if (a !== mo) {
                var s = sn()
                  , c = Ln();
                Oa(s, c, o, t, a, o[11], r, !1),
                ngDevMode && ns(s.data, c, t, gn() - 1, e, i)
            }
            return Ou
        }
        function _u(t, e, n, i, r, o, a) {
            var s = an()
              , c = Rl(s, e, n, i, r, o);
            if (c !== mo) {
                var l = sn()
                  , u = Ln();
                Oa(l, u, s, t, c, s[11], a, !1),
                ngDevMode && ns(l.data, u, t, gn() - 2, e, i, o)
            }
            return _u
        }
        function Pu(t, e, n, i, r, o, a, s, c) {
            var l = an()
              , u = Ll(l, e, n, i, r, o, a, s);
            if (u !== mo) {
                var d = sn()
                  , p = Ln();
                Oa(d, p, l, t, u, l[11], c, !1),
                ngDevMode && ns(d.data, p, t, gn() - 3, e, i, o, s)
            }
            return Pu
        }
        function Iu(t, e, n, i, r, o, a, s, c, l, u) {
            var d = an()
              , p = Nl(d, e, n, i, r, o, a, s, c, l);
            if (p !== mo) {
                var h = sn()
                  , f = Ln();
                Oa(h, f, d, t, p, d[11], u, !1),
                ngDevMode && ns(h.data, f, t, gn() - 4, e, i, o, s, l)
            }
            return Iu
        }
        function ku(t, e, n, i, r, o, a, s, c, l, u, d, p) {
            var h = an()
              , f = jl(h, e, n, i, r, o, a, s, c, l, u, d);
            if (f !== mo) {
                var m = sn()
                  , g = Ln();
                Oa(m, g, h, t, f, h[11], p, !1),
                ngDevMode && ns(m.data, g, t, gn() - 5, e, i, o, s, l, d)
            }
            return ku
        }
        function Du(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f) {
            var m = an()
              , g = Vl(m, e, n, i, r, o, a, s, c, l, u, d, p, h);
            if (g !== mo) {
                var v = sn()
                  , y = Ln();
                Oa(v, y, m, t, g, m[11], f, !1),
                ngDevMode && ns(v.data, y, t, gn() - 6, e, i, o, s, l, d, h)
            }
            return Du
        }
        function Ru(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g) {
            var v = an()
              , y = Fl(v, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m);
            if (y !== mo) {
                var b = sn()
                  , w = Ln();
                Oa(b, w, v, t, y, v[11], g, !1),
                ngDevMode && ns(b.data, w, t, gn() - 7, e, i, o, s, l, d, h, m)
            }
            return Ru
        }
        function Lu(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g, v, y) {
            var b = an()
              , w = Ul(b, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g, v);
            if (w !== mo) {
                var S = sn()
                  , x = Ln();
                Oa(S, x, b, t, w, b[11], y, !1),
                ngDevMode && ns(S.data, x, t, gn() - 8, e, i, o, s, l, d, h, m, v)
            }
            return Lu
        }
        function Nu(t, e, n) {
            var r = an()
              , o = kl(r, e);
            if (o !== mo) {
                var a = sn()
                  , s = Ln();
                if (Oa(a, s, r, t, o, r[11], n, !1),
                ngDevMode) {
                    for (var c = [e[0]], l = 2; l < e.length; l += 2)
                        c.push(e[l]);
                    ns.apply(void 0, Object(i.h)([a.data, s, t, gn() - c.length + 1], c))
                }
            }
            return Nu
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var ju = [];
        function Vu(t, e, n, i, r, o) {
            ngDevMode && Re(sn());
            var a = o ? e.classBindings : e.styleBindings
              , s = Oo(a)
              , c = Io(a);
            t[i] = n;
            var l, u, d, p = !1;
            if (Array.isArray(n)) {
                var h = n;
                (null === (l = h[1]) || $t(h, l) > 0) && (p = !0)
            } else
                l = n;
            if (r)
                if (0 !== c) {
                    var f = Oo(t[s + 1]);
                    t[i + 1] = To(f, s),
                    0 !== f && (t[f + 1] = ko(t[f + 1], i)),
                    t[s + 1] = (u = t[s + 1],
                    d = i,
                    ngDevMode && It(u, "expected number"),
                    ngDevMode && kt(d, 0, 32767),
                    131071 & u | d << 17)
                } else
                    t[i + 1] = To(s, 0),
                    0 !== s && (t[s + 1] = ko(t[s + 1], i)),
                    s = i;
            else
                t[i + 1] = To(c, 0),
                ngDevMode && Rt(0 !== s && 0 === c, !1, "Adding template bindings after hostBindings is not allowed."),
                0 === s ? s = i : t[c + 1] = ko(t[c + 1], i),
                c = i;
            p && (t[i + 1] = Po(t[i + 1])),
            Fu(t, l, i, !0, o),
            Fu(t, l, i, !1, o),
            function(t, e, n, i, r) {
                var o = r ? t.residualClasses : t.residualStyles;
                null != o && "string" == typeof e && $t(o, e) >= 0 && (n[i + 1] = Ro(n[i + 1]))
            }(e, l, t, i, o),
            a = To(s, c),
            o ? e.classBindings = a : e.styleBindings = a
        }
        function Fu(t, e, n, i, r) {
            for (var o = t[n + 1], a = null === e, s = i ? Oo(o) : Io(o), c = !1; 0 !== s && (!1 === c || a); ) {
                ngDevMode && Ht(t, s);
                var l = t[s]
                  , u = t[s + 1];
                Uu(l, e) && (c = !0,
                t[s + 1] = i ? Ro(u) : Po(u)),
                s = i ? Oo(u) : Io(u)
            }
            c && (t[n + 1] = i ? Po(o) : Ro(o))
        }
        function Uu(t, e) {
            return ngDevMode && Lt(Array.isArray(e), !0, "Expected that 'tStylingKey' has been unwrapped"),
            null === t || null == e || (Array.isArray(t) ? t[1] : t) === e || !(!Array.isArray(t) || "string" != typeof e) && $t(t, e) >= 0
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        ("undefined" == typeof ngDevMode || ngDevMode) && at() && (Object.freeze({}),
        Object.freeze(ju))/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        ;
        var Bu = {
            textEnd: 0,
            key: 0,
            keyEnd: 0,
            value: 0,
            valueEnd: 0
        };
        function zu(t) {
            return t.substring(Bu.key, Bu.keyEnd)
        }
        function Gu(t) {
            return t.substring(Bu.value, Bu.valueEnd)
        }
        function Hu(t, e) {
            var n = Bu.textEnd;
            return n === e ? -1 : (e = Bu.keyEnd = function(t, e, n) {
                for (; e < n && t.charCodeAt(e) > 32; )
                    e++;
                return e
            }(t, Bu.key = e, n),
            Xu(t, e, n))
        }
        function Wu(t, e) {
            var n = Bu.textEnd
              , i = Bu.key = Xu(t, e, n);
            return n === i ? -1 : (i = Bu.keyEnd = function(t, e, n) {
                var i;
                for (; e < n && (45 === (i = t.charCodeAt(e)) || 95 === i || (-33 & i) >= 65 && (-33 & i) <= 90); )
                    e++;
                return e
            }(t, i, n),
            i = Yu(t, i, n, 58),
            i = Bu.value = Xu(t, i, n),
            i = Bu.valueEnd = function(t, e, n) {
                var i = -1
                  , r = -1
                  , o = -1
                  , a = e
                  , s = a;
                for (; a < n; ) {
                    var c = t.charCodeAt(a++);
                    if (59 === c)
                        return s;
                    34 === c || 39 === c ? s = a = Ku(t, c, a, n) : e === a - 4 && 85 === o && 82 === r && 76 === i && 40 === c ? s = a = Ku(t, 41, a, n) : c > 32 && (s = a),
                    o = r,
                    r = i,
                    i = -33 & c
                }
                return s
            }(t, i, n),
            Yu(t, i, n, 59))
        }
        function qu(t) {
            Bu.key = 0,
            Bu.keyEnd = 0,
            Bu.value = 0,
            Bu.valueEnd = 0,
            Bu.textEnd = t.length
        }
        function Xu(t, e, n) {
            for (; e < n && t.charCodeAt(e) <= 32; )
                e++;
            return e
        }
        function Yu(t, e, n, i) {
            return (e = Xu(t, e, n)) < n && (ngDevMode && t.charCodeAt(e) !== i && Zu(t, String.fromCharCode(i), e),
            e++),
            e
        }
        function Ku(t, e, n, i) {
            for (var r = -1, o = n; o < i; ) {
                var a = t.charCodeAt(o++);
                if (a == e && 92 !== r)
                    return o;
                r = 92 == a && 92 === r ? 0 : a
            }
            throw ngDevMode ? Zu(t, String.fromCharCode(e), i) : new Error
        }
        function Zu(t, e, n) {
            throw ngDevMode && Rt("string" == typeof t, !0, "String expected here"),
            zt("Malformed style at location " + n + " in string '" + t.substring(0, n) + "[>>" + t.substring(n, n + 1) + "<<]" + t.substr(n + 1) + "'. Expecting '" + e + "'.")
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Ju(t) {
            Fn(t)
        }
        function Qu(t, e, n) {
            return rd(t, e, n, !1),
            Qu
        }
        function $u(t, e) {
            return rd(t, e, null, !0),
            $u
        }
        function td(t) {
            od(ud, ed, t, !1)
        }
        function ed(t, e) {
            for (var n = function(t) {
                return qu(t),
                Wu(t, Xu(t, 0, Bu.textEnd))
            }(e); n >= 0; n = Wu(e, n))
                ud(t, zu(e), Gu(e))
        }
        function nd(t) {
            od(Jt, id, t, !0)
        }
        function id(t, e) {
            for (var n = function(t) {
                return qu(t),
                Hu(t, Xu(t, 0, Bu.textEnd))
            }(e); n >= 0; n = Hu(e, n))
                Jt(t, zu(e), !0)
        }
        function rd(t, e, n, i) {
            var r, o = an(), a = sn(), s = bn(2);
            if (a.firstUpdatePass && sd(a, t, s, i),
            e !== mo && Tl(o, s, e)) {
                var c = void 0;
                null == n && (c = null === (r = en.lFrame) ? null : r.currentSanitizer) && (n = c),
                dd(a, a.data[Dn() + 20], o, o[11], t, o[s + 1] = function(t, e) {
                    null == t || ("function" == typeof e ? t = e(t) : "string" == typeof e ? t += e : "object" == typeof t && (t = F(Gi(t))));
                    return t
                }(e, n), i, s)
            }
        }
        function od(t, e, n, i) {
            var r = sn()
              , o = bn(2);
            r.firstUpdatePass && sd(r, null, o, i);
            var a = an();
            if (n !== mo && Tl(a, o, n)) {
                var s = r.data[Dn() + 20];
                if (fd(s, i) && !ad(r, o)) {
                    if (ngDevMode) {
                        var c = r.data[o];
                        Rt(Array.isArray(c) ? c[1] : c, !1, "Styling linked list shadow input should be marked as 'false'")
                    }
                    var l = i ? s.classesWithoutHost : s.stylesWithoutHost;
                    ngDevMode && !1 === i && null !== l && Rt(l.endsWith(";"), !0, "Expecting static portion to end with ';'"),
                    null !== l && (n = U(l, n || "")),
                    ou(r, s, a, n, i)
                } else
                    !function(t, e, n, i, r, o, a, s) {
                        r === mo && (r = ju);
                        var c = 0
                          , l = 0
                          , u = 0 < r.length ? r[0] : null
                          , d = 0 < o.length ? o[0] : null;
                        for (; null !== u || null !== d; ) {
                            ngDevMode && Vt(c, 999, "Are we stuck in infinite loop?"),
                            ngDevMode && Vt(l, 999, "Are we stuck in infinite loop?");
                            var p = c < r.length ? r[c + 1] : void 0
                              , h = l < o.length ? o[l + 1] : void 0
                              , f = null
                              , m = void 0;
                            u === d ? (c += 2,
                            l += 2,
                            p !== h && (f = d,
                            m = h)) : null === d || null !== u && u < d ? (c += 2,
                            f = u) : (ngDevMode && Bt(d, "Expecting to have a valid key"),
                            l += 2,
                            f = d,
                            m = h),
                            null !== f && dd(t, e, n, i, f, m, a, s),
                            u = c < r.length ? r[c] : null,
                            d = l < o.length ? o[l] : null
                        }
                    }(r, s, a, a[11], a[o + 1], a[o + 1] = function(t, e, n) {
                        if (null == n || "" === n)
                            return ju;
                        var i = []
                          , r = Gi(n);
                        if (Array.isArray(r))
                            for (var o = 0; o < r.length; o++)
                                t(i, r[o], !0);
                        else if ("object" == typeof r)
                            for (var a in r)
                                r.hasOwnProperty(a) && t(i, a, r[a]);
                        else
                            "string" == typeof r ? e(i, r) : ngDevMode && zt("Unsupported styling type " + typeof r + ": " + r);
                        return i
                    }(t, e, n), i, o)
            }
        }
        function ad(t, e) {
            return e >= t.expandoStartIndex
        }
        function sd(t, e, n, i) {
            ngDevMode && Re(t);
            var r = t.data;
            if (null === r[n + 1]) {
                var o = r[Dn() + 20]
                  , a = ad(t, n);
                fd(o, i) && null === e && !a && (e = !1),
                e = function(t, e, n, i) {
                    var r = xn(t)
                      , o = i ? e.residualClasses : e.residualStyles;
                    if (null === r) {
                        0 === (i ? e.classBindings : e.styleBindings) && (n = ld(n = cd(null, t, e, n, i), e.attrs, i),
                        o = null)
                    } else {
                        var a = e.directiveStylingLast;
                        if (-1 === a || t[a] !== r)
                            if (n = cd(r, t, e, n, i),
                            null === o) {
                                var s = function(t, e, n) {
                                    var i = n ? e.classBindings : e.styleBindings;
                                    if (0 === Io(i))
                                        return;
                                    return t[Oo(i)]
                                }(t, e, i);
                                void 0 !== s && Array.isArray(s) && (s = ld(s = cd(null, t, e, s[1], i), e.attrs, i),
                                function(t, e, n, i) {
                                    var r = n ? e.classBindings : e.styleBindings;
                                    ngDevMode && Lt(Io(r), 0, "Expecting to have at least one template styling binding."),
                                    t[Oo(r)] = i
                                }(t, e, i, s))
                            } else
                                o = function(t, e, n) {
                                    var i = void 0
                                      , r = e.directiveEnd;
                                    ngDevMode && Lt(e.directiveStylingLast, -1, "By the time this function gets called at least one hostBindings-node styling instruction must have executed.");
                                    for (var o = 1 + e.directiveStylingLast; o < r; o++) {
                                        var a = t[o].hostAttrs;
                                        i = ld(i, a, n)
                                    }
                                    return ld(i, e.attrs, n)
                                }(t, e, i)
                    }
                    void 0 !== o && (i ? e.residualClasses = o : e.residualStyles = o);
                    return n
                }(r, o, e, i),
                Vu(r, o, e, n, a, i)
            }
        }
        function cd(t, e, n, i, r) {
            var o = null
              , a = n.directiveEnd
              , s = n.directiveStylingLast;
            for (-1 === s ? s = n.directiveStart : s++; s < a && (o = e[s],
            ngDevMode && Bt(o, "expected to be defined"),
            i = ld(i, o.hostAttrs, r),
            o !== t); )
                s++;
            return null !== t && (n.directiveStylingLast = s),
            i
        }
        function ld(t, e, n) {
            var i = n ? 1 : 2
              , r = -1;
            if (null !== e)
                for (var o = 0; o < e.length; o++) {
                    var a = e[o];
                    "number" == typeof a ? r = a : r === i && (Array.isArray(t) || (t = void 0 === t ? [] : ["", t]),
                    Jt(t, a, !!n || e[++o]))
                }
            return void 0 === t ? null : t
        }
        function ud(t, e, n) {
            Ur(e) && (n = Dr(n)),
            Jt(t, e, n)
        }
        function dd(t, e, n, i, r, o, a, s) {
            if (3 === e.type) {
                var c = t.data
                  , l = c[s + 1];
                if (!hd(Do(l) ? pd(c, e, n, r, Io(l), a) : void 0))
                    hd(o) || _o(l) && (o = pd(c, null, n, r, s, a)),
                    function(t, e, n, i, r) {
                        var o = Fe(t);
                        if (e)
                            r ? (ngDevMode && ngDevMode.rendererAddClass++,
                            o ? t.addClass(n, i) : (ngDevMode && Bt(n.classList, "HTMLElement expected"),
                            n.classList.add(i))) : (ngDevMode && ngDevMode.rendererRemoveClass++,
                            o ? t.removeClass(n, i) : n.classList.remove(i));
                        else {
                            var a = -1 == i.indexOf("-") ? void 0 : 2;
                            null == r ? (ngDevMode && ngDevMode.rendererRemoveStyle++,
                            o ? t.removeStyle(n, i, a) : n.style.removeProperty(i)) : (ngDevMode && ngDevMode.rendererSetStyle++,
                            o ? t.setStyle(n, i, r, a) : (ngDevMode && Bt(n.style, "HTMLElement expected"),
                            n.style.setProperty(i, r)))
                        }
                    }(i, a, ze(Dn(), n), r, o)
            }
        }
        function pd(t, e, n, i, r, o) {
            for (var a = null === e, s = void 0; r > 0; ) {
                var c = t[r]
                  , l = Array.isArray(c)
                  , u = l ? c[1] : c
                  , d = null === u
                  , p = n[r + 1];
                p === mo && (p = d ? ju : void 0);
                var h = d ? Qt(p, i) : u === i ? p : void 0;
                if (l && !hd(h) && (h = Qt(c, i)),
                hd(h) && (s = h,
                a))
                    return s;
                var f = t[r + 1];
                r = a ? Oo(f) : Io(f)
            }
            if (null !== e) {
                var m = o ? e.residualClasses : e.residualStyles;
                null != m && (s = Qt(m, i))
            }
            return s
        }
        function hd(t) {
            return void 0 !== t
        }
        function fd(t, e) {
            return 0 != (t.flags & (e ? 16 : 32))
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function md(t, e) {
            void 0 === e && (e = "");
            var n = an()
              , i = sn()
              , r = t + 20;
            ngDevMode && Rt(gn(), i.bindingStartIndex, "text nodes should be created before any bindings"),
            ngDevMode && Ht(n, r);
            var o = i.firstCreatePass ? fa(i, n[6], t, 3, null, null) : i.data[r]
              , a = n[r] = hs(e, n[11]);
            Ts(i, n, a, o),
            un(o, !1)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function gd(t) {
            return vd("", t, ""),
            gd
        }
        function vd(t, e, n) {
            var i = an()
              , r = Dl(i, t, e, n);
            return r !== mo && ls(i, Dn(), r),
            vd
        }
        function yd(t, e, n, i, r) {
            var o = an()
              , a = Rl(o, t, e, n, i, r);
            return a !== mo && ls(o, Dn(), a),
            yd
        }
        function bd(t, e, n, i, r, o, a) {
            var s = an()
              , c = Ll(s, t, e, n, i, r, o, a);
            return c !== mo && ls(s, Dn(), c),
            bd
        }
        function wd(t, e, n, i, r, o, a, s, c) {
            var l = an()
              , u = Nl(l, t, e, n, i, r, o, a, s, c);
            return u !== mo && ls(l, Dn(), u),
            wd
        }
        function Sd(t, e, n, i, r, o, a, s, c, l, u) {
            var d = an()
              , p = jl(d, t, e, n, i, r, o, a, s, c, l, u);
            return p !== mo && ls(d, Dn(), p),
            Sd
        }
        function xd(t, e, n, i, r, o, a, s, c, l, u, d, p) {
            var h = an()
              , f = Vl(h, t, e, n, i, r, o, a, s, c, l, u, d, p);
            return f !== mo && ls(h, Dn(), f),
            xd
        }
        function Md(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f) {
            var m = an()
              , g = Fl(m, t, e, n, i, r, o, a, s, c, l, u, d, p, h, f);
            return g !== mo && ls(m, Dn(), g),
            Md
        }
        function Ed(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g) {
            var v = an()
              , y = Ul(v, t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g);
            return y !== mo && ls(v, Dn(), y),
            Ed
        }
        function Cd(t) {
            var e = an()
              , n = kl(e, t);
            return n !== mo && ls(e, Dn(), n),
            Cd
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Ad(t, e, n) {
            od(Jt, id, Dl(an(), t, e, n), !0)
        }
        function Td(t, e, n, i, r) {
            od(Jt, id, Rl(an(), t, e, n, i, r), !0)
        }
        function Od(t, e, n, i, r, o, a) {
            od(Jt, id, Ll(an(), t, e, n, i, r, o, a), !0)
        }
        function _d(t, e, n, i, r, o, a, s, c) {
            od(Jt, id, Nl(an(), t, e, n, i, r, o, a, s, c), !0)
        }
        function Pd(t, e, n, i, r, o, a, s, c, l, u) {
            od(Jt, id, jl(an(), t, e, n, i, r, o, a, s, c, l, u), !0)
        }
        function Id(t, e, n, i, r, o, a, s, c, l, u, d, p) {
            od(Jt, id, Vl(an(), t, e, n, i, r, o, a, s, c, l, u, d, p), !0)
        }
        function kd(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f) {
            od(Jt, id, Fl(an(), t, e, n, i, r, o, a, s, c, l, u, d, p, h, f), !0)
        }
        function Dd(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g) {
            od(Jt, id, Ul(an(), t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g), !0)
        }
        function Rd(t) {
            od(Jt, id, kl(an(), t), !0)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Ld(t, e, n) {
            td(Dl(an(), t, e, n))
        }
        function Nd(t, e, n, i, r) {
            td(Rl(an(), t, e, n, i, r))
        }
        function jd(t, e, n, i, r, o, a) {
            td(Ll(an(), t, e, n, i, r, o, a))
        }
        function Vd(t, e, n, i, r, o, a, s, c) {
            td(Nl(an(), t, e, n, i, r, o, a, s, c))
        }
        function Fd(t, e, n, i, r, o, a, s, c, l, u) {
            td(jl(an(), t, e, n, i, r, o, a, s, c, l, u))
        }
        function Ud(t, e, n, i, r, o, a, s, c, l, u, d, p) {
            td(Vl(an(), t, e, n, i, r, o, a, s, c, l, u, d, p))
        }
        function Bd(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f) {
            td(Fl(an(), t, e, n, i, r, o, a, s, c, l, u, d, p, h, f))
        }
        function zd(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g) {
            td(Ul(an(), t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g))
        }
        function Gd(t) {
            td(kl(an(), t))
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Hd(t, e, n, i, r) {
            return rd(t, Dl(an(), e, n, i), r, !1),
            Hd
        }
        function Wd(t, e, n, i, r, o, a) {
            return rd(t, Rl(an(), e, n, i, r, o), a, !1),
            Wd
        }
        function qd(t, e, n, i, r, o, a, s, c) {
            return rd(t, Ll(an(), e, n, i, r, o, a, s), c, !1),
            qd
        }
        function Xd(t, e, n, i, r, o, a, s, c, l, u) {
            return rd(t, Nl(an(), e, n, i, r, o, a, s, c, l), u, !1),
            Xd
        }
        function Yd(t, e, n, i, r, o, a, s, c, l, u, d, p) {
            return rd(t, jl(an(), e, n, i, r, o, a, s, c, l, u, d), p, !1),
            Yd
        }
        function Kd(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f) {
            return rd(t, Vl(an(), e, n, i, r, o, a, s, c, l, u, d, p, h), f, !1),
            Kd
        }
        function Zd(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g) {
            return rd(t, Fl(an(), e, n, i, r, o, a, s, c, l, u, d, p, h, f, m), g, !1),
            Zd
        }
        function Jd(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g, v, y) {
            return rd(t, Ul(an(), e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g, v), y, !1),
            Jd
        }
        function Qd(t, e, n) {
            return rd(t, kl(an(), e), n, !1),
            Qd
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function $d(t, e, n) {
            var i = an()
              , r = yn();
            if (Tl(i, r, e)) {
                var o = sn()
                  , a = Ln();
                Oa(o, a, i, t, e, i[11], n, !0),
                ngDevMode && ns(o.data, a, t, r)
            }
            return $d
        }
        function tp(t, e, n) {
            var i = an()
              , r = yn();
            if (Tl(i, r, e)) {
                var o = sn()
                  , a = Ln();
                Oa(o, a, i, t, e, as(xn(o.data), a, i), n, !0),
                ngDevMode && ns(o.data, a, t, r)
            }
            return tp
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function ep(t) {
            dp(t);
            var e, n, i, r, o = sp(t, !1);
            return null === o ? null : (void 0 === o.component && (o.component = (e = o.nodeIndex,
            n = o.lView,
            i = n[1].data[e],
            r = i.directiveStart,
            2 & i.flags ? n[r] : null)),
            o.component)
        }
        function np(t) {
            dp(t);
            var e = sp(t, !1);
            return null === e ? null : e.lView[8]
        }
        function ip(t) {
            var e = sp(t, !1);
            if (null === e)
                return null;
            var n, i = e.lView;
            for (ngDevMode && ke(i); null === i[0] && (n = go(i)); )
                i = n;
            return 512 & i[2] ? null : i[8]
        }
        function rp(t) {
            return Object(i.h)(yo(t).components)
        }
        function op(t) {
            var e = sp(t, !1);
            if (null === e)
                return Pc.NULL;
            var n = e.lView[1].data[e.nodeIndex];
            return new Oi(n,e.lView)
        }
        function ap(t) {
            var e = sp(t);
            return void 0 === e.directives && (e.directives = $r(e.nodeIndex, e.lView, !1)),
            null === e.directives ? [] : Object(i.h)(e.directives)
        }
        function sp(t, e) {
            void 0 === e && (e = !0);
            var n = qr(t);
            if (!n && e)
                throw new Error(ngDevMode ? "Unable to find context associated with " + ai(t) : "Invalid ng target");
            return n
        }
        function cp(t) {
            return qr(t).native
        }
        function lp(t) {
            dp(t);
            var e = sp(t, !1);
            if (null === e)
                return [];
            var n = e.lView
              , i = n[1]
              , r = n[7]
              , o = i.cleanup
              , a = [];
            if (o && r)
                for (var s = 0; s < o.length; ) {
                    var c = o[s++]
                      , l = o[s++];
                    if ("string" == typeof c) {
                        var u = c
                          , d = Be(n[l])
                          , p = r[o[s++]]
                          , h = o[s++]
                          , f = "boolean" == typeof h || h >= 0 ? "dom" : "output"
                          , m = "boolean" == typeof h && h;
                        t == d && a.push({
                            element: t,
                            name: u,
                            callback: p,
                            useCapture: m,
                            type: f
                        })
                    }
                }
            return a.sort(up),
            a
        }
        function up(t, e) {
            return t.name == e.name ? 0 : t.name < e.name ? -1 : 1
        }
        function dp(t) {
            if ("undefined" != typeof Element && !(t instanceof Element))
                throw new Error("Expecting instance of DOM Element")
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function pp(t) {
            Jl(t),
            rp(t).forEach((function(t) {
                return Zl(t)
            }
            ))
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var hp = !1;
        function fp() {
            hp || (hp = !0,
            mp("getComponent", ep),
            mp("getContext", np),
            mp("getListeners", lp),
            mp("getOwningComponent", ip),
            mp("getHostElement", cp),
            mp("getInjector", op),
            mp("getRootComponents", rp),
            mp("getDirectives", ap),
            mp("applyChanges", pp))
        }
        function mp(t, e) {
            if ("undefined" == typeof COMPILED || !COMPILED) {
                var n = J;
                if (ngDevMode && Bt(e, "function not defined"),
                n) {
                    var i = n.ng;
                    i || (i = n.ng = {}),
                    i[t] = e
                }
            }
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function gp(t, e) {
            void 0 === e && (e = {}),
            ngDevMode && fp(),
            ngDevMode && Oe(t);
            var n = e.rendererFactory || Ue
              , i = e.sanitizer || null
              , r = me(t);
            r.type != t && (r.type = t);
            var o, a = r.selectors[0][0], s = Ca(n.createRenderer(null, null), e.host || a, r.encapsulation), c = r.onPush ? 576 : 528, l = bp(e.scheduler, e.playerHandler), u = n.createRenderer(s, r), d = Ma(0, -1, null, 1, 0, null, null, null, null, null), p = ha(null, d, l, c, null, null, n, u, void 0, e.injector || null);
            An(p, null);
            try {
                n.begin && n.begin(),
                o = yp(vp(s, r, p, n, u, i), r, p, l, e.hostFeatures || null),
                ma(d, p, null),
                ga(d, p, null, null)
            } finally {
                In(),
                n.end && n.end()
            }
            return o
        }
        function vp(t, e, n, i, r, o) {
            var a = n[1];
            ngDevMode && Ht(n, 20),
            n[20] = t;
            var s = fa(a, null, 0, 3, null, null)
              , c = s.mergedAttrs = e.hostAttrs;
            null !== c && (vl(s, c, !0),
            null !== t && (Zn(r, t, c),
            null !== s.classes && Ls(r, t, s.classes),
            null !== s.styles && Rs(r, t, s.styles)));
            var l = i.createRenderer(t, e)
              , u = ha(n, xa(e), null, e.onPush ? 64 : 16, n[20], s, i, l, o);
            return a.firstCreatePass && (bi(mi(s, n), a, e.type),
            Va(a, s),
            Ua(s, n.length, 1)),
            Za(n, u),
            n[20] = u
        }
        function yp(t, e, n, i, r) {
            var o = n[1]
              , a = function(t, e, n) {
                var i = ln();
                t.firstCreatePass && (n.providersResolver && n.providersResolver(n),
                ja(t, i, 1),
                Ba(t, e, n));
                var r = Ci(e, t, e.length - 1, i);
                Kr(r, e);
                var o = Ge(i, e);
                return o && Kr(o, e),
                r
            }(o, n, e);
            i.components.push(a),
            t[8] = a,
            r && r.forEach((function(t) {
                return t(a, e)
            }
            )),
            e.contentQueries && e.contentQueries(1, a, n.length - 1);
            var s = ln();
            if (o.firstCreatePass && (null !== e.hostBindings || null !== e.hostAttrs)) {
                Rn(s.index - 20);
                var c = n[1];
                Ra(c, e),
                La(c, n, e.hostVars),
                Na(e, a)
            }
            return a
        }
        function bp(t, e) {
            return {
                components: [],
                scheduler: t || si,
                clean: is,
                playerHandler: e || null,
                flags: 0
            }
        }
        function wp(t, e) {
            var n = Ke(t)[1]
              , i = n.data.length - 1;
            Un(n, {
                directiveStart: i,
                directiveEnd: i + 1
            })
        }
        function Sp(t) {
            return yo(t).clean
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function xp(t) {
            return Object.getPrototypeOf(t.prototype).constructor
        }
        function Mp(t) {
            for (var e = xp(t.type), n = !0, i = [t]; e; ) {
                var r = void 0;
                if (Ce(t))
                    r = e.ɵcmp || e.ɵdir;
                else {
                    if (e.ɵcmp)
                        throw new Error("Directives cannot inherit Components");
                    r = e.ɵdir
                }
                if (r) {
                    if (n) {
                        i.push(r);
                        var o = t;
                        o.inputs = Ep(t.inputs),
                        o.declaredInputs = Ep(t.declaredInputs),
                        o.outputs = Ep(t.outputs);
                        var a = r.hostBindings;
                        a && Tp(t, a);
                        var s = r.viewQuery
                          , c = r.contentQueries;
                        if (s && Cp(t, s),
                        c && Ap(t, c),
                        T(t.inputs, r.inputs),
                        T(t.declaredInputs, r.declaredInputs),
                        T(t.outputs, r.outputs),
                        Ce(r) && r.data.animation) {
                            var l = t.data;
                            l.animation = (l.animation || []).concat(r.data.animation)
                        }
                        o.afterContentChecked = o.afterContentChecked || r.afterContentChecked,
                        o.afterContentInit = t.afterContentInit || r.afterContentInit,
                        o.afterViewChecked = t.afterViewChecked || r.afterViewChecked,
                        o.afterViewInit = t.afterViewInit || r.afterViewInit,
                        o.doCheck = t.doCheck || r.doCheck,
                        o.onDestroy = t.onDestroy || r.onDestroy,
                        o.onInit = t.onInit || r.onInit
                    }
                    var u = r.features;
                    if (u)
                        for (var d = 0; d < u.length; d++) {
                            var p = u[d];
                            p && p.ngInherit && p(t),
                            p === Mp && (n = !1)
                        }
                }
                e = Object.getPrototypeOf(e)
            }
            !function(t) {
                for (var e = 0, n = null, i = t.length - 1; i >= 0; i--) {
                    var r = t[i];
                    r.hostVars = e += r.hostVars,
                    r.hostAttrs = $n(r.hostAttrs, n = $n(n, r.hostAttrs))
                }
            }(i)
        }
        function Ep(t) {
            return t === ne ? {} : t === ie ? [] : t
        }
        function Cp(t, e) {
            var n = t.viewQuery;
            t.viewQuery = n ? function(t, i) {
                e(t, i),
                n(t, i)
            }
            : e
        }
        function Ap(t, e) {
            var n = t.contentQueries;
            t.contentQueries = n ? function(t, i, r) {
                e(t, i, r),
                n(t, i, r)
            }
            : e
        }
        function Tp(t, e) {
            var n = t.hostBindings;
            t.hostBindings = n ? function(t, i) {
                e(t, i),
                n(t, i)
            }
            : e
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Op = ["providersResolver"]
          , _p = ["template", "decls", "consts", "vars", "onPush", "ngContentSelectors", "styles", "encapsulation", "schemas"];
        function Pp(t) {
            var e, n, r, o, a = xp(t.type), s = void 0;
            s = Ce(t) ? a.ɵcmp : a.ɵdir;
            var c = t;
            try {
                for (var l = Object(i.j)(Op), u = l.next(); !u.done; u = l.next()) {
                    c[h = u.value] = s[h]
                }
            } catch (t) {
                e = {
                    error: t
                }
            } finally {
                try {
                    u && !u.done && (n = l.return) && n.call(l)
                } finally {
                    if (e)
                        throw e.error
                }
            }
            if (Ce(s))
                try {
                    for (var d = Object(i.j)(_p), p = d.next(); !p.done; p = d.next()) {
                        var h;
                        c[h = p.value] = s[h]
                    }
                } catch (t) {
                    r = {
                        error: t
                    }
                } finally {
                    try {
                        p && !p.done && (o = d.return) && o.call(d)
                    } finally {
                        if (r)
                            throw r.error
                    }
                }
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Ip = function() {
            function t(t, e, n) {
                this.previousValue = t,
                this.currentValue = e,
                this.firstChange = n
            }
            return t.prototype.isFirstChange = function() {
                return this.firstChange
            }
            ,
            t
        }();
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function kp(t) {
            t.type.prototype.ngOnChanges && (t.setInput = Dp,
            t.onChanges = function() {
                var t = Rp(this)
                  , e = t && t.current;
                if (e) {
                    var n = t.previous;
                    if (n === ne)
                        t.previous = e;
                    else
                        for (var i in e)
                            n[i] = e[i];
                    t.current = null,
                    this.ngOnChanges(e)
                }
            }
            )
        }
        function Dp(t, e, n, i) {
            var r = Rp(t) || function(t, e) {
                return t.__ngSimpleChanges__ = e
            }/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
            (t, {
                previous: ne,
                current: null
            })
              , o = r.current || (r.current = {})
              , a = r.previous
              , s = this.declaredInputs[n]
              , c = a[s];
            o[s] = new Ip(c && c.currentValue,e,a === ne),
            t[i] = e
        }
        kp.ngInherit = !0;
        function Rp(t) {
            return t.__ngSimpleChanges__ || null
        }
        function Lp(t, e, n, i, r) {
            if (t = G(t),
            Array.isArray(t))
                for (var o = 0; o < t.length; o++)
                    Lp(t[o], e, n, i, r);
            else {
                var a = sn()
                  , s = an()
                  , c = Tc(t) ? t : G(t.provide)
                  , l = Ec(t)
                  , u = ln()
                  , d = 65535 & u.providerIndexes
                  , p = u.directiveStart
                  , h = u.providerIndexes >> 16;
                if (Tc(t) || !t.multi) {
                    var f = new qn(l,r,eu)
                      , m = Vp(c, e, r ? d : d + h, p);
                    -1 === m ? (bi(mi(u, s), a, c),
                    Np(a, t, e.length),
                    e.push(c),
                    u.directiveStart++,
                    u.directiveEnd++,
                    r && (u.providerIndexes += 65536),
                    n.push(f),
                    s.push(f)) : (n[m] = f,
                    s[m] = f)
                } else {
                    var g = Vp(c, e, d + h, p)
                      , v = Vp(c, e, d, d + h)
                      , y = g >= 0 && n[g]
                      , b = v >= 0 && n[v];
                    if (r && !b || !r && !y) {
                        bi(mi(u, s), a, c);
                        f = function(t, e, n, i, r) {
                            var o = new qn(t,n,eu);
                            return o.multi = [],
                            o.index = e,
                            o.componentProviders = 0,
                            jp(o, r, i && !n),
                            o
                        }(r ? Up : Fp, n.length, r, i, l);
                        !r && b && (n[v].providerFactory = f),
                        Np(a, t, e.length, 0),
                        e.push(c),
                        u.directiveStart++,
                        u.directiveEnd++,
                        r && (u.providerIndexes += 65536),
                        n.push(f),
                        s.push(f)
                    } else {
                        Np(a, t, g > -1 ? g : v, jp(n[r ? v : g], l, !r && i))
                    }
                    !r && i && b && n[v].componentProviders++
                }
            }
        }
        function Np(t, e, n, i) {
            var r = Tc(e);
            if (r || e.useClass) {
                var o = (e.useClass || e).prototype.ngOnDestroy;
                if (o) {
                    var a = t.destroyHooks || (t.destroyHooks = []);
                    if (!r && e.multi) {
                        ngDevMode && Bt(i, "indexInFactory when registering multi factory destroy hook");
                        var s = a.indexOf(n);
                        -1 === s ? a.push(n, [i, o]) : a[s + 1].push(i, o)
                    } else
                        a.push(n, o)
                }
            }
        }
        function jp(t, e, n) {
            return n && t.componentProviders++,
            t.multi.push(e) - 1
        }
        function Vp(t, e, n, i) {
            for (var r = n; r < i; r++)
                if (e[r] === t)
                    return r;
            return -1
        }
        function Fp(t, e, n, i) {
            return Bp(this.multi, [])
        }
        function Up(t, e, n, i) {
            var r, o = this.multi;
            if (this.providerFactory) {
                var a = this.providerFactory.componentProviders
                  , s = Ci(n, n[1], this.providerFactory.index, i);
                Bp(o, r = s.slice(0, a));
                for (var c = a; c < s.length; c++)
                    r.push(s[c])
            } else
                Bp(o, r = []);
            return r
        }
        function Bp(t, e) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                e.push(i())
            }
            return e
        }
        function zp(t, e) {
            return void 0 === e && (e = []),
            function(n) {
                n.providersResolver = function(n, i) {
                    return function(t, e, n) {
                        var i = sn();
                        if (i.firstCreatePass) {
                            var r = Ce(t);
                            Lp(n, i.data, i.blueprint, r, !0),
                            Lp(e, i.data, i.blueprint, r, !1)
                        }
                    }(n, i ? i(t) : t, e)
                }
            }
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Gp = function() {}
          , Hp = function() {};
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Wp(t) {
            var e = Error("No component factory found for " + F(t) + ". Did you add it to @NgModule.entryComponents?");
            return e[qp] = t,
            e
        }
        var qp = "ngComponent";
        var Xp = function() {
            function t() {}
            return t.prototype.resolveComponentFactory = function(t) {
                throw Wp(t)
            }
            ,
            t
        }()
          , Yp = function() {
            function t() {}
            return t.NULL = new Xp,
            t
        }()
          , Kp = function() {
            function t(t, e, n) {
                this._parent = e,
                this._ngModule = n,
                this._factories = new Map;
                for (var i = 0; i < t.length; i++) {
                    var r = t[i];
                    this._factories.set(r.componentType, r)
                }
            }
            return t.prototype.resolveComponentFactory = function(t) {
                var e = this._factories.get(t);
                if (!e && this._parent && (e = this._parent.resolveComponentFactory(t)),
                !e)
                    throw Wp(t);
                return new Zp(e,this._ngModule)
            }
            ,
            t
        }()
          , Zp = function(t) {
            function e(e, n) {
                var i = t.call(this) || this;
                return i.factory = e,
                i.ngModule = n,
                i.selector = e.selector,
                i.componentType = e.componentType,
                i.ngContentSelectors = e.ngContentSelectors,
                i.inputs = e.inputs,
                i.outputs = e.outputs,
                i
            }
            return Object(i.c)(e, t),
            e.prototype.create = function(t, e, n, i) {
                return this.factory.create(t, e, n, i || this.ngModule)
            }
            ,
            e
        }(Hp);
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Jp, Qp = function() {
            function t(t) {
                this.nativeElement = t
            }
            return t.__NG_ELEMENT_ID__ = function() {
                return th(t)
            }
            ,
            t
        }(), $p = function(t) {
            return Bs(t, ln(), an())
        }, th = $p, eh = (new ct("Renderer2Interceptor"),
        function() {}
        );
        !function(t) {
            t[t.Important = 1] = "Important",
            t[t.DashCase = 2] = "DashCase"
        }(Jp || (Jp = {}));
        var nh = function() {
            function t() {}
            return t.__NG_ELEMENT_ID__ = function() {
                return rh()
            }
            ,
            t
        }()
          , ih = function() {
            var t = an()
              , e = Xe(ln().index, t);
            return function(t) {
                var e = t[11];
                if (Fe(e))
                    return e;
                throw new Error("Cannot inject Renderer2 when the application uses Renderer3!")
            }(we(e) ? e : t)
        }
          , rh = ih
          , oh = function() {
            function t() {}
            return t.ɵprov = O({
                token: t,
                providedIn: "root",
                factory: function() {
                    return null
                }
            }),
            t
        }()
          , ah = function(t) {
            this.full = t,
            this.major = t.split(".")[0],
            this.minor = t.split(".")[1],
            this.patch = t.split(".").slice(2).join(".")
        }
          , sh = new ah("9.1.9")
          , ch = function() {
            function t() {}
            return t.prototype.supports = function(t) {
                return Ml(t)
            }
            ,
            t.prototype.create = function(t) {
                return new uh(t)
            }
            ,
            t
        }()
          , lh = function(t, e) {
            return e
        }
          , uh = function() {
            function t(t) {
                this.length = 0,
                this._linkedRecords = null,
                this._unlinkedRecords = null,
                this._previousItHead = null,
                this._itHead = null,
                this._itTail = null,
                this._additionsHead = null,
                this._additionsTail = null,
                this._movesHead = null,
                this._movesTail = null,
                this._removalsHead = null,
                this._removalsTail = null,
                this._identityChangesHead = null,
                this._identityChangesTail = null,
                this._trackByFn = t || lh
            }
            return t.prototype.forEachItem = function(t) {
                var e;
                for (e = this._itHead; null !== e; e = e._next)
                    t(e)
            }
            ,
            t.prototype.forEachOperation = function(t) {
                for (var e = this._itHead, n = this._removalsHead, i = 0, r = null; e || n; ) {
                    var o = !n || e && e.currentIndex < fh(n, i, r) ? e : n
                      , a = fh(o, i, r)
                      , s = o.currentIndex;
                    if (o === n)
                        i--,
                        n = n._nextRemoved;
                    else if (e = e._next,
                    null == o.previousIndex)
                        i++;
                    else {
                        r || (r = []);
                        var c = a - i
                          , l = s - i;
                        if (c != l) {
                            for (var u = 0; u < c; u++) {
                                var d = u < r.length ? r[u] : r[u] = 0
                                  , p = d + u;
                                l <= p && p < c && (r[u] = d + 1)
                            }
                            r[o.previousIndex] = l - c
                        }
                    }
                    a !== s && t(o, a, s)
                }
            }
            ,
            t.prototype.forEachPreviousItem = function(t) {
                var e;
                for (e = this._previousItHead; null !== e; e = e._nextPrevious)
                    t(e)
            }
            ,
            t.prototype.forEachAddedItem = function(t) {
                var e;
                for (e = this._additionsHead; null !== e; e = e._nextAdded)
                    t(e)
            }
            ,
            t.prototype.forEachMovedItem = function(t) {
                var e;
                for (e = this._movesHead; null !== e; e = e._nextMoved)
                    t(e)
            }
            ,
            t.prototype.forEachRemovedItem = function(t) {
                var e;
                for (e = this._removalsHead; null !== e; e = e._nextRemoved)
                    t(e)
            }
            ,
            t.prototype.forEachIdentityChange = function(t) {
                var e;
                for (e = this._identityChangesHead; null !== e; e = e._nextIdentityChange)
                    t(e)
            }
            ,
            t.prototype.diff = function(t) {
                if (null == t && (t = []),
                !Ml(t))
                    throw new Error("Error trying to diff '" + F(t) + "'. Only arrays and iterables are allowed");
                return this.check(t) ? this : null
            }
            ,
            t.prototype.onDestroy = function() {}
            ,
            t.prototype.check = function(t) {
                var e = this;
                this._reset();
                var n, i, r, o = this._itHead, a = !1;
                if (Array.isArray(t)) {
                    this.length = t.length;
                    for (var s = 0; s < this.length; s++)
                        i = t[s],
                        r = this._trackByFn(s, i),
                        null !== o && wl(o.trackById, r) ? (a && (o = this._verifyReinsertion(o, i, r, s)),
                        wl(o.item, i) || this._addIdentityChange(o, i)) : (o = this._mismatch(o, i, r, s),
                        a = !0),
                        o = o._next
                } else
                    n = 0,
                    function(t, e) {
                        if (Array.isArray(t))
                            for (var n = 0; n < t.length; n++)
                                e(t[n]);
                        else
                            for (var i = t[bl()](), r = void 0; !(r = i.next()).done; )
                                e(r.value)
                    }(t, (function(t) {
                        r = e._trackByFn(n, t),
                        null !== o && wl(o.trackById, r) ? (a && (o = e._verifyReinsertion(o, t, r, n)),
                        wl(o.item, t) || e._addIdentityChange(o, t)) : (o = e._mismatch(o, t, r, n),
                        a = !0),
                        o = o._next,
                        n++
                    }
                    )),
                    this.length = n;
                return this._truncate(o),
                this.collection = t,
                this.isDirty
            }
            ,
            Object.defineProperty(t.prototype, "isDirty", {
                get: function() {
                    return null !== this._additionsHead || null !== this._movesHead || null !== this._removalsHead || null !== this._identityChangesHead
                },
                enumerable: !0,
                configurable: !0
            }),
            t.prototype._reset = function() {
                if (this.isDirty) {
                    var t = void 0
                      , e = void 0;
                    for (t = this._previousItHead = this._itHead; null !== t; t = t._next)
                        t._nextPrevious = t._next;
                    for (t = this._additionsHead; null !== t; t = t._nextAdded)
                        t.previousIndex = t.currentIndex;
                    for (this._additionsHead = this._additionsTail = null,
                    t = this._movesHead; null !== t; t = e)
                        t.previousIndex = t.currentIndex,
                        e = t._nextMoved;
                    this._movesHead = this._movesTail = null,
                    this._removalsHead = this._removalsTail = null,
                    this._identityChangesHead = this._identityChangesTail = null
                }
            }
            ,
            t.prototype._mismatch = function(t, e, n, i) {
                var r;
                return null === t ? r = this._itTail : (r = t._prev,
                this._remove(t)),
                null !== (t = null === this._linkedRecords ? null : this._linkedRecords.get(n, i)) ? (wl(t.item, e) || this._addIdentityChange(t, e),
                this._moveAfter(t, r, i)) : null !== (t = null === this._unlinkedRecords ? null : this._unlinkedRecords.get(n, null)) ? (wl(t.item, e) || this._addIdentityChange(t, e),
                this._reinsertAfter(t, r, i)) : t = this._addAfter(new dh(e,n), r, i),
                t
            }
            ,
            t.prototype._verifyReinsertion = function(t, e, n, i) {
                var r = null === this._unlinkedRecords ? null : this._unlinkedRecords.get(n, null);
                return null !== r ? t = this._reinsertAfter(r, t._prev, i) : t.currentIndex != i && (t.currentIndex = i,
                this._addToMoves(t, i)),
                t
            }
            ,
            t.prototype._truncate = function(t) {
                for (; null !== t; ) {
                    var e = t._next;
                    this._addToRemovals(this._unlink(t)),
                    t = e
                }
                null !== this._unlinkedRecords && this._unlinkedRecords.clear(),
                null !== this._additionsTail && (this._additionsTail._nextAdded = null),
                null !== this._movesTail && (this._movesTail._nextMoved = null),
                null !== this._itTail && (this._itTail._next = null),
                null !== this._removalsTail && (this._removalsTail._nextRemoved = null),
                null !== this._identityChangesTail && (this._identityChangesTail._nextIdentityChange = null)
            }
            ,
            t.prototype._reinsertAfter = function(t, e, n) {
                null !== this._unlinkedRecords && this._unlinkedRecords.remove(t);
                var i = t._prevRemoved
                  , r = t._nextRemoved;
                return null === i ? this._removalsHead = r : i._nextRemoved = r,
                null === r ? this._removalsTail = i : r._prevRemoved = i,
                this._insertAfter(t, e, n),
                this._addToMoves(t, n),
                t
            }
            ,
            t.prototype._moveAfter = function(t, e, n) {
                return this._unlink(t),
                this._insertAfter(t, e, n),
                this._addToMoves(t, n),
                t
            }
            ,
            t.prototype._addAfter = function(t, e, n) {
                return this._insertAfter(t, e, n),
                null === this._additionsTail ? this._additionsTail = this._additionsHead = t : this._additionsTail = this._additionsTail._nextAdded = t,
                t
            }
            ,
            t.prototype._insertAfter = function(t, e, n) {
                var i = null === e ? this._itHead : e._next;
                return t._next = i,
                t._prev = e,
                null === i ? this._itTail = t : i._prev = t,
                null === e ? this._itHead = t : e._next = t,
                null === this._linkedRecords && (this._linkedRecords = new hh),
                this._linkedRecords.put(t),
                t.currentIndex = n,
                t
            }
            ,
            t.prototype._remove = function(t) {
                return this._addToRemovals(this._unlink(t))
            }
            ,
            t.prototype._unlink = function(t) {
                null !== this._linkedRecords && this._linkedRecords.remove(t);
                var e = t._prev
                  , n = t._next;
                return null === e ? this._itHead = n : e._next = n,
                null === n ? this._itTail = e : n._prev = e,
                t
            }
            ,
            t.prototype._addToMoves = function(t, e) {
                return t.previousIndex === e || (null === this._movesTail ? this._movesTail = this._movesHead = t : this._movesTail = this._movesTail._nextMoved = t),
                t
            }
            ,
            t.prototype._addToRemovals = function(t) {
                return null === this._unlinkedRecords && (this._unlinkedRecords = new hh),
                this._unlinkedRecords.put(t),
                t.currentIndex = null,
                t._nextRemoved = null,
                null === this._removalsTail ? (this._removalsTail = this._removalsHead = t,
                t._prevRemoved = null) : (t._prevRemoved = this._removalsTail,
                this._removalsTail = this._removalsTail._nextRemoved = t),
                t
            }
            ,
            t.prototype._addIdentityChange = function(t, e) {
                return t.item = e,
                null === this._identityChangesTail ? this._identityChangesTail = this._identityChangesHead = t : this._identityChangesTail = this._identityChangesTail._nextIdentityChange = t,
                t
            }
            ,
            t
        }()
          , dh = function(t, e) {
            this.item = t,
            this.trackById = e,
            this.currentIndex = null,
            this.previousIndex = null,
            this._nextPrevious = null,
            this._prev = null,
            this._next = null,
            this._prevDup = null,
            this._nextDup = null,
            this._prevRemoved = null,
            this._nextRemoved = null,
            this._nextAdded = null,
            this._nextMoved = null,
            this._nextIdentityChange = null
        }
          , ph = function() {
            function t() {
                this._head = null,
                this._tail = null
            }
            return t.prototype.add = function(t) {
                null === this._head ? (this._head = this._tail = t,
                t._nextDup = null,
                t._prevDup = null) : (this._tail._nextDup = t,
                t._prevDup = this._tail,
                t._nextDup = null,
                this._tail = t)
            }
            ,
            t.prototype.get = function(t, e) {
                var n;
                for (n = this._head; null !== n; n = n._nextDup)
                    if ((null === e || e <= n.currentIndex) && wl(n.trackById, t))
                        return n;
                return null
            }
            ,
            t.prototype.remove = function(t) {
                var e = t._prevDup
                  , n = t._nextDup;
                return null === e ? this._head = n : e._nextDup = n,
                null === n ? this._tail = e : n._prevDup = e,
                null === this._head
            }
            ,
            t
        }()
          , hh = function() {
            function t() {
                this.map = new Map
            }
            return t.prototype.put = function(t) {
                var e = t.trackById
                  , n = this.map.get(e);
                n || (n = new ph,
                this.map.set(e, n)),
                n.add(t)
            }
            ,
            t.prototype.get = function(t, e) {
                var n = t
                  , i = this.map.get(n);
                return i ? i.get(t, e) : null
            }
            ,
            t.prototype.remove = function(t) {
                var e = t.trackById;
                return this.map.get(e).remove(t) && this.map.delete(e),
                t
            }
            ,
            Object.defineProperty(t.prototype, "isEmpty", {
                get: function() {
                    return 0 === this.map.size
                },
                enumerable: !0,
                configurable: !0
            }),
            t.prototype.clear = function() {
                this.map.clear()
            }
            ,
            t
        }();
        function fh(t, e, n) {
            var i = t.previousIndex;
            if (null === i)
                return i;
            var r = 0;
            return n && i < n.length && (r = n[i]),
            i + e + r
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var mh = function() {
            function t() {}
            return t.prototype.supports = function(t) {
                return t instanceof Map || El(t)
            }
            ,
            t.prototype.create = function() {
                return new gh
            }
            ,
            t
        }()
          , gh = function() {
            function t() {
                this._records = new Map,
                this._mapHead = null,
                this._appendAfter = null,
                this._previousMapHead = null,
                this._changesHead = null,
                this._changesTail = null,
                this._additionsHead = null,
                this._additionsTail = null,
                this._removalsHead = null,
                this._removalsTail = null
            }
            return Object.defineProperty(t.prototype, "isDirty", {
                get: function() {
                    return null !== this._additionsHead || null !== this._changesHead || null !== this._removalsHead
                },
                enumerable: !0,
                configurable: !0
            }),
            t.prototype.forEachItem = function(t) {
                var e;
                for (e = this._mapHead; null !== e; e = e._next)
                    t(e)
            }
            ,
            t.prototype.forEachPreviousItem = function(t) {
                var e;
                for (e = this._previousMapHead; null !== e; e = e._nextPrevious)
                    t(e)
            }
            ,
            t.prototype.forEachChangedItem = function(t) {
                var e;
                for (e = this._changesHead; null !== e; e = e._nextChanged)
                    t(e)
            }
            ,
            t.prototype.forEachAddedItem = function(t) {
                var e;
                for (e = this._additionsHead; null !== e; e = e._nextAdded)
                    t(e)
            }
            ,
            t.prototype.forEachRemovedItem = function(t) {
                var e;
                for (e = this._removalsHead; null !== e; e = e._nextRemoved)
                    t(e)
            }
            ,
            t.prototype.diff = function(t) {
                if (t) {
                    if (!(t instanceof Map || El(t)))
                        throw new Error("Error trying to diff '" + F(t) + "'. Only maps and objects are allowed")
                } else
                    t = new Map;
                return this.check(t) ? this : null
            }
            ,
            t.prototype.onDestroy = function() {}
            ,
            t.prototype.check = function(t) {
                var e = this;
                this._reset();
                var n = this._mapHead;
                if (this._appendAfter = null,
                this._forEach(t, (function(t, i) {
                    if (n && n.key === i)
                        e._maybeAddToChanges(n, t),
                        e._appendAfter = n,
                        n = n._next;
                    else {
                        var r = e._getOrCreateRecordForKey(i, t);
                        n = e._insertBeforeOrAppend(n, r)
                    }
                }
                )),
                n) {
                    n._prev && (n._prev._next = null),
                    this._removalsHead = n;
                    for (var i = n; null !== i; i = i._nextRemoved)
                        i === this._mapHead && (this._mapHead = null),
                        this._records.delete(i.key),
                        i._nextRemoved = i._next,
                        i.previousValue = i.currentValue,
                        i.currentValue = null,
                        i._prev = null,
                        i._next = null
                }
                return this._changesTail && (this._changesTail._nextChanged = null),
                this._additionsTail && (this._additionsTail._nextAdded = null),
                this.isDirty
            }
            ,
            t.prototype._insertBeforeOrAppend = function(t, e) {
                if (t) {
                    var n = t._prev;
                    return e._next = t,
                    e._prev = n,
                    t._prev = e,
                    n && (n._next = e),
                    t === this._mapHead && (this._mapHead = e),
                    this._appendAfter = t,
                    t
                }
                return this._appendAfter ? (this._appendAfter._next = e,
                e._prev = this._appendAfter) : this._mapHead = e,
                this._appendAfter = e,
                null
            }
            ,
            t.prototype._getOrCreateRecordForKey = function(t, e) {
                if (this._records.has(t)) {
                    var n = this._records.get(t);
                    this._maybeAddToChanges(n, e);
                    var i = n._prev
                      , r = n._next;
                    return i && (i._next = r),
                    r && (r._prev = i),
                    n._next = null,
                    n._prev = null,
                    n
                }
                var o = new vh(t);
                return this._records.set(t, o),
                o.currentValue = e,
                this._addToAdditions(o),
                o
            }
            ,
            t.prototype._reset = function() {
                if (this.isDirty) {
                    var t = void 0;
                    for (this._previousMapHead = this._mapHead,
                    t = this._previousMapHead; null !== t; t = t._next)
                        t._nextPrevious = t._next;
                    for (t = this._changesHead; null !== t; t = t._nextChanged)
                        t.previousValue = t.currentValue;
                    for (t = this._additionsHead; null != t; t = t._nextAdded)
                        t.previousValue = t.currentValue;
                    this._changesHead = this._changesTail = null,
                    this._additionsHead = this._additionsTail = null,
                    this._removalsHead = null
                }
            }
            ,
            t.prototype._maybeAddToChanges = function(t, e) {
                wl(e, t.currentValue) || (t.previousValue = t.currentValue,
                t.currentValue = e,
                this._addToChanges(t))
            }
            ,
            t.prototype._addToAdditions = function(t) {
                null === this._additionsHead ? this._additionsHead = this._additionsTail = t : (this._additionsTail._nextAdded = t,
                this._additionsTail = t)
            }
            ,
            t.prototype._addToChanges = function(t) {
                null === this._changesHead ? this._changesHead = this._changesTail = t : (this._changesTail._nextChanged = t,
                this._changesTail = t)
            }
            ,
            t.prototype._forEach = function(t, e) {
                t instanceof Map ? t.forEach(e) : Object.keys(t).forEach((function(n) {
                    return e(t[n], n)
                }
                ))
            }
            ,
            t
        }()
          , vh = function(t) {
            this.key = t,
            this.previousValue = null,
            this.currentValue = null,
            this._nextPrevious = null,
            this._next = null,
            this._prev = null,
            this._nextAdded = null,
            this._nextRemoved = null,
            this._nextChanged = null
        }
          , yh = function() {
            function t(t) {
                this.factories = t
            }
            return t.create = function(e, n) {
                if (null != n) {
                    var i = n.factories.slice();
                    e = e.concat(i)
                }
                return new t(e)
            }
            ,
            t.extend = function(e) {
                return {
                    provide: t,
                    useFactory: function(n) {
                        if (!n)
                            throw new Error("Cannot extend IterableDiffers without a parent injector");
                        return t.create(e, n)
                    },
                    deps: [[t, new x, new w]]
                }
            }
            ,
            t.prototype.find = function(t) {
                var e, n = this.factories.find((function(e) {
                    return e.supports(t)
                }
                ));
                if (null != n)
                    return n;
                throw new Error("Cannot find a differ supporting object '" + t + "' of type '" + ((e = t).name || typeof e) + "'")
            }
            ,
            t.ɵprov = O({
                token: t,
                providedIn: "root",
                factory: function() {
                    return new t([new ch])
                }
            }),
            t
        }();
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var bh = function() {
            function t(t) {
                this.factories = t
            }
            return t.create = function(e, n) {
                if (n) {
                    var i = n.factories.slice();
                    e = e.concat(i)
                }
                return new t(e)
            }
            ,
            t.extend = function(e) {
                return {
                    provide: t,
                    useFactory: function(n) {
                        if (!n)
                            throw new Error("Cannot extend KeyValueDiffers without a parent injector");
                        return t.create(e, n)
                    },
                    deps: [[t, new x, new w]]
                }
            }
            ,
            t.prototype.find = function(t) {
                var e = this.factories.find((function(e) {
                    return e.supports(t)
                }
                ));
                if (e)
                    return e;
                throw new Error("Cannot find a differ supporting object '" + t + "'")
            }
            ,
            t.ɵprov = O({
                token: t,
                providedIn: "root",
                factory: function() {
                    return new t([new mh])
                }
            }),
            t
        }()
          , wh = [new mh]
          , Sh = [new ch]
          , xh = new yh(Sh)
          , Mh = new bh(wh)
          , Eh = function() {
            function t() {}
            return t.__NG_ELEMENT_ID__ = function() {
                return Ah(t, Qp)
            }
            ,
            t
        }()
          , Ch = function(t, e) {
            return zs(t, e, ln(), an())
        }
          , Ah = Ch
          , Th = function() {
            function t() {}
            return t.__NG_ELEMENT_ID__ = function() {
                return _h(t, Qp)
            }
            ,
            t
        }()
          , Oh = function(t, e) {
            return Gs(t, e, ln(), an())
        }
          , _h = Oh;
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Ph(t, e, n, i) {
            var r = "ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: '" + e + "'. Current value: '" + n + "'.";
            return i && (r += " It seems like the view has been created after its parent and its children have been dirty checked. Has it been created in a change detection hook ?"),
            function(t, e) {
                var n = new Error(t);
                return Ih(n, e),
                n
            }(r, t)
        }
        function Ih(t, e) {
            t.ngDebugContext = e,
            t.ngErrorLogger = e.logError.bind(e)
        }
        function kh(t) {
            return new Error("ViewDestroyedError: Attempt to use a destroyed view: " + t)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Dh(t, e, n) {
            var i = t.state
              , r = 1792 & i;
            return r === e ? (t.state = -1793 & i | n,
            t.initIndex = -1,
            !0) : r === n
        }
        function Rh(t, e, n) {
            return (1792 & t.state) === e && t.initIndex <= n && (t.initIndex = n + 1,
            !0)
        }
        function Lh(t, e) {
            return t.nodes[e]
        }
        function Nh(t, e) {
            return t.nodes[e]
        }
        function jh(t, e) {
            return t.nodes[e]
        }
        function Vh(t, e) {
            return t.nodes[e]
        }
        function Fh(t, e) {
            return t.nodes[e]
        }
        var Uh = function() {}
          , Bh = {
            setCurrentNode: void 0,
            createRootView: void 0,
            createEmbeddedView: void 0,
            createComponentView: void 0,
            createNgModuleRef: void 0,
            overrideProvider: void 0,
            overrideComponentView: void 0,
            clearOverrides: void 0,
            checkAndUpdateView: void 0,
            checkNoChangesView: void 0,
            destroyView: void 0,
            resolveDep: void 0,
            createDebugContext: void 0,
            handleEvent: void 0,
            updateDirectives: void 0,
            updateRenderer: void 0,
            dirtyParentQueries: void 0
        }
          , zh = function() {}
          , Gh = new Map;
        function Hh(t) {
            var e = Gh.get(t);
            return e || (e = F(t) + "_" + Gh.size,
            Gh.set(t, e)),
            e
        }
        function Wh(t, e, n, i) {
            if (xl.isWrapped(i)) {
                i = xl.unwrap(i);
                var r = t.def.nodes[e].bindingIndex + n
                  , o = xl.unwrap(t.oldValues[r]);
                t.oldValues[r] = new xl(o)
            }
            return i
        }
        function qh(t) {
            return {
                id: "$$undefined",
                styles: t.styles,
                encapsulation: t.encapsulation,
                data: t.data
            }
        }
        var Xh = 0;
        function Yh(t, e, n, i) {
            var r = t.oldValues;
            return !(!(2 & t.state) && wl(r[e.bindingIndex + n], i))
        }
        function Kh(t, e, n, i) {
            return !!Yh(t, e, n, i) && (t.oldValues[e.bindingIndex + n] = i,
            !0)
        }
        function Zh(t, e, n, i) {
            var r = t.oldValues[e.bindingIndex + n];
            if (1 & t.state || !Sl(r, i)) {
                var o = e.bindings[n].name;
                throw Ph(Bh.createDebugContext(t, e.nodeIndex), o + ": " + r, o + ": " + i, 0 != (1 & t.state))
            }
        }
        function Jh(t) {
            for (var e = t; e; )
                2 & e.def.flags && (e.state |= 8),
                e = e.viewContainerParent || e.parent
        }
        function Qh(t, e) {
            for (var n = t; n && n !== e; )
                n.state |= 64,
                n = n.viewContainerParent || n.parent
        }
        function $h(t, e, n, i) {
            try {
                return Jh(33554432 & t.def.nodes[e].flags ? Nh(t, e).componentView : t),
                Bh.handleEvent(t, e, n, i)
            } catch (e) {
                t.root.errorHandler.handleError(e)
            }
        }
        function tf(t) {
            return t.parent ? Nh(t.parent, t.parentNodeDef.nodeIndex) : null
        }
        function ef(t) {
            return t.parent ? t.parentNodeDef.parent : null
        }
        function nf(t, e) {
            switch (201347067 & e.flags) {
            case 1:
                return Nh(t, e.nodeIndex).renderElement;
            case 2:
                return Lh(t, e.nodeIndex).renderText
            }
        }
        function rf(t, e) {
            return t ? t + ":" + e : e
        }
        function of(t) {
            return !!t.parent && !!(32768 & t.parentNodeDef.flags)
        }
        function af(t) {
            return !(!t.parent || 32768 & t.parentNodeDef.flags)
        }
        function sf(t) {
            return 1 << t % 32
        }
        function cf(t) {
            var e = {}
              , n = 0
              , r = {};
            return t && t.forEach((function(t) {
                var o = Object(i.f)(t, 2)
                  , a = o[0]
                  , s = o[1];
                "number" == typeof a ? (e[a] = s,
                n |= sf(a)) : r[a] = s
            }
            )),
            {
                matchedQueries: e,
                references: r,
                matchedQueryIds: n
            }
        }
        function lf(t, e) {
            return t.map((function(t) {
                var n, r, o;
                return Array.isArray(t) ? (o = (n = Object(i.f)(t, 2))[0],
                r = n[1]) : (o = 0,
                r = t),
                r && ("function" == typeof r || "object" == typeof r) && e && Object.defineProperty(r, "__source", {
                    value: e,
                    configurable: !0
                }),
                {
                    flags: o,
                    token: r,
                    tokenKey: Hh(r)
                }
            }
            ))
        }
        function uf(t, e, n) {
            var i = n.renderParent;
            return i ? 0 == (1 & i.flags) || 0 == (33554432 & i.flags) || i.element.componentRendererType && i.element.componentRendererType.encapsulation === Ot.Native ? Nh(t, n.renderParent.nodeIndex).renderElement : void 0 : e
        }
        var df = new WeakMap;
        function pf(t) {
            var e = df.get(t);
            return e || ((e = t((function() {
                return zh
            }
            ))).factory = t,
            df.set(t, e)),
            e
        }
        function hf(t, e, n, i, r) {
            3 === e && (n = t.renderer.parentNode(nf(t, t.def.lastRenderRootNode))),
            ff(t, e, 0, t.def.nodes.length - 1, n, i, r)
        }
        function ff(t, e, n, i, r, o, a) {
            for (var s = n; s <= i; s++) {
                var c = t.def.nodes[s];
                11 & c.flags && gf(t, c, e, r, o, a),
                s += c.childCount
            }
        }
        function mf(t, e, n, i, r, o) {
            for (var a = t; a && !of(a); )
                a = a.parent;
            for (var s = a.parent, c = ef(a), l = c.nodeIndex + 1, u = c.nodeIndex + c.childCount, d = l; d <= u; d++) {
                var p = s.def.nodes[d];
                p.ngContentIndex === e && gf(s, p, n, i, r, o),
                d += p.childCount
            }
            if (!s.parent) {
                var h = t.root.projectableNodes[e];
                if (h)
                    for (d = 0; d < h.length; d++)
                        vf(t, h[d], n, i, r, o)
            }
        }
        function gf(t, e, n, i, r, o) {
            if (8 & e.flags)
                mf(t, e.ngContent.index, n, i, r, o);
            else {
                var a = nf(t, e);
                if (3 === n && 33554432 & e.flags && 48 & e.bindingFlags) {
                    if (16 & e.bindingFlags && vf(t, a, n, i, r, o),
                    32 & e.bindingFlags)
                        vf(Nh(t, e.nodeIndex).componentView, a, n, i, r, o)
                } else
                    vf(t, a, n, i, r, o);
                if (16777216 & e.flags)
                    for (var s = Nh(t, e.nodeIndex).viewContainer._embeddedViews, c = 0; c < s.length; c++)
                        hf(s[c], n, i, r, o);
                1 & e.flags && !e.element.name && ff(t, n, e.nodeIndex + 1, e.nodeIndex + e.childCount, i, r, o)
            }
        }
        function vf(t, e, n, i, r, o) {
            var a = t.renderer;
            switch (n) {
            case 1:
                a.appendChild(i, e);
                break;
            case 2:
                a.insertBefore(i, e, r);
                break;
            case 3:
                a.removeChild(i, e);
                break;
            case 0:
                o.push(e)
            }
        }
        var yf = /^:([^:]+):(.+)$/;
        function bf(t) {
            if (":" === t[0]) {
                var e = t.match(yf);
                return [e[1], e[2]]
            }
            return ["", t]
        }
        function wf(t) {
            for (var e = 0, n = 0; n < t.length; n++)
                e |= t[n].flags;
            return e
        }
        function Sf(t, e) {
            for (var n = "", i = 0; i < 2 * t; i += 2)
                n = n + e[i] + Mf(e[i + 1]);
            return n + e[2 * t]
        }
        function xf(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g, v, y, b) {
            switch (t) {
            case 1:
                return e + Mf(n) + i;
            case 2:
                return e + Mf(n) + i + Mf(r) + o;
            case 3:
                return e + Mf(n) + i + Mf(r) + o + Mf(a) + s;
            case 4:
                return e + Mf(n) + i + Mf(r) + o + Mf(a) + s + Mf(c) + l;
            case 5:
                return e + Mf(n) + i + Mf(r) + o + Mf(a) + s + Mf(c) + l + Mf(u) + d;
            case 6:
                return e + Mf(n) + i + Mf(r) + o + Mf(a) + s + Mf(c) + l + Mf(u) + d + Mf(p) + h;
            case 7:
                return e + Mf(n) + i + Mf(r) + o + Mf(a) + s + Mf(c) + l + Mf(u) + d + Mf(p) + h + Mf(f) + m;
            case 8:
                return e + Mf(n) + i + Mf(r) + o + Mf(a) + s + Mf(c) + l + Mf(u) + d + Mf(p) + h + Mf(f) + m + Mf(g) + v;
            case 9:
                return e + Mf(n) + i + Mf(r) + o + Mf(a) + s + Mf(c) + l + Mf(u) + d + Mf(p) + h + Mf(f) + m + Mf(g) + v + Mf(y) + b;
            default:
                throw new Error("Does not support more than 9 expressions")
            }
        }
        function Mf(t) {
            return null != t ? t.toString() : ""
        }
        var Ef = []
          , Cf = {}
          , Af = {}
          , Tf = Hh(Pc)
          , Of = Hh(lt)
          , _f = Hh(_t);
        function Pf(t, e, n, i) {
            return n = G(n),
            {
                index: -1,
                deps: lf(i, F(e)),
                flags: t,
                token: e,
                value: n
            }
        }
        function If(t) {
            for (var e = {}, n = [], i = null, r = 0; r < t.length; r++) {
                var o = t[r];
                o.token === fc && (i = o.value),
                1073741824 & o.flags && n.push(o.token),
                o.index = r,
                e[Hh(o.token)] = o
            }
            return {
                factory: null,
                providersByKey: e,
                providers: t,
                modules: n,
                scope: i
            }
        }
        function kf(t, e, n) {
            void 0 === n && (n = Pc.THROW_IF_NOT_FOUND);
            var i, r, o = ft(t);
            try {
                if (8 & e.flags)
                    return e.token;
                if (2 & e.flags && (n = null),
                1 & e.flags)
                    return t._parent.get(e.token, n);
                var a = e.tokenKey;
                switch (a) {
                case Tf:
                case Of:
                case _f:
                    return t
                }
                var s = t._def.providersByKey[a]
                  , c = void 0;
                if (s) {
                    var l = t._providers[s.index];
                    return void 0 === l && (l = t._providers[s.index] = Df(t, s)),
                    l === Af ? void 0 : l
                }
                if ((c = I(e.token)) && (i = t,
                null != (r = c.providedIn) && ("any" === r || r === i._def.scope || function(t, e) {
                    return t._def.modules.indexOf(e) > -1
                }(i, r)))) {
                    var u = t._providers.length;
                    return t._def.providers[u] = t._def.providersByKey[e.tokenKey] = {
                        flags: 5120,
                        value: c.factory,
                        deps: [],
                        index: u,
                        token: e.token
                    },
                    t._providers[u] = Af,
                    t._providers[u] = Df(t, t._def.providersByKey[e.tokenKey])
                }
                return 4 & e.flags ? n : t._parent.get(e.token, n)
            } finally {
                ft(o)
            }
        }
        function Df(t, e) {
            var n;
            switch (201347067 & e.flags) {
            case 512:
                n = function(t, e, n) {
                    var r = n.length;
                    switch (r) {
                    case 0:
                        return new e;
                    case 1:
                        return new e(kf(t, n[0]));
                    case 2:
                        return new e(kf(t, n[0]),kf(t, n[1]));
                    case 3:
                        return new e(kf(t, n[0]),kf(t, n[1]),kf(t, n[2]));
                    default:
                        for (var o = [], a = 0; a < r; a++)
                            o[a] = kf(t, n[a]);
                        return new (e.bind.apply(e, Object(i.h)([void 0], o)))
                    }
                }(t, e.value, e.deps);
                break;
            case 1024:
                n = function(t, e, n) {
                    var r = n.length;
                    switch (r) {
                    case 0:
                        return e();
                    case 1:
                        return e(kf(t, n[0]));
                    case 2:
                        return e(kf(t, n[0]), kf(t, n[1]));
                    case 3:
                        return e(kf(t, n[0]), kf(t, n[1]), kf(t, n[2]));
                    default:
                        for (var o = [], a = 0; a < r; a++)
                            o[a] = kf(t, n[a]);
                        return e.apply(void 0, Object(i.h)(o))
                    }
                }(t, e.value, e.deps);
                break;
            case 2048:
                n = kf(t, e.deps[0]);
                break;
            case 256:
                n = e.value
            }
            return n === Af || null === n || "object" != typeof n || 131072 & e.flags || "function" != typeof n.ngOnDestroy || (e.flags |= 131072),
            void 0 === n ? Af : n
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Rf(t, e, n, i) {
            var r = e.viewContainer._embeddedViews;
            null == n && (n = r.length),
            i.viewContainerParent = t,
            Yt(r, n, i),
            function(t, e) {
                var n = tf(e);
                if (!n || n === t || 16 & e.state)
                    return;
                e.state |= 16;
                var i = n.template._projectedViews;
                i || (i = n.template._projectedViews = []);
                i.push(e),
                function(t, e) {
                    if (4 & e.flags)
                        return;
                    t.nodeFlags |= 4,
                    e.flags |= 4;
                    var n = e.parent;
                    for (; n; )
                        n.childFlags |= 4,
                        n = n.parent
                }(e.parent.def, e.parentNodeDef)
            }(e, i),
            Bh.dirtyParentQueries(i),
            Nf(e, n > 0 ? r[n - 1] : null, i)
        }
        function Lf(t, e) {
            var n = t.viewContainer._embeddedViews;
            if ((null == e || e >= n.length) && (e = n.length - 1),
            e < 0)
                return null;
            var i = n[e];
            return i.viewContainerParent = null,
            Kt(n, e),
            Bh.dirtyParentQueries(i),
            jf(i),
            i
        }
        function Nf(t, e, n) {
            var i = e ? nf(e, e.def.lastRenderRootNode) : t.renderElement
              , r = n.renderer.parentNode(i)
              , o = n.renderer.nextSibling(i);
            hf(n, 2, r, o, void 0)
        }
        function jf(t) {
            hf(t, 3, null, null, void 0)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Vf = {};
        function Ff(t, e, n, i, r, o) {
            return new Bf(t,e,n,i,r,o)
        }
        function Uf(t) {
            return t.viewDefFactory
        }
        var Bf = function(t) {
            function e(e, n, i, r, o, a) {
                var s = t.call(this) || this;
                return s.selector = e,
                s.componentType = n,
                s._inputs = r,
                s._outputs = o,
                s.ngContentSelectors = a,
                s.viewDefFactory = i,
                s
            }
            return Object(i.c)(e, t),
            Object.defineProperty(e.prototype, "inputs", {
                get: function() {
                    var t = []
                      , e = this._inputs;
                    for (var n in e) {
                        var i = e[n];
                        t.push({
                            propName: n,
                            templateName: i
                        })
                    }
                    return t
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(e.prototype, "outputs", {
                get: function() {
                    var t = [];
                    for (var e in this._outputs) {
                        var n = this._outputs[e];
                        t.push({
                            propName: e,
                            templateName: n
                        })
                    }
                    return t
                },
                enumerable: !0,
                configurable: !0
            }),
            e.prototype.create = function(t, e, n, i) {
                if (!i)
                    throw new Error("ngModule should be provided");
                var r = pf(this.viewDefFactory)
                  , o = r.nodes[0].element.componentProvider.nodeIndex
                  , a = Bh.createRootView(t, e || [], n, r, i, Vf)
                  , s = jh(a, o).instance;
                return n && a.renderer.setAttribute(Nh(a, 0).renderElement, "ng-version", sh.full),
                new zf(a,new qf(a),s)
            }
            ,
            e
        }(Hp)
          , zf = function(t) {
            function e(e, n, i) {
                var r = t.call(this) || this;
                return r._view = e,
                r._viewRef = n,
                r._component = i,
                r._elDef = r._view.def.nodes[0],
                r.hostView = n,
                r.changeDetectorRef = n,
                r.instance = i,
                r
            }
            return Object(i.c)(e, t),
            Object.defineProperty(e.prototype, "location", {
                get: function() {
                    return new Qp(Nh(this._view, this._elDef.nodeIndex).renderElement)
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(e.prototype, "injector", {
                get: function() {
                    return new Zf(this._view,this._elDef)
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(e.prototype, "componentType", {
                get: function() {
                    return this._component.constructor
                },
                enumerable: !0,
                configurable: !0
            }),
            e.prototype.destroy = function() {
                this._viewRef.destroy()
            }
            ,
            e.prototype.onDestroy = function(t) {
                this._viewRef.onDestroy(t)
            }
            ,
            e
        }(Gp);
        function Gf(t, e, n) {
            return new Hf(t,e,n)
        }
        var Hf = function() {
            function t(t, e, n) {
                this._view = t,
                this._elDef = e,
                this._data = n,
                this._embeddedViews = []
            }
            return Object.defineProperty(t.prototype, "element", {
                get: function() {
                    return new Qp(this._data.renderElement)
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "injector", {
                get: function() {
                    return new Zf(this._view,this._elDef)
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "parentInjector", {
                get: function() {
                    for (var t = this._view, e = this._elDef.parent; !e && t; )
                        e = ef(t),
                        t = t.parent;
                    return t ? new Zf(t,e) : new Zf(this._view,null)
                },
                enumerable: !0,
                configurable: !0
            }),
            t.prototype.clear = function() {
                for (var t = this._embeddedViews.length - 1; t >= 0; t--) {
                    var e = Lf(this._data, t);
                    Bh.destroyView(e)
                }
            }
            ,
            t.prototype.get = function(t) {
                var e = this._embeddedViews[t];
                if (e) {
                    var n = new qf(e);
                    return n.attachToViewContainerRef(this),
                    n
                }
                return null
            }
            ,
            Object.defineProperty(t.prototype, "length", {
                get: function() {
                    return this._embeddedViews.length
                },
                enumerable: !0,
                configurable: !0
            }),
            t.prototype.createEmbeddedView = function(t, e, n) {
                var i = t.createEmbeddedView(e || {});
                return this.insert(i, n),
                i
            }
            ,
            t.prototype.createComponent = function(t, e, n, i, r) {
                var o = n || this.parentInjector;
                r || t instanceof Zp || (r = o.get(_t));
                var a = t.create(o, i, void 0, r);
                return this.insert(a.hostView, e),
                a
            }
            ,
            t.prototype.insert = function(t, e) {
                if (t.destroyed)
                    throw new Error("Cannot insert a destroyed View in a ViewContainer!");
                var n = t
                  , i = n._view;
                return Rf(this._view, this._data, e, i),
                n.attachToViewContainerRef(this),
                t
            }
            ,
            t.prototype.move = function(t, e) {
                if (t.destroyed)
                    throw new Error("Cannot move a destroyed View in a ViewContainer!");
                var n, i, r, o, a, s = this._embeddedViews.indexOf(t._view);
                return n = this._data,
                i = s,
                r = e,
                o = n.viewContainer._embeddedViews,
                a = o[i],
                Kt(o, i),
                null == r && (r = o.length),
                Yt(o, r, a),
                Bh.dirtyParentQueries(a),
                jf(a),
                Nf(n, r > 0 ? o[r - 1] : null, a),
                t
            }
            ,
            t.prototype.indexOf = function(t) {
                return this._embeddedViews.indexOf(t._view)
            }
            ,
            t.prototype.remove = function(t) {
                var e = Lf(this._data, t);
                e && Bh.destroyView(e)
            }
            ,
            t.prototype.detach = function(t) {
                var e = Lf(this._data, t);
                return e ? new qf(e) : null
            }
            ,
            t
        }();
        function Wf(t) {
            return new qf(t)
        }
        var qf = function() {
            function t(t) {
                this._view = t,
                this._viewContainerRef = null,
                this._appRef = null
            }
            return Object.defineProperty(t.prototype, "rootNodes", {
                get: function() {
                    return hf(this._view, 0, void 0, void 0, t = []),
                    t;
                    var t
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "context", {
                get: function() {
                    return this._view.context
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "destroyed", {
                get: function() {
                    return 0 != (128 & this._view.state)
                },
                enumerable: !0,
                configurable: !0
            }),
            t.prototype.markForCheck = function() {
                Jh(this._view)
            }
            ,
            t.prototype.detach = function() {
                this._view.state &= -5
            }
            ,
            t.prototype.detectChanges = function() {
                var t = this._view.root.rendererFactory;
                t.begin && t.begin();
                try {
                    Bh.checkAndUpdateView(this._view)
                } finally {
                    t.end && t.end()
                }
            }
            ,
            t.prototype.checkNoChanges = function() {
                Bh.checkNoChangesView(this._view)
            }
            ,
            t.prototype.reattach = function() {
                this._view.state |= 4
            }
            ,
            t.prototype.onDestroy = function(t) {
                this._view.disposables || (this._view.disposables = []),
                this._view.disposables.push(t)
            }
            ,
            t.prototype.destroy = function() {
                this._appRef ? this._appRef.detachView(this) : this._viewContainerRef && this._viewContainerRef.detach(this._viewContainerRef.indexOf(this)),
                Bh.destroyView(this._view)
            }
            ,
            t.prototype.detachFromAppRef = function() {
                this._appRef = null,
                jf(this._view),
                Bh.dirtyParentQueries(this._view)
            }
            ,
            t.prototype.attachToAppRef = function(t) {
                if (this._viewContainerRef)
                    throw new Error("This view is already attached to a ViewContainer!");
                this._appRef = t
            }
            ,
            t.prototype.attachToViewContainerRef = function(t) {
                if (this._appRef)
                    throw new Error("This view is already attached directly to the ApplicationRef!");
                this._viewContainerRef = t
            }
            ,
            t
        }();
        function Xf(t, e) {
            return new Yf(t,e)
        }
        var Yf = function(t) {
            function e(e, n) {
                var i = t.call(this) || this;
                return i._parentView = e,
                i._def = n,
                i
            }
            return Object(i.c)(e, t),
            e.prototype.createEmbeddedView = function(t) {
                return new qf(Bh.createEmbeddedView(this._parentView, this._def, this._def.element.template, t))
            }
            ,
            Object.defineProperty(e.prototype, "elementRef", {
                get: function() {
                    return new Qp(Nh(this._parentView, this._def.nodeIndex).renderElement)
                },
                enumerable: !0,
                configurable: !0
            }),
            e
        }(Eh);
        function Kf(t, e) {
            return new Zf(t,e)
        }
        var Zf = function() {
            function t(t, e) {
                this.view = t,
                this.elDef = e
            }
            return t.prototype.get = function(t, e) {
                void 0 === e && (e = Pc.THROW_IF_NOT_FOUND);
                var n = !!this.elDef && 0 != (33554432 & this.elDef.flags);
                return Bh.resolveDep(this.view, this.elDef, n, {
                    flags: 0,
                    token: t,
                    tokenKey: Hh(t)
                }, e)
            }
            ,
            t
        }();
        function Jf(t, e) {
            var n = t.def.nodes[e];
            if (1 & n.flags) {
                var i = Nh(t, n.nodeIndex);
                return n.element.template ? i.template : i.renderElement
            }
            if (2 & n.flags)
                return Lh(t, n.nodeIndex).renderText;
            if (20240 & n.flags)
                return jh(t, n.nodeIndex).instance;
            throw new Error("Illegal state: read nodeValue for node index " + e)
        }
        function Qf(t, e, n, i) {
            return new $f(t,e,n,i)
        }
        var $f = function() {
            function t(t, e, n, i) {
                this._moduleType = t,
                this._parent = e,
                this._bootstrapComponents = n,
                this._def = i,
                this._destroyListeners = [],
                this._destroyed = !1,
                this.injector = this,
                function(t) {
                    for (var e = t._def, n = t._providers = Zt(e.providers.length), i = 0; i < e.providers.length; i++) {
                        var r = e.providers[i];
                        4096 & r.flags || void 0 === n[i] && (n[i] = Df(t, r))
                    }
                }(this)
            }
            return t.prototype.get = function(t, e, n) {
                void 0 === e && (e = Pc.THROW_IF_NOT_FOUND),
                void 0 === n && (n = v.Default);
                var i = 0;
                return n & v.SkipSelf ? i |= 1 : n & v.Self && (i |= 4),
                kf(this, {
                    token: t,
                    tokenKey: Hh(t),
                    flags: i
                }, e)
            }
            ,
            Object.defineProperty(t.prototype, "instance", {
                get: function() {
                    return this.get(this._moduleType)
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "componentFactoryResolver", {
                get: function() {
                    return this.get(Yp)
                },
                enumerable: !0,
                configurable: !0
            }),
            t.prototype.destroy = function() {
                if (this._destroyed)
                    throw new Error("The ng module " + F(this.instance.constructor) + " has already been destroyed.");
                this._destroyed = !0,
                function(t, e) {
                    for (var n = t._def, i = new Set, r = 0; r < n.providers.length; r++) {
                        if (131072 & n.providers[r].flags) {
                            var o = t._providers[r];
                            if (o && o !== Af) {
                                var a = o.ngOnDestroy;
                                "function" != typeof a || i.has(o) || (a.apply(o),
                                i.add(o))
                            }
                        }
                    }
                }(this),
                this._destroyListeners.forEach((function(t) {
                    return t()
                }
                ))
            }
            ,
            t.prototype.onDestroy = function(t) {
                this._destroyListeners.push(t)
            }
            ,
            t
        }()
          , tm = Hh(nh)
          , em = Hh(Qp)
          , nm = Hh(Th)
          , im = Hh(Eh)
          , rm = Hh(Ws)
          , om = Hh(Pc)
          , am = Hh(lt);
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function sm(t, e, n, r, o, a, s, c) {
            var l = [];
            if (s)
                for (var u in s) {
                    var d = Object(i.f)(s[u], 2)
                      , p = d[0]
                      , h = d[1];
                    l[p] = {
                        flags: 8,
                        name: u,
                        nonMinifiedName: h,
                        ns: null,
                        securityContext: null,
                        suffix: null
                    }
                }
            var f = [];
            if (c)
                for (var m in c)
                    f.push({
                        type: 1,
                        propName: m,
                        target: null,
                        eventName: c[m]
                    });
            return um(t, e |= 16384, n, r, o, o, a, l, f)
        }
        function cm(t, e, n) {
            return um(-1, t |= 16, null, 0, e, e, n)
        }
        function lm(t, e, n, i, r) {
            return um(-1, t, e, 0, n, i, r)
        }
        function um(t, e, n, i, r, o, a, s, c) {
            var l = cf(n)
              , u = l.matchedQueries
              , d = l.references
              , p = l.matchedQueryIds;
            c || (c = []),
            s || (s = []),
            o = G(o);
            var h = lf(a, F(r));
            return {
                nodeIndex: -1,
                parent: null,
                renderParent: null,
                bindingIndex: -1,
                outputIndex: -1,
                checkIndex: t,
                flags: e,
                childFlags: 0,
                directChildFlags: 0,
                childMatchedQueries: 0,
                matchedQueries: u,
                matchedQueryIds: p,
                references: d,
                ngContentIndex: -1,
                childCount: i,
                bindings: s,
                bindingFlags: wf(s),
                outputs: c,
                element: null,
                provider: {
                    token: r,
                    value: o,
                    deps: h
                },
                text: null,
                query: null,
                ngContent: null
            }
        }
        function dm(t, e) {
            return mm(t, e)
        }
        function pm(t, e) {
            for (var n = t; n.parent && !of(n); )
                n = n.parent;
            return gm(n.parent, ef(n), !0, e.provider.value, e.provider.deps)
        }
        function hm(t, e) {
            var n = (32768 & e.flags) > 0
              , i = gm(t, e.parent, n, e.provider.value, e.provider.deps);
            if (e.outputs.length)
                for (var r = 0; r < e.outputs.length; r++) {
                    var o = e.outputs[r]
                      , a = i[o.propName];
                    if (!mu(a))
                        throw new Error("@Output " + o.propName + " not initialized in '" + i.constructor.name + "'.");
                    var s = a.subscribe(fm(t, e.parent.nodeIndex, o.eventName));
                    t.disposables[e.outputIndex + r] = s.unsubscribe.bind(s)
                }
            return i
        }
        function fm(t, e, n) {
            return function(i) {
                return $h(t, e, n, i)
            }
        }
        function mm(t, e) {
            var n = (8192 & e.flags) > 0
              , r = e.provider;
            switch (201347067 & e.flags) {
            case 512:
                return gm(t, e.parent, n, r.value, r.deps);
            case 1024:
                return function(t, e, n, r, o) {
                    var a = o.length;
                    switch (a) {
                    case 0:
                        return r();
                    case 1:
                        return r(ym(t, e, n, o[0]));
                    case 2:
                        return r(ym(t, e, n, o[0]), ym(t, e, n, o[1]));
                    case 3:
                        return r(ym(t, e, n, o[0]), ym(t, e, n, o[1]), ym(t, e, n, o[2]));
                    default:
                        for (var s = [], c = 0; c < a; c++)
                            s.push(ym(t, e, n, o[c]));
                        return r.apply(void 0, Object(i.h)(s))
                    }
                }(t, e.parent, n, r.value, r.deps);
            case 2048:
                return ym(t, e.parent, n, r.deps[0]);
            case 256:
                return r.value
            }
        }
        function gm(t, e, n, r, o) {
            var a = o.length;
            switch (a) {
            case 0:
                return new r;
            case 1:
                return new r(ym(t, e, n, o[0]));
            case 2:
                return new r(ym(t, e, n, o[0]),ym(t, e, n, o[1]));
            case 3:
                return new r(ym(t, e, n, o[0]),ym(t, e, n, o[1]),ym(t, e, n, o[2]));
            default:
                for (var s = [], c = 0; c < a; c++)
                    s.push(ym(t, e, n, o[c]));
                return new (r.bind.apply(r, Object(i.h)([void 0], s)))
            }
        }
        var vm = {};
        function ym(t, e, n, i, r) {
            if (void 0 === r && (r = Pc.THROW_IF_NOT_FOUND),
            8 & i.flags)
                return i.token;
            var o = t;
            2 & i.flags && (r = null);
            var a = i.tokenKey;
            a === rm && (n = !(!e || !e.element.componentView)),
            e && 1 & i.flags && (n = !1,
            e = e.parent);
            for (var s = t; s; ) {
                if (e)
                    switch (a) {
                    case tm:
                        return bm(s, e, n).renderer;
                    case em:
                        return new Qp(Nh(s, e.nodeIndex).renderElement);
                    case nm:
                        return Nh(s, e.nodeIndex).viewContainer;
                    case im:
                        if (e.element.template)
                            return Nh(s, e.nodeIndex).template;
                        break;
                    case rm:
                        return Wf(bm(s, e, n));
                    case om:
                    case am:
                        return Kf(s, e);
                    default:
                        var c = (n ? e.element.allProviders : e.element.publicProviders)[a];
                        if (c) {
                            var l = jh(s, c.nodeIndex);
                            return l || (l = {
                                instance: mm(s, c)
                            },
                            s.nodes[c.nodeIndex] = l),
                            l.instance
                        }
                    }
                n = of(s),
                e = ef(s),
                s = s.parent,
                4 & i.flags && (s = null)
            }
            var u = o.root.injector.get(i.token, vm);
            return u !== vm || r === vm ? u : o.root.ngModule.injector.get(i.token, r)
        }
        function bm(t, e, n) {
            var i;
            if (n)
                i = Nh(t, e.nodeIndex).componentView;
            else
                for (i = t; i.parent && !of(i); )
                    i = i.parent;
            return i
        }
        function wm(t, e, n, i, r, o) {
            if (32768 & n.flags) {
                var a = Nh(t, n.parent.nodeIndex).componentView;
                2 & a.def.flags && (a.state |= 8)
            }
            var s = n.bindings[i].name;
            if (e.instance[s] = r,
            524288 & n.flags) {
                o = o || {};
                var c = xl.unwrap(t.oldValues[n.bindingIndex + i]);
                o[n.bindings[i].nonMinifiedName] = new Ip(c,r,0 != (2 & t.state))
            }
            return t.oldValues[n.bindingIndex + i] = r,
            o
        }
        function Sm(t, e) {
            if (t.def.nodeFlags & e)
                for (var n = t.def.nodes, i = 0, r = 0; r < n.length; r++) {
                    var o = n[r]
                      , a = o.parent;
                    for (!a && o.flags & e && Mm(t, r, o.flags & e, i++),
                    0 == (o.childFlags & e) && (r += o.childCount); a && 1 & a.flags && r === a.nodeIndex + a.childCount; )
                        a.directChildFlags & e && (i = xm(t, a, e, i)),
                        a = a.parent
                }
        }
        function xm(t, e, n, i) {
            for (var r = e.nodeIndex + 1; r <= e.nodeIndex + e.childCount; r++) {
                var o = t.def.nodes[r];
                o.flags & n && Mm(t, r, o.flags & n, i++),
                r += o.childCount
            }
            return i
        }
        function Mm(t, e, n, i) {
            var r = jh(t, e);
            if (r) {
                var o = r.instance;
                o && (Bh.setCurrentNode(t, e),
                1048576 & n && Rh(t, 512, i) && o.ngAfterContentInit(),
                2097152 & n && o.ngAfterContentChecked(),
                4194304 & n && Rh(t, 768, i) && o.ngAfterViewInit(),
                8388608 & n && o.ngAfterViewChecked(),
                131072 & n && o.ngOnDestroy())
            }
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Em = function(t) {
            function e(e) {
                var n = t.call(this) || this;
                return n.ngModule = e,
                n
            }
            return Object(i.c)(e, t),
            e.prototype.resolveComponentFactory = function(t) {
                ngDevMode && Oe(t);
                var e = me(t);
                return new Tm(e,this.ngModule)
            }
            ,
            e
        }(Yp);
        function Cm(t) {
            var e = [];
            for (var n in t)
                if (t.hasOwnProperty(n)) {
                    var i = t[n];
                    e.push({
                        propName: i,
                        templateName: n
                    })
                }
            return e
        }
        var Am = new ct("SCHEDULER_TOKEN",{
            providedIn: "root",
            factory: function() {
                return si
            }
        });
        var Tm = function(t) {
            function e(e, n) {
                var i = t.call(this) || this;
                return i.componentDef = e,
                i.ngModule = n,
                i.componentType = e.type,
                i.selector = e.selectors.map(fo).join(","),
                i.ngContentSelectors = e.ngContentSelectors ? e.ngContentSelectors : [],
                i.isBoundToModule = !!n,
                i
            }
            return Object(i.c)(e, t),
            Object.defineProperty(e.prototype, "inputs", {
                get: function() {
                    return Cm(this.componentDef.inputs)
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(e.prototype, "outputs", {
                get: function() {
                    return Cm(this.componentDef.outputs)
                },
                enumerable: !0,
                configurable: !0
            }),
            e.prototype.create = function(t, e, n, i) {
                var r, o, a = (i = i || this.ngModule) ? function(t, e) {
                    return {
                        get: function(n, i, r) {
                            var o = t.get(n, vm, r);
                            return o !== vm || i === vm ? o : e.get(n, i, r)
                        }
                    }
                }(t, i.injector) : t, s = a.get(eh, Ue), c = a.get(oh, null), l = s.createRenderer(null, this.componentDef), u = this.componentDef.selectors[0][0] || "div", d = n ? Ca(l, n, this.componentDef.encapsulation) : pa(u, s.createRenderer(null, this.componentDef), function(t) {
                    var e = t.toLowerCase();
                    return "svg" === e ? "http://www.w3.org/2000/svg" : "math" === e ? "http://www.w3.org/1998/MathML/" : null
                }(u)), p = this.componentDef.onPush ? 576 : 528, h = "string" == typeof n && /^#root-ng-internal-isolated-\d+/.test(n), f = bp(), m = Ma(0, -1, null, 1, 0, null, null, null, null, null), g = ha(null, m, f, p, null, null, s, l, c, a);
                An(g, null);
                try {
                    var v = vp(d, this.componentDef, g, s, l);
                    if (d)
                        if (n)
                            Zn(l, d, ["ng-version", sh.full]);
                        else {
                            var y = function(t) {
                                for (var e = [], n = [], i = 1, r = 2; i < t.length; ) {
                                    var o = t[i];
                                    if ("string" == typeof o)
                                        2 === r ? "" !== o && e.push(o, t[++i]) : 8 === r && n.push(o);
                                    else {
                                        if (!co(r))
                                            break;
                                        r = o
                                    }
                                    i++
                                }
                                return {
                                    attrs: e,
                                    classes: n
                                }
                            }(this.componentDef.selectors[0])
                              , b = y.attrs
                              , w = y.classes;
                            b && Zn(l, d, b),
                            w && w.length > 0 && Ls(l, d, w.join(" "))
                        }
                    if (o = We(m, 0),
                    void 0 !== e)
                        for (var S = o.projection = [], x = 0; x < this.ngContentSelectors.length; x++) {
                            var M = e[x];
                            S.push(null != M ? Array.from(M) : null)
                        }
                    r = yp(v, this.componentDef, g, f, [wp]),
                    ma(m, g, null)
                } finally {
                    In()
                }
                var E = new Om(this.componentType,r,Bs(Qp, o, g),g,o);
                return n && !h || (ngDevMode && Yn(m.node, 2),
                m.node.child = o),
                E
            }
            ,
            e
        }(Hp);
        new Em;
        var Om = function(t) {
            function e(e, n, i, r, o) {
                var a, s, c, l, u, d = t.call(this) || this;
                return d.location = i,
                d._rootLView = r,
                d._tNode = o,
                d.destroyCbs = [],
                d.instance = n,
                d.hostView = d.changeDetectorRef = new Us(r),
                a = r[1],
                s = null,
                c = -1,
                l = r,
                null == (u = a.node) && (ngDevMode && s && Yn(s, 3, 0),
                a.node = u = Aa(a, s, 2, c, null, null)),
                l[6] = u,
                d.componentType = e,
                d
            }
            return Object(i.c)(e, t),
            Object.defineProperty(e.prototype, "injector", {
                get: function() {
                    return new Oi(this._tNode,this._rootLView)
                },
                enumerable: !0,
                configurable: !0
            }),
            e.prototype.destroy = function() {
                this.destroyCbs && (this.destroyCbs.forEach((function(t) {
                    return t()
                }
                )),
                this.destroyCbs = null,
                !this.hostView.destroyed && this.hostView.destroy())
            }
            ,
            e.prototype.onDestroy = function(t) {
                this.destroyCbs && this.destroyCbs.push(t)
            }
            ,
            e
        }(Gp);
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        "undefined" == typeof ngI18nClosureMode && (J.ngI18nClosureMode = "undefined" != typeof goog && "function" == typeof goog.getMsg);
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var _m = void 0;
        var Pm, Im = ["en", [["a", "p"], ["AM", "PM"], _m], [["AM", "PM"], _m, _m], [["S", "M", "T", "W", "T", "F", "S"], ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]], _m, [["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]], _m, [["B", "A"], ["BC", "AD"], ["Before Christ", "Anno Domini"]], 0, [6, 0], ["M/d/yy", "MMM d, y", "MMMM d, y", "EEEE, MMMM d, y"], ["h:mm a", "h:mm:ss a", "h:mm:ss a z", "h:mm:ss a zzzz"], ["{1}, {0}", _m, "{1} 'at' {0}", _m], [".", ",", ";", "%", "+", "-", "E", "×", "‰", "∞", "NaN", ":"], ["#,##0.###", "#,##0%", "¤#,##0.00", "#E0"], "USD", "$", "US Dollar", {}, "ltr", function(t) {
            var e = Math.floor(Math.abs(t))
              , n = t.toString().replace(/^[^.]*\.?/, "").length;
            return 1 === e && 0 === n ? 1 : 5
        }
        ], km = {};
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Dm(t, e, n) {
            "string" != typeof e && (n = e,
            e = t[Pm.LocaleId]),
            e = e.toLowerCase().replace(/_/g, "-"),
            km[e] = t,
            n && (km[e][Pm.ExtraData] = n)
        }
        function Rm(t) {
            var e = function(t) {
                return t.toLowerCase().replace(/_/g, "-")
            }/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
            (t)
              , n = jm(e);
            if (n)
                return n;
            var i = e.split("-")[0];
            if (n = jm(i))
                return n;
            if ("en" === i)
                return Im;
            throw new Error('Missing locale data for the locale "' + t + '".')
        }
        function Lm(t) {
            return Rm(t)[Pm.CurrencyCode] || null
        }
        function Nm(t) {
            return Rm(t)[Pm.PluralCase]
        }
        function jm(t) {
            return t in km || (km[t] = J.ng && J.ng.common && J.ng.common.locales && J.ng.common.locales[t]),
            km[t]
        }
        function Vm() {
            km = {}
        }
        !function(t) {
            t[t.LocaleId = 0] = "LocaleId",
            t[t.DayPeriodsFormat = 1] = "DayPeriodsFormat",
            t[t.DayPeriodsStandalone = 2] = "DayPeriodsStandalone",
            t[t.DaysFormat = 3] = "DaysFormat",
            t[t.DaysStandalone = 4] = "DaysStandalone",
            t[t.MonthsFormat = 5] = "MonthsFormat",
            t[t.MonthsStandalone = 6] = "MonthsStandalone",
            t[t.Eras = 7] = "Eras",
            t[t.FirstDayOfWeek = 8] = "FirstDayOfWeek",
            t[t.WeekendRange = 9] = "WeekendRange",
            t[t.DateFormat = 10] = "DateFormat",
            t[t.TimeFormat = 11] = "TimeFormat",
            t[t.DateTimeFormat = 12] = "DateTimeFormat",
            t[t.NumberSymbols = 13] = "NumberSymbols",
            t[t.NumberFormats = 14] = "NumberFormats",
            t[t.CurrencyCode = 15] = "CurrencyCode",
            t[t.CurrencySymbol = 16] = "CurrencySymbol",
            t[t.CurrencyName = 17] = "CurrencyName",
            t[t.Currencies = 18] = "Currencies",
            t[t.Directionality = 19] = "Directionality",
            t[t.PluralCase = 20] = "PluralCase",
            t[t.ExtraData = 21] = "ExtraData"
        }(Pm || (Pm = {}));
        var Fm = ["zero", "one", "two", "few", "many"];
        var Um = "en-US"
          , Bm = "USD"
          , zm = /^\s*(�\d+:?\d*�)\s*,\s*(select|plural)\s*,/
          , Gm = /�\/?\*(\d+:\d+)�/gi
          , Hm = /�(\/?[#*!]\d+):?\d*�/gi
          , Wm = /�(\d+):?\d*�/gi
          , qm = /({\s*�\d+:?\d*�\s*,\s*\S{6}\s*,[\s\S]*})/gi
          , Xm = /\[(�.+?�?)\]/
          , Ym = /\[(�.+?�?)\]|(�\/?\*\d+:\d+�)/g
          , Km = /({\s*)(VAR_(PLURAL|SELECT)(_\d+)?)(\s*,)/g
          , Zm = /{([A-Z0-9_]+)}/g
          , Jm = /�I18N_EXP_(ICU(_\d+)?)�/g
          , Qm = /\/\*/
          , $m = /\d+\:(\d+)/;
        function tg(t) {
            if (!t)
                return [];
            var e, n = 0, i = [], r = [], o = /[{}]/g;
            for (o.lastIndex = 0; e = o.exec(t); ) {
                var a = e.index;
                if ("}" == e[0]) {
                    if (i.pop(),
                    0 == i.length) {
                        var s = t.substring(n, a);
                        zm.test(s) ? r.push(eg(s)) : r.push(s),
                        n = a + 1
                    }
                } else {
                    if (0 == i.length) {
                        var c = t.substring(n, a);
                        r.push(c),
                        n = a + 1
                    }
                    i.push("{")
                }
            }
            var l = t.substring(n);
            return r.push(l),
            r
        }
        function eg(t) {
            for (var e = [], n = [], i = 1, r = 0, o = tg(t = t.replace(zm, (function(t, e, n) {
                return i = "select" === n ? 0 : 1,
                r = parseInt(e.substr(1), 10),
                ""
            }
            ))), a = 0; a < o.length; ) {
                var s = o[a++].trim();
                1 === i && (s = s.replace(/\s*(?:=)?(\w+)\s*/, "$1")),
                s.length && e.push(s);
                var c = tg(o[a++]);
                e.length > n.length && n.push(c)
            }
            return {
                type: i,
                mainBinding: r,
                cases: e,
                values: n
            }
        }
        function ng(t) {
            for (var e, n, i = "", r = 0, o = !1; null !== (e = Gm.exec(t)); )
                o ? e[0] === "�/*" + n + "�" && (r = e.index,
                o = !1) : (i += t.substring(r, e.index + e[0].length),
                n = e[1],
                o = !0);
            return ngDevMode && Rt(o, !1, 'Tag mismatch: unable to find the end of the sub-template in the translation "' + t + '"'),
            i += t.substr(r)
        }
        function ig(t, e, n, i) {
            void 0 === i && (i = null);
            for (var r = [null, null], o = t.split(Wm), a = 0, s = 0; s < o.length; s++) {
                var c = o[s];
                if (1 & s) {
                    var l = parseInt(c, 10);
                    r.push(-1 - l),
                    a |= sg(l)
                } else
                    "" !== c && r.push(c)
            }
            return r.push(e << 2 | (n ? 1 : 0)),
            n && r.push(n, i),
            r[0] = a,
            r[1] = r.length - 2,
            r
        }
        function rg(t, e) {
            var n;
            void 0 === e && (e = 0),
            e |= sg(t.mainBinding);
            for (var i = 0; i < t.values.length; i++)
                for (var r = t.values[i], o = 0; o < r.length; o++) {
                    var a = r[o];
                    if ("string" == typeof a)
                        for (; n = Wm.exec(a); )
                            e |= sg(parseInt(n[1], 10));
                    else
                        e = rg(a, e)
                }
            return e
        }
        var og = []
          , ag = -1;
        function sg(t) {
            return 1 << Math.min(t, 31)
        }
        var cg, lg = [];
        function ug(t, e, n) {
            var i = sn();
            ngDevMode && Bt(i, "tView should be defined"),
            og[++ag] = t,
            Cu(!0),
            i.firstCreatePass && null === i.data[t + 20] && function(t, e, n, i, r) {
                var o = e.blueprint.length - 20;
                cg = 0;
                var a = ln()
                  , s = dn() ? a : a && a.parent
                  , c = s && s !== t[6] ? s.index - 20 : n
                  , l = 0;
                lg[l] = c;
                var u = [];
                if (n > 0 && a !== s) {
                    var d = a.index - 20;
                    dn() || (d = ~d),
                    u.push(d << 3 | 0)
                }
                var p = []
                  , h = [];
                if ("" === i && hg(r))
                    u.push(i, dg(o), c << 17 | 1);
                else
                    for (var f = function(t, e) {
                        if (hg(e))
                            return ng(t);
                        var n = t.indexOf(":" + e + "�") + 2 + e.toString().length
                          , i = t.search(new RegExp("�\\/\\*\\d+:" + e + "�"));
                        return ng(t.substring(n, i))
                    }(i, r), m = function(t) {
                        return t.replace(_g, " ")
                    }(f).split(Hm), g = 0; g < m.length; g++) {
                        var v = m[g];
                        if (1 & g)
                            if ("/" === v.charAt(0)) {
                                if ("#" === v.charAt(1)) {
                                    var y = parseInt(v.substr(2), 10);
                                    c = lg[--l],
                                    u.push(y << 3 | 5)
                                }
                            } else {
                                y = parseInt(v.substr(1), 10);
                                var b = "#" === v.charAt(0);
                                u.push((b ? y : ~y) << 3 | 0, c << 17 | 1),
                                b && (lg[++l] = c = y)
                            }
                        else
                            for (var w = tg(v), S = 0; S < w.length; S++)
                                if (1 & S) {
                                    var x = w[S];
                                    if ("object" != typeof x)
                                        throw new Error('Unable to parse ICU expression in "' + f + '" message.');
                                    var M = dg(o);
                                    u.push(Ao, ngDevMode ? "ICU " + M : "", M, c << 17 | 1);
                                    var E = rg(x);
                                    Ag(h, x, M, M);
                                    var C = h.length - 1;
                                    p.push(sg(x.mainBinding), 3, -1 - x.mainBinding, M << 2 | 2, C, E, 2, M << 2 | 3, C)
                                } else if ("" !== w[S]) {
                                    var A = w[S]
                                      , T = A.match(Wm)
                                      , O = dg(o);
                                    u.push(T ? "" : A, O, c << 17 | 1),
                                    T && Wt(ig(A, O), p)
                                }
                    }
                cg > 0 && function(t, e, n) {
                    if (ngDevMode && Ut(n, 0, "The number of slots to alloc should be greater than 0"),
                    n > 0 && t.firstCreatePass) {
                        for (var i = 0; i < n; i++)
                            t.blueprint.push(null),
                            t.data.push(null),
                            e.push(null);
                        t.expandoInstructions ? t.expandoInstructions.push(n) : t.expandoStartIndex += n
                    }
                }(e, t, cg);
                ngDevMode && function(t, e, n, i) {
                    Lo(t, new ca(t,i)),
                    Lo(e, new la(e,n,i)),
                    n && n.forEach((function(t) {
                        t.create.forEach((function(t) {
                            Lo(t, new ca(t,i))
                        }
                        )),
                        t.update.forEach((function(t) {
                            Lo(t, new la(t,n,i))
                        }
                        ))
                    }
                    ))
                }(u, p, h.length ? h : null, t);
                var _ = {
                    vars: cg,
                    create: u,
                    update: p,
                    icus: h.length ? h : null
                };
                e.data[n + 20] = _
            }(an(), i, t, e, n)
        }
        function dg(t) {
            return t + cg++
        }
        function pg(t, e, n, i, r) {
            ngDevMode && ngDevMode.rendererMoveNode++;
            var o = e.next;
            i || (i = n),
            i === n && e !== n.child ? (e.next = n.child,
            n.child = e) : i !== n && e !== i.next ? (e.next = i.next,
            i.next = e) : e.next = null,
            n !== r[6] && (e.parent = n);
            for (var a = e.next; a; )
                a.next === e && (a.next = o),
                a = a.next;
            if (1 === e.type)
                return ks(t, r, e),
                e;
            Ts(t, r, Ge(e, r), e);
            var s = r[e.index];
            return 0 !== e.type && Se(s) && Ts(t, r, s[7], e),
            e
        }
        function hg(t) {
            return void 0 === t
        }
        function fg(t, e) {
            void 0 === e && (e = {});
            var n = t;
            if (Xm.test(t)) {
                var r = {}
                  , o = [0];
                n = n.replace(Ym, (function(t, e, n) {
                    var a = e || n
                      , s = r[a] || [];
                    if (s.length || (a.split("|").forEach((function(t) {
                        var e = t.match($m)
                          , n = e ? parseInt(e[1], 10) : 0
                          , i = Qm.test(t);
                        s.push([n, i, t])
                    }
                    )),
                    r[a] = s),
                    !s.length)
                        throw new Error("i18n postprocess: unmatched placeholder - " + a);
                    for (var c = o[o.length - 1], l = 0, u = 0; u < s.length; u++)
                        if (s[u][0] === c) {
                            l = u;
                            break
                        }
                    var d = Object(i.f)(s[l], 3)
                      , p = d[0]
                      , h = d[1]
                      , f = d[2];
                    return h ? o.pop() : c !== p && o.push(p),
                    s.splice(l, 1),
                    f
                }
                ))
            }
            return Object.keys(e).length ? n = (n = (n = n.replace(Km, (function(t, n, i, r, o, a) {
                return e.hasOwnProperty(i) ? "" + n + e[i] + a : t
            }
            ))).replace(Zm, (function(t, n) {
                return e.hasOwnProperty(n) ? e[n] : t
            }
            ))).replace(Jm, (function(t, n) {
                if (e.hasOwnProperty(n)) {
                    var i = e[n];
                    if (!i.length)
                        throw new Error("i18n postprocess: unmatched ICU - " + t + " with key: " + n);
                    return i.shift()
                }
                return t
            }
            )) : n
        }
        function mg() {
            var t = an()
              , e = sn();
            ngDevMode && Bt(e, "tView should be defined"),
            function(t, e) {
                ngDevMode && Rt(gn(), t.bindingStartIndex, "i18nEnd should be called before any binding");
                var n = og[ag--]
                  , i = t.data[n + 20];
                ngDevMode && Bt(i, "You should call i18nStart before i18nEnd");
                var r = ln()
                  , o = vg(n, i.create, t, e)
                  , a = n + 1;
                for (; a <= r.index - 20; ) {
                    -1 === o.indexOf(a) && yg(t, e, a, !0);
                    var s = We(t, a);
                    !s || 0 !== s.type && 3 !== s.type && 4 !== s.type || null === s.localNames || (a += s.localNames.length >> 1),
                    a++
                }
            }(e, t),
            Cu(!1)
        }
        function gg(t, e, n, i, r, o) {
            var a = ln();
            ngDevMode && Ht(e, n + 20),
            e[n + 20] = r;
            var s = fa(t, e[6], n, i, o, null);
            return a && a.next === s && (a.next = null),
            s
        }
        function vg(t, e, n, i) {
            for (var r = i[11], o = null, a = null, s = [], c = 0; c < e.length; c++) {
                var l = e[c];
                if ("string" == typeof l) {
                    var u = hs(l, r)
                      , d = e[++c];
                    ngDevMode && ngDevMode.rendererCreateTextNode++,
                    a = o,
                    o = gg(n, i, d, 3, u, null),
                    s.push(d),
                    pn()
                } else if ("number" == typeof l)
                    switch (7 & l) {
                    case 1:
                        var p = l >>> 17
                          , h = void 0;
                        h = p === t ? i[6] : We(n, p),
                        ngDevMode && Bt(o, "You need to create or select a node before you can insert it into the DOM"),
                        a = pg(n, o, h, a, i);
                        break;
                    case 0:
                        var f = l >= 0
                          , m = (f ? l : ~l) >>> 3;
                        s.push(m),
                        a = o,
                        (o = We(n, m)) && un(o, f);
                        break;
                    case 5:
                        a = o = We(n, l >>> 3),
                        un(o, !1);
                        break;
                    case 4:
                        var g = l >>> 3
                          , v = e[++c]
                          , y = e[++c];
                        Ga(We(n, g), i, v, y, null, null);
                        break;
                    default:
                        throw new Error('Unable to determine the type of mutate operation for "' + l + '"')
                    }
                else
                    switch (l) {
                    case Ao:
                        var b = e[++c]
                          , w = e[++c];
                        ngDevMode && Rt(typeof b, "string", 'Expected "' + b + '" to be a comment node value');
                        var S = r.createComment(b);
                        ngDevMode && ngDevMode.rendererCreateComment++,
                        a = o,
                        o = gg(n, i, w, 5, S, null),
                        s.push(w),
                        Kr(S, i),
                        o.activeCaseIndex = null,
                        pn();
                        break;
                    case Co:
                        var x = e[++c];
                        g = e[++c];
                        ngDevMode && Rt(typeof x, "string", 'Expected "' + x + '" to be an element node tag name');
                        var M = r.createElement(x);
                        ngDevMode && ngDevMode.rendererCreateElement++,
                        a = o,
                        o = gg(n, i, g, 3, M, x),
                        s.push(g);
                        break;
                    default:
                        throw new Error('Unable to determine the type of mutate operation for "' + l + '"')
                    }
            }
            return pn(),
            s
        }
        function yg(t, e, n, i) {
            var r = We(t, n)
              , o = ze(n, e);
            o && _s(e[11], o);
            var a = qe(e, n);
            if (Se(a)) {
                var s = a;
                0 !== r.type && _s(e[11], s[7])
            }
            i && (r.flags |= 64),
            ngDevMode && ngDevMode.rendererRemoveNode++
        }
        function bg(t, e, n) {
            ug(t, e, n),
            mg()
        }
        function wg(t, e) {
            var n = an()
              , i = sn();
            ngDevMode && Bt(i, "tView should be defined"),
            function(t, e, n, i) {
                for (var r = ln().index - 20, o = [], a = 0; a < i.length; a += 2)
                    for (var s = i[a], c = i[a + 1].split(qm), l = 0; l < c.length; l++) {
                        var u = c[l];
                        if (1 & l)
                            throw new Error("ICU expressions are not yet supported in attributes");
                        if ("" !== u)
                            if (!!u.match(Wm))
                                e.firstCreatePass && null === e.data[n + 20] && Wt(ig(u, r, s), o);
                            else {
                                var d = We(e, r);
                                3 === d.type && Ga(d, t, s, u, null, null);
                                var p = null !== d.inputs && d.inputs[s];
                                if (p && (cs(e, t, p, s, u),
                                ngDevMode)) {
                                    var h = ze(r, t);
                                    Pa(t, h, d.type, p, u)
                                }
                            }
                    }
                e.firstCreatePass && null === e.data[n + 20] && (e.data[n + 20] = o)
            }(n, i, t, e)
        }
        var Sg = 0
          , xg = 0;
        function Mg(t) {
            return Tl(an(), yn(), t) && (Sg |= 1 << xg),
            xg++,
            Mg
        }
        function Eg(t) {
            if (xg) {
                var e = sn();
                ngDevMode && Bt(e, "tView should be defined");
                var n = e.data[t + 20]
                  , i = void 0
                  , r = null;
                Array.isArray(n) ? i = n : (i = n.update,
                r = n.icus);
                var o = gn() - xg - 1
                  , a = an();
                !function t(e, n, i, r, o, a, s) {
                    void 0 === s && (s = !1);
                    for (var c = !1, l = 0; l < e.length; l++) {
                        var u = e[l]
                          , d = e[++l];
                        if (s || u & r)
                            for (var p = "", h = l + 1; h <= l + d; h++) {
                                var f = e[h];
                                if ("string" == typeof f)
                                    p += f;
                                else if ("number" == typeof f)
                                    if (f < 0)
                                        p += oi(a[i - f]);
                                    else {
                                        var m = f >>> 2
                                          , g = void 0
                                          , v = void 0;
                                        switch (3 & f) {
                                        case 1:
                                            var y = e[++h]
                                              , b = e[++h];
                                            Oa(o, We(o, m), a, y, p, a[11], b, !1);
                                            break;
                                        case 0:
                                            ls(a, m, p);
                                            break;
                                        case 2:
                                            if (g = n[e[++h]],
                                            null !== (v = We(o, m)).activeCaseIndex)
                                                for (var w = g.remove[v.activeCaseIndex], S = 0; S < w.length; S++) {
                                                    var x = w[S];
                                                    switch (7 & x) {
                                                    case 3:
                                                        yg(o, a, x >>> 3, !1);
                                                        break;
                                                    case 6:
                                                        var M = We(o, w[S + 1] >>> 3).activeCaseIndex;
                                                        if (null !== M)
                                                            Wt(n[x >>> 3].remove[M], w)
                                                    }
                                                }
                                            var E = Cg(g, p);
                                            v.activeCaseIndex = -1 !== E ? E : null,
                                            E > -1 && (vg(-1, g.create[E], o, a),
                                            c = !0);
                                            break;
                                        case 3:
                                            g = n[e[++h]],
                                            null !== (v = We(o, m)).activeCaseIndex && t(g.update[v.activeCaseIndex], n, i, r, o, a, c)
                                        }
                                    }
                            }
                        l += d
                    }
                }(i, r, o, Sg, e, a),
                Sg = 0,
                xg = 0
            }
        }
        function Cg(t, e) {
            var n = t.cases.indexOf(e);
            if (-1 === n)
                switch (t.type) {
                case 1:
                    var i = function(t, e) {
                        var n = Nm(e)(parseInt(t, 10))
                          , i = Fm[n];
                        return void 0 !== i ? i : "other"
                    }(e, Pg);
                    -1 === (n = t.cases.indexOf(i)) && "other" !== i && (n = t.cases.indexOf("other"));
                    break;
                case 0:
                    n = t.cases.indexOf("other")
                }
            return n
        }
        function Ag(t, e, n, r) {
            for (var o = [], a = [], s = [], c = [], l = [], u = 0; u < e.values.length; u++) {
                for (var d = e.values[u], p = [], h = 0; h < d.length; h++) {
                    var f = d[h];
                    if ("string" != typeof f) {
                        var m = p.push(f) - 1;
                        d[h] = "\x3c!--�" + m + "�--\x3e"
                    }
                }
                var g = Tg(d.join(""), n, p, t, r);
                o.push(g.create),
                a.push(g.remove),
                s.push(g.update),
                c.push(g.vars),
                l.push(g.childIcus)
            }
            var v = {
                type: e.type,
                vars: c,
                childIcus: l,
                cases: e.cases,
                create: o,
                remove: a,
                update: s
            };
            t.push(v),
            cg += Math.max.apply(Math, Object(i.h)(c))
        }
        function Tg(t, e, n, r, o) {
            var a = new er(Ve()).getInertBodyElement(t);
            if (!a)
                throw new Error("Unable to generate inert body element");
            var s = {
                vars: 0,
                childIcus: [],
                create: [],
                remove: [],
                update: []
            };
            return function t(e, n, r, o, a, s) {
                if (e) {
                    for (var c = []; e; ) {
                        var l = e.nextSibling
                          , u = s + ++n.vars;
                        switch (e.nodeType) {
                        case Node.ELEMENT_NODE:
                            var d = e
                              , p = d.tagName.toLowerCase();
                            if (gr.hasOwnProperty(p)) {
                                n.create.push(Co, p, u, r << 17 | 1);
                                for (var h = d.attributes, f = 0; f < h.length; f++) {
                                    var m = h.item(f)
                                      , g = m.name.toLowerCase();
                                    !!m.value.match(Wm) ? Sr.hasOwnProperty(g) ? vr[g] ? Wt(ig(m.value, u, m.name, rr), n.update) : yr[g] ? Wt(ig(m.value, u, m.name, or), n.update) : Wt(ig(m.value, u, m.name), n.update) : ngDevMode && console.warn("WARNING: ignoring unsafe attribute value " + g + " on element " + p + " (see http://g.co/ng/security#xss)") : n.create.push(u << 3 | 4, m.name, m.value)
                                }
                                t(e.firstChild, n, u, o, a, s),
                                n.remove.push(u << 3 | 3)
                            } else
                                n.vars--;
                            break;
                        case Node.TEXT_NODE:
                            var v = e.textContent || ""
                              , y = v.match(Wm);
                            n.create.push(y ? "" : v, u, r << 17 | 1),
                            n.remove.push(u << 3 | 3),
                            y && Wt(ig(v, u), n.update);
                            break;
                        case Node.COMMENT_NODE:
                            var b = Og.exec(e.textContent || "");
                            if (b) {
                                var w = parseInt(b[1], 10)
                                  , S = ngDevMode ? "nested ICU " + w : "";
                                n.create.push(Ao, S, u, r << 17 | 1);
                                var x = o[w];
                                c.push([x, u])
                            } else
                                n.vars--;
                            break;
                        default:
                            n.vars--
                        }
                        e = l
                    }
                    for (f = 0; f < c.length; f++) {
                        x = c[f][0];
                        var M = c[f][1];
                        Ag(a, x, M, s + n.vars);
                        var E = a.length - 1;
                        n.vars += Math.max.apply(Math, Object(i.h)(a[E].vars)),
                        n.childIcus.push(E);
                        var C = rg(x);
                        n.update.push(sg(x.mainBinding), 3, -1 - x.mainBinding, M << 2 | 2, E, C, 2, M << 2 | 3, E),
                        n.remove.push(E << 3 | 6, M << 3 | 3)
                    }
                }
            }((Or(a) || a).firstChild, s, e, n, r, o),
            s
        }
        var Og = /�(\d+)�/;
        var _g = /\uE500/g;
        var Pg = Um;
        function Ig(t) {
            Bt(t, "Expected localeId to be defined"),
            "string" == typeof t && (Pg = t.toLowerCase().replace(/_/g, "-"))
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function kg(t, e, n, r) {
            return l((function() {
                var o, a = t, s = a.prototype ? Object.getPrototypeOf(a.prototype) : null, c = s && s.constructor;
                null !== e && (void 0 === a.decorators || c && c.decorators === a.decorators ? a.decorators = e : (o = a.decorators).push.apply(o, Object(i.h)(e))),
                null !== n && (a.ctorParameters = n),
                null !== r && (void 0 === a.propDecorators || c && c.propDecorators === a.propDecorators ? a.propDecorators = r : a.propDecorators = Object(i.a)(Object(i.a)({}, a.propDecorators), r))
            }
            ))
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Dg = new Map;
        function Rg(t, e) {
            var n = Dg.get(t);
            Lg(t, n && n.moduleType, e.moduleType),
            Dg.set(t, e)
        }
        function Lg(t, e, n) {
            if (e && e !== n)
                throw new Error("Duplicate module registered for " + t + " - " + F(e) + " vs " + F(e.name))
        }
        function Ng(t) {
            if (null !== t.ɵmod.id) {
                var e = t.ɵmod.id;
                Lg(e, Dg.get(e), t),
                Dg.set(e, t)
            }
            var n = t.ɵmod.imports;
            n instanceof Function && (n = n()),
            n && n.forEach((function(t) {
                return Ng(t)
            }
            ))
        }
        function jg(t) {
            return Dg.get(t) || le[t]
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Vg = function(t) {
            function e(e, n) {
                var i = t.call(this) || this;
                i._parent = n,
                i._bootstrapComponents = [],
                i.injector = i,
                i.destroyCbs = [],
                i.componentFactoryResolver = new Em(i);
                var r = be(e);
                ngDevMode && Bt(r, "NgModule '" + F(e) + "' is not a subtype of 'NgModuleType'.");
                var o = e[it] || null;
                return o && Ig(o),
                i._bootstrapComponents = di(r.bootstrap),
                i._r3Injector = Sc(e, n, [{
                    provide: _t,
                    useValue: i
                }, {
                    provide: Yp,
                    useValue: i.componentFactoryResolver
                }], F(e)),
                i._r3Injector._resolveInjectorDefTypes(),
                i.instance = i.get(e),
                i
            }
            return Object(i.c)(e, t),
            e.prototype.get = function(t, e, n) {
                return void 0 === e && (e = Pc.THROW_IF_NOT_FOUND),
                void 0 === n && (n = v.Default),
                t === Pc || t === _t || t === lt ? this : this._r3Injector.get(t, e, n)
            }
            ,
            e.prototype.destroy = function() {
                ngDevMode && Bt(this.destroyCbs, "NgModule already destroyed");
                var t = this._r3Injector;
                !t.destroyed && t.destroy(),
                this.destroyCbs.forEach((function(t) {
                    return t()
                }
                )),
                this.destroyCbs = null
            }
            ,
            e.prototype.onDestroy = function(t) {
                ngDevMode && Bt(this.destroyCbs, "NgModule already destroyed"),
                this.destroyCbs.push(t)
            }
            ,
            e
        }(_t)
          , Fg = function(t) {
            function e(e) {
                var n = t.call(this) || this;
                return n.moduleType = e,
                null !== be(e) && Ng(e),
                n
            }
            return Object(i.c)(e, t),
            e.prototype.create = function(t) {
                return new Vg(this.moduleType,t)
            }
            ,
            e
        }(Pt);
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Ug(t, e, n) {
            var i = mn() + t
              , r = an();
            return r[i] === mo ? Cl(r, i, n ? e.call(n) : e()) : Al(r, i)
        }
        function Bg(t, e, n, i) {
            return Jg(an(), mn(), t, e, n, i)
        }
        function zg(t, e, n, i, r) {
            return Qg(an(), mn(), t, e, n, i, r)
        }
        function Gg(t, e, n, i, r, o) {
            return $g(an(), mn(), t, e, n, i, r, o)
        }
        function Hg(t, e, n, i, r, o, a) {
            return tv(an(), mn(), t, e, n, i, r, o, a)
        }
        function Wg(t, e, n, i, r, o, a, s) {
            var c = mn() + t
              , l = an()
              , u = Pl(l, c, n, i, r, o);
            return Tl(l, c + 4, a) || u ? Cl(l, c + 5, s ? e.call(s, n, i, r, o, a) : e(n, i, r, o, a)) : Al(l, c + 5)
        }
        function qg(t, e, n, i, r, o, a, s, c) {
            var l = mn() + t
              , u = an()
              , d = Pl(u, l, n, i, r, o);
            return Ol(u, l + 4, a, s) || d ? Cl(u, l + 6, c ? e.call(c, n, i, r, o, a, s) : e(n, i, r, o, a, s)) : Al(u, l + 6)
        }
        function Xg(t, e, n, i, r, o, a, s, c, l) {
            var u = mn() + t
              , d = an()
              , p = Pl(d, u, n, i, r, o);
            return _l(d, u + 4, a, s, c) || p ? Cl(d, u + 7, l ? e.call(l, n, i, r, o, a, s, c) : e(n, i, r, o, a, s, c)) : Al(d, u + 7)
        }
        function Yg(t, e, n, i, r, o, a, s, c, l, u) {
            var d = mn() + t
              , p = an()
              , h = Pl(p, d, n, i, r, o);
            return Pl(p, d + 4, a, s, c, l) || h ? Cl(p, d + 8, u ? e.call(u, n, i, r, o, a, s, c, l) : e(n, i, r, o, a, s, c, l)) : Al(p, d + 8)
        }
        function Kg(t, e, n, i) {
            return ev(an(), mn(), t, e, n, i)
        }
        function Zg(t, e) {
            ngDevMode && Ht(t, e);
            var n = t[e];
            return n === mo ? void 0 : n
        }
        function Jg(t, e, n, i, r, o) {
            var a = e + n;
            return Tl(t, a, r) ? Cl(t, a + 1, o ? i.call(o, r) : i(r)) : Zg(t, a + 1)
        }
        function Qg(t, e, n, i, r, o, a) {
            var s = e + n;
            return Ol(t, s, r, o) ? Cl(t, s + 2, a ? i.call(a, r, o) : i(r, o)) : Zg(t, s + 2)
        }
        function $g(t, e, n, i, r, o, a, s) {
            var c = e + n;
            return _l(t, c, r, o, a) ? Cl(t, c + 3, s ? i.call(s, r, o, a) : i(r, o, a)) : Zg(t, c + 3)
        }
        function tv(t, e, n, i, r, o, a, s, c) {
            var l = e + n;
            return Pl(t, l, r, o, a, s) ? Cl(t, l + 4, c ? i.call(c, r, o, a, s) : i(r, o, a, s)) : Zg(t, l + 4)
        }
        function ev(t, e, n, i, r, o) {
            for (var a = e + n, s = !1, c = 0; c < r.length; c++)
                Tl(t, a++, r[c]) && (s = !0);
            return s ? Cl(t, a, i.apply(o, r)) : Zg(t, a)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function nv(t, e) {
            var n, i = sn(), r = t + 20;
            i.firstCreatePass ? (n = function(t, e) {
                if (e)
                    for (var n = e.length - 1; n >= 0; n--) {
                        var i = e[n];
                        if (t === i.name)
                            return i
                    }
                throw new Error("The pipe '" + t + "' could not be found!")
            }(e, i.pipeRegistry),
            i.data[r] = n,
            n.onDestroy && (i.destroyHooks || (i.destroyHooks = [])).push(r, n.onDestroy)) : n = i.data[r];
            var o = n.factory || (n.factory = ye(n.type, !0))
              , a = mt(eu)
              , s = hi(!1)
              , c = o();
            return hi(s),
            mt(a),
            $l(i, an(), t, c),
            c
        }
        function iv(t, e, n) {
            var i = an()
              , r = qe(i, t);
            return lv(i, cv(i, t) ? Jg(i, mn(), e, r.transform, n, r) : r.transform(n))
        }
        function rv(t, e, n, i) {
            var r = an()
              , o = qe(r, t);
            return lv(r, cv(r, t) ? Qg(r, mn(), e, o.transform, n, i, o) : o.transform(n, i))
        }
        function ov(t, e, n, i, r) {
            var o = an()
              , a = qe(o, t);
            return lv(o, cv(o, t) ? $g(o, mn(), e, a.transform, n, i, r, a) : a.transform(n, i, r))
        }
        function av(t, e, n, i, r, o) {
            var a = an()
              , s = qe(a, t);
            return lv(a, cv(a, t) ? tv(a, mn(), e, s.transform, n, i, r, o, s) : s.transform(n, i, r, o))
        }
        function sv(t, e, n) {
            var i = an()
              , r = qe(i, t);
            return lv(i, cv(i, t) ? ev(i, mn(), e, r.transform, n, r) : r.transform.apply(r, n))
        }
        function cv(t, e) {
            return t[1].data[e + 20].pure
        }
        function lv(t, e) {
            xl.isWrapped(e) && (e = xl.unwrap(e),
            t[gn()] = mo);
            return e
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var uv = function(t) {
            function e(e) {
                void 0 === e && (e = !1);
                var n = t.call(this) || this;
                return n.__isAsync = e,
                n
            }
            return Object(i.c)(e, t),
            e.prototype.emit = function(e) {
                t.prototype.next.call(this, e)
            }
            ,
            e.prototype.subscribe = function(e, n, i) {
                var o, a = function(t) {
                    return null
                }, s = function() {
                    return null
                };
                e && "object" == typeof e ? (o = this.__isAsync ? function(t) {
                    setTimeout((function() {
                        return e.next(t)
                    }
                    ))
                }
                : function(t) {
                    e.next(t)
                }
                ,
                e.error && (a = this.__isAsync ? function(t) {
                    setTimeout((function() {
                        return e.error(t)
                    }
                    ))
                }
                : function(t) {
                    e.error(t)
                }
                ),
                e.complete && (s = this.__isAsync ? function() {
                    setTimeout((function() {
                        return e.complete()
                    }
                    ))
                }
                : function() {
                    e.complete()
                }
                )) : (o = this.__isAsync ? function(t) {
                    setTimeout((function() {
                        return e(t)
                    }
                    ))
                }
                : function(t) {
                    e(t)
                }
                ,
                n && (a = this.__isAsync ? function(t) {
                    setTimeout((function() {
                        return n(t)
                    }
                    ))
                }
                : function(t) {
                    n(t)
                }
                ),
                i && (s = this.__isAsync ? function() {
                    setTimeout((function() {
                        return i()
                    }
                    ))
                }
                : function() {
                    i()
                }
                ));
                var c = t.prototype.subscribe.call(this, o, a, s);
                return e instanceof r.a && e.add(c),
                c
            }
            ,
            e
        }(o.a);
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function dv() {
            return this._results[bl()]()
        }
        var pv = function() {
            function t() {
                this.dirty = !0,
                this._results = [],
                this.changes = new uv,
                this.length = 0;
                var e = bl()
                  , n = t.prototype;
                n[e] || (n[e] = dv)
            }
            return t.prototype.map = function(t) {
                return this._results.map(t)
            }
            ,
            t.prototype.filter = function(t) {
                return this._results.filter(t)
            }
            ,
            t.prototype.find = function(t) {
                return this._results.find(t)
            }
            ,
            t.prototype.reduce = function(t, e) {
                return this._results.reduce(t, e)
            }
            ,
            t.prototype.forEach = function(t) {
                this._results.forEach(t)
            }
            ,
            t.prototype.some = function(t) {
                return this._results.some(t)
            }
            ,
            t.prototype.toArray = function() {
                return this._results.slice()
            }
            ,
            t.prototype.toString = function() {
                return this._results.toString()
            }
            ,
            t.prototype.reset = function(t) {
                this._results = qt(t),
                this.dirty = !1,
                this.length = this._results.length,
                this.last = this._results[this.length - 1],
                this.first = this._results[0]
            }
            ,
            t.prototype.notifyOnChanges = function() {
                this.changes.emit(this)
            }
            ,
            t.prototype.setDirty = function() {
                this.dirty = !0
            }
            ,
            t.prototype.destroy = function() {
                this.changes.complete(),
                this.changes.unsubscribe()
            }
            ,
            t
        }()
          , hv = function() {
            function t(t) {
                this.queryList = t,
                this.matches = null
            }
            return t.prototype.clone = function() {
                return new t(this.queryList)
            }
            ,
            t.prototype.setDirty = function() {
                this.queryList.setDirty()
            }
            ,
            t
        }()
          , fv = function() {
            function t(t) {
                void 0 === t && (t = []),
                this.queries = t
            }
            return t.prototype.createEmbeddedView = function(e) {
                var n = e.queries;
                if (null !== n) {
                    for (var i = null !== e.contentQueries ? e.contentQueries[0] : n.length, r = [], o = 0; o < i; o++) {
                        var a = n.getByIndex(o)
                          , s = this.queries[a.indexInDeclarationView];
                        r.push(s.clone())
                    }
                    return new t(r)
                }
                return null
            }
            ,
            t.prototype.insertView = function(t) {
                this.dirtyQueriesWithMatches(t)
            }
            ,
            t.prototype.detachView = function(t) {
                this.dirtyQueriesWithMatches(t)
            }
            ,
            t.prototype.dirtyQueriesWithMatches = function(t) {
                for (var e = 0; e < this.queries.length; e++)
                    null !== Iv(t, e).matches && this.queries[e].setDirty()
            }
            ,
            t
        }()
          , mv = function(t, e, n, i) {
            void 0 === i && (i = null),
            this.predicate = t,
            this.descendants = e,
            this.isStatic = n,
            this.read = i
        }
          , gv = function() {
            function t(t) {
                void 0 === t && (t = []),
                this.queries = t
            }
            return t.prototype.elementStart = function(t, e) {
                ngDevMode && De(t, "Queries should collect results on the first template pass only");
                for (var n = 0; n < this.queries.length; n++)
                    this.queries[n].elementStart(t, e)
            }
            ,
            t.prototype.elementEnd = function(t) {
                for (var e = 0; e < this.queries.length; e++)
                    this.queries[e].elementEnd(t)
            }
            ,
            t.prototype.embeddedTView = function(e) {
                for (var n = null, i = 0; i < this.length; i++) {
                    var r = null !== n ? n.length : 0
                      , o = this.getByIndex(i).embeddedTView(e, r);
                    o && (o.indexInDeclarationView = i,
                    null !== n ? n.push(o) : n = [o])
                }
                return null !== n ? new t(n) : null
            }
            ,
            t.prototype.template = function(t, e) {
                ngDevMode && De(t, "Queries should collect results on the first template pass only");
                for (var n = 0; n < this.queries.length; n++)
                    this.queries[n].template(t, e)
            }
            ,
            t.prototype.getByIndex = function(t) {
                return ngDevMode && Ht(this.queries, t),
                this.queries[t]
            }
            ,
            Object.defineProperty(t.prototype, "length", {
                get: function() {
                    return this.queries.length
                },
                enumerable: !0,
                configurable: !0
            }),
            t.prototype.track = function(t) {
                this.queries.push(t)
            }
            ,
            t
        }()
          , vv = function() {
            function t(t, e) {
                void 0 === e && (e = -1),
                this.metadata = t,
                this.matches = null,
                this.indexInDeclarationView = -1,
                this.crossesNgTemplate = !1,
                this._appliesToNextNode = !0,
                this._declarationNodeIndex = e
            }
            return t.prototype.elementStart = function(t, e) {
                this.isApplyingToNode(e) && this.matchTNode(t, e)
            }
            ,
            t.prototype.elementEnd = function(t) {
                this._declarationNodeIndex === t.index && (this._appliesToNextNode = !1)
            }
            ,
            t.prototype.template = function(t, e) {
                this.elementStart(t, e)
            }
            ,
            t.prototype.embeddedTView = function(e, n) {
                return this.isApplyingToNode(e) ? (this.crossesNgTemplate = !0,
                this.addMatch(-e.index, n),
                new t(this.metadata)) : null
            }
            ,
            t.prototype.isApplyingToNode = function(t) {
                if (this._appliesToNextNode && !1 === this.metadata.descendants) {
                    for (var e = this._declarationNodeIndex, n = t.parent; null !== n && 4 === n.type && n.index !== e; )
                        n = n.parent;
                    return e === (null !== n ? n.index : -1)
                }
                return this._appliesToNextNode
            }
            ,
            t.prototype.matchTNode = function(t, e) {
                if (Array.isArray(this.metadata.predicate))
                    for (var n = this.metadata.predicate, i = 0; i < n.length; i++)
                        this.matchTNodeWithReadOption(t, e, yv(e, n[i]));
                else {
                    var r = this.metadata.predicate;
                    r === Eh ? 0 === e.type && this.matchTNodeWithReadOption(t, e, -1) : this.matchTNodeWithReadOption(t, e, Ei(e, t, r, !1, !1))
                }
            }
            ,
            t.prototype.matchTNodeWithReadOption = function(t, e, n) {
                if (null !== n) {
                    var i = this.metadata.read;
                    if (null !== i)
                        if (i === Qp || i === Th || i === Eh && 0 === e.type)
                            this.addMatch(e.index, -2);
                        else {
                            var r = Ei(e, t, i, !1, !1);
                            null !== r && this.addMatch(e.index, r)
                        }
                    else
                        this.addMatch(e.index, n)
                }
            }
            ,
            t.prototype.addMatch = function(t, e) {
                null === this.matches ? this.matches = [t, e] : this.matches.push(t, e)
            }
            ,
            t
        }();
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function yv(t, e) {
            var n = t.localNames;
            if (null !== n)
                for (var i = 0; i < n.length; i += 2)
                    if (n[i] === e)
                        return n[i + 1];
            return null
        }
        function bv(t, e, n, i) {
            return -1 === n ? function(t, e) {
                return 3 === t.type || 4 === t.type ? Bs(Qp, t, e) : 0 === t.type ? zs(Eh, Qp, t, e) : null
            }(e, t) : -2 === n ? function(t, e, n) {
                if (n === Qp)
                    return Bs(Qp, e, t);
                if (n === Eh)
                    return zs(Eh, Qp, e, t);
                if (n === Th)
                    return ngDevMode && Yn(e, 3, 0, 4),
                    Gs(Th, Qp, e, t);
                ngDevMode && zt("Special token to read should be one of ElementRef, TemplateRef or ViewContainerRef but got " + F(n) + ".")
            }(t, e, i) : Ci(t, t[1], n, e)
        }
        function wv(t, e, n, i) {
            var r = e[19].queries[i];
            if (null === r.matches) {
                for (var o = t.data, a = n.matches, s = [], c = 0; c < a.length; c += 2) {
                    var l = a[c];
                    if (l < 0)
                        s.push(null);
                    else {
                        ngDevMode && Ht(o, l);
                        var u = o[l];
                        s.push(bv(e, u, a[c + 1], n.metadata.read))
                    }
                }
                r.matches = s
            }
            return r.matches
        }
        function Sv(t) {
            var e = an()
              , n = sn()
              , i = Mn();
            En(i + 1);
            var r = Iv(n, i);
            if (t.dirty && Ze(e) === r.metadata.isStatic) {
                if (null === r.matches)
                    t.reset([]);
                else {
                    var o = r.crossesNgTemplate ? function t(e, n, i, r) {
                        var o = e.queries.getByIndex(i)
                          , a = o.matches;
                        if (null !== a)
                            for (var s = wv(e, n, o, i), c = 0; c < a.length; c += 2) {
                                var l = a[c];
                                if (l > 0)
                                    r.push(s[c / 2]);
                                else {
                                    var u = a[c + 1]
                                      , d = n[-l];
                                    ngDevMode && Pe(d);
                                    for (var p = 10; p < d.length; p++) {
                                        (m = d[p])[17] === m[3] && t(m[1], m, u, r)
                                    }
                                    if (null !== d[9])
                                        for (var h = d[9], f = 0; f < h.length; f++) {
                                            var m;
                                            t((m = h[f])[1], m, u, r)
                                        }
                                }
                            }
                        return r
                    }(n, e, i, []) : wv(n, e, r, i);
                    t.reset(o),
                    t.notifyOnChanges()
                }
                return !0
            }
            return !1
        }
        function xv(t, e, n) {
            Ev(sn(), an(), t, e, n, !0)
        }
        function Mv(t, e, n) {
            Ev(sn(), an(), t, e, n, !1)
        }
        function Ev(t, e, n, i, r, o) {
            t.firstCreatePass && (Pv(t, new mv(n,i,o,r), -1),
            o && (t.staticViewQueries = !0)),
            _v(t, e)
        }
        function Cv(t, e, n, i) {
            Tv(sn(), an(), e, n, i, !1, ln(), t)
        }
        function Av(t, e, n, i) {
            Tv(sn(), an(), e, n, i, !0, ln(), t)
        }
        function Tv(t, e, n, i, r, o, a, s) {
            t.firstCreatePass && (Pv(t, new mv(n,i,o,r), a.index),
            function(t, e) {
                var n = t.contentQueries || (t.contentQueries = [])
                  , i = t.contentQueries.length ? n[n.length - 1] : -1;
                e !== i && n.push(t.queries.length - 1, e)
            }(t, s),
            o && (t.staticContentQueries = !0)),
            _v(t, e)
        }
        function Ov() {
            return t = an(),
            e = Mn(),
            ngDevMode && Bt(t[19], "LQueries should be defined when trying to load a query"),
            ngDevMode && Ht(t[19].queries, e),
            t[19].queries[e].queryList;
            var t, e
        }
        function _v(t, e) {
            var n = new pv;
            !function(t, e, n, i) {
                var r = rs(e);
                r.push(n),
                t.firstCreatePass && os(t).push(i, r.length - 1)
            }(t, e, n, n.destroy),
            null === e[19] && (e[19] = new fv),
            e[19].queries.push(new hv(n))
        }
        function Pv(t, e, n) {
            null === t.queries && (t.queries = new gv),
            t.queries.track(new vv(e,n))
        }
        function Iv(t, e) {
            return ngDevMode && Bt(t.queries, "TQueries must be defined to retrieve a TQuery"),
            t.queries.getByIndex(e)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function kv(t, e) {
            return zs(Eh, Qp, t, e)
        }
        function Dv(t) {
            void 0 === t && (t = v.Default);
            var e = Hs(!0);
            if (null != e || t & v.Optional)
                return e;
            throw new Error("No provider for ChangeDetectorRef!")
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Rv = {
            "ɵɵattribute": Il,
            "ɵɵattributeInterpolate1": Bl,
            "ɵɵattributeInterpolate2": zl,
            "ɵɵattributeInterpolate3": Gl,
            "ɵɵattributeInterpolate4": Hl,
            "ɵɵattributeInterpolate5": Wl,
            "ɵɵattributeInterpolate6": ql,
            "ɵɵattributeInterpolate7": Xl,
            "ɵɵattributeInterpolate8": Yl,
            "ɵɵattributeInterpolateV": Kl,
            "ɵɵdefineComponent": oe,
            "ɵɵdefineDirective": he,
            "ɵɵdefineInjectable": O,
            "ɵɵdefineInjector": P,
            "ɵɵdefineNgModule": ue,
            "ɵɵdefinePipe": fe,
            "ɵɵdirectiveInject": eu,
            "ɵɵgetFactoryOf": _i,
            "ɵɵgetInheritedFactory": Pi,
            "ɵɵinject": vt,
            "ɵɵinjectAttribute": nu,
            "ɵɵinvalidFactory": iu,
            "ɵɵinvalidFactoryDep": yt,
            "ɵɵinjectPipeChangeDetectorRef": Dv,
            "ɵɵtemplateRefExtractor": kv,
            "ɵɵNgOnChangesFeature": kp,
            "ɵɵProvidersFeature": zp,
            "ɵɵCopyDefinitionFeature": Pp,
            "ɵɵInheritDefinitionFeature": Mp,
            "ɵɵnextContext": Su,
            "ɵɵnamespaceHTML": Vn,
            "ɵɵnamespaceMathML": jn,
            "ɵɵnamespaceSVG": Nn,
            "ɵɵenableBindings": rn,
            "ɵɵdisableBindings": on,
            "ɵɵelementStart": su,
            "ɵɵelementEnd": cu,
            "ɵɵelement": lu,
            "ɵɵelementContainerStart": uu,
            "ɵɵelementContainerEnd": du,
            "ɵɵelementContainer": pu,
            "ɵɵpureFunction0": Ug,
            "ɵɵpureFunction1": Bg,
            "ɵɵpureFunction2": zg,
            "ɵɵpureFunction3": Gg,
            "ɵɵpureFunction4": Hg,
            "ɵɵpureFunction5": Wg,
            "ɵɵpureFunction6": qg,
            "ɵɵpureFunction7": Xg,
            "ɵɵpureFunction8": Yg,
            "ɵɵpureFunctionV": Kg,
            "ɵɵgetCurrentView": hu,
            "ɵɵrestoreView": cn,
            "ɵɵlistener": gu,
            "ɵɵprojection": Au,
            "ɵɵupdateSyntheticHostBinding": tp,
            "ɵɵcomponentHostSyntheticListener": vu,
            "ɵɵpipeBind1": iv,
            "ɵɵpipeBind2": rv,
            "ɵɵpipeBind3": ov,
            "ɵɵpipeBind4": av,
            "ɵɵpipeBindV": sv,
            "ɵɵprojectionDef": Mu,
            "ɵɵhostProperty": $d,
            "ɵɵproperty": ru,
            "ɵɵpropertyInterpolate": Tu,
            "ɵɵpropertyInterpolate1": Ou,
            "ɵɵpropertyInterpolate2": _u,
            "ɵɵpropertyInterpolate3": Pu,
            "ɵɵpropertyInterpolate4": Iu,
            "ɵɵpropertyInterpolate5": ku,
            "ɵɵpropertyInterpolate6": Du,
            "ɵɵpropertyInterpolate7": Ru,
            "ɵɵpropertyInterpolate8": Lu,
            "ɵɵpropertyInterpolateV": Nu,
            "ɵɵpipe": nv,
            "ɵɵqueryRefresh": Sv,
            "ɵɵviewQuery": Mv,
            "ɵɵstaticViewQuery": xv,
            "ɵɵstaticContentQuery": Av,
            "ɵɵloadQuery": Ov,
            "ɵɵcontentQuery": Cv,
            "ɵɵreference": tu,
            "ɵɵclassMap": nd,
            "ɵɵclassMapInterpolate1": Ad,
            "ɵɵclassMapInterpolate2": Td,
            "ɵɵclassMapInterpolate3": Od,
            "ɵɵclassMapInterpolate4": _d,
            "ɵɵclassMapInterpolate5": Pd,
            "ɵɵclassMapInterpolate6": Id,
            "ɵɵclassMapInterpolate7": kd,
            "ɵɵclassMapInterpolate8": Dd,
            "ɵɵclassMapInterpolateV": Rd,
            "ɵɵstyleMap": td,
            "ɵɵstyleMapInterpolate1": Ld,
            "ɵɵstyleMapInterpolate2": Nd,
            "ɵɵstyleMapInterpolate3": jd,
            "ɵɵstyleMapInterpolate4": Vd,
            "ɵɵstyleMapInterpolate5": Fd,
            "ɵɵstyleMapInterpolate6": Ud,
            "ɵɵstyleMapInterpolate7": Bd,
            "ɵɵstyleMapInterpolate8": zd,
            "ɵɵstyleMapInterpolateV": Gd,
            "ɵɵstyleProp": Qu,
            "ɵɵstylePropInterpolate1": Hd,
            "ɵɵstylePropInterpolate2": Wd,
            "ɵɵstylePropInterpolate3": qd,
            "ɵɵstylePropInterpolate4": Xd,
            "ɵɵstylePropInterpolate5": Yd,
            "ɵɵstylePropInterpolate6": Kd,
            "ɵɵstylePropInterpolate7": Zd,
            "ɵɵstylePropInterpolate8": Jd,
            "ɵɵstylePropInterpolateV": Qd,
            "ɵɵstyleSanitizer": Ju,
            "ɵɵclassProp": $u,
            "ɵɵselect": Mo,
            "ɵɵadvance": xo,
            "ɵɵtemplate": Ql,
            "ɵɵtext": md,
            "ɵɵtextInterpolate": gd,
            "ɵɵtextInterpolate1": vd,
            "ɵɵtextInterpolate2": yd,
            "ɵɵtextInterpolate3": bd,
            "ɵɵtextInterpolate4": wd,
            "ɵɵtextInterpolate5": Sd,
            "ɵɵtextInterpolate6": xd,
            "ɵɵtextInterpolate7": Md,
            "ɵɵtextInterpolate8": Ed,
            "ɵɵtextInterpolateV": Cd,
            "ɵɵi18n": bg,
            "ɵɵi18nAttributes": wg,
            "ɵɵi18nExp": Mg,
            "ɵɵi18nStart": ug,
            "ɵɵi18nEnd": mg,
            "ɵɵi18nApply": Eg,
            "ɵɵi18nPostprocess": fg,
            "ɵɵresolveWindow": ci,
            "ɵɵresolveDocument": li,
            "ɵɵresolveBody": ui,
            "ɵɵsetComponentScope": ae,
            "ɵɵsetNgModuleScope": de,
            "ɵɵsanitizeHtml": kr,
            "ɵɵsanitizeStyle": Dr,
            "ɵɵdefaultStyleSanitizer": Fr,
            "ɵɵsanitizeResourceUrl": Lr,
            "ɵɵsanitizeScript": Nr,
            "ɵɵsanitizeUrl": Rr,
            "ɵɵsanitizeUrlOrResourceUrl": Vr
        }
          , Lv = null;
        function Nv() {
            Lv = null
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var jv = []
          , Vv = [];
        var Fv = !1;
        function Uv() {
            if (!Fv) {
                Fv = !0;
                try {
                    for (var t = Vv.length - 1; t >= 0; t--) {
                        var e = Vv[t]
                          , n = e.moduleType
                          , i = e.ngModule;
                        i.declarations && i.declarations.every(Bv) && (Vv.splice(t, 1),
                        Jv(n, i))
                    }
                } finally {
                    Fv = !1
                }
            }
        }
        function Bv(t) {
            return Array.isArray(t) ? t.every(Bv) : !!G(t)
        }
        function zv(t, e) {
            void 0 === e && (e = {}),
            Gv(t, e),
            function(t, e) {
                Vv.push({
                    moduleType: t,
                    ngModule: e
                })
            }(t, e)
        }
        function Gv(t, e, n) {
            void 0 === n && (n = !1),
            ngDevMode && Bt(t, "Required value moduleType"),
            ngDevMode && Bt(e, "Required value ngModule");
            var i = qt(e.declarations || jv)
              , r = null;
            Object.defineProperty(t, nt, {
                configurable: !0,
                get: function() {
                    if (null === r) {
                        if (ngDevMode && e.imports && e.imports.indexOf(t) > -1)
                            throw new Error("'" + ai(t) + "' module can't import itself");
                        (r = Q().compileNgModule(Rv, "ng:///" + t.name + "/ɵmod.js", {
                            type: t,
                            bootstrap: qt(e.bootstrap || jv).map(G),
                            declarations: i.map(G),
                            imports: qt(e.imports || jv).map(G).map(ty),
                            exports: qt(e.exports || jv).map(G).map(ty),
                            schemas: e.schemas ? qt(e.schemas) : null,
                            id: e.id || null
                        })).schemas || (r.schemas = [])
                    }
                    return r
                }
            });
            var o = null;
            Object.defineProperty(t, L, {
                get: function() {
                    if (null === o) {
                        ngDevMode && Hv(t, n);
                        var i = {
                            name: t.name,
                            type: t,
                            deps: oc(t),
                            providers: e.providers || jv,
                            imports: [(e.imports || jv).map(G), (e.exports || jv).map(G)]
                        };
                        o = Q().compileInjector(Rv, "ng:///" + t.name + "/ɵinj.js", i)
                    }
                    return o
                },
                configurable: !!ngDevMode
            })
        }
        function Hv(t, e, n) {
            if (!Yv.get(t)) {
                var r;
                if (Yv.set(t, !0),
                t = G(t),
                n) {
                    if (!(r = be(t)))
                        throw new Error("Unexpected value '" + t.name + "' imported by the module '" + n.name + "'. Please add an @NgModule annotation.")
                } else
                    r = be(t, !0);
                var o = []
                  , a = di(r.declarations)
                  , s = di(r.imports);
                qt(s).map(Wv).forEach((function(e) {
                    p(e, t),
                    Hv(e, !1, t)
                }
                ));
                var c = di(r.exports);
                a.forEach((function(e) {
                    me(e = G(e)) || ge(e) || ve(e) || o.push("Unexpected value '" + ai(e) + "' declared by the module '" + ai(t) + "'. Please add a @Pipe/@Directive/@Component annotation.")
                }
                )),
                a.forEach((function(t) {
                    var e = ge(t = G(t));
                    !me(t) && e && 0 == e.selectors.length && o.push("Directive " + ai(t) + " has no selector, please add it!")
                }
                ));
                var l = Object(i.h)(a.map(G), qt(s.map(Zv)).map(G));
                c.forEach((function(e) {
                    var n = (me(e = G(e)) ? "component" : ge(e) && "directive") || ve(e) && "pipe";
                    n && -1 === l.lastIndexOf(e) && o.push("Can't export " + n + " " + ai(e) + " from " + ai(t) + " as it was neither declared nor imported!")
                }
                )),
                a.forEach((function(n) {
                    return function(e, n) {
                        e = G(e);
                        var i = Xv.get(e);
                        if (i && i !== t) {
                            if (!n) {
                                var r = [i, t].map(ai).sort();
                                o.push("Type " + ai(e) + " is part of the declarations of 2 modules: " + r[0] + " and " + r[1] + "! Please consider moving " + ai(e) + " to a higher module that imports " + r[0] + " and " + r[1] + ". You can also create a new NgModule that exports and includes " + ai(e) + " then import that NgModule in " + r[0] + " and " + r[1] + ".")
                            }
                        } else
                            Xv.set(e, t)
                    }(n, e)
                }
                )),
                a.forEach((function(t) {
                    if (me(t = G(t))) {
                        var e = qv(t, "Component");
                        e && e.entryComponents && Xt(e.entryComponents, d)
                    }
                }
                ));
                var u = qv(t, "NgModule");
                if (u && (u.imports && qt(u.imports).map(Wv).forEach((function(e) {
                    p(e, t),
                    Hv(e, !1, t)
                }
                )),
                u.bootstrap && Xt(u.bootstrap, (function(t) {
                    me(t = G(t)) || o.push(ai(t) + " cannot be used as an entry component.")
                }
                )),
                u.bootstrap && Xt(u.bootstrap, d),
                u.entryComponents && Xt(u.entryComponents, d)),
                o.length)
                    throw new Error(o.join("\n"))
            }
            function d(t) {
                t = G(t),
                Xv.get(t) || o.push("Component " + ai(t) + " is not part of any NgModule or the module has not been imported into your module.")
            }
            function p(t, e) {
                if (me(t = G(t)) || ge(t))
                    throw new Error("Unexpected directive '" + t.name + "' imported by the module '" + e.name + "'. Please add an @NgModule annotation.");
                if (ve(t))
                    throw new Error("Unexpected pipe '" + t.name + "' imported by the module '" + e.name + "'. Please add an @NgModule annotation.")
            }
        }
        function Wv(t) {
            return (t = G(t)).ngModule || t
        }
        function qv(t, e) {
            var n = null;
            return i(t.__annotations__),
            i(t.decorators),
            n;
            function i(t) {
                t && t.forEach(r)
            }
            function r(t) {
                if (!n)
                    if (Object.getPrototypeOf(t).ngMetadataName == e)
                        n = t;
                    else if (t.type) {
                        Object.getPrototypeOf(t.type).ngMetadataName == e && (n = t.args[0])
                    }
            }
        }
        var Xv = new Map
          , Yv = new Map;
        function Kv() {
            Xv = new Map,
            Yv = new Map,
            Vv.length = 0
        }
        function Zv(t) {
            var e = be(t = G(t), !0);
            return Object(i.h)(qt(di(e.exports).map((function(t) {
                return be(t) ? (Hv(t, !1),
                Zv(t)) : t
            }
            ))))
        }
        function Jv(t, e) {
            var n = qt(e.declarations || jv)
              , i = $v(t);
            n.forEach((function(e) {
                e.hasOwnProperty($) ? Qv(me(e), i) : e.hasOwnProperty(tt) || e.hasOwnProperty(et) || (e.ngSelectorScope = t)
            }
            ))
        }
        function Qv(t, e) {
            t.directiveDefs = function() {
                return Array.from(e.compilation.directives).map((function(t) {
                    return t.hasOwnProperty($) ? me(t) : ge(t)
                }
                )).filter((function(t) {
                    return !!t
                }
                ))
            }
            ,
            t.pipeDefs = function() {
                return Array.from(e.compilation.pipes).map((function(t) {
                    return ve(t)
                }
                ))
            }
            ,
            t.schemas = e.schemas,
            t.tView = null
        }
        function $v(t) {
            if (!ey(t))
                throw new Error(t.name + " does not have a module def (ɵmod property)");
            var e = be(t);
            if (null !== e.transitiveCompileScopes)
                return e.transitiveCompileScopes;
            var n = {
                schemas: e.schemas || null,
                compilation: {
                    directives: new Set,
                    pipes: new Set
                },
                exported: {
                    directives: new Set,
                    pipes: new Set
                }
            };
            return di(e.imports).forEach((function(t) {
                var e = t;
                if (!ey(e))
                    throw new Error("Importing " + e.name + " which does not have a ɵmod property");
                var i = $v(e);
                i.exported.directives.forEach((function(t) {
                    return n.compilation.directives.add(t)
                }
                )),
                i.exported.pipes.forEach((function(t) {
                    return n.compilation.pipes.add(t)
                }
                ))
            }
            )),
            di(e.declarations).forEach((function(t) {
                ve(t) ? n.compilation.pipes.add(t) : n.compilation.directives.add(t)
            }
            )),
            di(e.exports).forEach((function(t) {
                var e = t;
                if (ey(e)) {
                    var i = $v(e);
                    i.exported.directives.forEach((function(t) {
                        n.compilation.directives.add(t),
                        n.exported.directives.add(t)
                    }
                    )),
                    i.exported.pipes.forEach((function(t) {
                        n.compilation.pipes.add(t),
                        n.exported.pipes.add(t)
                    }
                    ))
                } else
                    ve(e) ? n.exported.pipes.add(e) : n.exported.directives.add(e)
            }
            )),
            e.transitiveCompileScopes = n,
            n
        }
        function ty(t) {
            return function(t) {
                return void 0 !== t.ngModule
            }(t) ? t.ngModule : t
        }
        function ey(t) {
            return !!be(t)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function ny(t, e) {
            ("undefined" == typeof ngDevMode || ngDevMode) && at();
            var n = null;
            !function(t, e) {
                fl(e) && (pl.set(t, e),
                hl.add(t))
            }(t, e),
            oy(t, e),
            Object.defineProperty(t, $, {
                get: function() {
                    if (null === n) {
                        var r = Q();
                        if (fl(e)) {
                            var o = ["Component '" + t.name + "' is not resolved:"];
                            throw e.templateUrl && o.push(" - templateUrl: " + e.templateUrl),
                            e.styleUrls && e.styleUrls.length && o.push(" - styleUrls: " + JSON.stringify(e.styleUrls)),
                            o.push("Did you run and wait for 'resolveComponentResources()'?"),
                            new Error(o.join("\n"))
                        }
                        var a = Lv
                          , s = e.preserveWhitespaces;
                        void 0 === s && (s = null !== a && void 0 !== a.preserveWhitespaces && a.preserveWhitespaces);
                        var c = e.encapsulation;
                        void 0 === c && (c = null !== a && void 0 !== a.defaultEncapsulation ? a.defaultEncapsulation : Ot.Emulated);
                        var l = e.templateUrl || "ng:///" + t.name + "/template.html"
                          , u = Object(i.a)(Object(i.a)({}, sy(t, e)), {
                            typeSourceSpan: r.createParseSourceSpan("Component", t.name, l),
                            template: e.template || "",
                            preserveWhitespaces: s,
                            styles: e.styles || ie,
                            animations: e.animations,
                            directives: [],
                            changeDetection: e.changeDetection,
                            pipes: new Map,
                            encapsulation: c,
                            interpolation: e.interpolation,
                            viewProviders: e.viewProviders || null
                        });
                        if (u.usesInheritance && cy(t),
                        n = r.compileComponent(Rv, l, u),
                        Uv(),
                        void 0 !== t.ngSelectorScope) {
                            var d = $v(t.ngSelectorScope);
                            Qv(n, d)
                        }
                    }
                    return n
                },
                configurable: !!ngDevMode
            })
        }
        function iy(t, e) {
            var n = null;
            oy(t, e || {}),
            Object.defineProperty(t, tt, {
                get: function() {
                    if (null === n) {
                        var i = ry(t, e || {});
                        n = Q().compileDirective(Rv, i.sourceMapUrl, i.metadata)
                    }
                    return n
                },
                configurable: !!ngDevMode
            })
        }
        function ry(t, e) {
            var n = t && t.name
              , i = "ng:///" + n + "/ɵdir.js"
              , r = Q()
              , o = sy(t, e);
            return o.typeSourceSpan = r.createParseSourceSpan("Directive", n, i),
            o.usesInheritance && cy(t),
            {
                metadata: o,
                sourceMapUrl: i
            }
        }
        function oy(t, e) {
            var n = null;
            Object.defineProperty(t, rt, {
                get: function() {
                    if (null === n) {
                        var r = ry(t, e)
                          , o = Q();
                        n = o.compileFactory(Rv, "ng:///" + t.name + "/ɵfac.js", Object(i.a)(Object(i.a)({}, r.metadata), {
                            injectFn: "directiveInject",
                            target: o.R3FactoryTarget.Directive
                        }))
                    }
                    return n
                },
                configurable: !!ngDevMode
            })
        }
        function ay(t) {
            return Object.getPrototypeOf(t.prototype) === Object.prototype
        }
        function sy(t, e) {
            var n, i = rc(), r = i.ownPropMetadata(t);
            return {
                name: t.name,
                type: t,
                typeArgumentCount: 0,
                selector: void 0 !== e.selector ? e.selector : null,
                deps: oc(t),
                host: e.host || ne,
                propMetadata: r,
                inputs: e.inputs || ie,
                outputs: e.outputs || ie,
                queries: ly(t, r, uy),
                lifecycle: {
                    usesOnChanges: i.hasLifecycleHook(t, "ngOnChanges")
                },
                typeSourceSpan: null,
                usesInheritance: !ay(t),
                exportAs: (n = e.exportAs,
                void 0 === n ? null : hy(n)),
                providers: e.providers || null,
                viewQueries: ly(t, r, dy)
            }
        }
        function cy(t) {
            for (var e = Object.prototype, n = Object.getPrototypeOf(t.prototype).constructor; n && n !== e; )
                ge(n) || me(n) || !my(n) || iy(n, null),
                n = Object.getPrototypeOf(n)
        }
        function ly(t, e, n) {
            var i = []
              , r = function(r) {
                if (e.hasOwnProperty(r)) {
                    var o = e[r];
                    o.forEach((function(e) {
                        if (n(e)) {
                            if (!e.selector)
                                throw new Error("Can't construct a query for the property \"" + r + '" of "' + ai(t) + "\" since the query selector wasn't defined.");
                            if (o.some(py))
                                throw new Error("Cannot combine @Input decorators with query decorators");
                            i.push(function(t, e) {
                                return {
                                    propertyName: t,
                                    predicate: (n = e.selector,
                                    "string" == typeof n ? hy(n) : G(n)),
                                    descendants: e.descendants,
                                    first: e.first,
                                    read: e.read ? e.read : null,
                                    static: !!e.static
                                };
                                var n
                            }(r, e))
                        }
                    }
                    ))
                }
            };
            for (var o in e)
                r(o);
            return i
        }
        function uy(t) {
            var e = t.ngMetadataName;
            return "ContentChild" === e || "ContentChildren" === e
        }
        function dy(t) {
            var e = t.ngMetadataName;
            return "ViewChild" === e || "ViewChildren" === e
        }
        function py(t) {
            return "Input" === t.ngMetadataName
        }
        function hy(t) {
            return t.split(",").map((function(t) {
                return t.trim()
            }
            ))
        }
        var fy = ["ngOnChanges", "ngOnInit", "ngOnDestroy", "ngDoCheck", "ngAfterViewInit", "ngAfterViewChecked", "ngAfterContentInit", "ngAfterContentChecked"];
        function my(t) {
            var e = rc();
            if (fy.some((function(n) {
                return e.hasLifecycleHook(t, n)
            }
            )))
                return !0;
            var n = e.propMetadata(t);
            for (var i in n)
                for (var r = n[i], o = 0; o < r.length; o++) {
                    var a = r[o]
                      , s = a.ngMetadataName;
                    if (py(a) || uy(a) || dy(a) || "Output" === s || "HostBinding" === s || "HostListener" === s)
                        return !0
                }
            return !1
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function gy(t, e) {
            var n = null
              , r = null;
            Object.defineProperty(t, rt, {
                get: function() {
                    if (null === r) {
                        var n = vy(t, e)
                          , o = Q();
                        r = o.compileFactory(Rv, "ng:///" + n.name + "/ɵfac.js", Object(i.a)(Object(i.a)({}, n), {
                            injectFn: "directiveInject",
                            target: o.R3FactoryTarget.Pipe
                        }))
                    }
                    return r
                },
                configurable: !!ngDevMode
            }),
            Object.defineProperty(t, et, {
                get: function() {
                    if (null === n) {
                        var i = vy(t, e);
                        n = Q().compilePipe(Rv, "ng:///" + i.name + "/ɵpipe.js", i)
                    }
                    return n
                },
                configurable: !!ngDevMode
            })
        }
        function vy(t, e) {
            return {
                type: t,
                typeArgumentCount: 0,
                name: t.name,
                deps: oc(t),
                pipeName: e.name,
                pure: void 0 === e.pure || e.pure
            }
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var yy = h("Directive", (function(t) {
            return void 0 === t && (t = {}),
            t
        }
        ), void 0, void 0, (function(t, e) {
            return _y(t, e)
        }
        ))
          , by = h("Component", (function(t) {
            return void 0 === t && (t = {}),
            Object(i.a)({
                changeDetection: At.Default
            }, t)
        }
        ), yy, void 0, (function(t, e) {
            return Oy(t, e)
        }
        ))
          , wy = h("Pipe", (function(t) {
            return Object(i.a)({
                pure: !0
            }, t)
        }
        ), void 0, void 0, (function(t, e) {
            return Py(t, e)
        }
        ))
          , Sy = g("Input", (function(t) {
            return {
                bindingPropertyName: t
            }
        }
        ))
          , xy = g("Output", (function(t) {
            return {
                bindingPropertyName: t
            }
        }
        ))
          , My = g("HostBinding", (function(t) {
            return {
                hostPropertyName: t
            }
        }
        ))
          , Ey = g("HostListener", (function(t, e) {
            return {
                eventName: t,
                args: e
            }
        }
        ))
          , Cy = ny
          , Ay = iy
          , Ty = gy
          , Oy = Cy
          , _y = Ay
          , Py = Ty
          , Iy = h("NgModule", (function(t) {
            return t
        }
        ), void 0, void 0, (function(t, e) {
            return Dy(t, e)
        }
        ));
        var ky = zv
          , Dy = ky
          , Ry = new ct("Application Initializer")
          , Ly = function() {
            function t(t) {
                var e = this;
                this.appInits = t,
                this.initialized = !1,
                this.done = !1,
                this.donePromise = new Promise((function(t, n) {
                    e.resolve = t,
                    e.reject = n
                }
                ))
            }
            return t.prototype.runInitializers = function() {
                var t = this;
                if (!this.initialized) {
                    var e = []
                      , n = function() {
                        t.done = !0,
                        t.resolve()
                    };
                    if (this.appInits)
                        for (var i = 0; i < this.appInits.length; i++) {
                            var r = this.appInits[i]();
                            fu(r) && e.push(r)
                        }
                    Promise.all(e).then((function() {
                        n()
                    }
                    )).catch((function(e) {
                        t.reject(e)
                    }
                    )),
                    0 === e.length && n(),
                    this.initialized = !0
                }
            }
            ,
            (t = Object(i.b)([Object(i.e)(0, b(Ry)), Object(i.e)(0, w()), Object(i.d)("design:paramtypes", [Array])], t)).ɵfac = function(e) {
                return new (e || t)(vt(Ry, 8))
            }
            ,
            t.ɵprov = O({
                token: t,
                factory: function(e) {
                    return t.ɵfac(e)
                }
            }),
            t
        }()
          , Ny = new ct("AppId");
        function jy() {
            return "" + Fy() + Fy() + Fy()
        }
        var Vy = {
            provide: Ny,
            useFactory: jy,
            deps: []
        };
        function Fy() {
            return String.fromCharCode(97 + Math.floor(25 * Math.random()))
        }
        var Uy, By = new ct("Platform Initializer"), zy = new ct("Platform ID"), Gy = new ct("appBootstrapListener"), Hy = new ct("Application Packages Root URL"), Wy = function() {
            function t() {}
            return t.prototype.log = function(t) {
                console.log(t)
            }
            ,
            t.prototype.warn = function(t) {
                console.warn(t)
            }
            ,
            t.ɵfac = function(e) {
                return new (e || t)
            }
            ,
            t.ɵprov = O({
                token: t,
                factory: function(e) {
                    return t.ɵfac(e)
                }
            }),
            t
        }(), qy = new ct("LocaleId"), Xy = new ct("DefaultCurrencyCode"), Yy = new ct("Translations"), Ky = new ct("TranslationsFormat");
        !function(t) {
            t[t.Error = 0] = "Error",
            t[t.Warning = 1] = "Warning",
            t[t.Ignore = 2] = "Ignore"
        }(Uy || (Uy = {}));
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Zy = !0
          , Jy = Zy
          , Qy = function(t, e) {
            this.ngModuleFactory = t,
            this.componentFactories = e
        };
        var $y = function(t) {
            return new Fg(t)
        }
          , tb = $y
          , eb = function(t) {
            return Promise.resolve($y(t))
        }
          , nb = eb
          , ib = function(t) {
            var e = $y(t)
              , n = di(be(t).declarations).reduce((function(t, e) {
                var n = me(e);
                return n && t.push(new Tm(n)),
                t
            }
            ), []);
            return new Qy(e,n)
        }
          , rb = ib
          , ob = function(t) {
            return Promise.resolve(ib(t))
        }
          , ab = ob
          , sb = function() {
            function t() {
                this.compileModuleSync = tb,
                this.compileModuleAsync = nb,
                this.compileModuleAndAllComponentsSync = rb,
                this.compileModuleAndAllComponentsAsync = ab
            }
            return t.prototype.clearCache = function() {}
            ,
            t.prototype.clearCacheFor = function(t) {}
            ,
            t.prototype.getModuleId = function(t) {}
            ,
            t.ɵfac = function(e) {
                return new (e || t)
            }
            ,
            t.ɵprov = O({
                token: t,
                factory: function(e) {
                    return t.ɵfac(e)
                }
            }),
            t
        }()
          , cb = new ct("compilerOptions")
          , lb = function() {}
          , ub = Promise.resolve(0);
        function db(t) {
            "undefined" == typeof Zone ? ub.then((function() {
                t && t.apply(null, null)
            }
            )) : Zone.current.scheduleMicroTask("scheduleMicrotask", t)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var pb = function() {
            function t(t) {
                var e = t.enableLongStackTrace
                  , n = void 0 !== e && e
                  , i = t.shouldCoalesceEventChangeDetection
                  , r = void 0 !== i && i;
                if (this.hasPendingMacrotasks = !1,
                this.hasPendingMicrotasks = !1,
                this.isStable = !0,
                this.onUnstable = new uv(!1),
                this.onMicrotaskEmpty = new uv(!1),
                this.onStable = new uv(!1),
                this.onError = new uv(!1),
                "undefined" == typeof Zone)
                    throw new Error("In this configuration Angular requires Zone.js");
                Zone.assertZonePatched();
                var o, a;
                this._nesting = 0,
                this._outer = this._inner = Zone.current,
                Zone.wtfZoneSpec && (this._inner = this._inner.fork(Zone.wtfZoneSpec)),
                Zone.TaskTrackingZoneSpec && (this._inner = this._inner.fork(new Zone.TaskTrackingZoneSpec)),
                n && Zone.longStackTraceZoneSpec && (this._inner = this._inner.fork(Zone.longStackTraceZoneSpec)),
                this.shouldCoalesceEventChangeDetection = r,
                this.lastRequestAnimationFrameId = -1,
                this.nativeRequestAnimationFrame = function() {
                    var t = J.requestAnimationFrame
                      , e = J.cancelAnimationFrame;
                    if ("undefined" != typeof Zone && t && e) {
                        var n = t[Zone.__symbol__("OriginalDelegate")];
                        n && (t = n);
                        var i = e[Zone.__symbol__("OriginalDelegate")];
                        i && (e = i)
                    }
                    return {
                        nativeRequestAnimationFrame: t,
                        nativeCancelAnimationFrame: e
                    }
                }().nativeRequestAnimationFrame,
                a = !!(o = this).shouldCoalesceEventChangeDetection && o.nativeRequestAnimationFrame && function() {
                    !function(t) {
                        -1 === t.lastRequestAnimationFrameId && (t.lastRequestAnimationFrameId = t.nativeRequestAnimationFrame.call(J, (function() {
                            t.lastRequestAnimationFrameId = -1,
                            gb(t),
                            mb(t)
                        }
                        )),
                        gb(t))
                    }(o)
                }
                ,
                o._inner = o._inner.fork({
                    name: "angular",
                    properties: {
                        isAngularZone: !0,
                        maybeDelayChangeDetection: a
                    },
                    onInvokeTask: function(t, e, n, i, r, s) {
                        try {
                            return vb(o),
                            t.invokeTask(n, i, r, s)
                        } 
                        finally {
                            a && "eventTask" === i.type && a(),
                            yb(o)
                        }
                    },
                    onInvoke: function(t, e, n, i, r, a, s) {
                        try {
                            return vb(o),
                            t.invoke(n, i, r, a, s)
                        } finally {
                            yb(o)
                        }
                    },
                    onHasTask: function(t, e, n, i) {
                        t.hasTask(n, i),
                        e === n && ("microTask" == i.change ? (o._hasPendingMicrotasks = i.microTask,
                        gb(o),
                        mb(o)) : "macroTask" == i.change && (o.hasPendingMacrotasks = i.macroTask))
                    },
                    onHandleError: function(t, e, n, i) {
                        return t.handleError(n, i),
                        o.runOutsideAngular((function() {
                            return o.onError.emit(i)
                        }
                        )),
                        !1
                    }
                })
            }
            return t.isInAngularZone = function() {
                return !0 === Zone.current.get("isAngularZone")
            }
            ,
            t.assertInAngularZone = function() {
                if (!t.isInAngularZone())
                    throw new Error("Expected to be in Angular Zone, but it is not!")
            }
            ,
            t.assertNotInAngularZone = function() {
                if (t.isInAngularZone())
                    throw new Error("Expected to not be in Angular Zone, but it is!")
            }
            ,
            t.prototype.run = function(t, e, n) {
                return this._inner.run(t, e, n)
            }
            ,
            t.prototype.runTask = function(t, e, n, i) {
                var r = this._inner
                  , o = r.scheduleEventTask("NgZoneEvent: " + i, t, fb, hb, hb);
                try {
                    return r.runTask(o, e, n)
                } finally {
                    r.cancelTask(o)
                }
            }
            ,
            t.prototype.runGuarded = function(t, e, n) {
                return this._inner.runGuarded(t, e, n)
            }
            ,
            t.prototype.runOutsideAngular = function(t) {
                return this._outer.run(t)
            }
            ,
            t
        }();
        function hb() {}
        var fb = {};
        function mb(t) {
            if (0 == t._nesting && !t.hasPendingMicrotasks && !t.isStable)
                try {
                    t._nesting++,
                    t.onMicrotaskEmpty.emit(null)
                } finally {
                    if (t._nesting--,
                    !t.hasPendingMicrotasks)
                        try {
                            t.runOutsideAngular((function() {
                                return t.onStable.emit(null)
                            }
                            ))
                        } finally {
                            t.isStable = !0
                        }
                }
        }
        function gb(t) {
            t._hasPendingMicrotasks || t.shouldCoalesceEventChangeDetection && -1 !== t.lastRequestAnimationFrameId ? t.hasPendingMicrotasks = !0 : t.hasPendingMicrotasks = !1
        }
        function vb(t) {
            t._nesting++,
            t.isStable && (t.isStable = !1,
            t.onUnstable.emit(null))
        }
        function yb(t) {
            t._nesting--,
            mb(t)
        }
        var bb = function() {
            function t() {
                this.hasPendingMicrotasks = !1,
                this.hasPendingMacrotasks = !1,
                this.isStable = !0,
                this.onUnstable = new uv,
                this.onMicrotaskEmpty = new uv,
                this.onStable = new uv,
                this.onError = new uv
            }
            return t.prototype.run = function(t, e, n) {
                return t.apply(e, n)
            }
            ,
            t.prototype.runGuarded = function(t, e, n) {
                return t.apply(e, n)
            }
            ,
            t.prototype.runOutsideAngular = function(t) {
                return t()
            }
            ,
            t.prototype.runTask = function(t, e, n, i) {
                return t.apply(e, n)
            }
            ,
            t
        }()
          , wb = function() {
            function t(t) {
                var e = this;
                this._ngZone = t,
                this._pendingCount = 0,
                this._isZoneStable = !0,
                this._didWork = !1,
                this._callbacks = [],
                this.taskTrackingZone = null,
                this._watchAngularEvents(),
                t.run((function() {
                    e.taskTrackingZone = "undefined" == typeof Zone ? null : Zone.current.get("TaskTrackingZone")
                }
                ))
            }
            return t.prototype._watchAngularEvents = function() {
                var t = this;
                this._ngZone.onUnstable.subscribe({
                    next: function() {
                        t._didWork = !0,
                        t._isZoneStable = !1
                    }
                }),
                this._ngZone.runOutsideAngular((function() {
                    t._ngZone.onStable.subscribe({
                        next: function() {
                            pb.assertNotInAngularZone(),
                            db((function() {
                                t._isZoneStable = !0,
                                t._runCallbacksIfReady()
                            }
                            ))
                        }
                    })
                }
                ))
            }
            ,
            t.prototype.increasePendingRequestCount = function() {
                return this._pendingCount += 1,
                this._didWork = !0,
                this._pendingCount
            }
            ,
            t.prototype.decreasePendingRequestCount = function() {
                if (this._pendingCount -= 1,
                this._pendingCount < 0)
                    throw new Error("pending async requests below zero");
                return this._runCallbacksIfReady(),
                this._pendingCount
            }
            ,
            t.prototype.isStable = function() {
                return this._isZoneStable && 0 === this._pendingCount && !this._ngZone.hasPendingMacrotasks
            }
            ,
            t.prototype._runCallbacksIfReady = function() {
                var t = this;
                if (this.isStable())
                    db((function() {
                        for (; 0 !== t._callbacks.length; ) {
                            var e = t._callbacks.pop();
                            clearTimeout(e.timeoutId),
                            e.doneCb(t._didWork)
                        }
                        t._didWork = !1
                    }
                    ));
                else {
                    var e = this.getPendingTasks();
                    this._callbacks = this._callbacks.filter((function(t) {
                        return !t.updateCb || !t.updateCb(e) || (clearTimeout(t.timeoutId),
                        !1)
                    }
                    )),
                    this._didWork = !0
                }
            }
            ,
            t.prototype.getPendingTasks = function() {
                return this.taskTrackingZone ? this.taskTrackingZone.macroTasks.map((function(t) {
                    return {
                        source: t.source,
                        creationLocation: t.creationLocation,
                        data: t.data
                    }
                }
                )) : []
            }
            ,
            t.prototype.addCallback = function(t, e, n) {
                var i = this
                  , r = -1;
                e && e > 0 && (r = setTimeout((function() {
                    i._callbacks = i._callbacks.filter((function(t) {
                        return t.timeoutId !== r
                    }
                    )),
                    t(i._didWork, i.getPendingTasks())
                }
                ), e)),
                this._callbacks.push({
                    doneCb: t,
                    timeoutId: r,
                    updateCb: n
                })
            }
            ,
            t.prototype.whenStable = function(t, e, n) {
                if (n && !this.taskTrackingZone)
                    throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/dist/task-tracking.js" loaded?');
                this.addCallback(t, e, n),
                this._runCallbacksIfReady()
            }
            ,
            t.prototype.getPendingRequestCount = function() {
                return this._pendingCount
            }
            ,
            t.prototype.findProviders = function(t, e, n) {
                return []
            }
            ,
            (t = Object(i.b)([Object(i.d)("design:paramtypes", [pb])], t)).ɵfac = function(e) {
                return new (e || t)(vt(pb))
            }
            ,
            t.ɵprov = O({
                token: t,
                factory: function(e) {
                    return t.ɵfac(e)
                }
            }),
            t
        }()
          , Sb = function() {
            function t() {
                this._applications = new Map,
                Eb.addToWindow(this)
            }
            return t.prototype.registerApplication = function(t, e) {
                this._applications.set(t, e)
            }
            ,
            t.prototype.unregisterApplication = function(t) {
                this._applications.delete(t)
            }
            ,
            t.prototype.unregisterAllApplications = function() {
                this._applications.clear()
            }
            ,
            t.prototype.getTestability = function(t) {
                return this._applications.get(t) || null
            }
            ,
            t.prototype.getAllTestabilities = function() {
                return Array.from(this._applications.values())
            }
            ,
            t.prototype.getAllRootElements = function() {
                return Array.from(this._applications.keys())
            }
            ,
            t.prototype.findTestabilityInTree = function(t, e) {
                return void 0 === e && (e = !0),
                Eb.findTestabilityInTree(this, t, e)
            }
            ,
            (t = Object(i.b)([Object(i.d)("design:paramtypes", [])], t)).ɵfac = function(e) {
                return new (e || t)
            }
            ,
            t.ɵprov = O({
                token: t,
                factory: function(e) {
                    return t.ɵfac(e)
                }
            }),
            t
        }();
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function xb(t) {
            Eb = t
        }
        var Mb, Eb = new (function() {
            function t() {}
            return t.prototype.addToWindow = function(t) {}
            ,
            t.prototype.findTestabilityInTree = function(t, e, n) {
                return null
            }
            ,
            t
        }()), Cb = Ab;
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Ab(t, e, n) {
            var r;
            ngDevMode && (void 0 === r && (r = "Type passed in is not NgModuleType, it does not have 'ɵmod' property."),
            be(n) || zt(r));
            var o = t.get(cb, []).concat(e);
            ("undefined" == typeof ngJitMode || ngJitMode) && function(t) {
                if (null !== Lv) {
                    if (t.defaultEncapsulation !== Lv.defaultEncapsulation)
                        return void (ngDevMode && console.error("Provided value for `defaultEncapsulation` can not be changed once it has been set."));
                    if (t.preserveWhitespaces !== Lv.preserveWhitespaces)
                        return void (ngDevMode && console.error("Provided value for `preserveWhitespaces` can not be changed once it has been set."))
                }
                Lv = t
            }({
                defaultEncapsulation: Bb(o.map((function(t) {
                    return t.defaultEncapsulation
                }
                ))),
                preserveWhitespaces: Bb(o.map((function(t) {
                    return t.preserveWhitespaces
                }
                )))
            });
            var a = new Fg(n);
            if (0 === pl.size)
                return Promise.resolve(a);
            var s, c, l = (s = o.map((function(t) {
                return t.providers
            }
            )),
            c = [],
            s.forEach((function(t) {
                return t && c.push.apply(c, Object(i.h)(t))
            }
            )),
            c);
            if (0 === l.length)
                return Promise.resolve(a);
            var u = Q()
              , d = Pc.create({
                providers: l
            }).get(u.ResourceLoader);
            return dl((function(t) {
                return Promise.resolve(d.get(t))
            }
            )).then((function() {
                return a
            }
            ))
        }
        var Tb = function() {
            ngDevMode && fp()
        }
          , Ob = _b;
        function _b(t) {
            return t.isBoundToModule
        }
        var Pb = new ct("AllowMultipleToken")
          , Ib = function(t, e) {
            this.name = t,
            this.token = e
        };
        function kb(t) {
            if (Mb && !Mb.destroyed && !Mb.injector.get(Pb, !1))
                throw new Error("There can be only one platform. Destroy the previous one to create a new one.");
            Tb(),
            Mb = t.get(jb);
            var e = t.get(By, null);
            return e && e.forEach((function(t) {
                return t()
            }
            )),
            Mb
        }
        function Db(t, e, n) {
            void 0 === n && (n = []);
            var i = "Platform: " + e
              , r = new ct(i);
            return function(e) {
                void 0 === e && (e = []);
                var o = Nb();
                if (!o || o.injector.get(Pb, !1))
                    if (t)
                        t(n.concat(e).concat({
                            provide: r,
                            useValue: !0
                        }));
                    else {
                        var a = n.concat(e).concat({
                            provide: r,
                            useValue: !0
                        }, {
                            provide: fc,
                            useValue: "platform"
                        });
                        kb(Pc.create({
                            providers: a,
                            name: i
                        }))
                    }
                return Rb(r)
            }
        }
        function Rb(t) {
            var e = Nb();
            if (!e)
                throw new Error("No platform exists!");
            if (!e.injector.get(t, null))
                throw new Error("A platform with a different configuration has been created. Please destroy it first.");
            return e
        }
        function Lb() {
            Mb && !Mb.destroyed && Mb.destroy()
        }
        function Nb() {
            return Mb && !Mb.destroyed ? Mb : null
        }
        var jb = function() {
            function t(t) {
                this._injector = t,
                this._modules = [],
                this._destroyListeners = [],
                this._destroyed = !1
            }
            return t.prototype.bootstrapModuleFactory = function(t, e) {
                var n = this
                  , i = function(t, e) {
                    var n;
                    n = "noop" === t ? new bb : ("zone.js" === t ? void 0 : t) || new pb({
                        enableLongStackTrace: $i(),
                        shouldCoalesceEventChangeDetection: e
                    });
                    return n
                }(e ? e.ngZone : void 0, e && e.ngZoneEventCoalescing || !1)
                  , r = [{
                    provide: pb,
                    useValue: i
                }];
                return i.run((function() {
                    var e = Pc.create({
                        providers: r,
                        parent: n.injector,
                        name: t.moduleType.name
                    })
                      , o = t.create(e)
                      , a = o.injector.get(Ri, null);
                    if (!a)
                        throw new Error("No ErrorHandler. Is platform module (BrowserModule) included?");
                    return o.onDestroy((function() {
                        return Ub(n._modules, o)
                    }
                    )),
                    i.runOutsideAngular((function() {
                        return i.onError.subscribe({
                            next: function(t) {
                                a.handleError(t)
                            }
                        })
                    }
                    )),
                    function(t, e, n) {
                        try {
                            var i = n();
                            return fu(i) ? i.catch((function(n) {
                                throw e.runOutsideAngular((function() {
                                    return t.handleError(n)
                                }
                                )),
                                n
                            }
                            )) : i
                        } catch (n) {
                            throw e.runOutsideAngular((function() {
                                return t.handleError(n)
                            }
                            )),
                            n
                        }
                    }(a, i, (function() {
                        var t = o.injector.get(Ly);
                        return t.runInitializers(),
                        t.donePromise.then((function() {
                            Jy && Ig(o.injector.get(qy, Um) || Um);
                            return n._moduleDoBootstrap(o),
                            o
                        }
                        ))
                    }
                    ))
                }
                ))
            }
            ,
            t.prototype.bootstrapModule = function(t, e) {
                var n = this;
                void 0 === e && (e = []);
                var i = Vb({}, e);
                return Cb(this.injector, i, t).then((function(t) {
                    return n.bootstrapModuleFactory(t, i)
                }
                ))
            }
            ,
            t.prototype._moduleDoBootstrap = function(t) {
                var e = t.injector.get(Fb);
                if (t._bootstrapComponents.length > 0)
                    t._bootstrapComponents.forEach((function(t) {
                        return e.bootstrap(t)
                    }
                    ));
                else {
                    if (!t.instance.ngDoBootstrap)
                        throw new Error("The module " + F(t.instance.constructor) + ' was bootstrapped, but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. Please define one of these.');
                    t.instance.ngDoBootstrap(e)
                }
                this._modules.push(t)
            }
            ,
            t.prototype.onDestroy = function(t) {
                this._destroyListeners.push(t)
            }
            ,
            Object.defineProperty(t.prototype, "injector", {
                get: function() {
                    return this._injector
                },
                enumerable: !0,
                configurable: !0
            }),
            t.prototype.destroy = function() {
                if (this._destroyed)
                    throw new Error("The platform has already been destroyed!");
                this._modules.slice().forEach((function(t) {
                    return t.destroy()
                }
                )),
                this._destroyListeners.forEach((function(t) {
                    return t()
                }
                )),
                this._destroyed = !0
            }
            ,
            Object.defineProperty(t.prototype, "destroyed", {
                get: function() {
                    return this._destroyed
                },
                enumerable: !0,
                configurable: !0
            }),
            (t = Object(i.b)([Object(i.d)("design:paramtypes", [Pc])], t)).ɵfac = function(e) {
                return new (e || t)(vt(Pc))
            }
            ,
            t.ɵprov = O({
                token: t,
                factory: function(e) {
                    return t.ɵfac(e)
                }
            }),
            t
        }();
        function Vb(t, e) {
            return t = Array.isArray(e) ? e.reduce(Vb, t) : Object(i.a)(Object(i.a)({}, t), e)
        }
        var Fb = function() {
            function t(t, e, n, i, r, o) {
                var l = this;
                this._zone = t,
                this._console = e,
                this._injector = n,
                this._exceptionHandler = i,
                this._componentFactoryResolver = r,
                this._initStatus = o,
                this._bootstrapListeners = [],
                this._views = [],
                this._runningTick = !1,
                this._enforceNoNewChanges = !1,
                this._stable = !0,
                this.componentTypes = [],
                this.components = [],
                this._enforceNoNewChanges = $i(),
                this._zone.onMicrotaskEmpty.subscribe({
                    next: function() {
                        l._zone.run((function() {
                            l.tick()
                        }
                        ))
                    }
                });
                var u = new a.a((function(t) {
                    l._stable = l._zone.isStable && !l._zone.hasPendingMacrotasks && !l._zone.hasPendingMicrotasks,
                    l._zone.runOutsideAngular((function() {
                        t.next(l._stable),
                        t.complete()
                    }
                    ))
                }
                ))
                  , d = new a.a((function(t) {
                    var e;
                    l._zone.runOutsideAngular((function() {
                        e = l._zone.onStable.subscribe((function() {
                            pb.assertNotInAngularZone(),
                            db((function() {
                                l._stable || l._zone.hasPendingMacrotasks || l._zone.hasPendingMicrotasks || (l._stable = !0,
                                t.next(!0))
                            }
                            ))
                        }
                        ))
                    }
                    ));
                    var n = l._zone.onUnstable.subscribe((function() {
                        pb.assertInAngularZone(),
                        l._stable && (l._stable = !1,
                        l._zone.runOutsideAngular((function() {
                            t.next(!1)
                        }
                        )))
                    }
                    ));
                    return function() {
                        e.unsubscribe(),
                        n.unsubscribe()
                    }
                }
                ));
                this.isStable = Object(s.a)(u, d.pipe(Object(c.a)()))
            }
            return t.prototype.bootstrap = function(t, e) {
                var n, i = this;
                if (!this._initStatus.done)
                    throw new Error("Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.");
                n = t instanceof Hp ? t : this._componentFactoryResolver.resolveComponentFactory(t),
                this.componentTypes.push(n.componentType);
                var r = Ob(n) ? void 0 : this._injector.get(_t)
                  , o = e || n.selector
                  , a = n.create(Pc.NULL, [], o, r);
                a.onDestroy((function() {
                    i._unloadComponent(a)
                }
                ));
                var s = a.injector.get(wb, null);
                return s && a.injector.get(Sb).registerApplication(a.location.nativeElement, s),
                this._loadComponent(a),
                $i() && this._console.log("Angular is running in the development mode. Call enableProdMode() to enable the production mode."),
                a
            }
            ,
            t.prototype.tick = function() {
                var t, e, n, r, o = this;
                if (this._runningTick)
                    throw new Error("ApplicationRef.tick is called recursively");
                try {
                    this._runningTick = !0;
                    try {
                        for (var a = Object(i.j)(this._views), s = a.next(); !s.done; s = a.next()) {
                            s.value.detectChanges()
                        }
                    } catch (e) {
                        t = {
                            error: e
                        }
                    } finally {
                        try {
                            s && !s.done && (e = a.return) && e.call(a)
                        } finally {
                            if (t)
                                throw t.error
                        }
                    }
                    if (this._enforceNoNewChanges)
                        try {
                            for (var c = Object(i.j)(this._views), l = c.next(); !l.done; l = c.next()) {
                                l.value.checkNoChanges()
                            }
                        } catch (t) {
                            n = {
                                error: t
                            }
                        } finally {
                            try {
                                l && !l.done && (r = c.return) && r.call(c)
                            } finally {
                                if (n)
                                    throw n.error
                            }
                        }
                } catch (t) {
                    this._zone.runOutsideAngular((function() {
                        return o._exceptionHandler.handleError(t)
                    }
                    ))
                } finally {
                    this._runningTick = !1
                }
            }
            ,
            t.prototype.attachView = function(t) {
                var e = t;
                this._views.push(e),
                e.attachToAppRef(this)
            }
            ,
            t.prototype.detachView = function(t) {
                var e = t;
                Ub(this._views, e),
                e.detachFromAppRef()
            }
            ,
            t.prototype._loadComponent = function(t) {
                this.attachView(t.hostView),
                this.tick(),
                this.components.push(t),
                this._injector.get(Gy, []).concat(this._bootstrapListeners).forEach((function(e) {
                    return e(t)
                }
                ))
            }
            ,
            t.prototype._unloadComponent = function(t) {
                this.detachView(t.hostView),
                Ub(this.components, t)
            }
            ,
            t.prototype.ngOnDestroy = function() {
                this._views.slice().forEach((function(t) {
                    return t.destroy()
                }
                ))
            }
            ,
            Object.defineProperty(t.prototype, "viewCount", {
                get: function() {
                    return this._views.length
                },
                enumerable: !0,
                configurable: !0
            }),
            (t = Object(i.b)([Object(i.d)("design:paramtypes", [pb, Wy, Pc, Ri, Yp, Ly])], t)).ɵfac = function(e) {
                return new (e || t)(vt(pb),vt(Wy),vt(Pc),vt(Ri),vt(Yp),vt(Ly))
            }
            ,
            t.ɵprov = O({
                token: t,
                factory: function(e) {
                    return t.ɵfac(e)
                }
            }),
            t
        }();
        function Ub(t, e) {
            var n = t.indexOf(e);
            n > -1 && t.splice(n, 1)
        }
        function Bb(t) {
            for (var e = t.length - 1; e >= 0; e--)
                if (void 0 !== t[e])
                    return t[e]
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var zb = function() {};
        function Gb(t) {
            var e = jg(t);
            if (!e)
                throw qb(t);
            return e
        }
        function Hb(t) {
            var e = jg(t);
            if (!e)
                throw qb(t);
            return new Fg(e)
        }
        var Wb = Hb;
        function qb(t) {
            return new Error("No module with ID " + t + " loaded")
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Xb = function() {}
          , Yb = {
            factoryPathPrefix: "",
            factoryPathSuffix: ".ngfactory"
        }
          , Kb = function() {
            function t(t, e) {
                this._compiler = t,
                this._config = e || Yb
            }
            return t.prototype.load = function(t) {
                return !Jy && this._compiler instanceof sb ? this.loadFactory(t) : this.loadAndCompile(t)
            }
            ,
            t.prototype.loadAndCompile = function(t) {
                var e = this
                  , r = Object(i.f)(t.split("#"), 2)
                  , o = r[0]
                  , a = r[1];
                return void 0 === a && (a = "default"),
                n(519)(o).then((function(t) {
                    return t[a]
                }
                )).then((function(t) {
                    return Zb(t, o, a)
                }
                )).then((function(t) {
                    return e._compiler.compileModuleAsync(t)
                }
                ))
            }
            ,
            t.prototype.loadFactory = function(t) {
                var e = Object(i.f)(t.split("#"), 2)
                  , r = e[0]
                  , o = e[1]
                  , a = "NgFactory";
                return void 0 === o && (o = "default",
                a = ""),
                n(519)(this._config.factoryPathPrefix + r + this._config.factoryPathSuffix).then((function(t) {
                    return t[o + a]
                }
                )).then((function(t) {
                    return Zb(t, r, o)
                }
                ))
            }
            ,
            (t = Object(i.b)([Object(i.e)(1, w()), Object(i.d)("design:paramtypes", [sb, Xb])], t)).ɵfac = function(e) {
                return new (e || t)(vt(sb),vt(Xb, 8))
            }
            ,
            t.ɵprov = O({
                token: t,
                factory: function(e) {
                    return t.ɵfac(e)
                }
            }),
            t
        }();
        function Zb(t, e, n) {
            if (!t)
                throw new Error("Cannot find '" + n + "' in '" + e + "'");
            return t
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Jb = function(t) {
            function e() {
                return null !== t && t.apply(this, arguments) || this
            }
            return Object(i.c)(e, t),
            e
        }(Ws)
          , Qb = function(t) {
            function e() {
                return null !== t && t.apply(this, arguments) || this
            }
            return Object(i.c)(e, t),
            e
        }(Jb)
          , $b = function(t, e) {
            this.name = t,
            this.callback = e
        }
          , tw = function() {
            function t(t, e, n) {
                this.listeners = [],
                this.parent = null,
                this._debugContext = n,
                this.nativeNode = t,
                e && e instanceof ew && e.addChild(this)
            }
            return Object.defineProperty(t.prototype, "injector", {
                get: function() {
                    return this._debugContext.injector
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "componentInstance", {
                get: function() {
                    return this._debugContext.component
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "context", {
                get: function() {
                    return this._debugContext.context
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "references", {
                get: function() {
                    return this._debugContext.references
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "providerTokens", {
                get: function() {
                    return this._debugContext.providerTokens
                },
                enumerable: !0,
                configurable: !0
            }),
            t
        }()
          , ew = function(t) {
            function e(e, n, i) {
                var r = t.call(this, e, n, i) || this;
                return r.properties = {},
                r.attributes = {},
                r.classes = {},
                r.styles = {},
                r.childNodes = [],
                r.nativeElement = e,
                r
            }
            return Object(i.c)(e, t),
            e.prototype.addChild = function(t) {
                t && (this.childNodes.push(t),
                t.parent = this)
            }
            ,
            e.prototype.removeChild = function(t) {
                var e = this.childNodes.indexOf(t);
                -1 !== e && (t.parent = null,
                this.childNodes.splice(e, 1))
            }
            ,
            e.prototype.insertChildrenAfter = function(t, e) {
                var n, r = this, o = this.childNodes.indexOf(t);
                -1 !== o && ((n = this.childNodes).splice.apply(n, Object(i.h)([o + 1, 0], e)),
                e.forEach((function(e) {
                    e.parent && e.parent.removeChild(e),
                    t.parent = r
                }
                )))
            }
            ,
            e.prototype.insertBefore = function(t, e) {
                var n = this.childNodes.indexOf(t);
                -1 === n ? this.addChild(e) : (e.parent && e.parent.removeChild(e),
                e.parent = this,
                this.childNodes.splice(n, 0, e))
            }
            ,
            e.prototype.query = function(t) {
                return this.queryAll(t)[0] || null
            }
            ,
            e.prototype.queryAll = function(t) {
                var e = [];
                return iw(this, t, e),
                e
            }
            ,
            e.prototype.queryAllNodes = function(t) {
                var e = [];
                return rw(this, t, e),
                e
            }
            ,
            Object.defineProperty(e.prototype, "children", {
                get: function() {
                    return this.childNodes.filter((function(t) {
                        return t instanceof e
                    }
                    ))
                },
                enumerable: !0,
                configurable: !0
            }),
            e.prototype.triggerEventHandler = function(t, e) {
                this.listeners.forEach((function(n) {
                    n.name == t && n.callback(e)
                }
                ))
            }
            ,
            e
        }(tw);
        function nw(t) {
            return t.map((function(t) {
                return t.nativeElement
            }
            ))
        }
        function iw(t, e, n) {
            t.childNodes.forEach((function(t) {
                t instanceof ew && (e(t) && n.push(t),
                iw(t, e, n))
            }
            ))
        }
        function rw(t, e, n) {
            t instanceof ew && t.childNodes.forEach((function(t) {
                e(t) && n.push(t),
                t instanceof ew && rw(t, e, n)
            }
            ))
        }
        var ow = function() {
            function t(t) {
                this.nativeNode = t
            }
            return Object.defineProperty(t.prototype, "parent", {
                get: function() {
                    var t = this.nativeNode.parentNode;
                    return t ? new aw(t) : null
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "injector", {
                get: function() {
                    return op(this.nativeNode)
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "componentInstance", {
                get: function() {
                    var t = this.nativeNode;
                    return t && (ep(t) || ip(t))
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "context", {
                get: function() {
                    return ep(this.nativeNode) || np(this.nativeNode)
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "listeners", {
                get: function() {
                    return lp(this.nativeNode).filter((function(t) {
                        return "dom" === t.type
                    }
                    ))
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "references", {
                get: function() {
                    return t = this.nativeNode,
                    null === (e = sp(t, !1)) ? {} : (void 0 === e.localRefs && (e.localRefs = function(t, e) {
                        var n = t[1].data[e];
                        if (n && n.localNames) {
                            for (var i = {}, r = n.index + 1, o = 0; o < n.localNames.length; o += 2)
                                i[n.localNames[o]] = t[r],
                                r++;
                            return i
                        }
                        return null
                    }(e.lView, e.nodeIndex)),
                    e.localRefs || {});
                    var t, e
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "providerTokens", {
                get: function() {
                    return function(t) {
                        var e = sp(t, !1);
                        if (null === e)
                            return [];
                        for (var n, i = e.lView[1], r = i.data[e.nodeIndex], o = [], a = 65535 & r.providerIndexes, s = r.directiveEnd, c = a; c < s; c++) {
                            var l = i.data[c];
                            void 0 !== (n = l).type && void 0 !== n.template && void 0 !== n.declaredInputs && (l = l.type),
                            o.push(l)
                        }
                        return o
                    }(this.nativeNode)
                },
                enumerable: !0,
                configurable: !0
            }),
            t
        }()
          , aw = function(t) {
            function e(e) {
                return ngDevMode && Gt(e),
                t.call(this, e) || this
            }
            return Object(i.c)(e, t),
            Object.defineProperty(e.prototype, "nativeElement", {
                get: function() {
                    return this.nativeNode.nodeType == Node.ELEMENT_NODE ? this.nativeNode : null
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(e.prototype, "name", {
                get: function() {
                    try {
                        var t = sp(this.nativeNode);
                        return t.lView[1].data[t.nodeIndex].tagName
                    } catch (t) {
                        return this.nativeNode.nodeName
                    }
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(e.prototype, "properties", {
                get: function() {
                    var t = sp(this.nativeNode, !1);
                    if (null == t)
                        return {};
                    var e = t.lView
                      , n = e[1].data
                      , i = n[t.nodeIndex]
                      , r = {};
                    return function(t, e) {
                        if (t)
                            for (var n = Object.getPrototypeOf(t), i = Node.prototype; null !== n && n !== i; ) {
                                var r = Object.getOwnPropertyDescriptors(n);
                                for (var o in r)
                                    if (!o.startsWith("__") && !o.startsWith("on")) {
                                        var a = t[o];
                                        sw(a) && (e[o] = a)
                                    }
                                n = Object.getPrototypeOf(n)
                            }
                    }(this.nativeElement, r),
                    function(t, e, n, i) {
                        var r = e.propertyBindings;
                        if (null !== r)
                            for (var o = 0; o < r.length; o++) {
                                var a = r[o]
                                  , s = i[a].split("�")
                                  , c = s[0];
                                if (s.length > 1) {
                                    for (var l = s[1], u = 1; u < s.length - 1; u++)
                                        l += oi(n[a + u - 1]) + s[u + 1];
                                    t[c] = l
                                } else
                                    t[c] = n[a]
                            }
                    }(r, i, e, n),
                    r
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(e.prototype, "attributes", {
                get: function() {
                    var t = {}
                      , e = this.nativeElement;
                    if (!e)
                        return t;
                    var n = sp(e, !1);
                    if (null == n)
                        return {};
                    var i = n.lView[1].data[n.nodeIndex].attrs
                      , r = [];
                    if (i)
                        for (var o = 0; o < i.length; ) {
                            var a = i[o];
                            if ("string" != typeof a)
                                break;
                            var s = i[o + 1];
                            t[a] = s,
                            r.push(a.toLowerCase()),
                            o += 2
                        }
                    var c = e.attributes;
                    for (o = 0; o < c.length; o++) {
                        var l = c[o]
                          , u = l.name.toLowerCase();
                        -1 === r.indexOf(u) && (t[u] = l.value)
                    }
                    return t
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(e.prototype, "styles", {
                get: function() {
                    return this.nativeElement && this.nativeElement.style ? this.nativeElement.style : {}
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(e.prototype, "classes", {
                get: function() {
                    var t = {}
                      , e = this.nativeElement.className;
                    return (e && "string" != typeof e ? e.baseVal.split(" ") : e.split(" ")).forEach((function(e) {
                        return t[e] = !0
                    }
                    )),
                    t
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(e.prototype, "childNodes", {
                get: function() {
                    for (var t = this.nativeNode.childNodes, e = [], n = 0; n < t.length; n++) {
                        var i = t[n];
                        e.push(fw(i))
                    }
                    return e
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(e.prototype, "children", {
                get: function() {
                    var t = this.nativeElement;
                    if (!t)
                        return [];
                    for (var e = t.children, n = [], i = 0; i < e.length; i++) {
                        var r = e[i];
                        n.push(fw(r))
                    }
                    return n
                },
                enumerable: !0,
                configurable: !0
            }),
            e.prototype.query = function(t) {
                return this.queryAll(t)[0] || null
            }
            ,
            e.prototype.queryAll = function(t) {
                var e = [];
                return cw(this, t, e, !0),
                e
            }
            ,
            e.prototype.queryAllNodes = function(t) {
                var e = [];
                return cw(this, t, e, !1),
                e
            }
            ,
            e.prototype.triggerEventHandler = function(t, e) {
                var n = this.nativeNode
                  , i = [];
                this.listeners.forEach((function(r) {
                    if (r.name === t) {
                        var o = r.callback;
                        o.call(n, e),
                        i.push(o)
                    }
                }
                )),
                "function" == typeof n.eventListeners && n.eventListeners(t).forEach((function(t) {
                    if (-1 !== t.toString().indexOf("__ngUnwrap__")) {
                        var r = t("__ngUnwrap__");
                        return -1 === i.indexOf(r) && r.call(n, e)
                    }
                }
                ))
            }
            ,
            e
        }(ow);
        function sw(t) {
            return "string" == typeof t || "boolean" == typeof t || "number" == typeof t || null === t
        }
        function cw(t, e, n, i) {
            var r = sp(t.nativeNode, !1);
            null !== r ? lw(r.lView[1].data[r.nodeIndex], r.lView, e, n, i, t.nativeNode) : pw(t.nativeNode, e, n, i)
        }
        function lw(t, e, n, r, o, a) {
            var s, c, l = He(t, e);
            if (3 === t.type || 4 === t.type) {
                if (dw(l, n, r, o, a),
                Me(t))
                    (p = Xe(t.index, e)) && p[1].firstChild && lw(p[1].firstChild, p, n, r, o, a);
                else
                    t.child && lw(t.child, e, n, r, o, a),
                    l && pw(l, n, r, o);
                var u = e[t.index];
                Se(u) && uw(u, n, r, o, a)
            } else if (0 === t.type) {
                var d = e[t.index];
                dw(d[7], n, r, o, a),
                uw(d, n, r, o, a)
            } else if (1 === t.type) {
                var p, h = (p = e[16])[6].projection[t.projection];
                if (Array.isArray(h))
                    try {
                        for (var f = Object(i.j)(h), m = f.next(); !m.done; m = f.next()) {
                            dw(m.value, n, r, o, a)
                        }
                    } catch (t) {
                        s = {
                            error: t
                        }
                    } finally {
                        try {
                            m && !m.done && (c = f.return) && c.call(f)
                        } finally {
                            if (s)
                                throw s.error
                        }
                    }
                else if (h) {
                    var g, v = p[3];
                    lw(g = v[1].data[h.index], v, n, r, o, a)
                }
            } else
                t.child && lw(t.child, e, n, r, o, a);
            a !== l && ((g = 4 & t.flags ? t.projectionNext : t.next) && lw(g, e, n, r, o, a))
        }
        function uw(t, e, n, i, r) {
            for (var o = 10; o < t.length; o++) {
                var a = t[o];
                lw(a[1].node, a, e, n, i, r)
            }
        }
        function dw(t, e, n, i, r) {
            if (r !== t) {
                var o = mw(t);
                if (!o)
                    return;
                (i && o instanceof aw && e(o) && -1 === n.indexOf(o) || !i && e(o) && -1 === n.indexOf(o)) && n.push(o)
            }
        }
        function pw(t, e, n, i) {
            for (var r = t.childNodes, o = r.length, a = 0; a < o; a++) {
                var s = r[a]
                  , c = mw(s);
                c && ((i && c instanceof aw && e(c) && -1 === n.indexOf(c) || !i && e(c) && -1 === n.indexOf(c)) && n.push(c),
                pw(s, e, n, i))
            }
        }
        var hw = new Map;
        function fw(t) {
            return t instanceof Node ? (t.hasOwnProperty("__ng_debug__") || (t.__ng_debug__ = t.nodeType == Node.ELEMENT_NODE ? new aw(t) : new ow(t)),
            t.__ng_debug__) : null
        }
        var mw = fw;
        function gw(t) {
            return function(t) {
                return hw.get(t) || null
            }(t)
        }
        var vw = function(t) {
            return null
        };
        function yw(t) {
            hw.set(t.nativeNode, t)
        }
        var bw = ow
          , ww = aw
          , Sw = Db(null, "core", [{
            provide: zy,
            useValue: "unknown"
        }, {
            provide: jb,
            deps: [Pc]
        }, {
            provide: Sb,
            deps: []
        }, {
            provide: Wy,
            deps: []
        }]);
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function xw() {
            return xh
        }
        function Mw() {
            return Mh
        }
        function Ew(t) {
            return t = t || ("undefined" != typeof ngI18nClosureMode && ngI18nClosureMode && "undefined" != typeof goog && "en" !== goog.LOCALE ? goog.LOCALE : Jy && "undefined" != typeof $localize && $localize.locale || Um),
            Jy && Ig(t),
            t
        }
        var Cw = Bm
          , Aw = [{
            provide: Fb,
            useClass: Fb,
            deps: [pb, Wy, Pc, Ri, Yp, Ly]
        }, {
            provide: Am,
            deps: [pb],
            useFactory: Tw
        }, {
            provide: Ly,
            useClass: Ly,
            deps: [[new w, Ry]]
        }, {
            provide: sb,
            useClass: sb,
            deps: []
        }, Vy, {
            provide: yh,
            useFactory: xw,
            deps: []
        }, {
            provide: bh,
            useFactory: Mw,
            deps: []
        }, {
            provide: qy,
            useFactory: Ew,
            deps: [[new b(qy), new w, new x]]
        }, {
            provide: Xy,
            useValue: Cw
        }];
        function Tw(t) {
            var e = [];
            return t.onStable.subscribe((function() {
                for (; e.length; )
                    e.pop()()
            }
            )),
            function(t) {
                e.push(t)
            }
        }
        var Ow, _w = function() {
            function t(t) {}
            return (t = Object(i.b)([Object(i.d)("design:paramtypes", [Fb])], t)).ɵmod = ue({
                type: t
            }),
            t.ɵinj = P({
                factory: function(e) {
                    return new (e || t)(vt(Fb))
                },
                providers: Aw
            }),
            t
        }();
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Pw(t, e, n, i, r, o) {
            t |= 1;
            var a = cf(e)
              , s = a.matchedQueries
              , c = a.references;
            return {
                nodeIndex: -1,
                parent: null,
                renderParent: null,
                bindingIndex: -1,
                outputIndex: -1,
                flags: t,
                checkIndex: -1,
                childFlags: 0,
                directChildFlags: 0,
                childMatchedQueries: 0,
                matchedQueries: s,
                matchedQueryIds: a.matchedQueryIds,
                references: c,
                ngContentIndex: n,
                childCount: i,
                bindings: [],
                bindingFlags: 0,
                outputs: [],
                element: {
                    ns: null,
                    name: null,
                    attrs: null,
                    template: o ? pf(o) : null,
                    componentProvider: null,
                    componentView: null,
                    componentRendererType: null,
                    publicProviders: null,
                    allProviders: null,
                    handleEvent: r || zh
                },
                provider: null,
                text: null,
                query: null,
                ngContent: null
            }
        }
        function Iw(t, e, n, r, o, a, s, c, l, u, d, p) {
            var h;
            void 0 === s && (s = []),
            u || (u = zh);
            var f = cf(n)
              , m = f.matchedQueries
              , g = f.references
              , v = f.matchedQueryIds
              , y = null
              , b = null;
            a && (y = (h = Object(i.f)(bf(a), 2))[0],
            b = h[1]),
            c = c || [];
            for (var w = [], S = 0; S < c.length; S++) {
                var x = Object(i.f)(c[S], 3)
                  , M = x[0]
                  , E = x[1]
                  , C = x[2]
                  , A = Object(i.f)(bf(E), 2)
                  , T = A[0]
                  , O = A[1]
                  , _ = void 0
                  , P = void 0;
                switch (15 & M) {
                case 4:
                    P = C;
                    break;
                case 1:
                case 8:
                    _ = C
                }
                w[S] = {
                    flags: M,
                    ns: T,
                    name: O,
                    nonMinifiedName: O,
                    securityContext: _,
                    suffix: P
                }
            }
            l = l || [];
            var I = [];
            for (S = 0; S < l.length; S++) {
                var k = Object(i.f)(l[S], 2)
                  , D = k[0]
                  , R = k[1];
                I[S] = {
                    type: 0,
                    target: D,
                    eventName: R,
                    propName: null
                }
            }
            var L = (s = s || []).map((function(t) {
                var e = Object(i.f)(t, 2)
                  , n = e[0]
                  , r = e[1]
                  , o = Object(i.f)(bf(n), 2);
                return [o[0], o[1], r]
            }
            ));
            return p = function(t) {
                if (t && "$$undefined" === t.id) {
                    var e = null != t.encapsulation && t.encapsulation !== Ot.None || t.styles.length || Object.keys(t.data).length;
                    t.id = e ? "c" + Xh++ : "$$empty"
                }
                return t && "$$empty" === t.id && (t = null),
                t || null
            }(p),
            d && (e |= 33554432),
            {
                nodeIndex: -1,
                parent: null,
                renderParent: null,
                bindingIndex: -1,
                outputIndex: -1,
                checkIndex: t,
                flags: e |= 1,
                childFlags: 0,
                directChildFlags: 0,
                childMatchedQueries: 0,
                matchedQueries: m,
                matchedQueryIds: v,
                references: g,
                ngContentIndex: r,
                childCount: o,
                bindings: w,
                bindingFlags: wf(w),
                outputs: I,
                element: {
                    ns: y,
                    name: b,
                    attrs: L,
                    template: null,
                    componentProvider: null,
                    componentView: d || null,
                    componentRendererType: p,
                    publicProviders: null,
                    allProviders: null,
                    handleEvent: u || zh
                },
                provider: null,
                text: null,
                query: null,
                ngContent: null
            }
        }
        function kw(t, e, n) {
            var r, o = n.element, a = t.root.selectorOrNode, s = t.renderer;
            if (t.parent || !a) {
                r = o.name ? s.createElement(o.name, o.ns) : s.createComment("");
                var c = uf(t, e, n);
                c && s.appendChild(c, r)
            } else {
                var l = !!o.componentRendererType && o.componentRendererType.encapsulation === Ot.ShadowDom;
                r = s.selectRootElement(a, l)
            }
            if (o.attrs)
                for (var u = 0; u < o.attrs.length; u++) {
                    var d = Object(i.f)(o.attrs[u], 3)
                      , p = d[0]
                      , h = d[1]
                      , f = d[2];
                    s.setAttribute(r, h, f, p)
                }
            return r
        }
        function Dw(t, e, n, i) {
            for (var r = 0; r < n.outputs.length; r++) {
                var o = n.outputs[r]
                  , a = Rw(t, n.nodeIndex, rf(o.target, o.eventName))
                  , s = o.target
                  , c = t;
                "component" === o.target && (s = null,
                c = e);
                var l = c.renderer.listen(s || i, o.eventName, a);
                t.disposables[n.outputIndex + r] = l
            }
        }
        function Rw(t, e, n) {
            return function(i) {
                return $h(t, e, n, i)
            }
        }
        function Lw(t, e, n, i) {
            if (!Kh(t, e, n, i))
                return !1;
            var r = e.bindings[n]
              , o = Nh(t, e.nodeIndex)
              , a = o.renderElement
              , s = r.name;
            switch (15 & r.flags) {
            case 1:
                !function(t, e, n, i, r, o) {
                    var a = e.securityContext
                      , s = a ? t.root.sanitizer.sanitize(a, o) : o;
                    s = null != s ? s.toString() : null;
                    var c = t.renderer;
                    null != o ? c.setAttribute(n, r, s, i) : c.removeAttribute(n, r, i)
                }(t, r, a, r.ns, s, i);
                break;
            case 2:
                !function(t, e, n, i) {
                    var r = t.renderer;
                    i ? r.addClass(e, n) : r.removeClass(e, n)
                }(t, a, s, i);
                break;
            case 4:
                !function(t, e, n, i, r) {
                    var o = t.root.sanitizer.sanitize(lr.STYLE, r);
                    if (null != o) {
                        o = o.toString();
                        var a = e.suffix;
                        null != a && (o += a)
                    } else
                        o = null;
                    var s = t.renderer;
                    null != o ? s.setStyle(n, i, o) : s.removeStyle(n, i)
                }(t, r, a, s, i);
                break;
            case 8:
                !function(t, e, n, i, r) {
                    var o = e.securityContext
                      , a = o ? t.root.sanitizer.sanitize(o, r) : r;
                    t.renderer.setProperty(n, i, a)
                }/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
                (33554432 & e.flags && 32 & r.flags ? o.componentView : t, r, a, s, i)
            }
            return !0
        }
        function Nw(t, e, n) {
            var i = [];
            for (var r in n) {
                var o = n[r];
                i.push({
                    propName: r,
                    bindingType: o
                })
            }
            return {
                nodeIndex: -1,
                parent: null,
                renderParent: null,
                bindingIndex: -1,
                outputIndex: -1,
                checkIndex: -1,
                flags: t,
                childFlags: 0,
                directChildFlags: 0,
                childMatchedQueries: 0,
                ngContentIndex: -1,
                matchedQueries: {},
                matchedQueryIds: 0,
                references: {},
                childCount: 0,
                bindings: [],
                bindingFlags: 0,
                outputs: [],
                element: null,
                provider: null,
                text: null,
                query: {
                    id: e,
                    filterId: sf(e),
                    bindings: i
                },
                ngContent: null
            }
        }
        function jw(t) {
            for (var e = t.def.nodeMatchedQueries; t.parent && af(t); ) {
                var n = t.parentNodeDef;
                t = t.parent;
                for (var i = n.nodeIndex + n.childCount, r = 0; r <= i; r++) {
                    67108864 & (o = t.def.nodes[r]).flags && 536870912 & o.flags && (o.query.filterId & e) === o.query.filterId && Fh(t, r).setDirty(),
                    !(1 & o.flags && r + o.childCount < n.nodeIndex) && 67108864 & o.childFlags && 536870912 & o.childFlags || (r += o.childCount)
                }
            }
            if (134217728 & t.def.nodeFlags)
                for (r = 0; r < t.def.nodes.length; r++) {
                    var o;
                    134217728 & (o = t.def.nodes[r]).flags && 536870912 & o.flags && Fh(t, r).setDirty(),
                    r += o.childCount
                }
        }
        function Vw(t, e) {
            var n = Fh(t, e.nodeIndex);
            if (n.dirty) {
                var i, r = void 0;
                if (67108864 & e.flags) {
                    var o = e.parent.parent;
                    r = Fw(t, o.nodeIndex, o.nodeIndex + o.childCount, e.query, []),
                    i = jh(t, e.parent.nodeIndex).instance
                } else
                    134217728 & e.flags && (r = Fw(t, 0, t.def.nodes.length - 1, e.query, []),
                    i = t.component);
                n.reset(r);
                for (var a = e.query.bindings, s = !1, c = 0; c < a.length; c++) {
                    var l = a[c]
                      , u = void 0;
                    switch (l.bindingType) {
                    case 0:
                        u = n.first;
                        break;
                    case 1:
                        u = n,
                        s = !0
                    }
                    i[l.propName] = u
                }
                s && n.notifyOnChanges()
            }
        }
        function Fw(t, e, n, i, r) {
            for (var o = e; o <= n; o++) {
                var a = t.def.nodes[o]
                  , s = a.matchedQueries[i.id];
                if (null != s && r.push(Uw(t, a, s)),
                1 & a.flags && a.element.template && (a.element.template.nodeMatchedQueries & i.filterId) === i.filterId) {
                    var c = Nh(t, o);
                    if ((a.childMatchedQueries & i.filterId) === i.filterId && (Fw(t, o + 1, o + a.childCount, i, r),
                    o += a.childCount),
                    16777216 & a.flags)
                        for (var l = c.viewContainer._embeddedViews, u = 0; u < l.length; u++) {
                            var d = l[u]
                              , p = tf(d);
                            p && p === c && Fw(d, 0, d.def.nodes.length - 1, i, r)
                        }
                    var h = c.template._projectedViews;
                    if (h)
                        for (u = 0; u < h.length; u++) {
                            var f = h[u];
                            Fw(f, 0, f.def.nodes.length - 1, i, r)
                        }
                }
                (a.childMatchedQueries & i.filterId) !== i.filterId && (o += a.childCount)
            }
            return r
        }
        function Uw(t, e, n) {
            if (null != n)
                switch (n) {
                case 1:
                    return Nh(t, e.nodeIndex).renderElement;
                case 0:
                    return new Qp(Nh(t, e.nodeIndex).renderElement);
                case 2:
                    return Nh(t, e.nodeIndex).template;
                case 3:
                    return Nh(t, e.nodeIndex).viewContainer;
                case 4:
                    return jh(t, e.nodeIndex).instance
                }
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Bw(t, e) {
            return {
                nodeIndex: -1,
                parent: null,
                renderParent: null,
                bindingIndex: -1,
                outputIndex: -1,
                checkIndex: -1,
                flags: 8,
                childFlags: 0,
                directChildFlags: 0,
                childMatchedQueries: 0,
                matchedQueries: {},
                matchedQueryIds: 0,
                references: {},
                ngContentIndex: t,
                childCount: 0,
                bindings: [],
                bindingFlags: 0,
                outputs: [],
                element: null,
                provider: null,
                text: null,
                query: null,
                ngContent: {
                    index: e
                }
            }
        }
        function zw(t, e, n) {
            var i = uf(t, e, n);
            i && mf(t, n.ngContent.index, 1, i, null, void 0)
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Gw(t, e) {
            return qw(128, t, Zt(e + 1))
        }
        function Hw(t, e) {
            return qw(32, t, Zt(e))
        }
        function Ww(t, e) {
            for (var n = Object.keys(e), i = n.length, r = [], o = 0; o < i; o++) {
                var a = n[o];
                e[a];
                r.push(a)
            }
            return qw(64, t, r)
        }
        function qw(t, e, n) {
            for (var i = [], r = 0; r < n.length; r++) {
                var o = n[r];
                i.push({
                    flags: 8,
                    name: o,
                    ns: null,
                    nonMinifiedName: o,
                    securityContext: null,
                    suffix: null
                })
            }
            return {
                nodeIndex: -1,
                parent: null,
                renderParent: null,
                bindingIndex: -1,
                outputIndex: -1,
                checkIndex: e,
                flags: t,
                childFlags: 0,
                directChildFlags: 0,
                childMatchedQueries: 0,
                matchedQueries: {},
                matchedQueryIds: 0,
                references: {},
                ngContentIndex: -1,
                childCount: 0,
                bindings: i,
                bindingFlags: wf(i),
                outputs: [],
                element: null,
                provider: null,
                text: null,
                query: null,
                ngContent: null
            }
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Xw(t, e, n) {
            for (var i = [], r = 1; r < n.length; r++)
                i[r - 1] = {
                    flags: 8,
                    name: null,
                    ns: null,
                    nonMinifiedName: null,
                    securityContext: null,
                    suffix: n[r]
                };
            return {
                nodeIndex: -1,
                parent: null,
                renderParent: null,
                bindingIndex: -1,
                outputIndex: -1,
                checkIndex: t,
                flags: 2,
                childFlags: 0,
                directChildFlags: 0,
                childMatchedQueries: 0,
                matchedQueries: {},
                matchedQueryIds: 0,
                references: {},
                ngContentIndex: e,
                childCount: 0,
                bindings: i,
                bindingFlags: 8,
                outputs: [],
                element: null,
                provider: null,
                text: {
                    prefix: n[0]
                },
                query: null,
                ngContent: null
            }
        }
        function Yw(t, e, n) {
            var i, r = t.renderer;
            i = r.createText(n.text.prefix);
            var o = uf(t, e, n);
            return o && r.appendChild(o, i),
            {
                renderText: i
            }
        }
        function Kw(t, e) {
            return (null != t ? t.toString() : "") + e.suffix
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Zw(t, e, n, i) {
            for (var r = 0, o = 0, a = 0, s = 0, c = 0, l = null, u = null, d = !1, p = !1, h = null, f = 0; f < e.length; f++) {
                var m = e[f];
                if (m.nodeIndex = f,
                m.parent = l,
                m.bindingIndex = r,
                m.outputIndex = o,
                m.renderParent = u,
                a |= m.flags,
                c |= m.matchedQueryIds,
                m.element) {
                    var g = m.element;
                    g.publicProviders = l ? l.element.publicProviders : Object.create(null),
                    g.allProviders = g.publicProviders,
                    d = !1,
                    p = !1,
                    m.element.template && (c |= m.element.template.nodeMatchedQueries)
                }
                if (Qw(l, m, e.length),
                r += m.bindings.length,
                o += m.outputs.length,
                !u && 3 & m.flags && (h = m),
                20224 & m.flags) {
                    d || (d = !0,
                    l.element.publicProviders = Object.create(l.element.publicProviders),
                    l.element.allProviders = l.element.publicProviders);
                    var v = 0 != (8192 & m.flags)
                      , y = 0 != (32768 & m.flags);
                    !v || y ? l.element.publicProviders[Hh(m.provider.token)] = m : (p || (p = !0,
                    l.element.allProviders = Object.create(l.element.publicProviders)),
                    l.element.allProviders[Hh(m.provider.token)] = m),
                    y && (l.element.componentProvider = m)
                }
                if (l ? (l.childFlags |= m.flags,
                l.directChildFlags |= m.flags,
                l.childMatchedQueries |= m.matchedQueryIds,
                m.element && m.element.template && (l.childMatchedQueries |= m.element.template.nodeMatchedQueries)) : s |= m.flags,
                m.childCount > 0)
                    l = m,
                    Jw(m) || (u = m);
                else
                    for (; l && f === l.nodeIndex + l.childCount; ) {
                        var b = l.parent;
                        b && (b.childFlags |= l.childFlags,
                        b.childMatchedQueries |= l.childMatchedQueries),
                        u = (l = b) && Jw(l) ? l.renderParent : l
                    }
            }
            return {
                factory: null,
                nodeFlags: a,
                rootNodeFlags: s,
                nodeMatchedQueries: c,
                flags: t,
                nodes: e,
                updateDirectives: n || zh,
                updateRenderer: i || zh,
                handleEvent: function(t, n, i, r) {
                    return e[n].element.handleEvent(t, i, r)
                },
                bindingCount: r,
                outputCount: o,
                lastRenderRootNode: h
            }
        }
        function Jw(t) {
            return 0 != (1 & t.flags) && null === t.element.name
        }
        function Qw(t, e, n) {
            var i = e.element && e.element.template;
            if (i) {
                if (!i.lastRenderRootNode)
                    throw new Error("Illegal State: Embedded templates without nodes are not allowed!");
                if (i.lastRenderRootNode && 16777216 & i.lastRenderRootNode.flags)
                    throw new Error("Illegal State: Last root node of a template can't have embedded views, at index " + e.nodeIndex + "!")
            }
            if (20224 & e.flags && 0 == (1 & (t ? t.flags : 0)))
                throw new Error("Illegal State: StaticProvider/Directive nodes need to be children of elements or anchors, at index " + e.nodeIndex + "!");
            if (e.query) {
                if (67108864 & e.flags && (!t || 0 == (16384 & t.flags)))
                    throw new Error("Illegal State: Content Query nodes need to be children of directives, at index " + e.nodeIndex + "!");
                if (134217728 & e.flags && t)
                    throw new Error("Illegal State: View Query nodes have to be top level nodes, at index " + e.nodeIndex + "!")
            }
            if (e.childCount) {
                var r = t ? t.nodeIndex + t.childCount : n - 1;
                if (e.nodeIndex <= r && e.nodeIndex + e.childCount > r)
                    throw new Error("Illegal State: childCount of node leads outside of parent, at index " + e.nodeIndex + "!")
            }
        }
        function $w(t, e, n, i) {
            var r = nS(t.root, t.renderer, t, e, n);
            return iS(r, t.component, i),
            rS(r),
            r
        }
        function tS(t, e, n) {
            var i = nS(t, t.renderer, null, null, e);
            return iS(i, n, n),
            rS(i),
            i
        }
        function eS(t, e, n, i) {
            var r, o = e.element.componentRendererType;
            return r = o ? t.root.rendererFactory.createRenderer(i, o) : t.root.renderer,
            nS(t.root, r, t, e.element.componentProvider, n)
        }
        function nS(t, e, n, i, r) {
            var o = new Array(r.nodes.length)
              , a = r.outputCount ? new Array(r.outputCount) : null;
            return {
                def: r,
                parent: n,
                viewContainerParent: null,
                parentNodeDef: i,
                context: null,
                component: null,
                nodes: o,
                state: 13,
                root: t,
                renderer: e,
                oldValues: new Array(r.bindingCount),
                disposables: a,
                initIndex: -1
            }
        }
        function iS(t, e, n) {
            t.component = e,
            t.context = n
        }
        function rS(t) {
            var e;
            if (of(t)) {
                var n = t.parentNodeDef;
                e = Nh(t.parent, n.parent.nodeIndex).renderElement
            }
            for (var i = t.def, r = t.nodes, o = 0; o < i.nodes.length; o++) {
                var a = i.nodes[o];
                Bh.setCurrentNode(t, o);
                var s = void 0;
                switch (201347067 & a.flags) {
                case 1:
                    var c = kw(t, e, a)
                      , l = void 0;
                    if (33554432 & a.flags) {
                        var u = pf(a.element.componentView);
                        l = Bh.createComponentView(t, a, u, c)
                    }
                    Dw(t, l, a, c),
                    s = {
                        renderElement: c,
                        componentView: l,
                        viewContainer: null,
                        template: a.element.template ? Xf(t, a) : void 0
                    },
                    16777216 & a.flags && (s.viewContainer = Gf(t, a, s));
                    break;
                case 2:
                    s = Yw(t, e, a);
                    break;
                case 512:
                case 1024:
                case 2048:
                case 256:
                    if (!((s = r[o]) || 4096 & a.flags))
                        s = {
                            instance: dm(t, a)
                        };
                    break;
                case 16:
                    s = {
                        instance: pm(t, a)
                    };
                    break;
                case 16384:
                    if (!(s = r[o]))
                        s = {
                            instance: hm(t, a)
                        };
                    if (32768 & a.flags)
                        iS(Nh(t, a.parent.nodeIndex).componentView, s.instance, s.instance);
                    break;
                case 32:
                case 64:
                case 128:
                    s = {
                        value: void 0
                    };
                    break;
                case 67108864:
                case 134217728:
                    s = new pv;
                    break;
                case 8:
                    zw(t, e, a),
                    s = void 0
                }
                r[o] = s
            }
            pS(t, Ow.CreateViewNodes),
            gS(t, 201326592, 268435456, 0)
        }
        function oS(t) {
            cS(t),
            Bh.updateDirectives(t, 1),
            hS(t, Ow.CheckNoChanges),
            Bh.updateRenderer(t, 1),
            pS(t, Ow.CheckNoChanges),
            t.state &= -97
        }
        function aS(t) {
            1 & t.state ? (t.state &= -2,
            t.state |= 2) : t.state &= -3,
            Dh(t, 0, 256),
            cS(t),
            Bh.updateDirectives(t, 0),
            hS(t, Ow.CheckAndUpdate),
            gS(t, 67108864, 536870912, 0);
            var e = Dh(t, 256, 512);
            Sm(t, 2097152 | (e ? 1048576 : 0)),
            Bh.updateRenderer(t, 0),
            pS(t, Ow.CheckAndUpdate),
            gS(t, 134217728, 536870912, 0),
            Sm(t, 8388608 | ((e = Dh(t, 512, 768)) ? 4194304 : 0)),
            2 & t.def.flags && (t.state &= -9),
            t.state &= -97,
            Dh(t, 768, 1024)
        }
        function sS(t, e, n, r, o, a, s, c, l, u, d, p, h) {
            return 0 === n ? function(t, e, n, i, r, o, a, s, c, l, u, d) {
                switch (201347067 & e.flags) {
                case 1:
                    return function(t, e, n, i, r, o, a, s, c, l, u, d) {
                        var p = e.bindings.length
                          , h = !1;
                        return p > 0 && Lw(t, e, 0, n) && (h = !0),
                        p > 1 && Lw(t, e, 1, i) && (h = !0),
                        p > 2 && Lw(t, e, 2, r) && (h = !0),
                        p > 3 && Lw(t, e, 3, o) && (h = !0),
                        p > 4 && Lw(t, e, 4, a) && (h = !0),
                        p > 5 && Lw(t, e, 5, s) && (h = !0),
                        p > 6 && Lw(t, e, 6, c) && (h = !0),
                        p > 7 && Lw(t, e, 7, l) && (h = !0),
                        p > 8 && Lw(t, e, 8, u) && (h = !0),
                        p > 9 && Lw(t, e, 9, d) && (h = !0),
                        h
                    }(t, e, n, i, r, o, a, s, c, l, u, d);
                case 2:
                    return function(t, e, n, i, r, o, a, s, c, l, u, d) {
                        var p = !1
                          , h = e.bindings
                          , f = h.length;
                        if (f > 0 && Kh(t, e, 0, n) && (p = !0),
                        f > 1 && Kh(t, e, 1, i) && (p = !0),
                        f > 2 && Kh(t, e, 2, r) && (p = !0),
                        f > 3 && Kh(t, e, 3, o) && (p = !0),
                        f > 4 && Kh(t, e, 4, a) && (p = !0),
                        f > 5 && Kh(t, e, 5, s) && (p = !0),
                        f > 6 && Kh(t, e, 6, c) && (p = !0),
                        f > 7 && Kh(t, e, 7, l) && (p = !0),
                        f > 8 && Kh(t, e, 8, u) && (p = !0),
                        f > 9 && Kh(t, e, 9, d) && (p = !0),
                        p) {
                            var m = e.text.prefix;
                            f > 0 && (m += Kw(n, h[0])),
                            f > 1 && (m += Kw(i, h[1])),
                            f > 2 && (m += Kw(r, h[2])),
                            f > 3 && (m += Kw(o, h[3])),
                            f > 4 && (m += Kw(a, h[4])),
                            f > 5 && (m += Kw(s, h[5])),
                            f > 6 && (m += Kw(c, h[6])),
                            f > 7 && (m += Kw(l, h[7])),
                            f > 8 && (m += Kw(u, h[8])),
                            f > 9 && (m += Kw(d, h[9]));
                            var g = Lh(t, e.nodeIndex).renderText;
                            t.renderer.setValue(g, m)
                        }
                        return p
                    }(t, e, n, i, r, o, a, s, c, l, u, d);
                case 16384:
                    return function(t, e, n, i, r, o, a, s, c, l, u, d) {
                        var p = jh(t, e.nodeIndex)
                          , h = p.instance
                          , f = !1
                          , m = void 0
                          , g = e.bindings.length;
                        return g > 0 && Yh(t, e, 0, n) && (f = !0,
                        m = wm(t, p, e, 0, n, m)),
                        g > 1 && Yh(t, e, 1, i) && (f = !0,
                        m = wm(t, p, e, 1, i, m)),
                        g > 2 && Yh(t, e, 2, r) && (f = !0,
                        m = wm(t, p, e, 2, r, m)),
                        g > 3 && Yh(t, e, 3, o) && (f = !0,
                        m = wm(t, p, e, 3, o, m)),
                        g > 4 && Yh(t, e, 4, a) && (f = !0,
                        m = wm(t, p, e, 4, a, m)),
                        g > 5 && Yh(t, e, 5, s) && (f = !0,
                        m = wm(t, p, e, 5, s, m)),
                        g > 6 && Yh(t, e, 6, c) && (f = !0,
                        m = wm(t, p, e, 6, c, m)),
                        g > 7 && Yh(t, e, 7, l) && (f = !0,
                        m = wm(t, p, e, 7, l, m)),
                        g > 8 && Yh(t, e, 8, u) && (f = !0,
                        m = wm(t, p, e, 8, u, m)),
                        g > 9 && Yh(t, e, 9, d) && (f = !0,
                        m = wm(t, p, e, 9, d, m)),
                        m && h.ngOnChanges(m),
                        65536 & e.flags && Rh(t, 256, e.nodeIndex) && h.ngOnInit(),
                        262144 & e.flags && h.ngDoCheck(),
                        f
                    }(t, e, n, i, r, o, a, s, c, l, u, d);
                case 32:
                case 64:
                case 128:
                    return function(t, e, n, i, r, o, a, s, c, l, u, d) {
                        var p = e.bindings
                          , h = !1
                          , f = p.length;
                        if (f > 0 && Kh(t, e, 0, n) && (h = !0),
                        f > 1 && Kh(t, e, 1, i) && (h = !0),
                        f > 2 && Kh(t, e, 2, r) && (h = !0),
                        f > 3 && Kh(t, e, 3, o) && (h = !0),
                        f > 4 && Kh(t, e, 4, a) && (h = !0),
                        f > 5 && Kh(t, e, 5, s) && (h = !0),
                        f > 6 && Kh(t, e, 6, c) && (h = !0),
                        f > 7 && Kh(t, e, 7, l) && (h = !0),
                        f > 8 && Kh(t, e, 8, u) && (h = !0),
                        f > 9 && Kh(t, e, 9, d) && (h = !0),
                        h) {
                            var m = Vh(t, e.nodeIndex)
                              , g = void 0;
                            switch (201347067 & e.flags) {
                            case 32:
                                g = [],
                                f > 0 && g.push(n),
                                f > 1 && g.push(i),
                                f > 2 && g.push(r),
                                f > 3 && g.push(o),
                                f > 4 && g.push(a),
                                f > 5 && g.push(s),
                                f > 6 && g.push(c),
                                f > 7 && g.push(l),
                                f > 8 && g.push(u),
                                f > 9 && g.push(d);
                                break;
                            case 64:
                                g = {},
                                f > 0 && (g[p[0].name] = n),
                                f > 1 && (g[p[1].name] = i),
                                f > 2 && (g[p[2].name] = r),
                                f > 3 && (g[p[3].name] = o),
                                f > 4 && (g[p[4].name] = a),
                                f > 5 && (g[p[5].name] = s),
                                f > 6 && (g[p[6].name] = c),
                                f > 7 && (g[p[7].name] = l),
                                f > 8 && (g[p[8].name] = u),
                                f > 9 && (g[p[9].name] = d);
                                break;
                            case 128:
                                var v = n;
                                switch (f) {
                                case 1:
                                    g = v.transform(n);
                                    break;
                                case 2:
                                    g = v.transform(i);
                                    break;
                                case 3:
                                    g = v.transform(i, r);
                                    break;
                                case 4:
                                    g = v.transform(i, r, o);
                                    break;
                                case 5:
                                    g = v.transform(i, r, o, a);
                                    break;
                                case 6:
                                    g = v.transform(i, r, o, a, s);
                                    break;
                                case 7:
                                    g = v.transform(i, r, o, a, s, c);
                                    break;
                                case 8:
                                    g = v.transform(i, r, o, a, s, c, l);
                                    break;
                                case 9:
                                    g = v.transform(i, r, o, a, s, c, l, u);
                                    break;
                                case 10:
                                    g = v.transform(i, r, o, a, s, c, l, u, d)
                                }
                            }
                            m.value = g
                        }
                        return h
                    }(t, e, n, i, r, o, a, s, c, l, u, d);
                default:
                    throw "unreachable"
                }
            }(t, e, r, o, a, s, c, l, u, d, p, h) : function(t, e, n) {
                switch (201347067 & e.flags) {
                case 1:
                    return function(t, e, n) {
                        for (var i = !1, r = 0; r < n.length; r++)
                            Lw(t, e, r, n[r]) && (i = !0);
                        return i
                    }(t, e, n);
                case 2:
                    return function(t, e, n) {
                        for (var i = e.bindings, r = !1, o = 0; o < n.length; o++)
                            Kh(t, e, o, n[o]) && (r = !0);
                        if (r) {
                            var a = "";
                            for (o = 0; o < n.length; o++)
                                a += Kw(n[o], i[o]);
                            a = e.text.prefix + a;
                            var s = Lh(t, e.nodeIndex).renderText;
                            t.renderer.setValue(s, a)
                        }
                        return r
                    }(t, e, n);
                case 16384:
                    return function(t, e, n) {
                        for (var i = jh(t, e.nodeIndex), r = i.instance, o = !1, a = void 0, s = 0; s < n.length; s++)
                            Yh(t, e, s, n[s]) && (o = !0,
                            a = wm(t, i, e, s, n[s], a));
                        return a && r.ngOnChanges(a),
                        65536 & e.flags && Rh(t, 256, e.nodeIndex) && r.ngOnInit(),
                        262144 & e.flags && r.ngDoCheck(),
                        o
                    }(t, e, n);
                case 32:
                case 64:
                case 128:
                    return function(t, e, n) {
                        for (var r = e.bindings, o = !1, a = 0; a < n.length; a++)
                            Kh(t, e, a, n[a]) && (o = !0);
                        if (o) {
                            var s = Vh(t, e.nodeIndex)
                              , c = void 0;
                            switch (201347067 & e.flags) {
                            case 32:
                                c = n;
                                break;
                            case 64:
                                c = {};
                                for (a = 0; a < n.length; a++)
                                    c[r[a].name] = n[a];
                                break;
                            case 128:
                                var l = n[0]
                                  , u = n.slice(1);
                                c = l.transform.apply(l, Object(i.h)(u))
                            }
                            s.value = c
                        }
                        return o
                    }(t, e, n);
                default:
                    throw "unreachable"
                }
            }(t, e, r)
        }
        function cS(t) {
            var e = t.def;
            if (4 & e.nodeFlags)
                for (var n = 0; n < e.nodes.length; n++) {
                    var i = e.nodes[n];
                    if (4 & i.flags) {
                        var r = Nh(t, n).template._projectedViews;
                        if (r)
                            for (var o = 0; o < r.length; o++) {
                                var a = r[o];
                                a.state |= 32,
                                Qh(a, t)
                            }
                    } else
                        0 == (4 & i.childFlags) && (n += i.childCount)
                }
        }
        function lS(t, e, n, i, r, o, a, s, c, l, u, d, p) {
            return 0 === n ? function(t, e, n, i, r, o, a, s, c, l, u, d) {
                var p = e.bindings.length;
                p > 0 && Zh(t, e, 0, n);
                p > 1 && Zh(t, e, 1, i);
                p > 2 && Zh(t, e, 2, r);
                p > 3 && Zh(t, e, 3, o);
                p > 4 && Zh(t, e, 4, a);
                p > 5 && Zh(t, e, 5, s);
                p > 6 && Zh(t, e, 6, c);
                p > 7 && Zh(t, e, 7, l);
                p > 8 && Zh(t, e, 8, u);
                p > 9 && Zh(t, e, 9, d)
            }(t, e, i, r, o, a, s, c, l, u, d, p) : function(t, e, n) {
                for (var i = 0; i < n.length; i++)
                    Zh(t, e, i, n[i])
            }(t, e, i),
            !1
        }
        function uS(t, e) {
            if (Fh(t, e.nodeIndex).dirty)
                throw Ph(Bh.createDebugContext(t, e.nodeIndex), "Query " + e.query.id + " not dirty", "Query " + e.query.id + " dirty", 0 != (1 & t.state))
        }
        function dS(t) {
            if (!(128 & t.state)) {
                if (hS(t, Ow.Destroy),
                pS(t, Ow.Destroy),
                Sm(t, 131072),
                t.disposables)
                    for (var e = 0; e < t.disposables.length; e++)
                        t.disposables[e]();
                !function(t) {
                    if (16 & t.state) {
                        var e = tf(t);
                        if (e) {
                            var n = e.template._projectedViews;
                            n && (Kt(n, n.indexOf(t)),
                            Bh.dirtyParentQueries(t))
                        }
                    }
                }(t),
                t.renderer.destroyNode && function(t) {
                    for (var e = t.def.nodes.length, n = 0; n < e; n++) {
                        var i = t.def.nodes[n];
                        1 & i.flags ? t.renderer.destroyNode(Nh(t, n).renderElement) : 2 & i.flags ? t.renderer.destroyNode(Lh(t, n).renderText) : (67108864 & i.flags || 134217728 & i.flags) && Fh(t, n).destroy()
                    }
                }(t),
                of(t) && t.renderer.destroy(),
                t.state |= 128
            }
        }
        function pS(t, e) {
            var n = t.def;
            if (33554432 & n.nodeFlags)
                for (var i = 0; i < n.nodes.length; i++) {
                    var r = n.nodes[i];
                    33554432 & r.flags ? fS(Nh(t, i).componentView, e) : 0 == (33554432 & r.childFlags) && (i += r.childCount)
                }
        }
        function hS(t, e) {
            var n = t.def;
            if (16777216 & n.nodeFlags)
                for (var i = 0; i < n.nodes.length; i++) {
                    var r = n.nodes[i];
                    if (16777216 & r.flags)
                        for (var o = Nh(t, i).viewContainer._embeddedViews, a = 0; a < o.length; a++)
                            fS(o[a], e);
                    else
                        0 == (16777216 & r.childFlags) && (i += r.childCount)
                }
        }
        function fS(t, e) {
            var n = t.state;
            switch (e) {
            case Ow.CheckNoChanges:
                0 == (128 & n) && (12 == (12 & n) ? oS(t) : 64 & n && mS(t, Ow.CheckNoChangesProjectedViews));
                break;
            case Ow.CheckNoChangesProjectedViews:
                0 == (128 & n) && (32 & n ? oS(t) : 64 & n && mS(t, e));
                break;
            case Ow.CheckAndUpdate:
                0 == (128 & n) && (12 == (12 & n) ? aS(t) : 64 & n && mS(t, Ow.CheckAndUpdateProjectedViews));
                break;
            case Ow.CheckAndUpdateProjectedViews:
                0 == (128 & n) && (32 & n ? aS(t) : 64 & n && mS(t, e));
                break;
            case Ow.Destroy:
                dS(t);
                break;
            case Ow.CreateViewNodes:
                rS(t)
            }
        }
        function mS(t, e) {
            hS(t, e),
            pS(t, e)
        }
        function gS(t, e, n, i) {
            if (t.def.nodeFlags & e && t.def.nodeFlags & n)
                for (var r = t.def.nodes.length, o = 0; o < r; o++) {
                    var a = t.def.nodes[o];
                    if (a.flags & e && a.flags & n)
                        switch (Bh.setCurrentNode(t, a.nodeIndex),
                        i) {
                        case 0:
                            Vw(t, a);
                            break;
                        case 1:
                            uS(t, a)
                        }
                    a.childFlags & e && a.childFlags & n || (o += a.childCount)
                }
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        !function(t) {
            t[t.CreateViewNodes = 0] = "CreateViewNodes",
            t[t.CheckNoChanges = 1] = "CheckNoChanges",
            t[t.CheckNoChangesProjectedViews = 2] = "CheckNoChangesProjectedViews",
            t[t.CheckAndUpdate = 3] = "CheckAndUpdate",
            t[t.CheckAndUpdateProjectedViews = 4] = "CheckAndUpdateProjectedViews",
            t[t.Destroy = 5] = "Destroy"
        }(Ow || (Ow = {}));
        var vS = !1;
        function yS() {
            if (!vS) {
                vS = !0;
                var t = $i() ? {
                    setCurrentNode: BS,
                    createRootView: wS,
                    createEmbeddedView: xS,
                    createComponentView: MS,
                    createNgModuleRef: ES,
                    overrideProvider: kS,
                    overrideComponentView: DS,
                    clearOverrides: RS,
                    checkAndUpdateView: VS,
                    checkNoChangesView: FS,
                    destroyView: US,
                    createDebugContext: function(t, e) {
                        return new KS(t,e)
                    },
                    handleEvent: zS,
                    updateDirectives: GS,
                    updateRenderer: HS
                } : {
                    setCurrentNode: function() {},
                    createRootView: bS,
                    createEmbeddedView: $w,
                    createComponentView: eS,
                    createNgModuleRef: Qf,
                    overrideProvider: zh,
                    overrideComponentView: zh,
                    clearOverrides: zh,
                    checkAndUpdateView: aS,
                    checkNoChangesView: oS,
                    destroyView: dS,
                    createDebugContext: function(t, e) {
                        return new KS(t,e)
                    },
                    handleEvent: function(t, e, n, i) {
                        return t.def.handleEvent(t, e, n, i)
                    },
                    updateDirectives: function(t, e) {
                        return t.def.updateDirectives(0 === e ? NS : jS, t)
                    },
                    updateRenderer: function(t, e) {
                        return t.def.updateRenderer(0 === e ? NS : jS, t)
                    }
                };
                Bh.setCurrentNode = t.setCurrentNode,
                Bh.createRootView = t.createRootView,
                Bh.createEmbeddedView = t.createEmbeddedView,
                Bh.createComponentView = t.createComponentView,
                Bh.createNgModuleRef = t.createNgModuleRef,
                Bh.overrideProvider = t.overrideProvider,
                Bh.overrideComponentView = t.overrideComponentView,
                Bh.clearOverrides = t.clearOverrides,
                Bh.checkAndUpdateView = t.checkAndUpdateView,
                Bh.checkNoChangesView = t.checkNoChangesView,
                Bh.destroyView = t.destroyView,
                Bh.resolveDep = ym,
                Bh.createDebugContext = t.createDebugContext,
                Bh.handleEvent = t.handleEvent,
                Bh.updateDirectives = t.updateDirectives,
                Bh.updateRenderer = t.updateRenderer,
                Bh.dirtyParentQueries = jw
            }
        }
        function bS(t, e, n, i, r, o) {
            var a = r.injector.get(eh);
            return tS(SS(t, r, a, e, n), i, o)
        }
        function wS(t, e, n, i, r, o) {
            var a = r.injector.get(eh)
              , s = SS(t, r, new tx(a), e, n)
              , c = LS(i);
            return QS(CS.create, tS, null, [s, c, o])
        }
        function SS(t, e, n, i, r) {
            var o = e.injector.get(oh)
              , a = e.injector.get(Ri)
              , s = n.createRenderer(null, null);
            return {
                ngModule: e,
                injector: t,
                projectableNodes: i,
                selectorOrNode: r,
                sanitizer: o,
                rendererFactory: n,
                renderer: s,
                errorHandler: a
            }
        }
        function xS(t, e, n, i) {
            var r = LS(n);
            return QS(CS.create, $w, null, [t, e, r, i])
        }
        function MS(t, e, n, i) {
            var r = IS.get(e.element.componentProvider.provider.token);
            return n = r || LS(n),
            QS(CS.create, eS, null, [t, e, n, i])
        }
        function ES(t, e, n, i) {
            return Qf(t, e, n, function(t) {
                var e = function(t) {
                    var e = !1
                      , n = !1;
                    if (0 === _S.size)
                        return {
                            hasOverrides: e,
                            hasDeprecatedOverrides: n
                        };
                    return t.providers.forEach((function(t) {
                        var i = _S.get(t.token);
                        3840 & t.flags && i && (e = !0,
                        n = n || i.deprecatedBehavior)
                    }
                    )),
                    t.modules.forEach((function(t) {
                        PS.forEach((function(i, r) {
                            I(r).providedIn === t && (e = !0,
                            n = n || i.deprecatedBehavior)
                        }
                        ))
                    }
                    )),
                    {
                        hasOverrides: e,
                        hasDeprecatedOverrides: n
                    }
                }(t)
                  , n = e.hasOverrides
                  , i = e.hasDeprecatedOverrides;
                if (!n)
                    return t;
                return function(t) {
                    for (var e = 0; e < t.providers.length; e++) {
                        var n = t.providers[e];
                        i && (n.flags |= 4096);
                        var r = _S.get(n.token);
                        r && (n.flags = -3841 & n.flags | r.flags,
                        n.deps = lf(r.deps),
                        n.value = r.value)
                    }
                    if (PS.size > 0) {
                        var o = new Set(t.modules);
                        PS.forEach((function(e, n) {
                            if (o.has(I(n).providedIn)) {
                                var r = {
                                    token: n,
                                    flags: e.flags | (i ? 4096 : 0),
                                    deps: lf(e.deps),
                                    value: e.value,
                                    index: t.providers.length
                                };
                                t.providers.push(r),
                                t.providersByKey[Hh(n)] = r
                            }
                        }
                        ))
                    }
                }(t = t.factory((function() {
                    return zh
                }
                ))),
                t
            }(i))
        }
        var CS, AS, TS, OS, _S = new Map, PS = new Map, IS = new Map;
        function kS(t) {
            var e;
            _S.set(t.token, t),
            "function" == typeof t.token && (e = I(t.token)) && "function" == typeof e.providedIn && PS.set(t.token, t)
        }
        function DS(t, e) {
            var n = pf(Uf(e))
              , i = pf(n.nodes[0].element.componentView);
            IS.set(t, i)
        }
        function RS() {
            _S.clear(),
            PS.clear(),
            IS.clear()
        }
        function LS(t) {
            if (0 === _S.size)
                return t;
            var e = function(t) {
                for (var e = [], n = null, i = 0; i < t.nodes.length; i++) {
                    var r = t.nodes[i];
                    1 & r.flags && (n = r),
                    n && 3840 & r.flags && _S.has(r.provider.token) && (e.push(n.nodeIndex),
                    n = null)
                }
                return e
            }(t);
            if (0 === e.length)
                return t;
            t = t.factory((function() {
                return zh
            }
            ));
            for (var n = 0; n < e.length; n++)
                i(t, e[n]);
            return t;
            function i(t, e) {
                for (var n = e + 1; n < t.nodes.length; n++) {
                    var i = t.nodes[n];
                    if (1 & i.flags)
                        return;
                    if (3840 & i.flags) {
                        var r = i.provider
                          , o = _S.get(r.token);
                        o && (i.flags = -3841 & i.flags | o.flags,
                        r.deps = lf(o.deps),
                        r.value = o.value)
                    }
                }
            }
        }
        function NS(t, e, n, i, r, o, a, s, c, l, u, d, p) {
            var h = t.def.nodes[e];
            return sS(t, h, n, i, r, o, a, s, c, l, u, d, p),
            224 & h.flags ? Vh(t, e).value : void 0
        }
        function jS(t, e, n, i, r, o, a, s, c, l, u, d, p) {
            var h = t.def.nodes[e];
            return lS(t, h, n, i, r, o, a, s, c, l, u, d, p),
            224 & h.flags ? Vh(t, e).value : void 0
        }
        function VS(t) {
            return QS(CS.detectChanges, aS, null, [t])
        }
        function FS(t) {
            return QS(CS.checkNoChanges, oS, null, [t])
        }
        function US(t) {
            return QS(CS.destroy, dS, null, [t])
        }
        function BS(t, e) {
            TS = t,
            OS = e
        }
        function zS(t, e, n, i) {
            return BS(t, e),
            QS(CS.handleEvent, t.def.handleEvent, null, [t, e, n, i])
        }
        function GS(t, e) {
            if (128 & t.state)
                throw kh(CS[AS]);
            return BS(t, XS(t, 0)),
            t.def.updateDirectives((function(t, n, i) {
                for (var r = [], o = 3; o < arguments.length; o++)
                    r[o - 3] = arguments[o];
                var a = t.def.nodes[n];
                0 === e ? WS(t, a, i, r) : qS(t, a, i, r);
                16384 & a.flags && BS(t, XS(t, n));
                return 224 & a.flags ? Vh(t, a.nodeIndex).value : void 0
            }
            ), t)
        }
        function HS(t, e) {
            if (128 & t.state)
                throw kh(CS[AS]);
            return BS(t, YS(t, 0)),
            t.def.updateRenderer((function(t, n, i) {
                for (var r = [], o = 3; o < arguments.length; o++)
                    r[o - 3] = arguments[o];
                var a = t.def.nodes[n];
                0 === e ? WS(t, a, i, r) : qS(t, a, i, r);
                3 & a.flags && BS(t, YS(t, n));
                return 224 & a.flags ? Vh(t, a.nodeIndex).value : void 0
            }
            ), t)
        }
        function WS(t, e, n, r) {
            if (sS.apply(void 0, Object(i.h)([t, e, n], r))) {
                var o = 1 === n ? r[0] : r;
                if (16384 & e.flags) {
                    for (var a = {}, s = 0; s < e.bindings.length; s++) {
                        var c = e.bindings[s]
                          , l = o[s];
                        8 & c.flags && (a[Gr(c.nonMinifiedName)] = Wr(l))
                    }
                    var u = e.parent
                      , d = Nh(t, u.nodeIndex).renderElement;
                    if (u.element.name)
                        for (var p in a) {
                            null != (l = a[p]) ? t.renderer.setAttribute(d, p, l) : t.renderer.removeAttribute(d, p)
                        }
                    else
                        t.renderer.setValue(d, "bindings=" + JSON.stringify(a, null, 2))
                }
            }
        }
        function qS(t, e, n, r) {
            lS.apply(void 0, Object(i.h)([t, e, n], r))
        }
        function XS(t, e) {
            for (var n = e; n < t.def.nodes.length; n++) {
                var i = t.def.nodes[n];
                if (16384 & i.flags && i.bindings && i.bindings.length)
                    return n
            }
            return null
        }
        function YS(t, e) {
            for (var n = e; n < t.def.nodes.length; n++) {
                var i = t.def.nodes[n];
                if (3 & i.flags && i.bindings && i.bindings.length)
                    return n
            }
            return null
        }
        !function(t) {
            t[t.create = 0] = "create",
            t[t.detectChanges = 1] = "detectChanges",
            t[t.checkNoChanges = 2] = "checkNoChanges",
            t[t.destroy = 3] = "destroy",
            t[t.handleEvent = 4] = "handleEvent"
        }(CS || (CS = {}));
        var KS = function() {
            function t(t, e) {
                this.view = t,
                this.nodeIndex = e,
                null == e && (this.nodeIndex = e = 0),
                this.nodeDef = t.def.nodes[e];
                for (var n = this.nodeDef, i = t; n && 0 == (1 & n.flags); )
                    n = n.parent;
                if (!n)
                    for (; !n && i; )
                        n = ef(i),
                        i = i.parent;
                this.elDef = n,
                this.elView = i
            }
            return Object.defineProperty(t.prototype, "elOrCompView", {
                get: function() {
                    return Nh(this.elView, this.elDef.nodeIndex).componentView || this.view
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "injector", {
                get: function() {
                    return Kf(this.elView, this.elDef)
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "component", {
                get: function() {
                    return this.elOrCompView.component
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "context", {
                get: function() {
                    return this.elOrCompView.context
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "providerTokens", {
                get: function() {
                    var t = [];
                    if (this.elDef)
                        for (var e = this.elDef.nodeIndex + 1; e <= this.elDef.nodeIndex + this.elDef.childCount; e++) {
                            var n = this.elView.def.nodes[e];
                            20224 & n.flags && t.push(n.provider.token),
                            e += n.childCount
                        }
                    return t
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "references", {
                get: function() {
                    var t = {};
                    if (this.elDef) {
                        JS(this.elView, this.elDef, t);
                        for (var e = this.elDef.nodeIndex + 1; e <= this.elDef.nodeIndex + this.elDef.childCount; e++) {
                            var n = this.elView.def.nodes[e];
                            20224 & n.flags && JS(this.elView, n, t),
                            e += n.childCount
                        }
                    }
                    return t
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "componentRenderElement", {
                get: function() {
                    var t = function(t) {
                        for (; t && !of(t); )
                            t = t.parent;
                        if (t.parent)
                            return Nh(t.parent, ef(t).nodeIndex);
                        return null
                    }(this.elOrCompView);
                    return t ? t.renderElement : void 0
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(t.prototype, "renderNode", {
                get: function() {
                    return 2 & this.nodeDef.flags ? nf(this.view, this.nodeDef) : nf(this.elView, this.elDef)
                },
                enumerable: !0,
                configurable: !0
            }),
            t.prototype.logError = function(t) {
                for (var e, n, r = [], o = 1; o < arguments.length; o++)
                    r[o - 1] = arguments[o];
                2 & this.nodeDef.flags ? (e = this.view.def,
                n = this.nodeDef.nodeIndex) : (e = this.elView.def,
                n = this.elDef.nodeIndex);
                var a = ZS(e, n)
                  , s = -1
                  , c = function() {
                    var e;
                    return ++s === a ? (e = t.error).bind.apply(e, Object(i.h)([t], r)) : zh
                };
                e.factory(c),
                s < a && (t.error("Illegal state: the ViewDefinitionFactory did not call the logger!"),
                t.error.apply(t, Object(i.h)(r)))
            }
            ,
            t
        }();
        function ZS(t, e) {
            for (var n = -1, i = 0; i <= e; i++) {
                3 & t.nodes[i].flags && n++
            }
            return n
        }
        function JS(t, e, n) {
            for (var i in e.references)
                n[i] = Uw(t, e, e.references[i])
        }
        function QS(t, e, n, i) {
            var r = AS
              , o = TS
              , a = OS;
            try {
                AS = t;
                var s = e.apply(n, i);
                return TS = o,
                OS = a,
                AS = r,
                s
            } catch (t) {
                if (Ii(t) || !TS)
                    throw t;
                throw function(t, e) {
                    return t instanceof Error || (t = new Error(t.toString())),
                    Ih(t, e),
                    t
                }(t, $S())
            }
        }
        function $S() {
            return TS ? new KS(TS,OS) : null
        }
        var tx = function() {
            function t(t) {
                this.delegate = t
            }
            return t.prototype.createRenderer = function(t, e) {
                return new ex(this.delegate.createRenderer(t, e))
            }
            ,
            t.prototype.begin = function() {
                this.delegate.begin && this.delegate.begin()
            }
            ,
            t.prototype.end = function() {
                this.delegate.end && this.delegate.end()
            }
            ,
            t.prototype.whenRenderingDone = function() {
                return this.delegate.whenRenderingDone ? this.delegate.whenRenderingDone() : Promise.resolve(null)
            }
            ,
            t
        }()
          , ex = function() {
            function t(t) {
                this.delegate = t,
                this.debugContextFactory = $S,
                this.data = this.delegate.data
            }
            return t.prototype.createDebugContext = function(t) {
                return this.debugContextFactory(t)
            }
            ,
            t.prototype.destroyNode = function(t) {
                var e = mw(t);
                !function(t) {
                    hw.delete(t.nativeNode)
                }(e),
                e instanceof tw && (e.listeners.length = 0),
                this.delegate.destroyNode && this.delegate.destroyNode(t)
            }
            ,
            t.prototype.destroy = function() {
                this.delegate.destroy()
            }
            ,
            t.prototype.createElement = function(t, e) {
                var n = this.delegate.createElement(t, e)
                  , i = this.createDebugContext(n);
                if (i) {
                    var r = new ew(n,null,i);
                    r.name = t,
                    yw(r)
                }
                return n
            }
            ,
            t.prototype.createComment = function(t) {
                var e = this.delegate.createComment(t)
                  , n = this.createDebugContext(e);
                return n && yw(new tw(e,null,n)),
                e
            }
            ,
            t.prototype.createText = function(t) {
                var e = this.delegate.createText(t)
                  , n = this.createDebugContext(e);
                return n && yw(new tw(e,null,n)),
                e
            }
            ,
            t.prototype.appendChild = function(t, e) {
                var n = mw(t)
                  , i = mw(e);
                n && i && n instanceof ew && n.addChild(i),
                this.delegate.appendChild(t, e)
            }
            ,
            t.prototype.insertBefore = function(t, e, n) {
                var i = mw(t)
                  , r = mw(e)
                  , o = mw(n);
                i && r && i instanceof ew && i.insertBefore(o, r),
                this.delegate.insertBefore(t, e, n)
            }
            ,
            t.prototype.removeChild = function(t, e) {
                var n = mw(t)
                  , i = mw(e);
                n && i && n instanceof ew && n.removeChild(i),
                this.delegate.removeChild(t, e)
            }
            ,
            t.prototype.selectRootElement = function(t, e) {
                var n = this.delegate.selectRootElement(t, e)
                  , i = $S();
                return i && yw(new ew(n,null,i)),
                n
            }
            ,
            t.prototype.setAttribute = function(t, e, n, i) {
                var r = mw(t);
                if (r && r instanceof ew) {
                    var o = i ? i + ":" + e : e;
                    r.attributes[o] = n
                }
                this.delegate.setAttribute(t, e, n, i)
            }
            ,
            t.prototype.removeAttribute = function(t, e, n) {
                var i = mw(t);
                if (i && i instanceof ew) {
                    var r = n ? n + ":" + e : e;
                    i.attributes[r] = null
                }
                this.delegate.removeAttribute(t, e, n)
            }
            ,
            t.prototype.addClass = function(t, e) {
                var n = mw(t);
                n && n instanceof ew && (n.classes[e] = !0),
                this.delegate.addClass(t, e)
            }
            ,
            t.prototype.removeClass = function(t, e) {
                var n = mw(t);
                n && n instanceof ew && (n.classes[e] = !1),
                this.delegate.removeClass(t, e)
            }
            ,
            t.prototype.setStyle = function(t, e, n, i) {
                var r = mw(t);
                r && r instanceof ew && (r.styles[e] = n),
                this.delegate.setStyle(t, e, n, i)
            }
            ,
            t.prototype.removeStyle = function(t, e, n) {
                var i = mw(t);
                i && i instanceof ew && (i.styles[e] = null),
                this.delegate.removeStyle(t, e, n)
            }
            ,
            t.prototype.setProperty = function(t, e, n) {
                var i = mw(t);
                i && i instanceof ew && (i.properties[e] = n),
                this.delegate.setProperty(t, e, n)
            }
            ,
            t.prototype.listen = function(t, e, n) {
                if ("string" != typeof t) {
                    var i = mw(t);
                    i && i.listeners.push(new $b(e,n))
                }
                return this.delegate.listen(t, e, n)
            }
            ,
            t.prototype.parentNode = function(t) {
                return this.delegate.parentNode(t)
            }
            ,
            t.prototype.nextSibling = function(t) {
                return this.delegate.nextSibling(t)
            }
            ,
            t.prototype.setValue = function(t, e) {
                return this.delegate.setValue(t, e)
            }
            ,
            t
        }();
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function nx(t) {
            return yS(),
            Bh.overrideProvider(t)
        }
        function ix(t, e) {
            return yS(),
            Bh.overrideComponentView(t, e)
        }
        function rx() {
            return yS(),
            Bh.clearOverrides()
        }
        function ox(t, e, n) {
            return new ax(t,e,n)
        }
        var ax = function(t) {
            function e(e, n, i) {
                var r = t.call(this) || this;
                return r.moduleType = e,
                r._bootstrapComponents = n,
                r._ngModuleDefFactory = i,
                r
            }
            return Object(i.c)(e, t),
            e.prototype.create = function(t) {
                yS();
                var e = function(t) {
                    var e = Array.from(t.providers)
                      , n = Array.from(t.modules)
                      , i = {};
                    for (var r in t.providersByKey)
                        i[r] = t.providersByKey[r];
                    return {
                        factory: t.factory,
                        scope: t.scope,
                        providers: e,
                        modules: n,
                        providersByKey: i
                    }
                }(pf(this._ngModuleDefFactory));
                return Bh.createNgModuleRef(this.moduleType, t || Pc.NULL, this._bootstrapComponents, e)
            }
            ,
            e
        }(Pt);
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        ngDevMode && (J.$localize = J.$localize || function() {
            throw new Error("It looks like your application or one of its dependencies is using i18n.\nAngular 9 introduced a global `$localize()` function that needs to be loaded.\nPlease run `ng add @angular/localize` from the Angular CLI.\n(For non-CLI projects, add `import '@angular/localize/init';` to your `polyfills.ts` file.\nFor server-side rendering applications add the import to your `main.server.ts` file.)")
        }
        );
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    }
    .call(this, n(213))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "c", (function() {
        return r
    }
    )),
    n.d(e, "a", (function() {
        return o
    }
    )),
    n.d(e, "g", (function() {
        return a
    }
    )),
    n.d(e, "b", (function() {
        return s
    }
    )),
    n.d(e, "e", (function() {
        return c
    }
    )),
    n.d(e, "d", (function() {
        return l
    }
    )),
    n.d(e, "j", (function() {
        return u
    }
    )),
    n.d(e, "f", (function() {
        return d
    }
    )),
    n.d(e, "h", (function() {
        return p
    }
    )),
    n.d(e, "i", (function() {
        return h
    }
    ));
    /*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
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

THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.

See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
    var i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    };
    function r(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    var o = function() {
        return (o = Object.assign || function(t) {
            for (var e, n = 1, i = arguments.length; n < i; n++)
                for (var r in e = arguments[n])
                    Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]);
            return t
        }
        ).apply(this, arguments)
    };
    function a(t, e) {
        var n = {};
        for (var i in t)
            Object.prototype.hasOwnProperty.call(t, i) && e.indexOf(i) < 0 && (n[i] = t[i]);
        if (null != t && "function" == typeof Object.getOwnPropertySymbols) {
            var r = 0;
            for (i = Object.getOwnPropertySymbols(t); r < i.length; r++)
                e.indexOf(i[r]) < 0 && Object.prototype.propertyIsEnumerable.call(t, i[r]) && (n[i[r]] = t[i[r]])
        }
        return n
    }
    function s(t, e, n, i) {
        var r, o = arguments.length, a = o < 3 ? e : null === i ? i = Object.getOwnPropertyDescriptor(e, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate)
            a = Reflect.decorate(t, e, n, i);
        else
            for (var s = t.length - 1; s >= 0; s--)
                (r = t[s]) && (a = (o < 3 ? r(a) : o > 3 ? r(e, n, a) : r(e, n)) || a);
        return o > 3 && a && Object.defineProperty(e, n, a),
        a
    }
    function c(t, e) {
        return function(n, i) {
            e(n, i, t)
        }
    }
    function l(t, e) {
        if ("object" == typeof Reflect && "function" == typeof Reflect.metadata)
            return Reflect.metadata(t, e)
    }
    function u(t) {
        var e = "function" == typeof Symbol && t[Symbol.iterator]
          , n = 0;
        return e ? e.call(t) : {
            next: function() {
                return t && n >= t.length && (t = void 0),
                {
                    value: t && t[n++],
                    done: !t
                }
            }
        }
    }
    function d(t, e) {
        var n = "function" == typeof Symbol && t[Symbol.iterator];
        if (!n)
            return t;
        var i, r, o = n.call(t), a = [];
        try {
            for (; (void 0 === e || e-- > 0) && !(i = o.next()).done; )
                a.push(i.value)
        } catch (t) {
            r = {
                error: t
            }
        } finally {
            try {
                i && !i.done && (n = o.return) && n.call(o)
            } finally {
                if (r)
                    throw r.error
            }
        }
        return a
    }
    function p() {
        for (var t = [], e = 0; e < arguments.length; e++)
            t = t.concat(d(arguments[e]));
        return t
    }
    function h() {
        for (var t = 0, e = 0, n = arguments.length; e < n; e++)
            t += arguments[e].length;
        var i = Array(t)
          , r = 0;
        for (e = 0; e < n; e++)
            for (var o = arguments[e], a = 0, s = o.length; a < s; a++,
            r++)
                i[r] = o[a];
        return i
    }
}
, function(t, e, n) {
    n(924),
    t.exports = angular
}
, function(t, e, n) {
    "use strict";
    n.r(e),
    n.d(e, "APP_BASE_HREF", (function() {
        return S
    }
    )),
    n.d(e, "AsyncPipe", (function() {
        return te
    }
    )),
    n.d(e, "CommonModule", (function() {
        return be
    }
    )),
    n.d(e, "CurrencyPipe", (function() {
        return fe
    }
    )),
    n.d(e, "DOCUMENT", (function() {
        return l
    }
    )),
    n.d(e, "DatePipe", (function() {
        return oe
    }
    )),
    n.d(e, "DecimalPipe", (function() {
        return pe
    }
    )),
    n.d(e, "FormStyle", (function() {
        return _
    }
    )),
    n.d(e, "FormatWidth", (function() {
        return I
    }
    )),
    n.d(e, "HashLocationStrategy", (function() {
        return M
    }
    )),
    n.d(e, "I18nPluralPipe", (function() {
        return se
    }
    )),
    n.d(e, "I18nSelectPipe", (function() {
        return ce
    }
    )),
    n.d(e, "JsonPipe", (function() {
        return le
    }
    )),
    n.d(e, "KeyValuePipe", (function() {
        return ue
    }
    )),
    n.d(e, "LOCATION_INITIALIZED", (function() {
        return p
    }
    )),
    n.d(e, "Location", (function() {
        return E
    }
    )),
    n.d(e, "LocationStrategy", (function() {
        return b
    }
    )),
    n.d(e, "LowerCasePipe", (function() {
        return ee
    }
    )),
    n.d(e, "NgClass", (function() {
        return Dt
    }
    )),
    n.d(e, "NgComponentOutlet", (function() {
        return Rt
    }
    )),
    n.d(e, "NgForOf", (function() {
        return Nt
    }
    )),
    n.d(e, "NgForOfContext", (function() {
        return Lt
    }
    )),
    n.d(e, "NgIf", (function() {
        return Vt
    }
    )),
    n.d(e, "NgIfContext", (function() {
        return Ft
    }
    )),
    n.d(e, "NgLocaleLocalization", (function() {
        return Pt
    }
    )),
    n.d(e, "NgLocalization", (function() {
        return Ot
    }
    )),
    n.d(e, "NgPlural", (function() {
        return Wt
    }
    )),
    n.d(e, "NgPluralCase", (function() {
        return qt
    }
    )),
    n.d(e, "NgStyle", (function() {
        return Xt
    }
    )),
    n.d(e, "NgSwitch", (function() {
        return zt
    }
    )),
    n.d(e, "NgSwitchCase", (function() {
        return Gt
    }
    )),
    n.d(e, "NgSwitchDefault", (function() {
        return Ht
    }
    )),
    n.d(e, "NgTemplateOutlet", (function() {
        return Yt
    }
    )),
    n.d(e, "NumberFormatStyle", (function() {
        return T
    }
    )),
    n.d(e, "NumberSymbol", (function() {
        return k
    }
    )),
    n.d(e, "PathLocationStrategy", (function() {
        return x
    }
    )),
    n.d(e, "PercentPipe", (function() {
        return he
    }
    )),
    n.d(e, "PlatformLocation", (function() {
        return u
    }
    )),
    n.d(e, "Plural", (function() {
        return O
    }
    )),
    n.d(e, "SlicePipe", (function() {
        return ve
    }
    )),
    n.d(e, "TitleCasePipe", (function() {
        return ie
    }
    )),
    n.d(e, "TranslationWidth", (function() {
        return P
    }
    )),
    n.d(e, "UpperCasePipe", (function() {
        return re
    }
    )),
    n.d(e, "VERSION", (function() {
        return Oe
    }
    )),
    n.d(e, "ViewportScroller", (function() {
        return _e
    }
    )),
    n.d(e, "WeekDay", (function() {
        return D
    }
    )),
    n.d(e, "formatCurrency", (function() {
        return Mt
    }
    )),
    n.d(e, "formatDate", (function() {
        return dt
    }
    )),
    n.d(e, "formatNumber", (function() {
        return Ct
    }
    )),
    n.d(e, "formatPercent", (function() {
        return Et
    }
    )),
    n.d(e, "getCurrencySymbol", (function() {
        return it
    }
    )),
    n.d(e, "getLocaleCurrencyCode", (function() {
        return K
    }
    )),
    n.d(e, "getLocaleCurrencyName", (function() {
        return Y
    }
    )),
    n.d(e, "getLocaleCurrencySymbol", (function() {
        return X
    }
    )),
    n.d(e, "getLocaleDateFormat", (function() {
        return z
    }
    )),
    n.d(e, "getLocaleDateTimeFormat", (function() {
        return H
    }
    )),
    n.d(e, "getLocaleDayNames", (function() {
        return j
    }
    )),
    n.d(e, "getLocaleDayPeriods", (function() {
        return N
    }
    )),
    n.d(e, "getLocaleDirection", (function() {
        return tt
    }
    )),
    n.d(e, "getLocaleEraNames", (function() {
        return F
    }
    )),
    n.d(e, "getLocaleExtraDayPeriodRules", (function() {
        return Q
    }
    )),
    n.d(e, "getLocaleExtraDayPeriods", (function() {
        return $
    }
    )),
    n.d(e, "getLocaleFirstDayOfWeek", (function() {
        return U
    }
    )),
    n.d(e, "getLocaleId", (function() {
        return L
    }
    )),
    n.d(e, "getLocaleMonthNames", (function() {
        return V
    }
    )),
    n.d(e, "getLocaleNumberFormat", (function() {
        return q
    }
    )),
    n.d(e, "getLocaleNumberSymbol", (function() {
        return W
    }
    )),
    n.d(e, "getLocalePluralCase", (function() {
        return Z
    }
    )),
    n.d(e, "getLocaleTimeFormat", (function() {
        return G
    }
    )),
    n.d(e, "getLocaleWeekEndRange", (function() {
        return B
    }
    )),
    n.d(e, "getNumberOfCurrencyDigits", (function() {
        return rt
    }
    )),
    n.d(e, "isPlatformBrowser", (function() {
        return Ee
    }
    )),
    n.d(e, "isPlatformServer", (function() {
        return Ce
    }
    )),
    n.d(e, "isPlatformWorkerApp", (function() {
        return Ae
    }
    )),
    n.d(e, "isPlatformWorkerUi", (function() {
        return Te
    }
    )),
    n.d(e, "registerLocaleData", (function() {
        return It
    }
    )),
    n.d(e, "ɵBrowserPlatformLocation", (function() {
        return h
    }
    )),
    n.d(e, "ɵDomAdapter", (function() {
        return c
    }
    )),
    n.d(e, "ɵNullViewportScroller", (function() {
        return Ie
    }
    )),
    n.d(e, "ɵPLATFORM_BROWSER_ID", (function() {
        return we
    }
    )),
    n.d(e, "ɵPLATFORM_SERVER_ID", (function() {
        return Se
    }
    )),
    n.d(e, "ɵPLATFORM_WORKER_APP_ID", (function() {
        return xe
    }
    )),
    n.d(e, "ɵPLATFORM_WORKER_UI_ID", (function() {
        return Me
    }
    )),
    n.d(e, "ɵangular_packages_common_common_a", (function() {
        return d
    }
    )),
    n.d(e, "ɵangular_packages_common_common_b", (function() {
        return m
    }
    )),
    n.d(e, "ɵangular_packages_common_common_c", (function() {
        return C
    }
    )),
    n.d(e, "ɵangular_packages_common_common_d", (function() {
        return w
    }
    )),
    n.d(e, "ɵangular_packages_common_common_e", (function() {
        return Kt
    }
    )),
    n.d(e, "ɵangular_packages_common_common_f", (function() {
        return ye
    }
    )),
    n.d(e, "ɵgetDOM", (function() {
        return a
    }
    )),
    n.d(e, "ɵparseCookieValue", (function() {
        return kt
    }
    )),
    n.d(e, "ɵsetRootDomAdapter", (function() {
        return s
    }
    ));
    var i = n(1)
      , r = n(0)
      , o = null;
    function a() {
        return o
    }
    function s(t) {
        o || (o = t)
    }
    var c = function() {}
      , l = new r.InjectionToken("DocumentToken")
      , u = function() {
        function t() {}
        return t.ɵprov = Object(r["ɵɵdefineInjectable"])({
            factory: d,
            token: t,
            providedIn: "platform"
        }),
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t
    }();
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function d() {
        return Object(r["ɵɵinject"])(h)
    }
    var p = new r.InjectionToken("Location Initialized")
      , h = function(t) {
        function e(e) {
            var n = t.call(this) || this;
            return n._doc = e,
            n._init(),
            n
        }
        return Object(i.c)(e, t),
        e.prototype._init = function() {
            this.location = a().getLocation(),
            this._history = a().getHistory()
        }
        ,
        e.prototype.getBaseHrefFromDOM = function() {
            return a().getBaseHref(this._doc)
        }
        ,
        e.prototype.onPopState = function(t) {
            a().getGlobalEventTarget(this._doc, "window").addEventListener("popstate", t, !1)
        }
        ,
        e.prototype.onHashChange = function(t) {
            a().getGlobalEventTarget(this._doc, "window").addEventListener("hashchange", t, !1)
        }
        ,
        Object.defineProperty(e.prototype, "href", {
            get: function() {
                return this.location.href
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "protocol", {
            get: function() {
                return this.location.protocol
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "hostname", {
            get: function() {
                return this.location.hostname
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "port", {
            get: function() {
                return this.location.port
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "pathname", {
            get: function() {
                return this.location.pathname
            },
            set: function(t) {
                this.location.pathname = t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "search", {
            get: function() {
                return this.location.search
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "hash", {
            get: function() {
                return this.location.hash
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.pushState = function(t, e, n) {
            f() ? this._history.pushState(t, e, n) : this.location.hash = n
        }
        ,
        e.prototype.replaceState = function(t, e, n) {
            f() ? this._history.replaceState(t, e, n) : this.location.hash = n
        }
        ,
        e.prototype.forward = function() {
            this._history.forward()
        }
        ,
        e.prototype.back = function() {
            this._history.back()
        }
        ,
        e.prototype.getState = function() {
            return this._history.state
        }
        ,
        e.ɵprov = Object(r["ɵɵdefineInjectable"])({
            factory: m,
            token: e,
            providedIn: "platform"
        }),
        (e = Object(i.b)([Object(i.e)(0, Object(r.Inject)(l)), Object(i.d)("design:paramtypes", [Object])], e)).ɵfac = function(t) {
            return new (t || e)(r["ɵɵinject"](l))
        }
        ,
        e
    }(u);
    function f() {
        return !!window.history.pushState
    }
    function m() {
        return new h(Object(r["ɵɵinject"])(l))
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function g(t, e) {
        if (0 == t.length)
            return e;
        if (0 == e.length)
            return t;
        var n = 0;
        return t.endsWith("/") && n++,
        e.startsWith("/") && n++,
        2 == n ? t + e.substring(1) : 1 == n ? t + e : t + "/" + e
    }
    function v(t) {
        var e = t.match(/#|\?|$/)
          , n = e && e.index || t.length
          , i = n - ("/" === t[n - 1] ? 1 : 0);
        return t.slice(0, i) + t.slice(n)
    }
    function y(t) {
        return t && "?" !== t[0] ? "?" + t : t
    }
    var b = function() {
        function t() {}
        return t.ɵprov = Object(r["ɵɵdefineInjectable"])({
            factory: w,
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t
    }();
    function w(t) {
        var e = Object(r["ɵɵinject"])(l).location;
        return new x(Object(r["ɵɵinject"])(u),e && e.origin || "")
    }
    var S = new r.InjectionToken("appBaseHref")
      , x = function(t) {
        function e(e, n) {
            var i = t.call(this) || this;
            if (i._platformLocation = e,
            null == n && (n = i._platformLocation.getBaseHrefFromDOM()),
            null == n)
                throw new Error("No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.");
            return i._baseHref = n,
            i
        }
        return Object(i.c)(e, t),
        e.prototype.onPopState = function(t) {
            this._platformLocation.onPopState(t),
            this._platformLocation.onHashChange(t)
        }
        ,
        e.prototype.getBaseHref = function() {
            return this._baseHref
        }
        ,
        e.prototype.prepareExternalUrl = function(t) {
            return g(this._baseHref, t)
        }
        ,
        e.prototype.path = function(t) {
            void 0 === t && (t = !1);
            var e = this._platformLocation.pathname + y(this._platformLocation.search)
              , n = this._platformLocation.hash;
            return n && t ? "" + e + n : e
        }
        ,
        e.prototype.pushState = function(t, e, n, i) {
            var r = this.prepareExternalUrl(n + y(i));
            this._platformLocation.pushState(t, e, r)
        }
        ,
        e.prototype.replaceState = function(t, e, n, i) {
            var r = this.prepareExternalUrl(n + y(i));
            this._platformLocation.replaceState(t, e, r)
        }
        ,
        e.prototype.forward = function() {
            this._platformLocation.forward()
        }
        ,
        e.prototype.back = function() {
            this._platformLocation.back()
        }
        ,
        (e = Object(i.b)([Object(i.e)(1, Object(r.Optional)()), Object(i.e)(1, Object(r.Inject)(S)), Object(i.d)("design:paramtypes", [u, String])], e)).ɵfac = function(t) {
            return new (t || e)(r["ɵɵinject"](u),r["ɵɵinject"](S, 8))
        }
        ,
        e.ɵprov = r["ɵɵdefineInjectable"]({
            token: e,
            factory: function(t) {
                return e.ɵfac(t)
            }
        }),
        e
    }(b)
      , M = function(t) {
        function e(e, n) {
            var i = t.call(this) || this;
            return i._platformLocation = e,
            i._baseHref = "",
            null != n && (i._baseHref = n),
            i
        }
        return Object(i.c)(e, t),
        e.prototype.onPopState = function(t) {
            this._platformLocation.onPopState(t),
            this._platformLocation.onHashChange(t)
        }
        ,
        e.prototype.getBaseHref = function() {
            return this._baseHref
        }
        ,
        e.prototype.path = function(t) {
            void 0 === t && (t = !1);
            var e = this._platformLocation.hash;
            return null == e && (e = "#"),
            e.length > 0 ? e.substring(1) : e
        }
        ,
        e.prototype.prepareExternalUrl = function(t) {
            var e = g(this._baseHref, t);
            return e.length > 0 ? "#" + e : e
        }
        ,
        e.prototype.pushState = function(t, e, n, i) {
            var r = this.prepareExternalUrl(n + y(i));
            0 == r.length && (r = this._platformLocation.pathname),
            this._platformLocation.pushState(t, e, r)
        }
        ,
        e.prototype.replaceState = function(t, e, n, i) {
            var r = this.prepareExternalUrl(n + y(i));
            0 == r.length && (r = this._platformLocation.pathname),
            this._platformLocation.replaceState(t, e, r)
        }
        ,
        e.prototype.forward = function() {
            this._platformLocation.forward()
        }
        ,
        e.prototype.back = function() {
            this._platformLocation.back()
        }
        ,
        (e = Object(i.b)([Object(i.e)(1, Object(r.Optional)()), Object(i.e)(1, Object(r.Inject)(S)), Object(i.d)("design:paramtypes", [u, String])], e)).ɵfac = function(t) {
            return new (t || e)(r["ɵɵinject"](u),r["ɵɵinject"](S, 8))
        }
        ,
        e.ɵprov = r["ɵɵdefineInjectable"]({
            token: e,
            factory: function(t) {
                return e.ɵfac(t)
            }
        }),
        e
    }(b)
      , E = function() {
        function t(t, e) {
            var n = this;
            this._subject = new r.EventEmitter,
            this._urlChangeListeners = [],
            this._platformStrategy = t;
            var i = this._platformStrategy.getBaseHref();
            this._platformLocation = e,
            this._baseHref = v(A(i)),
            this._platformStrategy.onPopState((function(t) {
                n._subject.emit({
                    url: n.path(!0),
                    pop: !0,
                    state: t.state,
                    type: t.type
                })
            }
            ))
        }
        var e;
        return e = t,
        t.prototype.path = function(t) {
            return void 0 === t && (t = !1),
            this.normalize(this._platformStrategy.path(t))
        }
        ,
        t.prototype.getState = function() {
            return this._platformLocation.getState()
        }
        ,
        t.prototype.isCurrentPathEqualTo = function(t, e) {
            return void 0 === e && (e = ""),
            this.path() == this.normalize(t + y(e))
        }
        ,
        t.prototype.normalize = function(t) {
            return e.stripTrailingSlash(function(t, e) {
                return t && e.startsWith(t) ? e.substring(t.length) : e
            }(this._baseHref, A(t)))
        }
        ,
        t.prototype.prepareExternalUrl = function(t) {
            return t && "/" !== t[0] && (t = "/" + t),
            this._platformStrategy.prepareExternalUrl(t)
        }
        ,
        t.prototype.go = function(t, e, n) {
            void 0 === e && (e = ""),
            void 0 === n && (n = null),
            this._platformStrategy.pushState(n, "", t, e),
            this._notifyUrlChangeListeners(this.prepareExternalUrl(t + y(e)), n)
        }
        ,
        t.prototype.replaceState = function(t, e, n) {
            void 0 === e && (e = ""),
            void 0 === n && (n = null),
            this._platformStrategy.replaceState(n, "", t, e),
            this._notifyUrlChangeListeners(this.prepareExternalUrl(t + y(e)), n)
        }
        ,
        t.prototype.forward = function() {
            this._platformStrategy.forward()
        }
        ,
        t.prototype.back = function() {
            this._platformStrategy.back()
        }
        ,
        t.prototype.onUrlChange = function(t) {
            var e = this;
            this._urlChangeListeners.push(t),
            this.subscribe((function(t) {
                e._notifyUrlChangeListeners(t.url, t.state)
            }
            ))
        }
        ,
        t.prototype._notifyUrlChangeListeners = function(t, e) {
            void 0 === t && (t = ""),
            this._urlChangeListeners.forEach((function(n) {
                return n(t, e)
            }
            ))
        }
        ,
        t.prototype.subscribe = function(t, e, n) {
            return this._subject.subscribe({
                next: t,
                error: e,
                complete: n
            })
        }
        ,
        t.normalizeQueryParams = y,
        t.joinWithSlash = g,
        t.stripTrailingSlash = v,
        t.ɵprov = Object(r["ɵɵdefineInjectable"])({
            factory: C,
            token: t,
            providedIn: "root"
        }),
        (t = e = Object(i.b)([Object(i.d)("design:paramtypes", [b, u])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵinject"](b),r["ɵɵinject"](u))
        }
        ,
        t
    }();
    function C() {
        return new E(Object(r["ɵɵinject"])(b),Object(r["ɵɵinject"])(u))
    }
    function A(t) {
        return t.replace(/\/index.html$/, "")
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var T, O, _, P, I, k, D, R = {
        ADP: [void 0, void 0, 0],
        AFN: [void 0, void 0, 0],
        ALL: [void 0, void 0, 0],
        AMD: [void 0, void 0, 2],
        AOA: [void 0, "Kz"],
        ARS: [void 0, "$"],
        AUD: ["A$", "$"],
        BAM: [void 0, "KM"],
        BBD: [void 0, "$"],
        BDT: [void 0, "৳"],
        BHD: [void 0, void 0, 3],
        BIF: [void 0, void 0, 0],
        BMD: [void 0, "$"],
        BND: [void 0, "$"],
        BOB: [void 0, "Bs"],
        BRL: ["R$"],
        BSD: [void 0, "$"],
        BWP: [void 0, "P"],
        BYN: [void 0, "р.", 2],
        BYR: [void 0, void 0, 0],
        BZD: [void 0, "$"],
        CAD: ["CA$", "$", 2],
        CHF: [void 0, void 0, 2],
        CLF: [void 0, void 0, 4],
        CLP: [void 0, "$", 0],
        CNY: ["CN¥", "¥"],
        COP: [void 0, "$", 2],
        CRC: [void 0, "₡", 2],
        CUC: [void 0, "$"],
        CUP: [void 0, "$"],
        CZK: [void 0, "Kč", 2],
        DJF: [void 0, void 0, 0],
        DKK: [void 0, "kr", 2],
        DOP: [void 0, "$"],
        EGP: [void 0, "E£"],
        ESP: [void 0, "₧", 0],
        EUR: ["€"],
        FJD: [void 0, "$"],
        FKP: [void 0, "£"],
        GBP: ["£"],
        GEL: [void 0, "₾"],
        GIP: [void 0, "£"],
        GNF: [void 0, "FG", 0],
        GTQ: [void 0, "Q"],
        GYD: [void 0, "$", 2],
        HKD: ["HK$", "$"],
        HNL: [void 0, "L"],
        HRK: [void 0, "kn"],
        HUF: [void 0, "Ft", 2],
        IDR: [void 0, "Rp", 2],
        ILS: ["₪"],
        INR: ["₹"],
        IQD: [void 0, void 0, 0],
        IRR: [void 0, void 0, 0],
        ISK: [void 0, "kr", 0],
        ITL: [void 0, void 0, 0],
        JMD: [void 0, "$"],
        JOD: [void 0, void 0, 3],
        JPY: ["¥", void 0, 0],
        KHR: [void 0, "៛"],
        KMF: [void 0, "CF", 0],
        KPW: [void 0, "₩", 0],
        KRW: ["₩", void 0, 0],
        KWD: [void 0, void 0, 3],
        KYD: [void 0, "$"],
        KZT: [void 0, "₸"],
        LAK: [void 0, "₭", 0],
        LBP: [void 0, "L£", 0],
        LKR: [void 0, "Rs"],
        LRD: [void 0, "$"],
        LTL: [void 0, "Lt"],
        LUF: [void 0, void 0, 0],
        LVL: [void 0, "Ls"],
        LYD: [void 0, void 0, 3],
        MGA: [void 0, "Ar", 0],
        MGF: [void 0, void 0, 0],
        MMK: [void 0, "K", 0],
        MNT: [void 0, "₮", 2],
        MRO: [void 0, void 0, 0],
        MUR: [void 0, "Rs", 2],
        MXN: ["MX$", "$"],
        MYR: [void 0, "RM"],
        NAD: [void 0, "$"],
        NGN: [void 0, "₦"],
        NIO: [void 0, "C$"],
        NOK: [void 0, "kr", 2],
        NPR: [void 0, "Rs"],
        NZD: ["NZ$", "$"],
        OMR: [void 0, void 0, 3],
        PHP: [void 0, "₱"],
        PKR: [void 0, "Rs", 2],
        PLN: [void 0, "zł"],
        PYG: [void 0, "₲", 0],
        RON: [void 0, "lei"],
        RSD: [void 0, void 0, 0],
        RUB: [void 0, "₽"],
        RUR: [void 0, "р."],
        RWF: [void 0, "RF", 0],
        SBD: [void 0, "$"],
        SEK: [void 0, "kr", 2],
        SGD: [void 0, "$"],
        SHP: [void 0, "£"],
        SLL: [void 0, void 0, 0],
        SOS: [void 0, void 0, 0],
        SRD: [void 0, "$"],
        SSP: [void 0, "£"],
        STD: [void 0, void 0, 0],
        STN: [void 0, "Db"],
        SYP: [void 0, "£", 0],
        THB: [void 0, "฿"],
        TMM: [void 0, void 0, 0],
        TND: [void 0, void 0, 3],
        TOP: [void 0, "T$"],
        TRL: [void 0, void 0, 0],
        TRY: [void 0, "₺"],
        TTD: [void 0, "$"],
        TWD: ["NT$", "$", 2],
        TZS: [void 0, void 0, 2],
        UAH: [void 0, "₴"],
        UGX: [void 0, void 0, 0],
        USD: ["$"],
        UYI: [void 0, void 0, 0],
        UYU: [void 0, "$"],
        UYW: [void 0, void 0, 4],
        UZS: [void 0, void 0, 2],
        VEF: [void 0, "Bs", 2],
        VND: ["₫", void 0, 0],
        VUV: [void 0, void 0, 0],
        XAF: ["FCFA", void 0, 0],
        XCD: ["EC$", "$"],
        XOF: ["CFA", void 0, 0],
        XPF: ["CFPF", void 0, 0],
        XXX: ["¤"],
        YER: [void 0, void 0, 0],
        ZAR: [void 0, "R"],
        ZMK: [void 0, void 0, 0],
        ZMW: [void 0, "ZK"],
        ZWD: [void 0, void 0, 0]
    };
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function L(t) {
        return Object(r["ɵfindLocaleData"])(t)[r["ɵLocaleDataIndex"].LocaleId]
    }
    function N(t, e, n) {
        var i = Object(r["ɵfindLocaleData"])(t)
          , o = et([i[r["ɵLocaleDataIndex"].DayPeriodsFormat], i[r["ɵLocaleDataIndex"].DayPeriodsStandalone]], e);
        return et(o, n)
    }
    function j(t, e, n) {
        var i = Object(r["ɵfindLocaleData"])(t)
          , o = et([i[r["ɵLocaleDataIndex"].DaysFormat], i[r["ɵLocaleDataIndex"].DaysStandalone]], e);
        return et(o, n)
    }
    function V(t, e, n) {
        var i = Object(r["ɵfindLocaleData"])(t)
          , o = et([i[r["ɵLocaleDataIndex"].MonthsFormat], i[r["ɵLocaleDataIndex"].MonthsStandalone]], e);
        return et(o, n)
    }
    function F(t, e) {
        return et(Object(r["ɵfindLocaleData"])(t)[r["ɵLocaleDataIndex"].Eras], e)
    }
    function U(t) {
        return Object(r["ɵfindLocaleData"])(t)[r["ɵLocaleDataIndex"].FirstDayOfWeek]
    }
    function B(t) {
        return Object(r["ɵfindLocaleData"])(t)[r["ɵLocaleDataIndex"].WeekendRange]
    }
    function z(t, e) {
        return et(Object(r["ɵfindLocaleData"])(t)[r["ɵLocaleDataIndex"].DateFormat], e)
    }
    function G(t, e) {
        return et(Object(r["ɵfindLocaleData"])(t)[r["ɵLocaleDataIndex"].TimeFormat], e)
    }
    function H(t, e) {
        return et(Object(r["ɵfindLocaleData"])(t)[r["ɵLocaleDataIndex"].DateTimeFormat], e)
    }
    function W(t, e) {
        var n = Object(r["ɵfindLocaleData"])(t)
          , i = n[r["ɵLocaleDataIndex"].NumberSymbols][e];
        if (void 0 === i) {
            if (e === k.CurrencyDecimal)
                return n[r["ɵLocaleDataIndex"].NumberSymbols][k.Decimal];
            if (e === k.CurrencyGroup)
                return n[r["ɵLocaleDataIndex"].NumberSymbols][k.Group]
        }
        return i
    }
    function q(t, e) {
        return Object(r["ɵfindLocaleData"])(t)[r["ɵLocaleDataIndex"].NumberFormats][e]
    }
    function X(t) {
        return Object(r["ɵfindLocaleData"])(t)[r["ɵLocaleDataIndex"].CurrencySymbol] || null
    }
    function Y(t) {
        return Object(r["ɵfindLocaleData"])(t)[r["ɵLocaleDataIndex"].CurrencyName] || null
    }
    function K(t) {
        return Object(r["ɵgetLocaleCurrencyCode"])(t)
    }
    !function(t) {
        t[t.Decimal = 0] = "Decimal",
        t[t.Percent = 1] = "Percent",
        t[t.Currency = 2] = "Currency",
        t[t.Scientific = 3] = "Scientific"
    }(T || (T = {})),
    function(t) {
        t[t.Zero = 0] = "Zero",
        t[t.One = 1] = "One",
        t[t.Two = 2] = "Two",
        t[t.Few = 3] = "Few",
        t[t.Many = 4] = "Many",
        t[t.Other = 5] = "Other"
    }(O || (O = {})),
    function(t) {
        t[t.Format = 0] = "Format",
        t[t.Standalone = 1] = "Standalone"
    }(_ || (_ = {})),
    function(t) {
        t[t.Narrow = 0] = "Narrow",
        t[t.Abbreviated = 1] = "Abbreviated",
        t[t.Wide = 2] = "Wide",
        t[t.Short = 3] = "Short"
    }(P || (P = {})),
    function(t) {
        t[t.Short = 0] = "Short",
        t[t.Medium = 1] = "Medium",
        t[t.Long = 2] = "Long",
        t[t.Full = 3] = "Full"
    }(I || (I = {})),
    function(t) {
        t[t.Decimal = 0] = "Decimal",
        t[t.Group = 1] = "Group",
        t[t.List = 2] = "List",
        t[t.PercentSign = 3] = "PercentSign",
        t[t.PlusSign = 4] = "PlusSign",
        t[t.MinusSign = 5] = "MinusSign",
        t[t.Exponential = 6] = "Exponential",
        t[t.SuperscriptingExponent = 7] = "SuperscriptingExponent",
        t[t.PerMille = 8] = "PerMille",
        t[t[1 / 0] = 9] = "Infinity",
        t[t.NaN = 10] = "NaN",
        t[t.TimeSeparator = 11] = "TimeSeparator",
        t[t.CurrencyDecimal = 12] = "CurrencyDecimal",
        t[t.CurrencyGroup = 13] = "CurrencyGroup"
    }(k || (k = {})),
    function(t) {
        t[t.Sunday = 0] = "Sunday",
        t[t.Monday = 1] = "Monday",
        t[t.Tuesday = 2] = "Tuesday",
        t[t.Wednesday = 3] = "Wednesday",
        t[t.Thursday = 4] = "Thursday",
        t[t.Friday = 5] = "Friday",
        t[t.Saturday = 6] = "Saturday"
    }(D || (D = {}));
    var Z = r["ɵgetLocalePluralCase"];
    function J(t) {
        if (!t[r["ɵLocaleDataIndex"].ExtraData])
            throw new Error('Missing extra locale data for the locale "' + t[r["ɵLocaleDataIndex"].LocaleId] + '". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.')
    }
    function Q(t) {
        var e = Object(r["ɵfindLocaleData"])(t);
        return J(e),
        (e[r["ɵLocaleDataIndex"].ExtraData][2] || []).map((function(t) {
            return "string" == typeof t ? nt(t) : [nt(t[0]), nt(t[1])]
        }
        ))
    }
    function $(t, e, n) {
        var i = Object(r["ɵfindLocaleData"])(t);
        J(i);
        var o = et([i[r["ɵLocaleDataIndex"].ExtraData][0], i[r["ɵLocaleDataIndex"].ExtraData][1]], e) || [];
        return et(o, n) || []
    }
    function tt(t) {
        return Object(r["ɵfindLocaleData"])(t)[r["ɵLocaleDataIndex"].Directionality]
    }
    function et(t, e) {
        for (var n = e; n > -1; n--)
            if (void 0 !== t[n])
                return t[n];
        throw new Error("Locale data API: locale data undefined")
    }
    function nt(t) {
        var e = Object(i.f)(t.split(":"), 2);
        return {
            hours: +e[0],
            minutes: +e[1]
        }
    }
    function it(t, e, n) {
        void 0 === n && (n = "en");
        var i = function(t) {
            return Object(r["ɵfindLocaleData"])(t)[r["ɵLocaleDataIndex"].Currencies]
        }(n)[t] || R[t] || []
          , o = i[1];
        return "narrow" === e && "string" == typeof o ? o : i[0] || t
    }
    function rt(t) {
        var e, n = R[t];
        return n && (e = n[2]),
        "number" == typeof e ? e : 2
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var ot, at, st, ct = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/, lt = {}, ut = /((?:[^GyMLwWdEabBhHmsSzZO']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/;
    function dt(t, e, n, r) {
        var o = function(t) {
            if (wt(t))
                return t;
            if ("number" == typeof t && !isNaN(t))
                return new Date(t);
            if ("string" == typeof t) {
                t = t.trim();
                var e = parseFloat(t);
                if (!isNaN(t - e))
                    return new Date(e);
                if (/^(\d{4}-\d{1,2}-\d{1,2})$/.test(t)) {
                    var n = Object(i.f)(t.split("-").map((function(t) {
                        return +t
                    }
                    )), 3)
                      , r = n[0]
                      , o = n[1]
                      , a = n[2];
                    return new Date(r,o - 1,a)
                }
                var s;
                if (s = t.match(ct))
                    return function(t) {
                        var e = new Date(0)
                          , n = 0
                          , i = 0
                          , r = t[8] ? e.setUTCFullYear : e.setFullYear
                          , o = t[8] ? e.setUTCHours : e.setHours;
                        t[9] && (n = Number(t[9] + t[10]),
                        i = Number(t[9] + t[11]));
                        r.call(e, Number(t[1]), Number(t[2]) - 1, Number(t[3]));
                        var a = Number(t[4] || 0) - n
                          , s = Number(t[5] || 0) - i
                          , c = Number(t[6] || 0)
                          , l = Math.round(1e3 * parseFloat("0." + (t[7] || 0)));
                        return o.call(e, a, s, c, l),
                        e
                    }(s)
            }
            var c = new Date(t);
            if (!wt(c))
                throw new Error('Unable to convert "' + t + '" into a date');
            return c
        }(t);
        e = function t(e, n) {
            var i = L(e);
            if (lt[i] = lt[i] || {},
            lt[i][n])
                return lt[i][n];
            var r = "";
            switch (n) {
            case "shortDate":
                r = z(e, I.Short);
                break;
            case "mediumDate":
                r = z(e, I.Medium);
                break;
            case "longDate":
                r = z(e, I.Long);
                break;
            case "fullDate":
                r = z(e, I.Full);
                break;
            case "shortTime":
                r = G(e, I.Short);
                break;
            case "mediumTime":
                r = G(e, I.Medium);
                break;
            case "longTime":
                r = G(e, I.Long);
                break;
            case "fullTime":
                r = G(e, I.Full);
                break;
            case "short":
                var o = t(e, "shortTime")
                  , a = t(e, "shortDate");
                r = pt(H(e, I.Short), [o, a]);
                break;
            case "medium":
                var s = t(e, "mediumTime")
                  , c = t(e, "mediumDate");
                r = pt(H(e, I.Medium), [s, c]);
                break;
            case "long":
                var l = t(e, "longTime")
                  , u = t(e, "longDate");
                r = pt(H(e, I.Long), [l, u]);
                break;
            case "full":
                var d = t(e, "fullTime")
                  , p = t(e, "fullDate");
                r = pt(H(e, I.Full), [d, p])
            }
            r && (lt[i][n] = r);
            return r
        }(n, e) || e;
        for (var a, s = []; e; ) {
            if (!(a = ut.exec(e))) {
                s.push(e);
                break
            }
            var c = (s = s.concat(a.slice(1))).pop();
            if (!c)
                break;
            e = c
        }
        var l = o.getTimezoneOffset();
        r && (l = bt(r, l),
        o = function(t, e, n) {
            var i = n ? -1 : 1
              , r = t.getTimezoneOffset()
              , o = bt(e, r);
            return function(t, e) {
                return (t = new Date(t.getTime())).setMinutes(t.getMinutes() + e),
                t
            }(t, i * (o - r))
        }(o, r, !0));
        var u = "";
        return s.forEach((function(t) {
            var e = function(t) {
                if (yt[t])
                    return yt[t];
                var e;
                switch (t) {
                case "G":
                case "GG":
                case "GGG":
                    e = mt(st.Eras, P.Abbreviated);
                    break;
                case "GGGG":
                    e = mt(st.Eras, P.Wide);
                    break;
                case "GGGGG":
                    e = mt(st.Eras, P.Narrow);
                    break;
                case "y":
                    e = ft(at.FullYear, 1, 0, !1, !0);
                    break;
                case "yy":
                    e = ft(at.FullYear, 2, 0, !0, !0);
                    break;
                case "yyy":
                    e = ft(at.FullYear, 3, 0, !1, !0);
                    break;
                case "yyyy":
                    e = ft(at.FullYear, 4, 0, !1, !0);
                    break;
                case "M":
                case "L":
                    e = ft(at.Month, 1, 1);
                    break;
                case "MM":
                case "LL":
                    e = ft(at.Month, 2, 1);
                    break;
                case "MMM":
                    e = mt(st.Months, P.Abbreviated);
                    break;
                case "MMMM":
                    e = mt(st.Months, P.Wide);
                    break;
                case "MMMMM":
                    e = mt(st.Months, P.Narrow);
                    break;
                case "LLL":
                    e = mt(st.Months, P.Abbreviated, _.Standalone);
                    break;
                case "LLLL":
                    e = mt(st.Months, P.Wide, _.Standalone);
                    break;
                case "LLLLL":
                    e = mt(st.Months, P.Narrow, _.Standalone);
                    break;
                case "w":
                    e = vt(1);
                    break;
                case "ww":
                    e = vt(2);
                    break;
                case "W":
                    e = vt(1, !0);
                    break;
                case "d":
                    e = ft(at.Date, 1);
                    break;
                case "dd":
                    e = ft(at.Date, 2);
                    break;
                case "E":
                case "EE":
                case "EEE":
                    e = mt(st.Days, P.Abbreviated);
                    break;
                case "EEEE":
                    e = mt(st.Days, P.Wide);
                    break;
                case "EEEEE":
                    e = mt(st.Days, P.Narrow);
                    break;
                case "EEEEEE":
                    e = mt(st.Days, P.Short);
                    break;
                case "a":
                case "aa":
                case "aaa":
                    e = mt(st.DayPeriods, P.Abbreviated);
                    break;
                case "aaaa":
                    e = mt(st.DayPeriods, P.Wide);
                    break;
                case "aaaaa":
                    e = mt(st.DayPeriods, P.Narrow);
                    break;
                case "b":
                case "bb":
                case "bbb":
                    e = mt(st.DayPeriods, P.Abbreviated, _.Standalone, !0);
                    break;
                case "bbbb":
                    e = mt(st.DayPeriods, P.Wide, _.Standalone, !0);
                    break;
                case "bbbbb":
                    e = mt(st.DayPeriods, P.Narrow, _.Standalone, !0);
                    break;
                case "B":
                case "BB":
                case "BBB":
                    e = mt(st.DayPeriods, P.Abbreviated, _.Format, !0);
                    break;
                case "BBBB":
                    e = mt(st.DayPeriods, P.Wide, _.Format, !0);
                    break;
                case "BBBBB":
                    e = mt(st.DayPeriods, P.Narrow, _.Format, !0);
                    break;
                case "h":
                    e = ft(at.Hours, 1, -12);
                    break;
                case "hh":
                    e = ft(at.Hours, 2, -12);
                    break;
                case "H":
                    e = ft(at.Hours, 1);
                    break;
                case "HH":
                    e = ft(at.Hours, 2);
                    break;
                case "m":
                    e = ft(at.Minutes, 1);
                    break;
                case "mm":
                    e = ft(at.Minutes, 2);
                    break;
                case "s":
                    e = ft(at.Seconds, 1);
                    break;
                case "ss":
                    e = ft(at.Seconds, 2);
                    break;
                case "S":
                    e = ft(at.FractionalSeconds, 1);
                    break;
                case "SS":
                    e = ft(at.FractionalSeconds, 2);
                    break;
                case "SSS":
                    e = ft(at.FractionalSeconds, 3);
                    break;
                case "Z":
                case "ZZ":
                case "ZZZ":
                    e = gt(ot.Short);
                    break;
                case "ZZZZZ":
                    e = gt(ot.Extended);
                    break;
                case "O":
                case "OO":
                case "OOO":
                case "z":
                case "zz":
                case "zzz":
                    e = gt(ot.ShortGMT);
                    break;
                case "OOOO":
                case "ZZZZ":
                case "zzzz":
                    e = gt(ot.Long);
                    break;
                default:
                    return null
                }
                return yt[t] = e,
                e
            }(t);
            u += e ? e(o, n, l) : "''" === t ? "'" : t.replace(/(^'|'$)/g, "").replace(/''/g, "'")
        }
        )),
        u
    }
    function pt(t, e) {
        return e && (t = t.replace(/\{([^}]+)}/g, (function(t, n) {
            return null != e && n in e ? e[n] : t
        }
        ))),
        t
    }
    function ht(t, e, n, i, r) {
        void 0 === n && (n = "-");
        var o = "";
        (t < 0 || r && t <= 0) && (r ? t = 1 - t : (t = -t,
        o = n));
        for (var a = String(t); a.length < e; )
            a = "0" + a;
        return i && (a = a.substr(a.length - e)),
        o + a
    }
    function ft(t, e, n, i, r) {
        return void 0 === n && (n = 0),
        void 0 === i && (i = !1),
        void 0 === r && (r = !1),
        function(o, a) {
            var s, c = function(t, e) {
                switch (t) {
                case at.FullYear:
                    return e.getFullYear();
                case at.Month:
                    return e.getMonth();
                case at.Date:
                    return e.getDate();
                case at.Hours:
                    return e.getHours();
                case at.Minutes:
                    return e.getMinutes();
                case at.Seconds:
                    return e.getSeconds();
                case at.FractionalSeconds:
                    return e.getMilliseconds();
                case at.Day:
                    return e.getDay();
                default:
                    throw new Error('Unknown DateType value "' + t + '".')
                }
            }(t, o);
            if ((n > 0 || c > -n) && (c += n),
            t === at.Hours)
                0 === c && -12 === n && (c = 12);
            else if (t === at.FractionalSeconds)
                return s = e,
                ht(c, 3).substr(0, s);
            var l = W(a, k.MinusSign);
            return ht(c, e, l, i, r)
        }
    }
    function mt(t, e, n, i) {
        return void 0 === n && (n = _.Format),
        void 0 === i && (i = !1),
        function(r, o) {
            return function(t, e, n, i, r, o) {
                switch (n) {
                case st.Months:
                    return V(e, r, i)[t.getMonth()];
                case st.Days:
                    return j(e, r, i)[t.getDay()];
                case st.DayPeriods:
                    var a = t.getHours()
                      , s = t.getMinutes();
                    if (o) {
                        var c, l = Q(e), u = $(e, r, i);
                        if (l.forEach((function(t, e) {
                            if (Array.isArray(t)) {
                                var n = t[0]
                                  , i = n.hours
                                  , r = n.minutes
                                  , o = t[1]
                                  , l = o.hours
                                  , d = o.minutes;
                                a >= i && s >= r && (a < l || a === l && s < d) && (c = u[e])
                            } else {
                                var p = t.hours
                                  , h = t.minutes;
                                p === a && h === s && (c = u[e])
                            }
                        }
                        )),
                        c)
                            return c
                    }
                    return N(e, r, i)[a < 12 ? 0 : 1];
                case st.Eras:
                    return F(e, i)[t.getFullYear() <= 0 ? 0 : 1];
                default:
                    throw new Error("unexpected translation type " + n)
                }
            }(r, o, t, e, n, i)
        }
    }
    function gt(t) {
        return function(e, n, i) {
            var r = -1 * i
              , o = W(n, k.MinusSign)
              , a = r > 0 ? Math.floor(r / 60) : Math.ceil(r / 60);
            switch (t) {
            case ot.Short:
                return (r >= 0 ? "+" : "") + ht(a, 2, o) + ht(Math.abs(r % 60), 2, o);
            case ot.ShortGMT:
                return "GMT" + (r >= 0 ? "+" : "") + ht(a, 1, o);
            case ot.Long:
                return "GMT" + (r >= 0 ? "+" : "") + ht(a, 2, o) + ":" + ht(Math.abs(r % 60), 2, o);
            case ot.Extended:
                return 0 === i ? "Z" : (r >= 0 ? "+" : "") + ht(a, 2, o) + ":" + ht(Math.abs(r % 60), 2, o);
            default:
                throw new Error('Unknown zone width "' + t + '"')
            }
        }
    }
    !function(t) {
        t[t.Short = 0] = "Short",
        t[t.ShortGMT = 1] = "ShortGMT",
        t[t.Long = 2] = "Long",
        t[t.Extended = 3] = "Extended"
    }(ot || (ot = {})),
    function(t) {
        t[t.FullYear = 0] = "FullYear",
        t[t.Month = 1] = "Month",
        t[t.Date = 2] = "Date",
        t[t.Hours = 3] = "Hours",
        t[t.Minutes = 4] = "Minutes",
        t[t.Seconds = 5] = "Seconds",
        t[t.FractionalSeconds = 6] = "FractionalSeconds",
        t[t.Day = 7] = "Day"
    }(at || (at = {})),
    function(t) {
        t[t.DayPeriods = 0] = "DayPeriods",
        t[t.Days = 1] = "Days",
        t[t.Months = 2] = "Months",
        t[t.Eras = 3] = "Eras"
    }(st || (st = {}));
    function vt(t, e) {
        return void 0 === e && (e = !1),
        function(n, i) {
            var r, o, a, s;
            if (e) {
                var c = new Date(n.getFullYear(),n.getMonth(),1).getDay() - 1
                  , l = n.getDate();
                r = 1 + Math.floor((l + c) / 7)
            } else {
                var u = (a = n.getFullYear(),
                s = new Date(a,0,1).getDay(),
                new Date(a,0,1 + (s <= 4 ? 4 : 11) - s))
                  , d = (o = n,
                new Date(o.getFullYear(),o.getMonth(),o.getDate() + (4 - o.getDay()))).getTime() - u.getTime();
                r = 1 + Math.round(d / 6048e5)
            }
            return ht(r, t, W(i, k.MinusSign))
        }
    }
    var yt = {};
    function bt(t, e) {
        t = t.replace(/:/g, "");
        var n = Date.parse("Jan 01, 1970 00:00:00 " + t) / 6e4;
        return isNaN(n) ? e : n
    }
    function wt(t) {
        return t instanceof Date && !isNaN(t.valueOf())
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var St = /^(\d+)?\.((\d+)(-(\d+))?)?$/;
    function xt(t, e, n, i, r, o, a) {
        void 0 === a && (a = !1);
        var s = ""
          , c = !1;
        if (isFinite(t)) {
            var l = function(t) {
                var e, n, i, r, o, a = Math.abs(t) + "", s = 0;
                (n = a.indexOf(".")) > -1 && (a = a.replace(".", ""));
                (i = a.search(/e/i)) > 0 ? (n < 0 && (n = i),
                n += +a.slice(i + 1),
                a = a.substring(0, i)) : n < 0 && (n = a.length);
                for (i = 0; "0" === a.charAt(i); i++)
                    ;
                if (i === (o = a.length))
                    e = [0],
                    n = 1;
                else {
                    for (o--; "0" === a.charAt(o); )
                        o--;
                    for (n -= i,
                    e = [],
                    r = 0; i <= o; i++,
                    r++)
                        e[r] = Number(a.charAt(i))
                }
                n > 22 && (e = e.splice(0, 21),
                s = n - 1,
                n = 1);
                return {
                    digits: e,
                    exponent: s,
                    integerLen: n
                }
            }(t);
            a && (l = function(t) {
                if (0 === t.digits[0])
                    return t;
                var e = t.digits.length - t.integerLen;
                t.exponent ? t.exponent += 2 : (0 === e ? t.digits.push(0, 0) : 1 === e && t.digits.push(0),
                t.integerLen += 2);
                return t
            }(l));
            var u = e.minInt
              , d = e.minFrac
              , p = e.maxFrac;
            if (o) {
                var h = o.match(St);
                if (null === h)
                    throw new Error(o + " is not a valid digit info");
                var f = h[1]
                  , m = h[3]
                  , g = h[5];
                null != f && (u = Tt(f)),
                null != m && (d = Tt(m)),
                null != g ? p = Tt(g) : null != m && d > p && (p = d)
            }
            !function(t, e, n) {
                if (e > n)
                    throw new Error("The minimum number of digits after fraction (" + e + ") is higher than the maximum (" + n + ").");
                var i = t.digits
                  , r = i.length - t.integerLen
                  , o = Math.min(Math.max(e, r), n)
                  , a = o + t.integerLen
                  , s = i[a];
                if (a > 0) {
                    i.splice(Math.max(t.integerLen, a));
                    for (var c = a; c < i.length; c++)
                        i[c] = 0
                } else {
                    r = Math.max(0, r),
                    t.integerLen = 1,
                    i.length = Math.max(1, a = o + 1),
                    i[0] = 0;
                    for (var l = 1; l < a; l++)
                        i[l] = 0
                }
                if (s >= 5)
                    if (a - 1 < 0) {
                        for (var u = 0; u > a; u--)
                            i.unshift(0),
                            t.integerLen++;
                        i.unshift(1),
                        t.integerLen++
                    } else
                        i[a - 1]++;
                for (; r < Math.max(0, o); r++)
                    i.push(0);
                var d = 0 !== o
                  , p = e + t.integerLen
                  , h = i.reduceRight((function(t, e, n, i) {
                    return e += t,
                    i[n] = e < 10 ? e : e - 10,
                    d && (0 === i[n] && n >= p ? i.pop() : d = !1),
                    e >= 10 ? 1 : 0
                }
                ), 0);
                h && (i.unshift(h),
                t.integerLen++)
            }(l, d, p);
            var v = l.digits
              , y = l.integerLen
              , b = l.exponent
              , w = [];
            for (c = v.every((function(t) {
                return !t
            }
            )); y < u; y++)
                v.unshift(0);
            for (; y < 0; y++)
                v.unshift(0);
            y > 0 ? w = v.splice(y, v.length) : (w = v,
            v = [0]);
            var S = [];
            for (v.length >= e.lgSize && S.unshift(v.splice(-e.lgSize, v.length).join("")); v.length > e.gSize; )
                S.unshift(v.splice(-e.gSize, v.length).join(""));
            v.length && S.unshift(v.join("")),
            s = S.join(W(n, i)),
            w.length && (s += W(n, r) + w.join("")),
            b && (s += W(n, k.Exponential) + "+" + b)
        } else
            s = W(n, k.Infinity);
        return s = t < 0 && !c ? e.negPre + s + e.negSuf : e.posPre + s + e.posSuf
    }
    function Mt(t, e, n, i, r) {
        var o = At(q(e, T.Currency), W(e, k.MinusSign));
        return o.minFrac = rt(i),
        o.maxFrac = o.minFrac,
        xt(t, o, e, k.CurrencyGroup, k.CurrencyDecimal, r).replace("¤", n).replace("¤", "").trim()
    }
    function Et(t, e, n) {
        return xt(t, At(q(e, T.Percent), W(e, k.MinusSign)), e, k.Group, k.Decimal, n, !0).replace(new RegExp("%","g"), W(e, k.PercentSign))
    }
    function Ct(t, e, n) {
        return xt(t, At(q(e, T.Decimal), W(e, k.MinusSign)), e, k.Group, k.Decimal, n)
    }
    function At(t, e) {
        void 0 === e && (e = "-");
        var n = {
            minInt: 1,
            minFrac: 0,
            maxFrac: 0,
            posPre: "",
            posSuf: "",
            negPre: "",
            negSuf: "",
            gSize: 0,
            lgSize: 0
        }
          , i = t.split(";")
          , r = i[0]
          , o = i[1]
          , a = -1 !== r.indexOf(".") ? r.split(".") : [r.substring(0, r.lastIndexOf("0") + 1), r.substring(r.lastIndexOf("0") + 1)]
          , s = a[0]
          , c = a[1] || "";
        n.posPre = s.substr(0, s.indexOf("#"));
        for (var l = 0; l < c.length; l++) {
            var u = c.charAt(l);
            "0" === u ? n.minFrac = n.maxFrac = l + 1 : "#" === u ? n.maxFrac = l + 1 : n.posSuf += u
        }
        var d = s.split(",");
        if (n.gSize = d[1] ? d[1].length : 0,
        n.lgSize = d[2] || d[1] ? (d[2] || d[1]).length : 0,
        o) {
            var p = r.length - n.posPre.length - n.posSuf.length
              , h = o.indexOf("#");
            n.negPre = o.substr(0, h).replace(/'/g, ""),
            n.negSuf = o.substr(h + p).replace(/'/g, "")
        } else
            n.negPre = e + n.posPre,
            n.negSuf = n.posSuf;
        return n
    }
    function Tt(t) {
        var e = parseInt(t);
        if (isNaN(e))
            throw new Error("Invalid integer literal when parsing " + t);
        return e
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var Ot = function() {};
    function _t(t, e, n, i) {
        var r = "=" + t;
        if (e.indexOf(r) > -1)
            return r;
        if (r = n.getPluralCategory(t, i),
        e.indexOf(r) > -1)
            return r;
        if (e.indexOf("other") > -1)
            return "other";
        throw new Error('No plural message found for value "' + t + '"')
    }
    var Pt = function(t) {
        function e(e) {
            var n = t.call(this) || this;
            return n.locale = e,
            n
        }
        return Object(i.c)(e, t),
        e.prototype.getPluralCategory = function(t, e) {
            switch (Z(e || this.locale)(t)) {
            case O.Zero:
                return "zero";
            case O.One:
                return "one";
            case O.Two:
                return "two";
            case O.Few:
                return "few";
            case O.Many:
                return "many";
            default:
                return "other"
            }
        }
        ,
        (e = Object(i.b)([Object(i.e)(0, Object(r.Inject)(r.LOCALE_ID)), Object(i.d)("design:paramtypes", [String])], e)).ɵfac = function(t) {
            return new (t || e)(r["ɵɵinject"](r.LOCALE_ID))
        }
        ,
        e.ɵprov = r["ɵɵdefineInjectable"]({
            token: e,
            factory: function(t) {
                return e.ɵfac(t)
            }
        }),
        e
    }(Ot);
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function It(t, e, n) {
        return Object(r["ɵregisterLocaleData"])(t, e, n)
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function kt(t, e) {
        var n, r;
        e = encodeURIComponent(e);
        try {
            for (var o = Object(i.j)(t.split(";")), a = o.next(); !a.done; a = o.next()) {
                var s = a.value
                  , c = s.indexOf("=")
                  , l = Object(i.f)(-1 == c ? [s, ""] : [s.slice(0, c), s.slice(c + 1)], 2)
                  , u = l[0]
                  , d = l[1];
                if (u.trim() === e)
                    return decodeURIComponent(d)
            }
        } catch (t) {
            n = {
                error: t
            }
        } finally {
            try {
                a && !a.done && (r = o.return) && r.call(o)
            } finally {
                if (n)
                    throw n.error
            }
        }
        return null
    }
    var Dt = function() {
        function t(t, e, n, i) {
            this._iterableDiffers = t,
            this._keyValueDiffers = e,
            this._ngEl = n,
            this._renderer = i,
            this._iterableDiffer = null,
            this._keyValueDiffer = null,
            this._initialClasses = [],
            this._rawClass = null
        }
        return Object.defineProperty(t.prototype, "klass", {
            set: function(t) {
                this._removeClasses(this._initialClasses),
                this._initialClasses = "string" == typeof t ? t.split(/\s+/) : [],
                this._applyClasses(this._initialClasses),
                this._applyClasses(this._rawClass)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "ngClass", {
            set: function(t) {
                this._removeClasses(this._rawClass),
                this._applyClasses(this._initialClasses),
                this._iterableDiffer = null,
                this._keyValueDiffer = null,
                this._rawClass = "string" == typeof t ? t.split(/\s+/) : t,
                this._rawClass && (Object(r["ɵisListLikeIterable"])(this._rawClass) ? this._iterableDiffer = this._iterableDiffers.find(this._rawClass).create() : this._keyValueDiffer = this._keyValueDiffers.find(this._rawClass).create())
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.ngDoCheck = function() {
            if (this._iterableDiffer) {
                var t = this._iterableDiffer.diff(this._rawClass);
                t && this._applyIterableChanges(t)
            } else if (this._keyValueDiffer) {
                var e = this._keyValueDiffer.diff(this._rawClass);
                e && this._applyKeyValueChanges(e)
            }
        }
        ,
        t.prototype._applyKeyValueChanges = function(t) {
            var e = this;
            t.forEachAddedItem((function(t) {
                return e._toggleClass(t.key, t.currentValue)
            }
            )),
            t.forEachChangedItem((function(t) {
                return e._toggleClass(t.key, t.currentValue)
            }
            )),
            t.forEachRemovedItem((function(t) {
                t.previousValue && e._toggleClass(t.key, !1)
            }
            ))
        }
        ,
        t.prototype._applyIterableChanges = function(t) {
            var e = this;
            t.forEachAddedItem((function(t) {
                if ("string" != typeof t.item)
                    throw new Error("NgClass can only toggle CSS classes expressed as strings, got " + Object(r["ɵstringify"])(t.item));
                e._toggleClass(t.item, !0)
            }
            )),
            t.forEachRemovedItem((function(t) {
                return e._toggleClass(t.item, !1)
            }
            ))
        }
        ,
        t.prototype._applyClasses = function(t) {
            var e = this;
            t && (Array.isArray(t) || t instanceof Set ? t.forEach((function(t) {
                return e._toggleClass(t, !0)
            }
            )) : Object.keys(t).forEach((function(n) {
                return e._toggleClass(n, !!t[n])
            }
            )))
        }
        ,
        t.prototype._removeClasses = function(t) {
            var e = this;
            t && (Array.isArray(t) || t instanceof Set ? t.forEach((function(t) {
                return e._toggleClass(t, !1)
            }
            )) : Object.keys(t).forEach((function(t) {
                return e._toggleClass(t, !1)
            }
            )))
        }
        ,
        t.prototype._toggleClass = function(t, e) {
            var n = this;
            (t = t.trim()) && t.split(/\s+/g).forEach((function(t) {
                e ? n._renderer.addClass(n._ngEl.nativeElement, t) : n._renderer.removeClass(n._ngEl.nativeElement, t)
            }
            ))
        }
        ,
        Object(i.b)([Object(r.Input)("class"), Object(i.d)("design:type", String), Object(i.d)("design:paramtypes", [String])], t.prototype, "klass", null),
        Object(i.b)([Object(r.Input)("ngClass"), Object(i.d)("design:type", Object), Object(i.d)("design:paramtypes", [Object])], t.prototype, "ngClass", null),
        (t = Object(i.b)([Object(i.d)("design:paramtypes", [r.IterableDiffers, r.KeyValueDiffers, r.ElementRef, r.Renderer2])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.IterableDiffers),r["ɵɵdirectiveInject"](r.KeyValueDiffers),r["ɵɵdirectiveInject"](r.ElementRef),r["ɵɵdirectiveInject"](r.Renderer2))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "ngClass", ""]],
            inputs: {
                klass: ["class", "klass"],
                ngClass: "ngClass"
            }
        }),
        t
    }()
      , Rt = function() {
        function t(t) {
            this._viewContainerRef = t,
            this._componentRef = null,
            this._moduleRef = null
        }
        return t.prototype.ngOnChanges = function(t) {
            if (this._viewContainerRef.clear(),
            this._componentRef = null,
            this.ngComponentOutlet) {
                var e = this.ngComponentOutletInjector || this._viewContainerRef.parentInjector;
                if (t.ngComponentOutletNgModuleFactory)
                    if (this._moduleRef && this._moduleRef.destroy(),
                    this.ngComponentOutletNgModuleFactory) {
                        var n = e.get(r.NgModuleRef);
                        this._moduleRef = this.ngComponentOutletNgModuleFactory.create(n.injector)
                    } else
                        this._moduleRef = null;
                var i = (this._moduleRef ? this._moduleRef.componentFactoryResolver : e.get(r.ComponentFactoryResolver)).resolveComponentFactory(this.ngComponentOutlet);
                this._componentRef = this._viewContainerRef.createComponent(i, this._viewContainerRef.length, e, this.ngComponentOutletContent)
            }
        }
        ,
        t.prototype.ngOnDestroy = function() {
            this._moduleRef && this._moduleRef.destroy()
        }
        ,
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", r.Type)], t.prototype, "ngComponentOutlet", void 0),
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", r.Injector)], t.prototype, "ngComponentOutletInjector", void 0),
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", Array)], t.prototype, "ngComponentOutletContent", void 0),
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", r.NgModuleFactory)], t.prototype, "ngComponentOutletNgModuleFactory", void 0),
        (t = Object(i.b)([Object(i.d)("design:paramtypes", [r.ViewContainerRef])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.ViewContainerRef))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "ngComponentOutlet", ""]],
            inputs: {
                ngComponentOutlet: "ngComponentOutlet",
                ngComponentOutletInjector: "ngComponentOutletInjector",
                ngComponentOutletContent: "ngComponentOutletContent",
                ngComponentOutletNgModuleFactory: "ngComponentOutletNgModuleFactory"
            },
            features: [r["ɵɵNgOnChangesFeature"]]
        }),
        t
    }()
      , Lt = function() {
        function t(t, e, n, i) {
            this.$implicit = t,
            this.ngForOf = e,
            this.index = n,
            this.count = i
        }
        return Object.defineProperty(t.prototype, "first", {
            get: function() {
                return 0 === this.index
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "last", {
            get: function() {
                return this.index === this.count - 1
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "even", {
            get: function() {
                return this.index % 2 == 0
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "odd", {
            get: function() {
                return !this.even
            },
            enumerable: !0,
            configurable: !0
        }),
        t
    }()
      , Nt = function() {
        function t(t, e, n) {
            this._viewContainer = t,
            this._template = e,
            this._differs = n,
            this._ngForOf = null,
            this._ngForOfDirty = !0,
            this._differ = null
        }
        return Object.defineProperty(t.prototype, "ngForOf", {
            set: function(t) {
                this._ngForOf = t,
                this._ngForOfDirty = !0
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "ngForTrackBy", {
            get: function() {
                return this._trackByFn
            },
            set: function(t) {
                Object(r.isDevMode)() && null != t && "function" != typeof t && console && console.warn && console.warn("trackBy must be a function, but received " + JSON.stringify(t) + ". See https://angular.io/api/common/NgForOf#change-propagation for more information."),
                this._trackByFn = t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "ngForTemplate", {
            set: function(t) {
                t && (this._template = t)
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.ngDoCheck = function() {
            if (this._ngForOfDirty) {
                this._ngForOfDirty = !1;
                var t = this._ngForOf;
                if (!this._differ && t)
                    try {
                        this._differ = this._differs.find(t).create(this.ngForTrackBy)
                    } catch (n) {
                        throw new Error("Cannot find a differ supporting object '" + t + "' of type '" + ((e = t).name || typeof e) + "'. NgFor only supports binding to Iterables such as Arrays.")
                    }
            }
            var e;
            /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
            if (this._differ) {
                var n = this._differ.diff(this._ngForOf);
                n && this._applyChanges(n)
            }
        }
        ,
        t.prototype._applyChanges = function(t) {
            var e = this
              , n = [];
            t.forEachOperation((function(t, i, r) {
                if (null == t.previousIndex) {
                    var o = e._viewContainer.createEmbeddedView(e._template, new Lt(null,e._ngForOf,-1,-1), null === r ? void 0 : r)
                      , a = new jt(t,o);
                    n.push(a)
                } else if (null == r)
                    e._viewContainer.remove(null === i ? void 0 : i);
                else if (null !== i) {
                    o = e._viewContainer.get(i);
                    e._viewContainer.move(o, r);
                    a = new jt(t,o);
                    n.push(a)
                }
            }
            ));
            for (var i = 0; i < n.length; i++)
                this._perViewChange(n[i].view, n[i].record);
            i = 0;
            for (var r = this._viewContainer.length; i < r; i++) {
                var o = this._viewContainer.get(i);
                o.context.index = i,
                o.context.count = r,
                o.context.ngForOf = this._ngForOf
            }
            t.forEachIdentityChange((function(t) {
                e._viewContainer.get(t.currentIndex).context.$implicit = t.item
            }
            ))
        }
        ,
        t.prototype._perViewChange = function(t, e) {
            t.context.$implicit = e.item
        }
        ,
        t.ngTemplateContextGuard = function(t, e) {
            return !0
        }
        ,
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", Object), Object(i.d)("design:paramtypes", [Object])], t.prototype, "ngForOf", null),
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", Function), Object(i.d)("design:paramtypes", [Function])], t.prototype, "ngForTrackBy", null),
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", r.TemplateRef), Object(i.d)("design:paramtypes", [r.TemplateRef])], t.prototype, "ngForTemplate", null),
        (t = Object(i.b)([Object(i.d)("design:paramtypes", [r.ViewContainerRef, r.TemplateRef, r.IterableDiffers])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.ViewContainerRef),r["ɵɵdirectiveInject"](r.TemplateRef),r["ɵɵdirectiveInject"](r.IterableDiffers))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "ngFor", "", "ngForOf", ""]],
            inputs: {
                ngForOf: "ngForOf",
                ngForTrackBy: "ngForTrackBy",
                ngForTemplate: "ngForTemplate"
            }
        }),
        t
    }()
      , jt = function(t, e) {
        this.record = t,
        this.view = e
    };
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var Vt = function() {
        function t(t, e) {
            this._viewContainer = t,
            this._context = new Ft,
            this._thenTemplateRef = null,
            this._elseTemplateRef = null,
            this._thenViewRef = null,
            this._elseViewRef = null,
            this._thenTemplateRef = e
        }
        return Object.defineProperty(t.prototype, "ngIf", {
            set: function(t) {
                this._context.$implicit = this._context.ngIf = t,
                this._updateView()
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "ngIfThen", {
            set: function(t) {
                Ut("ngIfThen", t),
                this._thenTemplateRef = t,
                this._thenViewRef = null,
                this._updateView()
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "ngIfElse", {
            set: function(t) {
                Ut("ngIfElse", t),
                this._elseTemplateRef = t,
                this._elseViewRef = null,
                this._updateView()
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype._updateView = function() {
            this._context.$implicit ? this._thenViewRef || (this._viewContainer.clear(),
            this._elseViewRef = null,
            this._thenTemplateRef && (this._thenViewRef = this._viewContainer.createEmbeddedView(this._thenTemplateRef, this._context))) : this._elseViewRef || (this._viewContainer.clear(),
            this._thenViewRef = null,
            this._elseTemplateRef && (this._elseViewRef = this._viewContainer.createEmbeddedView(this._elseTemplateRef, this._context)))
        }
        ,
        t.ngTemplateContextGuard = function(t, e) {
            return !0
        }
        ,
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", Object), Object(i.d)("design:paramtypes", [Object])], t.prototype, "ngIf", null),
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", Object), Object(i.d)("design:paramtypes", [Object])], t.prototype, "ngIfThen", null),
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", Object), Object(i.d)("design:paramtypes", [Object])], t.prototype, "ngIfElse", null),
        (t = Object(i.b)([Object(i.d)("design:paramtypes", [r.ViewContainerRef, r.TemplateRef])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.ViewContainerRef),r["ɵɵdirectiveInject"](r.TemplateRef))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "ngIf", ""]],
            inputs: {
                ngIf: "ngIf",
                ngIfThen: "ngIfThen",
                ngIfElse: "ngIfElse"
            }
        }),
        t
    }()
      , Ft = function() {
        this.$implicit = null,
        this.ngIf = null
    };
    function Ut(t, e) {
        if (!!(e && !e.createEmbeddedView))
            throw new Error(t + " must be a TemplateRef, but received '" + Object(r["ɵstringify"])(e) + "'.")
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var Bt = function() {
        function t(t, e) {
            this._viewContainerRef = t,
            this._templateRef = e,
            this._created = !1
        }
        return t.prototype.create = function() {
            this._created = !0,
            this._viewContainerRef.createEmbeddedView(this._templateRef)
        }
        ,
        t.prototype.destroy = function() {
            this._created = !1,
            this._viewContainerRef.clear()
        }
        ,
        t.prototype.enforceState = function(t) {
            t && !this._created ? this.create() : !t && this._created && this.destroy()
        }
        ,
        t
    }()
      , zt = function() {
        function t() {
            this._defaultUsed = !1,
            this._caseCount = 0,
            this._lastCaseCheckIndex = 0,
            this._lastCasesMatched = !1
        }
        return Object.defineProperty(t.prototype, "ngSwitch", {
            set: function(t) {
                this._ngSwitch = t,
                0 === this._caseCount && this._updateDefaultCases(!0)
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype._addCase = function() {
            return this._caseCount++
        }
        ,
        t.prototype._addDefault = function(t) {
            this._defaultViews || (this._defaultViews = []),
            this._defaultViews.push(t)
        }
        ,
        t.prototype._matchCase = function(t) {
            var e = t == this._ngSwitch;
            return this._lastCasesMatched = this._lastCasesMatched || e,
            this._lastCaseCheckIndex++,
            this._lastCaseCheckIndex === this._caseCount && (this._updateDefaultCases(!this._lastCasesMatched),
            this._lastCaseCheckIndex = 0,
            this._lastCasesMatched = !1),
            e
        }
        ,
        t.prototype._updateDefaultCases = function(t) {
            if (this._defaultViews && t !== this._defaultUsed) {
                this._defaultUsed = t;
                for (var e = 0; e < this._defaultViews.length; e++) {
                    this._defaultViews[e].enforceState(t)
                }
            }
        }
        ,
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", Object), Object(i.d)("design:paramtypes", [Object])], t.prototype, "ngSwitch", null),
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "ngSwitch", ""]],
            inputs: {
                ngSwitch: "ngSwitch"
            }
        }),
        t
    }()
      , Gt = function() {
        function t(t, e, n) {
            this.ngSwitch = n,
            n._addCase(),
            this._view = new Bt(t,e)
        }
        return t.prototype.ngDoCheck = function() {
            this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase))
        }
        ,
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", Object)], t.prototype, "ngSwitchCase", void 0),
        (t = Object(i.b)([Object(i.e)(2, Object(r.Host)()), Object(i.d)("design:paramtypes", [r.ViewContainerRef, r.TemplateRef, zt])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.ViewContainerRef),r["ɵɵdirectiveInject"](r.TemplateRef),r["ɵɵdirectiveInject"](zt, 1))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "ngSwitchCase", ""]],
            inputs: {
                ngSwitchCase: "ngSwitchCase"
            }
        }),
        t
    }()
      , Ht = function() {
        function t(t, e, n) {
            n._addDefault(new Bt(t,e))
        }
        return (t = Object(i.b)([Object(i.e)(2, Object(r.Host)()), Object(i.d)("design:paramtypes", [r.ViewContainerRef, r.TemplateRef, zt])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.ViewContainerRef),r["ɵɵdirectiveInject"](r.TemplateRef),r["ɵɵdirectiveInject"](zt, 1))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "ngSwitchDefault", ""]]
        }),
        t
    }()
      , Wt = function() {
        function t(t) {
            this._localization = t,
            this._caseViews = {}
        }
        return Object.defineProperty(t.prototype, "ngPlural", {
            set: function(t) {
                this._switchValue = t,
                this._updateView()
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.addCase = function(t, e) {
            this._caseViews[t] = e
        }
        ,
        t.prototype._updateView = function() {
            this._clearViews();
            var t = Object.keys(this._caseViews)
              , e = _t(this._switchValue, t, this._localization);
            this._activateView(this._caseViews[e])
        }
        ,
        t.prototype._clearViews = function() {
            this._activeView && this._activeView.destroy()
        }
        ,
        t.prototype._activateView = function(t) {
            t && (this._activeView = t,
            this._activeView.create())
        }
        ,
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", Number), Object(i.d)("design:paramtypes", [Number])], t.prototype, "ngPlural", null),
        (t = Object(i.b)([Object(i.d)("design:paramtypes", [Ot])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](Ot))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "ngPlural", ""]],
            inputs: {
                ngPlural: "ngPlural"
            }
        }),
        t
    }()
      , qt = function() {
        function t(t, e, n, i) {
            this.value = t;
            var r = !isNaN(Number(t));
            i.addCase(r ? "=" + t : t, new Bt(n,e))
        }
        return (t = Object(i.b)([Object(i.e)(0, Object(r.Attribute)("ngPluralCase")), Object(i.e)(3, Object(r.Host)()), Object(i.d)("design:paramtypes", [String, r.TemplateRef, r.ViewContainerRef, Wt])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵinjectAttribute"]("ngPluralCase"),r["ɵɵdirectiveInject"](r.TemplateRef),r["ɵɵdirectiveInject"](r.ViewContainerRef),r["ɵɵdirectiveInject"](Wt, 1))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "ngPluralCase", ""]]
        }),
        t
    }()
      , Xt = function() {
        function t(t, e, n) {
            this._ngEl = t,
            this._differs = e,
            this._renderer = n,
            this._ngStyle = null,
            this._differ = null
        }
        return Object.defineProperty(t.prototype, "ngStyle", {
            set: function(t) {
                this._ngStyle = t,
                !this._differ && t && (this._differ = this._differs.find(t).create())
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.ngDoCheck = function() {
            if (this._differ) {
                var t = this._differ.diff(this._ngStyle);
                t && this._applyChanges(t)
            }
        }
        ,
        t.prototype._setStyle = function(t, e) {
            var n = Object(i.f)(t.split("."), 2)
              , r = n[0]
              , o = n[1];
            null != (e = null != e && o ? "" + e + o : e) ? this._renderer.setStyle(this._ngEl.nativeElement, r, e) : this._renderer.removeStyle(this._ngEl.nativeElement, r)
        }
        ,
        t.prototype._applyChanges = function(t) {
            var e = this;
            t.forEachRemovedItem((function(t) {
                return e._setStyle(t.key, null)
            }
            )),
            t.forEachAddedItem((function(t) {
                return e._setStyle(t.key, t.currentValue)
            }
            )),
            t.forEachChangedItem((function(t) {
                return e._setStyle(t.key, t.currentValue)
            }
            ))
        }
        ,
        Object(i.b)([Object(r.Input)("ngStyle"), Object(i.d)("design:type", Object), Object(i.d)("design:paramtypes", [Object])], t.prototype, "ngStyle", null),
        (t = Object(i.b)([Object(i.d)("design:paramtypes", [r.ElementRef, r.KeyValueDiffers, r.Renderer2])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.ElementRef),r["ɵɵdirectiveInject"](r.KeyValueDiffers),r["ɵɵdirectiveInject"](r.Renderer2))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "ngStyle", ""]],
            inputs: {
                ngStyle: "ngStyle"
            }
        }),
        t
    }()
      , Yt = function() {
        function t(t) {
            this._viewContainerRef = t,
            this._viewRef = null,
            this.ngTemplateOutletContext = null,
            this.ngTemplateOutlet = null
        }
        return t.prototype.ngOnChanges = function(t) {
            if (this._shouldRecreateView(t)) {
                var e = this._viewContainerRef;
                this._viewRef && e.remove(e.indexOf(this._viewRef)),
                this._viewRef = this.ngTemplateOutlet ? e.createEmbeddedView(this.ngTemplateOutlet, this.ngTemplateOutletContext) : null
            } else
                this._viewRef && this.ngTemplateOutletContext && this._updateExistingContext(this.ngTemplateOutletContext)
        }
        ,
        t.prototype._shouldRecreateView = function(t) {
            var e = t.ngTemplateOutletContext;
            return !!t.ngTemplateOutlet || e && this._hasContextShapeChanged(e)
        }
        ,
        t.prototype._hasContextShapeChanged = function(t) {
            var e, n, r = Object.keys(t.previousValue || {}), o = Object.keys(t.currentValue || {});
            if (r.length === o.length) {
                try {
                    for (var a = Object(i.j)(o), s = a.next(); !s.done; s = a.next()) {
                        var c = s.value;
                        if (-1 === r.indexOf(c))
                            return !0
                    }
                } catch (t) {
                    e = {
                        error: t
                    }
                } finally {
                    try {
                        s && !s.done && (n = a.return) && n.call(a)
                    } finally {
                        if (e)
                            throw e.error
                    }
                }
                return !1
            }
            return !0
        }
        ,
        t.prototype._updateExistingContext = function(t) {
            var e, n;
            try {
                for (var r = Object(i.j)(Object.keys(t)), o = r.next(); !o.done; o = r.next()) {
                    var a = o.value;
                    this._viewRef.context[a] = this.ngTemplateOutletContext[a]
                }
            } catch (t) {
                e = {
                    error: t
                }
            } finally {
                try {
                    o && !o.done && (n = r.return) && n.call(r)
                } finally {
                    if (e)
                        throw e.error
                }
            }
        }
        ,
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", Object)], t.prototype, "ngTemplateOutletContext", void 0),
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", Object)], t.prototype, "ngTemplateOutlet", void 0),
        (t = Object(i.b)([Object(i.d)("design:paramtypes", [r.ViewContainerRef])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.ViewContainerRef))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "ngTemplateOutlet", ""]],
            inputs: {
                ngTemplateOutletContext: "ngTemplateOutletContext",
                ngTemplateOutlet: "ngTemplateOutlet"
            },
            features: [r["ɵɵNgOnChangesFeature"]]
        }),
        t
    }()
      , Kt = [Dt, Rt, Nt, Vt, Yt, Xt, zt, Gt, Ht, Wt, qt];
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function Zt(t, e) {
        return Error("InvalidPipeArgument: '" + e + "' for pipe '" + Object(r["ɵstringify"])(t) + "'")
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var Jt = function() {
        function t() {}
        return t.prototype.createSubscription = function(t, e) {
            return t.subscribe({
                next: e,
                error: function(t) {
                    throw t
                }
            })
        }
        ,
        t.prototype.dispose = function(t) {
            t.unsubscribe()
        }
        ,
        t.prototype.onDestroy = function(t) {
            t.unsubscribe()
        }
        ,
        t
    }()
      , Qt = new (function() {
        function t() {}
        return t.prototype.createSubscription = function(t, e) {
            return t.then(e, (function(t) {
                throw t
            }
            ))
        }
        ,
        t.prototype.dispose = function(t) {}
        ,
        t.prototype.onDestroy = function(t) {}
        ,
        t
    }())
      , $t = new Jt
      , te = function() {
        function t(t) {
            this._ref = t,
            this._latestValue = null,
            this._latestReturnedValue = null,
            this._subscription = null,
            this._obj = null,
            this._strategy = null
        }
        var e;
        return e = t,
        t.prototype.ngOnDestroy = function() {
            this._subscription && this._dispose()
        }
        ,
        t.prototype.transform = function(t) {
            return this._obj ? t !== this._obj ? (this._dispose(),
            this.transform(t)) : Object(r["ɵlooseIdentical"])(this._latestValue, this._latestReturnedValue) ? this._latestReturnedValue : (this._latestReturnedValue = this._latestValue,
            r.WrappedValue.wrap(this._latestValue)) : (t && this._subscribe(t),
            this._latestReturnedValue = this._latestValue,
            this._latestValue)
        }
        ,
        t.prototype._subscribe = function(t) {
            var e = this;
            this._obj = t,
            this._strategy = this._selectStrategy(t),
            this._subscription = this._strategy.createSubscription(t, (function(n) {
                return e._updateLatestValue(t, n)
            }
            ))
        }
        ,
        t.prototype._selectStrategy = function(t) {
            if (Object(r["ɵisPromise"])(t))
                return Qt;
            if (Object(r["ɵisObservable"])(t))
                return $t;
            throw Zt(e, t)
        }
        ,
        t.prototype._dispose = function() {
            this._strategy.dispose(this._subscription),
            this._latestValue = null,
            this._latestReturnedValue = null,
            this._subscription = null,
            this._obj = null
        }
        ,
        t.prototype._updateLatestValue = function(t, e) {
            t === this._obj && (this._latestValue = e,
            this._ref.markForCheck())
        }
        ,
        (t = e = Object(i.b)([Object(i.d)("design:paramtypes", [r.ChangeDetectorRef])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵinjectPipeChangeDetectorRef"]())
        }
        ,
        t.ɵpipe = r["ɵɵdefinePipe"]({
            name: "async",
            type: t,
            pure: !1
        }),
        t
    }()
      , ee = function() {
        function t() {}
        var e;
        return e = t,
        t.prototype.transform = function(t) {
            if (!t)
                return t;
            if ("string" != typeof t)
                throw Zt(e, t);
            return t.toLowerCase()
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵpipe = r["ɵɵdefinePipe"]({
            name: "lowercase",
            type: t,
            pure: !0
        }),
        t
    }()
      , ne = /(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D])\S*/g
      , ie = function() {
        function t() {}
        var e;
        return e = t,
        t.prototype.transform = function(t) {
            if (!t)
                return t;
            if ("string" != typeof t)
                throw Zt(e, t);
            return t.replace(ne, (function(t) {
                return t[0].toUpperCase() + t.substr(1).toLowerCase()
            }
            ))
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵpipe = r["ɵɵdefinePipe"]({
            name: "titlecase",
            type: t,
            pure: !0
        }),
        t
    }()
      , re = function() {
        function t() {}
        var e;
        return e = t,
        t.prototype.transform = function(t) {
            if (!t)
                return t;
            if ("string" != typeof t)
                throw Zt(e, t);
            return t.toUpperCase()
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵpipe = r["ɵɵdefinePipe"]({
            name: "uppercase",
            type: t,
            pure: !0
        }),
        t
    }()
      , oe = function() {
        function t(t) {
            this.locale = t
        }
        var e;
        return e = t,
        t.prototype.transform = function(t, n, i, r) {
            if (void 0 === n && (n = "mediumDate"),
            null == t || "" === t || t != t)
                return null;
            try {
                return dt(t, n, r || this.locale, i)
            } catch (t) {
                throw Zt(e, t.message)
            }
        }
        ,
        (t = e = Object(i.b)([Object(i.e)(0, Object(r.Inject)(r.LOCALE_ID)), Object(i.d)("design:paramtypes", [String])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.LOCALE_ID))
        }
        ,
        t.ɵpipe = r["ɵɵdefinePipe"]({
            name: "date",
            type: t,
            pure: !0
        }),
        t
    }()
      , ae = /#/g
      , se = function() {
        function t(t) {
            this._localization = t
        }
        var e;
        return e = t,
        t.prototype.transform = function(t, n, i) {
            if (null == t)
                return "";
            if ("object" != typeof n || null === n)
                throw Zt(e, n);
            return n[_t(t, Object.keys(n), this._localization, i)].replace(ae, t.toString())
        }
        ,
        (t = e = Object(i.b)([Object(i.d)("design:paramtypes", [Ot])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](Ot))
        }
        ,
        t.ɵpipe = r["ɵɵdefinePipe"]({
            name: "i18nPlural",
            type: t,
            pure: !0
        }),
        t
    }()
      , ce = function() {
        function t() {}
        var e;
        return e = t,
        t.prototype.transform = function(t, n) {
            if (null == t)
                return "";
            if ("object" != typeof n || "string" != typeof t)
                throw Zt(e, n);
            return n.hasOwnProperty(t) ? n[t] : n.hasOwnProperty("other") ? n.other : ""
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵpipe = r["ɵɵdefinePipe"]({
            name: "i18nSelect",
            type: t,
            pure: !0
        }),
        t
    }()
      , le = function() {
        function t() {}
        return t.prototype.transform = function(t) {
            return JSON.stringify(t, null, 2)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵpipe = r["ɵɵdefinePipe"]({
            name: "json",
            type: t,
            pure: !1
        }),
        t
    }();
    var ue = function() {
        function t(t) {
            this.differs = t,
            this.keyValues = []
        }
        return t.prototype.transform = function(t, e) {
            var n = this;
            if (void 0 === e && (e = de),
            !t || !(t instanceof Map) && "object" != typeof t)
                return null;
            this.differ || (this.differ = this.differs.find(t).create());
            var i = this.differ.diff(t);
            return i && (this.keyValues = [],
            i.forEachItem((function(t) {
                /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
                var e, i;
                n.keyValues.push((e = t.key,
                i = t.currentValue,
                {
                    key: e,
                    value: i
                }))
            }
            )),
            this.keyValues.sort(e)),
            this.keyValues
        }
        ,
        (t = Object(i.b)([Object(i.d)("design:paramtypes", [r.KeyValueDiffers])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.KeyValueDiffers))
        }
        ,
        t.ɵpipe = r["ɵɵdefinePipe"]({
            name: "keyvalue",
            type: t,
            pure: !1
        }),
        t
    }();
    function de(t, e) {
        var n = t.key
          , i = e.key;
        if (n === i)
            return 0;
        if (void 0 === n)
            return 1;
        if (void 0 === i)
            return -1;
        if (null === n)
            return 1;
        if (null === i)
            return -1;
        if ("string" == typeof n && "string" == typeof i)
            return n < i ? -1 : 1;
        if ("number" == typeof n && "number" == typeof i)
            return n - i;
        if ("boolean" == typeof n && "boolean" == typeof i)
            return n < i ? -1 : 1;
        var r = String(n)
          , o = String(i);
        return r == o ? 0 : r < o ? -1 : 1
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var pe = function() {
        function t(t) {
            this._locale = t
        }
        var e;
        return e = t,
        t.prototype.transform = function(t, n, i) {
            if (me(t))
                return null;
            i = i || this._locale;
            try {
                return Ct(ge(t), i, n)
            } catch (t) {
                throw Zt(e, t.message)
            }
        }
        ,
        (t = e = Object(i.b)([Object(i.e)(0, Object(r.Inject)(r.LOCALE_ID)), Object(i.d)("design:paramtypes", [String])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.LOCALE_ID))
        }
        ,
        t.ɵpipe = r["ɵɵdefinePipe"]({
            name: "number",
            type: t,
            pure: !0
        }),
        t
    }()
      , he = function() {
        function t(t) {
            this._locale = t
        }
        var e;
        return e = t,
        t.prototype.transform = function(t, n, i) {
            if (me(t))
                return null;
            i = i || this._locale;
            try {
                return Et(ge(t), i, n)
            } catch (t) {
                throw Zt(e, t.message)
            }
        }
        ,
        (t = e = Object(i.b)([Object(i.e)(0, Object(r.Inject)(r.LOCALE_ID)), Object(i.d)("design:paramtypes", [String])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.LOCALE_ID))
        }
        ,
        t.ɵpipe = r["ɵɵdefinePipe"]({
            name: "percent",
            type: t,
            pure: !0
        }),
        t
    }()
      , fe = function() {
        function t(t, e) {
            void 0 === e && (e = "USD"),
            this._locale = t,
            this._defaultCurrencyCode = e
        }
        var e;
        return e = t,
        t.prototype.transform = function(t, n, i, r, o) {
            if (void 0 === i && (i = "symbol"),
            me(t))
                return null;
            o = o || this._locale,
            "boolean" == typeof i && (console && console.warn && console.warn('Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are "code", "symbol" or "symbol-narrow".'),
            i = i ? "symbol" : "code");
            var a = n || this._defaultCurrencyCode;
            "code" !== i && (a = "symbol" === i || "symbol-narrow" === i ? it(a, "symbol" === i ? "wide" : "narrow", o) : i);
            try {
                return Mt(ge(t), o, a, n, r)
            } catch (t) {
                throw Zt(e, t.message)
            }
        }
        ,
        (t = e = Object(i.b)([Object(i.e)(0, Object(r.Inject)(r.LOCALE_ID)), Object(i.e)(1, Object(r.Inject)(r.DEFAULT_CURRENCY_CODE)), Object(i.d)("design:paramtypes", [String, String])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.LOCALE_ID),r["ɵɵdirectiveInject"](r.DEFAULT_CURRENCY_CODE))
        }
        ,
        t.ɵpipe = r["ɵɵdefinePipe"]({
            name: "currency",
            type: t,
            pure: !0
        }),
        t
    }();
    function me(t) {
        return null == t || "" === t || t != t
    }
    function ge(t) {
        if ("string" == typeof t && !isNaN(Number(t) - parseFloat(t)))
            return Number(t);
        if ("number" != typeof t)
            throw new Error(t + " is not a number");
        return t
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var ve = function() {
        function t() {}
        var e;
        return e = t,
        t.prototype.transform = function(t, n, i) {
            if (null == t)
                return t;
            if (!this.supports(t))
                throw Zt(e, t);
            return t.slice(n, i)
        }
        ,
        t.prototype.supports = function(t) {
            return "string" == typeof t || Array.isArray(t)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵpipe = r["ɵɵdefinePipe"]({
            name: "slice",
            type: t,
            pure: !1
        }),
        t
    }()
      , ye = [te, re, ee, le, ve, pe, he, ie, fe, oe, se, ce, ue]
      , be = function() {
        function t() {}
        return t.ɵmod = r["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = r["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            },
            providers: [{
                provide: Ot,
                useClass: Pt
            }]
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && r["ɵɵsetNgModuleScope"](t, {
            declarations: [Dt, Rt, Nt, Vt, Yt, Xt, zt, Gt, Ht, Wt, qt, te, re, ee, le, ve, pe, he, ie, fe, oe, se, ce, ue],
            exports: [Dt, Rt, Nt, Vt, Yt, Xt, zt, Gt, Ht, Wt, qt, te, re, ee, le, ve, pe, he, ie, fe, oe, se, ce, ue]
        }),
        t
    }()
      , we = "browser"
      , Se = "server"
      , xe = "browserWorkerApp"
      , Me = "browserWorkerUi";
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function Ee(t) {
        return t === we
    }
    function Ce(t) {
        return t === Se
    }
    function Ae(t) {
        return t === xe
    }
    function Te(t) {
        return t === Me
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var Oe = new r.Version("9.1.9")
      , _e = function() {
        function t() {}
        return t.ɵprov = Object(r["ɵɵdefineInjectable"])({
            token: t,
            providedIn: "root",
            factory: function() {
                return new Pe(Object(r["ɵɵinject"])(l),window,Object(r["ɵɵinject"])(r.ErrorHandler))
            }
        }),
        t
    }()
      , Pe = function() {
        function t(t, e, n) {
            this.document = t,
            this.window = e,
            this.errorHandler = n,
            this.offset = function() {
                return [0, 0]
            }
        }
        return t.prototype.setOffset = function(t) {
            Array.isArray(t) ? this.offset = function() {
                return t
            }
            : this.offset = t
        }
        ,
        t.prototype.getScrollPosition = function() {
            return this.supportScrollRestoration() ? [this.window.scrollX, this.window.scrollY] : [0, 0]
        }
        ,
        t.prototype.scrollToPosition = function(t) {
            this.supportScrollRestoration() && this.window.scrollTo(t[0], t[1])
        }
        ,
        t.prototype.scrollToAnchor = function(t) {
            if (this.supportScrollRestoration()) {
                t = this.window.CSS && this.window.CSS.escape ? this.window.CSS.escape(t) : t.replace(/(\"|\'\ |:|\.|\[|\]|,|=)/g, "\\$1");
                try {
                    var e = this.document.querySelector("#" + t);
                    if (e)
                        return void this.scrollToElement(e);
                    var n = this.document.querySelector("[name='" + t + "']");
                    if (n)
                        return void this.scrollToElement(n)
                } catch (t) {
                    this.errorHandler.handleError(t)
                }
            }
        }
        ,
        t.prototype.setHistoryScrollRestoration = function(t) {
            if (this.supportScrollRestoration()) {
                var e = this.window.history;
                e && e.scrollRestoration && (e.scrollRestoration = t)
            }
        }
        ,
        t.prototype.scrollToElement = function(t) {
            var e = t.getBoundingClientRect()
              , n = e.left + this.window.pageXOffset
              , i = e.top + this.window.pageYOffset
              , r = this.offset();
            this.window.scrollTo(n - r[0], i - r[1])
        }
        ,
        t.prototype.supportScrollRestoration = function() {
            try {
                return !!this.window && !!this.window.scrollTo
            } catch (t) {
                return !1
            }
        }
        ,
        t
    }()
      , Ie = function() {
        function t() {}
        return t.prototype.setOffset = function(t) {}
        ,
        t.prototype.getScrollPosition = function() {
            return [0, 0]
        }
        ,
        t.prototype.scrollToPosition = function(t) {}
        ,
        t.prototype.scrollToAnchor = function(t) {}
        ,
        t.prototype.setHistoryScrollRestoration = function(t) {}
        ,
        t
    }();
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
}
, function(t, e, n) {
    "use strict";
    var i;
    function r(t, e, n) {
        return e in t ? Object.defineProperty(t, e, {
            value: n,
            enumerable: !0,
            configurable: !0,
            writable: !0
        }) : t[e] = n,
        t
    }
    function o(t) {
        return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
            return typeof t
        }
        : function(t) {
            return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
        }
        )(t)
    }
    function a(t, e) {
        if (!(t instanceof e))
            throw new TypeError("Cannot call a class as a function")
    }
    function s(t, e) {
        if ("function" != typeof e && null !== e)
            throw new TypeError("Super expression must either be null or a function");
        t.prototype = Object.create(e && e.prototype, {
            constructor: {
                value: t,
                writable: !0,
                configurable: !0
            }
        }),
        e && c(t, e)
    }
    function c(t, e) {
        return (c = Object.setPrototypeOf || function(t, e) {
            return t.__proto__ = e,
            t
        }
        )(t, e)
    }
    function l(t) {
        var e = function() {
            if ("undefined" == typeof Reflect || !Reflect.construct)
                return !1;
            if (Reflect.construct.sham)
                return !1;
            if ("function" == typeof Proxy)
                return !0;
            try {
                return Date.prototype.toString.call(Reflect.construct(Date, [], (function() {}
                ))),
                !0
            } catch (t) {
                return !1
            }
        }();
        return function() {
            var n, i = p(t);
            if (e) {
                var r = p(this).constructor;
                n = Reflect.construct(i, arguments, r)
            } else
                n = i.apply(this, arguments);
            return u(this, n)
        }
    }
    function u(t, e) {
        return !e || "object" !== o(e) && "function" != typeof e ? d(t) : e
    }
    function d(t) {
        if (void 0 === t)
            throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
        return t
    }
    function p(t) {
        return (p = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) {
            return t.__proto__ || Object.getPrototypeOf(t)
        }
        )(t)
    }
    n.r(e),
    n.d(e, "ACESFilmicToneMapping", (function() {
        return mt
    }
    )),
    n.d(e, "AddEquation", (function() {
        return j
    }
    )),
    n.d(e, "AddOperation", (function() {
        return lt
    }
    )),
    n.d(e, "AdditiveBlending", (function() {
        return D
    }
    )),
    n.d(e, "AlphaFormat", (function() {
        return Kt
    }
    )),
    n.d(e, "AlwaysDepth", (function() {
        return tt
    }
    )),
    n.d(e, "AlwaysStencilFunc", (function() {
        return Ln
    }
    )),
    n.d(e, "AmbientLight", (function() {
        return wd
    }
    )),
    n.d(e, "AmbientLightProbe", (function() {
        return Gd
    }
    )),
    n.d(e, "AnimationClip", (function() {
        return Tu
    }
    )),
    n.d(e, "AnimationLoader", (function() {
        return Lu
    }
    )),
    n.d(e, "AnimationMixer", (function() {
        return bp
    }
    )),
    n.d(e, "AnimationObjectGroup", (function() {
        return vp
    }
    )),
    n.d(e, "AnimationUtils", (function() {
        return fu
    }
    )),
    n.d(e, "ArcCurve", (function() {
        return Gu
    }
    )),
    n.d(e, "ArrayCamera", (function() {
        return Vs
    }
    )),
    n.d(e, "ArrowHelper", (function() {
        return sh
    }
    )),
    n.d(e, "Audio", (function() {
        return $d
    }
    )),
    n.d(e, "AudioAnalyser", (function() {
        return op
    }
    )),
    n.d(e, "AudioContext", (function() {
        return Vd
    }
    )),
    n.d(e, "AudioListener", (function() {
        return Qd
    }
    )),
    n.d(e, "AudioLoader", (function() {
        return Fd
    }
    )),
    n.d(e, "AxesHelper", (function() {
        return ch
    }
    )),
    n.d(e, "AxisHelper", (function() {
        return yf
    }
    )),
    n.d(e, "BackSide", (function() {
        return T
    }
    )),
    n.d(e, "BasicDepthPacking", (function() {
        return gn
    }
    )),
    n.d(e, "BasicShadowMap", (function() {
        return x
    }
    )),
    n.d(e, "BinaryTextureLoader", (function() {
        return Mf
    }
    )),
    n.d(e, "Bone", (function() {
        return gc
    }
    )),
    n.d(e, "BooleanKeyframeTrack", (function() {
        return wu
    }
    )),
    n.d(e, "BoundingBoxHelper", (function() {
        return bf
    }
    )),
    n.d(e, "Box2", (function() {
        return Op
    }
    )),
    n.d(e, "Box3", (function() {
        return Yi
    }
    )),
    n.d(e, "Box3Helper", (function() {
        return nh
    }
    )),
    n.d(e, "BoxBufferGeometry", (function() {
        return Ao
    }
    )),
    n.d(e, "BoxGeometry", (function() {
        return Co
    }
    )),
    n.d(e, "BoxHelper", (function() {
        return eh
    }
    )),
    n.d(e, "BufferAttribute", (function() {
        return Dr
    }
    )),
    n.d(e, "BufferGeometry", (function() {
        return Qr
    }
    )),
    n.d(e, "BufferGeometryLoader", (function() {
        return Ad
    }
    )),
    n.d(e, "ByteType", (function() {
        return Vt
    }
    )),
    n.d(e, "Cache", (function() {
        return _u
    }
    )),
    n.d(e, "Camera", (function() {
        return Io
    }
    )),
    n.d(e, "CameraHelper", (function() {
        return Qp
    }
    )),
    n.d(e, "CanvasRenderer", (function() {
        return Af
    }
    )),
    n.d(e, "CanvasTexture", (function() {
        return zc
    }
    )),
    n.d(e, "CatmullRomCurve3", (function() {
        return Ku
    }
    )),
    n.d(e, "CineonToneMapping", (function() {
        return ft
    }
    )),
    n.d(e, "CircleBufferGeometry", (function() {
        return eu
    }
    )),
    n.d(e, "CircleGeometry", (function() {
        return tu
    }
    )),
    n.d(e, "ClampToEdgeWrapping", (function() {
        return Ct
    }
    )),
    n.d(e, "Clock", (function() {
        return Xd
    }
    )),
    n.d(e, "ClosedSplineCurve3", (function() {
        return mf
    }
    )),
    n.d(e, "Color", (function() {
        return Er
    }
    )),
    n.d(e, "ColorKeyframeTrack", (function() {
        return Su
    }
    )),
    n.d(e, "CompressedTexture", (function() {
        return Bc
    }
    )),
    n.d(e, "CompressedTextureLoader", (function() {
        return Nu
    }
    )),
    n.d(e, "ConeBufferGeometry", (function() {
        return $l
    }
    )),
    n.d(e, "ConeGeometry", (function() {
        return Ql
    }
    )),
    n.d(e, "CubeCamera", (function() {
        return Do
    }
    )),
    n.d(e, "CubeGeometry", (function() {
        return Co
    }
    )),
    n.d(e, "CubeReflectionMapping", (function() {
        return vt
    }
    )),
    n.d(e, "CubeRefractionMapping", (function() {
        return yt
    }
    )),
    n.d(e, "CubeTexture", (function() {
        return ia
    }
    )),
    n.d(e, "CubeTextureLoader", (function() {
        return Fu
    }
    )),
    n.d(e, "CubeUVReflectionMapping", (function() {
        return xt
    }
    )),
    n.d(e, "CubeUVRefractionMapping", (function() {
        return Mt
    }
    )),
    n.d(e, "CubicBezierCurve", (function() {
        return $u
    }
    )),
    n.d(e, "CubicBezierCurve3", (function() {
        return td
    }
    )),
    n.d(e, "CubicInterpolant", (function() {
        return gu
    }
    )),
    n.d(e, "CullFaceBack", (function() {
        return v
    }
    )),
    n.d(e, "CullFaceFront", (function() {
        return y
    }
    )),
    n.d(e, "CullFaceFrontBack", (function() {
        return b
    }
    )),
    n.d(e, "CullFaceNone", (function() {
        return g
    }
    )),
    n.d(e, "Curve", (function() {
        return Bu
    }
    )),
    n.d(e, "CurvePath", (function() {
        return sd
    }
    )),
    n.d(e, "CustomBlending", (function() {
        return N
    }
    )),
    n.d(e, "CylinderBufferGeometry", (function() {
        return Jl
    }
    )),
    n.d(e, "CylinderGeometry", (function() {
        return Zl
    }
    )),
    n.d(e, "Cylindrical", (function() {
        return Ap
    }
    )),
    n.d(e, "DataTexture", (function() {
        return Lo
    }
    )),
    n.d(e, "DataTexture2DArray", (function() {
        return ra
    }
    )),
    n.d(e, "DataTexture3D", (function() {
        return oa
    }
    )),
    n.d(e, "DataTextureLoader", (function() {
        return ju
    }
    )),
    n.d(e, "DecrementStencilOp", (function() {
        return En
    }
    )),
    n.d(e, "DecrementWrapStencilOp", (function() {
        return An
    }
    )),
    n.d(e, "DefaultLoadingManager", (function() {
        return Iu
    }
    )),
    n.d(e, "DepthFormat", (function() {
        return ee
    }
    )),
    n.d(e, "DepthStencilFormat", (function() {
        return ne
    }
    )),
    n.d(e, "DepthTexture", (function() {
        return Gc
    }
    )),
    n.d(e, "DirectionalLight", (function() {
        return bd
    }
    )),
    n.d(e, "DirectionalLightHelper", (function() {
        return Kp
    }
    )),
    n.d(e, "DirectionalLightShadow", (function() {
        return yd
    }
    )),
    n.d(e, "DiscreteInterpolant", (function() {
        return yu
    }
    )),
    n.d(e, "DodecahedronBufferGeometry", (function() {
        return nl
    }
    )),
    n.d(e, "DodecahedronGeometry", (function() {
        return el
    }
    )),
    n.d(e, "DoubleSide", (function() {
        return O
    }
    )),
    n.d(e, "DstAlphaFactor", (function() {
        return Y
    }
    )),
    n.d(e, "DstColorFactor", (function() {
        return Z
    }
    )),
    n.d(e, "DynamicBufferAttribute", (function() {
        return of
    }
    )),
    n.d(e, "DynamicCopyUsage", (function() {
        return Gn
    }
    )),
    n.d(e, "DynamicDrawUsage", (function() {
        return jn
    }
    )),
    n.d(e, "DynamicReadUsage", (function() {
        return Un
    }
    )),
    n.d(e, "EdgesGeometry", (function() {
        return Kl
    }
    )),
    n.d(e, "EdgesHelper", (function() {
        return wf
    }
    )),
    n.d(e, "EllipseCurve", (function() {
        return zu
    }
    )),
    n.d(e, "EqualDepth", (function() {
        return it
    }
    )),
    n.d(e, "EqualStencilFunc", (function() {
        return Pn
    }
    )),
    n.d(e, "EquirectangularReflectionMapping", (function() {
        return bt
    }
    )),
    n.d(e, "EquirectangularRefractionMapping", (function() {
        return wt
    }
    )),
    n.d(e, "Euler", (function() {
        return yi
    }
    )),
    n.d(e, "EventDispatcher", (function() {
        return Wn
    }
    )),
    n.d(e, "ExtrudeBufferGeometry", (function() {
        return Ll
    }
    )),
    n.d(e, "ExtrudeGeometry", (function() {
        return Rl
    }
    )),
    n.d(e, "Face3", (function() {
        return Or
    }
    )),
    n.d(e, "Face4", (function() {
        return Gh
    }
    )),
    n.d(e, "FaceColors", (function() {
        return Xh
    }
    )),
    n.d(e, "FileLoader", (function() {
        return Ru
    }
    )),
    n.d(e, "FlatShading", (function() {
        return _
    }
    )),
    n.d(e, "Float32Attribute", (function() {
        return hf
    }
    )),
    n.d(e, "Float32BufferAttribute", (function() {
        return Br
    }
    )),
    n.d(e, "Float64Attribute", (function() {
        return ff
    }
    )),
    n.d(e, "Float64BufferAttribute", (function() {
        return zr
    }
    )),
    n.d(e, "FloatType", (function() {
        return Gt
    }
    )),
    n.d(e, "Fog", (function() {
        return Gs
    }
    )),
    n.d(e, "FogExp2", (function() {
        return zs
    }
    )),
    n.d(e, "Font", (function() {
        return Ld
    }
    )),
    n.d(e, "FontLoader", (function() {
        return jd
    }
    )),
    n.d(e, "FrontFaceDirectionCCW", (function() {
        return S
    }
    )),
    n.d(e, "FrontFaceDirectionCW", (function() {
        return w
    }
    )),
    n.d(e, "FrontSide", (function() {
        return A
    }
    )),
    n.d(e, "Frustum", (function() {
        return Vo
    }
    )),
    n.d(e, "GammaEncoding", (function() {
        return un
    }
    )),
    n.d(e, "Geometry", (function() {
        return Eo
    }
    )),
    n.d(e, "GeometryUtils", (function() {
        return Cf
    }
    )),
    n.d(e, "GreaterDepth", (function() {
        return ot
    }
    )),
    n.d(e, "GreaterEqualDepth", (function() {
        return rt
    }
    )),
    n.d(e, "GreaterEqualStencilFunc", (function() {
        return Rn
    }
    )),
    n.d(e, "GreaterStencilFunc", (function() {
        return kn
    }
    )),
    n.d(e, "GridHelper", (function() {
        return Hp
    }
    )),
    n.d(e, "Group", (function() {
        return Fs
    }
    )),
    n.d(e, "HalfFloatType", (function() {
        return Ht
    }
    )),
    n.d(e, "HemisphereLight", (function() {
        return dd
    }
    )),
    n.d(e, "HemisphereLightHelper", (function() {
        return Gp
    }
    )),
    n.d(e, "HemisphereLightProbe", (function() {
        return zd
    }
    )),
    n.d(e, "IcosahedronBufferGeometry", (function() {
        return tl
    }
    )),
    n.d(e, "IcosahedronGeometry", (function() {
        return $c
    }
    )),
    n.d(e, "ImageBitmapLoader", (function() {
        return Dd
    }
    )),
    n.d(e, "ImageLoader", (function() {
        return Vu
    }
    )),
    n.d(e, "ImageUtils", (function() {
        return Qn
    }
    )),
    n.d(e, "ImmediateRenderObject", (function() {
        return kp
    }
    )),
    n.d(e, "IncrementStencilOp", (function() {
        return Mn
    }
    )),
    n.d(e, "IncrementWrapStencilOp", (function() {
        return Cn
    }
    )),
    n.d(e, "InstancedBufferAttribute", (function() {
        return Cd
    }
    )),
    n.d(e, "InstancedBufferGeometry", (function() {
        return Ed
    }
    )),
    n.d(e, "InstancedInterleavedBuffer", (function() {
        return Sp
    }
    )),
    n.d(e, "InstancedMesh", (function() {
        return Sc
    }
    )),
    n.d(e, "Int16Attribute", (function() {
        return lf
    }
    )),
    n.d(e, "Int16BufferAttribute", (function() {
        return jr
    }
    )),
    n.d(e, "Int32Attribute", (function() {
        return df
    }
    )),
    n.d(e, "Int32BufferAttribute", (function() {
        return Fr
    }
    )),
    n.d(e, "Int8Attribute", (function() {
        return af
    }
    )),
    n.d(e, "Int8BufferAttribute", (function() {
        return Rr
    }
    )),
    n.d(e, "IntType", (function() {
        return Bt
    }
    )),
    n.d(e, "InterleavedBuffer", (function() {
        return Hs
    }
    )),
    n.d(e, "InterleavedBufferAttribute", (function() {
        return Xs
    }
    )),
    n.d(e, "Interpolant", (function() {
        return mu
    }
    )),
    n.d(e, "InterpolateDiscrete", (function() {
        return Qe
    }
    )),
    n.d(e, "InterpolateLinear", (function() {
        return $e
    }
    )),
    n.d(e, "InterpolateSmooth", (function() {
        return tn
    }
    )),
    n.d(e, "InvertStencilOp", (function() {
        return Tn
    }
    )),
    n.d(e, "JSONLoader", (function() {
        return Tf
    }
    )),
    n.d(e, "KeepStencilOp", (function() {
        return Sn
    }
    )),
    n.d(e, "KeyframeTrack", (function() {
        return bu
    }
    )),
    n.d(e, "LOD", (function() {
        return dc
    }
    )),
    n.d(e, "LatheBufferGeometry", (function() {
        return Wl
    }
    )),
    n.d(e, "LatheGeometry", (function() {
        return Hl
    }
    )),
    n.d(e, "Layers", (function() {
        return bi
    }
    )),
    n.d(e, "LensFlare", (function() {
        return _f
    }
    )),
    n.d(e, "LessDepth", (function() {
        return et
    }
    )),
    n.d(e, "LessEqualDepth", (function() {
        return nt
    }
    )),
    n.d(e, "LessEqualStencilFunc", (function() {
        return In
    }
    )),
    n.d(e, "LessStencilFunc", (function() {
        return _n
    }
    )),
    n.d(e, "Light", (function() {
        return ud
    }
    )),
    n.d(e, "LightProbe", (function() {
        return Bd
    }
    )),
    n.d(e, "LightShadow", (function() {
        return pd
    }
    )),
    n.d(e, "Line", (function() {
        return Oc
    }
    )),
    n.d(e, "Line3", (function() {
        return Ip
    }
    )),
    n.d(e, "LineBasicMaterial", (function() {
        return xc
    }
    )),
    n.d(e, "LineCurve", (function() {
        return ed
    }
    )),
    n.d(e, "LineCurve3", (function() {
        return nd
    }
    )),
    n.d(e, "LineDashedMaterial", (function() {
        return pu
    }
    )),
    n.d(e, "LineLoop", (function() {
        return kc
    }
    )),
    n.d(e, "LinePieces", (function() {
        return Wh
    }
    )),
    n.d(e, "LineSegments", (function() {
        return Ic
    }
    )),
    n.d(e, "LineStrip", (function() {
        return Hh
    }
    )),
    n.d(e, "LinearEncoding", (function() {
        return cn
    }
    )),
    n.d(e, "LinearFilter", (function() {
        return kt
    }
    )),
    n.d(e, "LinearInterpolant", (function() {
        return vu
    }
    )),
    n.d(e, "LinearMipMapLinearFilter", (function() {
        return Nt
    }
    )),
    n.d(e, "LinearMipMapNearestFilter", (function() {
        return Rt
    }
    )),
    n.d(e, "LinearMipmapLinearFilter", (function() {
        return Lt
    }
    )),
    n.d(e, "LinearMipmapNearestFilter", (function() {
        return Dt
    }
    )),
    n.d(e, "LinearToneMapping", (function() {
        return dt
    }
    )),
    n.d(e, "Loader", (function() {
        return ku
    }
    )),
    n.d(e, "LoaderUtils", (function() {
        return Md
    }
    )),
    n.d(e, "LoadingManager", (function() {
        return Pu
    }
    )),
    n.d(e, "LogLuvEncoding", (function() {
        return pn
    }
    )),
    n.d(e, "LoopOnce", (function() {
        return Ke
    }
    )),
    n.d(e, "LoopPingPong", (function() {
        return Je
    }
    )),
    n.d(e, "LoopRepeat", (function() {
        return Ze
    }
    )),
    n.d(e, "LuminanceAlphaFormat", (function() {
        return $t
    }
    )),
    n.d(e, "LuminanceFormat", (function() {
        return Qt
    }
    )),
    n.d(e, "MOUSE", (function() {
        return f
    }
    )),
    n.d(e, "Material", (function() {
        return Pr
    }
    )),
    n.d(e, "MaterialLoader", (function() {
        return xd
    }
    )),
    n.d(e, "Math", (function() {
        return Kn
    }
    )),
    n.d(e, "MathUtils", (function() {
        return Kn
    }
    )),
    n.d(e, "Matrix3", (function() {
        return Jn
    }
    )),
    n.d(e, "Matrix4", (function() {
        return mi
    }
    )),
    n.d(e, "MaxEquation", (function() {
        return B
    }
    )),
    n.d(e, "Mesh", (function() {
        return vo
    }
    )),
    n.d(e, "MeshBasicMaterial", (function() {
        return Ir
    }
    )),
    n.d(e, "MeshDepthMaterial", (function() {
        return ks
    }
    )),
    n.d(e, "MeshDistanceMaterial", (function() {
        return Ds
    }
    )),
    n.d(e, "MeshFaceMaterial", (function() {
        return Kh
    }
    )),
    n.d(e, "MeshLambertMaterial", (function() {
        return uu
    }
    )),
    n.d(e, "MeshMatcapMaterial", (function() {
        return du
    }
    )),
    n.d(e, "MeshNormalMaterial", (function() {
        return lu
    }
    )),
    n.d(e, "MeshPhongMaterial", (function() {
        return su
    }
    )),
    n.d(e, "MeshPhysicalMaterial", (function() {
        return au
    }
    )),
    n.d(e, "MeshStandardMaterial", (function() {
        return ou
    }
    )),
    n.d(e, "MeshToonMaterial", (function() {
        return cu
    }
    )),
    n.d(e, "MinEquation", (function() {
        return U
    }
    )),
    n.d(e, "MirroredRepeatWrapping", (function() {
        return At
    }
    )),
    n.d(e, "MixOperation", (function() {
        return ct
    }
    )),
    n.d(e, "MultiMaterial", (function() {
        return Zh
    }
    )),
    n.d(e, "MultiplyBlending", (function() {
        return L
    }
    )),
    n.d(e, "MultiplyOperation", (function() {
        return st
    }
    )),
    n.d(e, "NearestFilter", (function() {
        return Tt
    }
    )),
    n.d(e, "NearestMipMapLinearFilter", (function() {
        return It
    }
    )),
    n.d(e, "NearestMipMapNearestFilter", (function() {
        return _t
    }
    )),
    n.d(e, "NearestMipmapLinearFilter", (function() {
        return Pt
    }
    )),
    n.d(e, "NearestMipmapNearestFilter", (function() {
        return Ot
    }
    )),
    n.d(e, "NeverDepth", (function() {
        return $
    }
    )),
    n.d(e, "NeverStencilFunc", (function() {
        return On
    }
    )),
    n.d(e, "NoBlending", (function() {
        return I
    }
    )),
    n.d(e, "NoColors", (function() {
        return qh
    }
    )),
    n.d(e, "NoToneMapping", (function() {
        return ut
    }
    )),
    n.d(e, "NormalBlending", (function() {
        return k
    }
    )),
    n.d(e, "NotEqualDepth", (function() {
        return at
    }
    )),
    n.d(e, "NotEqualStencilFunc", (function() {
        return Dn
    }
    )),
    n.d(e, "NumberKeyframeTrack", (function() {
        return xu
    }
    )),
    n.d(e, "Object3D", (function() {
        return Di
    }
    )),
    n.d(e, "ObjectLoader", (function() {
        return Od
    }
    )),
    n.d(e, "ObjectSpaceNormalMap", (function() {
        return bn
    }
    )),
    n.d(e, "OctahedronBufferGeometry", (function() {
        return Qc
    }
    )),
    n.d(e, "OctahedronGeometry", (function() {
        return Jc
    }
    )),
    n.d(e, "OneFactor", (function() {
        return G
    }
    )),
    n.d(e, "OneMinusDstAlphaFactor", (function() {
        return K
    }
    )),
    n.d(e, "OneMinusDstColorFactor", (function() {
        return J
    }
    )),
    n.d(e, "OneMinusSrcAlphaFactor", (function() {
        return X
    }
    )),
    n.d(e, "OneMinusSrcColorFactor", (function() {
        return W
    }
    )),
    n.d(e, "OrthographicCamera", (function() {
        return vd
    }
    )),
    n.d(e, "PCFShadowMap", (function() {
        return M
    }
    )),
    n.d(e, "PCFSoftShadowMap", (function() {
        return E
    }
    )),
    n.d(e, "PMREMGenerator", (function() {
        return Ih
    }
    )),
    n.d(e, "ParametricBufferGeometry", (function() {
        return qc
    }
    )),
    n.d(e, "ParametricGeometry", (function() {
        return Wc
    }
    )),
    n.d(e, "Particle", (function() {
        return Qh
    }
    )),
    n.d(e, "ParticleBasicMaterial", (function() {
        return ef
    }
    )),
    n.d(e, "ParticleSystem", (function() {
        return $h
    }
    )),
    n.d(e, "ParticleSystemMaterial", (function() {
        return nf
    }
    )),
    n.d(e, "Path", (function() {
        return cd
    }
    )),
    n.d(e, "PerspectiveCamera", (function() {
        return ko
    }
    )),
    n.d(e, "Plane", (function() {
        return lr
    }
    )),
    n.d(e, "PlaneBufferGeometry", (function() {
        return Go
    }
    )),
    n.d(e, "PlaneGeometry", (function() {
        return zo
    }
    )),
    n.d(e, "PlaneHelper", (function() {
        return ih
    }
    )),
    n.d(e, "PointCloud", (function() {
        return Jh
    }
    )),
    n.d(e, "PointCloudMaterial", (function() {
        return tf
    }
    )),
    n.d(e, "PointLight", (function() {
        return gd
    }
    )),
    n.d(e, "PointLightHelper", (function() {
        return Fp
    }
    )),
    n.d(e, "Points", (function() {
        return Vc
    }
    )),
    n.d(e, "PointsMaterial", (function() {
        return Dc
    }
    )),
    n.d(e, "PolarGridHelper", (function() {
        return Wp
    }
    )),
    n.d(e, "PolyhedronBufferGeometry", (function() {
        return Yc
    }
    )),
    n.d(e, "PolyhedronGeometry", (function() {
        return Xc
    }
    )),
    n.d(e, "PositionalAudio", (function() {
        return rp
    }
    )),
    n.d(e, "PropertyBinding", (function() {
        return gp
    }
    )),
    n.d(e, "PropertyMixer", (function() {
        return ap
    }
    )),
    n.d(e, "QuadraticBezierCurve", (function() {
        return id
    }
    )),
    n.d(e, "QuadraticBezierCurve3", (function() {
        return rd
    }
    )),
    n.d(e, "Quaternion", (function() {
        return ri
    }
    )),
    n.d(e, "QuaternionKeyframeTrack", (function() {
        return Eu
    }
    )),
    n.d(e, "QuaternionLinearInterpolant", (function() {
        return Mu
    }
    )),
    n.d(e, "REVISION", (function() {
        return h
    }
    )),
    n.d(e, "RGBADepthPacking", (function() {
        return vn
    }
    )),
    n.d(e, "RGBAFormat", (function() {
        return Jt
    }
    )),
    n.d(e, "RGBAIntegerFormat", (function() {
        return ce
    }
    )),
    n.d(e, "RGBA_ASTC_10x10_Format", (function() {
        return Ie
    }
    )),
    n.d(e, "RGBA_ASTC_10x5_Format", (function() {
        return Oe
    }
    )),
    n.d(e, "RGBA_ASTC_10x6_Format", (function() {
        return _e
    }
    )),
    n.d(e, "RGBA_ASTC_10x8_Format", (function() {
        return Pe
    }
    )),
    n.d(e, "RGBA_ASTC_12x10_Format", (function() {
        return ke
    }
    )),
    n.d(e, "RGBA_ASTC_12x12_Format", (function() {
        return De
    }
    )),
    n.d(e, "RGBA_ASTC_4x4_Format", (function() {
        return we
    }
    )),
    n.d(e, "RGBA_ASTC_5x4_Format", (function() {
        return Se
    }
    )),
    n.d(e, "RGBA_ASTC_5x5_Format", (function() {
        return xe
    }
    )),
    n.d(e, "RGBA_ASTC_6x5_Format", (function() {
        return Me
    }
    )),
    n.d(e, "RGBA_ASTC_6x6_Format", (function() {
        return Ee
    }
    )),
    n.d(e, "RGBA_ASTC_8x5_Format", (function() {
        return Ce
    }
    )),
    n.d(e, "RGBA_ASTC_8x6_Format", (function() {
        return Ae
    }
    )),
    n.d(e, "RGBA_ASTC_8x8_Format", (function() {
        return Te
    }
    )),
    n.d(e, "RGBA_BPTC_Format", (function() {
        return Re
    }
    )),
    n.d(e, "RGBA_ETC2_EAC_Format", (function() {
        return be
    }
    )),
    n.d(e, "RGBA_PVRTC_2BPPV1_Format", (function() {
        return ge
    }
    )),
    n.d(e, "RGBA_PVRTC_4BPPV1_Format", (function() {
        return me
    }
    )),
    n.d(e, "RGBA_S3TC_DXT1_Format", (function() {
        return ue
    }
    )),
    n.d(e, "RGBA_S3TC_DXT3_Format", (function() {
        return de
    }
    )),
    n.d(e, "RGBA_S3TC_DXT5_Format", (function() {
        return pe
    }
    )),
    n.d(e, "RGBDEncoding", (function() {
        return mn
    }
    )),
    n.d(e, "RGBEEncoding", (function() {
        return dn
    }
    )),
    n.d(e, "RGBEFormat", (function() {
        return te
    }
    )),
    n.d(e, "RGBFormat", (function() {
        return Zt
    }
    )),
    n.d(e, "RGBIntegerFormat", (function() {
        return se
    }
    )),
    n.d(e, "RGBM16Encoding", (function() {
        return fn
    }
    )),
    n.d(e, "RGBM7Encoding", (function() {
        return hn
    }
    )),
    n.d(e, "RGB_ETC1_Format", (function() {
        return ve
    }
    )),
    n.d(e, "RGB_ETC2_Format", (function() {
        return ye
    }
    )),
    n.d(e, "RGB_PVRTC_2BPPV1_Format", (function() {
        return fe
    }
    )),
    n.d(e, "RGB_PVRTC_4BPPV1_Format", (function() {
        return he
    }
    )),
    n.d(e, "RGB_S3TC_DXT1_Format", (function() {
        return le
    }
    )),
    n.d(e, "RGFormat", (function() {
        return oe
    }
    )),
    n.d(e, "RGIntegerFormat", (function() {
        return ae
    }
    )),
    n.d(e, "RawShaderMaterial", (function() {
        return ru
    }
    )),
    n.d(e, "Ray", (function() {
        return or
    }
    )),
    n.d(e, "Raycaster", (function() {
        return xp
    }
    )),
    n.d(e, "RectAreaLight", (function() {
        return Sd
    }
    )),
    n.d(e, "RedFormat", (function() {
        return ie
    }
    )),
    n.d(e, "RedIntegerFormat", (function() {
        return re
    }
    )),
    n.d(e, "ReinhardToneMapping", (function() {
        return pt
    }
    )),
    n.d(e, "RepeatWrapping", (function() {
        return Et
    }
    )),
    n.d(e, "ReplaceStencilOp", (function() {
        return xn
    }
    )),
    n.d(e, "ReverseSubtractEquation", (function() {
        return F
    }
    )),
    n.d(e, "RingBufferGeometry", (function() {
        return Gl
    }
    )),
    n.d(e, "RingGeometry", (function() {
        return zl
    }
    )),
    n.d(e, "SRGB8_ALPHA8_ASTC_10x10_Format", (function() {
        return qe
    }
    )),
    n.d(e, "SRGB8_ALPHA8_ASTC_10x5_Format", (function() {
        return Ge
    }
    )),
    n.d(e, "SRGB8_ALPHA8_ASTC_10x6_Format", (function() {
        return He
    }
    )),
    n.d(e, "SRGB8_ALPHA8_ASTC_10x8_Format", (function() {
        return We
    }
    )),
    n.d(e, "SRGB8_ALPHA8_ASTC_12x10_Format", (function() {
        return Xe
    }
    )),
    n.d(e, "SRGB8_ALPHA8_ASTC_12x12_Format", (function() {
        return Ye
    }
    )),
    n.d(e, "SRGB8_ALPHA8_ASTC_4x4_Format", (function() {
        return Le
    }
    )),
    n.d(e, "SRGB8_ALPHA8_ASTC_5x4_Format", (function() {
        return Ne
    }
    )),
    n.d(e, "SRGB8_ALPHA8_ASTC_5x5_Format", (function() {
        return je
    }
    )),
    n.d(e, "SRGB8_ALPHA8_ASTC_6x5_Format", (function() {
        return Ve
    }
    )),
    n.d(e, "SRGB8_ALPHA8_ASTC_6x6_Format", (function() {
        return Fe
    }
    )),
    n.d(e, "SRGB8_ALPHA8_ASTC_8x5_Format", (function() {
        return Ue
    }
    )),
    n.d(e, "SRGB8_ALPHA8_ASTC_8x6_Format", (function() {
        return Be
    }
    )),
    n.d(e, "SRGB8_ALPHA8_ASTC_8x8_Format", (function() {
        return ze
    }
    )),
    n.d(e, "Scene", (function() {
        return Ri
    }
    )),
    n.d(e, "SceneUtils", (function() {
        return Of
    }
    )),
    n.d(e, "ShaderChunk", (function() {
        return Ho
    }
    )),
    n.d(e, "ShaderLib", (function() {
        return Wo
    }
    )),
    n.d(e, "ShaderMaterial", (function() {
        return Po
    }
    )),
    n.d(e, "ShadowMaterial", (function() {
        return iu
    }
    )),
    n.d(e, "Shape", (function() {
        return ld
    }
    )),
    n.d(e, "ShapeBufferGeometry", (function() {
        return Xl
    }
    )),
    n.d(e, "ShapeGeometry", (function() {
        return ql
    }
    )),
    n.d(e, "ShapePath", (function() {
        return Rd
    }
    )),
    n.d(e, "ShapeUtils", (function() {
        return Il
    }
    )),
    n.d(e, "ShortType", (function() {
        return Ft
    }
    )),
    n.d(e, "Skeleton", (function() {
        return mc
    }
    )),
    n.d(e, "SkeletonHelper", (function() {
        return Vp
    }
    )),
    n.d(e, "SkinnedMesh", (function() {
        return pc
    }
    )),
    n.d(e, "SmoothShading", (function() {
        return P
    }
    )),
    n.d(e, "Sphere", (function() {
        return Ji
    }
    )),
    n.d(e, "SphereBufferGeometry", (function() {
        return Bl
    }
    )),
    n.d(e, "SphereGeometry", (function() {
        return Ul
    }
    )),
    n.d(e, "Spherical", (function() {
        return Cp
    }
    )),
    n.d(e, "SphericalHarmonics3", (function() {
        return Ud
    }
    )),
    n.d(e, "SphericalReflectionMapping", (function() {
        return St
    }
    )),
    n.d(e, "Spline", (function() {
        return vf
    }
    )),
    n.d(e, "SplineCurve", (function() {
        return od
    }
    )),
    n.d(e, "SplineCurve3", (function() {
        return gf
    }
    )),
    n.d(e, "SpotLight", (function() {
        return fd
    }
    )),
    n.d(e, "SpotLightHelper", (function() {
        return Rp
    }
    )),
    n.d(e, "SpotLightShadow", (function() {
        return hd
    }
    )),
    n.d(e, "Sprite", (function() {
        return sc
    }
    )),
    n.d(e, "SpriteMaterial", (function() {
        return Ys
    }
    )),
    n.d(e, "SrcAlphaFactor", (function() {
        return q
    }
    )),
    n.d(e, "SrcAlphaSaturateFactor", (function() {
        return Q
    }
    )),
    n.d(e, "SrcColorFactor", (function() {
        return H
    }
    )),
    n.d(e, "StaticCopyUsage", (function() {
        return zn
    }
    )),
    n.d(e, "StaticDrawUsage", (function() {
        return Nn
    }
    )),
    n.d(e, "StaticReadUsage", (function() {
        return Fn
    }
    )),
    n.d(e, "StereoCamera", (function() {
        return qd
    }
    )),
    n.d(e, "StreamCopyUsage", (function() {
        return Hn
    }
    )),
    n.d(e, "StreamDrawUsage", (function() {
        return Vn
    }
    )),
    n.d(e, "StreamReadUsage", (function() {
        return Bn
    }
    )),
    n.d(e, "StringKeyframeTrack", (function() {
        return Cu
    }
    )),
    n.d(e, "SubtractEquation", (function() {
        return V
    }
    )),
    n.d(e, "SubtractiveBlending", (function() {
        return R
    }
    )),
    n.d(e, "TOUCH", (function() {
        return m
    }
    )),
    n.d(e, "TangentSpaceNormalMap", (function() {
        return yn
    }
    )),
    n.d(e, "TetrahedronBufferGeometry", (function() {
        return Zc
    }
    )),
    n.d(e, "TetrahedronGeometry", (function() {
        return Kc
    }
    )),
    n.d(e, "TextBufferGeometry", (function() {
        return Fl
    }
    )),
    n.d(e, "TextGeometry", (function() {
        return Vl
    }
    )),
    n.d(e, "Texture", (function() {
        return ti
    }
    )),
    n.d(e, "TextureLoader", (function() {
        return Uu
    }
    )),
    n.d(e, "TorusBufferGeometry", (function() {
        return cl
    }
    )),
    n.d(e, "TorusGeometry", (function() {
        return sl
    }
    )),
    n.d(e, "TorusKnotBufferGeometry", (function() {
        return al
    }
    )),
    n.d(e, "TorusKnotGeometry", (function() {
        return ol
    }
    )),
    n.d(e, "Triangle", (function() {
        return wr
    }
    )),
    n.d(e, "TriangleFanDrawMode", (function() {
        return sn
    }
    )),
    n.d(e, "TriangleStripDrawMode", (function() {
        return an
    }
    )),
    n.d(e, "TrianglesDrawMode", (function() {
        return on
    }
    )),
    n.d(e, "TubeBufferGeometry", (function() {
        return rl
    }
    )),
    n.d(e, "TubeGeometry", (function() {
        return il
    }
    )),
    n.d(e, "UVMapping", (function() {
        return gt
    }
    )),
    n.d(e, "Uint16Attribute", (function() {
        return uf
    }
    )),
    n.d(e, "Uint16BufferAttribute", (function() {
        return Vr
    }
    )),
    n.d(e, "Uint32Attribute", (function() {
        return pf
    }
    )),
    n.d(e, "Uint32BufferAttribute", (function() {
        return Ur
    }
    )),
    n.d(e, "Uint8Attribute", (function() {
        return sf
    }
    )),
    n.d(e, "Uint8BufferAttribute", (function() {
        return Lr
    }
    )),
    n.d(e, "Uint8ClampedAttribute", (function() {
        return cf
    }
    )),
    n.d(e, "Uint8ClampedBufferAttribute", (function() {
        return Nr
    }
    )),
    n.d(e, "Uncharted2ToneMapping", (function() {
        return ht
    }
    )),
    n.d(e, "Uniform", (function() {
        return wp
    }
    )),
    n.d(e, "UniformsLib", (function() {
        return Fo
    }
    )),
    n.d(e, "UniformsUtils", (function() {
        return _o
    }
    )),
    n.d(e, "UnsignedByteType", (function() {
        return jt
    }
    )),
    n.d(e, "UnsignedInt248Type", (function() {
        return Yt
    }
    )),
    n.d(e, "UnsignedIntType", (function() {
        return zt
    }
    )),
    n.d(e, "UnsignedShort4444Type", (function() {
        return Wt
    }
    )),
    n.d(e, "UnsignedShort5551Type", (function() {
        return qt
    }
    )),
    n.d(e, "UnsignedShort565Type", (function() {
        return Xt
    }
    )),
    n.d(e, "UnsignedShortType", (function() {
        return Ut
    }
    )),
    n.d(e, "VSMShadowMap", (function() {
        return C
    }
    )),
    n.d(e, "Vector2", (function() {
        return Zn
    }
    )),
    n.d(e, "Vector3", (function() {
        return si
    }
    )),
    n.d(e, "Vector4", (function() {
        return ei
    }
    )),
    n.d(e, "VectorKeyframeTrack", (function() {
        return Au
    }
    )),
    n.d(e, "Vertex", (function() {
        return rf
    }
    )),
    n.d(e, "VertexColors", (function() {
        return Yh
    }
    )),
    n.d(e, "VideoTexture", (function() {
        return Uc
    }
    )),
    n.d(e, "WebGLCubeRenderTarget", (function() {
        return Ro
    }
    )),
    n.d(e, "WebGLMultisampleRenderTarget", (function() {
        return ii
    }
    )),
    n.d(e, "WebGLRenderTarget", (function() {
        return ni
    }
    )),
    n.d(e, "WebGLRenderTargetCube", (function() {
        return Ef
    }
    )),
    n.d(e, "WebGLRenderer", (function() {
        return Bs
    }
    )),
    n.d(e, "WebGLUtils", (function() {
        return js
    }
    )),
    n.d(e, "WireframeGeometry", (function() {
        return Hc
    }
    )),
    n.d(e, "WireframeHelper", (function() {
        return Sf
    }
    )),
    n.d(e, "WrapAroundEnding", (function() {
        return rn
    }
    )),
    n.d(e, "XHRLoader", (function() {
        return xf
    }
    )),
    n.d(e, "ZeroCurvatureEnding", (function() {
        return en
    }
    )),
    n.d(e, "ZeroFactor", (function() {
        return z
    }
    )),
    n.d(e, "ZeroSlopeEnding", (function() {
        return nn
    }
    )),
    n.d(e, "ZeroStencilOp", (function() {
        return wn
    }
    )),
    n.d(e, "sRGBEncoding", (function() {
        return ln
    }
    )),
    void 0 === Number.EPSILON && (Number.EPSILON = Math.pow(2, -52)),
    void 0 === Number.isInteger && (Number.isInteger = function(t) {
        return "number" == typeof t && isFinite(t) && Math.floor(t) === t
    }
    ),
    void 0 === Math.sign && (Math.sign = function(t) {
        return t < 0 ? -1 : t > 0 ? 1 : +t
    }
    ),
    "name"in Function.prototype == !1 && Object.defineProperty(Function.prototype, "name", {
        get: function() {
            return this.toString().match(/^\s*function\s*([^\(\s]*)/)[1]
        }
    }),
    void 0 === Object.assign && (Object.assign = function(t) {
        if (null == t)
            throw new TypeError("Cannot convert undefined or null to object");
        for (var e = Object(t), n = 1; n < arguments.length; n++) {
            var i = arguments[n];
            if (null != i)
                for (var r in i)
                    Object.prototype.hasOwnProperty.call(i, r) && (e[r] = i[r])
        }
        return e
    }
    );
    var h = "115"
      , f = {
        LEFT: 0,
        MIDDLE: 1,
        RIGHT: 2,
        ROTATE: 0,
        DOLLY: 1,
        PAN: 2
    }
      , m = {
        ROTATE: 0,
        PAN: 1,
        DOLLY_PAN: 2,
        DOLLY_ROTATE: 3
    }
      , g = 0
      , v = 1
      , y = 2
      , b = 3
      , w = 0
      , S = 1
      , x = 0
      , M = 1
      , E = 2
      , C = 3
      , A = 0
      , T = 1
      , O = 2
      , _ = 1
      , P = 2
      , I = 0
      , k = 1
      , D = 2
      , R = 3
      , L = 4
      , N = 5
      , j = 100
      , V = 101
      , F = 102
      , U = 103
      , B = 104
      , z = 200
      , G = 201
      , H = 202
      , W = 203
      , q = 204
      , X = 205
      , Y = 206
      , K = 207
      , Z = 208
      , J = 209
      , Q = 210
      , $ = 0
      , tt = 1
      , et = 2
      , nt = 3
      , it = 4
      , rt = 5
      , ot = 6
      , at = 7
      , st = 0
      , ct = 1
      , lt = 2
      , ut = 0
      , dt = 1
      , pt = 2
      , ht = 3
      , ft = 4
      , mt = 5
      , gt = 300
      , vt = 301
      , yt = 302
      , bt = 303
      , wt = 304
      , St = 305
      , xt = 306
      , Mt = 307
      , Et = 1e3
      , Ct = 1001
      , At = 1002
      , Tt = 1003
      , Ot = 1004
      , _t = 1004
      , Pt = 1005
      , It = 1005
      , kt = 1006
      , Dt = 1007
      , Rt = 1007
      , Lt = 1008
      , Nt = 1008
      , jt = 1009
      , Vt = 1010
      , Ft = 1011
      , Ut = 1012
      , Bt = 1013
      , zt = 1014
      , Gt = 1015
      , Ht = 1016
      , Wt = 1017
      , qt = 1018
      , Xt = 1019
      , Yt = 1020
      , Kt = 1021
      , Zt = 1022
      , Jt = 1023
      , Qt = 1024
      , $t = 1025
      , te = Jt
      , ee = 1026
      , ne = 1027
      , ie = 1028
      , re = 1029
      , oe = 1030
      , ae = 1031
      , se = 1032
      , ce = 1033
      , le = 33776
      , ue = 33777
      , de = 33778
      , pe = 33779
      , he = 35840
      , fe = 35841
      , me = 35842
      , ge = 35843
      , ve = 36196
      , ye = 37492
      , be = 37496
      , we = 37808
      , Se = 37809
      , xe = 37810
      , Me = 37811
      , Ee = 37812
      , Ce = 37813
      , Ae = 37814
      , Te = 37815
      , Oe = 37816
      , _e = 37817
      , Pe = 37818
      , Ie = 37819
      , ke = 37820
      , De = 37821
      , Re = 36492
      , Le = 37840
      , Ne = 37841
      , je = 37842
      , Ve = 37843
      , Fe = 37844
      , Ue = 37845
      , Be = 37846
      , ze = 37847
      , Ge = 37848
      , He = 37849
      , We = 37850
      , qe = 37851
      , Xe = 37852
      , Ye = 37853
      , Ke = 2200
      , Ze = 2201
      , Je = 2202
      , Qe = 2300
      , $e = 2301
      , tn = 2302
      , en = 2400
      , nn = 2401
      , rn = 2402
      , on = 0
      , an = 1
      , sn = 2
      , cn = 3e3
      , ln = 3001
      , un = 3007
      , dn = 3002
      , pn = 3003
      , hn = 3004
      , fn = 3005
      , mn = 3006
      , gn = 3200
      , vn = 3201
      , yn = 0
      , bn = 1
      , wn = 0
      , Sn = 7680
      , xn = 7681
      , Mn = 7682
      , En = 7683
      , Cn = 34055
      , An = 34056
      , Tn = 5386
      , On = 512
      , _n = 513
      , Pn = 514
      , In = 515
      , kn = 516
      , Dn = 517
      , Rn = 518
      , Ln = 519
      , Nn = 35044
      , jn = 35048
      , Vn = 35040
      , Fn = 35045
      , Un = 35049
      , Bn = 35041
      , zn = 35046
      , Gn = 35050
      , Hn = 35042;
    function Wn() {}
    Object.assign(Wn.prototype, {
        addEventListener: function(t, e) {
            void 0 === this._listeners && (this._listeners = {});
            var n = this._listeners;
            void 0 === n[t] && (n[t] = []),
            -1 === n[t].indexOf(e) && n[t].push(e)
        },
        hasEventListener: function(t, e) {
            if (void 0 === this._listeners)
                return !1;
            var n = this._listeners;
            return void 0 !== n[t] && -1 !== n[t].indexOf(e)
        },
        removeEventListener: function(t, e) {
            if (void 0 !== this._listeners) {
                var n = this._listeners[t];
                if (void 0 !== n) {
                    var i = n.indexOf(e);
                    -1 !== i && n.splice(i, 1)
                }
            }
        },
        dispatchEvent: function(t) {
            if (void 0 !== this._listeners) {
                var e = this._listeners[t.type];
                if (void 0 !== e) {
                    t.target = this;
                    for (var n = e.slice(0), i = 0, r = n.length; i < r; i++)
                        n[i].call(this, t)
                }
            }
        }
    });
    for (var qn = [], Xn = 0; Xn < 256; Xn++)
        qn[Xn] = (Xn < 16 ? "0" : "") + Xn.toString(16);
    var Yn, Kn = {
        DEG2RAD: Math.PI / 180,
        RAD2DEG: 180 / Math.PI,
        generateUUID: function() {
            var t = 4294967295 * Math.random() | 0
              , e = 4294967295 * Math.random() | 0
              , n = 4294967295 * Math.random() | 0
              , i = 4294967295 * Math.random() | 0;
            return (qn[255 & t] + qn[t >> 8 & 255] + qn[t >> 16 & 255] + qn[t >> 24 & 255] + "-" + qn[255 & e] + qn[e >> 8 & 255] + "-" + qn[e >> 16 & 15 | 64] + qn[e >> 24 & 255] + "-" + qn[63 & n | 128] + qn[n >> 8 & 255] + "-" + qn[n >> 16 & 255] + qn[n >> 24 & 255] + qn[255 & i] + qn[i >> 8 & 255] + qn[i >> 16 & 255] + qn[i >> 24 & 255]).toUpperCase()
        },
        clamp: function(t, e, n) {
            return Math.max(e, Math.min(n, t))
        },
        euclideanModulo: function(t, e) {
            return (t % e + e) % e
        },
        mapLinear: function(t, e, n, i, r) {
            return i + (t - e) * (r - i) / (n - e)
        },
        lerp: function(t, e, n) {
            return (1 - n) * t + n * e
        },
        smoothstep: function(t, e, n) {
            return t <= e ? 0 : t >= n ? 1 : (t = (t - e) / (n - e)) * t * (3 - 2 * t)
        },
        smootherstep: function(t, e, n) {
            return t <= e ? 0 : t >= n ? 1 : (t = (t - e) / (n - e)) * t * t * (t * (6 * t - 15) + 10)
        },
        randInt: function(t, e) {
            return t + Math.floor(Math.random() * (e - t + 1))
        },
        randFloat: function(t, e) {
            return t + Math.random() * (e - t)
        },
        randFloatSpread: function(t) {
            return t * (.5 - Math.random())
        },
        degToRad: function(t) {
            return t * Kn.DEG2RAD
        },
        radToDeg: function(t) {
            return t * Kn.RAD2DEG
        },
        isPowerOfTwo: function(t) {
            return 0 == (t & t - 1) && 0 !== t
        },
        ceilPowerOfTwo: function(t) {
            return Math.pow(2, Math.ceil(Math.log(t) / Math.LN2))
        },
        floorPowerOfTwo: function(t) {
            return Math.pow(2, Math.floor(Math.log(t) / Math.LN2))
        },
        setQuaternionFromProperEuler: function(t, e, n, i, r) {
            var o = Math.cos
              , a = Math.sin
              , s = o(n / 2)
              , c = a(n / 2)
              , l = o((e + i) / 2)
              , u = a((e + i) / 2)
              , d = o((e - i) / 2)
              , p = a((e - i) / 2)
              , h = o((i - e) / 2)
              , f = a((i - e) / 2);
            "XYX" === r ? t.set(s * u, c * d, c * p, s * l) : "YZY" === r ? t.set(c * p, s * u, c * d, s * l) : "ZXZ" === r ? t.set(c * d, c * p, s * u, s * l) : "XZX" === r ? t.set(s * u, c * f, c * h, s * l) : "YXY" === r ? t.set(c * h, s * u, c * f, s * l) : "ZYZ" === r ? t.set(c * f, c * h, s * u, s * l) : console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order.")
        }
    };
    function Zn(t, e) {
        this.x = t || 0,
        this.y = e || 0
    }
    function Jn() {
        this.elements = [1, 0, 0, 0, 1, 0, 0, 0, 1],
        arguments.length > 0 && console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")
    }
    Object.defineProperties(Zn.prototype, {
        width: {
            get: function() {
                return this.x
            },
            set: function(t) {
                this.x = t
            }
        },
        height: {
            get: function() {
                return this.y
            },
            set: function(t) {
                this.y = t
            }
        }
    }),
    Object.assign(Zn.prototype, {
        isVector2: !0,
        set: function(t, e) {
            return this.x = t,
            this.y = e,
            this
        },
        setScalar: function(t) {
            return this.x = t,
            this.y = t,
            this
        },
        setX: function(t) {
            return this.x = t,
            this
        },
        setY: function(t) {
            return this.y = t,
            this
        },
        setComponent: function(t, e) {
            switch (t) {
            case 0:
                this.x = e;
                break;
            case 1:
                this.y = e;
                break;
            default:
                throw new Error("index is out of range: " + t)
            }
            return this
        },
        getComponent: function(t) {
            switch (t) {
            case 0:
                return this.x;
            case 1:
                return this.y;
            default:
                throw new Error("index is out of range: " + t)
            }
        },
        clone: function() {
            return new this.constructor(this.x,this.y)
        },
        copy: function(t) {
            return this.x = t.x,
            this.y = t.y,
            this
        },
        add: function(t, e) {
            return void 0 !== e ? (console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),
            this.addVectors(t, e)) : (this.x += t.x,
            this.y += t.y,
            this)
        },
        addScalar: function(t) {
            return this.x += t,
            this.y += t,
            this
        },
        addVectors: function(t, e) {
            return this.x = t.x + e.x,
            this.y = t.y + e.y,
            this
        },
        addScaledVector: function(t, e) {
            return this.x += t.x * e,
            this.y += t.y * e,
            this
        },
        sub: function(t, e) {
            return void 0 !== e ? (console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),
            this.subVectors(t, e)) : (this.x -= t.x,
            this.y -= t.y,
            this)
        },
        subScalar: function(t) {
            return this.x -= t,
            this.y -= t,
            this
        },
        subVectors: function(t, e) {
            return this.x = t.x - e.x,
            this.y = t.y - e.y,
            this
        },
        multiply: function(t) {
            return this.x *= t.x,
            this.y *= t.y,
            this
        },
        multiplyScalar: function(t) {
            return this.x *= t,
            this.y *= t,
            this
        },
        divide: function(t) {
            return this.x /= t.x,
            this.y /= t.y,
            this
        },
        divideScalar: function(t) {
            return this.multiplyScalar(1 / t)
        },
        applyMatrix3: function(t) {
            var e = this.x
              , n = this.y
              , i = t.elements;
            return this.x = i[0] * e + i[3] * n + i[6],
            this.y = i[1] * e + i[4] * n + i[7],
            this
        },
        min: function(t) {
            return this.x = Math.min(this.x, t.x),
            this.y = Math.min(this.y, t.y),
            this
        },
        max: function(t) {
            return this.x = Math.max(this.x, t.x),
            this.y = Math.max(this.y, t.y),
            this
        },
        clamp: function(t, e) {
            return this.x = Math.max(t.x, Math.min(e.x, this.x)),
            this.y = Math.max(t.y, Math.min(e.y, this.y)),
            this
        },
        clampScalar: function(t, e) {
            return this.x = Math.max(t, Math.min(e, this.x)),
            this.y = Math.max(t, Math.min(e, this.y)),
            this
        },
        clampLength: function(t, e) {
            var n = this.length();
            return this.divideScalar(n || 1).multiplyScalar(Math.max(t, Math.min(e, n)))
        },
        floor: function() {
            return this.x = Math.floor(this.x),
            this.y = Math.floor(this.y),
            this
        },
        ceil: function() {
            return this.x = Math.ceil(this.x),
            this.y = Math.ceil(this.y),
            this
        },
        round: function() {
            return this.x = Math.round(this.x),
            this.y = Math.round(this.y),
            this
        },
        roundToZero: function() {
            return this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x),
            this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y),
            this
        },
        negate: function() {
            return this.x = -this.x,
            this.y = -this.y,
            this
        },
        dot: function(t) {
            return this.x * t.x + this.y * t.y
        },
        cross: function(t) {
            return this.x * t.y - this.y * t.x
        },
        lengthSq: function() {
            return this.x * this.x + this.y * this.y
        },
        length: function() {
            return Math.sqrt(this.x * this.x + this.y * this.y)
        },
        manhattanLength: function() {
            return Math.abs(this.x) + Math.abs(this.y)
        },
        normalize: function() {
            return this.divideScalar(this.length() || 1)
        },
        angle: function() {
            var t = Math.atan2(-this.y, -this.x) + Math.PI;
            return t
        },
        distanceTo: function(t) {
            return Math.sqrt(this.distanceToSquared(t))
        },
        distanceToSquared: function(t) {
            var e = this.x - t.x
              , n = this.y - t.y;
            return e * e + n * n
        },
        manhattanDistanceTo: function(t) {
            return Math.abs(this.x - t.x) + Math.abs(this.y - t.y)
        },
        setLength: function(t) {
            return this.normalize().multiplyScalar(t)
        },
        lerp: function(t, e) {
            return this.x += (t.x - this.x) * e,
            this.y += (t.y - this.y) * e,
            this
        },
        lerpVectors: function(t, e, n) {
            return this.subVectors(e, t).multiplyScalar(n).add(t)
        },
        equals: function(t) {
            return t.x === this.x && t.y === this.y
        },
        fromArray: function(t, e) {
            return void 0 === e && (e = 0),
            this.x = t[e],
            this.y = t[e + 1],
            this
        },
        toArray: function(t, e) {
            return void 0 === t && (t = []),
            void 0 === e && (e = 0),
            t[e] = this.x,
            t[e + 1] = this.y,
            t
        },
        fromBufferAttribute: function(t, e, n) {
            return void 0 !== n && console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),
            this.x = t.getX(e),
            this.y = t.getY(e),
            this
        },
        rotateAround: function(t, e) {
            var n = Math.cos(e)
              , i = Math.sin(e)
              , r = this.x - t.x
              , o = this.y - t.y;
            return this.x = r * n - o * i + t.x,
            this.y = r * i + o * n + t.y,
            this
        }
    }),
    Object.assign(Jn.prototype, {
        isMatrix3: !0,
        set: function(t, e, n, i, r, o, a, s, c) {
            var l = this.elements;
            return l[0] = t,
            l[1] = i,
            l[2] = a,
            l[3] = e,
            l[4] = r,
            l[5] = s,
            l[6] = n,
            l[7] = o,
            l[8] = c,
            this
        },
        identity: function() {
            return this.set(1, 0, 0, 0, 1, 0, 0, 0, 1),
            this
        },
        clone: function() {
            return (new this.constructor).fromArray(this.elements)
        },
        copy: function(t) {
            var e = this.elements
              , n = t.elements;
            return e[0] = n[0],
            e[1] = n[1],
            e[2] = n[2],
            e[3] = n[3],
            e[4] = n[4],
            e[5] = n[5],
            e[6] = n[6],
            e[7] = n[7],
            e[8] = n[8],
            this
        },
        extractBasis: function(t, e, n) {
            return t.setFromMatrix3Column(this, 0),
            e.setFromMatrix3Column(this, 1),
            n.setFromMatrix3Column(this, 2),
            this
        },
        setFromMatrix4: function(t) {
            var e = t.elements;
            return this.set(e[0], e[4], e[8], e[1], e[5], e[9], e[2], e[6], e[10]),
            this
        },
        multiply: function(t) {
            return this.multiplyMatrices(this, t)
        },
        premultiply: function(t) {
            return this.multiplyMatrices(t, this)
        },
        multiplyMatrices: function(t, e) {
            var n = t.elements
              , i = e.elements
              , r = this.elements
              , o = n[0]
              , a = n[3]
              , s = n[6]
              , c = n[1]
              , l = n[4]
              , u = n[7]
              , d = n[2]
              , p = n[5]
              , h = n[8]
              , f = i[0]
              , m = i[3]
              , g = i[6]
              , v = i[1]
              , y = i[4]
              , b = i[7]
              , w = i[2]
              , S = i[5]
              , x = i[8];
            return r[0] = o * f + a * v + s * w,
            r[3] = o * m + a * y + s * S,
            r[6] = o * g + a * b + s * x,
            r[1] = c * f + l * v + u * w,
            r[4] = c * m + l * y + u * S,
            r[7] = c * g + l * b + u * x,
            r[2] = d * f + p * v + h * w,
            r[5] = d * m + p * y + h * S,
            r[8] = d * g + p * b + h * x,
            this
        },
        multiplyScalar: function(t) {
            var e = this.elements;
            return e[0] *= t,
            e[3] *= t,
            e[6] *= t,
            e[1] *= t,
            e[4] *= t,
            e[7] *= t,
            e[2] *= t,
            e[5] *= t,
            e[8] *= t,
            this
        },
        determinant: function() {
            var t = this.elements
              , e = t[0]
              , n = t[1]
              , i = t[2]
              , r = t[3]
              , o = t[4]
              , a = t[5]
              , s = t[6]
              , c = t[7]
              , l = t[8];
            return e * o * l - e * a * c - n * r * l + n * a * s + i * r * c - i * o * s
        },
        getInverse: function(t, e) {
            void 0 !== e && console.warn("THREE.Matrix3: .getInverse() can no longer be configured to throw on degenerate.");
            var n = t.elements
              , i = this.elements
              , r = n[0]
              , o = n[1]
              , a = n[2]
              , s = n[3]
              , c = n[4]
              , l = n[5]
              , u = n[6]
              , d = n[7]
              , p = n[8]
              , h = p * c - l * d
              , f = l * u - p * s
              , m = d * s - c * u
              , g = r * h + o * f + a * m;
            if (0 === g)
                return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0);
            var v = 1 / g;
            return i[0] = h * v,
            i[1] = (a * d - p * o) * v,
            i[2] = (l * o - a * c) * v,
            i[3] = f * v,
            i[4] = (p * r - a * u) * v,
            i[5] = (a * s - l * r) * v,
            i[6] = m * v,
            i[7] = (o * u - d * r) * v,
            i[8] = (c * r - o * s) * v,
            this
        },
        transpose: function() {
            var t, e = this.elements;
            return t = e[1],
            e[1] = e[3],
            e[3] = t,
            t = e[2],
            e[2] = e[6],
            e[6] = t,
            t = e[5],
            e[5] = e[7],
            e[7] = t,
            this
        },
        getNormalMatrix: function(t) {
            return this.setFromMatrix4(t).getInverse(this).transpose()
        },
        transposeIntoArray: function(t) {
            var e = this.elements;
            return t[0] = e[0],
            t[1] = e[3],
            t[2] = e[6],
            t[3] = e[1],
            t[4] = e[4],
            t[5] = e[7],
            t[6] = e[2],
            t[7] = e[5],
            t[8] = e[8],
            this
        },
        setUvTransform: function(t, e, n, i, r, o, a) {
            var s = Math.cos(r)
              , c = Math.sin(r);
            this.set(n * s, n * c, -n * (s * o + c * a) + o + t, -i * c, i * s, -i * (-c * o + s * a) + a + e, 0, 0, 1)
        },
        scale: function(t, e) {
            var n = this.elements;
            return n[0] *= t,
            n[3] *= t,
            n[6] *= t,
            n[1] *= e,
            n[4] *= e,
            n[7] *= e,
            this
        },
        rotate: function(t) {
            var e = Math.cos(t)
              , n = Math.sin(t)
              , i = this.elements
              , r = i[0]
              , o = i[3]
              , a = i[6]
              , s = i[1]
              , c = i[4]
              , l = i[7];
            return i[0] = e * r + n * s,
            i[3] = e * o + n * c,
            i[6] = e * a + n * l,
            i[1] = -n * r + e * s,
            i[4] = -n * o + e * c,
            i[7] = -n * a + e * l,
            this
        },
        translate: function(t, e) {
            var n = this.elements;
            return n[0] += t * n[2],
            n[3] += t * n[5],
            n[6] += t * n[8],
            n[1] += e * n[2],
            n[4] += e * n[5],
            n[7] += e * n[8],
            this
        },
        equals: function(t) {
            for (var e = this.elements, n = t.elements, i = 0; i < 9; i++)
                if (e[i] !== n[i])
                    return !1;
            return !0
        },
        fromArray: function(t, e) {
            void 0 === e && (e = 0);
            for (var n = 0; n < 9; n++)
                this.elements[n] = t[n + e];
            return this
        },
        toArray: function(t, e) {
            void 0 === t && (t = []),
            void 0 === e && (e = 0);
            var n = this.elements;
            return t[e] = n[0],
            t[e + 1] = n[1],
            t[e + 2] = n[2],
            t[e + 3] = n[3],
            t[e + 4] = n[4],
            t[e + 5] = n[5],
            t[e + 6] = n[6],
            t[e + 7] = n[7],
            t[e + 8] = n[8],
            t
        }
    });
    var Qn = {
        getDataURL: function(t) {
            var e;
            if ("undefined" == typeof HTMLCanvasElement)
                return t.src;
            if (t instanceof HTMLCanvasElement)
                e = t;
            else {
                void 0 === Yn && (Yn = document.createElementNS("http://www.w3.org/1999/xhtml", "canvas")),
                Yn.width = t.width,
                Yn.height = t.height;
                var n = Yn.getContext("2d");
                t instanceof ImageData ? n.putImageData(t, 0, 0) : n.drawImage(t, 0, 0, t.width, t.height),
                e = Yn
            }
            return e.width > 2048 || e.height > 2048 ? e.toDataURL("image/jpeg", .6) : e.toDataURL("image/png")
        }
    }
      , $n = 0;
    function ti(t, e, n, i, r, o, a, s, c, l) {
        Object.defineProperty(this, "id", {
            value: $n++
        }),
        this.uuid = Kn.generateUUID(),
        this.name = "",
        this.image = void 0 !== t ? t : ti.DEFAULT_IMAGE,
        this.mipmaps = [],
        this.mapping = void 0 !== e ? e : ti.DEFAULT_MAPPING,
        this.wrapS = void 0 !== n ? n : Ct,
        this.wrapT = void 0 !== i ? i : Ct,
        this.magFilter = void 0 !== r ? r : kt,
        this.minFilter = void 0 !== o ? o : Lt,
        this.anisotropy = void 0 !== c ? c : 1,
        this.format = void 0 !== a ? a : Jt,
        this.internalFormat = null,
        this.type = void 0 !== s ? s : jt,
        this.offset = new Zn(0,0),
        this.repeat = new Zn(1,1),
        this.center = new Zn(0,0),
        this.rotation = 0,
        this.matrixAutoUpdate = !0,
        this.matrix = new Jn,
        this.generateMipmaps = !0,
        this.premultiplyAlpha = !1,
        this.flipY = !0,
        this.unpackAlignment = 4,
        this.encoding = void 0 !== l ? l : cn,
        this.version = 0,
        this.onUpdate = null
    }
    function ei(t, e, n, i) {
        this.x = t || 0,
        this.y = e || 0,
        this.z = n || 0,
        this.w = void 0 !== i ? i : 1
    }
    function ni(t, e, n) {
        this.width = t,
        this.height = e,
        this.scissor = new ei(0,0,t,e),
        this.scissorTest = !1,
        this.viewport = new ei(0,0,t,e),
        n = n || {},
        this.texture = new ti(void 0,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.encoding),
        this.texture.image = {},
        this.texture.image.width = t,
        this.texture.image.height = e,
        this.texture.generateMipmaps = void 0 !== n.generateMipmaps && n.generateMipmaps,
        this.texture.minFilter = void 0 !== n.minFilter ? n.minFilter : kt,
        this.depthBuffer = void 0 === n.depthBuffer || n.depthBuffer,
        this.stencilBuffer = void 0 === n.stencilBuffer || n.stencilBuffer,
        this.depthTexture = void 0 !== n.depthTexture ? n.depthTexture : null
    }
    function ii(t, e, n) {
        ni.call(this, t, e, n),
        this.samples = 4
    }
    function ri(t, e, n, i) {
        this._x = t || 0,
        this._y = e || 0,
        this._z = n || 0,
        this._w = void 0 !== i ? i : 1
    }
    ti.DEFAULT_IMAGE = void 0,
    ti.DEFAULT_MAPPING = gt,
    ti.prototype = Object.assign(Object.create(Wn.prototype), {
        constructor: ti,
        isTexture: !0,
        updateMatrix: function() {
            this.matrix.setUvTransform(this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y)
        },
        clone: function() {
            return (new this.constructor).copy(this)
        },
        copy: function(t) {
            return this.name = t.name,
            this.image = t.image,
            this.mipmaps = t.mipmaps.slice(0),
            this.mapping = t.mapping,
            this.wrapS = t.wrapS,
            this.wrapT = t.wrapT,
            this.magFilter = t.magFilter,
            this.minFilter = t.minFilter,
            this.anisotropy = t.anisotropy,
            this.format = t.format,
            this.internalFormat = t.internalFormat,
            this.type = t.type,
            this.offset.copy(t.offset),
            this.repeat.copy(t.repeat),
            this.center.copy(t.center),
            this.rotation = t.rotation,
            this.matrixAutoUpdate = t.matrixAutoUpdate,
            this.matrix.copy(t.matrix),
            this.generateMipmaps = t.generateMipmaps,
            this.premultiplyAlpha = t.premultiplyAlpha,
            this.flipY = t.flipY,
            this.unpackAlignment = t.unpackAlignment,
            this.encoding = t.encoding,
            this
        },
        toJSON: function(t) {
            var e = void 0 === t || "string" == typeof t;
            if (!e && void 0 !== t.textures[this.uuid])
                return t.textures[this.uuid];
            var n = {
                metadata: {
                    version: 4.5,
                    type: "Texture",
                    generator: "Texture.toJSON"
                },
                uuid: this.uuid,
                name: this.name,
                mapping: this.mapping,
                repeat: [this.repeat.x, this.repeat.y],
                offset: [this.offset.x, this.offset.y],
                center: [this.center.x, this.center.y],
                rotation: this.rotation,
                wrap: [this.wrapS, this.wrapT],
                format: this.format,
                type: this.type,
                encoding: this.encoding,
                minFilter: this.minFilter,
                magFilter: this.magFilter,
                anisotropy: this.anisotropy,
                flipY: this.flipY,
                premultiplyAlpha: this.premultiplyAlpha,
                unpackAlignment: this.unpackAlignment
            };
            if (void 0 !== this.image) {
                var i = this.image;
                if (void 0 === i.uuid && (i.uuid = Kn.generateUUID()),
                !e && void 0 === t.images[i.uuid]) {
                    var r;
                    if (Array.isArray(i)) {
                        r = [];
                        for (var o = 0, a = i.length; o < a; o++)
                            r.push(Qn.getDataURL(i[o]))
                    } else
                        r = Qn.getDataURL(i);
                    t.images[i.uuid] = {
                        uuid: i.uuid,
                        url: r
                    }
                }
                n.image = i.uuid
            }
            return e || (t.textures[this.uuid] = n),
            n
        },
        dispose: function() {
            this.dispatchEvent({
                type: "dispose"
            })
        },
        transformUv: function(t) {
            if (this.mapping !== gt)
                return t;
            if (t.applyMatrix3(this.matrix),
            t.x < 0 || t.x > 1)
                switch (this.wrapS) {
                case Et:
                    t.x = t.x - Math.floor(t.x);
                    break;
                case Ct:
                    t.x = t.x < 0 ? 0 : 1;
                    break;
                case At:
                    1 === Math.abs(Math.floor(t.x) % 2) ? t.x = Math.ceil(t.x) - t.x : t.x = t.x - Math.floor(t.x)
                }
            if (t.y < 0 || t.y > 1)
                switch (this.wrapT) {
                case Et:
                    t.y = t.y - Math.floor(t.y);
                    break;
                case Ct:
                    t.y = t.y < 0 ? 0 : 1;
                    break;
                case At:
                    1 === Math.abs(Math.floor(t.y) % 2) ? t.y = Math.ceil(t.y) - t.y : t.y = t.y - Math.floor(t.y)
                }
            return this.flipY && (t.y = 1 - t.y),
            t
        }
    }),
    Object.defineProperty(ti.prototype, "needsUpdate", {
        set: function(t) {
            !0 === t && this.version++
        }
    }),
    Object.defineProperties(ei.prototype, {
        width: {
            get: function() {
                return this.z
            },
            set: function(t) {
                this.z = t
            }
        },
        height: {
            get: function() {
                return this.w
            },
            set: function(t) {
                this.w = t
            }
        }
    }),
    Object.assign(ei.prototype, {
        isVector4: !0,
        set: function(t, e, n, i) {
            return this.x = t,
            this.y = e,
            this.z = n,
            this.w = i,
            this
        },
        setScalar: function(t) {
            return this.x = t,
            this.y = t,
            this.z = t,
            this.w = t,
            this
        },
        setX: function(t) {
            return this.x = t,
            this
        },
        setY: function(t) {
            return this.y = t,
            this
        },
        setZ: function(t) {
            return this.z = t,
            this
        },
        setW: function(t) {
            return this.w = t,
            this
        },
        setComponent: function(t, e) {
            switch (t) {
            case 0:
                this.x = e;
                break;
            case 1:
                this.y = e;
                break;
            case 2:
                this.z = e;
                break;
            case 3:
                this.w = e;
                break;
            default:
                throw new Error("index is out of range: " + t)
            }
            return this
        },
        getComponent: function(t) {
            switch (t) {
            case 0:
                return this.x;
            case 1:
                return this.y;
            case 2:
                return this.z;
            case 3:
                return this.w;
            default:
                throw new Error("index is out of range: " + t)
            }
        },
        clone: function() {
            return new this.constructor(this.x,this.y,this.z,this.w)
        },
        copy: function(t) {
            return this.x = t.x,
            this.y = t.y,
            this.z = t.z,
            this.w = void 0 !== t.w ? t.w : 1,
            this
        },
        add: function(t, e) {
            return void 0 !== e ? (console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),
            this.addVectors(t, e)) : (this.x += t.x,
            this.y += t.y,
            this.z += t.z,
            this.w += t.w,
            this)
        },
        addScalar: function(t) {
            return this.x += t,
            this.y += t,
            this.z += t,
            this.w += t,
            this
        },
        addVectors: function(t, e) {
            return this.x = t.x + e.x,
            this.y = t.y + e.y,
            this.z = t.z + e.z,
            this.w = t.w + e.w,
            this
        },
        addScaledVector: function(t, e) {
            return this.x += t.x * e,
            this.y += t.y * e,
            this.z += t.z * e,
            this.w += t.w * e,
            this
        },
        sub: function(t, e) {
            return void 0 !== e ? (console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),
            this.subVectors(t, e)) : (this.x -= t.x,
            this.y -= t.y,
            this.z -= t.z,
            this.w -= t.w,
            this)
        },
        subScalar: function(t) {
            return this.x -= t,
            this.y -= t,
            this.z -= t,
            this.w -= t,
            this
        },
        subVectors: function(t, e) {
            return this.x = t.x - e.x,
            this.y = t.y - e.y,
            this.z = t.z - e.z,
            this.w = t.w - e.w,
            this
        },
        multiplyScalar: function(t) {
            return this.x *= t,
            this.y *= t,
            this.z *= t,
            this.w *= t,
            this
        },
        applyMatrix4: function(t) {
            var e = this.x
              , n = this.y
              , i = this.z
              , r = this.w
              , o = t.elements;
            return this.x = o[0] * e + o[4] * n + o[8] * i + o[12] * r,
            this.y = o[1] * e + o[5] * n + o[9] * i + o[13] * r,
            this.z = o[2] * e + o[6] * n + o[10] * i + o[14] * r,
            this.w = o[3] * e + o[7] * n + o[11] * i + o[15] * r,
            this
        },
        divideScalar: function(t) {
            return this.multiplyScalar(1 / t)
        },
        setAxisAngleFromQuaternion: function(t) {
            this.w = 2 * Math.acos(t.w);
            var e = Math.sqrt(1 - t.w * t.w);
            return e < 1e-4 ? (this.x = 1,
            this.y = 0,
            this.z = 0) : (this.x = t.x / e,
            this.y = t.y / e,
            this.z = t.z / e),
            this
        },
        setAxisAngleFromRotationMatrix: function(t) {
            var e, n, i, r, o = t.elements, a = o[0], s = o[4], c = o[8], l = o[1], u = o[5], d = o[9], p = o[2], h = o[6], f = o[10];
            if (Math.abs(s - l) < .01 && Math.abs(c - p) < .01 && Math.abs(d - h) < .01) {
                if (Math.abs(s + l) < .1 && Math.abs(c + p) < .1 && Math.abs(d + h) < .1 && Math.abs(a + u + f - 3) < .1)
                    return this.set(1, 0, 0, 0),
                    this;
                e = Math.PI;
                var m = (a + 1) / 2
                  , g = (u + 1) / 2
                  , v = (f + 1) / 2
                  , y = (s + l) / 4
                  , b = (c + p) / 4
                  , w = (d + h) / 4;
                return m > g && m > v ? m < .01 ? (n = 0,
                i = .707106781,
                r = .707106781) : (i = y / (n = Math.sqrt(m)),
                r = b / n) : g > v ? g < .01 ? (n = .707106781,
                i = 0,
                r = .707106781) : (n = y / (i = Math.sqrt(g)),
                r = w / i) : v < .01 ? (n = .707106781,
                i = .707106781,
                r = 0) : (n = b / (r = Math.sqrt(v)),
                i = w / r),
                this.set(n, i, r, e),
                this
            }
            var S = Math.sqrt((h - d) * (h - d) + (c - p) * (c - p) + (l - s) * (l - s));
            return Math.abs(S) < .001 && (S = 1),
            this.x = (h - d) / S,
            this.y = (c - p) / S,
            this.z = (l - s) / S,
            this.w = Math.acos((a + u + f - 1) / 2),
            this
        },
        min: function(t) {
            return this.x = Math.min(this.x, t.x),
            this.y = Math.min(this.y, t.y),
            this.z = Math.min(this.z, t.z),
            this.w = Math.min(this.w, t.w),
            this
        },
        max: function(t) {
            return this.x = Math.max(this.x, t.x),
            this.y = Math.max(this.y, t.y),
            this.z = Math.max(this.z, t.z),
            this.w = Math.max(this.w, t.w),
            this
        },
        clamp: function(t, e) {
            return this.x = Math.max(t.x, Math.min(e.x, this.x)),
            this.y = Math.max(t.y, Math.min(e.y, this.y)),
            this.z = Math.max(t.z, Math.min(e.z, this.z)),
            this.w = Math.max(t.w, Math.min(e.w, this.w)),
            this
        },
        clampScalar: function(t, e) {
            return this.x = Math.max(t, Math.min(e, this.x)),
            this.y = Math.max(t, Math.min(e, this.y)),
            this.z = Math.max(t, Math.min(e, this.z)),
            this.w = Math.max(t, Math.min(e, this.w)),
            this
        },
        clampLength: function(t, e) {
            var n = this.length();
            return this.divideScalar(n || 1).multiplyScalar(Math.max(t, Math.min(e, n)))
        },
        floor: function() {
            return this.x = Math.floor(this.x),
            this.y = Math.floor(this.y),
            this.z = Math.floor(this.z),
            this.w = Math.floor(this.w),
            this
        },
        ceil: function() {
            return this.x = Math.ceil(this.x),
            this.y = Math.ceil(this.y),
            this.z = Math.ceil(this.z),
            this.w = Math.ceil(this.w),
            this
        },
        round: function() {
            return this.x = Math.round(this.x),
            this.y = Math.round(this.y),
            this.z = Math.round(this.z),
            this.w = Math.round(this.w),
            this
        },
        roundToZero: function() {
            return this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x),
            this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y),
            this.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z),
            this.w = this.w < 0 ? Math.ceil(this.w) : Math.floor(this.w),
            this
        },
        negate: function() {
            return this.x = -this.x,
            this.y = -this.y,
            this.z = -this.z,
            this.w = -this.w,
            this
        },
        dot: function(t) {
            return this.x * t.x + this.y * t.y + this.z * t.z + this.w * t.w
        },
        lengthSq: function() {
            return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w
        },
        length: function() {
            return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w)
        },
        manhattanLength: function() {
            return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w)
        },
        normalize: function() {
            return this.divideScalar(this.length() || 1)
        },
        setLength: function(t) {
            return this.normalize().multiplyScalar(t)
        },
        lerp: function(t, e) {
            return this.x += (t.x - this.x) * e,
            this.y += (t.y - this.y) * e,
            this.z += (t.z - this.z) * e,
            this.w += (t.w - this.w) * e,
            this
        },
        lerpVectors: function(t, e, n) {
            return this.subVectors(e, t).multiplyScalar(n).add(t)
        },
        equals: function(t) {
            return t.x === this.x && t.y === this.y && t.z === this.z && t.w === this.w
        },
        fromArray: function(t, e) {
            return void 0 === e && (e = 0),
            this.x = t[e],
            this.y = t[e + 1],
            this.z = t[e + 2],
            this.w = t[e + 3],
            this
        },
        toArray: function(t, e) {
            return void 0 === t && (t = []),
            void 0 === e && (e = 0),
            t[e] = this.x,
            t[e + 1] = this.y,
            t[e + 2] = this.z,
            t[e + 3] = this.w,
            t
        },
        fromBufferAttribute: function(t, e, n) {
            return void 0 !== n && console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute()."),
            this.x = t.getX(e),
            this.y = t.getY(e),
            this.z = t.getZ(e),
            this.w = t.getW(e),
            this
        }
    }),
    ni.prototype = Object.assign(Object.create(Wn.prototype), {
        constructor: ni,
        isWebGLRenderTarget: !0,
        setSize: function(t, e) {
            this.width === t && this.height === e || (this.width = t,
            this.height = e,
            this.texture.image.width = t,
            this.texture.image.height = e,
            this.dispose()),
            this.viewport.set(0, 0, t, e),
            this.scissor.set(0, 0, t, e)
        },
        clone: function() {
            return (new this.constructor).copy(this)
        },
        copy: function(t) {
            return this.width = t.width,
            this.height = t.height,
            this.viewport.copy(t.viewport),
            this.texture = t.texture.clone(),
            this.depthBuffer = t.depthBuffer,
            this.stencilBuffer = t.stencilBuffer,
            this.depthTexture = t.depthTexture,
            this
        },
        dispose: function() {
            this.dispatchEvent({
                type: "dispose"
            })
        }
    }),
    ii.prototype = Object.assign(Object.create(ni.prototype), {
        constructor: ii,
        isWebGLMultisampleRenderTarget: !0,
        copy: function(t) {
            return ni.prototype.copy.call(this, t),
            this.samples = t.samples,
            this
        }
    }),
    Object.assign(ri, {
        slerp: function(t, e, n, i) {
            return n.copy(t).slerp(e, i)
        },
        slerpFlat: function(t, e, n, i, r, o, a) {
            var s = n[i + 0]
              , c = n[i + 1]
              , l = n[i + 2]
              , u = n[i + 3]
              , d = r[o + 0]
              , p = r[o + 1]
              , h = r[o + 2]
              , f = r[o + 3];
            if (u !== f || s !== d || c !== p || l !== h) {
                var m = 1 - a
                  , g = s * d + c * p + l * h + u * f
                  , v = g >= 0 ? 1 : -1
                  , y = 1 - g * g;
                if (y > Number.EPSILON) {
                    var b = Math.sqrt(y)
                      , w = Math.atan2(b, g * v);
                    m = Math.sin(m * w) / b,
                    a = Math.sin(a * w) / b
                }
                var S = a * v;
                if (s = s * m + d * S,
                c = c * m + p * S,
                l = l * m + h * S,
                u = u * m + f * S,
                m === 1 - a) {
                    var x = 1 / Math.sqrt(s * s + c * c + l * l + u * u);
                    s *= x,
                    c *= x,
                    l *= x,
                    u *= x
                }
            }
            t[e] = s,
            t[e + 1] = c,
            t[e + 2] = l,
            t[e + 3] = u
        }
    }),
    Object.defineProperties(ri.prototype, {
        x: {
            get: function() {
                return this._x
            },
            set: function(t) {
                this._x = t,
                this._onChangeCallback()
            }
        },
        y: {
            get: function() {
                return this._y
            },
            set: function(t) {
                this._y = t,
                this._onChangeCallback()
            }
        },
        z: {
            get: function() {
                return this._z
            },
            set: function(t) {
                this._z = t,
                this._onChangeCallback()
            }
        },
        w: {
            get: function() {
                return this._w
            },
            set: function(t) {
                this._w = t,
                this._onChangeCallback()
            }
        }
    }),
    Object.assign(ri.prototype, {
        isQuaternion: !0,
        set: function(t, e, n, i) {
            return this._x = t,
            this._y = e,
            this._z = n,
            this._w = i,
            this._onChangeCallback(),
            this
        },
        clone: function() {
            return new this.constructor(this._x,this._y,this._z,this._w)
        },
        copy: function(t) {
            return this._x = t.x,
            this._y = t.y,
            this._z = t.z,
            this._w = t.w,
            this._onChangeCallback(),
            this
        },
        setFromEuler: function(t, e) {
            if (!t || !t.isEuler)
                throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");
            var n = t._x
              , i = t._y
              , r = t._z
              , o = t.order
              , a = Math.cos
              , s = Math.sin
              , c = a(n / 2)
              , l = a(i / 2)
              , u = a(r / 2)
              , d = s(n / 2)
              , p = s(i / 2)
              , h = s(r / 2);
            return "XYZ" === o ? (this._x = d * l * u + c * p * h,
            this._y = c * p * u - d * l * h,
            this._z = c * l * h + d * p * u,
            this._w = c * l * u - d * p * h) : "YXZ" === o ? (this._x = d * l * u + c * p * h,
            this._y = c * p * u - d * l * h,
            this._z = c * l * h - d * p * u,
            this._w = c * l * u + d * p * h) : "ZXY" === o ? (this._x = d * l * u - c * p * h,
            this._y = c * p * u + d * l * h,
            this._z = c * l * h + d * p * u,
            this._w = c * l * u - d * p * h) : "ZYX" === o ? (this._x = d * l * u - c * p * h,
            this._y = c * p * u + d * l * h,
            this._z = c * l * h - d * p * u,
            this._w = c * l * u + d * p * h) : "YZX" === o ? (this._x = d * l * u + c * p * h,
            this._y = c * p * u + d * l * h,
            this._z = c * l * h - d * p * u,
            this._w = c * l * u - d * p * h) : "XZY" === o && (this._x = d * l * u - c * p * h,
            this._y = c * p * u - d * l * h,
            this._z = c * l * h + d * p * u,
            this._w = c * l * u + d * p * h),
            !1 !== e && this._onChangeCallback(),
            this
        },
        setFromAxisAngle: function(t, e) {
            var n = e / 2
              , i = Math.sin(n);
            return this._x = t.x * i,
            this._y = t.y * i,
            this._z = t.z * i,
            this._w = Math.cos(n),
            this._onChangeCallback(),
            this
        },
        setFromRotationMatrix: function(t) {
            var e, n = t.elements, i = n[0], r = n[4], o = n[8], a = n[1], s = n[5], c = n[9], l = n[2], u = n[6], d = n[10], p = i + s + d;
            return p > 0 ? (e = .5 / Math.sqrt(p + 1),
            this._w = .25 / e,
            this._x = (u - c) * e,
            this._y = (o - l) * e,
            this._z = (a - r) * e) : i > s && i > d ? (e = 2 * Math.sqrt(1 + i - s - d),
            this._w = (u - c) / e,
            this._x = .25 * e,
            this._y = (r + a) / e,
            this._z = (o + l) / e) : s > d ? (e = 2 * Math.sqrt(1 + s - i - d),
            this._w = (o - l) / e,
            this._x = (r + a) / e,
            this._y = .25 * e,
            this._z = (c + u) / e) : (e = 2 * Math.sqrt(1 + d - i - s),
            this._w = (a - r) / e,
            this._x = (o + l) / e,
            this._y = (c + u) / e,
            this._z = .25 * e),
            this._onChangeCallback(),
            this
        },
        setFromUnitVectors: function(t, e) {
            var n = t.dot(e) + 1;
            return n < 1e-6 ? (n = 0,
            Math.abs(t.x) > Math.abs(t.z) ? (this._x = -t.y,
            this._y = t.x,
            this._z = 0,
            this._w = n) : (this._x = 0,
            this._y = -t.z,
            this._z = t.y,
            this._w = n)) : (this._x = t.y * e.z - t.z * e.y,
            this._y = t.z * e.x - t.x * e.z,
            this._z = t.x * e.y - t.y * e.x,
            this._w = n),
            this.normalize()
        },
        angleTo: function(t) {
            return 2 * Math.acos(Math.abs(Kn.clamp(this.dot(t), -1, 1)))
        },
        rotateTowards: function(t, e) {
            var n = this.angleTo(t);
            if (0 === n)
                return this;
            var i = Math.min(1, e / n);
            return this.slerp(t, i),
            this
        },
        inverse: function() {
            return this.conjugate()
        },
        conjugate: function() {
            return this._x *= -1,
            this._y *= -1,
            this._z *= -1,
            this._onChangeCallback(),
            this
        },
        dot: function(t) {
            return this._x * t._x + this._y * t._y + this._z * t._z + this._w * t._w
        },
        lengthSq: function() {
            return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w
        },
        length: function() {
            return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w)
        },
        normalize: function() {
            var t = this.length();
            return 0 === t ? (this._x = 0,
            this._y = 0,
            this._z = 0,
            this._w = 1) : (t = 1 / t,
            this._x = this._x * t,
            this._y = this._y * t,
            this._z = this._z * t,
            this._w = this._w * t),
            this._onChangeCallback(),
            this
        },
        multiply: function(t, e) {
            return void 0 !== e ? (console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),
            this.multiplyQuaternions(t, e)) : this.multiplyQuaternions(this, t)
        },
        premultiply: function(t) {
            return this.multiplyQuaternions(t, this)
        },
        multiplyQuaternions: function(t, e) {
            var n = t._x
              , i = t._y
              , r = t._z
              , o = t._w
              , a = e._x
              , s = e._y
              , c = e._z
              , l = e._w;
            return this._x = n * l + o * a + i * c - r * s,
            this._y = i * l + o * s + r * a - n * c,
            this._z = r * l + o * c + n * s - i * a,
            this._w = o * l - n * a - i * s - r * c,
            this._onChangeCallback(),
            this
        },
        slerp: function(t, e) {
            if (0 === e)
                return this;
            if (1 === e)
                return this.copy(t);
            var n = this._x
              , i = this._y
              , r = this._z
              , o = this._w
              , a = o * t._w + n * t._x + i * t._y + r * t._z;
            if (a < 0 ? (this._w = -t._w,
            this._x = -t._x,
            this._y = -t._y,
            this._z = -t._z,
            a = -a) : this.copy(t),
            a >= 1)
                return this._w = o,
                this._x = n,
                this._y = i,
                this._z = r,
                this;
            var s = 1 - a * a;
            if (s <= Number.EPSILON) {
                var c = 1 - e;
                return this._w = c * o + e * this._w,
                this._x = c * n + e * this._x,
                this._y = c * i + e * this._y,
                this._z = c * r + e * this._z,
                this.normalize(),
                this._onChangeCallback(),
                this
            }
            var l = Math.sqrt(s)
              , u = Math.atan2(l, a)
              , d = Math.sin((1 - e) * u) / l
              , p = Math.sin(e * u) / l;
            return this._w = o * d + this._w * p,
            this._x = n * d + this._x * p,
            this._y = i * d + this._y * p,
            this._z = r * d + this._z * p,
            this._onChangeCallback(),
            this
        },
        equals: function(t) {
            return t._x === this._x && t._y === this._y && t._z === this._z && t._w === this._w
        },
        fromArray: function(t, e) {
            return void 0 === e && (e = 0),
            this._x = t[e],
            this._y = t[e + 1],
            this._z = t[e + 2],
            this._w = t[e + 3],
            this._onChangeCallback(),
            this
        },
        toArray: function(t, e) {
            return void 0 === t && (t = []),
            void 0 === e && (e = 0),
            t[e] = this._x,
            t[e + 1] = this._y,
            t[e + 2] = this._z,
            t[e + 3] = this._w,
            t
        },
        fromBufferAttribute: function(t, e) {
            return this._x = t.getX(e),
            this._y = t.getY(e),
            this._z = t.getZ(e),
            this._w = t.getW(e),
            this
        },
        _onChange: function(t) {
            return this._onChangeCallback = t,
            this
        },
        _onChangeCallback: function() {}
    });
    var oi = new si
      , ai = new ri;
    function si(t, e, n) {
        this.x = t || 0,
        this.y = e || 0,
        this.z = n || 0
    }
    Object.assign(si.prototype, {
        isVector3: !0,
        set: function(t, e, n) {
            return this.x = t,
            this.y = e,
            this.z = n,
            this
        },
        setScalar: function(t) {
            return this.x = t,
            this.y = t,
            this.z = t,
            this
        },
        setX: function(t) {
            return this.x = t,
            this
        },
        setY: function(t) {
            return this.y = t,
            this
        },
        setZ: function(t) {
            return this.z = t,
            this
        },
        setComponent: function(t, e) {
            switch (t) {
            case 0:
                this.x = e;
                break;
            case 1:
                this.y = e;
                break;
            case 2:
                this.z = e;
                break;
            default:
                throw new Error("index is out of range: " + t)
            }
            return this
        },
        getComponent: function(t) {
            switch (t) {
            case 0:
                return this.x;
            case 1:
                return this.y;
            case 2:
                return this.z;
            default:
                throw new Error("index is out of range: " + t)
            }
        },
        clone: function() {
            return new this.constructor(this.x,this.y,this.z)
        },
        copy: function(t) {
            return this.x = t.x,
            this.y = t.y,
            this.z = t.z,
            this
        },
        add: function(t, e) {
            return void 0 !== e ? (console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),
            this.addVectors(t, e)) : (this.x += t.x,
            this.y += t.y,
            this.z += t.z,
            this)
        },
        addScalar: function(t) {
            return this.x += t,
            this.y += t,
            this.z += t,
            this
        },
        addVectors: function(t, e) {
            return this.x = t.x + e.x,
            this.y = t.y + e.y,
            this.z = t.z + e.z,
            this
        },
        addScaledVector: function(t, e) {
            return this.x += t.x * e,
            this.y += t.y * e,
            this.z += t.z * e,
            this
        },
        sub: function(t, e) {
            return void 0 !== e ? (console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),
            this.subVectors(t, e)) : (this.x -= t.x,
            this.y -= t.y,
            this.z -= t.z,
            this)
        },
        subScalar: function(t) {
            return this.x -= t,
            this.y -= t,
            this.z -= t,
            this
        },
        subVectors: function(t, e) {
            return this.x = t.x - e.x,
            this.y = t.y - e.y,
            this.z = t.z - e.z,
            this
        },
        multiply: function(t, e) {
            return void 0 !== e ? (console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),
            this.multiplyVectors(t, e)) : (this.x *= t.x,
            this.y *= t.y,
            this.z *= t.z,
            this)
        },
        multiplyScalar: function(t) {
            return this.x *= t,
            this.y *= t,
            this.z *= t,
            this
        },
        multiplyVectors: function(t, e) {
            return this.x = t.x * e.x,
            this.y = t.y * e.y,
            this.z = t.z * e.z,
            this
        },
        applyEuler: function(t) {
            return t && t.isEuler || console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),
            this.applyQuaternion(ai.setFromEuler(t))
        },
        applyAxisAngle: function(t, e) {
            return this.applyQuaternion(ai.setFromAxisAngle(t, e))
        },
        applyMatrix3: function(t) {
            var e = this.x
              , n = this.y
              , i = this.z
              , r = t.elements;
            return this.x = r[0] * e + r[3] * n + r[6] * i,
            this.y = r[1] * e + r[4] * n + r[7] * i,
            this.z = r[2] * e + r[5] * n + r[8] * i,
            this
        },
        applyNormalMatrix: function(t) {
            return this.applyMatrix3(t).normalize()
        },
        applyMatrix4: function(t) {
            var e = this.x
              , n = this.y
              , i = this.z
              , r = t.elements
              , o = 1 / (r[3] * e + r[7] * n + r[11] * i + r[15]);
            return this.x = (r[0] * e + r[4] * n + r[8] * i + r[12]) * o,
            this.y = (r[1] * e + r[5] * n + r[9] * i + r[13]) * o,
            this.z = (r[2] * e + r[6] * n + r[10] * i + r[14]) * o,
            this
        },
        applyQuaternion: function(t) {
            var e = this.x
              , n = this.y
              , i = this.z
              , r = t.x
              , o = t.y
              , a = t.z
              , s = t.w
              , c = s * e + o * i - a * n
              , l = s * n + a * e - r * i
              , u = s * i + r * n - o * e
              , d = -r * e - o * n - a * i;
            return this.x = c * s + d * -r + l * -a - u * -o,
            this.y = l * s + d * -o + u * -r - c * -a,
            this.z = u * s + d * -a + c * -o - l * -r,
            this
        },
        project: function(t) {
            return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)
        },
        unproject: function(t) {
            return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)
        },
        transformDirection: function(t) {
            var e = this.x
              , n = this.y
              , i = this.z
              , r = t.elements;
            return this.x = r[0] * e + r[4] * n + r[8] * i,
            this.y = r[1] * e + r[5] * n + r[9] * i,
            this.z = r[2] * e + r[6] * n + r[10] * i,
            this.normalize()
        },
        divide: function(t) {
            return this.x /= t.x,
            this.y /= t.y,
            this.z /= t.z,
            this
        },
        divideScalar: function(t) {
            return this.multiplyScalar(1 / t)
        },
        min: function(t) {
            return this.x = Math.min(this.x, t.x),
            this.y = Math.min(this.y, t.y),
            this.z = Math.min(this.z, t.z),
            this
        },
        max: function(t) {
            return this.x = Math.max(this.x, t.x),
            this.y = Math.max(this.y, t.y),
            this.z = Math.max(this.z, t.z),
            this
        },
        clamp: function(t, e) {
            return this.x = Math.max(t.x, Math.min(e.x, this.x)),
            this.y = Math.max(t.y, Math.min(e.y, this.y)),
            this.z = Math.max(t.z, Math.min(e.z, this.z)),
            this
        },
        clampScalar: function(t, e) {
            return this.x = Math.max(t, Math.min(e, this.x)),
            this.y = Math.max(t, Math.min(e, this.y)),
            this.z = Math.max(t, Math.min(e, this.z)),
            this
        },
        clampLength: function(t, e) {
            var n = this.length();
            return this.divideScalar(n || 1).multiplyScalar(Math.max(t, Math.min(e, n)))
        },
        floor: function() {
            return this.x = Math.floor(this.x),
            this.y = Math.floor(this.y),
            this.z = Math.floor(this.z),
            this
        },
        ceil: function() {
            return this.x = Math.ceil(this.x),
            this.y = Math.ceil(this.y),
            this.z = Math.ceil(this.z),
            this
        },
        round: function() {
            return this.x = Math.round(this.x),
            this.y = Math.round(this.y),
            this.z = Math.round(this.z),
            this
        },
        roundToZero: function() {
            return this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x),
            this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y),
            this.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z),
            this
        },
        negate: function() {
            return this.x = -this.x,
            this.y = -this.y,
            this.z = -this.z,
            this
        },
        dot: function(t) {
            return this.x * t.x + this.y * t.y + this.z * t.z
        },
        lengthSq: function() {
            return this.x * this.x + this.y * this.y + this.z * this.z
        },
        length: function() {
            return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z)
        },
        manhattanLength: function() {
            return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z)
        },
        normalize: function() {
            return this.divideScalar(this.length() || 1)
        },
        setLength: function(t) {
            return this.normalize().multiplyScalar(t)
        },
        lerp: function(t, e) {
            return this.x += (t.x - this.x) * e,
            this.y += (t.y - this.y) * e,
            this.z += (t.z - this.z) * e,
            this
        },
        lerpVectors: function(t, e, n) {
            return this.subVectors(e, t).multiplyScalar(n).add(t)
        },
        cross: function(t, e) {
            return void 0 !== e ? (console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),
            this.crossVectors(t, e)) : this.crossVectors(this, t)
        },
        crossVectors: function(t, e) {
            var n = t.x
              , i = t.y
              , r = t.z
              , o = e.x
              , a = e.y
              , s = e.z;
            return this.x = i * s - r * a,
            this.y = r * o - n * s,
            this.z = n * a - i * o,
            this
        },
        projectOnVector: function(t) {
            var e = t.lengthSq();
            if (0 === e)
                return this.set(0, 0, 0);
            var n = t.dot(this) / e;
            return this.copy(t).multiplyScalar(n)
        },
        projectOnPlane: function(t) {
            return oi.copy(this).projectOnVector(t),
            this.sub(oi)
        },
        reflect: function(t) {
            return this.sub(oi.copy(t).multiplyScalar(2 * this.dot(t)))
        },
        angleTo: function(t) {
            var e = Math.sqrt(this.lengthSq() * t.lengthSq());
            if (0 === e)
                return Math.PI / 2;
            var n = this.dot(t) / e;
            return Math.acos(Kn.clamp(n, -1, 1))
        },
        distanceTo: function(t) {
            return Math.sqrt(this.distanceToSquared(t))
        },
        distanceToSquared: function(t) {
            var e = this.x - t.x
              , n = this.y - t.y
              , i = this.z - t.z;
            return e * e + n * n + i * i
        },
        manhattanDistanceTo: function(t) {
            return Math.abs(this.x - t.x) + Math.abs(this.y - t.y) + Math.abs(this.z - t.z)
        },
        setFromSpherical: function(t) {
            return this.setFromSphericalCoords(t.radius, t.phi, t.theta)
        },
        setFromSphericalCoords: function(t, e, n) {
            var i = Math.sin(e) * t;
            return this.x = i * Math.sin(n),
            this.y = Math.cos(e) * t,
            this.z = i * Math.cos(n),
            this
        },
        setFromCylindrical: function(t) {
            return this.setFromCylindricalCoords(t.radius, t.theta, t.y)
        },
        setFromCylindricalCoords: function(t, e, n) {
            return this.x = t * Math.sin(e),
            this.y = n,
            this.z = t * Math.cos(e),
            this
        },
        setFromMatrixPosition: function(t) {
            var e = t.elements;
            return this.x = e[12],
            this.y = e[13],
            this.z = e[14],
            this
        },
        setFromMatrixScale: function(t) {
            var e = this.setFromMatrixColumn(t, 0).length()
              , n = this.setFromMatrixColumn(t, 1).length()
              , i = this.setFromMatrixColumn(t, 2).length();
            return this.x = e,
            this.y = n,
            this.z = i,
            this
        },
        setFromMatrixColumn: function(t, e) {
            return this.fromArray(t.elements, 4 * e)
        },
        setFromMatrix3Column: function(t, e) {
            return this.fromArray(t.elements, 3 * e)
        },
        equals: function(t) {
            return t.x === this.x && t.y === this.y && t.z === this.z
        },
        fromArray: function(t, e) {
            return void 0 === e && (e = 0),
            this.x = t[e],
            this.y = t[e + 1],
            this.z = t[e + 2],
            this
        },
        toArray: function(t, e) {
            return void 0 === t && (t = []),
            void 0 === e && (e = 0),
            t[e] = this.x,
            t[e + 1] = this.y,
            t[e + 2] = this.z,
            t
        },
        fromBufferAttribute: function(t, e, n) {
            return void 0 !== n && console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),
            this.x = t.getX(e),
            this.y = t.getY(e),
            this.z = t.getZ(e),
            this
        }
    });
    var ci = new si
      , li = new mi
      , ui = new si(0,0,0)
      , di = new si(1,1,1)
      , pi = new si
      , hi = new si
      , fi = new si;
    function mi() {
        this.elements = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],
        arguments.length > 0 && console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")
    }
    Object.assign(mi.prototype, {
        isMatrix4: !0,
        set: function(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m) {
            var g = this.elements;
            return g[0] = t,
            g[4] = e,
            g[8] = n,
            g[12] = i,
            g[1] = r,
            g[5] = o,
            g[9] = a,
            g[13] = s,
            g[2] = c,
            g[6] = l,
            g[10] = u,
            g[14] = d,
            g[3] = p,
            g[7] = h,
            g[11] = f,
            g[15] = m,
            this
        },
        identity: function() {
            return this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1),
            this
        },
        clone: function() {
            return (new mi).fromArray(this.elements)
        },
        copy: function(t) {
            var e = this.elements
              , n = t.elements;
            return e[0] = n[0],
            e[1] = n[1],
            e[2] = n[2],
            e[3] = n[3],
            e[4] = n[4],
            e[5] = n[5],
            e[6] = n[6],
            e[7] = n[7],
            e[8] = n[8],
            e[9] = n[9],
            e[10] = n[10],
            e[11] = n[11],
            e[12] = n[12],
            e[13] = n[13],
            e[14] = n[14],
            e[15] = n[15],
            this
        },
        copyPosition: function(t) {
            var e = this.elements
              , n = t.elements;
            return e[12] = n[12],
            e[13] = n[13],
            e[14] = n[14],
            this
        },
        extractBasis: function(t, e, n) {
            return t.setFromMatrixColumn(this, 0),
            e.setFromMatrixColumn(this, 1),
            n.setFromMatrixColumn(this, 2),
            this
        },
        makeBasis: function(t, e, n) {
            return this.set(t.x, e.x, n.x, 0, t.y, e.y, n.y, 0, t.z, e.z, n.z, 0, 0, 0, 0, 1),
            this
        },
        extractRotation: function(t) {
            var e = this.elements
              , n = t.elements
              , i = 1 / ci.setFromMatrixColumn(t, 0).length()
              , r = 1 / ci.setFromMatrixColumn(t, 1).length()
              , o = 1 / ci.setFromMatrixColumn(t, 2).length();
            return e[0] = n[0] * i,
            e[1] = n[1] * i,
            e[2] = n[2] * i,
            e[3] = 0,
            e[4] = n[4] * r,
            e[5] = n[5] * r,
            e[6] = n[6] * r,
            e[7] = 0,
            e[8] = n[8] * o,
            e[9] = n[9] * o,
            e[10] = n[10] * o,
            e[11] = 0,
            e[12] = 0,
            e[13] = 0,
            e[14] = 0,
            e[15] = 1,
            this
        },
        makeRotationFromEuler: function(t) {
            t && t.isEuler || console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");
            var e = this.elements
              , n = t.x
              , i = t.y
              , r = t.z
              , o = Math.cos(n)
              , a = Math.sin(n)
              , s = Math.cos(i)
              , c = Math.sin(i)
              , l = Math.cos(r)
              , u = Math.sin(r);
            if ("XYZ" === t.order) {
                var d = o * l
                  , p = o * u
                  , h = a * l
                  , f = a * u;
                e[0] = s * l,
                e[4] = -s * u,
                e[8] = c,
                e[1] = p + h * c,
                e[5] = d - f * c,
                e[9] = -a * s,
                e[2] = f - d * c,
                e[6] = h + p * c,
                e[10] = o * s
            } else if ("YXZ" === t.order) {
                var m = s * l
                  , g = s * u
                  , v = c * l
                  , y = c * u;
                e[0] = m + y * a,
                e[4] = v * a - g,
                e[8] = o * c,
                e[1] = o * u,
                e[5] = o * l,
                e[9] = -a,
                e[2] = g * a - v,
                e[6] = y + m * a,
                e[10] = o * s
            } else if ("ZXY" === t.order) {
                m = s * l,
                g = s * u,
                v = c * l,
                y = c * u;
                e[0] = m - y * a,
                e[4] = -o * u,
                e[8] = v + g * a,
                e[1] = g + v * a,
                e[5] = o * l,
                e[9] = y - m * a,
                e[2] = -o * c,
                e[6] = a,
                e[10] = o * s
            } else if ("ZYX" === t.order) {
                d = o * l,
                p = o * u,
                h = a * l,
                f = a * u;
                e[0] = s * l,
                e[4] = h * c - p,
                e[8] = d * c + f,
                e[1] = s * u,
                e[5] = f * c + d,
                e[9] = p * c - h,
                e[2] = -c,
                e[6] = a * s,
                e[10] = o * s
            } else if ("YZX" === t.order) {
                var b = o * s
                  , w = o * c
                  , S = a * s
                  , x = a * c;
                e[0] = s * l,
                e[4] = x - b * u,
                e[8] = S * u + w,
                e[1] = u,
                e[5] = o * l,
                e[9] = -a * l,
                e[2] = -c * l,
                e[6] = w * u + S,
                e[10] = b - x * u
            } else if ("XZY" === t.order) {
                b = o * s,
                w = o * c,
                S = a * s,
                x = a * c;
                e[0] = s * l,
                e[4] = -u,
                e[8] = c * l,
                e[1] = b * u + x,
                e[5] = o * l,
                e[9] = w * u - S,
                e[2] = S * u - w,
                e[6] = a * l,
                e[10] = x * u + b
            }
            return e[3] = 0,
            e[7] = 0,
            e[11] = 0,
            e[12] = 0,
            e[13] = 0,
            e[14] = 0,
            e[15] = 1,
            this
        },
        makeRotationFromQuaternion: function(t) {
            return this.compose(ui, t, di)
        },
        lookAt: function(t, e, n) {
            var i = this.elements;
            return fi.subVectors(t, e),
            0 === fi.lengthSq() && (fi.z = 1),
            fi.normalize(),
            pi.crossVectors(n, fi),
            0 === pi.lengthSq() && (1 === Math.abs(n.z) ? fi.x += 1e-4 : fi.z += 1e-4,
            fi.normalize(),
            pi.crossVectors(n, fi)),
            pi.normalize(),
            hi.crossVectors(fi, pi),
            i[0] = pi.x,
            i[4] = hi.x,
            i[8] = fi.x,
            i[1] = pi.y,
            i[5] = hi.y,
            i[9] = fi.y,
            i[2] = pi.z,
            i[6] = hi.z,
            i[10] = fi.z,
            this
        },
        multiply: function(t, e) {
            return void 0 !== e ? (console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),
            this.multiplyMatrices(t, e)) : this.multiplyMatrices(this, t)
        },
        premultiply: function(t) {
            return this.multiplyMatrices(t, this)
        },
        multiplyMatrices: function(t, e) {
            var n = t.elements
              , i = e.elements
              , r = this.elements
              , o = n[0]
              , a = n[4]
              , s = n[8]
              , c = n[12]
              , l = n[1]
              , u = n[5]
              , d = n[9]
              , p = n[13]
              , h = n[2]
              , f = n[6]
              , m = n[10]
              , g = n[14]
              , v = n[3]
              , y = n[7]
              , b = n[11]
              , w = n[15]
              , S = i[0]
              , x = i[4]
              , M = i[8]
              , E = i[12]
              , C = i[1]
              , A = i[5]
              , T = i[9]
              , O = i[13]
              , _ = i[2]
              , P = i[6]
              , I = i[10]
              , k = i[14]
              , D = i[3]
              , R = i[7]
              , L = i[11]
              , N = i[15];
            return r[0] = o * S + a * C + s * _ + c * D,
            r[4] = o * x + a * A + s * P + c * R,
            r[8] = o * M + a * T + s * I + c * L,
            r[12] = o * E + a * O + s * k + c * N,
            r[1] = l * S + u * C + d * _ + p * D,
            r[5] = l * x + u * A + d * P + p * R,
            r[9] = l * M + u * T + d * I + p * L,
            r[13] = l * E + u * O + d * k + p * N,
            r[2] = h * S + f * C + m * _ + g * D,
            r[6] = h * x + f * A + m * P + g * R,
            r[10] = h * M + f * T + m * I + g * L,
            r[14] = h * E + f * O + m * k + g * N,
            r[3] = v * S + y * C + b * _ + w * D,
            r[7] = v * x + y * A + b * P + w * R,
            r[11] = v * M + y * T + b * I + w * L,
            r[15] = v * E + y * O + b * k + w * N,
            this
        },
        multiplyScalar: function(t) {
            var e = this.elements;
            return e[0] *= t,
            e[4] *= t,
            e[8] *= t,
            e[12] *= t,
            e[1] *= t,
            e[5] *= t,
            e[9] *= t,
            e[13] *= t,
            e[2] *= t,
            e[6] *= t,
            e[10] *= t,
            e[14] *= t,
            e[3] *= t,
            e[7] *= t,
            e[11] *= t,
            e[15] *= t,
            this
        },
        determinant: function() {
            var t = this.elements
              , e = t[0]
              , n = t[4]
              , i = t[8]
              , r = t[12]
              , o = t[1]
              , a = t[5]
              , s = t[9]
              , c = t[13]
              , l = t[2]
              , u = t[6]
              , d = t[10]
              , p = t[14];
            return t[3] * (+r * s * u - i * c * u - r * a * d + n * c * d + i * a * p - n * s * p) + t[7] * (+e * s * p - e * c * d + r * o * d - i * o * p + i * c * l - r * s * l) + t[11] * (+e * c * u - e * a * p - r * o * u + n * o * p + r * a * l - n * c * l) + t[15] * (-i * a * l - e * s * u + e * a * d + i * o * u - n * o * d + n * s * l)
        },
        transpose: function() {
            var t, e = this.elements;
            return t = e[1],
            e[1] = e[4],
            e[4] = t,
            t = e[2],
            e[2] = e[8],
            e[8] = t,
            t = e[6],
            e[6] = e[9],
            e[9] = t,
            t = e[3],
            e[3] = e[12],
            e[12] = t,
            t = e[7],
            e[7] = e[13],
            e[13] = t,
            t = e[11],
            e[11] = e[14],
            e[14] = t,
            this
        },
        setPosition: function(t, e, n) {
            var i = this.elements;
            return t.isVector3 ? (i[12] = t.x,
            i[13] = t.y,
            i[14] = t.z) : (i[12] = t,
            i[13] = e,
            i[14] = n),
            this
        },
        getInverse: function(t, e) {
            void 0 !== e && console.warn("THREE.Matrix4: .getInverse() can no longer be configured to throw on degenerate.");
            var n = this.elements
              , i = t.elements
              , r = i[0]
              , o = i[1]
              , a = i[2]
              , s = i[3]
              , c = i[4]
              , l = i[5]
              , u = i[6]
              , d = i[7]
              , p = i[8]
              , h = i[9]
              , f = i[10]
              , m = i[11]
              , g = i[12]
              , v = i[13]
              , y = i[14]
              , b = i[15]
              , w = h * y * d - v * f * d + v * u * m - l * y * m - h * u * b + l * f * b
              , S = g * f * d - p * y * d - g * u * m + c * y * m + p * u * b - c * f * b
              , x = p * v * d - g * h * d + g * l * m - c * v * m - p * l * b + c * h * b
              , M = g * h * u - p * v * u - g * l * f + c * v * f + p * l * y - c * h * y
              , E = r * w + o * S + a * x + s * M;
            if (0 === E)
                return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
            var C = 1 / E;
            return n[0] = w * C,
            n[1] = (v * f * s - h * y * s - v * a * m + o * y * m + h * a * b - o * f * b) * C,
            n[2] = (l * y * s - v * u * s + v * a * d - o * y * d - l * a * b + o * u * b) * C,
            n[3] = (h * u * s - l * f * s - h * a * d + o * f * d + l * a * m - o * u * m) * C,
            n[4] = S * C,
            n[5] = (p * y * s - g * f * s + g * a * m - r * y * m - p * a * b + r * f * b) * C,
            n[6] = (g * u * s - c * y * s - g * a * d + r * y * d + c * a * b - r * u * b) * C,
            n[7] = (c * f * s - p * u * s + p * a * d - r * f * d - c * a * m + r * u * m) * C,
            n[8] = x * C,
            n[9] = (g * h * s - p * v * s - g * o * m + r * v * m + p * o * b - r * h * b) * C,
            n[10] = (c * v * s - g * l * s + g * o * d - r * v * d - c * o * b + r * l * b) * C,
            n[11] = (p * l * s - c * h * s - p * o * d + r * h * d + c * o * m - r * l * m) * C,
            n[12] = M * C,
            n[13] = (p * v * a - g * h * a + g * o * f - r * v * f - p * o * y + r * h * y) * C,
            n[14] = (g * l * a - c * v * a - g * o * u + r * v * u + c * o * y - r * l * y) * C,
            n[15] = (c * h * a - p * l * a + p * o * u - r * h * u - c * o * f + r * l * f) * C,
            this
        },
        scale: function(t) {
            var e = this.elements
              , n = t.x
              , i = t.y
              , r = t.z;
            return e[0] *= n,
            e[4] *= i,
            e[8] *= r,
            e[1] *= n,
            e[5] *= i,
            e[9] *= r,
            e[2] *= n,
            e[6] *= i,
            e[10] *= r,
            e[3] *= n,
            e[7] *= i,
            e[11] *= r,
            this
        },
        getMaxScaleOnAxis: function() {
            var t = this.elements
              , e = t[0] * t[0] + t[1] * t[1] + t[2] * t[2]
              , n = t[4] * t[4] + t[5] * t[5] + t[6] * t[6]
              , i = t[8] * t[8] + t[9] * t[9] + t[10] * t[10];
            return Math.sqrt(Math.max(e, n, i))
        },
        makeTranslation: function(t, e, n) {
            return this.set(1, 0, 0, t, 0, 1, 0, e, 0, 0, 1, n, 0, 0, 0, 1),
            this
        },
        makeRotationX: function(t) {
            var e = Math.cos(t)
              , n = Math.sin(t);
            return this.set(1, 0, 0, 0, 0, e, -n, 0, 0, n, e, 0, 0, 0, 0, 1),
            this
        },
        makeRotationY: function(t) {
            var e = Math.cos(t)
              , n = Math.sin(t);
            return this.set(e, 0, n, 0, 0, 1, 0, 0, -n, 0, e, 0, 0, 0, 0, 1),
            this
        },
        makeRotationZ: function(t) {
            var e = Math.cos(t)
              , n = Math.sin(t);
            return this.set(e, -n, 0, 0, n, e, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1),
            this
        },
        makeRotationAxis: function(t, e) {
            var n = Math.cos(e)
              , i = Math.sin(e)
              , r = 1 - n
              , o = t.x
              , a = t.y
              , s = t.z
              , c = r * o
              , l = r * a;
            return this.set(c * o + n, c * a - i * s, c * s + i * a, 0, c * a + i * s, l * a + n, l * s - i * o, 0, c * s - i * a, l * s + i * o, r * s * s + n, 0, 0, 0, 0, 1),
            this
        },
        makeScale: function(t, e, n) {
            return this.set(t, 0, 0, 0, 0, e, 0, 0, 0, 0, n, 0, 0, 0, 0, 1),
            this
        },
        makeShear: function(t, e, n) {
            return this.set(1, e, n, 0, t, 1, n, 0, t, e, 1, 0, 0, 0, 0, 1),
            this
        },
        compose: function(t, e, n) {
            var i = this.elements
              , r = e._x
              , o = e._y
              , a = e._z
              , s = e._w
              , c = r + r
              , l = o + o
              , u = a + a
              , d = r * c
              , p = r * l
              , h = r * u
              , f = o * l
              , m = o * u
              , g = a * u
              , v = s * c
              , y = s * l
              , b = s * u
              , w = n.x
              , S = n.y
              , x = n.z;
            return i[0] = (1 - (f + g)) * w,
            i[1] = (p + b) * w,
            i[2] = (h - y) * w,
            i[3] = 0,
            i[4] = (p - b) * S,
            i[5] = (1 - (d + g)) * S,
            i[6] = (m + v) * S,
            i[7] = 0,
            i[8] = (h + y) * x,
            i[9] = (m - v) * x,
            i[10] = (1 - (d + f)) * x,
            i[11] = 0,
            i[12] = t.x,
            i[13] = t.y,
            i[14] = t.z,
            i[15] = 1,
            this
        },
        decompose: function(t, e, n) {
            var i = this.elements
              , r = ci.set(i[0], i[1], i[2]).length()
              , o = ci.set(i[4], i[5], i[6]).length()
              , a = ci.set(i[8], i[9], i[10]).length();
            this.determinant() < 0 && (r = -r),
            t.x = i[12],
            t.y = i[13],
            t.z = i[14],
            li.copy(this);
            var s = 1 / r
              , c = 1 / o
              , l = 1 / a;
            return li.elements[0] *= s,
            li.elements[1] *= s,
            li.elements[2] *= s,
            li.elements[4] *= c,
            li.elements[5] *= c,
            li.elements[6] *= c,
            li.elements[8] *= l,
            li.elements[9] *= l,
            li.elements[10] *= l,
            e.setFromRotationMatrix(li),
            n.x = r,
            n.y = o,
            n.z = a,
            this
        },
        makePerspective: function(t, e, n, i, r, o) {
            void 0 === o && console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");
            var a = this.elements
              , s = 2 * r / (e - t)
              , c = 2 * r / (n - i)
              , l = (e + t) / (e - t)
              , u = (n + i) / (n - i)
              , d = -(o + r) / (o - r)
              , p = -2 * o * r / (o - r);
            return a[0] = s,
            a[4] = 0,
            a[8] = l,
            a[12] = 0,
            a[1] = 0,
            a[5] = c,
            a[9] = u,
            a[13] = 0,
            a[2] = 0,
            a[6] = 0,
            a[10] = d,
            a[14] = p,
            a[3] = 0,
            a[7] = 0,
            a[11] = -1,
            a[15] = 0,
            this
        },
        makeOrthographic: function(t, e, n, i, r, o) {
            var a = this.elements
              , s = 1 / (e - t)
              , c = 1 / (n - i)
              , l = 1 / (o - r)
              , u = (e + t) * s
              , d = (n + i) * c
              , p = (o + r) * l;
            return a[0] = 2 * s,
            a[4] = 0,
            a[8] = 0,
            a[12] = -u,
            a[1] = 0,
            a[5] = 2 * c,
            a[9] = 0,
            a[13] = -d,
            a[2] = 0,
            a[6] = 0,
            a[10] = -2 * l,
            a[14] = -p,
            a[3] = 0,
            a[7] = 0,
            a[11] = 0,
            a[15] = 1,
            this
        },
        equals: function(t) {
            for (var e = this.elements, n = t.elements, i = 0; i < 16; i++)
                if (e[i] !== n[i])
                    return !1;
            return !0
        },
        fromArray: function(t, e) {
            void 0 === e && (e = 0);
            for (var n = 0; n < 16; n++)
                this.elements[n] = t[n + e];
            return this
        },
        toArray: function(t, e) {
            void 0 === t && (t = []),
            void 0 === e && (e = 0);
            var n = this.elements;
            return t[e] = n[0],
            t[e + 1] = n[1],
            t[e + 2] = n[2],
            t[e + 3] = n[3],
            t[e + 4] = n[4],
            t[e + 5] = n[5],
            t[e + 6] = n[6],
            t[e + 7] = n[7],
            t[e + 8] = n[8],
            t[e + 9] = n[9],
            t[e + 10] = n[10],
            t[e + 11] = n[11],
            t[e + 12] = n[12],
            t[e + 13] = n[13],
            t[e + 14] = n[14],
            t[e + 15] = n[15],
            t
        }
    });
    var gi = new mi
      , vi = new ri;
    function yi(t, e, n, i) {
        this._x = t || 0,
        this._y = e || 0,
        this._z = n || 0,
        this._order = i || yi.DefaultOrder
    }
    function bi() {
        this.mask = 1
    }
    yi.RotationOrders = ["XYZ", "YZX", "ZXY", "XZY", "YXZ", "ZYX"],
    yi.DefaultOrder = "XYZ",
    Object.defineProperties(yi.prototype, {
        x: {
            get: function() {
                return this._x
            },
            set: function(t) {
                this._x = t,
                this._onChangeCallback()
            }
        },
        y: {
            get: function() {
                return this._y
            },
            set: function(t) {
                this._y = t,
                this._onChangeCallback()
            }
        },
        z: {
            get: function() {
                return this._z
            },
            set: function(t) {
                this._z = t,
                this._onChangeCallback()
            }
        },
        order: {
            get: function() {
                return this._order
            },
            set: function(t) {
                this._order = t,
                this._onChangeCallback()
            }
        }
    }),
    Object.assign(yi.prototype, {
        isEuler: !0,
        set: function(t, e, n, i) {
            return this._x = t,
            this._y = e,
            this._z = n,
            this._order = i || this._order,
            this._onChangeCallback(),
            this
        },
        clone: function() {
            return new this.constructor(this._x,this._y,this._z,this._order)
        },
        copy: function(t) {
            return this._x = t._x,
            this._y = t._y,
            this._z = t._z,
            this._order = t._order,
            this._onChangeCallback(),
            this
        },
        setFromRotationMatrix: function(t, e, n) {
            var i = Kn.clamp
              , r = t.elements
              , o = r[0]
              , a = r[4]
              , s = r[8]
              , c = r[1]
              , l = r[5]
              , u = r[9]
              , d = r[2]
              , p = r[6]
              , h = r[10];
            return "XYZ" === (e = e || this._order) ? (this._y = Math.asin(i(s, -1, 1)),
            Math.abs(s) < .9999999 ? (this._x = Math.atan2(-u, h),
            this._z = Math.atan2(-a, o)) : (this._x = Math.atan2(p, l),
            this._z = 0)) : "YXZ" === e ? (this._x = Math.asin(-i(u, -1, 1)),
            Math.abs(u) < .9999999 ? (this._y = Math.atan2(s, h),
            this._z = Math.atan2(c, l)) : (this._y = Math.atan2(-d, o),
            this._z = 0)) : "ZXY" === e ? (this._x = Math.asin(i(p, -1, 1)),
            Math.abs(p) < .9999999 ? (this._y = Math.atan2(-d, h),
            this._z = Math.atan2(-a, l)) : (this._y = 0,
            this._z = Math.atan2(c, o))) : "ZYX" === e ? (this._y = Math.asin(-i(d, -1, 1)),
            Math.abs(d) < .9999999 ? (this._x = Math.atan2(p, h),
            this._z = Math.atan2(c, o)) : (this._x = 0,
            this._z = Math.atan2(-a, l))) : "YZX" === e ? (this._z = Math.asin(i(c, -1, 1)),
            Math.abs(c) < .9999999 ? (this._x = Math.atan2(-u, l),
            this._y = Math.atan2(-d, o)) : (this._x = 0,
            this._y = Math.atan2(s, h))) : "XZY" === e ? (this._z = Math.asin(-i(a, -1, 1)),
            Math.abs(a) < .9999999 ? (this._x = Math.atan2(p, l),
            this._y = Math.atan2(s, o)) : (this._x = Math.atan2(-u, h),
            this._y = 0)) : console.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: " + e),
            this._order = e,
            !1 !== n && this._onChangeCallback(),
            this
        },
        setFromQuaternion: function(t, e, n) {
            return gi.makeRotationFromQuaternion(t),
            this.setFromRotationMatrix(gi, e, n)
        },
        setFromVector3: function(t, e) {
            return this.set(t.x, t.y, t.z, e || this._order)
        },
        reorder: function(t) {
            return vi.setFromEuler(this),
            this.setFromQuaternion(vi, t)
        },
        equals: function(t) {
            return t._x === this._x && t._y === this._y && t._z === this._z && t._order === this._order
        },
        fromArray: function(t) {
            return this._x = t[0],
            this._y = t[1],
            this._z = t[2],
            void 0 !== t[3] && (this._order = t[3]),
            this._onChangeCallback(),
            this
        },
        toArray: function(t, e) {
            return void 0 === t && (t = []),
            void 0 === e && (e = 0),
            t[e] = this._x,
            t[e + 1] = this._y,
            t[e + 2] = this._z,
            t[e + 3] = this._order,
            t
        },
        toVector3: function(t) {
            return t ? t.set(this._x, this._y, this._z) : new si(this._x,this._y,this._z)
        },
        _onChange: function(t) {
            return this._onChangeCallback = t,
            this
        },
        _onChangeCallback: function() {}
    }),
    Object.assign(bi.prototype, {
        set: function(t) {
            this.mask = 1 << t | 0
        },
        enable: function(t) {
            this.mask |= 1 << t | 0
        },
        enableAll: function() {
            this.mask = -1
        },
        toggle: function(t) {
            this.mask ^= 1 << t | 0
        },
        disable: function(t) {
            this.mask &= ~(1 << t | 0)
        },
        disableAll: function() {
            this.mask = 0
        },
        test: function(t) {
            return 0 != (this.mask & t.mask)
        }
    });
    var wi = 0
      , Si = new si
      , xi = new ri
      , Mi = new mi
      , Ei = new si
      , Ci = new si
      , Ai = new si
      , Ti = new ri
      , Oi = new si(1,0,0)
      , _i = new si(0,1,0)
      , Pi = new si(0,0,1)
      , Ii = {
        type: "added"
    }
      , ki = {
        type: "removed"
    };
    function Di() {
        Object.defineProperty(this, "id", {
            value: wi++
        }),
        this.uuid = Kn.generateUUID(),
        this.name = "",
        this.type = "Object3D",
        this.parent = null,
        this.children = [],
        this.up = Di.DefaultUp.clone();
        var t = new si
          , e = new yi
          , n = new ri
          , i = new si(1,1,1);
        e._onChange((function() {
            n.setFromEuler(e, !1)
        }
        )),
        n._onChange((function() {
            e.setFromQuaternion(n, void 0, !1)
        }
        )),
        Object.defineProperties(this, {
            position: {
                configurable: !0,
                enumerable: !0,
                value: t
            },
            rotation: {
                configurable: !0,
                enumerable: !0,
                value: e
            },
            quaternion: {
                configurable: !0,
                enumerable: !0,
                value: n
            },
            scale: {
                configurable: !0,
                enumerable: !0,
                value: i
            },
            modelViewMatrix: {
                value: new mi
            },
            normalMatrix: {
                value: new Jn
            }
        }),
        this.matrix = new mi,
        this.matrixWorld = new mi,
        this.matrixAutoUpdate = Di.DefaultMatrixAutoUpdate,
        this.matrixWorldNeedsUpdate = !1,
        this.layers = new bi,
        this.visible = !0,
        this.castShadow = !1,
        this.receiveShadow = !1,
        this.frustumCulled = !0,
        this.renderOrder = 0,
        this.userData = {}
    }
    function Ri() {
        Di.call(this),
        this.type = "Scene",
        this.background = null,
        this.environment = null,
        this.fog = null,
        this.overrideMaterial = null,
        this.autoUpdate = !0,
        "undefined" != typeof __THREE_DEVTOOLS__ && __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{
            detail: this
        }))
    }
    Di.DefaultUp = new si(0,1,0),
    Di.DefaultMatrixAutoUpdate = !0,
    Di.prototype = Object.assign(Object.create(Wn.prototype), {
        constructor: Di,
        isObject3D: !0,
        onBeforeRender: function() {},
        onAfterRender: function() {},
        applyMatrix4: function(t) {
            this.matrixAutoUpdate && this.updateMatrix(),
            this.matrix.premultiply(t),
            this.matrix.decompose(this.position, this.quaternion, this.scale)
        },
        applyQuaternion: function(t) {
            return this.quaternion.premultiply(t),
            this
        },
        setRotationFromAxisAngle: function(t, e) {
            this.quaternion.setFromAxisAngle(t, e)
        },
        setRotationFromEuler: function(t) {
            this.quaternion.setFromEuler(t, !0)
        },
        setRotationFromMatrix: function(t) {
            this.quaternion.setFromRotationMatrix(t)
        },
        setRotationFromQuaternion: function(t) {
            this.quaternion.copy(t)
        },
        rotateOnAxis: function(t, e) {
            return xi.setFromAxisAngle(t, e),
            this.quaternion.multiply(xi),
            this
        },
        rotateOnWorldAxis: function(t, e) {
            return xi.setFromAxisAngle(t, e),
            this.quaternion.premultiply(xi),
            this
        },
        rotateX: function(t) {
            return this.rotateOnAxis(Oi, t)
        },
        rotateY: function(t) {
            return this.rotateOnAxis(_i, t)
        },
        rotateZ: function(t) {
            return this.rotateOnAxis(Pi, t)
        },
        translateOnAxis: function(t, e) {
            return Si.copy(t).applyQuaternion(this.quaternion),
            this.position.add(Si.multiplyScalar(e)),
            this
        },
        translateX: function(t) {
            return this.translateOnAxis(Oi, t)
        },
        translateY: function(t) {
            return this.translateOnAxis(_i, t)
        },
        translateZ: function(t) {
            return this.translateOnAxis(Pi, t)
        },
        localToWorld: function(t) {
            return t.applyMatrix4(this.matrixWorld)
        },
        worldToLocal: function(t) {
            return t.applyMatrix4(Mi.getInverse(this.matrixWorld))
        },
        lookAt: function(t, e, n) {
            t.isVector3 ? Ei.copy(t) : Ei.set(t, e, n);
            var i = this.parent;
            this.updateWorldMatrix(!0, !1),
            Ci.setFromMatrixPosition(this.matrixWorld),
            this.isCamera || this.isLight ? Mi.lookAt(Ci, Ei, this.up) : Mi.lookAt(Ei, Ci, this.up),
            this.quaternion.setFromRotationMatrix(Mi),
            i && (Mi.extractRotation(i.matrixWorld),
            xi.setFromRotationMatrix(Mi),
            this.quaternion.premultiply(xi.inverse()))
        },
        add: function(t) {
            if (arguments.length > 1) {
                for (var e = 0; e < arguments.length; e++)
                    this.add(arguments[e]);
                return this
            }
            return t === this ? (console.error("THREE.Object3D.add: object can't be added as a child of itself.", t),
            this) : (t && t.isObject3D ? (null !== t.parent && t.parent.remove(t),
            t.parent = this,
            this.children.push(t),
            t.dispatchEvent(Ii)) : console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.", t),
            this)
        },
        remove: function(t) {
            if (arguments.length > 1) {
                for (var e = 0; e < arguments.length; e++)
                    this.remove(arguments[e]);
                return this
            }
            var n = this.children.indexOf(t);
            return -1 !== n && (t.parent = null,
            this.children.splice(n, 1),
            t.dispatchEvent(ki)),
            this
        },
        attach: function(t) {
            return this.updateWorldMatrix(!0, !1),
            Mi.getInverse(this.matrixWorld),
            null !== t.parent && (t.parent.updateWorldMatrix(!0, !1),
            Mi.multiply(t.parent.matrixWorld)),
            t.applyMatrix4(Mi),
            t.updateWorldMatrix(!1, !1),
            this.add(t),
            this
        },
        getObjectById: function(t) {
            return this.getObjectByProperty("id", t)
        },
        getObjectByName: function(t) {
            return this.getObjectByProperty("name", t)
        },
        getObjectByProperty: function(t, e) {
            if (this[t] === e)
                return this;
            for (var n = 0, i = this.children.length; n < i; n++) {
                var r = this.children[n].getObjectByProperty(t, e);
                if (void 0 !== r)
                    return r
            }
        },
        getWorldPosition: function(t) {
            return void 0 === t && (console.warn("THREE.Object3D: .getWorldPosition() target is now required"),
            t = new si),
            this.updateMatrixWorld(!0),
            t.setFromMatrixPosition(this.matrixWorld)
        },
        getWorldQuaternion: function(t) {
            return void 0 === t && (console.warn("THREE.Object3D: .getWorldQuaternion() target is now required"),
            t = new ri),
            this.updateMatrixWorld(!0),
            this.matrixWorld.decompose(Ci, t, Ai),
            t
        },
        getWorldScale: function(t) {
            return void 0 === t && (console.warn("THREE.Object3D: .getWorldScale() target is now required"),
            t = new si),
            this.updateMatrixWorld(!0),
            this.matrixWorld.decompose(Ci, Ti, t),
            t
        },
        getWorldDirection: function(t) {
            void 0 === t && (console.warn("THREE.Object3D: .getWorldDirection() target is now required"),
            t = new si),
            this.updateMatrixWorld(!0);
            var e = this.matrixWorld.elements;
            return t.set(e[8], e[9], e[10]).normalize()
        },
        raycast: function() {},
        traverse: function(t) {
            t(this);
            for (var e = this.children, n = 0, i = e.length; n < i; n++)
                e[n].traverse(t)
        },
        traverseVisible: function(t) {
            if (!1 !== this.visible) {
                t(this);
                for (var e = this.children, n = 0, i = e.length; n < i; n++)
                    e[n].traverseVisible(t)
            }
        },
        traverseAncestors: function(t) {
            var e = this.parent;
            null !== e && (t(e),
            e.traverseAncestors(t))
        },
        updateMatrix: function() {
            this.matrix.compose(this.position, this.quaternion, this.scale),
            this.matrixWorldNeedsUpdate = !0
        },
        updateMatrixWorld: function(t) {
            this.matrixAutoUpdate && this.updateMatrix(),
            (this.matrixWorldNeedsUpdate || t) && (null === this.parent ? this.matrixWorld.copy(this.matrix) : this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix),
            this.matrixWorldNeedsUpdate = !1,
            t = !0);
            for (var e = this.children, n = 0, i = e.length; n < i; n++)
                e[n].updateMatrixWorld(t)
        },
        updateWorldMatrix: function(t, e) {
            var n = this.parent;
            if (!0 === t && null !== n && n.updateWorldMatrix(!0, !1),
            this.matrixAutoUpdate && this.updateMatrix(),
            null === this.parent ? this.matrixWorld.copy(this.matrix) : this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix),
            !0 === e)
                for (var i = this.children, r = 0, o = i.length; r < o; r++)
                    i[r].updateWorldMatrix(!1, !0)
        },
        toJSON: function(t) {
            var e = void 0 === t || "string" == typeof t
              , n = {};
            e && (t = {
                geometries: {},
                materials: {},
                textures: {},
                images: {},
                shapes: {}
            },
            n.metadata = {
                version: 4.5,
                type: "Object",
                generator: "Object3D.toJSON"
            });
            var i = {};
            function r(e, n) {
                return void 0 === e[n.uuid] && (e[n.uuid] = n.toJSON(t)),
                n.uuid
            }
            if (i.uuid = this.uuid,
            i.type = this.type,
            "" !== this.name && (i.name = this.name),
            !0 === this.castShadow && (i.castShadow = !0),
            !0 === this.receiveShadow && (i.receiveShadow = !0),
            !1 === this.visible && (i.visible = !1),
            !1 === this.frustumCulled && (i.frustumCulled = !1),
            0 !== this.renderOrder && (i.renderOrder = this.renderOrder),
            "{}" !== JSON.stringify(this.userData) && (i.userData = this.userData),
            i.layers = this.layers.mask,
            i.matrix = this.matrix.toArray(),
            !1 === this.matrixAutoUpdate && (i.matrixAutoUpdate = !1),
            this.isInstancedMesh && (i.type = "InstancedMesh",
            i.count = this.count,
            i.instanceMatrix = this.instanceMatrix.toJSON()),
            this.isMesh || this.isLine || this.isPoints) {
                i.geometry = r(t.geometries, this.geometry);
                var o = this.geometry.parameters;
                if (void 0 !== o && void 0 !== o.shapes) {
                    var a = o.shapes;
                    if (Array.isArray(a))
                        for (var s = 0, c = a.length; s < c; s++) {
                            var l = a[s];
                            r(t.shapes, l)
                        }
                    else
                        r(t.shapes, a)
                }
            }
            if (void 0 !== this.material)
                if (Array.isArray(this.material)) {
                    var u = [];
                    for (s = 0,
                    c = this.material.length; s < c; s++)
                        u.push(r(t.materials, this.material[s]));
                    i.material = u
                } else
                    i.material = r(t.materials, this.material);
            if (this.children.length > 0) {
                i.children = [];
                for (s = 0; s < this.children.length; s++)
                    i.children.push(this.children[s].toJSON(t).object)
            }
            if (e) {
                var d = m(t.geometries)
                  , p = m(t.materials)
                  , h = m(t.textures)
                  , f = m(t.images);
                a = m(t.shapes);
                d.length > 0 && (n.geometries = d),
                p.length > 0 && (n.materials = p),
                h.length > 0 && (n.textures = h),
                f.length > 0 && (n.images = f),
                a.length > 0 && (n.shapes = a)
            }
            return n.object = i,
            n;
            function m(t) {
                var e = [];
                for (var n in t) {
                    var i = t[n];
                    delete i.metadata,
                    e.push(i)
                }
                return e
            }
        },
        clone: function(t) {
            return (new this.constructor).copy(this, t)
        },
        copy: function(t, e) {
            if (void 0 === e && (e = !0),
            this.name = t.name,
            this.up.copy(t.up),
            this.position.copy(t.position),
            this.quaternion.copy(t.quaternion),
            this.scale.copy(t.scale),
            this.matrix.copy(t.matrix),
            this.matrixWorld.copy(t.matrixWorld),
            this.matrixAutoUpdate = t.matrixAutoUpdate,
            this.matrixWorldNeedsUpdate = t.matrixWorldNeedsUpdate,
            this.layers.mask = t.layers.mask,
            this.visible = t.visible,
            this.castShadow = t.castShadow,
            this.receiveShadow = t.receiveShadow,
            this.frustumCulled = t.frustumCulled,
            this.renderOrder = t.renderOrder,
            this.userData = JSON.parse(JSON.stringify(t.userData)),
            !0 === e)
                for (var n = 0; n < t.children.length; n++) {
                    var i = t.children[n];
                    this.add(i.clone())
                }
            return this
        }
    }),
    Ri.prototype = Object.assign(Object.create(Di.prototype), {
        constructor: Ri,
        isScene: !0,
        copy: function(t, e) {
            return Di.prototype.copy.call(this, t, e),
            null !== t.background && (this.background = t.background.clone()),
            null !== t.environment && (this.environment = t.environment.clone()),
            null !== t.fog && (this.fog = t.fog.clone()),
            null !== t.overrideMaterial && (this.overrideMaterial = t.overrideMaterial.clone()),
            this.autoUpdate = t.autoUpdate,
            this.matrixAutoUpdate = t.matrixAutoUpdate,
            this
        },
        toJSON: function(t) {
            var e = Di.prototype.toJSON.call(this, t);
            return null !== this.background && (e.object.background = this.background.toJSON(t)),
            null !== this.environment && (e.object.environment = this.environment.toJSON(t)),
            null !== this.fog && (e.object.fog = this.fog.toJSON()),
            e
        },
        dispose: function() {
            this.dispatchEvent({
                type: "dispose"
            })
        }
    });
    var Li = [new si, new si, new si, new si, new si, new si, new si, new si]
      , Ni = new si
      , ji = new Yi
      , Vi = new si
      , Fi = new si
      , Ui = new si
      , Bi = new si
      , zi = new si
      , Gi = new si
      , Hi = new si
      , Wi = new si
      , qi = new si
      , Xi = new si;
    function Yi(t, e) {
        this.min = void 0 !== t ? t : new si(1 / 0,1 / 0,1 / 0),
        this.max = void 0 !== e ? e : new si(-1 / 0,-1 / 0,-1 / 0)
    }
    function Ki(t, e, n, i, r) {
        var o, a;
        for (o = 0,
        a = t.length - 3; o <= a; o += 3) {
            Xi.fromArray(t, o);
            var s = r.x * Math.abs(Xi.x) + r.y * Math.abs(Xi.y) + r.z * Math.abs(Xi.z)
              , c = e.dot(Xi)
              , l = n.dot(Xi)
              , u = i.dot(Xi);
            if (Math.max(-Math.max(c, l, u), Math.min(c, l, u)) > s)
                return !1
        }
        return !0
    }
    Object.assign(Yi.prototype, {
        isBox3: !0,
        set: function(t, e) {
            return this.min.copy(t),
            this.max.copy(e),
            this
        },
        setFromArray: function(t) {
            for (var e = 1 / 0, n = 1 / 0, i = 1 / 0, r = -1 / 0, o = -1 / 0, a = -1 / 0, s = 0, c = t.length; s < c; s += 3) {
                var l = t[s]
                  , u = t[s + 1]
                  , d = t[s + 2];
                l < e && (e = l),
                u < n && (n = u),
                d < i && (i = d),
                l > r && (r = l),
                u > o && (o = u),
                d > a && (a = d)
            }
            return this.min.set(e, n, i),
            this.max.set(r, o, a),
            this
        },
        setFromBufferAttribute: function(t) {
            for (var e = 1 / 0, n = 1 / 0, i = 1 / 0, r = -1 / 0, o = -1 / 0, a = -1 / 0, s = 0, c = t.count; s < c; s++) {
                var l = t.getX(s)
                  , u = t.getY(s)
                  , d = t.getZ(s);
                l < e && (e = l),
                u < n && (n = u),
                d < i && (i = d),
                l > r && (r = l),
                u > o && (o = u),
                d > a && (a = d)
            }
            return this.min.set(e, n, i),
            this.max.set(r, o, a),
            this
        },
        setFromPoints: function(t) {
            this.makeEmpty();
            for (var e = 0, n = t.length; e < n; e++)
                this.expandByPoint(t[e]);
            return this
        },
        setFromCenterAndSize: function(t, e) {
            var n = Ni.copy(e).multiplyScalar(.5);
            return this.min.copy(t).sub(n),
            this.max.copy(t).add(n),
            this
        },
        setFromObject: function(t) {
            return this.makeEmpty(),
            this.expandByObject(t)
        },
        clone: function() {
            return (new this.constructor).copy(this)
        },
        copy: function(t) {
            return this.min.copy(t.min),
            this.max.copy(t.max),
            this
        },
        makeEmpty: function() {
            return this.min.x = this.min.y = this.min.z = 1 / 0,
            this.max.x = this.max.y = this.max.z = -1 / 0,
            this
        },
        isEmpty: function() {
            return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z
        },
        getCenter: function(t) {
            return void 0 === t && (console.warn("THREE.Box3: .getCenter() target is now required"),
            t = new si),
            this.isEmpty() ? t.set(0, 0, 0) : t.addVectors(this.min, this.max).multiplyScalar(.5)
        },
        getSize: function(t) {
            return void 0 === t && (console.warn("THREE.Box3: .getSize() target is now required"),
            t = new si),
            this.isEmpty() ? t.set(0, 0, 0) : t.subVectors(this.max, this.min)
        },
        expandByPoint: function(t) {
            return this.min.min(t),
            this.max.max(t),
            this
        },
        expandByVector: function(t) {
            return this.min.sub(t),
            this.max.add(t),
            this
        },
        expandByScalar: function(t) {
            return this.min.addScalar(-t),
            this.max.addScalar(t),
            this
        },
        expandByObject: function(t) {
            t.updateWorldMatrix(!1, !1);
            var e = t.geometry;
            void 0 !== e && (null === e.boundingBox && e.computeBoundingBox(),
            ji.copy(e.boundingBox),
            ji.applyMatrix4(t.matrixWorld),
            this.union(ji));
            for (var n = t.children, i = 0, r = n.length; i < r; i++)
                this.expandByObject(n[i]);
            return this
        },
        containsPoint: function(t) {
            return !(t.x < this.min.x || t.x > this.max.x || t.y < this.min.y || t.y > this.max.y || t.z < this.min.z || t.z > this.max.z)
        },
        containsBox: function(t) {
            return this.min.x <= t.min.x && t.max.x <= this.max.x && this.min.y <= t.min.y && t.max.y <= this.max.y && this.min.z <= t.min.z && t.max.z <= this.max.z
        },
        getParameter: function(t, e) {
            return void 0 === e && (console.warn("THREE.Box3: .getParameter() target is now required"),
            e = new si),
            e.set((t.x - this.min.x) / (this.max.x - this.min.x), (t.y - this.min.y) / (this.max.y - this.min.y), (t.z - this.min.z) / (this.max.z - this.min.z))
        },
        intersectsBox: function(t) {
            return !(t.max.x < this.min.x || t.min.x > this.max.x || t.max.y < this.min.y || t.min.y > this.max.y || t.max.z < this.min.z || t.min.z > this.max.z)
        },
        intersectsSphere: function(t) {
            return this.clampPoint(t.center, Ni),
            Ni.distanceToSquared(t.center) <= t.radius * t.radius
        },
        intersectsPlane: function(t) {
            var e, n;
            return t.normal.x > 0 ? (e = t.normal.x * this.min.x,
            n = t.normal.x * this.max.x) : (e = t.normal.x * this.max.x,
            n = t.normal.x * this.min.x),
            t.normal.y > 0 ? (e += t.normal.y * this.min.y,
            n += t.normal.y * this.max.y) : (e += t.normal.y * this.max.y,
            n += t.normal.y * this.min.y),
            t.normal.z > 0 ? (e += t.normal.z * this.min.z,
            n += t.normal.z * this.max.z) : (e += t.normal.z * this.max.z,
            n += t.normal.z * this.min.z),
            e <= -t.constant && n >= -t.constant
        },
        intersectsTriangle: function(t) {
            if (this.isEmpty())
                return !1;
            this.getCenter(Hi),
            Wi.subVectors(this.max, Hi),
            Vi.subVectors(t.a, Hi),
            Fi.subVectors(t.b, Hi),
            Ui.subVectors(t.c, Hi),
            Bi.subVectors(Fi, Vi),
            zi.subVectors(Ui, Fi),
            Gi.subVectors(Vi, Ui);
            var e = [0, -Bi.z, Bi.y, 0, -zi.z, zi.y, 0, -Gi.z, Gi.y, Bi.z, 0, -Bi.x, zi.z, 0, -zi.x, Gi.z, 0, -Gi.x, -Bi.y, Bi.x, 0, -zi.y, zi.x, 0, -Gi.y, Gi.x, 0];
            return !!Ki(e, Vi, Fi, Ui, Wi) && (!!Ki(e = [1, 0, 0, 0, 1, 0, 0, 0, 1], Vi, Fi, Ui, Wi) && (qi.crossVectors(Bi, zi),
            Ki(e = [qi.x, qi.y, qi.z], Vi, Fi, Ui, Wi)))
        },
        clampPoint: function(t, e) {
            return void 0 === e && (console.warn("THREE.Box3: .clampPoint() target is now required"),
            e = new si),
            e.copy(t).clamp(this.min, this.max)
        },
        distanceToPoint: function(t) {
            return Ni.copy(t).clamp(this.min, this.max).sub(t).length()
        },
        getBoundingSphere: function(t) {
            return void 0 === t && console.error("THREE.Box3: .getBoundingSphere() target is now required"),
            this.getCenter(t.center),
            t.radius = .5 * this.getSize(Ni).length(),
            t
        },
        intersect: function(t) {
            return this.min.max(t.min),
            this.max.min(t.max),
            this.isEmpty() && this.makeEmpty(),
            this
        },
        union: function(t) {
            return this.min.min(t.min),
            this.max.max(t.max),
            this
        },
        applyMatrix4: function(t) {
            return this.isEmpty() || (Li[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(t),
            Li[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(t),
            Li[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(t),
            Li[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(t),
            Li[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(t),
            Li[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(t),
            Li[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(t),
            Li[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(t),
            this.setFromPoints(Li)),
            this
        },
        translate: function(t) {
            return this.min.add(t),
            this.max.add(t),
            this
        },
        equals: function(t) {
            return t.min.equals(this.min) && t.max.equals(this.max)
        }
    });
    var Zi = new Yi;
    function Ji(t, e) {
        this.center = void 0 !== t ? t : new si,
        this.radius = void 0 !== e ? e : 0
    }
    Object.assign(Ji.prototype, {
        set: function(t, e) {
            return this.center.copy(t),
            this.radius = e,
            this
        },
        setFromPoints: function(t, e) {
            var n = this.center;
            void 0 !== e ? n.copy(e) : Zi.setFromPoints(t).getCenter(n);
            for (var i = 0, r = 0, o = t.length; r < o; r++)
                i = Math.max(i, n.distanceToSquared(t[r]));
            return this.radius = Math.sqrt(i),
            this
        },
        clone: function() {
            return (new this.constructor).copy(this)
        },
        copy: function(t) {
            return this.center.copy(t.center),
            this.radius = t.radius,
            this
        },
        empty: function() {
            return this.radius <= 0
        },
        containsPoint: function(t) {
            return t.distanceToSquared(this.center) <= this.radius * this.radius
        },
        distanceToPoint: function(t) {
            return t.distanceTo(this.center) - this.radius
        },
        intersectsSphere: function(t) {
            var e = this.radius + t.radius;
            return t.center.distanceToSquared(this.center) <= e * e
        },
        intersectsBox: function(t) {
            return t.intersectsSphere(this)
        },
        intersectsPlane: function(t) {
            return Math.abs(t.distanceToPoint(this.center)) <= this.radius
        },
        clampPoint: function(t, e) {
            var n = this.center.distanceToSquared(t);
            return void 0 === e && (console.warn("THREE.Sphere: .clampPoint() target is now required"),
            e = new si),
            e.copy(t),
            n > this.radius * this.radius && (e.sub(this.center).normalize(),
            e.multiplyScalar(this.radius).add(this.center)),
            e
        },
        getBoundingBox: function(t) {
            return void 0 === t && (console.warn("THREE.Sphere: .getBoundingBox() target is now required"),
            t = new Yi),
            t.set(this.center, this.center),
            t.expandByScalar(this.radius),
            t
        },
        applyMatrix4: function(t) {
            return this.center.applyMatrix4(t),
            this.radius = this.radius * t.getMaxScaleOnAxis(),
            this
        },
        translate: function(t) {
            return this.center.add(t),
            this
        },
        equals: function(t) {
            return t.center.equals(this.center) && t.radius === this.radius
        }
    });
    var Qi = new si
      , $i = new si
      , tr = new si
      , er = new si
      , nr = new si
      , ir = new si
      , rr = new si;
    function or(t, e) {
        this.origin = void 0 !== t ? t : new si,
        this.direction = void 0 !== e ? e : new si(0,0,-1)
    }
    Object.assign(or.prototype, {
        set: function(t, e) {
            return this.origin.copy(t),
            this.direction.copy(e),
            this
        },
        clone: function() {
            return (new this.constructor).copy(this)
        },
        copy: function(t) {
            return this.origin.copy(t.origin),
            this.direction.copy(t.direction),
            this
        },
        at: function(t, e) {
            return void 0 === e && (console.warn("THREE.Ray: .at() target is now required"),
            e = new si),
            e.copy(this.direction).multiplyScalar(t).add(this.origin)
        },
        lookAt: function(t) {
            return this.direction.copy(t).sub(this.origin).normalize(),
            this
        },
        recast: function(t) {
            return this.origin.copy(this.at(t, Qi)),
            this
        },
        closestPointToPoint: function(t, e) {
            void 0 === e && (console.warn("THREE.Ray: .closestPointToPoint() target is now required"),
            e = new si),
            e.subVectors(t, this.origin);
            var n = e.dot(this.direction);
            return n < 0 ? e.copy(this.origin) : e.copy(this.direction).multiplyScalar(n).add(this.origin)
        },
        distanceToPoint: function(t) {
            return Math.sqrt(this.distanceSqToPoint(t))
        },
        distanceSqToPoint: function(t) {
            var e = Qi.subVectors(t, this.origin).dot(this.direction);
            return e < 0 ? this.origin.distanceToSquared(t) : (Qi.copy(this.direction).multiplyScalar(e).add(this.origin),
            Qi.distanceToSquared(t))
        },
        distanceSqToSegment: function(t, e, n, i) {
            $i.copy(t).add(e).multiplyScalar(.5),
            tr.copy(e).sub(t).normalize(),
            er.copy(this.origin).sub($i);
            var r, o, a, s, c = .5 * t.distanceTo(e), l = -this.direction.dot(tr), u = er.dot(this.direction), d = -er.dot(tr), p = er.lengthSq(), h = Math.abs(1 - l * l);
            if (h > 0)
                if (o = l * u - d,
                s = c * h,
                (r = l * d - u) >= 0)
                    if (o >= -s)
                        if (o <= s) {
                            var f = 1 / h;
                            a = (r *= f) * (r + l * (o *= f) + 2 * u) + o * (l * r + o + 2 * d) + p
                        } else
                            o = c,
                            a = -(r = Math.max(0, -(l * o + u))) * r + o * (o + 2 * d) + p;
                    else
                        o = -c,
                        a = -(r = Math.max(0, -(l * o + u))) * r + o * (o + 2 * d) + p;
                else
                    o <= -s ? a = -(r = Math.max(0, -(-l * c + u))) * r + (o = r > 0 ? -c : Math.min(Math.max(-c, -d), c)) * (o + 2 * d) + p : o <= s ? (r = 0,
                    a = (o = Math.min(Math.max(-c, -d), c)) * (o + 2 * d) + p) : a = -(r = Math.max(0, -(l * c + u))) * r + (o = r > 0 ? c : Math.min(Math.max(-c, -d), c)) * (o + 2 * d) + p;
            else
                o = l > 0 ? -c : c,
                a = -(r = Math.max(0, -(l * o + u))) * r + o * (o + 2 * d) + p;
            return n && n.copy(this.direction).multiplyScalar(r).add(this.origin),
            i && i.copy(tr).multiplyScalar(o).add($i),
            a
        },
        intersectSphere: function(t, e) {
            Qi.subVectors(t.center, this.origin);
            var n = Qi.dot(this.direction)
              , i = Qi.dot(Qi) - n * n
              , r = t.radius * t.radius;
            if (i > r)
                return null;
            var o = Math.sqrt(r - i)
              , a = n - o
              , s = n + o;
            return a < 0 && s < 0 ? null : a < 0 ? this.at(s, e) : this.at(a, e)
        },
        intersectsSphere: function(t) {
            return this.distanceSqToPoint(t.center) <= t.radius * t.radius
        },
        distanceToPlane: function(t) {
            var e = t.normal.dot(this.direction);
            if (0 === e)
                return 0 === t.distanceToPoint(this.origin) ? 0 : null;
            var n = -(this.origin.dot(t.normal) + t.constant) / e;
            return n >= 0 ? n : null
        },
        intersectPlane: function(t, e) {
            var n = this.distanceToPlane(t);
            return null === n ? null : this.at(n, e)
        },
        intersectsPlane: function(t) {
            var e = t.distanceToPoint(this.origin);
            return 0 === e || t.normal.dot(this.direction) * e < 0
        },
        intersectBox: function(t, e) {
            var n, i, r, o, a, s, c = 1 / this.direction.x, l = 1 / this.direction.y, u = 1 / this.direction.z, d = this.origin;
            return c >= 0 ? (n = (t.min.x - d.x) * c,
            i = (t.max.x - d.x) * c) : (n = (t.max.x - d.x) * c,
            i = (t.min.x - d.x) * c),
            l >= 0 ? (r = (t.min.y - d.y) * l,
            o = (t.max.y - d.y) * l) : (r = (t.max.y - d.y) * l,
            o = (t.min.y - d.y) * l),
            n > o || r > i ? null : ((r > n || n != n) && (n = r),
            (o < i || i != i) && (i = o),
            u >= 0 ? (a = (t.min.z - d.z) * u,
            s = (t.max.z - d.z) * u) : (a = (t.max.z - d.z) * u,
            s = (t.min.z - d.z) * u),
            n > s || a > i ? null : ((a > n || n != n) && (n = a),
            (s < i || i != i) && (i = s),
            i < 0 ? null : this.at(n >= 0 ? n : i, e)))
        },
        intersectsBox: function(t) {
            return null !== this.intersectBox(t, Qi)
        },
        intersectTriangle: function(t, e, n, i, r) {
            nr.subVectors(e, t),
            ir.subVectors(n, t),
            rr.crossVectors(nr, ir);
            var o, a = this.direction.dot(rr);
            if (a > 0) {
                if (i)
                    return null;
                o = 1
            } else {
                if (!(a < 0))
                    return null;
                o = -1,
                a = -a
            }
            er.subVectors(this.origin, t);
            var s = o * this.direction.dot(ir.crossVectors(er, ir));
            if (s < 0)
                return null;
            var c = o * this.direction.dot(nr.cross(er));
            if (c < 0)
                return null;
            if (s + c > a)
                return null;
            var l = -o * er.dot(rr);
            return l < 0 ? null : this.at(l / a, r)
        },
        applyMatrix4: function(t) {
            return this.origin.applyMatrix4(t),
            this.direction.transformDirection(t),
            this
        },
        equals: function(t) {
            return t.origin.equals(this.origin) && t.direction.equals(this.direction)
        }
    });
    var ar = new si
      , sr = new si
      , cr = new Jn;
    function lr(t, e) {
        this.normal = void 0 !== t ? t : new si(1,0,0),
        this.constant = void 0 !== e ? e : 0
    }
    Object.assign(lr.prototype, {
        isPlane: !0,
        set: function(t, e) {
            return this.normal.copy(t),
            this.constant = e,
            this
        },
        setComponents: function(t, e, n, i) {
            return this.normal.set(t, e, n),
            this.constant = i,
            this
        },
        setFromNormalAndCoplanarPoint: function(t, e) {
            return this.normal.copy(t),
            this.constant = -e.dot(this.normal),
            this
        },
        setFromCoplanarPoints: function(t, e, n) {
            var i = ar.subVectors(n, e).cross(sr.subVectors(t, e)).normalize();
            return this.setFromNormalAndCoplanarPoint(i, t),
            this
        },
        clone: function() {
            return (new this.constructor).copy(this)
        },
        copy: function(t) {
            return this.normal.copy(t.normal),
            this.constant = t.constant,
            this
        },
        normalize: function() {
            var t = 1 / this.normal.length();
            return this.normal.multiplyScalar(t),
            this.constant *= t,
            this
        },
        negate: function() {
            return this.constant *= -1,
            this.normal.negate(),
            this
        },
        distanceToPoint: function(t) {
            return this.normal.dot(t) + this.constant
        },
        distanceToSphere: function(t) {
            return this.distanceToPoint(t.center) - t.radius
        },
        projectPoint: function(t, e) {
            return void 0 === e && (console.warn("THREE.Plane: .projectPoint() target is now required"),
            e = new si),
            e.copy(this.normal).multiplyScalar(-this.distanceToPoint(t)).add(t)
        },
        intersectLine: function(t, e) {
            void 0 === e && (console.warn("THREE.Plane: .intersectLine() target is now required"),
            e = new si);
            var n = t.delta(ar)
              , i = this.normal.dot(n);
            if (0 === i)
                return 0 === this.distanceToPoint(t.start) ? e.copy(t.start) : void 0;
            var r = -(t.start.dot(this.normal) + this.constant) / i;
            return r < 0 || r > 1 ? void 0 : e.copy(n).multiplyScalar(r).add(t.start)
        },
        intersectsLine: function(t) {
            var e = this.distanceToPoint(t.start)
              , n = this.distanceToPoint(t.end);
            return e < 0 && n > 0 || n < 0 && e > 0
        },
        intersectsBox: function(t) {
            return t.intersectsPlane(this)
        },
        intersectsSphere: function(t) {
            return t.intersectsPlane(this)
        },
        coplanarPoint: function(t) {
            return void 0 === t && (console.warn("THREE.Plane: .coplanarPoint() target is now required"),
            t = new si),
            t.copy(this.normal).multiplyScalar(-this.constant)
        },
        applyMatrix4: function(t, e) {
            var n = e || cr.getNormalMatrix(t)
              , i = this.coplanarPoint(ar).applyMatrix4(t)
              , r = this.normal.applyMatrix3(n).normalize();
            return this.constant = -i.dot(r),
            this
        },
        translate: function(t) {
            return this.constant -= t.dot(this.normal),
            this
        },
        equals: function(t) {
            return t.normal.equals(this.normal) && t.constant === this.constant
        }
    });
    var ur = new si
      , dr = new si
      , pr = new si
      , hr = new si
      , fr = new si
      , mr = new si
      , gr = new si
      , vr = new si
      , yr = new si
      , br = new si;
    function wr(t, e, n) {
        this.a = void 0 !== t ? t : new si,
        this.b = void 0 !== e ? e : new si,
        this.c = void 0 !== n ? n : new si
    }
    Object.assign(wr, {
        getNormal: function(t, e, n, i) {
            void 0 === i && (console.warn("THREE.Triangle: .getNormal() target is now required"),
            i = new si),
            i.subVectors(n, e),
            ur.subVectors(t, e),
            i.cross(ur);
            var r = i.lengthSq();
            return r > 0 ? i.multiplyScalar(1 / Math.sqrt(r)) : i.set(0, 0, 0)
        },
        getBarycoord: function(t, e, n, i, r) {
            ur.subVectors(i, e),
            dr.subVectors(n, e),
            pr.subVectors(t, e);
            var o = ur.dot(ur)
              , a = ur.dot(dr)
              , s = ur.dot(pr)
              , c = dr.dot(dr)
              , l = dr.dot(pr)
              , u = o * c - a * a;
            if (void 0 === r && (console.warn("THREE.Triangle: .getBarycoord() target is now required"),
            r = new si),
            0 === u)
                return r.set(-2, -1, -1);
            var d = 1 / u
              , p = (c * s - a * l) * d
              , h = (o * l - a * s) * d;
            return r.set(1 - p - h, h, p)
        },
        containsPoint: function(t, e, n, i) {
            return wr.getBarycoord(t, e, n, i, hr),
            hr.x >= 0 && hr.y >= 0 && hr.x + hr.y <= 1
        },
        getUV: function(t, e, n, i, r, o, a, s) {
            return this.getBarycoord(t, e, n, i, hr),
            s.set(0, 0),
            s.addScaledVector(r, hr.x),
            s.addScaledVector(o, hr.y),
            s.addScaledVector(a, hr.z),
            s
        },
        isFrontFacing: function(t, e, n, i) {
            return ur.subVectors(n, e),
            dr.subVectors(t, e),
            ur.cross(dr).dot(i) < 0
        }
    }),
    Object.assign(wr.prototype, {
        set: function(t, e, n) {
            return this.a.copy(t),
            this.b.copy(e),
            this.c.copy(n),
            this
        },
        setFromPointsAndIndices: function(t, e, n, i) {
            return this.a.copy(t[e]),
            this.b.copy(t[n]),
            this.c.copy(t[i]),
            this
        },
        clone: function() {
            return (new this.constructor).copy(this)
        },
        copy: function(t) {
            return this.a.copy(t.a),
            this.b.copy(t.b),
            this.c.copy(t.c),
            this
        },
        getArea: function() {
            return ur.subVectors(this.c, this.b),
            dr.subVectors(this.a, this.b),
            .5 * ur.cross(dr).length()
        },
        getMidpoint: function(t) {
            return void 0 === t && (console.warn("THREE.Triangle: .getMidpoint() target is now required"),
            t = new si),
            t.addVectors(this.a, this.b).add(this.c).multiplyScalar(1 / 3)
        },
        getNormal: function(t) {
            return wr.getNormal(this.a, this.b, this.c, t)
        },
        getPlane: function(t) {
            return void 0 === t && (console.warn("THREE.Triangle: .getPlane() target is now required"),
            t = new lr),
            t.setFromCoplanarPoints(this.a, this.b, this.c)
        },
        getBarycoord: function(t, e) {
            return wr.getBarycoord(t, this.a, this.b, this.c, e)
        },
        getUV: function(t, e, n, i, r) {
            return wr.getUV(t, this.a, this.b, this.c, e, n, i, r)
        },
        containsPoint: function(t) {
            return wr.containsPoint(t, this.a, this.b, this.c)
        },
        isFrontFacing: function(t) {
            return wr.isFrontFacing(this.a, this.b, this.c, t)
        },
        intersectsBox: function(t) {
            return t.intersectsTriangle(this)
        },
        closestPointToPoint: function(t, e) {
            void 0 === e && (console.warn("THREE.Triangle: .closestPointToPoint() target is now required"),
            e = new si);
            var n, i, r = this.a, o = this.b, a = this.c;
            fr.subVectors(o, r),
            mr.subVectors(a, r),
            vr.subVectors(t, r);
            var s = fr.dot(vr)
              , c = mr.dot(vr);
            if (s <= 0 && c <= 0)
                return e.copy(r);
            yr.subVectors(t, o);
            var l = fr.dot(yr)
              , u = mr.dot(yr);
            if (l >= 0 && u <= l)
                return e.copy(o);
            var d = s * u - l * c;
            if (d <= 0 && s >= 0 && l <= 0)
                return n = s / (s - l),
                e.copy(r).addScaledVector(fr, n);
            br.subVectors(t, a);
            var p = fr.dot(br)
              , h = mr.dot(br);
            if (h >= 0 && p <= h)
                return e.copy(a);
            var f = p * c - s * h;
            if (f <= 0 && c >= 0 && h <= 0)
                return i = c / (c - h),
                e.copy(r).addScaledVector(mr, i);
            var m = l * h - p * u;
            if (m <= 0 && u - l >= 0 && p - h >= 0)
                return gr.subVectors(a, o),
                i = (u - l) / (u - l + (p - h)),
                e.copy(o).addScaledVector(gr, i);
            var g = 1 / (m + f + d);
            return n = f * g,
            i = d * g,
            e.copy(r).addScaledVector(fr, n).addScaledVector(mr, i)
        },
        equals: function(t) {
            return t.a.equals(this.a) && t.b.equals(this.b) && t.c.equals(this.c)
        }
    });
    var Sr = {
        aliceblue: 15792383,
        antiquewhite: 16444375,
        aqua: 65535,
        aquamarine: 8388564,
        azure: 15794175,
        beige: 16119260,
        bisque: 16770244,
        black: 0,
        blanchedalmond: 16772045,
        blue: 255,
        blueviolet: 9055202,
        brown: 10824234,
        burlywood: 14596231,
        cadetblue: 6266528,
        chartreuse: 8388352,
        chocolate: 13789470,
        coral: 16744272,
        cornflowerblue: 6591981,
        cornsilk: 16775388,
        crimson: 14423100,
        cyan: 65535,
        darkblue: 139,
        darkcyan: 35723,
        darkgoldenrod: 12092939,
        darkgray: 11119017,
        darkgreen: 25600,
        darkgrey: 11119017,
        darkkhaki: 12433259,
        darkmagenta: 9109643,
        darkolivegreen: 5597999,
        darkorange: 16747520,
        darkorchid: 10040012,
        darkred: 9109504,
        darksalmon: 15308410,
        darkseagreen: 9419919,
        darkslateblue: 4734347,
        darkslategray: 3100495,
        darkslategrey: 3100495,
        darkturquoise: 52945,
        darkviolet: 9699539,
        deeppink: 16716947,
        deepskyblue: 49151,
        dimgray: 6908265,
        dimgrey: 6908265,
        dodgerblue: 2003199,
        firebrick: 11674146,
        floralwhite: 16775920,
        forestgreen: 2263842,
        fuchsia: 16711935,
        gainsboro: 14474460,
        ghostwhite: 16316671,
        gold: 16766720,
        goldenrod: 14329120,
        gray: 8421504,
        green: 32768,
        greenyellow: 11403055,
        grey: 8421504,
        honeydew: 15794160,
        hotpink: 16738740,
        indianred: 13458524,
        indigo: 4915330,
        ivory: 16777200,
        khaki: 15787660,
        lavender: 15132410,
        lavenderblush: 16773365,
        lawngreen: 8190976,
        lemonchiffon: 16775885,
        lightblue: 11393254,
        lightcoral: 15761536,
        lightcyan: 14745599,
        lightgoldenrodyellow: 16448210,
        lightgray: 13882323,
        lightgreen: 9498256,
        lightgrey: 13882323,
        lightpink: 16758465,
        lightsalmon: 16752762,
        lightseagreen: 2142890,
        lightskyblue: 8900346,
        lightslategray: 7833753,
        lightslategrey: 7833753,
        lightsteelblue: 11584734,
        lightyellow: 16777184,
        lime: 65280,
        limegreen: 3329330,
        linen: 16445670,
        magenta: 16711935,
        maroon: 8388608,
        mediumaquamarine: 6737322,
        mediumblue: 205,
        mediumorchid: 12211667,
        mediumpurple: 9662683,
        mediumseagreen: 3978097,
        mediumslateblue: 8087790,
        mediumspringgreen: 64154,
        mediumturquoise: 4772300,
        mediumvioletred: 13047173,
        midnightblue: 1644912,
        mintcream: 16121850,
        mistyrose: 16770273,
        moccasin: 16770229,
        navajowhite: 16768685,
        navy: 128,
        oldlace: 16643558,
        olive: 8421376,
        olivedrab: 7048739,
        orange: 16753920,
        orangered: 16729344,
        orchid: 14315734,
        palegoldenrod: 15657130,
        palegreen: 10025880,
        paleturquoise: 11529966,
        palevioletred: 14381203,
        papayawhip: 16773077,
        peachpuff: 16767673,
        peru: 13468991,
        pink: 16761035,
        plum: 14524637,
        powderblue: 11591910,
        purple: 8388736,
        rebeccapurple: 6697881,
        red: 16711680,
        rosybrown: 12357519,
        royalblue: 4286945,
        saddlebrown: 9127187,
        salmon: 16416882,
        sandybrown: 16032864,
        seagreen: 3050327,
        seashell: 16774638,
        sienna: 10506797,
        silver: 12632256,
        skyblue: 8900331,
        slateblue: 6970061,
        slategray: 7372944,
        slategrey: 7372944,
        snow: 16775930,
        springgreen: 65407,
        steelblue: 4620980,
        tan: 13808780,
        teal: 32896,
        thistle: 14204888,
        tomato: 16737095,
        turquoise: 4251856,
        violet: 15631086,
        wheat: 16113331,
        white: 16777215,
        whitesmoke: 16119285,
        yellow: 16776960,
        yellowgreen: 10145074
    }
      , xr = {
        h: 0,
        s: 0,
        l: 0
    }
      , Mr = {
        h: 0,
        s: 0,
        l: 0
    };
    function Er(t, e, n) {
        return void 0 === e && void 0 === n ? this.set(t) : this.setRGB(t, e, n)
    }
    function Cr(t, e, n) {
        return n < 0 && (n += 1),
        n > 1 && (n -= 1),
        n < 1 / 6 ? t + 6 * (e - t) * n : n < .5 ? e : n < 2 / 3 ? t + 6 * (e - t) * (2 / 3 - n) : t
    }
    function Ar(t) {
        return t < .04045 ? .0773993808 * t : Math.pow(.9478672986 * t + .0521327014, 2.4)
    }
    function Tr(t) {
        return t < .0031308 ? 12.92 * t : 1.055 * Math.pow(t, .41666) - .055
    }
    function Or(t, e, n, i, r, o) {
        this.a = t,
        this.b = e,
        this.c = n,
        this.normal = i && i.isVector3 ? i : new si,
        this.vertexNormals = Array.isArray(i) ? i : [],
        this.color = r && r.isColor ? r : new Er,
        this.vertexColors = Array.isArray(r) ? r : [],
        this.materialIndex = void 0 !== o ? o : 0
    }
    Object.assign(Er.prototype, {
        isColor: !0,
        r: 1,
        g: 1,
        b: 1,
        set: function(t) {
            return t && t.isColor ? this.copy(t) : "number" == typeof t ? this.setHex(t) : "string" == typeof t && this.setStyle(t),
            this
        },
        setScalar: function(t) {
            return this.r = t,
            this.g = t,
            this.b = t,
            this
        },
        setHex: function(t) {
            return t = Math.floor(t),
            this.r = (t >> 16 & 255) / 255,
            this.g = (t >> 8 & 255) / 255,
            this.b = (255 & t) / 255,
            this
        },
        setRGB: function(t, e, n) {
            return this.r = t,
            this.g = e,
            this.b = n,
            this
        },
        setHSL: function(t, e, n) {
            if (t = Kn.euclideanModulo(t, 1),
            e = Kn.clamp(e, 0, 1),
            n = Kn.clamp(n, 0, 1),
            0 === e)
                this.r = this.g = this.b = n;
            else {
                var i = n <= .5 ? n * (1 + e) : n + e - n * e
                  , r = 2 * n - i;
                this.r = Cr(r, i, t + 1 / 3),
                this.g = Cr(r, i, t),
                this.b = Cr(r, i, t - 1 / 3)
            }
            return this
        },
        setStyle: function(t) {
            function e(e) {
                void 0 !== e && parseFloat(e) < 1 && console.warn("THREE.Color: Alpha component of " + t + " will be ignored.")
            }
            var n;
            if (n = /^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(t)) {
                var i, r = n[1], o = n[2];
                switch (r) {
                case "rgb":
                case "rgba":
                    if (i = /^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(o))
                        return this.r = Math.min(255, parseInt(i[1], 10)) / 255,
                        this.g = Math.min(255, parseInt(i[2], 10)) / 255,
                        this.b = Math.min(255, parseInt(i[3], 10)) / 255,
                        e(i[5]),
                        this;
                    if (i = /^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(o))
                        return this.r = Math.min(100, parseInt(i[1], 10)) / 100,
                        this.g = Math.min(100, parseInt(i[2], 10)) / 100,
                        this.b = Math.min(100, parseInt(i[3], 10)) / 100,
                        e(i[5]),
                        this;
                    break;
                case "hsl":
                case "hsla":
                    if (i = /^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(o)) {
                        var a = parseFloat(i[1]) / 360
                          , s = parseInt(i[2], 10) / 100
                          , c = parseInt(i[3], 10) / 100;
                        return e(i[5]),
                        this.setHSL(a, s, c)
                    }
                }
            } else if (n = /^\#([A-Fa-f0-9]+)$/.exec(t)) {
                var l = n[1]
                  , u = l.length;
                if (3 === u)
                    return this.r = parseInt(l.charAt(0) + l.charAt(0), 16) / 255,
                    this.g = parseInt(l.charAt(1) + l.charAt(1), 16) / 255,
                    this.b = parseInt(l.charAt(2) + l.charAt(2), 16) / 255,
                    this;
                if (6 === u)
                    return this.r = parseInt(l.charAt(0) + l.charAt(1), 16) / 255,
                    this.g = parseInt(l.charAt(2) + l.charAt(3), 16) / 255,
                    this.b = parseInt(l.charAt(4) + l.charAt(5), 16) / 255,
                    this
            }
            return t && t.length > 0 ? this.setColorName(t) : this
        },
        setColorName: function(t) {
            var e = Sr[t];
            return void 0 !== e ? this.setHex(e) : console.warn("THREE.Color: Unknown color " + t),
            this
        },
        clone: function() {
            return new this.constructor(this.r,this.g,this.b)
        },
        copy: function(t) {
            return this.r = t.r,
            this.g = t.g,
            this.b = t.b,
            this
        },
        copyGammaToLinear: function(t, e) {
            return void 0 === e && (e = 2),
            this.r = Math.pow(t.r, e),
            this.g = Math.pow(t.g, e),
            this.b = Math.pow(t.b, e),
            this
        },
        copyLinearToGamma: function(t, e) {
            void 0 === e && (e = 2);
            var n = e > 0 ? 1 / e : 1;
            return this.r = Math.pow(t.r, n),
            this.g = Math.pow(t.g, n),
            this.b = Math.pow(t.b, n),
            this
        },
        convertGammaToLinear: function(t) {
            return this.copyGammaToLinear(this, t),
            this
        },
        convertLinearToGamma: function(t) {
            return this.copyLinearToGamma(this, t),
            this
        },
        copySRGBToLinear: function(t) {
            return this.r = Ar(t.r),
            this.g = Ar(t.g),
            this.b = Ar(t.b),
            this
        },
        copyLinearToSRGB: function(t) {
            return this.r = Tr(t.r),
            this.g = Tr(t.g),
            this.b = Tr(t.b),
            this
        },
        convertSRGBToLinear: function() {
            return this.copySRGBToLinear(this),
            this
        },
        convertLinearToSRGB: function() {
            return this.copyLinearToSRGB(this),
            this
        },
        getHex: function() {
            return 255 * this.r << 16 ^ 255 * this.g << 8 ^ 255 * this.b << 0
        },
        getHexString: function() {
            return ("000000" + this.getHex().toString(16)).slice(-6)
        },
        getHSL: function(t) {
            void 0 === t && (console.warn("THREE.Color: .getHSL() target is now required"),
            t = {
                h: 0,
                s: 0,
                l: 0
            });
            var e, n, i = this.r, r = this.g, o = this.b, a = Math.max(i, r, o), s = Math.min(i, r, o), c = (s + a) / 2;
            if (s === a)
                e = 0,
                n = 0;
            else {
                var l = a - s;
                switch (n = c <= .5 ? l / (a + s) : l / (2 - a - s),
                a) {
                case i:
                    e = (r - o) / l + (r < o ? 6 : 0);
                    break;
                case r:
                    e = (o - i) / l + 2;
                    break;
                case o:
                    e = (i - r) / l + 4
                }
                e /= 6
            }
            return t.h = e,
            t.s = n,
            t.l = c,
            t
        },
        getStyle: function() {
            return "rgb(" + (255 * this.r | 0) + "," + (255 * this.g | 0) + "," + (255 * this.b | 0) + ")"
        },
        offsetHSL: function(t, e, n) {
            return this.getHSL(xr),
            xr.h += t,
            xr.s += e,
            xr.l += n,
            this.setHSL(xr.h, xr.s, xr.l),
            this
        },
        add: function(t) {
            return this.r += t.r,
            this.g += t.g,
            this.b += t.b,
            this
        },
        addColors: function(t, e) {
            return this.r = t.r + e.r,
            this.g = t.g + e.g,
            this.b = t.b + e.b,
            this
        },
        addScalar: function(t) {
            return this.r += t,
            this.g += t,
            this.b += t,
            this
        },
        sub: function(t) {
            return this.r = Math.max(0, this.r - t.r),
            this.g = Math.max(0, this.g - t.g),
            this.b = Math.max(0, this.b - t.b),
            this
        },
        multiply: function(t) {
            return this.r *= t.r,
            this.g *= t.g,
            this.b *= t.b,
            this
        },
        multiplyScalar: function(t) {
            return this.r *= t,
            this.g *= t,
            this.b *= t,
            this
        },
        lerp: function(t, e) {
            return this.r += (t.r - this.r) * e,
            this.g += (t.g - this.g) * e,
            this.b += (t.b - this.b) * e,
            this
        },
        lerpHSL: function(t, e) {
            this.getHSL(xr),
            t.getHSL(Mr);
            var n = Kn.lerp(xr.h, Mr.h, e)
              , i = Kn.lerp(xr.s, Mr.s, e)
              , r = Kn.lerp(xr.l, Mr.l, e);
            return this.setHSL(n, i, r),
            this
        },
        equals: function(t) {
            return t.r === this.r && t.g === this.g && t.b === this.b
        },
        fromArray: function(t, e) {
            return void 0 === e && (e = 0),
            this.r = t[e],
            this.g = t[e + 1],
            this.b = t[e + 2],
            this
        },
        toArray: function(t, e) {
            return void 0 === t && (t = []),
            void 0 === e && (e = 0),
            t[e] = this.r,
            t[e + 1] = this.g,
            t[e + 2] = this.b,
            t
        },
        toJSON: function() {
            return this.getHex()
        }
    }),
    Er.NAMES = Sr,
    Object.assign(Or.prototype, {
        clone: function() {
            return (new this.constructor).copy(this)
        },
        copy: function(t) {
            this.a = t.a,
            this.b = t.b,
            this.c = t.c,
            this.normal.copy(t.normal),
            this.color.copy(t.color),
            this.materialIndex = t.materialIndex;
            for (var e = 0, n = t.vertexNormals.length; e < n; e++)
                this.vertexNormals[e] = t.vertexNormals[e].clone();
            for (e = 0,
            n = t.vertexColors.length; e < n; e++)
                this.vertexColors[e] = t.vertexColors[e].clone();
            return this
        }
    });
    var _r = 0;
    function Pr() {
        Object.defineProperty(this, "id", {
            value: _r++
        }),
        this.uuid = Kn.generateUUID(),
        this.name = "",
        this.type = "Material",
        this.fog = !0,
        this.blending = k,
        this.side = A,
        this.flatShading = !1,
        this.vertexColors = !1,
        this.opacity = 1,
        this.transparent = !1,
        this.blendSrc = q,
        this.blendDst = X,
        this.blendEquation = j,
        this.blendSrcAlpha = null,
        this.blendDstAlpha = null,
        this.blendEquationAlpha = null,
        this.depthFunc = nt,
        this.depthTest = !0,
        this.depthWrite = !0,
        this.stencilWriteMask = 255,
        this.stencilFunc = Ln,
        this.stencilRef = 0,
        this.stencilFuncMask = 255,
        this.stencilFail = Sn,
        this.stencilZFail = Sn,
        this.stencilZPass = Sn,
        this.stencilWrite = !1,
        this.clippingPlanes = null,
        this.clipIntersection = !1,
        this.clipShadows = !1,
        this.shadowSide = null,
        this.colorWrite = !0,
        this.precision = null,
        this.polygonOffset = !1,
        this.polygonOffsetFactor = 0,
        this.polygonOffsetUnits = 0,
        this.dithering = !1,
        this.alphaTest = 0,
        this.premultipliedAlpha = !1,
        this.visible = !0,
        this.toneMapped = !0,
        this.userData = {},
        this.version = 0
    }
    function Ir(t) {
        Pr.call(this),
        this.type = "MeshBasicMaterial",
        this.color = new Er(16777215),
        this.map = null,
        this.lightMap = null,
        this.lightMapIntensity = 1,
        this.aoMap = null,
        this.aoMapIntensity = 1,
        this.specularMap = null,
        this.alphaMap = null,
        this.envMap = null,
        this.combine = st,
        this.reflectivity = 1,
        this.refractionRatio = .98,
        this.wireframe = !1,
        this.wireframeLinewidth = 1,
        this.wireframeLinecap = "round",
        this.wireframeLinejoin = "round",
        this.skinning = !1,
        this.morphTargets = !1,
        this.setValues(t)
    }
    Pr.prototype = Object.assign(Object.create(Wn.prototype), {
        constructor: Pr,
        isMaterial: !0,
        onBeforeCompile: function() {},
        setValues: function(t) {
            if (void 0 !== t)
                for (var e in t) {
                    var n = t[e];
                    if (void 0 !== n)
                        if ("shading" !== e) {
                            var i = this[e];
                            void 0 !== i ? i && i.isColor ? i.set(n) : i && i.isVector3 && n && n.isVector3 ? i.copy(n) : this[e] = n : console.warn("THREE." + this.type + ": '" + e + "' is not a property of this material.")
                        } else
                            console.warn("THREE." + this.type + ": .shading has been removed. Use the boolean .flatShading instead."),
                            this.flatShading = n === _;
                    else
                        console.warn("THREE.Material: '" + e + "' parameter is undefined.")
                }
        },
        toJSON: function(t) {
            var e = void 0 === t || "string" == typeof t;
            e && (t = {
                textures: {},
                images: {}
            });
            var n = {
                metadata: {
                    version: 4.5,
                    type: "Material",
                    generator: "Material.toJSON"
                }
            };
            function i(t) {
                var e = [];
                for (var n in t) {
                    var i = t[n];
                    delete i.metadata,
                    e.push(i)
                }
                return e
            }
            if (n.uuid = this.uuid,
            n.type = this.type,
            "" !== this.name && (n.name = this.name),
            this.color && this.color.isColor && (n.color = this.color.getHex()),
            void 0 !== this.roughness && (n.roughness = this.roughness),
            void 0 !== this.metalness && (n.metalness = this.metalness),
            this.sheen && this.sheen.isColor && (n.sheen = this.sheen.getHex()),
            this.emissive && this.emissive.isColor && (n.emissive = this.emissive.getHex()),
            this.emissiveIntensity && 1 !== this.emissiveIntensity && (n.emissiveIntensity = this.emissiveIntensity),
            this.specular && this.specular.isColor && (n.specular = this.specular.getHex()),
            void 0 !== this.shininess && (n.shininess = this.shininess),
            void 0 !== this.clearcoat && (n.clearcoat = this.clearcoat),
            void 0 !== this.clearcoatRoughness && (n.clearcoatRoughness = this.clearcoatRoughness),
            this.clearcoatMap && this.clearcoatMap.isTexture && (n.clearcoatMap = this.clearcoatMap.toJSON(t).uuid),
            this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture && (n.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON(t).uuid),
            this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture && (n.clearcoatNormalMap = this.clearcoatNormalMap.toJSON(t).uuid,
            n.clearcoatNormalScale = this.clearcoatNormalScale.toArray()),
            this.map && this.map.isTexture && (n.map = this.map.toJSON(t).uuid),
            this.matcap && this.matcap.isTexture && (n.matcap = this.matcap.toJSON(t).uuid),
            this.alphaMap && this.alphaMap.isTexture && (n.alphaMap = this.alphaMap.toJSON(t).uuid),
            this.lightMap && this.lightMap.isTexture && (n.lightMap = this.lightMap.toJSON(t).uuid),
            this.aoMap && this.aoMap.isTexture && (n.aoMap = this.aoMap.toJSON(t).uuid,
            n.aoMapIntensity = this.aoMapIntensity),
            this.bumpMap && this.bumpMap.isTexture && (n.bumpMap = this.bumpMap.toJSON(t).uuid,
            n.bumpScale = this.bumpScale),
            this.normalMap && this.normalMap.isTexture && (n.normalMap = this.normalMap.toJSON(t).uuid,
            n.normalMapType = this.normalMapType,
            n.normalScale = this.normalScale.toArray()),
            this.displacementMap && this.displacementMap.isTexture && (n.displacementMap = this.displacementMap.toJSON(t).uuid,
            n.displacementScale = this.displacementScale,
            n.displacementBias = this.displacementBias),
            this.roughnessMap && this.roughnessMap.isTexture && (n.roughnessMap = this.roughnessMap.toJSON(t).uuid),
            this.metalnessMap && this.metalnessMap.isTexture && (n.metalnessMap = this.metalnessMap.toJSON(t).uuid),
            this.emissiveMap && this.emissiveMap.isTexture && (n.emissiveMap = this.emissiveMap.toJSON(t).uuid),
            this.specularMap && this.specularMap.isTexture && (n.specularMap = this.specularMap.toJSON(t).uuid),
            this.envMap && this.envMap.isTexture && (n.envMap = this.envMap.toJSON(t).uuid,
            n.reflectivity = this.reflectivity,
            n.refractionRatio = this.refractionRatio,
            void 0 !== this.combine && (n.combine = this.combine),
            void 0 !== this.envMapIntensity && (n.envMapIntensity = this.envMapIntensity)),
            this.gradientMap && this.gradientMap.isTexture && (n.gradientMap = this.gradientMap.toJSON(t).uuid),
            void 0 !== this.size && (n.size = this.size),
            void 0 !== this.sizeAttenuation && (n.sizeAttenuation = this.sizeAttenuation),
            this.blending !== k && (n.blending = this.blending),
            !0 === this.flatShading && (n.flatShading = this.flatShading),
            this.side !== A && (n.side = this.side),
            this.vertexColors && (n.vertexColors = !0),
            this.opacity < 1 && (n.opacity = this.opacity),
            !0 === this.transparent && (n.transparent = this.transparent),
            n.depthFunc = this.depthFunc,
            n.depthTest = this.depthTest,
            n.depthWrite = this.depthWrite,
            n.stencilWrite = this.stencilWrite,
            n.stencilWriteMask = this.stencilWriteMask,
            n.stencilFunc = this.stencilFunc,
            n.stencilRef = this.stencilRef,
            n.stencilFuncMask = this.stencilFuncMask,
            n.stencilFail = this.stencilFail,
            n.stencilZFail = this.stencilZFail,
            n.stencilZPass = this.stencilZPass,
            this.rotation && 0 !== this.rotation && (n.rotation = this.rotation),
            !0 === this.polygonOffset && (n.polygonOffset = !0),
            0 !== this.polygonOffsetFactor && (n.polygonOffsetFactor = this.polygonOffsetFactor),
            0 !== this.polygonOffsetUnits && (n.polygonOffsetUnits = this.polygonOffsetUnits),
            this.linewidth && 1 !== this.linewidth && (n.linewidth = this.linewidth),
            void 0 !== this.dashSize && (n.dashSize = this.dashSize),
            void 0 !== this.gapSize && (n.gapSize = this.gapSize),
            void 0 !== this.scale && (n.scale = this.scale),
            !0 === this.dithering && (n.dithering = !0),
            this.alphaTest > 0 && (n.alphaTest = this.alphaTest),
            !0 === this.premultipliedAlpha && (n.premultipliedAlpha = this.premultipliedAlpha),
            !0 === this.wireframe && (n.wireframe = this.wireframe),
            this.wireframeLinewidth > 1 && (n.wireframeLinewidth = this.wireframeLinewidth),
            "round" !== this.wireframeLinecap && (n.wireframeLinecap = this.wireframeLinecap),
            "round" !== this.wireframeLinejoin && (n.wireframeLinejoin = this.wireframeLinejoin),
            !0 === this.morphTargets && (n.morphTargets = !0),
            !0 === this.morphNormals && (n.morphNormals = !0),
            !0 === this.skinning && (n.skinning = !0),
            !1 === this.visible && (n.visible = !1),
            !1 === this.toneMapped && (n.toneMapped = !1),
            "{}" !== JSON.stringify(this.userData) && (n.userData = this.userData),
            e) {
                var r = i(t.textures)
                  , o = i(t.images);
                r.length > 0 && (n.textures = r),
                o.length > 0 && (n.images = o)
            }
            return n
        },
        clone: function() {
            return (new this.constructor).copy(this)
        },
        copy: function(t) {
            this.name = t.name,
            this.fog = t.fog,
            this.blending = t.blending,
            this.side = t.side,
            this.flatShading = t.flatShading,
            this.vertexColors = t.vertexColors,
            this.opacity = t.opacity,
            this.transparent = t.transparent,
            this.blendSrc = t.blendSrc,
            this.blendDst = t.blendDst,
            this.blendEquation = t.blendEquation,
            this.blendSrcAlpha = t.blendSrcAlpha,
            this.blendDstAlpha = t.blendDstAlpha,
            this.blendEquationAlpha = t.blendEquationAlpha,
            this.depthFunc = t.depthFunc,
            this.depthTest = t.depthTest,
            this.depthWrite = t.depthWrite,
            this.stencilWriteMask = t.stencilWriteMask,
            this.stencilFunc = t.stencilFunc,
            this.stencilRef = t.stencilRef,
            this.stencilFuncMask = t.stencilFuncMask,
            this.stencilFail = t.stencilFail,
            this.stencilZFail = t.stencilZFail,
            this.stencilZPass = t.stencilZPass,
            this.stencilWrite = t.stencilWrite;
            var e = t.clippingPlanes
              , n = null;
            if (null !== e) {
                var i = e.length;
                n = new Array(i);
                for (var r = 0; r !== i; ++r)
                    n[r] = e[r].clone()
            }
            return this.clippingPlanes = n,
            this.clipIntersection = t.clipIntersection,
            this.clipShadows = t.clipShadows,
            this.shadowSide = t.shadowSide,
            this.colorWrite = t.colorWrite,
            this.precision = t.precision,
            this.polygonOffset = t.polygonOffset,
            this.polygonOffsetFactor = t.polygonOffsetFactor,
            this.polygonOffsetUnits = t.polygonOffsetUnits,
            this.dithering = t.dithering,
            this.alphaTest = t.alphaTest,
            this.premultipliedAlpha = t.premultipliedAlpha,
            this.visible = t.visible,
            this.toneMapped = t.toneMapped,
            this.userData = JSON.parse(JSON.stringify(t.userData)),
            this
        },
        dispose: function() {
            this.dispatchEvent({
                type: "dispose"
            })
        }
    }),
    Object.defineProperty(Pr.prototype, "needsUpdate", {
        set: function(t) {
            !0 === t && this.version++
        }
    }),
    Ir.prototype = Object.create(Pr.prototype),
    Ir.prototype.constructor = Ir,
    Ir.prototype.isMeshBasicMaterial = !0,
    Ir.prototype.copy = function(t) {
        return Pr.prototype.copy.call(this, t),
        this.color.copy(t.color),
        this.map = t.map,
        this.lightMap = t.lightMap,
        this.lightMapIntensity = t.lightMapIntensity,
        this.aoMap = t.aoMap,
        this.aoMapIntensity = t.aoMapIntensity,
        this.specularMap = t.specularMap,
        this.alphaMap = t.alphaMap,
        this.envMap = t.envMap,
        this.combine = t.combine,
        this.reflectivity = t.reflectivity,
        this.refractionRatio = t.refractionRatio,
        this.wireframe = t.wireframe,
        this.wireframeLinewidth = t.wireframeLinewidth,
        this.wireframeLinecap = t.wireframeLinecap,
        this.wireframeLinejoin = t.wireframeLinejoin,
        this.skinning = t.skinning,
        this.morphTargets = t.morphTargets,
        this
    }
    ;
    var kr = new si;
    function Dr(t, e, n) {
        if (Array.isArray(t))
            throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");
        this.name = "",
        this.array = t,
        this.itemSize = e,
        this.count = void 0 !== t ? t.length / e : 0,
        this.normalized = !0 === n,
        this.usage = Nn,
        this.updateRange = {
            offset: 0,
            count: -1
        },
        this.version = 0
    }
    function Rr(t, e, n) {
        Dr.call(this, new Int8Array(t), e, n)
    }
    function Lr(t, e, n) {
        Dr.call(this, new Uint8Array(t), e, n)
    }
    function Nr(t, e, n) {
        Dr.call(this, new Uint8ClampedArray(t), e, n)
    }
    function jr(t, e, n) {
        Dr.call(this, new Int16Array(t), e, n)
    }
    function Vr(t, e, n) {
        Dr.call(this, new Uint16Array(t), e, n)
    }
    function Fr(t, e, n) {
        Dr.call(this, new Int32Array(t), e, n)
    }
    function Ur(t, e, n) {
        Dr.call(this, new Uint32Array(t), e, n)
    }
    function Br(t, e, n) {
        Dr.call(this, new Float32Array(t), e, n)
    }
    function zr(t, e, n) {
        Dr.call(this, new Float64Array(t), e, n)
    }
    function Gr() {
        this.vertices = [],
        this.normals = [],
        this.colors = [],
        this.uvs = [],
        this.uvs2 = [],
        this.groups = [],
        this.morphTargets = {},
        this.skinWeights = [],
        this.skinIndices = [],
        this.boundingBox = null,
        this.boundingSphere = null,
        this.verticesNeedUpdate = !1,
        this.normalsNeedUpdate = !1,
        this.colorsNeedUpdate = !1,
        this.uvsNeedUpdate = !1,
        this.groupsNeedUpdate = !1
    }
    function Hr(t) {
        if (0 === t.length)
            return -1 / 0;
        for (var e = t[0], n = 1, i = t.length; n < i; ++n)
            t[n] > e && (e = t[n]);
        return e
    }
    Object.defineProperty(Dr.prototype, "needsUpdate", {
        set: function(t) {
            !0 === t && this.version++
        }
    }),
    Object.assign(Dr.prototype, {
        isBufferAttribute: !0,
        onUploadCallback: function() {},
        setUsage: function(t) {
            return this.usage = t,
            this
        },
        copy: function(t) {
            return this.name = t.name,
            this.array = new t.array.constructor(t.array),
            this.itemSize = t.itemSize,
            this.count = t.count,
            this.normalized = t.normalized,
            this.usage = t.usage,
            this
        },
        copyAt: function(t, e, n) {
            t *= this.itemSize,
            n *= e.itemSize;
            for (var i = 0, r = this.itemSize; i < r; i++)
                this.array[t + i] = e.array[n + i];
            return this
        },
        copyArray: function(t) {
            return this.array.set(t),
            this
        },
        copyColorsArray: function(t) {
            for (var e = this.array, n = 0, i = 0, r = t.length; i < r; i++) {
                var o = t[i];
                void 0 === o && (console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined", i),
                o = new Er),
                e[n++] = o.r,
                e[n++] = o.g,
                e[n++] = o.b
            }
            return this
        },
        copyVector2sArray: function(t) {
            for (var e = this.array, n = 0, i = 0, r = t.length; i < r; i++) {
                var o = t[i];
                void 0 === o && (console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined", i),
                o = new Zn),
                e[n++] = o.x,
                e[n++] = o.y
            }
            return this
        },
        copyVector3sArray: function(t) {
            for (var e = this.array, n = 0, i = 0, r = t.length; i < r; i++) {
                var o = t[i];
                void 0 === o && (console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined", i),
                o = new si),
                e[n++] = o.x,
                e[n++] = o.y,
                e[n++] = o.z
            }
            return this
        },
        copyVector4sArray: function(t) {
            for (var e = this.array, n = 0, i = 0, r = t.length; i < r; i++) {
                var o = t[i];
                void 0 === o && (console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined", i),
                o = new ei),
                e[n++] = o.x,
                e[n++] = o.y,
                e[n++] = o.z,
                e[n++] = o.w
            }
            return this
        },
        applyMatrix3: function(t) {
            for (var e = 0, n = this.count; e < n; e++)
                kr.x = this.getX(e),
                kr.y = this.getY(e),
                kr.z = this.getZ(e),
                kr.applyMatrix3(t),
                this.setXYZ(e, kr.x, kr.y, kr.z);
            return this
        },
        applyMatrix4: function(t) {
            for (var e = 0, n = this.count; e < n; e++)
                kr.x = this.getX(e),
                kr.y = this.getY(e),
                kr.z = this.getZ(e),
                kr.applyMatrix4(t),
                this.setXYZ(e, kr.x, kr.y, kr.z);
            return this
        },
        applyNormalMatrix: function(t) {
            for (var e = 0, n = this.count; e < n; e++)
                kr.x = this.getX(e),
                kr.y = this.getY(e),
                kr.z = this.getZ(e),
                kr.applyNormalMatrix(t),
                this.setXYZ(e, kr.x, kr.y, kr.z);
            return this
        },
        transformDirection: function(t) {
            for (var e = 0, n = this.count; e < n; e++)
                kr.x = this.getX(e),
                kr.y = this.getY(e),
                kr.z = this.getZ(e),
                kr.transformDirection(t),
                this.setXYZ(e, kr.x, kr.y, kr.z);
            return this
        },
        set: function(t, e) {
            return void 0 === e && (e = 0),
            this.array.set(t, e),
            this
        },
        getX: function(t) {
            return this.array[t * this.itemSize]
        },
        setX: function(t, e) {
            return this.array[t * this.itemSize] = e,
            this
        },
        getY: function(t) {
            return this.array[t * this.itemSize + 1]
        },
        setY: function(t, e) {
            return this.array[t * this.itemSize + 1] = e,
            this
        },
        getZ: function(t) {
            return this.array[t * this.itemSize + 2]
        },
        setZ: function(t, e) {
            return this.array[t * this.itemSize + 2] = e,
            this
        },
        getW: function(t) {
            return this.array[t * this.itemSize + 3]
        },
        setW: function(t, e) {
            return this.array[t * this.itemSize + 3] = e,
            this
        },
        setXY: function(t, e, n) {
            return t *= this.itemSize,
            this.array[t + 0] = e,
            this.array[t + 1] = n,
            this
        },
        setXYZ: function(t, e, n, i) {
            return t *= this.itemSize,
            this.array[t + 0] = e,
            this.array[t + 1] = n,
            this.array[t + 2] = i,
            this
        },
        setXYZW: function(t, e, n, i, r) {
            return t *= this.itemSize,
            this.array[t + 0] = e,
            this.array[t + 1] = n,
            this.array[t + 2] = i,
            this.array[t + 3] = r,
            this
        },
        onUpload: function(t) {
            return this.onUploadCallback = t,
            this
        },
        clone: function() {
            return new this.constructor(this.array,this.itemSize).copy(this)
        },
        toJSON: function() {
            return {
                itemSize: this.itemSize,
                type: this.array.constructor.name,
                array: Array.prototype.slice.call(this.array),
                normalized: this.normalized
            }
        }
    }),
    Rr.prototype = Object.create(Dr.prototype),
    Rr.prototype.constructor = Rr,
    Lr.prototype = Object.create(Dr.prototype),
    Lr.prototype.constructor = Lr,
    Nr.prototype = Object.create(Dr.prototype),
    Nr.prototype.constructor = Nr,
    jr.prototype = Object.create(Dr.prototype),
    jr.prototype.constructor = jr,
    Vr.prototype = Object.create(Dr.prototype),
    Vr.prototype.constructor = Vr,
    Fr.prototype = Object.create(Dr.prototype),
    Fr.prototype.constructor = Fr,
    Ur.prototype = Object.create(Dr.prototype),
    Ur.prototype.constructor = Ur,
    Br.prototype = Object.create(Dr.prototype),
    Br.prototype.constructor = Br,
    zr.prototype = Object.create(Dr.prototype),
    zr.prototype.constructor = zr,
    Object.assign(Gr.prototype, {
        computeGroups: function(t) {
            for (var e, n = [], i = void 0, r = t.faces, o = 0; o < r.length; o++) {
                var a = r[o];
                a.materialIndex !== i && (i = a.materialIndex,
                void 0 !== e && (e.count = 3 * o - e.start,
                n.push(e)),
                e = {
                    start: 3 * o,
                    materialIndex: i
                })
            }
            void 0 !== e && (e.count = 3 * o - e.start,
            n.push(e)),
            this.groups = n
        },
        fromGeometry: function(t) {
            var e, n = t.faces, i = t.vertices, r = t.faceVertexUvs, o = r[0] && r[0].length > 0, a = r[1] && r[1].length > 0, s = t.morphTargets, c = s.length;
            if (c > 0) {
                e = [];
                for (var l = 0; l < c; l++)
                    e[l] = {
                        name: s[l].name,
                        data: []
                    };
                this.morphTargets.position = e
            }
            var u, d = t.morphNormals, p = d.length;
            if (p > 0) {
                u = [];
                for (l = 0; l < p; l++)
                    u[l] = {
                        name: d[l].name,
                        data: []
                    };
                this.morphTargets.normal = u
            }
            var h = t.skinIndices
              , f = t.skinWeights
              , m = h.length === i.length
              , g = f.length === i.length;
            i.length > 0 && 0 === n.length && console.error("THREE.DirectGeometry: Faceless geometries are not supported.");
            for (l = 0; l < n.length; l++) {
                var v = n[l];
                this.vertices.push(i[v.a], i[v.b], i[v.c]);
                var y = v.vertexNormals;
                if (3 === y.length)
                    this.normals.push(y[0], y[1], y[2]);
                else {
                    var b = v.normal;
                    this.normals.push(b, b, b)
                }
                var w, S = v.vertexColors;
                if (3 === S.length)
                    this.colors.push(S[0], S[1], S[2]);
                else {
                    var x = v.color;
                    this.colors.push(x, x, x)
                }
                if (!0 === o)
                    void 0 !== (w = r[0][l]) ? this.uvs.push(w[0], w[1], w[2]) : (console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ", l),
                    this.uvs.push(new Zn, new Zn, new Zn));
                if (!0 === a)
                    void 0 !== (w = r[1][l]) ? this.uvs2.push(w[0], w[1], w[2]) : (console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ", l),
                    this.uvs2.push(new Zn, new Zn, new Zn));
                for (var M = 0; M < c; M++) {
                    var E = s[M].vertices;
                    e[M].data.push(E[v.a], E[v.b], E[v.c])
                }
                for (M = 0; M < p; M++) {
                    var C = d[M].vertexNormals[l];
                    u[M].data.push(C.a, C.b, C.c)
                }
                m && this.skinIndices.push(h[v.a], h[v.b], h[v.c]),
                g && this.skinWeights.push(f[v.a], f[v.b], f[v.c])
            }
            return this.computeGroups(t),
            this.verticesNeedUpdate = t.verticesNeedUpdate,
            this.normalsNeedUpdate = t.normalsNeedUpdate,
            this.colorsNeedUpdate = t.colorsNeedUpdate,
            this.uvsNeedUpdate = t.uvsNeedUpdate,
            this.groupsNeedUpdate = t.groupsNeedUpdate,
            null !== t.boundingSphere && (this.boundingSphere = t.boundingSphere.clone()),
            null !== t.boundingBox && (this.boundingBox = t.boundingBox.clone()),
            this
        }
    });
    var Wr = 1
      , qr = new mi
      , Xr = new Di
      , Yr = new si
      , Kr = new Yi
      , Zr = new Yi
      , Jr = new si;
    function Qr() {
        Object.defineProperty(this, "id", {
            value: Wr += 2
        }),
        this.uuid = Kn.generateUUID(),
        this.name = "",
        this.type = "BufferGeometry",
        this.index = null,
        this.attributes = {},
        this.morphAttributes = {},
        this.morphTargetsRelative = !1,
        this.groups = [],
        this.boundingBox = null,
        this.boundingSphere = null,
        this.drawRange = {
            start: 0,
            count: 1 / 0
        },
        this.userData = {}
    }
    Qr.prototype = Object.assign(Object.create(Wn.prototype), {
        constructor: Qr,
        isBufferGeometry: !0,
        getIndex: function() {
            return this.index
        },
        setIndex: function(t) {
            Array.isArray(t) ? this.index = new (Hr(t) > 65535 ? Ur : Vr)(t,1) : this.index = t
        },
        getAttribute: function(t) {
            return this.attributes[t]
        },
        setAttribute: function(t, e) {
            return this.attributes[t] = e,
            this
        },
        deleteAttribute: function(t) {
            return delete this.attributes[t],
            this
        },
        addGroup: function(t, e, n) {
            this.groups.push({
                start: t,
                count: e,
                materialIndex: void 0 !== n ? n : 0
            })
        },
        clearGroups: function() {
            this.groups = []
        },
        setDrawRange: function(t, e) {
            this.drawRange.start = t,
            this.drawRange.count = e
        },
        applyMatrix4: function(t) {
            var e = this.attributes.position;
            void 0 !== e && (e.applyMatrix4(t),
            e.needsUpdate = !0);
            var n = this.attributes.normal;
            if (void 0 !== n) {
                var i = (new Jn).getNormalMatrix(t);
                n.applyNormalMatrix(i),
                n.needsUpdate = !0
            }
            var r = this.attributes.tangent;
            return void 0 !== r && (r.transformDirection(t),
            r.needsUpdate = !0),
            null !== this.boundingBox && this.computeBoundingBox(),
            null !== this.boundingSphere && this.computeBoundingSphere(),
            this
        },
        rotateX: function(t) {
            return qr.makeRotationX(t),
            this.applyMatrix4(qr),
            this
        },
        rotateY: function(t) {
            return qr.makeRotationY(t),
            this.applyMatrix4(qr),
            this
        },
        rotateZ: function(t) {
            return qr.makeRotationZ(t),
            this.applyMatrix4(qr),
            this
        },
        translate: function(t, e, n) {
            return qr.makeTranslation(t, e, n),
            this.applyMatrix4(qr),
            this
        },
        scale: function(t, e, n) {
            return qr.makeScale(t, e, n),
            this.applyMatrix4(qr),
            this
        },
        lookAt: function(t) {
            return Xr.lookAt(t),
            Xr.updateMatrix(),
            this.applyMatrix4(Xr.matrix),
            this
        },
        center: function() {
            return this.computeBoundingBox(),
            this.boundingBox.getCenter(Yr).negate(),
            this.translate(Yr.x, Yr.y, Yr.z),
            this
        },
        setFromObject: function(t) {
            var e = t.geometry;
            if (t.isPoints || t.isLine) {
                var n = new Br(3 * e.vertices.length,3)
                  , i = new Br(3 * e.colors.length,3);
                if (this.setAttribute("position", n.copyVector3sArray(e.vertices)),
                this.setAttribute("color", i.copyColorsArray(e.colors)),
                e.lineDistances && e.lineDistances.length === e.vertices.length) {
                    var r = new Br(e.lineDistances.length,1);
                    this.setAttribute("lineDistance", r.copyArray(e.lineDistances))
                }
                null !== e.boundingSphere && (this.boundingSphere = e.boundingSphere.clone()),
                null !== e.boundingBox && (this.boundingBox = e.boundingBox.clone())
            } else
                t.isMesh && e && e.isGeometry && this.fromGeometry(e);
            return this
        },
        setFromPoints: function(t) {
            for (var e = [], n = 0, i = t.length; n < i; n++) {
                var r = t[n];
                e.push(r.x, r.y, r.z || 0)
            }
            return this.setAttribute("position", new Br(e,3)),
            this
        },
        updateFromObject: function(t) {
            var e, n = t.geometry;
            if (t.isMesh) {
                var i = n.__directGeometry;
                if (!0 === n.elementsNeedUpdate && (i = void 0,
                n.elementsNeedUpdate = !1),
                void 0 === i)
                    return this.fromGeometry(n);
                i.verticesNeedUpdate = n.verticesNeedUpdate,
                i.normalsNeedUpdate = n.normalsNeedUpdate,
                i.colorsNeedUpdate = n.colorsNeedUpdate,
                i.uvsNeedUpdate = n.uvsNeedUpdate,
                i.groupsNeedUpdate = n.groupsNeedUpdate,
                n.verticesNeedUpdate = !1,
                n.normalsNeedUpdate = !1,
                n.colorsNeedUpdate = !1,
                n.uvsNeedUpdate = !1,
                n.groupsNeedUpdate = !1,
                n = i
            }
            return !0 === n.verticesNeedUpdate && (void 0 !== (e = this.attributes.position) && (e.copyVector3sArray(n.vertices),
            e.needsUpdate = !0),
            n.verticesNeedUpdate = !1),
            !0 === n.normalsNeedUpdate && (void 0 !== (e = this.attributes.normal) && (e.copyVector3sArray(n.normals),
            e.needsUpdate = !0),
            n.normalsNeedUpdate = !1),
            !0 === n.colorsNeedUpdate && (void 0 !== (e = this.attributes.color) && (e.copyColorsArray(n.colors),
            e.needsUpdate = !0),
            n.colorsNeedUpdate = !1),
            n.uvsNeedUpdate && (void 0 !== (e = this.attributes.uv) && (e.copyVector2sArray(n.uvs),
            e.needsUpdate = !0),
            n.uvsNeedUpdate = !1),
            n.lineDistancesNeedUpdate && (void 0 !== (e = this.attributes.lineDistance) && (e.copyArray(n.lineDistances),
            e.needsUpdate = !0),
            n.lineDistancesNeedUpdate = !1),
            n.groupsNeedUpdate && (n.computeGroups(t.geometry),
            this.groups = n.groups,
            n.groupsNeedUpdate = !1),
            this
        },
        fromGeometry: function(t) {
            return t.__directGeometry = (new Gr).fromGeometry(t),
            this.fromDirectGeometry(t.__directGeometry)
        },
        fromDirectGeometry: function(t) {
            var e = new Float32Array(3 * t.vertices.length);
            if (this.setAttribute("position", new Dr(e,3).copyVector3sArray(t.vertices)),
            t.normals.length > 0) {
                var n = new Float32Array(3 * t.normals.length);
                this.setAttribute("normal", new Dr(n,3).copyVector3sArray(t.normals))
            }
            if (t.colors.length > 0) {
                var i = new Float32Array(3 * t.colors.length);
                this.setAttribute("color", new Dr(i,3).copyColorsArray(t.colors))
            }
            if (t.uvs.length > 0) {
                var r = new Float32Array(2 * t.uvs.length);
                this.setAttribute("uv", new Dr(r,2).copyVector2sArray(t.uvs))
            }
            if (t.uvs2.length > 0) {
                var o = new Float32Array(2 * t.uvs2.length);
                this.setAttribute("uv2", new Dr(o,2).copyVector2sArray(t.uvs2))
            }
            for (var a in this.groups = t.groups,
            t.morphTargets) {
                for (var s = [], c = t.morphTargets[a], l = 0, u = c.length; l < u; l++) {
                    var d = c[l]
                      , p = new Br(3 * d.data.length,3);
                    p.name = d.name,
                    s.push(p.copyVector3sArray(d.data))
                }
                this.morphAttributes[a] = s
            }
            if (t.skinIndices.length > 0) {
                var h = new Br(4 * t.skinIndices.length,4);
                this.setAttribute("skinIndex", h.copyVector4sArray(t.skinIndices))
            }
            if (t.skinWeights.length > 0) {
                var f = new Br(4 * t.skinWeights.length,4);
                this.setAttribute("skinWeight", f.copyVector4sArray(t.skinWeights))
            }
            return null !== t.boundingSphere && (this.boundingSphere = t.boundingSphere.clone()),
            null !== t.boundingBox && (this.boundingBox = t.boundingBox.clone()),
            this
        },
        computeBoundingBox: function() {
            null === this.boundingBox && (this.boundingBox = new Yi);
            var t = this.attributes.position
              , e = this.morphAttributes.position;
            if (void 0 !== t) {
                if (this.boundingBox.setFromBufferAttribute(t),
                e)
                    for (var n = 0, i = e.length; n < i; n++) {
                        var r = e[n];
                        Kr.setFromBufferAttribute(r),
                        this.morphTargetsRelative ? (Jr.addVectors(this.boundingBox.min, Kr.min),
                        this.boundingBox.expandByPoint(Jr),
                        Jr.addVectors(this.boundingBox.max, Kr.max),
                        this.boundingBox.expandByPoint(Jr)) : (this.boundingBox.expandByPoint(Kr.min),
                        this.boundingBox.expandByPoint(Kr.max))
                    }
            } else
                this.boundingBox.makeEmpty();
            (isNaN(this.boundingBox.min.x) || isNaN(this.boundingBox.min.y) || isNaN(this.boundingBox.min.z)) && console.error('THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this)
        },
        computeBoundingSphere: function() {
            null === this.boundingSphere && (this.boundingSphere = new Ji);
            var t = this.attributes.position
              , e = this.morphAttributes.position;
            if (t) {
                var n = this.boundingSphere.center;
                if (Kr.setFromBufferAttribute(t),
                e)
                    for (var i = 0, r = e.length; i < r; i++) {
                        var o = e[i];
                        Zr.setFromBufferAttribute(o),
                        this.morphTargetsRelative ? (Jr.addVectors(Kr.min, Zr.min),
                        Kr.expandByPoint(Jr),
                        Jr.addVectors(Kr.max, Zr.max),
                        Kr.expandByPoint(Jr)) : (Kr.expandByPoint(Zr.min),
                        Kr.expandByPoint(Zr.max))
                    }
                Kr.getCenter(n);
                var a = 0;
                for (i = 0,
                r = t.count; i < r; i++)
                    Jr.fromBufferAttribute(t, i),
                    a = Math.max(a, n.distanceToSquared(Jr));
                if (e)
                    for (i = 0,
                    r = e.length; i < r; i++) {
                        o = e[i];
                        for (var s = this.morphTargetsRelative, c = 0, l = o.count; c < l; c++)
                            Jr.fromBufferAttribute(o, c),
                            s && (Yr.fromBufferAttribute(t, c),
                            Jr.add(Yr)),
                            a = Math.max(a, n.distanceToSquared(Jr))
                    }
                this.boundingSphere.radius = Math.sqrt(a),
                isNaN(this.boundingSphere.radius) && console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this)
            }
        },
        computeFaceNormals: function() {},
        computeVertexNormals: function() {
            var t = this.index
              , e = this.attributes;
            if (e.position) {
                var n = e.position.array;
                if (void 0 === e.normal)
                    this.setAttribute("normal", new Dr(new Float32Array(n.length),3));
                else
                    for (var i = e.normal.array, r = 0, o = i.length; r < o; r++)
                        i[r] = 0;
                var a, s, c, l = e.normal.array, u = new si, d = new si, p = new si, h = new si, f = new si;
                if (t) {
                    var m = t.array;
                    for (r = 0,
                    o = t.count; r < o; r += 3)
                        a = 3 * m[r + 0],
                        s = 3 * m[r + 1],
                        c = 3 * m[r + 2],
                        u.fromArray(n, a),
                        d.fromArray(n, s),
                        p.fromArray(n, c),
                        h.subVectors(p, d),
                        f.subVectors(u, d),
                        h.cross(f),
                        l[a] += h.x,
                        l[a + 1] += h.y,
                        l[a + 2] += h.z,
                        l[s] += h.x,
                        l[s + 1] += h.y,
                        l[s + 2] += h.z,
                        l[c] += h.x,
                        l[c + 1] += h.y,
                        l[c + 2] += h.z
                } else
                    for (r = 0,
                    o = n.length; r < o; r += 9)
                        u.fromArray(n, r),
                        d.fromArray(n, r + 3),
                        p.fromArray(n, r + 6),
                        h.subVectors(p, d),
                        f.subVectors(u, d),
                        h.cross(f),
                        l[r] = h.x,
                        l[r + 1] = h.y,
                        l[r + 2] = h.z,
                        l[r + 3] = h.x,
                        l[r + 4] = h.y,
                        l[r + 5] = h.z,
                        l[r + 6] = h.x,
                        l[r + 7] = h.y,
                        l[r + 8] = h.z;
                this.normalizeNormals(),
                e.normal.needsUpdate = !0
            }
        },
        merge: function(t, e) {
            if (t && t.isBufferGeometry) {
                void 0 === e && (e = 0,
                console.warn("THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge."));
                var n = this.attributes;
                for (var i in n)
                    if (void 0 !== t.attributes[i])
                        for (var r = n[i].array, o = t.attributes[i], a = o.array, s = o.itemSize * e, c = Math.min(a.length, r.length - s), l = 0, u = s; l < c; l++,
                        u++)
                            r[u] = a[l];
                return this
            }
            console.error("THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.", t)
        },
        normalizeNormals: function() {
            for (var t = this.attributes.normal, e = 0, n = t.count; e < n; e++)
                Jr.x = t.getX(e),
                Jr.y = t.getY(e),
                Jr.z = t.getZ(e),
                Jr.normalize(),
                t.setXYZ(e, Jr.x, Jr.y, Jr.z)
        },
        toNonIndexed: function() {
            function t(t, e) {
                for (var n = t.array, i = t.itemSize, r = new n.constructor(e.length * i), o = 0, a = 0, s = 0, c = e.length; s < c; s++) {
                    o = e[s] * i;
                    for (var l = 0; l < i; l++)
                        r[a++] = n[o++]
                }
                return new Dr(r,i)
            }
            if (null === this.index)
                return console.warn("THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed."),
                this;
            var e = new Qr
              , n = this.index.array
              , i = this.attributes;
            for (var r in i) {
                var o = t(i[r], n);
                e.setAttribute(r, o)
            }
            var a = this.morphAttributes;
            for (r in a) {
                for (var s = [], c = a[r], l = 0, u = c.length; l < u; l++) {
                    o = t(c[l], n);
                    s.push(o)
                }
                e.morphAttributes[r] = s
            }
            e.morphTargetsRelative = this.morphTargetsRelative;
            for (var d = this.groups, p = (l = 0,
            d.length); l < p; l++) {
                var h = d[l];
                e.addGroup(h.start, h.count, h.materialIndex)
            }
            return e
        },
        toJSON: function() {
            var t = {
                metadata: {
                    version: 4.5,
                    type: "BufferGeometry",
                    generator: "BufferGeometry.toJSON"
                }
            };
            if (t.uuid = this.uuid,
            t.type = this.type,
            "" !== this.name && (t.name = this.name),
            Object.keys(this.userData).length > 0 && (t.userData = this.userData),
            void 0 !== this.parameters) {
                var e = this.parameters;
                for (var n in e)
                    void 0 !== e[n] && (t[n] = e[n]);
                return t
            }
            t.data = {
                attributes: {}
            };
            var i = this.index;
            null !== i && (t.data.index = {
                type: i.array.constructor.name,
                array: Array.prototype.slice.call(i.array)
            });
            var r = this.attributes;
            for (var n in r) {
                var o = (p = r[n]).toJSON();
                "" !== p.name && (o.name = p.name),
                t.data.attributes[n] = o
            }
            var a = {}
              , s = !1;
            for (var n in this.morphAttributes) {
                for (var c = this.morphAttributes[n], l = [], u = 0, d = c.length; u < d; u++) {
                    var p;
                    o = (p = c[u]).toJSON();
                    "" !== p.name && (o.name = p.name),
                    l.push(o)
                }
                l.length > 0 && (a[n] = l,
                s = !0)
            }
            s && (t.data.morphAttributes = a,
            t.data.morphTargetsRelative = this.morphTargetsRelative);
            var h = this.groups;
            h.length > 0 && (t.data.groups = JSON.parse(JSON.stringify(h)));
            var f = this.boundingSphere;
            return null !== f && (t.data.boundingSphere = {
                center: f.center.toArray(),
                radius: f.radius
            }),
            t
        },
        clone: function() {
            return (new Qr).copy(this)
        },
        copy: function(t) {
            var e, n, i;
            this.index = null,
            this.attributes = {},
            this.morphAttributes = {},
            this.groups = [],
            this.boundingBox = null,
            this.boundingSphere = null,
            this.name = t.name;
            var r = t.index;
            null !== r && this.setIndex(r.clone());
            var o = t.attributes;
            for (e in o) {
                var a = o[e];
                this.setAttribute(e, a.clone())
            }
            var s = t.morphAttributes;
            for (e in s) {
                var c = []
                  , l = s[e];
                for (n = 0,
                i = l.length; n < i; n++)
                    c.push(l[n].clone());
                this.morphAttributes[e] = c
            }
            this.morphTargetsRelative = t.morphTargetsRelative;
            var u = t.groups;
            for (n = 0,
            i = u.length; n < i; n++) {
                var d = u[n];
                this.addGroup(d.start, d.count, d.materialIndex)
            }
            var p = t.boundingBox;
            null !== p && (this.boundingBox = p.clone());
            var h = t.boundingSphere;
            return null !== h && (this.boundingSphere = h.clone()),
            this.drawRange.start = t.drawRange.start,
            this.drawRange.count = t.drawRange.count,
            this.userData = t.userData,
            this
        },
        dispose: function() {
            this.dispatchEvent({
                type: "dispose"
            })
        }
    });
    var $r = new mi
      , to = new or
      , eo = new Ji
      , no = new si
      , io = new si
      , ro = new si
      , oo = new si
      , ao = new si
      , so = new si
      , co = new si
      , lo = new si
      , uo = new si
      , po = new Zn
      , ho = new Zn
      , fo = new Zn
      , mo = new si
      , go = new si;
    function vo(t, e) {
        Di.call(this),
        this.type = "Mesh",
        this.geometry = void 0 !== t ? t : new Qr,
        this.material = void 0 !== e ? e : new Ir,
        this.updateMorphTargets()
    }
    function yo(t, e, n, i, r, o, a, s) {
        if (null === (e.side === T ? i.intersectTriangle(a, o, r, !0, s) : i.intersectTriangle(r, o, a, e.side !== O, s)))
            return null;
        go.copy(s),
        go.applyMatrix4(t.matrixWorld);
        var c = n.ray.origin.distanceTo(go);
        return c < n.near || c > n.far ? null : {
            distance: c,
            point: go.clone(),
            object: t
        }
    }
    function bo(t, e, n, i, r, o, a, s, c, l, u, d) {
        no.fromBufferAttribute(r, l),
        io.fromBufferAttribute(r, u),
        ro.fromBufferAttribute(r, d);
        var p = t.morphTargetInfluences;
        if (e.morphTargets && o && p) {
            co.set(0, 0, 0),
            lo.set(0, 0, 0),
            uo.set(0, 0, 0);
            for (var h = 0, f = o.length; h < f; h++) {
                var m = p[h]
                  , g = o[h];
                0 !== m && (oo.fromBufferAttribute(g, l),
                ao.fromBufferAttribute(g, u),
                so.fromBufferAttribute(g, d),
                a ? (co.addScaledVector(oo, m),
                lo.addScaledVector(ao, m),
                uo.addScaledVector(so, m)) : (co.addScaledVector(oo.sub(no), m),
                lo.addScaledVector(ao.sub(io), m),
                uo.addScaledVector(so.sub(ro), m)))
            }
            no.add(co),
            io.add(lo),
            ro.add(uo)
        }
        var v = yo(t, e, n, i, no, io, ro, mo);
        if (v) {
            s && (po.fromBufferAttribute(s, l),
            ho.fromBufferAttribute(s, u),
            fo.fromBufferAttribute(s, d),
            v.uv = wr.getUV(mo, no, io, ro, po, ho, fo, new Zn)),
            c && (po.fromBufferAttribute(c, l),
            ho.fromBufferAttribute(c, u),
            fo.fromBufferAttribute(c, d),
            v.uv2 = wr.getUV(mo, no, io, ro, po, ho, fo, new Zn));
            var y = new Or(l,u,d);
            wr.getNormal(no, io, ro, y.normal),
            v.face = y
        }
        return v
    }
    vo.prototype = Object.assign(Object.create(Di.prototype), {
        constructor: vo,
        isMesh: !0,
        copy: function(t) {
            return Di.prototype.copy.call(this, t),
            void 0 !== t.morphTargetInfluences && (this.morphTargetInfluences = t.morphTargetInfluences.slice()),
            void 0 !== t.morphTargetDictionary && (this.morphTargetDictionary = Object.assign({}, t.morphTargetDictionary)),
            this
        },
        updateMorphTargets: function() {
            var t, e, n, i = this.geometry;
            if (i.isBufferGeometry) {
                var r = i.morphAttributes
                  , o = Object.keys(r);
                if (o.length > 0) {
                    var a = r[o[0]];
                    if (void 0 !== a)
                        for (this.morphTargetInfluences = [],
                        this.morphTargetDictionary = {},
                        t = 0,
                        e = a.length; t < e; t++)
                            n = a[t].name || String(t),
                            this.morphTargetInfluences.push(0),
                            this.morphTargetDictionary[n] = t
                }
            } else {
                var s = i.morphTargets;
                void 0 !== s && s.length > 0 && console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")
            }
        },
        raycast: function(t, e) {
            var n, i = this.geometry, r = this.material, o = this.matrixWorld;
            if (void 0 !== r && (null === i.boundingSphere && i.computeBoundingSphere(),
            eo.copy(i.boundingSphere),
            eo.applyMatrix4(o),
            !1 !== t.ray.intersectsSphere(eo) && ($r.getInverse(o),
            to.copy(t.ray).applyMatrix4($r),
            null === i.boundingBox || !1 !== to.intersectsBox(i.boundingBox))))
                if (i.isBufferGeometry) {
                    var a, s, c, l, u, d, p, h, f, m = i.index, g = i.attributes.position, v = i.morphAttributes.position, y = i.morphTargetsRelative, b = i.attributes.uv, w = i.attributes.uv2, S = i.groups, x = i.drawRange;
                    if (null !== m)
                        if (Array.isArray(r))
                            for (l = 0,
                            d = S.length; l < d; l++)
                                for (f = r[(h = S[l]).materialIndex],
                                u = Math.max(h.start, x.start),
                                p = Math.min(h.start + h.count, x.start + x.count); u < p; u += 3)
                                    a = m.getX(u),
                                    s = m.getX(u + 1),
                                    c = m.getX(u + 2),
                                    (n = bo(this, f, t, to, g, v, y, b, w, a, s, c)) && (n.faceIndex = Math.floor(u / 3),
                                    n.face.materialIndex = h.materialIndex,
                                    e.push(n));
                        else
                            for (l = Math.max(0, x.start),
                            d = Math.min(m.count, x.start + x.count); l < d; l += 3)
                                a = m.getX(l),
                                s = m.getX(l + 1),
                                c = m.getX(l + 2),
                                (n = bo(this, r, t, to, g, v, y, b, w, a, s, c)) && (n.faceIndex = Math.floor(l / 3),
                                e.push(n));
                    else if (void 0 !== g)
                        if (Array.isArray(r))
                            for (l = 0,
                            d = S.length; l < d; l++)
                                for (f = r[(h = S[l]).materialIndex],
                                u = Math.max(h.start, x.start),
                                p = Math.min(h.start + h.count, x.start + x.count); u < p; u += 3)
                                    (n = bo(this, f, t, to, g, v, y, b, w, a = u, s = u + 1, c = u + 2)) && (n.faceIndex = Math.floor(u / 3),
                                    n.face.materialIndex = h.materialIndex,
                                    e.push(n));
                        else
                            for (l = Math.max(0, x.start),
                            d = Math.min(g.count, x.start + x.count); l < d; l += 3)
                                (n = bo(this, r, t, to, g, v, y, b, w, a = l, s = l + 1, c = l + 2)) && (n.faceIndex = Math.floor(l / 3),
                                e.push(n))
                } else if (i.isGeometry) {
                    var M, E, C, A, T = Array.isArray(r), O = i.vertices, _ = i.faces, P = i.faceVertexUvs[0];
                    P.length > 0 && (A = P);
                    for (var I = 0, k = _.length; I < k; I++) {
                        var D = _[I]
                          , R = T ? r[D.materialIndex] : r;
                        if (void 0 !== R && (M = O[D.a],
                        E = O[D.b],
                        C = O[D.c],
                        n = yo(this, R, t, to, M, E, C, mo))) {
                            if (A && A[I]) {
                                var L = A[I];
                                po.copy(L[0]),
                                ho.copy(L[1]),
                                fo.copy(L[2]),
                                n.uv = wr.getUV(mo, M, E, C, po, ho, fo, new Zn)
                            }
                            n.face = D,
                            n.faceIndex = I,
                            e.push(n)
                        }
                    }
                }
        },
        clone: function() {
            return new this.constructor(this.geometry,this.material).copy(this)
        }
    });
    var wo = 0
      , So = new mi
      , xo = new Di
      , Mo = new si;
    function Eo() {
        Object.defineProperty(this, "id", {
            value: wo += 2
        }),
        this.uuid = Kn.generateUUID(),
        this.name = "",
        this.type = "Geometry",
        this.vertices = [],
        this.colors = [],
        this.faces = [],
        this.faceVertexUvs = [[]],
        this.morphTargets = [],
        this.morphNormals = [],
        this.skinWeights = [],
        this.skinIndices = [],
        this.lineDistances = [],
        this.boundingBox = null,
        this.boundingSphere = null,
        this.elementsNeedUpdate = !1,
        this.verticesNeedUpdate = !1,
        this.uvsNeedUpdate = !1,
        this.normalsNeedUpdate = !1,
        this.colorsNeedUpdate = !1,
        this.lineDistancesNeedUpdate = !1,
        this.groupsNeedUpdate = !1
    }
    Eo.prototype = Object.assign(Object.create(Wn.prototype), {
        constructor: Eo,
        isGeometry: !0,
        applyMatrix4: function(t) {
            for (var e = (new Jn).getNormalMatrix(t), n = 0, i = this.vertices.length; n < i; n++) {
                this.vertices[n].applyMatrix4(t)
            }
            for (n = 0,
            i = this.faces.length; n < i; n++) {
                var r = this.faces[n];
                r.normal.applyMatrix3(e).normalize();
                for (var o = 0, a = r.vertexNormals.length; o < a; o++)
                    r.vertexNormals[o].applyMatrix3(e).normalize()
            }
            return null !== this.boundingBox && this.computeBoundingBox(),
            null !== this.boundingSphere && this.computeBoundingSphere(),
            this.verticesNeedUpdate = !0,
            this.normalsNeedUpdate = !0,
            this
        },
        rotateX: function(t) {
            return So.makeRotationX(t),
            this.applyMatrix4(So),
            this
        },
        rotateY: function(t) {
            return So.makeRotationY(t),
            this.applyMatrix4(So),
            this
        },
        rotateZ: function(t) {
            return So.makeRotationZ(t),
            this.applyMatrix4(So),
            this
        },
        translate: function(t, e, n) {
            return So.makeTranslation(t, e, n),
            this.applyMatrix4(So),
            this
        },
        scale: function(t, e, n) {
            return So.makeScale(t, e, n),
            this.applyMatrix4(So),
            this
        },
        lookAt: function(t) {
            return xo.lookAt(t),
            xo.updateMatrix(),
            this.applyMatrix4(xo.matrix),
            this
        },
        fromBufferGeometry: function(t) {
            var e = this
              , n = null !== t.index ? t.index.array : void 0
              , i = t.attributes;
            if (void 0 === i.position)
                return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),
                this;
            var r = i.position.array
              , o = void 0 !== i.normal ? i.normal.array : void 0
              , a = void 0 !== i.color ? i.color.array : void 0
              , s = void 0 !== i.uv ? i.uv.array : void 0
              , c = void 0 !== i.uv2 ? i.uv2.array : void 0;
            void 0 !== c && (this.faceVertexUvs[1] = []);
            for (var l = 0; l < r.length; l += 3)
                e.vertices.push((new si).fromArray(r, l)),
                void 0 !== a && e.colors.push((new Er).fromArray(a, l));
            function u(t, n, i, r) {
                var l = void 0 === a ? [] : [e.colors[t].clone(), e.colors[n].clone(), e.colors[i].clone()]
                  , u = new Or(t,n,i,void 0 === o ? [] : [(new si).fromArray(o, 3 * t), (new si).fromArray(o, 3 * n), (new si).fromArray(o, 3 * i)],l,r);
                e.faces.push(u),
                void 0 !== s && e.faceVertexUvs[0].push([(new Zn).fromArray(s, 2 * t), (new Zn).fromArray(s, 2 * n), (new Zn).fromArray(s, 2 * i)]),
                void 0 !== c && e.faceVertexUvs[1].push([(new Zn).fromArray(c, 2 * t), (new Zn).fromArray(c, 2 * n), (new Zn).fromArray(c, 2 * i)])
            }
            var d = t.groups;
            if (d.length > 0)
                for (l = 0; l < d.length; l++)
                    for (var p = d[l], h = p.start, f = h, m = h + p.count; f < m; f += 3)
                        void 0 !== n ? u(n[f], n[f + 1], n[f + 2], p.materialIndex) : u(f, f + 1, f + 2, p.materialIndex);
            else if (void 0 !== n)
                for (l = 0; l < n.length; l += 3)
                    u(n[l], n[l + 1], n[l + 2]);
            else
                for (l = 0; l < r.length / 3; l += 3)
                    u(l, l + 1, l + 2);
            return this.computeFaceNormals(),
            null !== t.boundingBox && (this.boundingBox = t.boundingBox.clone()),
            null !== t.boundingSphere && (this.boundingSphere = t.boundingSphere.clone()),
            this
        },
        center: function() {
            return this.computeBoundingBox(),
            this.boundingBox.getCenter(Mo).negate(),
            this.translate(Mo.x, Mo.y, Mo.z),
            this
        },
        normalize: function() {
            this.computeBoundingSphere();
            var t = this.boundingSphere.center
              , e = this.boundingSphere.radius
              , n = 0 === e ? 1 : 1 / e
              , i = new mi;
            return i.set(n, 0, 0, -n * t.x, 0, n, 0, -n * t.y, 0, 0, n, -n * t.z, 0, 0, 0, 1),
            this.applyMatrix4(i),
            this
        },
        computeFaceNormals: function() {
            for (var t = new si, e = new si, n = 0, i = this.faces.length; n < i; n++) {
                var r = this.faces[n]
                  , o = this.vertices[r.a]
                  , a = this.vertices[r.b]
                  , s = this.vertices[r.c];
                t.subVectors(s, a),
                e.subVectors(o, a),
                t.cross(e),
                t.normalize(),
                r.normal.copy(t)
            }
        },
        computeVertexNormals: function(t) {
            var e, n, i, r, o, a;
            for (void 0 === t && (t = !0),
            a = new Array(this.vertices.length),
            e = 0,
            n = this.vertices.length; e < n; e++)
                a[e] = new si;
            if (t) {
                var s, c, l, u = new si, d = new si;
                for (i = 0,
                r = this.faces.length; i < r; i++)
                    o = this.faces[i],
                    s = this.vertices[o.a],
                    c = this.vertices[o.b],
                    l = this.vertices[o.c],
                    u.subVectors(l, c),
                    d.subVectors(s, c),
                    u.cross(d),
                    a[o.a].add(u),
                    a[o.b].add(u),
                    a[o.c].add(u)
            } else
                for (this.computeFaceNormals(),
                i = 0,
                r = this.faces.length; i < r; i++)
                    a[(o = this.faces[i]).a].add(o.normal),
                    a[o.b].add(o.normal),
                    a[o.c].add(o.normal);
            for (e = 0,
            n = this.vertices.length; e < n; e++)
                a[e].normalize();
            for (i = 0,
            r = this.faces.length; i < r; i++) {
                var p = (o = this.faces[i]).vertexNormals;
                3 === p.length ? (p[0].copy(a[o.a]),
                p[1].copy(a[o.b]),
                p[2].copy(a[o.c])) : (p[0] = a[o.a].clone(),
                p[1] = a[o.b].clone(),
                p[2] = a[o.c].clone())
            }
            this.faces.length > 0 && (this.normalsNeedUpdate = !0)
        },
        computeFlatVertexNormals: function() {
            var t, e, n;
            for (this.computeFaceNormals(),
            t = 0,
            e = this.faces.length; t < e; t++) {
                var i = (n = this.faces[t]).vertexNormals;
                3 === i.length ? (i[0].copy(n.normal),
                i[1].copy(n.normal),
                i[2].copy(n.normal)) : (i[0] = n.normal.clone(),
                i[1] = n.normal.clone(),
                i[2] = n.normal.clone())
            }
            this.faces.length > 0 && (this.normalsNeedUpdate = !0)
        },
        computeMorphNormals: function() {
            var t, e, n, i, r;
            for (n = 0,
            i = this.faces.length; n < i; n++)
                for ((r = this.faces[n]).__originalFaceNormal ? r.__originalFaceNormal.copy(r.normal) : r.__originalFaceNormal = r.normal.clone(),
                r.__originalVertexNormals || (r.__originalVertexNormals = []),
                t = 0,
                e = r.vertexNormals.length; t < e; t++)
                    r.__originalVertexNormals[t] ? r.__originalVertexNormals[t].copy(r.vertexNormals[t]) : r.__originalVertexNormals[t] = r.vertexNormals[t].clone();
            var o = new Eo;
            for (o.faces = this.faces,
            t = 0,
            e = this.morphTargets.length; t < e; t++) {
                if (!this.morphNormals[t]) {
                    this.morphNormals[t] = {},
                    this.morphNormals[t].faceNormals = [],
                    this.morphNormals[t].vertexNormals = [];
                    var a = this.morphNormals[t].faceNormals
                      , s = this.morphNormals[t].vertexNormals;
                    for (n = 0,
                    i = this.faces.length; n < i; n++)
                        c = new si,
                        l = {
                            a: new si,
                            b: new si,
                            c: new si
                        },
                        a.push(c),
                        s.push(l)
                }
                var c, l, u = this.morphNormals[t];
                for (o.vertices = this.morphTargets[t].vertices,
                o.computeFaceNormals(),
                o.computeVertexNormals(),
                n = 0,
                i = this.faces.length; n < i; n++)
                    r = this.faces[n],
                    c = u.faceNormals[n],
                    l = u.vertexNormals[n],
                    c.copy(r.normal),
                    l.a.copy(r.vertexNormals[0]),
                    l.b.copy(r.vertexNormals[1]),
                    l.c.copy(r.vertexNormals[2])
            }
            for (n = 0,
            i = this.faces.length; n < i; n++)
                (r = this.faces[n]).normal = r.__originalFaceNormal,
                r.vertexNormals = r.__originalVertexNormals
        },
        computeBoundingBox: function() {
            null === this.boundingBox && (this.boundingBox = new Yi),
            this.boundingBox.setFromPoints(this.vertices)
        },
        computeBoundingSphere: function() {
            null === this.boundingSphere && (this.boundingSphere = new Ji),
            this.boundingSphere.setFromPoints(this.vertices)
        },
        merge: function(t, e, n) {
            if (t && t.isGeometry) {
                var i, r = this.vertices.length, o = this.vertices, a = t.vertices, s = this.faces, c = t.faces, l = this.colors, u = t.colors;
                void 0 === n && (n = 0),
                void 0 !== e && (i = (new Jn).getNormalMatrix(e));
                for (var d = 0, p = a.length; d < p; d++) {
                    var h = a[d].clone();
                    void 0 !== e && h.applyMatrix4(e),
                    o.push(h)
                }
                for (d = 0,
                p = u.length; d < p; d++)
                    l.push(u[d].clone());
                for (d = 0,
                p = c.length; d < p; d++) {
                    var f, m, g, v = c[d], y = v.vertexNormals, b = v.vertexColors;
                    (f = new Or(v.a + r,v.b + r,v.c + r)).normal.copy(v.normal),
                    void 0 !== i && f.normal.applyMatrix3(i).normalize();
                    for (var w = 0, S = y.length; w < S; w++)
                        m = y[w].clone(),
                        void 0 !== i && m.applyMatrix3(i).normalize(),
                        f.vertexNormals.push(m);
                    f.color.copy(v.color);
                    for (w = 0,
                    S = b.length; w < S; w++)
                        g = b[w],
                        f.vertexColors.push(g.clone());
                    f.materialIndex = v.materialIndex + n,
                    s.push(f)
                }
                for (d = 0,
                p = t.faceVertexUvs.length; d < p; d++) {
                    var x = t.faceVertexUvs[d];
                    void 0 === this.faceVertexUvs[d] && (this.faceVertexUvs[d] = []);
                    for (w = 0,
                    S = x.length; w < S; w++) {
                        for (var M = x[w], E = [], C = 0, A = M.length; C < A; C++)
                            E.push(M[C].clone());
                        this.faceVertexUvs[d].push(E)
                    }
                }
            } else
                console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.", t)
        },
        mergeMesh: function(t) {
            t && t.isMesh ? (t.matrixAutoUpdate && t.updateMatrix(),
            this.merge(t.geometry, t.matrix)) : console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.", t)
        },
        mergeVertices: function() {
            var t, e, n, i, r, o, a, s, c = {}, l = [], u = [], d = Math.pow(10, 4);
            for (n = 0,
            i = this.vertices.length; n < i; n++)
                t = this.vertices[n],
                void 0 === c[e = Math.round(t.x * d) + "_" + Math.round(t.y * d) + "_" + Math.round(t.z * d)] ? (c[e] = n,
                l.push(this.vertices[n]),
                u[n] = l.length - 1) : u[n] = u[c[e]];
            var p = [];
            for (n = 0,
            i = this.faces.length; n < i; n++) {
                (r = this.faces[n]).a = u[r.a],
                r.b = u[r.b],
                r.c = u[r.c],
                o = [r.a, r.b, r.c];
                for (var h = 0; h < 3; h++)
                    if (o[h] === o[(h + 1) % 3]) {
                        p.push(n);
                        break
                    }
            }
            for (n = p.length - 1; n >= 0; n--) {
                var f = p[n];
                for (this.faces.splice(f, 1),
                a = 0,
                s = this.faceVertexUvs.length; a < s; a++)
                    this.faceVertexUvs[a].splice(f, 1)
            }
            var m = this.vertices.length - l.length;
            return this.vertices = l,
            m
        },
        setFromPoints: function(t) {
            this.vertices = [];
            for (var e = 0, n = t.length; e < n; e++) {
                var i = t[e];
                this.vertices.push(new si(i.x,i.y,i.z || 0))
            }
            return this
        },
        sortFacesByMaterialIndex: function() {
            for (var t = this.faces, e = t.length, n = 0; n < e; n++)
                t[n]._id = n;
            t.sort((function(t, e) {
                return t.materialIndex - e.materialIndex
            }
            ));
            var i, r, o = this.faceVertexUvs[0], a = this.faceVertexUvs[1];
            o && o.length === e && (i = []),
            a && a.length === e && (r = []);
            for (n = 0; n < e; n++) {
                var s = t[n]._id;
                i && i.push(o[s]),
                r && r.push(a[s])
            }
            i && (this.faceVertexUvs[0] = i),
            r && (this.faceVertexUvs[1] = r)
        },
        toJSON: function() {
            var t = {
                metadata: {
                    version: 4.5,
                    type: "Geometry",
                    generator: "Geometry.toJSON"
                }
            };
            if (t.uuid = this.uuid,
            t.type = this.type,
            "" !== this.name && (t.name = this.name),
            void 0 !== this.parameters) {
                var e = this.parameters;
                for (var n in e)
                    void 0 !== e[n] && (t[n] = e[n]);
                return t
            }
            for (var i = [], r = 0; r < this.vertices.length; r++) {
                var o = this.vertices[r];
                i.push(o.x, o.y, o.z)
            }
            var a = []
              , s = []
              , c = {}
              , l = []
              , u = {}
              , d = []
              , p = {};
            for (r = 0; r < this.faces.length; r++) {
                var h = this.faces[r]
                  , f = void 0 !== this.faceVertexUvs[0][r]
                  , m = h.normal.length() > 0
                  , g = h.vertexNormals.length > 0
                  , v = 1 !== h.color.r || 1 !== h.color.g || 1 !== h.color.b
                  , y = h.vertexColors.length > 0
                  , b = 0;
                if (b = M(b, 0, 0),
                b = M(b, 1, !0),
                b = M(b, 2, !1),
                b = M(b, 3, f),
                b = M(b, 4, m),
                b = M(b, 5, g),
                b = M(b, 6, v),
                b = M(b, 7, y),
                a.push(b),
                a.push(h.a, h.b, h.c),
                a.push(h.materialIndex),
                f) {
                    var w = this.faceVertexUvs[0][r];
                    a.push(A(w[0]), A(w[1]), A(w[2]))
                }
                if (m && a.push(E(h.normal)),
                g) {
                    var S = h.vertexNormals;
                    a.push(E(S[0]), E(S[1]), E(S[2]))
                }
                if (v && a.push(C(h.color)),
                y) {
                    var x = h.vertexColors;
                    a.push(C(x[0]), C(x[1]), C(x[2]))
                }
            }
            function M(t, e, n) {
                return n ? t | 1 << e : t & ~(1 << e)
            }
            function E(t) {
                var e = t.x.toString() + t.y.toString() + t.z.toString();
                return void 0 !== c[e] || (c[e] = s.length / 3,
                s.push(t.x, t.y, t.z)),
                c[e]
            }
            function C(t) {
                var e = t.r.toString() + t.g.toString() + t.b.toString();
                return void 0 !== u[e] || (u[e] = l.length,
                l.push(t.getHex())),
                u[e]
            }
            function A(t) {
                var e = t.x.toString() + t.y.toString();
                return void 0 !== p[e] || (p[e] = d.length / 2,
                d.push(t.x, t.y)),
                p[e]
            }
            return t.data = {},
            t.data.vertices = i,
            t.data.normals = s,
            l.length > 0 && (t.data.colors = l),
            d.length > 0 && (t.data.uvs = [d]),
            t.data.faces = a,
            t
        },
        clone: function() {
            return (new Eo).copy(this)
        },
        copy: function(t) {
            var e, n, i, r, o, a;
            this.vertices = [],
            this.colors = [],
            this.faces = [],
            this.faceVertexUvs = [[]],
            this.morphTargets = [],
            this.morphNormals = [],
            this.skinWeights = [],
            this.skinIndices = [],
            this.lineDistances = [],
            this.boundingBox = null,
            this.boundingSphere = null,
            this.name = t.name;
            var s = t.vertices;
            for (e = 0,
            n = s.length; e < n; e++)
                this.vertices.push(s[e].clone());
            var c = t.colors;
            for (e = 0,
            n = c.length; e < n; e++)
                this.colors.push(c[e].clone());
            var l = t.faces;
            for (e = 0,
            n = l.length; e < n; e++)
                this.faces.push(l[e].clone());
            for (e = 0,
            n = t.faceVertexUvs.length; e < n; e++) {
                var u = t.faceVertexUvs[e];
                for (void 0 === this.faceVertexUvs[e] && (this.faceVertexUvs[e] = []),
                i = 0,
                r = u.length; i < r; i++) {
                    var d = u[i]
                      , p = [];
                    for (o = 0,
                    a = d.length; o < a; o++) {
                        var h = d[o];
                        p.push(h.clone())
                    }
                    this.faceVertexUvs[e].push(p)
                }
            }
            var f = t.morphTargets;
            for (e = 0,
            n = f.length; e < n; e++) {
                var m = {};
                if (m.name = f[e].name,
                void 0 !== f[e].vertices)
                    for (m.vertices = [],
                    i = 0,
                    r = f[e].vertices.length; i < r; i++)
                        m.vertices.push(f[e].vertices[i].clone());
                if (void 0 !== f[e].normals)
                    for (m.normals = [],
                    i = 0,
                    r = f[e].normals.length; i < r; i++)
                        m.normals.push(f[e].normals[i].clone());
                this.morphTargets.push(m)
            }
            var g = t.morphNormals;
            for (e = 0,
            n = g.length; e < n; e++) {
                var v = {};
                if (void 0 !== g[e].vertexNormals)
                    for (v.vertexNormals = [],
                    i = 0,
                    r = g[e].vertexNormals.length; i < r; i++) {
                        var y = g[e].vertexNormals[i]
                          , b = {};
                        b.a = y.a.clone(),
                        b.b = y.b.clone(),
                        b.c = y.c.clone(),
                        v.vertexNormals.push(b)
                    }
                if (void 0 !== g[e].faceNormals)
                    for (v.faceNormals = [],
                    i = 0,
                    r = g[e].faceNormals.length; i < r; i++)
                        v.faceNormals.push(g[e].faceNormals[i].clone());
                this.morphNormals.push(v)
            }
            var w = t.skinWeights;
            for (e = 0,
            n = w.length; e < n; e++)
                this.skinWeights.push(w[e].clone());
            var S = t.skinIndices;
            for (e = 0,
            n = S.length; e < n; e++)
                this.skinIndices.push(S[e].clone());
            var x = t.lineDistances;
            for (e = 0,
            n = x.length; e < n; e++)
                this.lineDistances.push(x[e]);
            var M = t.boundingBox;
            null !== M && (this.boundingBox = M.clone());
            var E = t.boundingSphere;
            return null !== E && (this.boundingSphere = E.clone()),
            this.elementsNeedUpdate = t.elementsNeedUpdate,
            this.verticesNeedUpdate = t.verticesNeedUpdate,
            this.uvsNeedUpdate = t.uvsNeedUpdate,
            this.normalsNeedUpdate = t.normalsNeedUpdate,
            this.colorsNeedUpdate = t.colorsNeedUpdate,
            this.lineDistancesNeedUpdate = t.lineDistancesNeedUpdate,
            this.groupsNeedUpdate = t.groupsNeedUpdate,
            this
        },
        dispose: function() {
            this.dispatchEvent({
                type: "dispose"
            })
        }
    });
    var Co = function(t) {
        s(n, t);
        var e = l(n);
        function n(t, i, r, o, s, c) {
            var l;
            return a(this, n),
            (l = e.call(this)).type = "BoxGeometry",
            l.parameters = {
                width: t,
                height: i,
                depth: r,
                widthSegments: o,
                heightSegments: s,
                depthSegments: c
            },
            l.fromBufferGeometry(new Ao(t,i,r,o,s,c)),
            l.mergeVertices(),
            l
        }
        return n
    }(Eo)
      , Ao = function(t) {
        s(n, t);
        var e = l(n);
        function n(t, i, r, o, s, c) {
            var l;
            a(this, n),
            (l = e.call(this)).type = "BoxBufferGeometry",
            l.parameters = {
                width: t,
                height: i,
                depth: r,
                widthSegments: o,
                heightSegments: s,
                depthSegments: c
            };
            var u = d(l);
            t = t || 1,
            i = i || 1,
            r = r || 1,
            o = Math.floor(o) || 1,
            s = Math.floor(s) || 1,
            c = Math.floor(c) || 1;
            var p = []
              , h = []
              , f = []
              , m = []
              , g = 0
              , v = 0;
            function y(t, e, n, i, r, o, a, s, c, l, d) {
                var y, b, w = o / c, S = a / l, x = o / 2, M = a / 2, E = s / 2, C = c + 1, A = l + 1, T = 0, O = 0, _ = new si;
                for (b = 0; b < A; b++) {
                    var P = b * S - M;
                    for (y = 0; y < C; y++) {
                        var I = y * w - x;
                        _[t] = I * i,
                        _[e] = P * r,
                        _[n] = E,
                        h.push(_.x, _.y, _.z),
                        _[t] = 0,
                        _[e] = 0,
                        _[n] = s > 0 ? 1 : -1,
                        f.push(_.x, _.y, _.z),
                        m.push(y / c),
                        m.push(1 - b / l),
                        T += 1
                    }
                }
                for (b = 0; b < l; b++)
                    for (y = 0; y < c; y++) {
                        var k = g + y + C * b
                          , D = g + y + C * (b + 1)
                          , R = g + (y + 1) + C * (b + 1)
                          , L = g + (y + 1) + C * b;
                        p.push(k, D, L),
                        p.push(D, R, L),
                        O += 6
                    }
                u.addGroup(v, O, d),
                v += O,
                g += T
            }
            return y("z", "y", "x", -1, -1, r, i, t, c, s, 0),
            y("z", "y", "x", 1, -1, r, i, -t, c, s, 1),
            y("x", "z", "y", 1, 1, t, r, i, o, c, 2),
            y("x", "z", "y", 1, -1, t, r, -i, o, c, 3),
            y("x", "y", "z", 1, -1, t, i, r, o, s, 4),
            y("x", "y", "z", -1, -1, t, i, -r, o, s, 5),
            l.setIndex(p),
            l.setAttribute("position", new Br(h,3)),
            l.setAttribute("normal", new Br(f,3)),
            l.setAttribute("uv", new Br(m,2)),
            l
        }
        return n
    }(Qr);
    function To(t) {
        var e = {};
        for (var n in t)
            for (var i in e[n] = {},
            t[n]) {
                var r = t[n][i];
                r && (r.isColor || r.isMatrix3 || r.isMatrix4 || r.isVector2 || r.isVector3 || r.isVector4 || r.isTexture) ? e[n][i] = r.clone() : Array.isArray(r) ? e[n][i] = r.slice() : e[n][i] = r
            }
        return e
    }
    function Oo(t) {
        for (var e = {}, n = 0; n < t.length; n++) {
            var i = To(t[n]);
            for (var r in i)
                e[r] = i[r]
        }
        return e
    }
    var _o = {
        clone: To,
        merge: Oo
    };
    function Po(t) {
        Pr.call(this),
        this.type = "ShaderMaterial",
        this.defines = {},
        this.uniforms = {},
        this.vertexShader = "void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",
        this.fragmentShader = "void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}",
        this.linewidth = 1,
        this.wireframe = !1,
        this.wireframeLinewidth = 1,
        this.fog = !1,
        this.lights = !1,
        this.clipping = !1,
        this.skinning = !1,
        this.morphTargets = !1,
        this.morphNormals = !1,
        this.extensions = {
            derivatives: !1,
            fragDepth: !1,
            drawBuffers: !1,
            shaderTextureLOD: !1
        },
        this.defaultAttributeValues = {
            color: [1, 1, 1],
            uv: [0, 0],
            uv2: [0, 0]
        },
        this.index0AttributeName = void 0,
        this.uniformsNeedUpdate = !1,
        void 0 !== t && (void 0 !== t.attributes && console.error("THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead."),
        this.setValues(t))
    }
    function Io() {
        Di.call(this),
        this.type = "Camera",
        this.matrixWorldInverse = new mi,
        this.projectionMatrix = new mi,
        this.projectionMatrixInverse = new mi
    }
    function ko(t, e, n, i) {
        Io.call(this),
        this.type = "PerspectiveCamera",
        this.fov = void 0 !== t ? t : 50,
        this.zoom = 1,
        this.near = void 0 !== n ? n : .1,
        this.far = void 0 !== i ? i : 2e3,
        this.focus = 10,
        this.aspect = void 0 !== e ? e : 1,
        this.view = null,
        this.filmGauge = 35,
        this.filmOffset = 0,
        this.updateProjectionMatrix()
    }
    Po.prototype = Object.create(Pr.prototype),
    Po.prototype.constructor = Po,
    Po.prototype.isShaderMaterial = !0,
    Po.prototype.copy = function(t) {
        return Pr.prototype.copy.call(this, t),
        this.fragmentShader = t.fragmentShader,
        this.vertexShader = t.vertexShader,
        this.uniforms = To(t.uniforms),
        this.defines = Object.assign({}, t.defines),
        this.wireframe = t.wireframe,
        this.wireframeLinewidth = t.wireframeLinewidth,
        this.lights = t.lights,
        this.clipping = t.clipping,
        this.skinning = t.skinning,
        this.morphTargets = t.morphTargets,
        this.morphNormals = t.morphNormals,
        this.extensions = t.extensions,
        this
    }
    ,
    Po.prototype.toJSON = function(t) {
        var e = Pr.prototype.toJSON.call(this, t);
        for (var n in e.uniforms = {},
        this.uniforms) {
            var i = this.uniforms[n].value;
            i && i.isTexture ? e.uniforms[n] = {
                type: "t",
                value: i.toJSON(t).uuid
            } : i && i.isColor ? e.uniforms[n] = {
                type: "c",
                value: i.getHex()
            } : i && i.isVector2 ? e.uniforms[n] = {
                type: "v2",
                value: i.toArray()
            } : i && i.isVector3 ? e.uniforms[n] = {
                type: "v3",
                value: i.toArray()
            } : i && i.isVector4 ? e.uniforms[n] = {
                type: "v4",
                value: i.toArray()
            } : i && i.isMatrix3 ? e.uniforms[n] = {
                type: "m3",
                value: i.toArray()
            } : i && i.isMatrix4 ? e.uniforms[n] = {
                type: "m4",
                value: i.toArray()
            } : e.uniforms[n] = {
                value: i
            }
        }
        Object.keys(this.defines).length > 0 && (e.defines = this.defines),
        e.vertexShader = this.vertexShader,
        e.fragmentShader = this.fragmentShader;
        var r = {};
        for (var o in this.extensions)
            !0 === this.extensions[o] && (r[o] = !0);
        return Object.keys(r).length > 0 && (e.extensions = r),
        e
    }
    ,
    Io.prototype = Object.assign(Object.create(Di.prototype), {
        constructor: Io,
        isCamera: !0,
        copy: function(t, e) {
            return Di.prototype.copy.call(this, t, e),
            this.matrixWorldInverse.copy(t.matrixWorldInverse),
            this.projectionMatrix.copy(t.projectionMatrix),
            this.projectionMatrixInverse.copy(t.projectionMatrixInverse),
            this
        },
        getWorldDirection: function(t) {
            void 0 === t && (console.warn("THREE.Camera: .getWorldDirection() target is now required"),
            t = new si),
            this.updateMatrixWorld(!0);
            var e = this.matrixWorld.elements;
            return t.set(-e[8], -e[9], -e[10]).normalize()
        },
        updateMatrixWorld: function(t) {
            Di.prototype.updateMatrixWorld.call(this, t),
            this.matrixWorldInverse.getInverse(this.matrixWorld)
        },
        updateWorldMatrix: function(t, e) {
            Di.prototype.updateWorldMatrix.call(this, t, e),
            this.matrixWorldInverse.getInverse(this.matrixWorld)
        },
        clone: function() {
            return (new this.constructor).copy(this)
        }
    }),
    ko.prototype = Object.assign(Object.create(Io.prototype), {
        constructor: ko,
        isPerspectiveCamera: !0,
        copy: function(t, e) {
            return Io.prototype.copy.call(this, t, e),
            this.fov = t.fov,
            this.zoom = t.zoom,
            this.near = t.near,
            this.far = t.far,
            this.focus = t.focus,
            this.aspect = t.aspect,
            this.view = null === t.view ? null : Object.assign({}, t.view),
            this.filmGauge = t.filmGauge,
            this.filmOffset = t.filmOffset,
            this
        },
        setFocalLength: function(t) {
            var e = .5 * this.getFilmHeight() / t;
            this.fov = 2 * Kn.RAD2DEG * Math.atan(e),
            this.updateProjectionMatrix()
        },
        getFocalLength: function() {
            var t = Math.tan(.5 * Kn.DEG2RAD * this.fov);
            return .5 * this.getFilmHeight() / t
        },
        getEffectiveFOV: function() {
            return 2 * Kn.RAD2DEG * Math.atan(Math.tan(.5 * Kn.DEG2RAD * this.fov) / this.zoom)
        },
        getFilmWidth: function() {
            return this.filmGauge * Math.min(this.aspect, 1)
        },
        getFilmHeight: function() {
            return this.filmGauge / Math.max(this.aspect, 1)
        },
        setViewOffset: function(t, e, n, i, r, o) {
            this.aspect = t / e,
            null === this.view && (this.view = {
                enabled: !0,
                fullWidth: 1,
                fullHeight: 1,
                offsetX: 0,
                offsetY: 0,
                width: 1,
                height: 1
            }),
            this.view.enabled = !0,
            this.view.fullWidth = t,
            this.view.fullHeight = e,
            this.view.offsetX = n,
            this.view.offsetY = i,
            this.view.width = r,
            this.view.height = o,
            this.updateProjectionMatrix()
        },
        clearViewOffset: function() {
            null !== this.view && (this.view.enabled = !1),
            this.updateProjectionMatrix()
        },
        updateProjectionMatrix: function() {
            var t = this.near
              , e = t * Math.tan(.5 * Kn.DEG2RAD * this.fov) / this.zoom
              , n = 2 * e
              , i = this.aspect * n
              , r = -.5 * i
              , o = this.view;
            if (null !== this.view && this.view.enabled) {
                var a = o.fullWidth
                  , s = o.fullHeight;
                r += o.offsetX * i / a,
                e -= o.offsetY * n / s,
                i *= o.width / a,
                n *= o.height / s
            }
            var c = this.filmOffset;
            0 !== c && (r += t * c / this.getFilmWidth()),
            this.projectionMatrix.makePerspective(r, r + i, e, e - n, t, this.far),
            this.projectionMatrixInverse.getInverse(this.projectionMatrix)
        },
        toJSON: function(t) {
            var e = Di.prototype.toJSON.call(this, t);
            return e.object.fov = this.fov,
            e.object.zoom = this.zoom,
            e.object.near = this.near,
            e.object.far = this.far,
            e.object.focus = this.focus,
            e.object.aspect = this.aspect,
            null !== this.view && (e.object.view = Object.assign({}, this.view)),
            e.object.filmGauge = this.filmGauge,
            e.object.filmOffset = this.filmOffset,
            e
        }
    });
    function Do(t, e, n, i) {
        Di.call(this),
        this.type = "CubeCamera";
        var r = new ko(90,1,t,e);
        r.up.set(0, -1, 0),
        r.lookAt(new si(1,0,0)),
        this.add(r);
        var o = new ko(90,1,t,e);
        o.up.set(0, -1, 0),
        o.lookAt(new si(-1,0,0)),
        this.add(o);
        var a = new ko(90,1,t,e);
        a.up.set(0, 0, 1),
        a.lookAt(new si(0,1,0)),
        this.add(a);
        var s = new ko(90,1,t,e);
        s.up.set(0, 0, -1),
        s.lookAt(new si(0,-1,0)),
        this.add(s);
        var c = new ko(90,1,t,e);
        c.up.set(0, -1, 0),
        c.lookAt(new si(0,0,1)),
        this.add(c);
        var l = new ko(90,1,t,e);
        l.up.set(0, -1, 0),
        l.lookAt(new si(0,0,-1)),
        this.add(l),
        i = i || {
            format: Zt,
            magFilter: kt,
            minFilter: kt
        },
        this.renderTarget = new Ro(n,i),
        this.renderTarget.texture.name = "CubeCamera",
        this.update = function(t, e) {
            null === this.parent && this.updateMatrixWorld();
            var n = t.getRenderTarget()
              , i = this.renderTarget
              , u = i.texture.generateMipmaps;
            i.texture.generateMipmaps = !1,
            t.setRenderTarget(i, 0),
            t.render(e, r),
            t.setRenderTarget(i, 1),
            t.render(e, o),
            t.setRenderTarget(i, 2),
            t.render(e, a),
            t.setRenderTarget(i, 3),
            t.render(e, s),
            t.setRenderTarget(i, 4),
            t.render(e, c),
            i.texture.generateMipmaps = u,
            t.setRenderTarget(i, 5),
            t.render(e, l),
            t.setRenderTarget(n)
        }
        ,
        this.clear = function(t, e, n, i) {
            for (var r = t.getRenderTarget(), o = this.renderTarget, a = 0; a < 6; a++)
                t.setRenderTarget(o, a),
                t.clear(e, n, i);
            t.setRenderTarget(r)
        }
    }
    function Ro(t, e, n) {
        Number.isInteger(e) && (console.warn("THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )"),
        e = n),
        ni.call(this, t, t, e)
    }
    function Lo(t, e, n, i, r, o, a, s, c, l, u, d) {
        ti.call(this, null, o, a, s, c, l, i, r, u, d),
        this.image = {
            data: t || null,
            width: e || 1,
            height: n || 1
        },
        this.magFilter = void 0 !== c ? c : Tt,
        this.minFilter = void 0 !== l ? l : Tt,
        this.generateMipmaps = !1,
        this.flipY = !1,
        this.unpackAlignment = 1,
        this.needsUpdate = !0
    }
    Do.prototype = Object.create(Di.prototype),
    Do.prototype.constructor = Do,
    Ro.prototype = Object.create(ni.prototype),
    Ro.prototype.constructor = Ro,
    Ro.prototype.isWebGLCubeRenderTarget = !0,
    Ro.prototype.fromEquirectangularTexture = function(t, e) {
        this.texture.type = e.type,
        this.texture.format = e.format,
        this.texture.encoding = e.encoding;
        var n = new Ri
          , i = {
            uniforms: {
                tEquirect: {
                    value: null
                }
            },
            vertexShader: ["varying vec3 vWorldDirection;", "vec3 transformDirection( in vec3 dir, in mat4 matrix ) {", "\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );", "}", "void main() {", "\tvWorldDirection = transformDirection( position, modelMatrix );", "\t#include <begin_vertex>", "\t#include <project_vertex>", "}"].join("\n"),
            fragmentShader: ["uniform sampler2D tEquirect;", "varying vec3 vWorldDirection;", "#define RECIPROCAL_PI 0.31830988618", "#define RECIPROCAL_PI2 0.15915494", "void main() {", "\tvec3 direction = normalize( vWorldDirection );", "\tvec2 sampleUV;", "\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;", "\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;", "\tgl_FragColor = texture2D( tEquirect, sampleUV );", "}"].join("\n")
        }
          , r = new Po({
            type: "CubemapFromEquirect",
            uniforms: To(i.uniforms),
            vertexShader: i.vertexShader,
            fragmentShader: i.fragmentShader,
            side: T,
            blending: I
        });
        r.uniforms.tEquirect.value = e;
        var o = new vo(new Ao(5,5,5),r);
        n.add(o);
        var a = new Do(1,10,1);
        return a.renderTarget = this,
        a.renderTarget.texture.name = "CubeCameraTexture",
        a.update(t, n),
        o.geometry.dispose(),
        o.material.dispose(),
        this
    }
    ,
    Lo.prototype = Object.create(ti.prototype),
    Lo.prototype.constructor = Lo,
    Lo.prototype.isDataTexture = !0;
    var No = new Ji
      , jo = new si;
    function Vo(t, e, n, i, r, o) {
        this.planes = [void 0 !== t ? t : new lr, void 0 !== e ? e : new lr, void 0 !== n ? n : new lr, void 0 !== i ? i : new lr, void 0 !== r ? r : new lr, void 0 !== o ? o : new lr]
    }
    Object.assign(Vo.prototype, {
        set: function(t, e, n, i, r, o) {
            var a = this.planes;
            return a[0].copy(t),
            a[1].copy(e),
            a[2].copy(n),
            a[3].copy(i),
            a[4].copy(r),
            a[5].copy(o),
            this
        },
        clone: function() {
            return (new this.constructor).copy(this)
        },
        copy: function(t) {
            for (var e = this.planes, n = 0; n < 6; n++)
                e[n].copy(t.planes[n]);
            return this
        },
        setFromProjectionMatrix: function(t) {
            var e = this.planes
              , n = t.elements
              , i = n[0]
              , r = n[1]
              , o = n[2]
              , a = n[3]
              , s = n[4]
              , c = n[5]
              , l = n[6]
              , u = n[7]
              , d = n[8]
              , p = n[9]
              , h = n[10]
              , f = n[11]
              , m = n[12]
              , g = n[13]
              , v = n[14]
              , y = n[15];
            return e[0].setComponents(a - i, u - s, f - d, y - m).normalize(),
            e[1].setComponents(a + i, u + s, f + d, y + m).normalize(),
            e[2].setComponents(a + r, u + c, f + p, y + g).normalize(),
            e[3].setComponents(a - r, u - c, f - p, y - g).normalize(),
            e[4].setComponents(a - o, u - l, f - h, y - v).normalize(),
            e[5].setComponents(a + o, u + l, f + h, y + v).normalize(),
            this
        },
        intersectsObject: function(t) {
            var e = t.geometry;
            return null === e.boundingSphere && e.computeBoundingSphere(),
            No.copy(e.boundingSphere).applyMatrix4(t.matrixWorld),
            this.intersectsSphere(No)
        },
        intersectsSprite: function(t) {
            return No.center.set(0, 0, 0),
            No.radius = .7071067811865476,
            No.applyMatrix4(t.matrixWorld),
            this.intersectsSphere(No)
        },
        intersectsSphere: function(t) {
            for (var e = this.planes, n = t.center, i = -t.radius, r = 0; r < 6; r++) {
                if (e[r].distanceToPoint(n) < i)
                    return !1
            }
            return !0
        },
        intersectsBox: function(t) {
            for (var e = this.planes, n = 0; n < 6; n++) {
                var i = e[n];
                if (jo.x = i.normal.x > 0 ? t.max.x : t.min.x,
                jo.y = i.normal.y > 0 ? t.max.y : t.min.y,
                jo.z = i.normal.z > 0 ? t.max.z : t.min.z,
                i.distanceToPoint(jo) < 0)
                    return !1
            }
            return !0
        },
        containsPoint: function(t) {
            for (var e = this.planes, n = 0; n < 6; n++)
                if (e[n].distanceToPoint(t) < 0)
                    return !1;
            return !0
        }
    });
    var Fo = {
        common: {
            diffuse: {
                value: new Er(15658734)
            },
            opacity: {
                value: 1
            },
            map: {
                value: null
            },
            uvTransform: {
                value: new Jn
            },
            uv2Transform: {
                value: new Jn
            },
            alphaMap: {
                value: null
            }
        },
        specularmap: {
            specularMap: {
                value: null
            }
        },
        envmap: {
            envMap: {
                value: null
            },
            flipEnvMap: {
                value: -1
            },
            reflectivity: {
                value: 1
            },
            refractionRatio: {
                value: .98
            },
            maxMipLevel: {
                value: 0
            }
        },
        aomap: {
            aoMap: {
                value: null
            },
            aoMapIntensity: {
                value: 1
            }
        },
        lightmap: {
            lightMap: {
                value: null
            },
            lightMapIntensity: {
                value: 1
            }
        },
        emissivemap: {
            emissiveMap: {
                value: null
            }
        },
        bumpmap: {
            bumpMap: {
                value: null
            },
            bumpScale: {
                value: 1
            }
        },
        normalmap: {
            normalMap: {
                value: null
            },
            normalScale: {
                value: new Zn(1,1)
            }
        },
        displacementmap: {
            displacementMap: {
                value: null
            },
            displacementScale: {
                value: 1
            },
            displacementBias: {
                value: 0
            }
        },
        roughnessmap: {
            roughnessMap: {
                value: null
            }
        },
        metalnessmap: {
            metalnessMap: {
                value: null
            }
        },
        gradientmap: {
            gradientMap: {
                value: null
            }
        },
        fog: {
            fogDensity: {
                value: 25e-5
            },
            fogNear: {
                value: 1
            },
            fogFar: {
                value: 2e3
            },
            fogColor: {
                value: new Er(16777215)
            }
        },
        lights: {
            ambientLightColor: {
                value: []
            },
            lightProbe: {
                value: []
            },
            directionalLights: {
                value: [],
                properties: {
                    direction: {},
                    color: {}
                }
            },
            directionalLightShadows: {
                value: [],
                properties: {
                    shadowBias: {},
                    shadowRadius: {},
                    shadowMapSize: {}
                }
            },
            directionalShadowMap: {
                value: []
            },
            directionalShadowMatrix: {
                value: []
            },
            spotLights: {
                value: [],
                properties: {
                    color: {},
                    position: {},
                    direction: {},
                    distance: {},
                    coneCos: {},
                    penumbraCos: {},
                    decay: {}
                }
            },
            spotLightShadows: {
                value: [],
                properties: {
                    shadowBias: {},
                    shadowRadius: {},
                    shadowMapSize: {}
                }
            },
            spotShadowMap: {
                value: []
            },
            spotShadowMatrix: {
                value: []
            },
            pointLights: {
                value: [],
                properties: {
                    color: {},
                    position: {},
                    decay: {},
                    distance: {}
                }
            },
            pointLightShadows: {
                value: [],
                properties: {
                    shadowBias: {},
                    shadowRadius: {},
                    shadowMapSize: {},
                    shadowCameraNear: {},
                    shadowCameraFar: {}
                }
            },
            pointShadowMap: {
                value: []
            },
            pointShadowMatrix: {
                value: []
            },
            hemisphereLights: {
                value: [],
                properties: {
                    direction: {},
                    skyColor: {},
                    groundColor: {}
                }
            },
            rectAreaLights: {
                value: [],
                properties: {
                    color: {},
                    position: {},
                    width: {},
                    height: {}
                }
            }
        },
        points: {
            diffuse: {
                value: new Er(15658734)
            },
            opacity: {
                value: 1
            },
            size: {
                value: 1
            },
            scale: {
                value: 1
            },
            map: {
                value: null
            },
            alphaMap: {
                value: null
            },
            uvTransform: {
                value: new Jn
            }
        },
        sprite: {
            diffuse: {
                value: new Er(15658734)
            },
            opacity: {
                value: 1
            },
            center: {
                value: new Zn(.5,.5)
            },
            rotation: {
                value: 0
            },
            map: {
                value: null
            },
            alphaMap: {
                value: null
            },
            uvTransform: {
                value: new Jn
            }
        }
    };
    function Uo() {
        var t = null
          , e = !1
          , n = null;
        function i(r, o) {
            !1 !== e && (n(r, o),
            t.requestAnimationFrame(i))
        }
        return {
            start: function() {
                !0 !== e && null !== n && (t.requestAnimationFrame(i),
                e = !0)
            },
            stop: function() {
                e = !1
            },
            setAnimationLoop: function(t) {
                n = t
            },
            setContext: function(e) {
                t = e
            }
        }
    }
    function Bo(t, e) {
        var n = e.isWebGL2
          , i = new WeakMap;
        return {
            get: function(t) {
                return t.isInterleavedBufferAttribute && (t = t.data),
                i.get(t)
            },
            remove: function(e) {
                e.isInterleavedBufferAttribute && (e = e.data);
                var n = i.get(e);
                n && (t.deleteBuffer(n.buffer),
                i.delete(e))
            },
            update: function(e, r) {
                e.isInterleavedBufferAttribute && (e = e.data);
                var o = i.get(e);
                void 0 === o ? i.set(e, function(e, n) {
                    var i = e.array
                      , r = e.usage
                      , o = t.createBuffer();
                    t.bindBuffer(n, o),
                    t.bufferData(n, i, r),
                    e.onUploadCallback();
                    var a = 5126;
                    return i instanceof Float32Array ? a = 5126 : i instanceof Float64Array ? console.warn("THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.") : i instanceof Uint16Array ? a = 5123 : i instanceof Int16Array ? a = 5122 : i instanceof Uint32Array ? a = 5125 : i instanceof Int32Array ? a = 5124 : i instanceof Int8Array ? a = 5120 : i instanceof Uint8Array && (a = 5121),
                    {
                        buffer: o,
                        type: a,
                        bytesPerElement: i.BYTES_PER_ELEMENT,
                        version: e.version
                    }
                }(e, r)) : o.version < e.version && (!function(e, i, r) {
                    var o = i.array
                      , a = i.updateRange;
                    t.bindBuffer(r, e),
                    -1 === a.count ? t.bufferSubData(r, 0, o) : (n ? t.bufferSubData(r, a.offset * o.BYTES_PER_ELEMENT, o, a.offset, a.count) : t.bufferSubData(r, a.offset * o.BYTES_PER_ELEMENT, o.subarray(a.offset, a.offset + a.count)),
                    a.count = -1)
                }(o.buffer, e, r),
                o.version = e.version)
            }
        }
    }
    function zo(t, e, n, i) {
        Eo.call(this),
        this.type = "PlaneGeometry",
        this.parameters = {
            width: t,
            height: e,
            widthSegments: n,
            heightSegments: i
        },
        this.fromBufferGeometry(new Go(t,e,n,i)),
        this.mergeVertices()
    }
    function Go(t, e, n, i) {
        Qr.call(this),
        this.type = "PlaneBufferGeometry",
        this.parameters = {
            width: t,
            height: e,
            widthSegments: n,
            heightSegments: i
        };
        var r, o, a = (t = t || 1) / 2, s = (e = e || 1) / 2, c = Math.floor(n) || 1, l = Math.floor(i) || 1, u = c + 1, d = l + 1, p = t / c, h = e / l, f = [], m = [], g = [], v = [];
        for (o = 0; o < d; o++) {
            var y = o * h - s;
            for (r = 0; r < u; r++) {
                var b = r * p - a;
                m.push(b, -y, 0),
                g.push(0, 0, 1),
                v.push(r / c),
                v.push(1 - o / l)
            }
        }
        for (o = 0; o < l; o++)
            for (r = 0; r < c; r++) {
                var w = r + u * o
                  , S = r + u * (o + 1)
                  , x = r + 1 + u * (o + 1)
                  , M = r + 1 + u * o;
                f.push(w, S, M),
                f.push(S, x, M)
            }
        this.setIndex(f),
        this.setAttribute("position", new Br(m,3)),
        this.setAttribute("normal", new Br(g,3)),
        this.setAttribute("uv", new Br(v,2))
    }
    zo.prototype = Object.create(Eo.prototype),
    zo.prototype.constructor = zo,
    Go.prototype = Object.create(Qr.prototype),
    Go.prototype.constructor = Go;
    var Ho = {
        alphamap_fragment: "#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif",
        alphamap_pars_fragment: "#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",
        alphatest_fragment: "#ifdef ALPHATEST\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n#endif",
        aomap_fragment: "#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_ENVMAP ) && defined( STANDARD )\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\n\t#endif\n#endif",
        aomap_pars_fragment: "#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif",
        begin_vertex: "vec3 transformed = vec3( position );",
        beginnormal_vertex: "vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n\tvec3 objectTangent = vec3( tangent.xyz );\n#endif",
        bsdfs: "vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\n}\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\tif( cutoffDistance > 0.0 ) {\n\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t}\n\treturn distanceFalloff;\n#else\n\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t}\n\treturn 1.0;\n#endif\n}\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\n}\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\n\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\n\treturn Fr * fresnel + F0;\n}\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\treturn 1.0 / ( gl * gv );\n}\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + viewDir );\n\tfloat dotNL = saturate( dot( normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( G * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE  = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS  = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nvec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\treturn specularColor * brdf.x + brdf.y;\n}\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\tvec3 FssEss = F * brdf.x + brdf.y;\n\tfloat Ess = brdf.x + brdf.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\n}\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie(float roughness, float NoH) {\n\tfloat invAlpha  = 1.0 / roughness;\n\tfloat cos2h = NoH * NoH;\n\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\treturn (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI);\n}\nfloat V_Neubelt(float NoV, float NoL) {\n\treturn saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV)));\n}\nvec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\n\tvec3 N = geometry.normal;\n\tvec3 V = geometry.viewDir;\n\tvec3 H = normalize( V + L );\n\tfloat dotNH = saturate( dot( N, H ) );\n\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\n}\n#endif",
        bumpmap_pars_fragment: "#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\t\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif",
        clipping_planes_fragment: "#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#pragma unroll_loop_end\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\tif ( clipped ) discard;\n\t#endif\n#endif",
        clipping_planes_pars_fragment: "#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",
        clipping_planes_pars_vertex: "#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif",
        clipping_planes_vertex: "#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif",
        color_fragment: "#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif",
        color_pars_fragment: "#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",
        color_pars_vertex: "#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",
        color_vertex: "#ifdef USE_COLOR\n\tvColor.xyz = color.xyz;\n#endif",
        common: "#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI_HALF 1.5707963267949\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n#define LOG2 1.442695\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement(a) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract(sin(sn) * c);\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); }\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\n\treturn - distance * planeNormal + point;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n  return m[ 2 ][ 3 ] == - 1.0;\n}",
        cube_uv_reflection_fragment: "#ifdef ENVMAP_TYPE_CUBE_UV\n#define cubeUV_maxMipLevel 8.0\n#define cubeUV_minMipLevel 4.0\n#define cubeUV_maxTileSize 256.0\n#define cubeUV_minTileSize 16.0\nfloat getFace(vec3 direction) {\n    vec3 absDirection = abs(direction);\n    float face = -1.0;\n    if (absDirection.x > absDirection.z) {\n      if (absDirection.x > absDirection.y)\n        face = direction.x > 0.0 ? 0.0 : 3.0;\n      else\n        face = direction.y > 0.0 ? 1.0 : 4.0;\n    } else {\n      if (absDirection.z > absDirection.y)\n        face = direction.z > 0.0 ? 2.0 : 5.0;\n      else\n        face = direction.y > 0.0 ? 1.0 : 4.0;\n    }\n    return face;\n}\nvec2 getUV(vec3 direction, float face) {\n    vec2 uv;\n    if (face == 0.0) {\n      uv = vec2(-direction.z, direction.y) / abs(direction.x);\n    } else if (face == 1.0) {\n      uv = vec2(direction.x, -direction.z) / abs(direction.y);\n    } else if (face == 2.0) {\n      uv = direction.xy / abs(direction.z);\n    } else if (face == 3.0) {\n      uv = vec2(direction.z, direction.y) / abs(direction.x);\n    } else if (face == 4.0) {\n      uv = direction.xz / abs(direction.y);\n    } else {\n      uv = vec2(-direction.x, direction.y) / abs(direction.z);\n    }\n    return 0.5 * (uv + 1.0);\n}\nvec3 bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {\n  float face = getFace(direction);\n  float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);\n  mipInt = max(mipInt, cubeUV_minMipLevel);\n  float faceSize = exp2(mipInt);\n  float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);\n  vec2 uv = getUV(direction, face) * (faceSize - 1.0);\n  vec2 f = fract(uv);\n  uv += 0.5 - f;\n  if (face > 2.0) {\n    uv.y += faceSize;\n    face -= 3.0;\n  }\n  uv.x += face * faceSize;\n  if(mipInt < cubeUV_maxMipLevel){\n    uv.y += 2.0 * cubeUV_maxTileSize;\n  }\n  uv.y += filterInt * 2.0 * cubeUV_minTileSize;\n  uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);\n  uv *= texelSize;\n  vec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n  uv.x += texelSize;\n  vec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n  uv.y += texelSize;\n  vec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n  uv.x -= texelSize;\n  vec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n  vec3 tm = mix(tl, tr, f.x);\n  vec3 bm = mix(bl, br, f.x);\n  return mix(tm, bm, f.y);\n}\n#define r0 1.0\n#define v0 0.339\n#define m0 -2.0\n#define r1 0.8\n#define v1 0.276\n#define m1 -1.0\n#define r4 0.4\n#define v4 0.046\n#define m4 2.0\n#define r5 0.305\n#define v5 0.016\n#define m5 3.0\n#define r6 0.21\n#define v6 0.0038\n#define m6 4.0\nfloat roughnessToMip(float roughness) {\n  float mip = 0.0;\n  if (roughness >= r1) {\n    mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;\n  } else if (roughness >= r4) {\n    mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;\n  } else if (roughness >= r5) {\n    mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;\n  } else if (roughness >= r6) {\n    mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;\n  } else {\n    mip = -2.0 * log2(1.16 * roughness);  }\n  return mip;\n}\nvec4 textureCubeUV(sampler2D envMap, vec3 sampleDir, float roughness) {\n  float mip = clamp(roughnessToMip(roughness), m0, cubeUV_maxMipLevel);\n  float mipF = fract(mip);\n  float mipInt = floor(mip);\n  vec3 color0 = bilinearCubeUV(envMap, sampleDir, mipInt);\n  if (mipF == 0.0) {\n    return vec4(color0, 1.0);\n  } else {\n    vec3 color1 = bilinearCubeUV(envMap, sampleDir, mipInt + 1.0);\n    return vec4(mix(color0, color1, mipF), 1.0);\n  }\n}\n#endif",
        defaultnormal_vertex: "vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\tmat3 m = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\n\ttransformedNormal = m * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif",
        displacementmap_pars_vertex: "#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif",
        displacementmap_vertex: "#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif",
        emissivemap_fragment: "#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",
        emissivemap_pars_fragment: "#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",
        encodings_fragment: "gl_FragColor = linearToOutputTexel( gl_FragColor );",
        encodings_pars_fragment: "\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value )  {\n\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\n\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract( Le );\n\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\n\treturn vec4( max( vRGB, 0.0 ), 1.0 );\n}",
        envmap_fragment: "#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\t\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t}  else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\tvec2 sampleUV;\n\t\treflectVec = normalize( reflectVec );\n\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\treflectVec = normalize( reflectVec );\n\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifndef ENVMAP_TYPE_CUBE_UV\n\t\tenvColor = envMapTexelToLinear( envColor );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif",
        envmap_common_pars_fragment: "#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif",
        envmap_pars_fragment: "#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif",
        envmap_pars_vertex: "#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif",
        envmap_physical_pars_fragment: "#if defined( USE_ENVMAP )\n\t#ifdef ENVMAP_MODE_REFRACTION\n\t\tuniform float refractionRatio;\n\t#endif\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t#else\n\t\t\tvec4 envMapColor = vec4( 0.0 );\n\t\t#endif\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t}\n\tfloat getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat sigma = PI * roughness * roughness / ( 1.0 + roughness );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + log2( sigma );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t  vec3 reflectVec = reflect( -viewDir, normal );\n\t\t  reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t#else\n\t\t  vec3 reflectVec = refract( -viewDir, normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\t\tvec2 sampleUV;\n\t\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif",
        envmap_vertex: "#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) { \n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif",
        fog_vertex: "#ifdef USE_FOG\n\tfogDepth = -mvPosition.z;\n#endif",
        fog_pars_vertex: "#ifdef USE_FOG\n\tvarying float fogDepth;\n#endif",
        fog_fragment: "#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",
        fog_pars_fragment: "#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif",
        gradientmap_pars_fragment: "#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn texture2D( gradientMap, coord ).rgb;\n\t#else\n\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t#endif\n}",
        lightmap_fragment: "#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\treflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n#endif",
        lightmap_pars_fragment: "#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",
        lights_lambert_vertex: "vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif",
        lights_pars_begin: "uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\n\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treturn irradiance;\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tdirectLight.color = directionalLight.color;\n\t\tdirectLight.direction = directionalLight.direction;\n\t\tdirectLight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tdirectLight.color = pointLight.color;\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight  ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\n\t\tif ( angleCos > spotLight.coneCos ) {\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\t\tdirectLight.color = spotLight.color;\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tdirectLight.visible = true;\n\t\t} else {\n\t\t\tdirectLight.color = vec3( 0.0 );\n\t\t\tdirectLight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tirradiance *= PI;\n\t\t#endif\n\t\treturn irradiance;\n\t}\n#endif",
        lights_toon_fragment: "ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",
        lights_toon_pars_fragment: "varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct ToonMaterial {\n\tvec3\tdiffuseColor;\n\tvec3\tspecularColor;\n\tfloat\tspecularShininess;\n\tfloat\tspecularStrength;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon\n#define Material_LightProbeLOD( material )\t(0)",
        lights_phong_fragment: "BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",
        lights_phong_pars_fragment: "varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct BlinnPhongMaterial {\n\tvec3\tdiffuseColor;\n\tvec3\tspecularColor;\n\tfloat\tspecularShininess;\n\tfloat\tspecularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)",
        lights_physical_fragment: "PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.specularRoughness = max( roughnessFactor, 0.0525 );material.specularRoughness += geometryRoughness;\nmaterial.specularRoughness = min( material.specularRoughness, 1.0 );\n#ifdef REFLECTIVITY\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#endif\n#ifdef CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheen;\n#endif",
        lights_physical_pars_fragment: "struct PhysicalMaterial {\n\tvec3\tdiffuseColor;\n\tfloat\tspecularRoughness;\n\tvec3\tspecularColor;\n#ifdef CLEARCOAT\n\tfloat clearcoat;\n\tfloat clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tvec3 sheenColor;\n#endif\n};\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\nfloat clearcoatDHRApprox( const in float roughness, const in float dotNL ) {\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.specularRoughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3(    0, 1,    0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = ccDotNL * directLight.color;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tccIrradiance *= PI;\n\t\t#endif\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t\treflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen(\n\t\t\tmaterial.specularRoughness,\n\t\t\tdirectLight.direction,\n\t\t\tgeometry,\n\t\t\tmaterial.sheenColor\n\t\t);\n\t#else\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness);\n\t#endif\n\treflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t\tfloat ccDotNL = ccDotNV;\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\tfloat clearcoatInv = 1.0 - clearcoatDHR;\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\n\treflectedLight.indirectSpecular += clearcoatInv * radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",
        lights_fragment_begin: "\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n#ifdef CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif",
        lights_fragment_maps: "#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\t\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel );\n\t#ifdef CLEARCOAT\n\t\tclearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel );\n\t#endif\n#endif",
        lights_fragment_end: "#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif",
        logdepthbuf_fragment: "#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",
        logdepthbuf_pars_fragment: "#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif",
        logdepthbuf_pars_vertex: "#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif",
        logdepthbuf_vertex: "#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif",
        map_fragment: "#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif",
        map_pars_fragment: "#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif",
        map_particle_fragment: "#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n#endif\n#ifdef USE_MAP\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",
        map_particle_pars_fragment: "#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tuniform mat3 uvTransform;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",
        metalnessmap_fragment: "float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif",
        metalnessmap_pars_fragment: "#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",
        morphnormal_vertex: "#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n#endif",
        morphtarget_pars_vertex: "#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifndef USE_MORPHNORMALS\n\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif",
        morphtarget_vertex: "#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t#endif\n#endif",
        normal_fragment_begin: "#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t#endif\n\t#endif\n#endif\nvec3 geometryNormal = normal;",
        normal_fragment_maps: "#ifdef OBJECTSPACE_NORMALMAP\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( TANGENTSPACE_NORMALMAP )\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\t#ifdef USE_TANGENT\n\t\tnormal = normalize( vTBN * mapN );\n\t#else\n\t\tnormal = perturbNormal2Arb( -vViewPosition, normal, mapN );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif",
        normalmap_pars_fragment: "#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN ) {\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\t\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\n\t\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\n\t\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\n\t\tvec3 N = normalize( surf_norm );\n\t\tmat3 tsn = mat3( S, T, N );\n\t\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\treturn normalize( tsn * mapN );\n\t}\n#endif",
        clearcoat_normal_fragment_begin: "#ifdef CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif",
        clearcoat_normal_fragment_maps: "#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\t#ifdef USE_TANGENT\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\n\t#else\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN );\n\t#endif\n#endif",
        clearcoat_pars_fragment: "#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif",
        packing: "vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256.,  256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ));\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w);\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}",
        premultiplied_alpha_fragment: "#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif",
        project_vertex: "vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",
        dithering_fragment: "#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",
        dithering_pars_fragment: "#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif",
        roughnessmap_fragment: "float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",
        roughnessmap_pars_fragment: "#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",
        shadowmap_pars_fragment: "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t\t  texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t  f.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \n\t\t\t\t\t\t  texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t  f.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif",
        shadowmap_pars_vertex: "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif",
        shadowmap_vertex: "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n#endif",
        shadowmask_pars_fragment: "float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}",
        skinbase_vertex: "#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",
        skinning_pars_vertex: "#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform highp sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif",
        skinning_vertex: "#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",
        skinnormal_vertex: "#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix  = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif",
        specularmap_fragment: "float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",
        specularmap_pars_fragment: "#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",
        tonemapping_fragment: "#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",
        tonemapping_pars_fragment: "#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nuniform float toneMappingWhitePoint;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\nvec3 Uncharted2ToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( ( color * ( 2.51 * color + 0.03 ) ) / ( color * ( 2.43 * color + 0.59 ) + 0.14 ) );\n}",
        uv_pars_fragment: "#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\n\tvarying vec2 vUv;\n#endif",
        uv_pars_vertex: "#ifdef USE_UV\n\t#ifdef UVS_VERTEX_ONLY\n\t\tvec2 vUv;\n\t#else\n\t\tvarying vec2 vUv;\n\t#endif\n\tuniform mat3 uvTransform;\n#endif",
        uv_vertex: "#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif",
        uv2_pars_fragment: "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif",
        uv2_pars_vertex: "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n\tuniform mat3 uv2Transform;\n#endif",
        uv2_vertex: "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\n#endif",
        worldpos_vertex: "#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif",
        background_frag: "uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}",
        background_vert: "varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}",
        cube_frag: "#include <envmap_common_pars_fragment>\nuniform float opacity;\nvarying vec3 vWorldDirection;\n#include <cube_uv_reflection_fragment>\nvoid main() {\n\tvec3 vReflect = vWorldDirection;\n\t#include <envmap_fragment>\n\tgl_FragColor = envColor;\n\tgl_FragColor.a *= opacity;\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}",
        cube_vert: "varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\tgl_Position.z = gl_Position.w;\n}",
        depth_frag: "#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <logdepthbuf_fragment>\n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}",
        depth_vert: "#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvHighPrecisionZW = gl_Position.zw;\n}",
        distanceRGBA_frag: "#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main () {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}",
        distanceRGBA_vert: "#define DISTANCE\nvarying vec3 vWorldPosition;\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\tvWorldPosition = worldPosition.xyz;\n}",
        equirect_frag: "uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV;\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}",
        equirect_vert: "varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n}",
        linedashed_frag: "uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <color_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n}",
        linedashed_vert: "uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include <color_vertex>\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}",
        meshbasic_frag: "uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <cube_uv_reflection_fragment>\n#include <fog_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\n\t\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\t\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include <aomap_fragment>\n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include <envmap_fragment>\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n}",
        meshbasic_vert: "#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_ENVMAP\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <envmap_vertex>\n\t#include <fog_vertex>\n}",
        meshlambert_frag: "uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <cube_uv_reflection_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <fog_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <shadowmask_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\t#include <emissivemap_fragment>\n\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include <lightmap_fragment>\n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",
        meshlambert_vert: "#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <envmap_pars_vertex>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <lights_lambert_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",
        meshmatcap_frag: "#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t\tmatcapColor = matcapTexelToLinear( matcapColor );\n\t#else\n\t\tvec4 matcapColor = vec4( 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n}",
        meshmatcap_vert: "#define MATCAP\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <color_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#ifndef FLAT_SHADED\n\t\tvNormal = normalize( transformedNormal );\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n\tvViewPosition = - mvPosition.xyz;\n}",
        meshtoon_frag: "#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <gradientmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <lights_toon_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_toon_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",
        meshtoon_vert: "#define TOON\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",
        meshphong_frag: "#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <cube_uv_reflection_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <lights_phong_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_phong_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",
        meshphong_vert: "#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",
        meshphysical_frag: "#define STANDARD\n#ifdef PHYSICAL\n\t#define REFLECTIVITY\n\t#define CLEARCOAT\n\t#define TRANSPARENCY\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef TRANSPARENCY\n\tuniform float transparency;\n#endif\n#ifdef REFLECTIVITY\n\tuniform float reflectivity;\n#endif\n#ifdef CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheen;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <bsdfs>\n#include <cube_uv_reflection_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_physical_pars_fragment>\n#include <fog_pars_fragment>\n#include <lights_pars_begin>\n#include <lights_physical_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <clearcoat_pars_fragment>\n#include <roughnessmap_pars_fragment>\n#include <metalnessmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <roughnessmap_fragment>\n\t#include <metalnessmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <clearcoat_normal_fragment_begin>\n\t#include <clearcoat_normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_physical_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#ifdef TRANSPARENCY\n\t\tdiffuseColor.a *= saturate( 1. - transparency + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) );\n\t#endif\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",
        meshphysical_vert: "#define STANDARD\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",
        normal_frag: "#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <packing>\n#include <uv_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\t#include <logdepthbuf_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}",
        normal_vert: "#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}",
        points_frag: "uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <color_pars_fragment>\n#include <map_particle_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_particle_fragment>\n\t#include <color_fragment>\n\t#include <alphatest_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n}",
        points_vert: "uniform float size;\nuniform float scale;\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <color_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <fog_vertex>\n}",
        shadow_frag: "uniform vec3 color;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <shadowmap_pars_fragment>\n#include <shadowmask_pars_fragment>\nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}",
        shadow_vert: "#include <fog_pars_vertex>\n#include <shadowmap_pars_vertex>\nvoid main() {\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",
        sprite_frag: "uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}",
        sprite_vert: "uniform float rotation;\nuniform vec2 center;\n#include <common>\n#include <uv_pars_vertex>\n#include <fog_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}"
    }
      , Wo = {
        basic: {
            uniforms: Oo([Fo.common, Fo.specularmap, Fo.envmap, Fo.aomap, Fo.lightmap, Fo.fog]),
            vertexShader: Ho.meshbasic_vert,
            fragmentShader: Ho.meshbasic_frag
        },
        lambert: {
            uniforms: Oo([Fo.common, Fo.specularmap, Fo.envmap, Fo.aomap, Fo.lightmap, Fo.emissivemap, Fo.fog, Fo.lights, {
                emissive: {
                    value: new Er(0)
                }
            }]),
            vertexShader: Ho.meshlambert_vert,
            fragmentShader: Ho.meshlambert_frag
        },
        phong: {
            uniforms: Oo([Fo.common, Fo.specularmap, Fo.envmap, Fo.aomap, Fo.lightmap, Fo.emissivemap, Fo.bumpmap, Fo.normalmap, Fo.displacementmap, Fo.fog, Fo.lights, {
                emissive: {
                    value: new Er(0)
                },
                specular: {
                    value: new Er(1118481)
                },
                shininess: {
                    value: 30
                }
            }]),
            vertexShader: Ho.meshphong_vert,
            fragmentShader: Ho.meshphong_frag
        },
        standard: {
            uniforms: Oo([Fo.common, Fo.envmap, Fo.aomap, Fo.lightmap, Fo.emissivemap, Fo.bumpmap, Fo.normalmap, Fo.displacementmap, Fo.roughnessmap, Fo.metalnessmap, Fo.fog, Fo.lights, {
                emissive: {
                    value: new Er(0)
                },
                roughness: {
                    value: .5
                },
                metalness: {
                    value: .5
                },
                envMapIntensity: {
                    value: 1
                }
            }]),
            vertexShader: Ho.meshphysical_vert,
            fragmentShader: Ho.meshphysical_frag
        },
        toon: {
            uniforms: Oo([Fo.common, Fo.specularmap, Fo.aomap, Fo.lightmap, Fo.emissivemap, Fo.bumpmap, Fo.normalmap, Fo.displacementmap, Fo.gradientmap, Fo.fog, Fo.lights, {
                emissive: {
                    value: new Er(0)
                },
                specular: {
                    value: new Er(1118481)
                },
                shininess: {
                    value: 30
                }
            }]),
            vertexShader: Ho.meshtoon_vert,
            fragmentShader: Ho.meshtoon_frag
        },
        matcap: {
            uniforms: Oo([Fo.common, Fo.bumpmap, Fo.normalmap, Fo.displacementmap, Fo.fog, {
                matcap: {
                    value: null
                }
            }]),
            vertexShader: Ho.meshmatcap_vert,
            fragmentShader: Ho.meshmatcap_frag
        },
        points: {
            uniforms: Oo([Fo.points, Fo.fog]),
            vertexShader: Ho.points_vert,
            fragmentShader: Ho.points_frag
        },
        dashed: {
            uniforms: Oo([Fo.common, Fo.fog, {
                scale: {
                    value: 1
                },
                dashSize: {
                    value: 1
                },
                totalSize: {
                    value: 2
                }
            }]),
            vertexShader: Ho.linedashed_vert,
            fragmentShader: Ho.linedashed_frag
        },
        depth: {
            uniforms: Oo([Fo.common, Fo.displacementmap]),
            vertexShader: Ho.depth_vert,
            fragmentShader: Ho.depth_frag
        },
        normal: {
            uniforms: Oo([Fo.common, Fo.bumpmap, Fo.normalmap, Fo.displacementmap, {
                opacity: {
                    value: 1
                }
            }]),
            vertexShader: Ho.normal_vert,
            fragmentShader: Ho.normal_frag
        },
        sprite: {
            uniforms: Oo([Fo.sprite, Fo.fog]),
            vertexShader: Ho.sprite_vert,
            fragmentShader: Ho.sprite_frag
        },
        background: {
            uniforms: {
                uvTransform: {
                    value: new Jn
                },
                t2D: {
                    value: null
                }
            },
            vertexShader: Ho.background_vert,
            fragmentShader: Ho.background_frag
        },
        cube: {
            uniforms: Oo([Fo.envmap, {
                opacity: {
                    value: 1
                }
            }]),
            vertexShader: Ho.cube_vert,
            fragmentShader: Ho.cube_frag
        },
        equirect: {
            uniforms: {
                tEquirect: {
                    value: null
                }
            },
            vertexShader: Ho.equirect_vert,
            fragmentShader: Ho.equirect_frag
        },
        distanceRGBA: {
            uniforms: Oo([Fo.common, Fo.displacementmap, {
                referencePosition: {
                    value: new si
                },
                nearDistance: {
                    value: 1
                },
                farDistance: {
                    value: 1e3
                }
            }]),
            vertexShader: Ho.distanceRGBA_vert,
            fragmentShader: Ho.distanceRGBA_frag
        },
        shadow: {
            uniforms: Oo([Fo.lights, Fo.fog, {
                color: {
                    value: new Er(0)
                },
                opacity: {
                    value: 1
                }
            }]),
            vertexShader: Ho.shadow_vert,
            fragmentShader: Ho.shadow_frag
        }
    };
    function qo(t, e, n, i) {
        var r, o, a = new Er(0), s = 0, c = null, l = 0, u = null;
        function d(t, n) {
            e.buffers.color.setClear(t.r, t.g, t.b, n, i)
        }
        return {
            getClearColor: function() {
                return a
            },
            setClearColor: function(t, e) {
                a.set(t),
                d(a, s = void 0 !== e ? e : 1)
            },
            getClearAlpha: function() {
                return s
            },
            setClearAlpha: function(t) {
                d(a, s = t)
            },
            render: function(e, i, p, h) {
                var f = i.background
                  , m = t.xr
                  , g = m.getSession && m.getSession();
                if (g && "additive" === g.environmentBlendMode && (f = null),
                null === f ? d(a, s) : f && f.isColor && (d(f, 1),
                h = !0),
                (t.autoClear || h) && t.clear(t.autoClearColor, t.autoClearDepth, t.autoClearStencil),
                f && (f.isCubeTexture || f.isWebGLCubeRenderTarget || f.mapping === xt)) {
                    void 0 === o && ((o = new vo(new Ao(1,1,1),new Po({
                        type: "BackgroundCubeMaterial",
                        uniforms: To(Wo.cube.uniforms),
                        vertexShader: Wo.cube.vertexShader,
                        fragmentShader: Wo.cube.fragmentShader,
                        side: T,
                        depthTest: !1,
                        depthWrite: !1,
                        fog: !1
                    }))).geometry.deleteAttribute("normal"),
                    o.geometry.deleteAttribute("uv"),
                    o.onBeforeRender = function(t, e, n) {
                        this.matrixWorld.copyPosition(n.matrixWorld)
                    }
                    ,
                    Object.defineProperty(o.material, "envMap", {
                        get: function() {
                            return this.uniforms.envMap.value
                        }
                    }),
                    n.update(o));
                    var v = f.isWebGLCubeRenderTarget ? f.texture : f;
                    o.material.uniforms.envMap.value = v,
                    o.material.uniforms.flipEnvMap.value = v.isCubeTexture ? -1 : 1,
                    c === f && l === v.version && u === t.toneMapping || (o.material.needsUpdate = !0,
                    c = f,
                    l = v.version,
                    u = t.toneMapping),
                    e.unshift(o, o.geometry, o.material, 0, 0, null)
                } else
                    f && f.isTexture && (void 0 === r && ((r = new vo(new Go(2,2),new Po({
                        type: "BackgroundMaterial",
                        uniforms: To(Wo.background.uniforms),
                        vertexShader: Wo.background.vertexShader,
                        fragmentShader: Wo.background.fragmentShader,
                        side: A,
                        depthTest: !1,
                        depthWrite: !1,
                        fog: !1
                    }))).geometry.deleteAttribute("normal"),
                    Object.defineProperty(r.material, "map", {
                        get: function() {
                            return this.uniforms.t2D.value
                        }
                    }),
                    n.update(r)),
                    r.material.uniforms.t2D.value = f,
                    !0 === f.matrixAutoUpdate && f.updateMatrix(),
                    r.material.uniforms.uvTransform.value.copy(f.matrix),
                    c === f && l === f.version && u === t.toneMapping || (r.material.needsUpdate = !0,
                    c = f,
                    l = f.version,
                    u = t.toneMapping),
                    e.unshift(r, r.geometry, r.material, 0, 0, null))
            }
        }
    }
    function Xo(t, e, n, i) {
        var r, o = i.isWebGL2;
        this.setMode = function(t) {
            r = t
        }
        ,
        this.render = function(e, i) {
            t.drawArrays(r, e, i),
            n.update(i, r)
        }
        ,
        this.renderInstances = function(i, a, s, c) {
            if (0 !== c) {
                var l, u;
                if (o)
                    l = t,
                    u = "drawArraysInstanced";
                else if (u = "drawArraysInstancedANGLE",
                null === (l = e.get("ANGLE_instanced_arrays")))
                    return void console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");
                l[u](r, a, s, c),
                n.update(s, r, c)
            }
        }
    }
    function Yo(t, e, n) {
        var i;
        function r(e) {
            if ("highp" === e) {
                if (t.getShaderPrecisionFormat(35633, 36338).precision > 0 && t.getShaderPrecisionFormat(35632, 36338).precision > 0)
                    return "highp";
                e = "mediump"
            }
            return "mediump" === e && t.getShaderPrecisionFormat(35633, 36337).precision > 0 && t.getShaderPrecisionFormat(35632, 36337).precision > 0 ? "mediump" : "lowp"
        }
        var o = "undefined" != typeof WebGL2RenderingContext && t instanceof WebGL2RenderingContext || "undefined" != typeof WebGL2ComputeRenderingContext && t instanceof WebGL2ComputeRenderingContext
          , a = void 0 !== n.precision ? n.precision : "highp"
          , s = r(a);
        s !== a && (console.warn("THREE.WebGLRenderer:", a, "not supported, using", s, "instead."),
        a = s);
        var c = !0 === n.logarithmicDepthBuffer
          , l = t.getParameter(34930)
          , u = t.getParameter(35660)
          , d = t.getParameter(3379)
          , p = t.getParameter(34076)
          , h = t.getParameter(34921)
          , f = t.getParameter(36347)
          , m = t.getParameter(36348)
          , g = t.getParameter(36349)
          , v = u > 0
          , y = o || !!e.get("OES_texture_float");
        return {
            isWebGL2: o,
            getMaxAnisotropy: function() {
                if (void 0 !== i)
                    return i;
                var n = e.get("EXT_texture_filter_anisotropic");
                return i = null !== n ? t.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 0
            },
            getMaxPrecision: r,
            precision: a,
            logarithmicDepthBuffer: c,
            maxTextures: l,
            maxVertexTextures: u,
            maxTextureSize: d,
            maxCubemapSize: p,
            maxAttributes: h,
            maxVertexUniforms: f,
            maxVaryings: m,
            maxFragmentUniforms: g,
            vertexTextures: v,
            floatFragmentTextures: y,
            floatVertexTextures: v && y,
            maxSamples: o ? t.getParameter(36183) : 0
        }
    }
    function Ko() {
        var t = this
          , e = null
          , n = 0
          , i = !1
          , r = !1
          , o = new lr
          , a = new Jn
          , s = {
            value: null,
            needsUpdate: !1
        };
        function c() {
            s.value !== e && (s.value = e,
            s.needsUpdate = n > 0),
            t.numPlanes = n,
            t.numIntersection = 0
        }
        function l(e, n, i, r) {
            var c = null !== e ? e.length : 0
              , l = null;
            if (0 !== c) {
                if (l = s.value,
                !0 !== r || null === l) {
                    var u = i + 4 * c
                      , d = n.matrixWorldInverse;
                    a.getNormalMatrix(d),
                    (null === l || l.length < u) && (l = new Float32Array(u));
                    for (var p = 0, h = i; p !== c; ++p,
                    h += 4)
                        o.copy(e[p]).applyMatrix4(d, a),
                        o.normal.toArray(l, h),
                        l[h + 3] = o.constant
                }
                s.value = l,
                s.needsUpdate = !0
            }
            return t.numPlanes = c,
            t.numIntersection = 0,
            l
        }
        this.uniform = s,
        this.numPlanes = 0,
        this.numIntersection = 0,
        this.init = function(t, r, o) {
            var a = 0 !== t.length || r || 0 !== n || i;
            return i = r,
            e = l(t, o, 0),
            n = t.length,
            a
        }
        ,
        this.beginShadows = function() {
            r = !0,
            l(null)
        }
        ,
        this.endShadows = function() {
            r = !1,
            c()
        }
        ,
        this.setState = function(t, o, a, u, d, p) {
            if (!i || null === t || 0 === t.length || r && !a)
                r ? l(null) : c();
            else {
                var h = r ? 0 : n
                  , f = 4 * h
                  , m = d.clippingState || null;
                s.value = m,
                m = l(t, u, f, p);
                for (var g = 0; g !== f; ++g)
                    m[g] = e[g];
                d.clippingState = m,
                this.numIntersection = o ? this.numPlanes : 0,
                this.numPlanes += h
            }
        }
    }
    function Zo(t) {
        var e = {};
        return {
            get: function(n) {
                if (void 0 !== e[n])
                    return e[n];
                var i;
                switch (n) {
                case "WEBGL_depth_texture":
                    i = t.getExtension("WEBGL_depth_texture") || t.getExtension("MOZ_WEBGL_depth_texture") || t.getExtension("WEBKIT_WEBGL_depth_texture");
                    break;
                case "EXT_texture_filter_anisotropic":
                    i = t.getExtension("EXT_texture_filter_anisotropic") || t.getExtension("MOZ_EXT_texture_filter_anisotropic") || t.getExtension("WEBKIT_EXT_texture_filter_anisotropic");
                    break;
                case "WEBGL_compressed_texture_s3tc":
                    i = t.getExtension("WEBGL_compressed_texture_s3tc") || t.getExtension("MOZ_WEBGL_compressed_texture_s3tc") || t.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");
                    break;
                case "WEBGL_compressed_texture_pvrtc":
                    i = t.getExtension("WEBGL_compressed_texture_pvrtc") || t.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");
                    break;
                default:
                    i = t.getExtension(n)
                }
                return null === i && console.warn("THREE.WebGLRenderer: " + n + " extension not supported."),
                e[n] = i,
                i
            }
        }
    }
    function Jo(t, e, n) {
        var i = new WeakMap
          , r = new WeakMap;
        function o(t) {
            var a = t.target
              , s = i.get(a);
            for (var c in null !== s.index && e.remove(s.index),
            s.attributes)
                e.remove(s.attributes[c]);
            a.removeEventListener("dispose", o),
            i.delete(a);
            var l = r.get(s);
            l && (e.remove(l),
            r.delete(s)),
            n.memory.geometries--
        }
        function a(t) {
            var n = []
              , i = t.index
              , o = t.attributes.position
              , a = 0;
            if (null !== i) {
                var s = i.array;
                a = i.version;
                for (var c = 0, l = s.length; c < l; c += 3) {
                    var u = s[c + 0]
                      , d = s[c + 1]
                      , p = s[c + 2];
                    n.push(u, d, d, p, p, u)
                }
            } else {
                s = o.array;
                a = o.version;
                for (c = 0,
                l = s.length / 3 - 1; c < l; c += 3) {
                    u = c + 0,
                    d = c + 1,
                    p = c + 2;
                    n.push(u, d, d, p, p, u)
                }
            }
            var h = new (Hr(n) > 65535 ? Ur : Vr)(n,1);
            h.version = a,
            e.update(h, 34963);
            var f = r.get(t);
            f && e.remove(f),
            r.set(t, h)
        }
        return {
            get: function(t, e) {
                var r = i.get(e);
                return r || (e.addEventListener("dispose", o),
                e.isBufferGeometry ? r = e : e.isGeometry && (void 0 === e._bufferGeometry && (e._bufferGeometry = (new Qr).setFromObject(t)),
                r = e._bufferGeometry),
                i.set(e, r),
                n.memory.geometries++,
                r)
            },
            update: function(t) {
                var n = t.index
                  , i = t.attributes;
                for (var r in null !== n && e.update(n, 34963),
                i)
                    e.update(i[r], 34962);
                var o = t.morphAttributes;
                for (var r in o)
                    for (var a = o[r], s = 0, c = a.length; s < c; s++)
                        e.update(a[s], 34962)
            },
            getWireframeAttribute: function(t) {
                var e = r.get(t);
                if (e) {
                    var n = t.index;
                    null !== n && e.version < n.version && a(t)
                } else
                    a(t);
                return r.get(t)
            }
        }
    }
    function Qo(t, e, n, i) {
        var r, o, a, s = i.isWebGL2;
        this.setMode = function(t) {
            r = t
        }
        ,
        this.setIndex = function(t) {
            o = t.type,
            a = t.bytesPerElement
        }
        ,
        this.render = function(e, i) {
            t.drawElements(r, i, o, e * a),
            n.update(i, r)
        }
        ,
        this.renderInstances = function(i, c, l, u) {
            if (0 !== u) {
                var d, p;
                if (s)
                    d = t,
                    p = "drawElementsInstanced";
                else if (p = "drawElementsInstancedANGLE",
                null === (d = e.get("ANGLE_instanced_arrays")))
                    return void console.error("THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");
                d[p](r, l, o, c * a, u),
                n.update(l, r, u)
            }
        }
    }
    function $o(t) {
        var e = {
            frame: 0,
            calls: 0,
            triangles: 0,
            points: 0,
            lines: 0
        };
        return {
            memory: {
                geometries: 0,
                textures: 0
            },
            render: e,
            programs: null,
            autoReset: !0,
            reset: function() {
                e.frame++,
                e.calls = 0,
                e.triangles = 0,
                e.points = 0,
                e.lines = 0
            },
            update: function(t, n, i) {
                switch (i = i || 1,
                e.calls++,
                n) {
                case 4:
                    e.triangles += i * (t / 3);
                    break;
                case 1:
                    e.lines += i * (t / 2);
                    break;
                case 3:
                    e.lines += i * (t - 1);
                    break;
                case 2:
                    e.lines += i * t;
                    break;
                case 0:
                    e.points += i * t;
                    break;
                default:
                    console.error("THREE.WebGLInfo: Unknown draw mode:", n)
                }
            }
        }
    }
    function ta(t, e) {
        return Math.abs(e[1]) - Math.abs(t[1])
    }
    function ea(t) {
        var e = {}
          , n = new Float32Array(8);
        return {
            update: function(i, r, o, a) {
                var s = i.morphTargetInfluences
                  , c = void 0 === s ? 0 : s.length
                  , l = e[r.id];
                if (void 0 === l) {
                    l = [];
                    for (var u = 0; u < c; u++)
                        l[u] = [u, 0];
                    e[r.id] = l
                }
                var d = o.morphTargets && r.morphAttributes.position
                  , p = o.morphNormals && r.morphAttributes.normal;
                for (u = 0; u < c; u++) {
                    0 !== (f = l[u])[1] && (d && r.deleteAttribute("morphTarget" + u),
                    p && r.deleteAttribute("morphNormal" + u))
                }
                for (u = 0; u < c; u++) {
                    (f = l[u])[0] = u,
                    f[1] = s[u]
                }
                l.sort(ta);
                var h = 0;
                for (u = 0; u < 8; u++) {
                    var f;
                    if (f = l[u]) {
                        var m = f[0]
                          , g = f[1];
                        if (g) {
                            d && r.setAttribute("morphTarget" + u, d[m]),
                            p && r.setAttribute("morphNormal" + u, p[m]),
                            n[u] = g,
                            h += g;
                            continue
                        }
                    }
                    n[u] = 0
                }
                var v = r.morphTargetsRelative ? 1 : 1 - h;
                a.getUniforms().setValue(t, "morphTargetBaseInfluence", v),
                a.getUniforms().setValue(t, "morphTargetInfluences", n)
            }
        }
    }
    function na(t, e, n, i) {
        var r = new WeakMap;
        return {
            update: function(t) {
                var o = i.render.frame
                  , a = t.geometry
                  , s = e.get(t, a);
                return r.get(s) !== o && (a.isGeometry && s.updateFromObject(t),
                e.update(s),
                r.set(s, o)),
                t.isInstancedMesh && n.update(t.instanceMatrix, 34962),
                s
            },
            dispose: function() {
                r = new WeakMap
            }
        }
    }
    function ia(t, e, n, i, r, o, a, s, c, l) {
        t = void 0 !== t ? t : [],
        e = void 0 !== e ? e : vt,
        a = void 0 !== a ? a : Zt,
        ti.call(this, t, e, n, i, r, o, a, s, c, l),
        this.flipY = !1
    }
    function ra(t, e, n, i) {
        ti.call(this, null),
        this.image = {
            data: t || null,
            width: e || 1,
            height: n || 1,
            depth: i || 1
        },
        this.magFilter = Tt,
        this.minFilter = Tt,
        this.wrapR = Ct,
        this.generateMipmaps = !1,
        this.flipY = !1,
        this.needsUpdate = !0
    }
    function oa(t, e, n, i) {
        ti.call(this, null),
        this.image = {
            data: t || null,
            width: e || 1,
            height: n || 1,
            depth: i || 1
        },
        this.magFilter = Tt,
        this.minFilter = Tt,
        this.wrapR = Ct,
        this.generateMipmaps = !1,
        this.flipY = !1,
        this.needsUpdate = !0
    }
    Wo.physical = {
        uniforms: Oo([Wo.standard.uniforms, {
            clearcoat: {
                value: 0
            },
            clearcoatMap: {
                value: null
            },
            clearcoatRoughness: {
                value: 0
            },
            clearcoatRoughnessMap: {
                value: null
            },
            clearcoatNormalScale: {
                value: new Zn(1,1)
            },
            clearcoatNormalMap: {
                value: null
            },
            sheen: {
                value: new Er(0)
            },
            transparency: {
                value: 0
            }
        }]),
        vertexShader: Ho.meshphysical_vert,
        fragmentShader: Ho.meshphysical_frag
    },
    ia.prototype = Object.create(ti.prototype),
    ia.prototype.constructor = ia,
    ia.prototype.isCubeTexture = !0,
    Object.defineProperty(ia.prototype, "images", {
        get: function() {
            return this.image
        },
        set: function(t) {
            this.image = t
        }
    }),
    ra.prototype = Object.create(ti.prototype),
    ra.prototype.constructor = ra,
    ra.prototype.isDataTexture2DArray = !0,
    oa.prototype = Object.create(ti.prototype),
    oa.prototype.constructor = oa,
    oa.prototype.isDataTexture3D = !0;
    var aa = new ti
      , sa = new ra
      , ca = new oa
      , la = new ia
      , ua = []
      , da = []
      , pa = new Float32Array(16)
      , ha = new Float32Array(9)
      , fa = new Float32Array(4);
    function ma(t, e, n) {
        var i = t[0];
        if (i <= 0 || i > 0)
            return t;
        var r = e * n
          , o = ua[r];
        if (void 0 === o && (o = new Float32Array(r),
        ua[r] = o),
        0 !== e) {
            i.toArray(o, 0);
            for (var a = 1, s = 0; a !== e; ++a)
                s += n,
                t[a].toArray(o, s)
        }
        return o
    }
    function ga(t, e) {
        if (t.length !== e.length)
            return !1;
        for (var n = 0, i = t.length; n < i; n++)
            if (t[n] !== e[n])
                return !1;
        return !0
    }
    function va(t, e) {
        for (var n = 0, i = e.length; n < i; n++)
            t[n] = e[n]
    }
    function ya(t, e) {
        var n = da[e];
        void 0 === n && (n = new Int32Array(e),
        da[e] = n);
        for (var i = 0; i !== e; ++i)
            n[i] = t.allocateTextureUnit();
        return n
    }
    function ba(t, e) {
        var n = this.cache;
        n[0] !== e && (t.uniform1f(this.addr, e),
        n[0] = e)
    }
    function wa(t, e) {
        var n = this.cache;
        if (void 0 !== e.x)
            n[0] === e.x && n[1] === e.y || (t.uniform2f(this.addr, e.x, e.y),
            n[0] = e.x,
            n[1] = e.y);
        else {
            if (ga(n, e))
                return;
            t.uniform2fv(this.addr, e),
            va(n, e)
        }
    }
    function Sa(t, e) {
        var n = this.cache;
        if (void 0 !== e.x)
            n[0] === e.x && n[1] === e.y && n[2] === e.z || (t.uniform3f(this.addr, e.x, e.y, e.z),
            n[0] = e.x,
            n[1] = e.y,
            n[2] = e.z);
        else if (void 0 !== e.r)
            n[0] === e.r && n[1] === e.g && n[2] === e.b || (t.uniform3f(this.addr, e.r, e.g, e.b),
            n[0] = e.r,
            n[1] = e.g,
            n[2] = e.b);
        else {
            if (ga(n, e))
                return;
            t.uniform3fv(this.addr, e),
            va(n, e)
        }
    }
    function xa(t, e) {
        var n = this.cache;
        if (void 0 !== e.x)
            n[0] === e.x && n[1] === e.y && n[2] === e.z && n[3] === e.w || (t.uniform4f(this.addr, e.x, e.y, e.z, e.w),
            n[0] = e.x,
            n[1] = e.y,
            n[2] = e.z,
            n[3] = e.w);
        else {
            if (ga(n, e))
                return;
            t.uniform4fv(this.addr, e),
            va(n, e)
        }
    }
    function Ma(t, e) {
        var n = this.cache
          , i = e.elements;
        if (void 0 === i) {
            if (ga(n, e))
                return;
            t.uniformMatrix2fv(this.addr, !1, e),
            va(n, e)
        } else {
            if (ga(n, i))
                return;
            fa.set(i),
            t.uniformMatrix2fv(this.addr, !1, fa),
            va(n, i)
        }
    }
    function Ea(t, e) {
        var n = this.cache
          , i = e.elements;
        if (void 0 === i) {
            if (ga(n, e))
                return;
            t.uniformMatrix3fv(this.addr, !1, e),
            va(n, e)
        } else {
            if (ga(n, i))
                return;
            ha.set(i),
            t.uniformMatrix3fv(this.addr, !1, ha),
            va(n, i)
        }
    }
    function Ca(t, e) {
        var n = this.cache
          , i = e.elements;
        if (void 0 === i) {
            if (ga(n, e))
                return;
            t.uniformMatrix4fv(this.addr, !1, e),
            va(n, e)
        } else {
            if (ga(n, i))
                return;
            pa.set(i),
            t.uniformMatrix4fv(this.addr, !1, pa),
            va(n, i)
        }
    }
    function Aa(t, e, n) {
        var i = this.cache
          , r = n.allocateTextureUnit();
        i[0] !== r && (t.uniform1i(this.addr, r),
        i[0] = r),
        n.safeSetTexture2D(e || aa, r)
    }
    function Ta(t, e, n) {
        var i = this.cache
          , r = n.allocateTextureUnit();
        i[0] !== r && (t.uniform1i(this.addr, r),
        i[0] = r),
        n.setTexture2DArray(e || sa, r)
    }
    function Oa(t, e, n) {
        var i = this.cache
          , r = n.allocateTextureUnit();
        i[0] !== r && (t.uniform1i(this.addr, r),
        i[0] = r),
        n.setTexture3D(e || ca, r)
    }
    function _a(t, e, n) {
        var i = this.cache
          , r = n.allocateTextureUnit();
        i[0] !== r && (t.uniform1i(this.addr, r),
        i[0] = r),
        n.safeSetTextureCube(e || la, r)
    }
    function Pa(t, e) {
        var n = this.cache;
        n[0] !== e && (t.uniform1i(this.addr, e),
        n[0] = e)
    }
    function Ia(t, e) {
        var n = this.cache;
        ga(n, e) || (t.uniform2iv(this.addr, e),
        va(n, e))
    }
    function ka(t, e) {
        var n = this.cache;
        ga(n, e) || (t.uniform3iv(this.addr, e),
        va(n, e))
    }
    function Da(t, e) {
        var n = this.cache;
        ga(n, e) || (t.uniform4iv(this.addr, e),
        va(n, e))
    }
    function Ra(t, e) {
        var n = this.cache;
        n[0] !== e && (t.uniform1ui(this.addr, e),
        n[0] = e)
    }
    function La(t, e) {
        t.uniform1fv(this.addr, e)
    }
    function Na(t, e) {
        t.uniform1iv(this.addr, e)
    }
    function ja(t, e) {
        t.uniform2iv(this.addr, e)
    }
    function Va(t, e) {
        t.uniform3iv(this.addr, e)
    }
    function Fa(t, e) {
        t.uniform4iv(this.addr, e)
    }
    function Ua(t, e) {
        var n = ma(e, this.size, 2);
        t.uniform2fv(this.addr, n)
    }
    function Ba(t, e) {
        var n = ma(e, this.size, 3);
        t.uniform3fv(this.addr, n)
    }
    function za(t, e) {
        var n = ma(e, this.size, 4);
        t.uniform4fv(this.addr, n)
    }
    function Ga(t, e) {
        var n = ma(e, this.size, 4);
        t.uniformMatrix2fv(this.addr, !1, n)
    }
    function Ha(t, e) {
        var n = ma(e, this.size, 9);
        t.uniformMatrix3fv(this.addr, !1, n)
    }
    function Wa(t, e) {
        var n = ma(e, this.size, 16);
        t.uniformMatrix4fv(this.addr, !1, n)
    }
    function qa(t, e, n) {
        var i = e.length
          , r = ya(n, i);
        t.uniform1iv(this.addr, r);
        for (var o = 0; o !== i; ++o)
            n.safeSetTexture2D(e[o] || aa, r[o])
    }
    function Xa(t, e, n) {
        var i = e.length
          , r = ya(n, i);
        t.uniform1iv(this.addr, r);
        for (var o = 0; o !== i; ++o)
            n.safeSetTextureCube(e[o] || la, r[o])
    }
    function Ya(t, e, n) {
        this.id = t,
        this.addr = n,
        this.cache = [],
        this.setValue = function(t) {
            switch (t) {
            case 5126:
                return ba;
            case 35664:
                return wa;
            case 35665:
                return Sa;
            case 35666:
                return xa;
            case 35674:
                return Ma;
            case 35675:
                return Ea;
            case 35676:
                return Ca;
            case 5124:
            case 35670:
                return Pa;
            case 35667:
            case 35671:
                return Ia;
            case 35668:
            case 35672:
                return ka;
            case 35669:
            case 35673:
                return Da;
            case 5125:
                return Ra;
            case 35678:
            case 36198:
            case 36298:
            case 36306:
            case 35682:
                return Aa;
            case 35679:
            case 36299:
            case 36307:
                return Oa;
            case 35680:
            case 36300:
            case 36308:
            case 36293:
                return _a;
            case 36289:
            case 36303:
            case 36311:
            case 36292:
                return Ta
            }
        }(e.type)
    }
    function Ka(t, e, n) {
        this.id = t,
        this.addr = n,
        this.cache = [],
        this.size = e.size,
        this.setValue = function(t) {
            switch (t) {
            case 5126:
                return La;
            case 35664:
                return Ua;
            case 35665:
                return Ba;
            case 35666:
                return za;
            case 35674:
                return Ga;
            case 35675:
                return Ha;
            case 35676:
                return Wa;
            case 5124:
            case 35670:
                return Na;
            case 35667:
            case 35671:
                return ja;
            case 35668:
            case 35672:
                return Va;
            case 35669:
            case 35673:
                return Fa;
            case 35678:
            case 36198:
            case 36298:
            case 36306:
            case 35682:
                return qa;
            case 35680:
            case 36300:
            case 36308:
            case 36293:
                return Xa
            }
        }(e.type)
    }
    function Za(t) {
        this.id = t,
        this.seq = [],
        this.map = {}
    }
    Ka.prototype.updateCache = function(t) {
        var e = this.cache;
        t instanceof Float32Array && e.length !== t.length && (this.cache = new Float32Array(t.length)),
        va(e, t)
    }
    ,
    Za.prototype.setValue = function(t, e, n) {
        for (var i = this.seq, r = 0, o = i.length; r !== o; ++r) {
            var a = i[r];
            a.setValue(t, e[a.id], n)
        }
    }
    ;
    var Ja = /([\w\d_]+)(\])?(\[|\.)?/g;
    function Qa(t, e) {
        t.seq.push(e),
        t.map[e.id] = e
    }
    function $a(t, e, n) {
        var i = t.name
          , r = i.length;
        for (Ja.lastIndex = 0; ; ) {
            var o = Ja.exec(i)
              , a = Ja.lastIndex
              , s = o[1]
              , c = "]" === o[2]
              , l = o[3];
            if (c && (s |= 0),
            void 0 === l || "[" === l && a + 2 === r) {
                Qa(n, void 0 === l ? new Ya(s,t,e) : new Ka(s,t,e));
                break
            }
            var u = n.map[s];
            void 0 === u && Qa(n, u = new Za(s)),
            n = u
        }
    }
    function ts(t, e) {
        this.seq = [],
        this.map = {};
        for (var n = t.getProgramParameter(e, 35718), i = 0; i < n; ++i) {
            var r = t.getActiveUniform(e, i);
            $a(r, t.getUniformLocation(e, r.name), this)
        }
    }
    function es(t, e, n) {
        var i = t.createShader(e);
        return t.shaderSource(i, n),
        t.compileShader(i),
        i
    }
    ts.prototype.setValue = function(t, e, n, i) {
        var r = this.map[e];
        void 0 !== r && r.setValue(t, n, i)
    }
    ,
    ts.prototype.setOptional = function(t, e, n) {
        var i = e[n];
        void 0 !== i && this.setValue(t, n, i)
    }
    ,
    ts.upload = function(t, e, n, i) {
        for (var r = 0, o = e.length; r !== o; ++r) {
            var a = e[r]
              , s = n[a.id];
            !1 !== s.needsUpdate && a.setValue(t, s.value, i)
        }
    }
    ,
    ts.seqWithValue = function(t, e) {
        for (var n = [], i = 0, r = t.length; i !== r; ++i) {
            var o = t[i];
            o.id in e && n.push(o)
        }
        return n
    }
    ;
    var ns = 0;
    function is(t) {
        switch (t) {
        case cn:
            return ["Linear", "( value )"];
        case ln:
            return ["sRGB", "( value )"];
        case dn:
            return ["RGBE", "( value )"];
        case hn:
            return ["RGBM", "( value, 7.0 )"];
        case fn:
            return ["RGBM", "( value, 16.0 )"];
        case mn:
            return ["RGBD", "( value, 256.0 )"];
        case un:
            return ["Gamma", "( value, float( GAMMA_FACTOR ) )"];
        case pn:
            return ["LogLuv", "( value )"];
        default:
            throw new Error("unsupported encoding: " + t)
        }
    }
    function rs(t, e, n) {
        var i = t.getShaderParameter(e, 35713)
          , r = t.getShaderInfoLog(e).trim();
        return i && "" === r ? "" : "THREE.WebGLShader: gl.getShaderInfoLog() " + n + "\n" + r + function(t) {
            for (var e = t.split("\n"), n = 0; n < e.length; n++)
                e[n] = n + 1 + ": " + e[n];
            return e.join("\n")
        }(t.getShaderSource(e))
    }
    function os(t, e) {
        var n = is(e);
        return "vec4 " + t + "( vec4 value ) { return " + n[0] + "ToLinear" + n[1] + "; }"
    }
    function as(t, e) {
        var n;
        switch (e) {
        case dt:
            n = "Linear";
            break;
        case pt:
            n = "Reinhard";
            break;
        case ht:
            n = "Uncharted2";
            break;
        case ft:
            n = "OptimizedCineon";
            break;
        case mt:
            n = "ACESFilmic";
            break;
        default:
            throw new Error("unsupported toneMapping: " + e)
        }
        return "vec3 " + t + "( vec3 color ) { return " + n + "ToneMapping( color ); }"
    }
    function ss(t) {
        return "" !== t
    }
    function cs(t, e) {
        return t.replace(/NUM_DIR_LIGHTS/g, e.numDirLights).replace(/NUM_SPOT_LIGHTS/g, e.numSpotLights).replace(/NUM_RECT_AREA_LIGHTS/g, e.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g, e.numPointLights).replace(/NUM_HEMI_LIGHTS/g, e.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g, e.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS/g, e.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g, e.numPointLightShadows)
    }
    function ls(t, e) {
        return t.replace(/NUM_CLIPPING_PLANES/g, e.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g, e.numClippingPlanes - e.numClipIntersection)
    }
    var us = /^[ \t]*#include +<([\w\d./]+)>/gm;
    function ds(t) {
        return t.replace(us, ps)
    }
    function ps(t, e) {
        var n = Ho[e];
        if (void 0 === n)
            throw new Error("Can not resolve #include <" + e + ">");
        return ds(n)
    }
    var hs = /#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g
      , fs = /#pragma unroll_loop_start[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}[\s]+?#pragma unroll_loop_end/g;
    function ms(t) {
        return t.replace(fs, vs).replace(hs, gs)
    }
    function gs(t, e, n, i) {
        return console.warn("WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead."),
        vs(t, e, n, i)
    }
    function vs(t, e, n, i) {
        for (var r = "", o = parseInt(e); o < parseInt(n); o++)
            r += i.replace(/\[ i \]/g, "[ " + o + " ]").replace(/UNROLLED_LOOP_INDEX/g, o);
        return r
    }
    function ys(t) {
        var e = "precision " + t.precision + " float;\nprecision " + t.precision + " int;";
        return "highp" === t.precision ? e += "\n#define HIGH_PRECISION" : "mediump" === t.precision ? e += "\n#define MEDIUM_PRECISION" : "lowp" === t.precision && (e += "\n#define LOW_PRECISION"),
        e
    }
    function bs(t, e, n) {
        var i, r, o, a, s, c = t.getContext(), l = n.defines, u = n.vertexShader, d = n.fragmentShader, p = function(t) {
            var e = "SHADOWMAP_TYPE_BASIC";
            return t.shadowMapType === M ? e = "SHADOWMAP_TYPE_PCF" : t.shadowMapType === E ? e = "SHADOWMAP_TYPE_PCF_SOFT" : t.shadowMapType === C && (e = "SHADOWMAP_TYPE_VSM"),
            e
        }(n), h = function(t) {
            var e = "ENVMAP_TYPE_CUBE";
            if (t.envMap)
                switch (t.envMapMode) {
                case vt:
                case yt:
                    e = "ENVMAP_TYPE_CUBE";
                    break;
                case xt:
                case Mt:
                    e = "ENVMAP_TYPE_CUBE_UV";
                    break;
                case bt:
                case wt:
                    e = "ENVMAP_TYPE_EQUIREC";
                    break;
                case St:
                    e = "ENVMAP_TYPE_SPHERE"
                }
            return e
        }(n), f = function(t) {
            var e = "ENVMAP_MODE_REFLECTION";
            if (t.envMap)
                switch (t.envMapMode) {
                case yt:
                case wt:
                    e = "ENVMAP_MODE_REFRACTION"
                }
            return e
        }(n), m = function(t) {
            var e = "ENVMAP_BLENDING_NONE";
            if (t.envMap)
                switch (t.combine) {
                case st:
                    e = "ENVMAP_BLENDING_MULTIPLY";
                    break;
                case ct:
                    e = "ENVMAP_BLENDING_MIX";
                    break;
                case lt:
                    e = "ENVMAP_BLENDING_ADD"
                }
            return e
        }(n), g = t.gammaFactor > 0 ? t.gammaFactor : 1, v = n.isWebGL2 ? "" : function(t) {
            return [t.extensionDerivatives || t.envMapCubeUV || t.bumpMap || t.tangentSpaceNormalMap || t.clearcoatNormalMap || t.flatShading || "physical" === t.shaderID ? "#extension GL_OES_standard_derivatives : enable" : "", (t.extensionFragDepth || t.logarithmicDepthBuffer) && t.rendererExtensionFragDepth ? "#extension GL_EXT_frag_depth : enable" : "", t.extensionDrawBuffers && t.rendererExtensionDrawBuffers ? "#extension GL_EXT_draw_buffers : require" : "", (t.extensionShaderTextureLOD || t.envMap) && t.rendererExtensionShaderTextureLod ? "#extension GL_EXT_shader_texture_lod : enable" : ""].filter(ss).join("\n")
        }(n), y = function(t) {
            var e = [];
            for (var n in t) {
                var i = t[n];
                !1 !== i && e.push("#define " + n + " " + i)
            }
            return e.join("\n")
        }(l), b = c.createProgram();
        if (n.isRawShaderMaterial ? ((i = [y].filter(ss).join("\n")).length > 0 && (i += "\n"),
        (r = [v, y].filter(ss).join("\n")).length > 0 && (r += "\n")) : (i = [ys(n), "#define SHADER_NAME " + n.shaderName, y, n.instancing ? "#define USE_INSTANCING" : "", n.supportsVertexTextures ? "#define VERTEX_TEXTURES" : "", "#define GAMMA_FACTOR " + g, "#define MAX_BONES " + n.maxBones, n.useFog && n.fog ? "#define USE_FOG" : "", n.useFog && n.fogExp2 ? "#define FOG_EXP2" : "", n.map ? "#define USE_MAP" : "", n.envMap ? "#define USE_ENVMAP" : "", n.envMap ? "#define " + f : "", n.lightMap ? "#define USE_LIGHTMAP" : "", n.aoMap ? "#define USE_AOMAP" : "", n.emissiveMap ? "#define USE_EMISSIVEMAP" : "", n.bumpMap ? "#define USE_BUMPMAP" : "", n.normalMap ? "#define USE_NORMALMAP" : "", n.normalMap && n.objectSpaceNormalMap ? "#define OBJECTSPACE_NORMALMAP" : "", n.normalMap && n.tangentSpaceNormalMap ? "#define TANGENTSPACE_NORMALMAP" : "", n.clearcoatMap ? "#define USE_CLEARCOATMAP" : "", n.clearcoatRoughnessMap ? "#define USE_CLEARCOAT_ROUGHNESSMAP" : "", n.clearcoatNormalMap ? "#define USE_CLEARCOAT_NORMALMAP" : "", n.displacementMap && n.supportsVertexTextures ? "#define USE_DISPLACEMENTMAP" : "", n.specularMap ? "#define USE_SPECULARMAP" : "", n.roughnessMap ? "#define USE_ROUGHNESSMAP" : "", n.metalnessMap ? "#define USE_METALNESSMAP" : "", n.alphaMap ? "#define USE_ALPHAMAP" : "", n.vertexTangents ? "#define USE_TANGENT" : "", n.vertexColors ? "#define USE_COLOR" : "", n.vertexUvs ? "#define USE_UV" : "", n.uvsVertexOnly ? "#define UVS_VERTEX_ONLY" : "", n.flatShading ? "#define FLAT_SHADED" : "", n.skinning ? "#define USE_SKINNING" : "", n.useVertexTexture ? "#define BONE_TEXTURE" : "", n.morphTargets ? "#define USE_MORPHTARGETS" : "", n.morphNormals && !1 === n.flatShading ? "#define USE_MORPHNORMALS" : "", n.doubleSided ? "#define DOUBLE_SIDED" : "", n.flipSided ? "#define FLIP_SIDED" : "", n.shadowMapEnabled ? "#define USE_SHADOWMAP" : "", n.shadowMapEnabled ? "#define " + p : "", n.sizeAttenuation ? "#define USE_SIZEATTENUATION" : "", n.logarithmicDepthBuffer ? "#define USE_LOGDEPTHBUF" : "", n.logarithmicDepthBuffer && n.rendererExtensionFragDepth ? "#define USE_LOGDEPTHBUF_EXT" : "", "uniform mat4 modelMatrix;", "uniform mat4 modelViewMatrix;", "uniform mat4 projectionMatrix;", "uniform mat4 viewMatrix;", "uniform mat3 normalMatrix;", "uniform vec3 cameraPosition;", "uniform bool isOrthographic;", "#ifdef USE_INSTANCING", " attribute mat4 instanceMatrix;", "#endif", "attribute vec3 position;", "attribute vec3 normal;", "attribute vec2 uv;", "#ifdef USE_TANGENT", "\tattribute vec4 tangent;", "#endif", "#ifdef USE_COLOR", "\tattribute vec3 color;", "#endif", "#ifdef USE_MORPHTARGETS", "\tattribute vec3 morphTarget0;", "\tattribute vec3 morphTarget1;", "\tattribute vec3 morphTarget2;", "\tattribute vec3 morphTarget3;", "\t#ifdef USE_MORPHNORMALS", "\t\tattribute vec3 morphNormal0;", "\t\tattribute vec3 morphNormal1;", "\t\tattribute vec3 morphNormal2;", "\t\tattribute vec3 morphNormal3;", "\t#else", "\t\tattribute vec3 morphTarget4;", "\t\tattribute vec3 morphTarget5;", "\t\tattribute vec3 morphTarget6;", "\t\tattribute vec3 morphTarget7;", "\t#endif", "#endif", "#ifdef USE_SKINNING", "\tattribute vec4 skinIndex;", "\tattribute vec4 skinWeight;", "#endif", "\n"].filter(ss).join("\n"),
        r = [v, ys(n), "#define SHADER_NAME " + n.shaderName, y, n.alphaTest ? "#define ALPHATEST " + n.alphaTest + (n.alphaTest % 1 ? "" : ".0") : "", "#define GAMMA_FACTOR " + g, n.useFog && n.fog ? "#define USE_FOG" : "", n.useFog && n.fogExp2 ? "#define FOG_EXP2" : "", n.map ? "#define USE_MAP" : "", n.matcap ? "#define USE_MATCAP" : "", n.envMap ? "#define USE_ENVMAP" : "", n.envMap ? "#define " + h : "", n.envMap ? "#define " + f : "", n.envMap ? "#define " + m : "", n.lightMap ? "#define USE_LIGHTMAP" : "", n.aoMap ? "#define USE_AOMAP" : "", n.emissiveMap ? "#define USE_EMISSIVEMAP" : "", n.bumpMap ? "#define USE_BUMPMAP" : "", n.normalMap ? "#define USE_NORMALMAP" : "", n.normalMap && n.objectSpaceNormalMap ? "#define OBJECTSPACE_NORMALMAP" : "", n.normalMap && n.tangentSpaceNormalMap ? "#define TANGENTSPACE_NORMALMAP" : "", n.clearcoatMap ? "#define USE_CLEARCOATMAP" : "", n.clearcoatRoughnessMap ? "#define USE_CLEARCOAT_ROUGHNESSMAP" : "", n.clearcoatNormalMap ? "#define USE_CLEARCOAT_NORMALMAP" : "", n.specularMap ? "#define USE_SPECULARMAP" : "", n.roughnessMap ? "#define USE_ROUGHNESSMAP" : "", n.metalnessMap ? "#define USE_METALNESSMAP" : "", n.alphaMap ? "#define USE_ALPHAMAP" : "", n.sheen ? "#define USE_SHEEN" : "", n.vertexTangents ? "#define USE_TANGENT" : "", n.vertexColors ? "#define USE_COLOR" : "", n.vertexUvs ? "#define USE_UV" : "", n.uvsVertexOnly ? "#define UVS_VERTEX_ONLY" : "", n.gradientMap ? "#define USE_GRADIENTMAP" : "", n.flatShading ? "#define FLAT_SHADED" : "", n.doubleSided ? "#define DOUBLE_SIDED" : "", n.flipSided ? "#define FLIP_SIDED" : "", n.shadowMapEnabled ? "#define USE_SHADOWMAP" : "", n.shadowMapEnabled ? "#define " + p : "", n.premultipliedAlpha ? "#define PREMULTIPLIED_ALPHA" : "", n.physicallyCorrectLights ? "#define PHYSICALLY_CORRECT_LIGHTS" : "", n.logarithmicDepthBuffer ? "#define USE_LOGDEPTHBUF" : "", n.logarithmicDepthBuffer && n.rendererExtensionFragDepth ? "#define USE_LOGDEPTHBUF_EXT" : "", (n.extensionShaderTextureLOD || n.envMap) && n.rendererExtensionShaderTextureLod ? "#define TEXTURE_LOD_EXT" : "", "uniform mat4 viewMatrix;", "uniform vec3 cameraPosition;", "uniform bool isOrthographic;", n.toneMapping !== ut ? "#define TONE_MAPPING" : "", n.toneMapping !== ut ? Ho.tonemapping_pars_fragment : "", n.toneMapping !== ut ? as("toneMapping", n.toneMapping) : "", n.dithering ? "#define DITHERING" : "", n.outputEncoding || n.mapEncoding || n.matcapEncoding || n.envMapEncoding || n.emissiveMapEncoding || n.lightMapEncoding ? Ho.encodings_pars_fragment : "", n.mapEncoding ? os("mapTexelToLinear", n.mapEncoding) : "", n.matcapEncoding ? os("matcapTexelToLinear", n.matcapEncoding) : "", n.envMapEncoding ? os("envMapTexelToLinear", n.envMapEncoding) : "", n.emissiveMapEncoding ? os("emissiveMapTexelToLinear", n.emissiveMapEncoding) : "", n.lightMapEncoding ? os("lightMapTexelToLinear", n.lightMapEncoding) : "", n.outputEncoding ? (o = "linearToOutputTexel",
        a = n.outputEncoding,
        s = is(a),
        "vec4 " + o + "( vec4 value ) { return LinearTo" + s[0] + s[1] + "; }") : "", n.depthPacking ? "#define DEPTH_PACKING " + n.depthPacking : "", "\n"].filter(ss).join("\n")),
        u = ls(u = cs(u = ds(u), n), n),
        d = ls(d = cs(d = ds(d), n), n),
        u = ms(u),
        d = ms(d),
        n.isWebGL2 && !n.isRawShaderMaterial) {
            var w = !1
              , S = /^\s*#version\s+300\s+es\s*\n/;
            n.isShaderMaterial && null !== u.match(S) && null !== d.match(S) && (w = !0,
            u = u.replace(S, ""),
            d = d.replace(S, "")),
            i = ["#version 300 es\n", "#define attribute in", "#define varying out", "#define texture2D texture"].join("\n") + "\n" + i,
            r = ["#version 300 es\n", "#define varying in", w ? "" : "out highp vec4 pc_fragColor;", w ? "" : "#define gl_FragColor pc_fragColor", "#define gl_FragDepthEXT gl_FragDepth", "#define texture2D texture", "#define textureCube texture", "#define texture2DProj textureProj", "#define texture2DLodEXT textureLod", "#define texture2DProjLodEXT textureProjLod", "#define textureCubeLodEXT textureLod", "#define texture2DGradEXT textureGrad", "#define texture2DProjGradEXT textureProjGrad", "#define textureCubeGradEXT textureGrad"].join("\n") + "\n" + r
        }
        var x, A, T = r + d, O = es(c, 35633, i + u), _ = es(c, 35632, T);
        if (c.attachShader(b, O),
        c.attachShader(b, _),
        void 0 !== n.index0AttributeName ? c.bindAttribLocation(b, 0, n.index0AttributeName) : !0 === n.morphTargets && c.bindAttribLocation(b, 0, "position"),
        c.linkProgram(b),
        t.debug.checkShaderErrors) {
            var P = c.getProgramInfoLog(b).trim()
              , I = c.getShaderInfoLog(O).trim()
              , k = c.getShaderInfoLog(_).trim()
              , D = !0
              , R = !0;
            if (!1 === c.getProgramParameter(b, 35714)) {
                D = !1;
                var L = rs(c, O, "vertex")
                  , N = rs(c, _, "fragment");
                console.error("THREE.WebGLProgram: shader error: ", c.getError(), "35715", c.getProgramParameter(b, 35715), "gl.getProgramInfoLog", P, L, N)
            } else
                "" !== P ? console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()", P) : "" !== I && "" !== k || (R = !1);
            R && (this.diagnostics = {
                runnable: D,
                programLog: P,
                vertexShader: {
                    log: I,
                    prefix: i
                },
                fragmentShader: {
                    log: k,
                    prefix: r
                }
            })
        }
        return c.detachShader(b, O),
        c.detachShader(b, _),
        c.deleteShader(O),
        c.deleteShader(_),
        this.getUniforms = function() {
            return void 0 === x && (x = new ts(c,b)),
            x
        }
        ,
        this.getAttributes = function() {
            return void 0 === A && (A = function(t, e) {
                for (var n = {}, i = t.getProgramParameter(e, 35721), r = 0; r < i; r++) {
                    var o = t.getActiveAttrib(e, r).name;
                    n[o] = t.getAttribLocation(e, o)
                }
                return n
            }(c, b)),
            A
        }
        ,
        this.destroy = function() {
            c.deleteProgram(b),
            this.program = void 0
        }
        ,
        this.name = n.shaderName,
        this.id = ns++,
        this.cacheKey = e,
        this.usedTimes = 1,
        this.program = b,
        this.vertexShader = O,
        this.fragmentShader = _,
        this
    }
    function ws(t, e, n) {
        var i = []
          , r = n.isWebGL2
          , o = n.logarithmicDepthBuffer
          , a = n.floatVertexTextures
          , s = n.precision
          , c = n.maxVertexUniforms
          , l = n.vertexTextures
          , u = {
            MeshDepthMaterial: "depth",
            MeshDistanceMaterial: "distanceRGBA",
            MeshNormalMaterial: "normal",
            MeshBasicMaterial: "basic",
            MeshLambertMaterial: "lambert",
            MeshPhongMaterial: "phong",
            MeshToonMaterial: "toon",
            MeshStandardMaterial: "physical",
            MeshPhysicalMaterial: "physical",
            MeshMatcapMaterial: "matcap",
            LineBasicMaterial: "basic",
            LineDashedMaterial: "dashed",
            PointsMaterial: "points",
            ShadowMaterial: "shadow",
            SpriteMaterial: "sprite"
        }
          , d = ["precision", "isWebGL2", "supportsVertexTextures", "outputEncoding", "instancing", "map", "mapEncoding", "matcap", "matcapEncoding", "envMap", "envMapMode", "envMapEncoding", "envMapCubeUV", "lightMap", "lightMapEncoding", "aoMap", "emissiveMap", "emissiveMapEncoding", "bumpMap", "normalMap", "objectSpaceNormalMap", "tangentSpaceNormalMap", "clearcoatMap", "clearcoatRoughnessMap", "clearcoatNormalMap", "displacementMap", "specularMap", "roughnessMap", "metalnessMap", "gradientMap", "alphaMap", "combine", "vertexColors", "vertexTangents", "vertexUvs", "uvsVertexOnly", "fog", "useFog", "fogExp2", "flatShading", "sizeAttenuation", "logarithmicDepthBuffer", "skinning", "maxBones", "useVertexTexture", "morphTargets", "morphNormals", "maxMorphTargets", "maxMorphNormals", "premultipliedAlpha", "numDirLights", "numPointLights", "numSpotLights", "numHemiLights", "numRectAreaLights", "numDirLightShadows", "numPointLightShadows", "numSpotLightShadows", "shadowMapEnabled", "shadowMapType", "toneMapping", "physicallyCorrectLights", "alphaTest", "doubleSided", "flipSided", "numClippingPlanes", "numClipIntersection", "depthPacking", "dithering", "sheen"];
        function p(t) {
            var e;
            return t ? t.isTexture ? e = t.encoding : t.isWebGLRenderTarget && (console.warn("THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead."),
            e = t.texture.encoding) : e = cn,
            e
        }
        this.getParameters = function(i, d, h, f, m, g, v) {
            var y = f.fog
              , b = i.isMeshStandardMaterial ? f.environment : null
              , w = i.envMap || b
              , S = u[i.type]
              , x = v.isSkinnedMesh ? function(t) {
                var e = t.skeleton.bones;
                if (a)
                    return 1024;
                var n = c
                  , i = Math.floor((n - 20) / 4)
                  , r = Math.min(i, e.length);
                return r < e.length ? (console.warn("THREE.WebGLRenderer: Skeleton has " + e.length + " bones. This GPU supports " + r + "."),
                0) : r
            }(v) : 0;
            null !== i.precision && (s = n.getMaxPrecision(i.precision)) !== i.precision && console.warn("THREE.WebGLProgram.getParameters:", i.precision, "not supported, using", s, "instead.");
            var M = function(t, e) {
                var n;
                if (e) {
                    var i = Wo[e];
                    n = {
                        name: t.type,
                        uniforms: _o.clone(i.uniforms),
                        vertexShader: i.vertexShader,
                        fragmentShader: i.fragmentShader
                    }
                } else
                    n = {
                        name: t.type,
                        uniforms: t.uniforms,
                        vertexShader: t.vertexShader,
                        fragmentShader: t.fragmentShader
                    };
                return n
            }(i, S);
            i.onBeforeCompile(M, t);
            var E = t.getRenderTarget();
            return {
                isWebGL2: r,
                shaderID: S,
                shaderName: M.name,
                uniforms: M.uniforms,
                vertexShader: M.vertexShader,
                fragmentShader: M.fragmentShader,
                defines: i.defines,
                isRawShaderMaterial: i.isRawShaderMaterial,
                isShaderMaterial: i.isShaderMaterial,
                precision: s,
                instancing: !0 === v.isInstancedMesh,
                supportsVertexTextures: l,
                outputEncoding: null !== E ? p(E.texture) : t.outputEncoding,
                map: !!i.map,
                mapEncoding: p(i.map),
                matcap: !!i.matcap,
                matcapEncoding: p(i.matcap),
                envMap: !!w,
                envMapMode: w && w.mapping,
                envMapEncoding: p(w),
                envMapCubeUV: !!w && (w.mapping === xt || w.mapping === Mt),
                lightMap: !!i.lightMap,
                lightMapEncoding: p(i.lightMap),
                aoMap: !!i.aoMap,
                emissiveMap: !!i.emissiveMap,
                emissiveMapEncoding: p(i.emissiveMap),
                bumpMap: !!i.bumpMap,
                normalMap: !!i.normalMap,
                objectSpaceNormalMap: i.normalMapType === bn,
                tangentSpaceNormalMap: i.normalMapType === yn,
                clearcoatMap: !!i.clearcoatMap,
                clearcoatRoughnessMap: !!i.clearcoatRoughnessMap,
                clearcoatNormalMap: !!i.clearcoatNormalMap,
                displacementMap: !!i.displacementMap,
                roughnessMap: !!i.roughnessMap,
                metalnessMap: !!i.metalnessMap,
                specularMap: !!i.specularMap,
                alphaMap: !!i.alphaMap,
                gradientMap: !!i.gradientMap,
                sheen: !!i.sheen,
                combine: i.combine,
                vertexTangents: i.normalMap && i.vertexTangents,
                vertexColors: i.vertexColors,
                vertexUvs: !!(i.map || i.bumpMap || i.normalMap || i.specularMap || i.alphaMap || i.emissiveMap || i.roughnessMap || i.metalnessMap || i.clearcoatMap || i.clearcoatRoughnessMap || i.clearcoatNormalMap || i.displacementMap),
                uvsVertexOnly: !(i.map || i.bumpMap || i.normalMap || i.specularMap || i.alphaMap || i.emissiveMap || i.roughnessMap || i.metalnessMap || i.clearcoatNormalMap || !i.displacementMap),
                fog: !!y,
                useFog: i.fog,
                fogExp2: y && y.isFogExp2,
                flatShading: i.flatShading,
                sizeAttenuation: i.sizeAttenuation,
                logarithmicDepthBuffer: o,
                skinning: i.skinning && x > 0,
                maxBones: x,
                useVertexTexture: a,
                morphTargets: i.morphTargets,
                morphNormals: i.morphNormals,
                maxMorphTargets: t.maxMorphTargets,
                maxMorphNormals: t.maxMorphNormals,
                numDirLights: d.directional.length,
                numPointLights: d.point.length,
                numSpotLights: d.spot.length,
                numRectAreaLights: d.rectArea.length,
                numHemiLights: d.hemi.length,
                numDirLightShadows: d.directionalShadowMap.length,
                numPointLightShadows: d.pointShadowMap.length,
                numSpotLightShadows: d.spotShadowMap.length,
                numClippingPlanes: m,
                numClipIntersection: g,
                dithering: i.dithering,
                shadowMapEnabled: t.shadowMap.enabled && h.length > 0,
                shadowMapType: t.shadowMap.type,
                toneMapping: i.toneMapped ? t.toneMapping : ut,
                physicallyCorrectLights: t.physicallyCorrectLights,
                premultipliedAlpha: i.premultipliedAlpha,
                alphaTest: i.alphaTest,
                doubleSided: i.side === O,
                flipSided: i.side === T,
                depthPacking: void 0 !== i.depthPacking && i.depthPacking,
                index0AttributeName: i.index0AttributeName,
                extensionDerivatives: i.extensions && i.extensions.derivatives,
                extensionFragDepth: i.extensions && i.extensions.fragDepth,
                extensionDrawBuffers: i.extensions && i.extensions.drawBuffers,
                extensionShaderTextureLOD: i.extensions && i.extensions.shaderTextureLOD,
                rendererExtensionFragDepth: r || null !== e.get("EXT_frag_depth"),
                rendererExtensionDrawBuffers: r || null !== e.get("WEBGL_draw_buffers"),
                rendererExtensionShaderTextureLod: r || null !== e.get("EXT_shader_texture_lod"),
                onBeforeCompile: i.onBeforeCompile
            }
        }
        ,
        this.getProgramCacheKey = function(e) {
            var n = [];
            if (e.shaderID ? n.push(e.shaderID) : (n.push(e.fragmentShader),
            n.push(e.vertexShader)),
            void 0 !== e.defines)
                for (var i in e.defines)
                    n.push(i),
                    n.push(e.defines[i]);
            if (void 0 === e.isRawShaderMaterial) {
                for (var r = 0; r < d.length; r++)
                    n.push(e[d[r]]);
                n.push(t.outputEncoding),
                n.push(t.gammaFactor)
            }
            return n.push(e.onBeforeCompile.toString()),
            n.join()
        }
        ,
        this.acquireProgram = function(e, n) {
            for (var r, o = 0, a = i.length; o < a; o++) {
                var s = i[o];
                if (s.cacheKey === n) {
                    ++(r = s).usedTimes;
                    break
                }
            }
            return void 0 === r && (r = new bs(t,n,e),
            i.push(r)),
            r
        }
        ,
        this.releaseProgram = function(t) {
            if (0 == --t.usedTimes) {
                var e = i.indexOf(t);
                i[e] = i[i.length - 1],
                i.pop(),
                t.destroy()
            }
        }
        ,
        this.programs = i
    }
    function Ss() {
        var t = new WeakMap;
        return {
            get: function(e) {
                var n = t.get(e);
                return void 0 === n && (n = {},
                t.set(e, n)),
                n
            },
            remove: function(e) {
                t.delete(e)
            },
            update: function(e, n, i) {
                t.get(e)[n] = i
            },
            dispose: function() {
                t = new WeakMap
            }
        }
    }
    function xs(t, e) {
        return t.groupOrder !== e.groupOrder ? t.groupOrder - e.groupOrder : t.renderOrder !== e.renderOrder ? t.renderOrder - e.renderOrder : t.program !== e.program ? t.program.id - e.program.id : t.material.id !== e.material.id ? t.material.id - e.material.id : t.z !== e.z ? t.z - e.z : t.id - e.id
    }
    function Ms(t, e) {
        return t.groupOrder !== e.groupOrder ? t.groupOrder - e.groupOrder : t.renderOrder !== e.renderOrder ? t.renderOrder - e.renderOrder : t.z !== e.z ? e.z - t.z : t.id - e.id
    }
    function Es() {
        var t = []
          , e = 0
          , n = []
          , i = []
          , r = {
            id: -1
        };
        function o(n, i, o, a, s, c) {
            var l = t[e];
            return void 0 === l ? (l = {
                id: n.id,
                object: n,
                geometry: i,
                material: o,
                program: o.program || r,
                groupOrder: a,
                renderOrder: n.renderOrder,
                z: s,
                group: c
            },
            t[e] = l) : (l.id = n.id,
            l.object = n,
            l.geometry = i,
            l.material = o,
            l.program = o.program || r,
            l.groupOrder = a,
            l.renderOrder = n.renderOrder,
            l.z = s,
            l.group = c),
            e++,
            l
        }
        return {
            opaque: n,
            transparent: i,
            init: function() {
                e = 0,
                n.length = 0,
                i.length = 0
            },
            push: function(t, e, r, a, s, c) {
                var l = o(t, e, r, a, s, c);
                (!0 === r.transparent ? i : n).push(l)
            },
            unshift: function(t, e, r, a, s, c) {
                var l = o(t, e, r, a, s, c);
                (!0 === r.transparent ? i : n).unshift(l)
            },
            finish: function() {
                for (var n = e, i = t.length; n < i; n++) {
                    var r = t[n];
                    if (null === r.id)
                        break;
                    r.id = null,
                    r.object = null,
                    r.geometry = null,
                    r.material = null,
                    r.program = null,
                    r.group = null
                }
            },
            sort: function(t, e) {
                n.length > 1 && n.sort(t || xs),
                i.length > 1 && i.sort(e || Ms)
            }
        }
    }
    function Cs() {
        var t = new WeakMap;
        function e(n) {
            var i = n.target;
            i.removeEventListener("dispose", e),
            t.delete(i)
        }
        return {
            get: function(n, i) {
                var r, o = t.get(n);
                return void 0 === o ? (r = new Es,
                t.set(n, new WeakMap),
                t.get(n).set(i, r),
                n.addEventListener("dispose", e)) : void 0 === (r = o.get(i)) && (r = new Es,
                o.set(i, r)),
                r
            },
            dispose: function() {
                t = new WeakMap
            }
        }
    }
    function As() {
        var t = {};
        return {
            get: function(e) {
                if (void 0 !== t[e.id])
                    return t[e.id];
                var n;
                switch (e.type) {
                case "DirectionalLight":
                    n = {
                        direction: new si,
                        color: new Er
                    };
                    break;
                case "SpotLight":
                    n = {
                        position: new si,
                        direction: new si,
                        color: new Er,
                        distance: 0,
                        coneCos: 0,
                        penumbraCos: 0,
                        decay: 0
                    };
                    break;
                case "PointLight":
                    n = {
                        position: new si,
                        color: new Er,
                        distance: 0,
                        decay: 0
                    };
                    break;
                case "HemisphereLight":
                    n = {
                        direction: new si,
                        skyColor: new Er,
                        groundColor: new Er
                    };
                    break;
                case "RectAreaLight":
                    n = {
                        color: new Er,
                        position: new si,
                        halfWidth: new si,
                        halfHeight: new si
                    }
                }
                return t[e.id] = n,
                n
            }
        }
    }
    var Ts = 0;
    function Os(t, e) {
        return (e.castShadow ? 1 : 0) - (t.castShadow ? 1 : 0)
    }
    function _s() {
        for (var t, e = new As, n = (t = {},
        {
            get: function(e) {
                if (void 0 !== t[e.id])
                    return t[e.id];
                var n;
                switch (e.type) {
                case "DirectionalLight":
                case "SpotLight":
                    n = {
                        shadowBias: 0,
                        shadowRadius: 1,
                        shadowMapSize: new Zn
                    };
                    break;
                case "PointLight":
                    n = {
                        shadowBias: 0,
                        shadowRadius: 1,
                        shadowMapSize: new Zn,
                        shadowCameraNear: 1,
                        shadowCameraFar: 1e3
                    }
                }
                return t[e.id] = n,
                n
            }
        }), i = {
            version: 0,
            hash: {
                directionalLength: -1,
                pointLength: -1,
                spotLength: -1,
                rectAreaLength: -1,
                hemiLength: -1,
                numDirectionalShadows: -1,
                numPointShadows: -1,
                numSpotShadows: -1
            },
            ambient: [0, 0, 0],
            probe: [],
            directional: [],
            directionalShadow: [],
            directionalShadowMap: [],
            directionalShadowMatrix: [],
            spot: [],
            spotShadow: [],
            spotShadowMap: [],
            spotShadowMatrix: [],
            rectArea: [],
            point: [],
            pointShadow: [],
            pointShadowMap: [],
            pointShadowMatrix: [],
            hemi: []
        }, r = 0; r < 9; r++)
            i.probe.push(new si);
        var o = new si
          , a = new mi
          , s = new mi;
        return {
            setup: function(t, r, c) {
                for (var l = 0, u = 0, d = 0, p = 0; p < 9; p++)
                    i.probe[p].set(0, 0, 0);
                var h = 0
                  , f = 0
                  , m = 0
                  , g = 0
                  , v = 0
                  , y = 0
                  , b = 0
                  , w = 0
                  , S = c.matrixWorldInverse;
                t.sort(Os),
                p = 0;
                for (var x = t.length; p < x; p++) {
                    var M = t[p]
                      , E = M.color
                      , C = M.intensity
                      , A = M.distance
                      , T = M.shadow && M.shadow.map ? M.shadow.map.texture : null;
                    if (M.isAmbientLight)
                        l += E.r * C,
                        u += E.g * C,
                        d += E.b * C;
                    else if (M.isLightProbe)
                        for (var O = 0; O < 9; O++)
                            i.probe[O].addScaledVector(M.sh.coefficients[O], C);
                    else if (M.isDirectionalLight) {
                        if ((I = e.get(M)).color.copy(M.color).multiplyScalar(M.intensity),
                        I.direction.setFromMatrixPosition(M.matrixWorld),
                        o.setFromMatrixPosition(M.target.matrixWorld),
                        I.direction.sub(o),
                        I.direction.transformDirection(S),
                        M.castShadow) {
                            var _ = M.shadow;
                            (P = n.get(M)).shadowBias = _.bias,
                            P.shadowRadius = _.radius,
                            P.shadowMapSize = _.mapSize,
                            i.directionalShadow[h] = P,
                            i.directionalShadowMap[h] = T,
                            i.directionalShadowMatrix[h] = M.shadow.matrix,
                            y++
                        }
                        i.directional[h] = I,
                        h++
                    } else if (M.isSpotLight) {
                        if ((I = e.get(M)).position.setFromMatrixPosition(M.matrixWorld),
                        I.position.applyMatrix4(S),
                        I.color.copy(E).multiplyScalar(C),
                        I.distance = A,
                        I.direction.setFromMatrixPosition(M.matrixWorld),
                        o.setFromMatrixPosition(M.target.matrixWorld),
                        I.direction.sub(o),
                        I.direction.transformDirection(S),
                        I.coneCos = Math.cos(M.angle),
                        I.penumbraCos = Math.cos(M.angle * (1 - M.penumbra)),
                        I.decay = M.decay,
                        M.castShadow) {
                            _ = M.shadow;
                            (P = n.get(M)).shadowBias = _.bias,
                            P.shadowRadius = _.radius,
                            P.shadowMapSize = _.mapSize,
                            i.spotShadow[m] = P,
                            i.spotShadowMap[m] = T,
                            i.spotShadowMatrix[m] = M.shadow.matrix,
                            w++
                        }
                        i.spot[m] = I,
                        m++
                    } else if (M.isRectAreaLight) {
                        (I = e.get(M)).color.copy(E).multiplyScalar(C),
                        I.position.setFromMatrixPosition(M.matrixWorld),
                        I.position.applyMatrix4(S),
                        s.identity(),
                        a.copy(M.matrixWorld),
                        a.premultiply(S),
                        s.extractRotation(a),
                        I.halfWidth.set(.5 * M.width, 0, 0),
                        I.halfHeight.set(0, .5 * M.height, 0),
                        I.halfWidth.applyMatrix4(s),
                        I.halfHeight.applyMatrix4(s),
                        i.rectArea[g] = I,
                        g++
                    } else if (M.isPointLight) {
                        if ((I = e.get(M)).position.setFromMatrixPosition(M.matrixWorld),
                        I.position.applyMatrix4(S),
                        I.color.copy(M.color).multiplyScalar(M.intensity),
                        I.distance = M.distance,
                        I.decay = M.decay,
                        M.castShadow) {
                            var P;
                            _ = M.shadow;
                            (P = n.get(M)).shadowBias = _.bias,
                            P.shadowRadius = _.radius,
                            P.shadowMapSize = _.mapSize,
                            P.shadowCameraNear = _.camera.near,
                            P.shadowCameraFar = _.camera.far,
                            i.pointShadow[f] = P,
                            i.pointShadowMap[f] = T,
                            i.pointShadowMatrix[f] = M.shadow.matrix,
                            b++
                        }
                        i.point[f] = I,
                        f++
                    } else if (M.isHemisphereLight) {
                        var I;
                        (I = e.get(M)).direction.setFromMatrixPosition(M.matrixWorld),
                        I.direction.transformDirection(S),
                        I.direction.normalize(),
                        I.skyColor.copy(M.color).multiplyScalar(C),
                        I.groundColor.copy(M.groundColor).multiplyScalar(C),
                        i.hemi[v] = I,
                        v++
                    }
                }
                i.ambient[0] = l,
                i.ambient[1] = u,
                i.ambient[2] = d;
                var k = i.hash;
                k.directionalLength === h && k.pointLength === f && k.spotLength === m && k.rectAreaLength === g && k.hemiLength === v && k.numDirectionalShadows === y && k.numPointShadows === b && k.numSpotShadows === w || (i.directional.length = h,
                i.spot.length = m,
                i.rectArea.length = g,
                i.point.length = f,
                i.hemi.length = v,
                i.directionalShadow.length = y,
                i.directionalShadowMap.length = y,
                i.pointShadow.length = b,
                i.pointShadowMap.length = b,
                i.spotShadow.length = w,
                i.spotShadowMap.length = w,
                i.directionalShadowMatrix.length = y,
                i.pointShadowMatrix.length = b,
                i.spotShadowMatrix.length = w,
                k.directionalLength = h,
                k.pointLength = f,
                k.spotLength = m,
                k.rectAreaLength = g,
                k.hemiLength = v,
                k.numDirectionalShadows = y,
                k.numPointShadows = b,
                k.numSpotShadows = w,
                i.version = Ts++)
            },
            state: i
        }
    }
    function Ps() {
        var t = new _s
          , e = []
          , n = [];
        return {
            init: function() {
                e.length = 0,
                n.length = 0
            },
            state: {
                lightsArray: e,
                shadowsArray: n,
                lights: t
            },
            setupLights: function(i) {
                t.setup(e, n, i)
            },
            pushLight: function(t) {
                e.push(t)
            },
            pushShadow: function(t) {
                n.push(t)
            }
        }
    }
    function Is() {
        var t = new WeakMap;
        function e(n) {
            var i = n.target;
            i.removeEventListener("dispose", e),
            t.delete(i)
        }
        return {
            get: function(n, i) {
                var r;
                return !1 === t.has(n) ? (r = new Ps,
                t.set(n, new WeakMap),
                t.get(n).set(i, r),
                n.addEventListener("dispose", e)) : !1 === t.get(n).has(i) ? (r = new Ps,
                t.get(n).set(i, r)) : r = t.get(n).get(i),
                r
            },
            dispose: function() {
                t = new WeakMap
            }
        }
    }
    function ks(t) {
        Pr.call(this),
        this.type = "MeshDepthMaterial",
        this.depthPacking = gn,
        this.skinning = !1,
        this.morphTargets = !1,
        this.map = null,
        this.alphaMap = null,
        this.displacementMap = null,
        this.displacementScale = 1,
        this.displacementBias = 0,
        this.wireframe = !1,
        this.wireframeLinewidth = 1,
        this.fog = !1,
        this.setValues(t)
    }
    function Ds(t) {
        Pr.call(this),
        this.type = "MeshDistanceMaterial",
        this.referencePosition = new si,
        this.nearDistance = 1,
        this.farDistance = 1e3,
        this.skinning = !1,
        this.morphTargets = !1,
        this.map = null,
        this.alphaMap = null,
        this.displacementMap = null,
        this.displacementScale = 1,
        this.displacementBias = 0,
        this.fog = !1,
        this.setValues(t)
    }
    ks.prototype = Object.create(Pr.prototype),
    ks.prototype.constructor = ks,
    ks.prototype.isMeshDepthMaterial = !0,
    ks.prototype.copy = function(t) {
        return Pr.prototype.copy.call(this, t),
        this.depthPacking = t.depthPacking,
        this.skinning = t.skinning,
        this.morphTargets = t.morphTargets,
        this.map = t.map,
        this.alphaMap = t.alphaMap,
        this.displacementMap = t.displacementMap,
        this.displacementScale = t.displacementScale,
        this.displacementBias = t.displacementBias,
        this.wireframe = t.wireframe,
        this.wireframeLinewidth = t.wireframeLinewidth,
        this
    }
    ,
    Ds.prototype = Object.create(Pr.prototype),
    Ds.prototype.constructor = Ds,
    Ds.prototype.isMeshDistanceMaterial = !0,
    Ds.prototype.copy = function(t) {
        return Pr.prototype.copy.call(this, t),
        this.referencePosition.copy(t.referencePosition),
        this.nearDistance = t.nearDistance,
        this.farDistance = t.farDistance,
        this.skinning = t.skinning,
        this.morphTargets = t.morphTargets,
        this.map = t.map,
        this.alphaMap = t.alphaMap,
        this.displacementMap = t.displacementMap,
        this.displacementScale = t.displacementScale,
        this.displacementBias = t.displacementBias,
        this
    }
    ;
    function Rs(t, e, n) {
        var i = new Vo
          , r = new Zn
          , o = new Zn
          , a = new ei
          , s = []
          , c = []
          , l = {}
          , u = {
            0: T,
            1: A,
            2: O
        }
          , d = new Po({
            defines: {
                SAMPLE_RATE: 2 / 8,
                HALF_SAMPLE_RATE: 1 / 8
            },
            uniforms: {
                shadow_pass: {
                    value: null
                },
                resolution: {
                    value: new Zn
                },
                radius: {
                    value: 4
                }
            },
            vertexShader: "void main() {\n\tgl_Position = vec4( position, 1.0 );\n}",
            fragmentShader: "uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include <packing>\nvoid main() {\n  float mean = 0.0;\n  float squared_mean = 0.0;\n\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy  ) / resolution ) );\n  for ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\n    #ifdef HORIZONAL_PASS\n      vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\n      mean += distribution.x;\n      squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n    #else\n      float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0,  i )  * radius ) / resolution ) );\n      mean += depth;\n      squared_mean += depth * depth;\n    #endif\n  }\n  mean = mean * HALF_SAMPLE_RATE;\n  squared_mean = squared_mean * HALF_SAMPLE_RATE;\n  float std_dev = sqrt( squared_mean - mean * mean );\n  gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}"
        })
          , p = d.clone();
        p.defines.HORIZONAL_PASS = 1;
        var h = new Qr;
        h.setAttribute("position", new Dr(new Float32Array([-1, -1, .5, 3, -1, .5, -1, 3, .5]),3));
        var f = new vo(h,d)
          , m = this;
        function g(n, i) {
            var r = e.update(f);
            d.uniforms.shadow_pass.value = n.map.texture,
            d.uniforms.resolution.value = n.mapSize,
            d.uniforms.radius.value = n.radius,
            t.setRenderTarget(n.mapPass),
            t.clear(),
            t.renderBufferDirect(i, null, r, d, f, null),
            p.uniforms.shadow_pass.value = n.mapPass.texture,
            p.uniforms.resolution.value = n.mapSize,
            p.uniforms.radius.value = n.radius,
            t.setRenderTarget(n.map),
            t.clear(),
            t.renderBufferDirect(i, null, r, p, f, null)
        }
        function v(t, e, n) {
            var i = t << 0 | e << 1 | n << 2
              , r = s[i];
            return void 0 === r && (r = new ks({
                depthPacking: vn,
                morphTargets: t,
                skinning: e
            }),
            s[i] = r),
            r
        }
        function y(t, e, n) {
            var i = t << 0 | e << 1 | n << 2
              , r = c[i];
            return void 0 === r && (r = new Ds({
                morphTargets: t,
                skinning: e
            }),
            c[i] = r),
            r
        }
        function b(e, n, i, r, o, a) {
            var s = e.geometry
              , c = null
              , d = v
              , p = e.customDepthMaterial;
            if (!0 === i.isPointLight && (d = y,
            p = e.customDistanceMaterial),
            void 0 === p) {
                var h = !1;
                !0 === n.morphTargets && (!0 === s.isBufferGeometry ? h = s.morphAttributes && s.morphAttributes.position && s.morphAttributes.position.length > 0 : !0 === s.isGeometry && (h = s.morphTargets && s.morphTargets.length > 0));
                var f = !1;
                !0 === e.isSkinnedMesh && (!0 === n.skinning ? f = !0 : console.warn("THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:", e)),
                c = d(h, f, !0 === e.isInstancedMesh)
            } else
                c = p;
            if (t.localClippingEnabled && !0 === n.clipShadows && 0 !== n.clippingPlanes.length) {
                var m = c.uuid
                  , g = n.uuid
                  , b = l[m];
                void 0 === b && (b = {},
                l[m] = b);
                var w = b[g];
                void 0 === w && (w = c.clone(),
                b[g] = w),
                c = w
            }
            return c.visible = n.visible,
            c.wireframe = n.wireframe,
            c.side = a === C ? null !== n.shadowSide ? n.shadowSide : n.side : null !== n.shadowSide ? n.shadowSide : u[n.side],
            c.clipShadows = n.clipShadows,
            c.clippingPlanes = n.clippingPlanes,
            c.clipIntersection = n.clipIntersection,
            c.wireframeLinewidth = n.wireframeLinewidth,
            c.linewidth = n.linewidth,
            !0 === i.isPointLight && !0 === c.isMeshDistanceMaterial && (c.referencePosition.setFromMatrixPosition(i.matrixWorld),
            c.nearDistance = r,
            c.farDistance = o),
            c
        }
        function w(n, r, o, a, s) {
            if (!1 !== n.visible) {
                if (n.layers.test(r.layers) && (n.isMesh || n.isLine || n.isPoints) && (n.castShadow || n.receiveShadow && s === C) && (!n.frustumCulled || i.intersectsObject(n))) {
                    n.modelViewMatrix.multiplyMatrices(o.matrixWorldInverse, n.matrixWorld);
                    var c = e.update(n)
                      , l = n.material;
                    if (Array.isArray(l))
                        for (var u = c.groups, d = 0, p = u.length; d < p; d++) {
                            var h = u[d]
                              , f = l[h.materialIndex];
                            if (f && f.visible) {
                                var m = b(n, f, a, o.near, o.far, s);
                                t.renderBufferDirect(o, null, c, m, n, h)
                            }
                        }
                    else if (l.visible) {
                        m = b(n, l, a, o.near, o.far, s);
                        t.renderBufferDirect(o, null, c, m, n, null)
                    }
                }
                for (var g = n.children, v = 0, y = g.length; v < y; v++)
                    w(g[v], r, o, a, s)
            }
        }
        this.enabled = !1,
        this.autoUpdate = !0,
        this.needsUpdate = !1,
        this.type = M,
        this.render = function(e, s, c) {
            if (!1 !== m.enabled && (!1 !== m.autoUpdate || !1 !== m.needsUpdate) && 0 !== e.length) {
                var l = t.getRenderTarget()
                  , u = t.getActiveCubeFace()
                  , d = t.getActiveMipmapLevel()
                  , p = t.state;
                p.setBlending(I),
                p.buffers.color.setClear(1, 1, 1, 1),
                p.buffers.depth.setTest(!0),
                p.setScissorTest(!1);
                for (var h = 0, f = e.length; h < f; h++) {
                    var v = e[h]
                      , y = v.shadow;
                    if (void 0 !== y) {
                        r.copy(y.mapSize);
                        var b = y.getFrameExtents();
                        if (r.multiply(b),
                        o.copy(y.mapSize),
                        (r.x > n || r.y > n) && (console.warn("THREE.WebGLShadowMap:", v, "has shadow exceeding max texture size, reducing"),
                        r.x > n && (o.x = Math.floor(n / b.x),
                        r.x = o.x * b.x,
                        y.mapSize.x = o.x),
                        r.y > n && (o.y = Math.floor(n / b.y),
                        r.y = o.y * b.y,
                        y.mapSize.y = o.y)),
                        null === y.map && !y.isPointLightShadow && this.type === C) {
                            var S = {
                                minFilter: kt,
                                magFilter: kt,
                                format: Jt
                            };
                            y.map = new ni(r.x,r.y,S),
                            y.map.texture.name = v.name + ".shadowMap",
                            y.mapPass = new ni(r.x,r.y,S),
                            y.camera.updateProjectionMatrix()
                        }
                        if (null === y.map) {
                            S = {
                                minFilter: Tt,
                                magFilter: Tt,
                                format: Jt
                            };
                            y.map = new ni(r.x,r.y,S),
                            y.map.texture.name = v.name + ".shadowMap",
                            y.camera.updateProjectionMatrix()
                        }
                        t.setRenderTarget(y.map),
                        t.clear();
                        for (var x = y.getViewportCount(), M = 0; M < x; M++) {
                            var E = y.getViewport(M);
                            a.set(o.x * E.x, o.y * E.y, o.x * E.z, o.y * E.w),
                            p.viewport(a),
                            y.updateMatrices(v, M),
                            i = y.getFrustum(),
                            w(s, c, y.camera, v, this.type)
                        }
                        y.isPointLightShadow || this.type !== C || g(y, c)
                    } else
                        console.warn("THREE.WebGLShadowMap:", v, "has no shadow.")
                }
                m.needsUpdate = !1,
                t.setRenderTarget(l, u, d)
            }
        }
    }
    function Ls(t, e, n) {
        var i, o, a = n.isWebGL2;
        var s = new function() {
            var e = !1
              , n = new ei
              , i = null
              , r = new ei(0,0,0,0);
            return {
                setMask: function(n) {
                    i === n || e || (t.colorMask(n, n, n, n),
                    i = n)
                },
                setLocked: function(t) {
                    e = t
                },
                setClear: function(e, i, o, a, s) {
                    !0 === s && (e *= a,
                    i *= a,
                    o *= a),
                    n.set(e, i, o, a),
                    !1 === r.equals(n) && (t.clearColor(e, i, o, a),
                    r.copy(n))
                },
                reset: function() {
                    e = !1,
                    i = null,
                    r.set(-1, 0, 0, 0)
                }
            }
        }
          , c = new function() {
            var e = !1
              , n = null
              , i = null
              , r = null;
            return {
                setTest: function(t) {
                    t ? xt(2929) : Mt(2929)
                },
                setMask: function(i) {
                    n === i || e || (t.depthMask(i),
                    n = i)
                },
                setFunc: function(e) {
                    if (i !== e) {
                        if (e)
                            switch (e) {
                            case $:
                                t.depthFunc(512);
                                break;
                            case tt:
                                t.depthFunc(519);
                                break;
                            case et:
                                t.depthFunc(513);
                                break;
                            case nt:
                                t.depthFunc(515);
                                break;
                            case it:
                                t.depthFunc(514);
                                break;
                            case rt:
                                t.depthFunc(518);
                                break;
                            case ot:
                                t.depthFunc(516);
                                break;
                            case at:
                                t.depthFunc(517);
                                break;
                            default:
                                t.depthFunc(515)
                            }
                        else
                            t.depthFunc(515);
                        i = e
                    }
                },
                setLocked: function(t) {
                    e = t
                },
                setClear: function(e) {
                    r !== e && (t.clearDepth(e),
                    r = e)
                },
                reset: function() {
                    e = !1,
                    n = null,
                    i = null,
                    r = null
                }
            }
        }
          , l = new function() {
            var e = !1
              , n = null
              , i = null
              , r = null
              , o = null
              , a = null
              , s = null
              , c = null
              , l = null;
            return {
                setTest: function(t) {
                    e || (t ? xt(2960) : Mt(2960))
                },
                setMask: function(i) {
                    n === i || e || (t.stencilMask(i),
                    n = i)
                },
                setFunc: function(e, n, a) {
                    i === e && r === n && o === a || (t.stencilFunc(e, n, a),
                    i = e,
                    r = n,
                    o = a)
                },
                setOp: function(e, n, i) {
                    a === e && s === n && c === i || (t.stencilOp(e, n, i),
                    a = e,
                    s = n,
                    c = i)
                },
                setLocked: function(t) {
                    e = t
                },
                setClear: function(e) {
                    l !== e && (t.clearStencil(e),
                    l = e)
                },
                reset: function() {
                    e = !1,
                    n = null,
                    i = null,
                    r = null,
                    o = null,
                    a = null,
                    s = null,
                    c = null,
                    l = null
                }
            }
        }
          , u = t.getParameter(34921)
          , d = new Uint8Array(u)
          , p = new Uint8Array(u)
          , h = new Uint8Array(u)
          , f = {}
          , m = null
          , b = null
          , w = null
          , S = null
          , x = null
          , M = null
          , E = null
          , C = null
          , A = null
          , _ = !1
          , P = null
          , st = null
          , ct = null
          , lt = null
          , ut = null
          , dt = t.getParameter(35661)
          , pt = !1
          , ht = 0
          , ft = t.getParameter(7938);
        -1 !== ft.indexOf("WebGL") ? (ht = parseFloat(/^WebGL\ ([0-9])/.exec(ft)[1]),
        pt = ht >= 1) : -1 !== ft.indexOf("OpenGL ES") && (ht = parseFloat(/^OpenGL\ ES\ ([0-9])/.exec(ft)[1]),
        pt = ht >= 2);
        var mt = null
          , gt = {}
          , vt = new ei
          , yt = new ei;
        function bt(e, n, i) {
            var r = new Uint8Array(4)
              , o = t.createTexture();
            t.bindTexture(e, o),
            t.texParameteri(e, 10241, 9728),
            t.texParameteri(e, 10240, 9728);
            for (var a = 0; a < i; a++)
                t.texImage2D(n + a, 0, 6408, 1, 1, 0, 6408, 5121, r);
            return o
        }
        var wt = {};
        function St(n, i) {
            (d[n] = 1,
            0 === p[n] && (t.enableVertexAttribArray(n),
            p[n] = 1),
            h[n] !== i) && ((a ? t : e.get("ANGLE_instanced_arrays"))[a ? "vertexAttribDivisor" : "vertexAttribDivisorANGLE"](n, i),
            h[n] = i)
        }
        function xt(e) {
            !0 !== f[e] && (t.enable(e),
            f[e] = !0)
        }
        function Mt(e) {
            !1 !== f[e] && (t.disable(e),
            f[e] = !1)
        }
        wt[3553] = bt(3553, 3553, 1),
        wt[34067] = bt(34067, 34069, 6),
        s.setClear(0, 0, 0, 1),
        c.setClear(1),
        l.setClear(0),
        xt(2929),
        c.setFunc(nt),
        Ot(!1),
        _t(v),
        xt(2884),
        Tt(I);
        var Et = (r(i = {}, j, 32774),
        r(i, V, 32778),
        r(i, F, 32779),
        i);
        if (a)
            Et[U] = 32775,
            Et[B] = 32776;
        else {
            var Ct = e.get("EXT_blend_minmax");
            null !== Ct && (Et[U] = Ct.MIN_EXT,
            Et[B] = Ct.MAX_EXT)
        }
        var At = (r(o = {}, z, 0),
        r(o, G, 1),
        r(o, H, 768),
        r(o, q, 770),
        r(o, Q, 776),
        r(o, Z, 774),
        r(o, Y, 772),
        r(o, W, 769),
        r(o, X, 771),
        r(o, J, 775),
        r(o, K, 773),
        o);
        function Tt(e, n, i, r, o, a, s, c) {
            if (e !== I) {
                if (b || (xt(3042),
                b = !0),
                e === N)
                    o = o || n,
                    a = a || i,
                    s = s || r,
                    n === S && o === E || (t.blendEquationSeparate(Et[n], Et[o]),
                    S = n,
                    E = o),
                    i === x && r === M && a === C && s === A || (t.blendFuncSeparate(At[i], At[r], At[a], At[s]),
                    x = i,
                    M = r,
                    C = a,
                    A = s),
                    w = e,
                    _ = null;
                else if (e !== w || c !== _) {
                    if (S === j && E === j || (t.blendEquation(32774),
                    S = j,
                    E = j),
                    c)
                        switch (e) {
                        case k:
                            t.blendFuncSeparate(1, 771, 1, 771);
                            break;
                        case D:
                            t.blendFunc(1, 1);
                            break;
                        case R:
                            t.blendFuncSeparate(0, 0, 769, 771);
                            break;
                        case L:
                            t.blendFuncSeparate(0, 768, 0, 770);
                            break;
                        default:
                            console.error("THREE.WebGLState: Invalid blending: ", e)
                        }
                    else
                        switch (e) {
                        case k:
                            t.blendFuncSeparate(770, 771, 1, 771);
                            break;
                        case D:
                            t.blendFunc(770, 1);
                            break;
                        case R:
                            t.blendFunc(0, 769);
                            break;
                        case L:
                            t.blendFunc(0, 768);
                            break;
                        default:
                            console.error("THREE.WebGLState: Invalid blending: ", e)
                        }
                    x = null,
                    M = null,
                    C = null,
                    A = null,
                    w = e,
                    _ = c
                }
            } else
                b && (Mt(3042),
                b = !1)
        }
        function Ot(e) {
            P !== e && (e ? t.frontFace(2304) : t.frontFace(2305),
            P = e)
        }
        function _t(e) {
            e !== g ? (xt(2884),
            e !== st && (e === v ? t.cullFace(1029) : e === y ? t.cullFace(1028) : t.cullFace(1032))) : Mt(2884),
            st = e
        }
        function Pt(e, n, i) {
            e ? (xt(32823),
            lt === n && ut === i || (t.polygonOffset(n, i),
            lt = n,
            ut = i)) : Mt(32823)
        }
        function It(e) {
            void 0 === e && (e = 33984 + dt - 1),
            mt !== e && (t.activeTexture(e),
            mt = e)
        }
        return {
            buffers: {
                color: s,
                depth: c,
                stencil: l
            },
            initAttributes: function() {
                for (var t = 0, e = d.length; t < e; t++)
                    d[t] = 0
            },
            enableAttribute: function(t) {
                St(t, 0)
            },
            enableAttributeAndDivisor: St,
            disableUnusedAttributes: function() {
                for (var e = 0, n = p.length; e !== n; ++e)
                    p[e] !== d[e] && (t.disableVertexAttribArray(e),
                    p[e] = 0)
            },
            enable: xt,
            disable: Mt,
            useProgram: function(e) {
                return m !== e && (t.useProgram(e),
                m = e,
                !0)
            },
            setBlending: Tt,
            setMaterial: function(t, e) {
                t.side === O ? Mt(2884) : xt(2884);
                var n = t.side === T;
                e && (n = !n),
                Ot(n),
                t.blending === k && !1 === t.transparent ? Tt(I) : Tt(t.blending, t.blendEquation, t.blendSrc, t.blendDst, t.blendEquationAlpha, t.blendSrcAlpha, t.blendDstAlpha, t.premultipliedAlpha),
                c.setFunc(t.depthFunc),
                c.setTest(t.depthTest),
                c.setMask(t.depthWrite),
                s.setMask(t.colorWrite);
                var i = t.stencilWrite;
                l.setTest(i),
                i && (l.setMask(t.stencilWriteMask),
                l.setFunc(t.stencilFunc, t.stencilRef, t.stencilFuncMask),
                l.setOp(t.stencilFail, t.stencilZFail, t.stencilZPass)),
                Pt(t.polygonOffset, t.polygonOffsetFactor, t.polygonOffsetUnits)
            },
            setFlipSided: Ot,
            setCullFace: _t,
            setLineWidth: function(e) {
                e !== ct && (pt && t.lineWidth(e),
                ct = e)
            },
            setPolygonOffset: Pt,
            setScissorTest: function(t) {
                t ? xt(3089) : Mt(3089)
            },
            activeTexture: It,
            bindTexture: function(e, n) {
                null === mt && It();
                var i = gt[mt];
                void 0 === i && (i = {
                    type: void 0,
                    texture: void 0
                },
                gt[mt] = i),
                i.type === e && i.texture === n || (t.bindTexture(e, n || wt[e]),
                i.type = e,
                i.texture = n)
            },
            unbindTexture: function() {
                var e = gt[mt];
                void 0 !== e && void 0 !== e.type && (t.bindTexture(e.type, null),
                e.type = void 0,
                e.texture = void 0)
            },
            compressedTexImage2D: function() {
                try {
                    t.compressedTexImage2D.apply(t, arguments)
                } catch (t) {
                    console.error("THREE.WebGLState:", t)
                }
            },
            texImage2D: function() {
                try {
                    t.texImage2D.apply(t, arguments)
                } catch (t) {
                    console.error("THREE.WebGLState:", t)
                }
            },
            texImage3D: function() {
                try {
                    t.texImage3D.apply(t, arguments)
                } catch (t) {
                    console.error("THREE.WebGLState:", t)
                }
            },
            scissor: function(e) {
                !1 === vt.equals(e) && (t.scissor(e.x, e.y, e.z, e.w),
                vt.copy(e))
            },
            viewport: function(e) {
                !1 === yt.equals(e) && (t.viewport(e.x, e.y, e.z, e.w),
                yt.copy(e))
            },
            reset: function() {
                for (var e = 0; e < p.length; e++)
                    1 === p[e] && (t.disableVertexAttribArray(e),
                    p[e] = 0);
                f = {},
                mt = null,
                gt = {},
                m = null,
                w = null,
                P = null,
                st = null,
                s.reset(),
                c.reset(),
                l.reset()
            }
        }
    }
    function Ns(t, e, n, i, o, a, s) {
        var c, l, u, d = o.isWebGL2, p = o.maxTextures, h = o.maxCubemapSize, f = o.maxTextureSize, m = o.maxSamples, g = new WeakMap, v = !1;
        try {
            v = "undefined" != typeof OffscreenCanvas && null !== new OffscreenCanvas(1,1).getContext("2d")
        } catch (t) {}
        function y(t, e) {
            return v ? new OffscreenCanvas(t,e) : document.createElementNS("http://www.w3.org/1999/xhtml", "canvas")
        }
        function b(t, e, n, i) {
            var r = 1;
            if ((t.width > i || t.height > i) && (r = i / Math.max(t.width, t.height)),
            r < 1 || !0 === e) {
                if ("undefined" != typeof HTMLImageElement && t instanceof HTMLImageElement || "undefined" != typeof HTMLCanvasElement && t instanceof HTMLCanvasElement || "undefined" != typeof ImageBitmap && t instanceof ImageBitmap) {
                    var o = e ? Kn.floorPowerOfTwo : Math.floor
                      , a = o(r * t.width)
                      , s = o(r * t.height);
                    void 0 === u && (u = y(a, s));
                    var c = n ? y(a, s) : u;
                    return c.width = a,
                    c.height = s,
                    c.getContext("2d").drawImage(t, 0, 0, a, s),
                    console.warn("THREE.WebGLRenderer: Texture has been resized from (" + t.width + "x" + t.height + ") to (" + a + "x" + s + ")."),
                    c
                }
                return "data"in t && console.warn("THREE.WebGLRenderer: Image in DataTexture is too big (" + t.width + "x" + t.height + ")."),
                t
            }
            return t
        }
        function w(t) {
            return Kn.isPowerOfTwo(t.width) && Kn.isPowerOfTwo(t.height)
        }
        function S(t, e) {
            return t.generateMipmaps && e && t.minFilter !== Tt && t.minFilter !== kt
        }
        function x(e, n, r, o) {
            t.generateMipmap(e),
            i.get(n).__maxMipLevel = Math.log(Math.max(r, o)) * Math.LOG2E
        }
        function M(n, i, r) {
            if (!1 === d)
                return i;
            if (null !== n) {
                if (void 0 !== t[n])
                    return t[n];
                console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '" + n + "'")
            }
            var o = i;
            return 6403 === i && (5126 === r && (o = 33326),
            5131 === r && (o = 33325),
            5121 === r && (o = 33321)),
            6407 === i && (5126 === r && (o = 34837),
            5131 === r && (o = 34843),
            5121 === r && (o = 32849)),
            6408 === i && (5126 === r && (o = 34836),
            5131 === r && (o = 34842),
            5121 === r && (o = 32856)),
            33325 !== o && 33326 !== o && 34842 !== o && 34836 !== o || e.get("EXT_color_buffer_float"),
            o
        }
        function E(t) {
            return t === Tt || t === Ot || t === Pt ? 9728 : 9729
        }
        function C(e) {
            var n = e.target;
            n.removeEventListener("dispose", C),
            function(e) {
                var n = i.get(e);
                if (void 0 === n.__webglInit)
                    return;
                t.deleteTexture(n.__webglTexture),
                i.remove(e)
            }(n),
            n.isVideoTexture && g.delete(n),
            s.memory.textures--
        }
        function A(e) {
            var n = e.target;
            n.removeEventListener("dispose", A),
            function(e) {
                var n = i.get(e)
                  , r = i.get(e.texture);
                if (!e)
                    return;
                void 0 !== r.__webglTexture && t.deleteTexture(r.__webglTexture);
                e.depthTexture && e.depthTexture.dispose();
                if (e.isWebGLCubeRenderTarget)
                    for (var o = 0; o < 6; o++)
                        t.deleteFramebuffer(n.__webglFramebuffer[o]),
                        n.__webglDepthbuffer && t.deleteRenderbuffer(n.__webglDepthbuffer[o]);
                else
                    t.deleteFramebuffer(n.__webglFramebuffer),
                    n.__webglDepthbuffer && t.deleteRenderbuffer(n.__webglDepthbuffer),
                    n.__webglMultisampledFramebuffer && t.deleteFramebuffer(n.__webglMultisampledFramebuffer),
                    n.__webglColorRenderbuffer && t.deleteRenderbuffer(n.__webglColorRenderbuffer),
                    n.__webglDepthRenderbuffer && t.deleteRenderbuffer(n.__webglDepthRenderbuffer);
                i.remove(e.texture),
                i.remove(e)
            }(n),
            s.memory.textures--
        }
        var T = 0;
        function O(t, e) {
            var r = i.get(t);
            if (t.isVideoTexture && function(t) {
                var e = s.render.frame;
                g.get(t) !== e && (g.set(t, e),
                t.update())
            }(t),
            t.version > 0 && r.__version !== t.version) {
                var o = t.image;
                if (void 0 === o)
                    console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined");
                else {
                    if (!1 !== o.complete)
                        return void L(r, t, e);
                    console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")
                }
            }
            n.activeTexture(33984 + e),
            n.bindTexture(3553, r.__webglTexture)
        }
        function _(e, r) {
            if (6 === e.image.length) {
                var o = i.get(e);
                if (e.version > 0 && o.__version !== e.version) {
                    R(o, e),
                    n.activeTexture(33984 + r),
                    n.bindTexture(34067, o.__webglTexture),
                    t.pixelStorei(37440, e.flipY);
                    for (var s = e && (e.isCompressedTexture || e.image[0].isCompressedTexture), c = e.image[0] && e.image[0].isDataTexture, l = [], u = 0; u < 6; u++)
                        l[u] = s || c ? c ? e.image[u].image : e.image[u] : b(e.image[u], !1, !0, h);
                    var p, f = l[0], m = w(f) || d, g = a.convert(e.format), v = a.convert(e.type), y = M(e.internalFormat, g, v);
                    if (D(34067, e, m),
                    s) {
                        for (u = 0; u < 6; u++) {
                            p = l[u].mipmaps;
                            for (var E = 0; E < p.length; E++) {
                                var C = p[E];
                                e.format !== Jt && e.format !== Zt ? null !== g ? n.compressedTexImage2D(34069 + u, E, y, C.width, C.height, 0, C.data) : console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()") : n.texImage2D(34069 + u, E, y, C.width, C.height, 0, g, v, C.data)
                            }
                        }
                        o.__maxMipLevel = p.length - 1
                    } else {
                        p = e.mipmaps;
                        for (u = 0; u < 6; u++)
                            if (c) {
                                n.texImage2D(34069 + u, 0, y, l[u].width, l[u].height, 0, g, v, l[u].data);
                                for (E = 0; E < p.length; E++) {
                                    var A = (C = p[E]).image[u].image;
                                    n.texImage2D(34069 + u, E + 1, y, A.width, A.height, 0, g, v, A.data)
                                }
                            } else {
                                n.texImage2D(34069 + u, 0, y, g, v, l[u]);
                                for (E = 0; E < p.length; E++) {
                                    C = p[E];
                                    n.texImage2D(34069 + u, E + 1, y, g, v, C.image[u])
                                }
                            }
                        o.__maxMipLevel = p.length
                    }
                    S(e, m) && x(34067, e, f.width, f.height),
                    o.__version = e.version,
                    e.onUpdate && e.onUpdate(e)
                } else
                    n.activeTexture(33984 + r),
                    n.bindTexture(34067, o.__webglTexture)
            }
        }
        function P(t, e) {
            n.activeTexture(33984 + e),
            n.bindTexture(34067, i.get(t).__webglTexture)
        }
        var I = (r(c = {}, Et, 10497),
        r(c, Ct, 33071),
        r(c, At, 33648),
        c)
          , k = (r(l = {}, Tt, 9728),
        r(l, Ot, 9984),
        r(l, Pt, 9986),
        r(l, kt, 9729),
        r(l, Dt, 9985),
        r(l, Lt, 9987),
        l);
        function D(n, r, a) {
            a ? (t.texParameteri(n, 10242, I[r.wrapS]),
            t.texParameteri(n, 10243, I[r.wrapT]),
            32879 !== n && 35866 !== n || t.texParameteri(n, 32882, I[r.wrapR]),
            t.texParameteri(n, 10240, k[r.magFilter]),
            t.texParameteri(n, 10241, k[r.minFilter])) : (t.texParameteri(n, 10242, 33071),
            t.texParameteri(n, 10243, 33071),
            32879 !== n && 35866 !== n || t.texParameteri(n, 32882, 33071),
            r.wrapS === Ct && r.wrapT === Ct || console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),
            t.texParameteri(n, 10240, E(r.magFilter)),
            t.texParameteri(n, 10241, E(r.minFilter)),
            r.minFilter !== Tt && r.minFilter !== kt && console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter."));
            var s = e.get("EXT_texture_filter_anisotropic");
            if (s) {
                if (r.type === Gt && null === e.get("OES_texture_float_linear"))
                    return;
                if (r.type === Ht && null === (d || e.get("OES_texture_half_float_linear")))
                    return;
                (r.anisotropy > 1 || i.get(r).__currentAnisotropy) && (t.texParameterf(n, s.TEXTURE_MAX_ANISOTROPY_EXT, Math.min(r.anisotropy, o.getMaxAnisotropy())),
                i.get(r).__currentAnisotropy = r.anisotropy)
            }
        }
        function R(e, n) {
            void 0 === e.__webglInit && (e.__webglInit = !0,
            n.addEventListener("dispose", C),
            e.__webglTexture = t.createTexture(),
            s.memory.textures++)
        }
        function L(e, i, r) {
            var o = 3553;
            i.isDataTexture2DArray && (o = 35866),
            i.isDataTexture3D && (o = 32879),
            R(e, i),
            n.activeTexture(33984 + r),
            n.bindTexture(o, e.__webglTexture),
            t.pixelStorei(37440, i.flipY),
            t.pixelStorei(37441, i.premultiplyAlpha),
            t.pixelStorei(3317, i.unpackAlignment);
            var s = function(t) {
                return !d && (t.wrapS !== Ct || t.wrapT !== Ct || t.minFilter !== Tt && t.minFilter !== kt)
            }(i) && !1 === w(i.image)
              , c = b(i.image, s, !1, f)
              , l = w(c) || d
              , u = a.convert(i.format)
              , p = a.convert(i.type)
              , h = M(i.internalFormat, u, p);
            D(o, i, l);
            var m, g = i.mipmaps;
            if (i.isDepthTexture)
                h = 6402,
                d ? h = i.type === Gt ? 36012 : i.type === zt ? 33190 : i.type === Yt ? 35056 : 33189 : i.type === Gt && console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),
                i.format === ee && 6402 === h && i.type !== Ut && i.type !== zt && (console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),
                i.type = Ut,
                p = a.convert(i.type)),
                i.format === ne && 6402 === h && (h = 34041,
                i.type !== Yt && (console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),
                i.type = Yt,
                p = a.convert(i.type))),
                n.texImage2D(3553, 0, h, c.width, c.height, 0, u, p, null);
            else if (i.isDataTexture)
                if (g.length > 0 && l) {
                    for (var v = 0, y = g.length; v < y; v++)
                        m = g[v],
                        n.texImage2D(3553, v, h, m.width, m.height, 0, u, p, m.data);
                    i.generateMipmaps = !1,
                    e.__maxMipLevel = g.length - 1
                } else
                    n.texImage2D(3553, 0, h, c.width, c.height, 0, u, p, c.data),
                    e.__maxMipLevel = 0;
            else if (i.isCompressedTexture) {
                for (v = 0,
                y = g.length; v < y; v++)
                    m = g[v],
                    i.format !== Jt && i.format !== Zt ? null !== u ? n.compressedTexImage2D(3553, v, h, m.width, m.height, 0, m.data) : console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()") : n.texImage2D(3553, v, h, m.width, m.height, 0, u, p, m.data);
                e.__maxMipLevel = g.length - 1
            } else if (i.isDataTexture2DArray)
                n.texImage3D(35866, 0, h, c.width, c.height, c.depth, 0, u, p, c.data),
                e.__maxMipLevel = 0;
            else if (i.isDataTexture3D)
                n.texImage3D(32879, 0, h, c.width, c.height, c.depth, 0, u, p, c.data),
                e.__maxMipLevel = 0;
            else if (g.length > 0 && l) {
                for (v = 0,
                y = g.length; v < y; v++)
                    m = g[v],
                    n.texImage2D(3553, v, h, u, p, m);
                i.generateMipmaps = !1,
                e.__maxMipLevel = g.length - 1
            } else
                n.texImage2D(3553, 0, h, u, p, c),
                e.__maxMipLevel = 0;
            S(i, l) && x(o, i, c.width, c.height),
            e.__version = i.version,
            i.onUpdate && i.onUpdate(i)
        }
        function N(e, r, o, s) {
            var c = a.convert(r.texture.format)
              , l = a.convert(r.texture.type)
              , u = M(r.texture.internalFormat, c, l);
            n.texImage2D(s, 0, u, r.width, r.height, 0, c, l, null),
            t.bindFramebuffer(36160, e),
            t.framebufferTexture2D(36160, o, s, i.get(r.texture).__webglTexture, 0),
            t.bindFramebuffer(36160, null)
        }
        function j(e, n, i) {
            if (t.bindRenderbuffer(36161, e),
            n.depthBuffer && !n.stencilBuffer) {
                var r = 33189;
                if (i) {
                    var o = n.depthTexture;
                    o && o.isDepthTexture && (o.type === Gt ? r = 36012 : o.type === zt && (r = 33190));
                    var s = F(n);
                    t.renderbufferStorageMultisample(36161, s, r, n.width, n.height)
                } else
                    t.renderbufferStorage(36161, r, n.width, n.height);
                t.framebufferRenderbuffer(36160, 36096, 36161, e)
            } else if (n.depthBuffer && n.stencilBuffer) {
                if (i) {
                    s = F(n);
                    t.renderbufferStorageMultisample(36161, s, 35056, n.width, n.height)
                } else
                    t.renderbufferStorage(36161, 34041, n.width, n.height);
                t.framebufferRenderbuffer(36160, 33306, 36161, e)
            } else {
                var c = a.convert(n.texture.format)
                  , l = a.convert(n.texture.type);
                r = M(n.texture.internalFormat, c, l);
                if (i) {
                    s = F(n);
                    t.renderbufferStorageMultisample(36161, s, r, n.width, n.height)
                } else
                    t.renderbufferStorage(36161, r, n.width, n.height)
            }
            t.bindRenderbuffer(36161, null)
        }
        function V(e) {
            var n = i.get(e)
              , r = !0 === e.isWebGLCubeRenderTarget;
            if (e.depthTexture) {
                if (r)
                    throw new Error("target.depthTexture not supported in Cube render targets");
                !function(e, n) {
                    if (n && n.isWebGLCubeRenderTarget)
                        throw new Error("Depth Texture with cube render targets is not supported");
                    if (t.bindFramebuffer(36160, e),
                    !n.depthTexture || !n.depthTexture.isDepthTexture)
                        throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");
                    i.get(n.depthTexture).__webglTexture && n.depthTexture.image.width === n.width && n.depthTexture.image.height === n.height || (n.depthTexture.image.width = n.width,
                    n.depthTexture.image.height = n.height,
                    n.depthTexture.needsUpdate = !0),
                    O(n.depthTexture, 0);
                    var r = i.get(n.depthTexture).__webglTexture;
                    if (n.depthTexture.format === ee)
                        t.framebufferTexture2D(36160, 36096, 3553, r, 0);
                    else {
                        if (n.depthTexture.format !== ne)
                            throw new Error("Unknown depthTexture format");
                        t.framebufferTexture2D(36160, 33306, 3553, r, 0)
                    }
                }(n.__webglFramebuffer, e)
            } else if (r) {
                n.__webglDepthbuffer = [];
                for (var o = 0; o < 6; o++)
                    t.bindFramebuffer(36160, n.__webglFramebuffer[o]),
                    n.__webglDepthbuffer[o] = t.createRenderbuffer(),
                    j(n.__webglDepthbuffer[o], e, !1)
            } else
                t.bindFramebuffer(36160, n.__webglFramebuffer),
                n.__webglDepthbuffer = t.createRenderbuffer(),
                j(n.__webglDepthbuffer, e, !1);
            t.bindFramebuffer(36160, null)
        }
        function F(t) {
            return d && t.isWebGLMultisampleRenderTarget ? Math.min(m, t.samples) : 0
        }
        var U = !1
          , B = !1;
        this.allocateTextureUnit = function() {
            var t = T;
            return t >= p && console.warn("THREE.WebGLTextures: Trying to use " + t + " texture units while this GPU supports only " + p),
            T += 1,
            t
        }
        ,
        this.resetTextureUnits = function() {
            T = 0
        }
        ,
        this.setTexture2D = O,
        this.setTexture2DArray = function(t, e) {
            var r = i.get(t);
            t.version > 0 && r.__version !== t.version ? L(r, t, e) : (n.activeTexture(33984 + e),
            n.bindTexture(35866, r.__webglTexture))
        }
        ,
        this.setTexture3D = function(t, e) {
            var r = i.get(t);
            t.version > 0 && r.__version !== t.version ? L(r, t, e) : (n.activeTexture(33984 + e),
            n.bindTexture(32879, r.__webglTexture))
        }
        ,
        this.setTextureCube = _,
        this.setTextureCubeDynamic = P,
        this.setupRenderTarget = function(e) {
            var r = i.get(e)
              , o = i.get(e.texture);
            e.addEventListener("dispose", A),
            o.__webglTexture = t.createTexture(),
            s.memory.textures++;
            var c = !0 === e.isWebGLCubeRenderTarget
              , l = !0 === e.isWebGLMultisampleRenderTarget
              , u = w(e) || d;
            if (!d || e.texture.format !== Zt || e.texture.type !== Gt && e.texture.type !== Ht || (e.texture.format = Jt,
            console.warn("THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.")),
            c) {
                r.__webglFramebuffer = [];
                for (var p = 0; p < 6; p++)
                    r.__webglFramebuffer[p] = t.createFramebuffer()
            } else if (r.__webglFramebuffer = t.createFramebuffer(),
            l)
                if (d) {
                    r.__webglMultisampledFramebuffer = t.createFramebuffer(),
                    r.__webglColorRenderbuffer = t.createRenderbuffer(),
                    t.bindRenderbuffer(36161, r.__webglColorRenderbuffer);
                    var h = a.convert(e.texture.format)
                      , f = a.convert(e.texture.type)
                      , m = M(e.texture.internalFormat, h, f)
                      , g = F(e);
                    t.renderbufferStorageMultisample(36161, g, m, e.width, e.height),
                    t.bindFramebuffer(36160, r.__webglMultisampledFramebuffer),
                    t.framebufferRenderbuffer(36160, 36064, 36161, r.__webglColorRenderbuffer),
                    t.bindRenderbuffer(36161, null),
                    e.depthBuffer && (r.__webglDepthRenderbuffer = t.createRenderbuffer(),
                    j(r.__webglDepthRenderbuffer, e, !0)),
                    t.bindFramebuffer(36160, null)
                } else
                    console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.");
            if (c) {
                n.bindTexture(34067, o.__webglTexture),
                D(34067, e.texture, u);
                for (p = 0; p < 6; p++)
                    N(r.__webglFramebuffer[p], e, 36064, 34069 + p);
                S(e.texture, u) && x(34067, e.texture, e.width, e.height),
                n.bindTexture(34067, null)
            } else
                n.bindTexture(3553, o.__webglTexture),
                D(3553, e.texture, u),
                N(r.__webglFramebuffer, e, 36064, 3553),
                S(e.texture, u) && x(3553, e.texture, e.width, e.height),
                n.bindTexture(3553, null);
            e.depthBuffer && V(e)
        }
        ,
        this.updateRenderTargetMipmap = function(t) {
            var e = t.texture;
            if (S(e, w(t) || d)) {
                var r = t.isWebGLCubeRenderTarget ? 34067 : 3553
                  , o = i.get(e).__webglTexture;
                n.bindTexture(r, o),
                x(r, e, t.width, t.height),
                n.bindTexture(r, null)
            }
        }
        ,
        this.updateMultisampleRenderTarget = function(e) {
            if (e.isWebGLMultisampleRenderTarget)
                if (d) {
                    var n = i.get(e);
                    t.bindFramebuffer(36008, n.__webglMultisampledFramebuffer),
                    t.bindFramebuffer(36009, n.__webglFramebuffer);
                    var r = e.width
                      , o = e.height
                      , a = 16384;
                    e.depthBuffer && (a |= 256),
                    e.stencilBuffer && (a |= 1024),
                    t.blitFramebuffer(0, 0, r, o, 0, 0, r, o, a, 9728),
                    t.bindFramebuffer(36160, n.__webglMultisampledFramebuffer)
                } else
                    console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.")
        }
        ,
        this.safeSetTexture2D = function(t, e) {
            t && t.isWebGLRenderTarget && (!1 === U && (console.warn("THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead."),
            U = !0),
            t = t.texture),
            O(t, e)
        }
        ,
        this.safeSetTextureCube = function(t, e) {
            t && t.isWebGLCubeRenderTarget && (!1 === B && (console.warn("THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead."),
            B = !0),
            t = t.texture),
            t && t.isCubeTexture || Array.isArray(t.image) && 6 === t.image.length ? _(t, e) : P(t, e)
        }
    }
    function js(t, e, n) {
        var i = n.isWebGL2;
        return {
            convert: function(t) {
                var n;
                if (t === jt)
                    return 5121;
                if (t === Wt)
                    return 32819;
                if (t === qt)
                    return 32820;
                if (t === Xt)
                    return 33635;
                if (t === Vt)
                    return 5120;
                if (t === Ft)
                    return 5122;
                if (t === Ut)
                    return 5123;
                if (t === Bt)
                    return 5124;
                if (t === zt)
                    return 5125;
                if (t === Gt)
                    return 5126;
                if (t === Ht)
                    return i ? 5131 : null !== (n = e.get("OES_texture_half_float")) ? n.HALF_FLOAT_OES : null;
                if (t === Kt)
                    return 6406;
                if (t === Zt)
                    return 6407;
                if (t === Jt)
                    return 6408;
                if (t === Qt)
                    return 6409;
                if (t === $t)
                    return 6410;
                if (t === ee)
                    return 6402;
                if (t === ne)
                    return 34041;
                if (t === ie)
                    return 6403;
                if (t === re)
                    return 36244;
                if (t === oe)
                    return 33319;
                if (t === ae)
                    return 33320;
                if (t === se)
                    return 36248;
                if (t === ce)
                    return 36249;
                if (t === le || t === ue || t === de || t === pe) {
                    if (null === (n = e.get("WEBGL_compressed_texture_s3tc")))
                        return null;
                    if (t === le)
                        return n.COMPRESSED_RGB_S3TC_DXT1_EXT;
                    if (t === ue)
                        return n.COMPRESSED_RGBA_S3TC_DXT1_EXT;
                    if (t === de)
                        return n.COMPRESSED_RGBA_S3TC_DXT3_EXT;
                    if (t === pe)
                        return n.COMPRESSED_RGBA_S3TC_DXT5_EXT
                }
                if (t === he || t === fe || t === me || t === ge) {
                    if (null === (n = e.get("WEBGL_compressed_texture_pvrtc")))
                        return null;
                    if (t === he)
                        return n.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;
                    if (t === fe)
                        return n.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;
                    if (t === me)
                        return n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
                    if (t === ge)
                        return n.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG
                }
                if (t === ve)
                    return null !== (n = e.get("WEBGL_compressed_texture_etc1")) ? n.COMPRESSED_RGB_ETC1_WEBGL : null;
                if ((t === ye || t === be) && null !== (n = e.get("WEBGL_compressed_texture_etc"))) {
                    if (t === ye)
                        return n.COMPRESSED_RGB8_ETC2;
                    if (t === be)
                        return n.COMPRESSED_RGBA8_ETC2_EAC
                }
                return t === we || t === Se || t === xe || t === Me || t === Ee || t === Ce || t === Ae || t === Te || t === Oe || t === _e || t === Pe || t === Ie || t === ke || t === De || t === Le || t === Ne || t === je || t === Ve || t === Fe || t === Ue || t === Be || t === ze || t === Ge || t === He || t === We || t === qe || t === Xe || t === Ye ? null !== (n = e.get("WEBGL_compressed_texture_astc")) ? t : null : t === Re ? null !== (n = e.get("EXT_texture_compression_bptc")) ? t : null : t === Yt ? i ? 34042 : null !== (n = e.get("WEBGL_depth_texture")) ? n.UNSIGNED_INT_24_8_WEBGL : null : void 0
            }
        }
    }
    function Vs(t) {
        ko.call(this),
        this.cameras = t || []
    }
    function Fs() {
        Di.call(this),
        this.type = "Group"
    }
    function Us(t, e) {
        var n = this
          , i = null
          , r = 1
          , o = null
          , a = "local-floor"
          , s = null
          , c = []
          , l = new Map
          , u = new ko;
        u.layers.enable(1),
        u.viewport = new ei;
        var d = new ko;
        d.layers.enable(2),
        d.viewport = new ei;
        var p = new Vs([u, d]);
        p.layers.enable(1),
        p.layers.enable(2);
        var h = null
          , f = null;
        function m(t) {
            var e = l.get(t.inputSource);
            e && (e.targetRay && e.targetRay.dispatchEvent({
                type: t.type
            }),
            e.grip && e.grip.dispatchEvent({
                type: t.type
            }))
        }
        function g() {
            l.forEach((function(t, e) {
                t.targetRay && (t.targetRay.dispatchEvent({
                    type: "disconnected",
                    data: e
                }),
                t.targetRay.visible = !1),
                t.grip && (t.grip.dispatchEvent({
                    type: "disconnected",
                    data: e
                }),
                t.grip.visible = !1)
            }
            )),
            l.clear(),
            t.setFramebuffer(null),
            t.setRenderTarget(t.getRenderTarget()),
            M.stop(),
            n.isPresenting = !1,
            n.dispatchEvent({
                type: "sessionend"
            })
        }
        function v(t) {
            o = t,
            M.setContext(i),
            M.start(),
            n.isPresenting = !0,
            n.dispatchEvent({
                type: "sessionstart"
            })
        }
        function y(t) {
            for (var e = i.inputSources, n = 0; n < c.length; n++)
                l.set(e[n], c[n]);
            for (n = 0; n < t.removed.length; n++) {
                var r = t.removed[n];
                (o = l.get(r)) && (o.targetRay && o.targetRay.dispatchEvent({
                    type: "disconnected",
                    data: r
                }),
                o.grip && o.grip.dispatchEvent({
                    type: "disconnected",
                    data: r
                }),
                l.delete(r))
            }
            for (n = 0; n < t.added.length; n++) {
                var o;
                r = t.added[n];
                (o = l.get(r)) && (o.targetRay && o.targetRay.dispatchEvent({
                    type: "connected",
                    data: r
                }),
                o.grip && o.grip.dispatchEvent({
                    type: "connected",
                    data: r
                }))
            }
        }
        this.enabled = !1,
        this.isPresenting = !1,
        this.getController = function(t) {
            var e = c[t];
            return void 0 === e && (e = {},
            c[t] = e),
            void 0 === e.targetRay && (e.targetRay = new Fs,
            e.targetRay.matrixAutoUpdate = !1,
            e.targetRay.visible = !1),
            e.targetRay
        }
        ,
        this.getControllerGrip = function(t) {
            var e = c[t];
            return void 0 === e && (e = {},
            c[t] = e),
            void 0 === e.grip && (e.grip = new Fs,
            e.grip.matrixAutoUpdate = !1,
            e.grip.visible = !1),
            e.grip
        }
        ,
        this.setFramebufferScaleFactor = function(t) {
            r = t,
            1 == n.isPresenting && console.warn("WebXRManager: Cannot change framebuffer scale while presenting VR content")
        }
        ,
        this.setReferenceSpaceType = function(t) {
            a = t
        }
        ,
        this.getReferenceSpace = function() {
            return o
        }
        ,
        this.getSession = function() {
            return i
        }
        ,
        this.setSession = function(t) {
            if (null !== (i = t)) {
                i.addEventListener("select", m),
                i.addEventListener("selectstart", m),
                i.addEventListener("selectend", m),
                i.addEventListener("squeeze", m),
                i.addEventListener("squeezestart", m),
                i.addEventListener("squeezeend", m),
                i.addEventListener("end", g);
                var n = e.getContextAttributes()
                  , o = {
                    antialias: n.antialias,
                    alpha: n.alpha,
                    depth: n.depth,
                    stencil: n.stencil,
                    framebufferScaleFactor: r
                }
                  , s = new XRWebGLLayer(i,e,o);
                i.updateRenderState({
                    baseLayer: s
                }),
                i.requestReferenceSpace(a).then(v),
                i.addEventListener("inputsourceschange", y)
            }
        }
        ;
        var b = new si
          , w = new si;
        function S(t, e) {
            null === e ? t.matrixWorld.copy(t.matrix) : t.matrixWorld.multiplyMatrices(e.matrixWorld, t.matrix),
            t.matrixWorldInverse.getInverse(t.matrixWorld)
        }
        this.getCamera = function(t) {
            p.near = d.near = u.near = t.near,
            p.far = d.far = u.far = t.far,
            h === p.near && f === p.far || (i.updateRenderState({
                depthNear: p.near,
                depthFar: p.far
            }),
            h = p.near,
            f = p.far);
            var e = t.parent
              , n = p.cameras;
            S(p, e);
            for (var r = 0; r < n.length; r++)
                S(n[r], e);
            t.matrixWorld.copy(p.matrixWorld);
            for (var o = t.children, a = (r = 0,
            o.length); r < a; r++)
                o[r].updateMatrixWorld(!0);
            return function(t, e, n) {
                b.setFromMatrixPosition(e.matrixWorld),
                w.setFromMatrixPosition(n.matrixWorld);
                var i = b.distanceTo(w)
                  , r = e.projectionMatrix.elements
                  , o = n.projectionMatrix.elements
                  , a = r[14] / (r[10] - 1)
                  , s = r[14] / (r[10] + 1)
                  , c = (r[9] + 1) / r[5]
                  , l = (r[9] - 1) / r[5]
                  , u = (r[8] - 1) / r[0]
                  , d = (o[8] + 1) / o[0]
                  , p = a * u
                  , h = a * d
                  , f = i / (-u + d)
                  , m = f * -u;
                e.matrixWorld.decompose(t.position, t.quaternion, t.scale),
                t.translateX(m),
                t.translateZ(f),
                t.matrixWorld.compose(t.position, t.quaternion, t.scale),
                t.matrixWorldInverse.getInverse(t.matrixWorld);
                var g = a + f
                  , v = s + f
                  , y = p - m
                  , S = h + (i - m)
                  , x = c * s / v * g
                  , M = l * s / v * g;
                t.projectionMatrix.makePerspective(y, S, x, M, g, v)
            }(p, u, d),
            p
        }
        ;
        var x = null;
        var M = new Uo;
        M.setAnimationLoop((function(e, n) {
            if (null !== (s = n.getViewerPose(o))) {
                var r = s.views
                  , a = i.renderState.baseLayer;
                t.setFramebuffer(a.framebuffer);
                for (var l = 0; l < r.length; l++) {
                    var u = r[l]
                      , d = a.getViewport(u)
                      , h = p.cameras[l];
                    h.matrix.fromArray(u.transform.matrix),
                    h.projectionMatrix.fromArray(u.projectionMatrix),
                    h.viewport.set(d.x, d.y, d.width, d.height),
                    0 === l && p.matrix.copy(h.matrix)
                }
            }
            var f = i.inputSources;
            for (l = 0; l < c.length; l++) {
                var m = c[l]
                  , g = f[l]
                  , v = null
                  , y = null;
                g && (m.targetRay && null !== (v = n.getPose(g.targetRaySpace, o)) && (m.targetRay.matrix.fromArray(v.transform.matrix),
                m.targetRay.matrix.decompose(m.targetRay.position, m.targetRay.rotation, m.targetRay.scale)),
                m.grip && g.gripSpace && null !== (y = n.getPose(g.gripSpace, o)) && (m.grip.matrix.fromArray(y.transform.matrix),
                m.grip.matrix.decompose(m.grip.position, m.grip.rotation, m.grip.scale))),
                m.targetRay && (m.targetRay.visible = null !== v),
                m.grip && (m.grip.visible = null !== y)
            }
            x && x(e, n)
        }
        )),
        this.setAnimationLoop = function(t) {
            x = t
        }
        ,
        this.dispose = function() {}
    }
    function Bs(t) {
        var e = void 0 !== (t = t || {}).canvas ? t.canvas : document.createElementNS("http://www.w3.org/1999/xhtml", "canvas")
          , n = void 0 !== t.context ? t.context : null
          , i = void 0 !== t.alpha && t.alpha
          , r = void 0 === t.depth || t.depth
          , o = void 0 === t.stencil || t.stencil
          , a = void 0 !== t.antialias && t.antialias
          , s = void 0 === t.premultipliedAlpha || t.premultipliedAlpha
          , c = void 0 !== t.preserveDrawingBuffer && t.preserveDrawingBuffer
          , l = void 0 !== t.powerPreference ? t.powerPreference : "default"
          , u = void 0 !== t.failIfMajorPerformanceCaveat && t.failIfMajorPerformanceCaveat
          , d = null
          , p = null;
        this.domElement = e,
        this.debug = {
            checkShaderErrors: !0
        },
        this.autoClear = !0,
        this.autoClearColor = !0,
        this.autoClearDepth = !0,
        this.autoClearStencil = !0,
        this.sortObjects = !0,
        this.clippingPlanes = [],
        this.localClippingEnabled = !1,
        this.gammaFactor = 2,
        this.outputEncoding = cn,
        this.physicallyCorrectLights = !1,
        this.toneMapping = dt,
        this.toneMappingExposure = 1,
        this.toneMappingWhitePoint = 1,
        this.maxMorphTargets = 8,
        this.maxMorphNormals = 4;
        var h, f, m, g, v, y, b, w, S, x, M, E, C, A, O, _, P, I, k = this, D = !1, R = null, L = 0, N = 0, j = null, V = null, F = -1, U = {
            geometry: null,
            program: null,
            wireframe: !1
        }, B = null, z = null, G = new ei, H = new ei, W = null, q = e.width, X = e.height, Y = 1, K = null, Z = null, J = new ei(0,0,q,X), Q = new ei(0,0,q,X), $ = !1, tt = new Vo, et = new Ko, nt = !1, it = !1, rt = new mi, ot = new si;
        function at() {
            return null === j ? Y : 1
        }
        try {
            var st = {
                alpha: i,
                depth: r,
                stencil: o,
                antialias: a,
                premultipliedAlpha: s,
                preserveDrawingBuffer: c,
                powerPreference: l,
                failIfMajorPerformanceCaveat: u,
                xrCompatible: !0
            };
            if (e.addEventListener("webglcontextlost", pt, !1),
            e.addEventListener("webglcontextrestored", ht, !1),
            null === (h = n || e.getContext("webgl", st) || e.getContext("experimental-webgl", st)))
                throw null !== e.getContext("webgl") ? new Error("Error creating WebGL context with your selected attributes.") : new Error("Error creating WebGL context.");
            void 0 === h.getShaderPrecisionFormat && (h.getShaderPrecisionFormat = function() {
                return {
                    rangeMin: 1,
                    rangeMax: 1,
                    precision: 1
                }
            }
            )
        } catch (t) {
            throw console.error("THREE.WebGLRenderer: " + t.message),
            t
        }
        function ct() {
            f = new Zo(h),
            !1 === (m = new Yo(h,f,t)).isWebGL2 && (f.get("WEBGL_depth_texture"),
            f.get("OES_texture_float"),
            f.get("OES_texture_half_float"),
            f.get("OES_texture_half_float_linear"),
            f.get("OES_standard_derivatives"),
            f.get("OES_element_index_uint"),
            f.get("ANGLE_instanced_arrays")),
            f.get("OES_texture_float_linear"),
            I = new js(h,f,m),
            (g = new Ls(h,f,m)).scissor(H.copy(Q).multiplyScalar(Y).floor()),
            g.viewport(G.copy(J).multiplyScalar(Y).floor()),
            v = new $o(h),
            y = new Ss,
            b = new Ns(h,f,g,y,m,I,v),
            w = new Bo(h,m),
            S = new Jo(h,w,v),
            x = new na(h,S,w,v),
            O = new ea(h),
            M = new ws(k,f,m),
            E = new Cs,
            C = new Is,
            A = new qo(k,g,x,s),
            _ = new Xo(h,f,v,m),
            P = new Qo(h,f,v,m),
            v.programs = M.programs,
            k.capabilities = m,
            k.extensions = f,
            k.properties = y,
            k.renderLists = E,
            k.state = g,
            k.info = v
        }
        ct();
        var lt = new Us(k,h);
        this.xr = lt;
        var ut = new Rs(k,x,m.maxTextureSize);
        function pt(t) {
            t.preventDefault(),
            console.log("THREE.WebGLRenderer: Context Lost."),
            D = !0
        }
        function ht() {
            console.log("THREE.WebGLRenderer: Context Restored."),
            D = !1,
            ct()
        }
        function ft(t) {
            var e = t.target;
            e.removeEventListener("dispose", ft),
            function(t) {
                mt(t),
                y.remove(t)
            }(e)
        }
        function mt(t) {
            var e = y.get(t).program;
            t.program = void 0,
            void 0 !== e && M.releaseProgram(e)
        }
        this.shadowMap = ut,
        this.getContext = function() {
            return h
        }
        ,
        this.getContextAttributes = function() {
            return h.getContextAttributes()
        }
        ,
        this.forceContextLoss = function() {
            var t = f.get("WEBGL_lose_context");
            t && t.loseContext()
        }
        ,
        this.forceContextRestore = function() {
            var t = f.get("WEBGL_lose_context");
            t && t.restoreContext()
        }
        ,
        this.getPixelRatio = function() {
            return Y
        }
        ,
        this.setPixelRatio = function(t) {
            void 0 !== t && (Y = t,
            this.setSize(q, X, !1))
        }
        ,
        this.getSize = function(t) {
            return void 0 === t && (console.warn("WebGLRenderer: .getsize() now requires a Vector2 as an argument"),
            t = new Zn),
            t.set(q, X)
        }
        ,
        this.setSize = function(t, n, i) {
            lt.isPresenting ? console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.") : (q = t,
            X = n,
            e.width = Math.floor(t * Y),
            e.height = Math.floor(n * Y),
            !1 !== i && (e.style.width = t + "px",
            e.style.height = n + "px"),
            this.setViewport(0, 0, t, n))
        }
        ,
        this.getDrawingBufferSize = function(t) {
            return void 0 === t && (console.warn("WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument"),
            t = new Zn),
            t.set(q * Y, X * Y).floor()
        }
        ,
        this.setDrawingBufferSize = function(t, n, i) {
            q = t,
            X = n,
            Y = i,
            e.width = Math.floor(t * i),
            e.height = Math.floor(n * i),
            this.setViewport(0, 0, t, n)
        }
        ,
        this.getCurrentViewport = function(t) {
            return void 0 === t && (console.warn("WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument"),
            t = new ei),
            t.copy(G)
        }
        ,
        this.getViewport = function(t) {
            return t.copy(J)
        }
        ,
        this.setViewport = function(t, e, n, i) {
            t.isVector4 ? J.set(t.x, t.y, t.z, t.w) : J.set(t, e, n, i),
            g.viewport(G.copy(J).multiplyScalar(Y).floor())
        }
        ,
        this.getScissor = function(t) {
            return t.copy(Q)
        }
        ,
        this.setScissor = function(t, e, n, i) {
            t.isVector4 ? Q.set(t.x, t.y, t.z, t.w) : Q.set(t, e, n, i),
            g.scissor(H.copy(Q).multiplyScalar(Y).floor())
        }
        ,
        this.getScissorTest = function() {
            return $
        }
        ,
        this.setScissorTest = function(t) {
            g.setScissorTest($ = t)
        }
        ,
        this.setOpaqueSort = function(t) {
            K = t
        }
        ,
        this.setTransparentSort = function(t) {
            Z = t
        }
        ,
        this.getClearColor = function() {
            return A.getClearColor()
        }
        ,
        this.setClearColor = function() {
            A.setClearColor.apply(A, arguments)
        }
        ,
        this.getClearAlpha = function() {
            return A.getClearAlpha()
        }
        ,
        this.setClearAlpha = function() {
            A.setClearAlpha.apply(A, arguments)
        }
        ,
        this.clear = function(t, e, n) {
            var i = 0;
            (void 0 === t || t) && (i |= 16384),
            (void 0 === e || e) && (i |= 256),
            (void 0 === n || n) && (i |= 1024),
            h.clear(i)
        }
        ,
        this.clearColor = function() {
            this.clear(!0, !1, !1)
        }
        ,
        this.clearDepth = function() {
            this.clear(!1, !0, !1)
        }
        ,
        this.clearStencil = function() {
            this.clear(!1, !1, !0)
        }
        ,
        this.dispose = function() {
            e.removeEventListener("webglcontextlost", pt, !1),
            e.removeEventListener("webglcontextrestored", ht, !1),
            E.dispose(),
            C.dispose(),
            y.dispose(),
            x.dispose(),
            lt.dispose(),
            yt.stop(),
            this.forceContextLoss()
        }
        ,
        this.renderBufferImmediate = function(t, e) {
            g.initAttributes();
            var n = y.get(t);
            t.hasPositions && !n.position && (n.position = h.createBuffer()),
            t.hasNormals && !n.normal && (n.normal = h.createBuffer()),
            t.hasUvs && !n.uv && (n.uv = h.createBuffer()),
            t.hasColors && !n.color && (n.color = h.createBuffer());
            var i = e.getAttributes();
            t.hasPositions && (h.bindBuffer(34962, n.position),
            h.bufferData(34962, t.positionArray, 35048),
            g.enableAttribute(i.position),
            h.vertexAttribPointer(i.position, 3, 5126, !1, 0, 0)),
            t.hasNormals && (h.bindBuffer(34962, n.normal),
            h.bufferData(34962, t.normalArray, 35048),
            g.enableAttribute(i.normal),
            h.vertexAttribPointer(i.normal, 3, 5126, !1, 0, 0)),
            t.hasUvs && (h.bindBuffer(34962, n.uv),
            h.bufferData(34962, t.uvArray, 35048),
            g.enableAttribute(i.uv),
            h.vertexAttribPointer(i.uv, 2, 5126, !1, 0, 0)),
            t.hasColors && (h.bindBuffer(34962, n.color),
            h.bufferData(34962, t.colorArray, 35048),
            g.enableAttribute(i.color),
            h.vertexAttribPointer(i.color, 3, 5126, !1, 0, 0)),
            g.disableUnusedAttributes(),
            h.drawArrays(4, 0, t.count),
            t.count = 0
        }
        ;
        var gt = new Ri;
        this.renderBufferDirect = function(t, e, n, i, r, o) {
            null === e && (e = gt);
            var a = r.isMesh && r.matrixWorld.determinant() < 0
              , s = Mt(t, e, i, r);
            g.setMaterial(i, a);
            var c = !1;
            U.geometry === n.id && U.program === s.id && U.wireframe === (!0 === i.wireframe) || (U.geometry = n.id,
            U.program = s.id,
            U.wireframe = !0 === i.wireframe,
            c = !0),
            (i.morphTargets || i.morphNormals) && (O.update(r, n, i, s),
            c = !0);
            var l = n.index
              , u = n.attributes.position;
            if (null === l) {
                if (void 0 === u || 0 === u.count)
                    return
            } else if (0 === l.count)
                return;
            var d, p = 1;
            !0 === i.wireframe && (l = S.getWireframeAttribute(n),
            p = 2);
            var v = _;
            null !== l && (d = w.get(l),
            (v = P).setIndex(d)),
            c && (!function(t, e, n, i) {
                if (!1 === m.isWebGL2 && (t.isInstancedMesh || e.isInstancedBufferGeometry) && null === f.get("ANGLE_instanced_arrays"))
                    return;
                g.initAttributes();
                var r = e.attributes
                  , o = i.getAttributes()
                  , a = n.defaultAttributeValues;
                for (var s in o) {
                    var c = o[s];
                    if (c >= 0) {
                        var l = r[s];
                        if (void 0 !== l) {
                            var u = l.normalized
                              , d = l.itemSize;
                            if (void 0 === (M = w.get(l)))
                                continue;
                            var p = M.buffer
                              , v = M.type
                              , y = M.bytesPerElement;
                            if (l.isInterleavedBufferAttribute) {
                                var b = l.data
                                  , S = b.stride
                                  , x = l.offset;
                                b && b.isInstancedInterleavedBuffer ? (g.enableAttributeAndDivisor(c, b.meshPerAttribute),
                                void 0 === e.maxInstancedCount && (e.maxInstancedCount = b.meshPerAttribute * b.count)) : g.enableAttribute(c),
                                h.bindBuffer(34962, p),
                                h.vertexAttribPointer(c, d, v, u, S * y, x * y)
                            } else
                                l.isInstancedBufferAttribute ? (g.enableAttributeAndDivisor(c, l.meshPerAttribute),
                                void 0 === e.maxInstancedCount && (e.maxInstancedCount = l.meshPerAttribute * l.count)) : g.enableAttribute(c),
                                h.bindBuffer(34962, p),
                                h.vertexAttribPointer(c, d, v, u, 0, 0)
                        } else if ("instanceMatrix" === s) {
                            var M;
                            if (void 0 === (M = w.get(t.instanceMatrix)))
                                continue;
                            p = M.buffer,
                            v = M.type;
                            g.enableAttributeAndDivisor(c + 0, 1),
                            g.enableAttributeAndDivisor(c + 1, 1),
                            g.enableAttributeAndDivisor(c + 2, 1),
                            g.enableAttributeAndDivisor(c + 3, 1),
                            h.bindBuffer(34962, p),
                            h.vertexAttribPointer(c + 0, 4, v, !1, 64, 0),
                            h.vertexAttribPointer(c + 1, 4, v, !1, 64, 16),
                            h.vertexAttribPointer(c + 2, 4, v, !1, 64, 32),
                            h.vertexAttribPointer(c + 3, 4, v, !1, 64, 48)
                        } else if (void 0 !== a) {
                            var E = a[s];
                            if (void 0 !== E)
                                switch (E.length) {
                                case 2:
                                    h.vertexAttrib2fv(c, E);
                                    break;
                                case 3:
                                    h.vertexAttrib3fv(c, E);
                                    break;
                                case 4:
                                    h.vertexAttrib4fv(c, E);
                                    break;
                                default:
                                    h.vertexAttrib1fv(c, E)
                                }
                        }
                    }
                }
                g.disableUnusedAttributes()
            }(r, n, i, s),
            null !== l && h.bindBuffer(34963, d.buffer));
            var y = null !== l ? l.count : u.count
              , b = n.drawRange.start * p
              , x = n.drawRange.count * p
              , M = null !== o ? o.start * p : 0
              , E = null !== o ? o.count * p : 1 / 0
              , C = Math.max(b, M)
              , A = Math.min(y, b + x, M + E) - 1
              , T = Math.max(0, A - C + 1);
            if (0 !== T) {
                if (r.isMesh)
                    !0 === i.wireframe ? (g.setLineWidth(i.wireframeLinewidth * at()),
                    v.setMode(1)) : v.setMode(4);
                else if (r.isLine) {
                    var I = i.linewidth;
                    void 0 === I && (I = 1),
                    g.setLineWidth(I * at()),
                    r.isLineSegments ? v.setMode(1) : r.isLineLoop ? v.setMode(2) : v.setMode(3)
                } else
                    r.isPoints ? v.setMode(0) : r.isSprite && v.setMode(4);
                r.isInstancedMesh ? v.renderInstances(n, C, T, r.count) : n.isInstancedBufferGeometry ? v.renderInstances(n, C, T, n.maxInstancedCount) : v.render(C, T)
            }
        }
        ,
        this.compile = function(t, e) {
            (p = C.get(t, e)).init(),
            t.traverse((function(t) {
                t.isLight && (p.pushLight(t),
                t.castShadow && p.pushShadow(t))
            }
            )),
            p.setupLights(e);
            var n = {};
            t.traverse((function(e) {
                if (e.material)
                    if (Array.isArray(e.material))
                        for (var i = 0; i < e.material.length; i++)
                            e.material[i].uuid in n == !1 && (xt(e.material[i], t, e),
                            n[e.material[i].uuid] = !0);
                    else
                        e.material.uuid in n == !1 && (xt(e.material, t, e),
                        n[e.material.uuid] = !0)
            }
            ))
        }
        ;
        var vt = null;
        var yt = new Uo;
        function bt(t, e, n, i) {
            if (!1 !== t.visible) {
                if (t.layers.test(e.layers))
                    if (t.isGroup)
                        n = t.renderOrder;
                    else if (t.isLOD)
                        !0 === t.autoUpdate && t.update(e);
                    else if (t.isLight)
                        p.pushLight(t),
                        t.castShadow && p.pushShadow(t);
                    else if (t.isSprite) {
                        if (!t.frustumCulled || tt.intersectsSprite(t)) {
                            i && ot.setFromMatrixPosition(t.matrixWorld).applyMatrix4(rt);
                            var r = x.update(t);
                            (o = t.material).visible && d.push(t, r, o, n, ot.z, null)
                        }
                    } else if (t.isImmediateRenderObject)
                        i && ot.setFromMatrixPosition(t.matrixWorld).applyMatrix4(rt),
                        d.push(t, null, t.material, n, ot.z, null);
                    else if ((t.isMesh || t.isLine || t.isPoints) && (t.isSkinnedMesh && t.skeleton.frame !== v.render.frame && (t.skeleton.update(),
                    t.skeleton.frame = v.render.frame),
                    !t.frustumCulled || tt.intersectsObject(t))) {
                        i && ot.setFromMatrixPosition(t.matrixWorld).applyMatrix4(rt);
                        r = x.update(t);
                        var o = t.material;
                        if (Array.isArray(o))
                            for (var a = r.groups, s = 0, c = a.length; s < c; s++) {
                                var l = a[s]
                                  , u = o[l.materialIndex];
                                u && u.visible && d.push(t, r, u, n, ot.z, l)
                            }
                        else
                            o.visible && d.push(t, r, o, n, ot.z, null)
                    }
                var h = t.children;
                for (s = 0,
                c = h.length; s < c; s++)
                    bt(h[s], e, n, i)
            }
        }
        function wt(t, e, n, i) {
            for (var r = 0, o = t.length; r < o; r++) {
                var a = t[r]
                  , s = a.object
                  , c = a.geometry
                  , l = void 0 === i ? a.material : i
                  , u = a.group;
                if (n.isArrayCamera) {
                    z = n;
                    for (var d = n.cameras, h = 0, f = d.length; h < f; h++) {
                        var m = d[h];
                        s.layers.test(m.layers) && (g.viewport(G.copy(m.viewport)),
                        p.setupLights(m),
                        St(s, e, m, c, l, u))
                    }
                } else
                    z = null,
                    St(s, e, n, c, l, u)
            }
        }
        function St(t, e, n, i, r, o) {
            if (t.onBeforeRender(k, e, n, i, r, o),
            p = C.get(e, z || n),
            t.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse, t.matrixWorld),
            t.normalMatrix.getNormalMatrix(t.modelViewMatrix),
            t.isImmediateRenderObject) {
                var a = Mt(n, e, r, t);
                g.setMaterial(r),
                U.geometry = null,
                U.program = null,
                U.wireframe = !1,
                function(t, e) {
                    t.render((function(t) {
                        k.renderBufferImmediate(t, e)
                    }
                    ))
                }(t, a)
            } else
                k.renderBufferDirect(n, e, i, r, t, o);
            t.onAfterRender(k, e, n, i, r, o),
            p = C.get(e, z || n)
        }
        function xt(t, e, n) {
            var i = y.get(t)
              , r = p.state.lights
              , o = p.state.shadowsArray
              , a = r.state.version
              , s = M.getParameters(t, r.state, o, e, et.numPlanes, et.numIntersection, n)
              , c = M.getProgramCacheKey(s)
              , l = i.program
              , u = !0;
            if (void 0 === l)
                t.addEventListener("dispose", ft);
            else if (l.cacheKey !== c)
                mt(t);
            else if (i.lightsStateVersion !== a)
                i.lightsStateVersion = a,
                u = !1;
            else {
                if (void 0 !== s.shaderID)
                    return;
                u = !1
            }
            u && (l = M.acquireProgram(s, c),
            i.program = l,
            i.uniforms = s.uniforms,
            i.environment = t.isMeshStandardMaterial ? e.environment : null,
            i.outputEncoding = k.outputEncoding,
            t.program = l);
            var d = l.getAttributes();
            if (t.morphTargets) {
                t.numSupportedMorphTargets = 0;
                for (var h = 0; h < k.maxMorphTargets; h++)
                    d["morphTarget" + h] >= 0 && t.numSupportedMorphTargets++
            }
            if (t.morphNormals) {
                t.numSupportedMorphNormals = 0;
                for (h = 0; h < k.maxMorphNormals; h++)
                    d["morphNormal" + h] >= 0 && t.numSupportedMorphNormals++
            }
            var f = i.uniforms;
            (t.isShaderMaterial || t.isRawShaderMaterial) && !0 !== t.clipping || (i.numClippingPlanes = et.numPlanes,
            i.numIntersection = et.numIntersection,
            f.clippingPlanes = et.uniform),
            i.fog = e.fog,
            i.needsLights = function(t) {
                return t.isMeshLambertMaterial || t.isMeshToonMaterial || t.isMeshPhongMaterial || t.isMeshStandardMaterial || t.isShadowMaterial || t.isShaderMaterial && !0 === t.lights
            }(t),
            i.lightsStateVersion = a,
            i.needsLights && (f.ambientLightColor.value = r.state.ambient,
            f.lightProbe.value = r.state.probe,
            f.directionalLights.value = r.state.directional,
            f.directionalLightShadows.value = r.state.directionalShadow,
            f.spotLights.value = r.state.spot,
            f.spotLightShadows.value = r.state.spotShadow,
            f.rectAreaLights.value = r.state.rectArea,
            f.pointLights.value = r.state.point,
            f.pointLightShadows.value = r.state.pointShadow,
            f.hemisphereLights.value = r.state.hemi,
            f.directionalShadowMap.value = r.state.directionalShadowMap,
            f.directionalShadowMatrix.value = r.state.directionalShadowMatrix,
            f.spotShadowMap.value = r.state.spotShadowMap,
            f.spotShadowMatrix.value = r.state.spotShadowMatrix,
            f.pointShadowMap.value = r.state.pointShadowMap,
            f.pointShadowMatrix.value = r.state.pointShadowMatrix);
            var m = i.program.getUniforms()
              , g = ts.seqWithValue(m.seq, f);
            i.uniformsList = g
        }
        function Mt(t, e, n, i) {
            b.resetTextureUnits();
            var r = e.fog
              , o = n.isMeshStandardMaterial ? e.environment : null
              , a = y.get(n)
              , s = p.state.lights;
            if (nt && (it || t !== B)) {
                var c = t === B && n.id === F;
                et.setState(n.clippingPlanes, n.clipIntersection, n.clipShadows, t, a, c)
            }
            n.version === a.__version ? void 0 === a.program || n.fog && a.fog !== r || a.environment !== o || a.needsLights && a.lightsStateVersion !== s.state.version ? xt(n, e, i) : void 0 === a.numClippingPlanes || a.numClippingPlanes === et.numPlanes && a.numIntersection === et.numIntersection ? a.outputEncoding !== k.outputEncoding && xt(n, e, i) : xt(n, e, i) : (xt(n, e, i),
            a.__version = n.version);
            var l, u, d = !1, f = !1, v = !1, w = a.program, S = w.getUniforms(), x = a.uniforms;
            if (g.useProgram(w.program) && (d = !0,
            f = !0,
            v = !0),
            n.id !== F && (F = n.id,
            f = !0),
            d || B !== t) {
                if (S.setValue(h, "projectionMatrix", t.projectionMatrix),
                m.logarithmicDepthBuffer && S.setValue(h, "logDepthBufFC", 2 / (Math.log(t.far + 1) / Math.LN2)),
                B !== t && (B = t,
                f = !0,
                v = !0),
                n.isShaderMaterial || n.isMeshPhongMaterial || n.isMeshToonMaterial || n.isMeshStandardMaterial || n.envMap) {
                    var M = S.map.cameraPosition;
                    void 0 !== M && M.setValue(h, ot.setFromMatrixPosition(t.matrixWorld))
                }
                (n.isMeshPhongMaterial || n.isMeshToonMaterial || n.isMeshLambertMaterial || n.isMeshBasicMaterial || n.isMeshStandardMaterial || n.isShaderMaterial) && S.setValue(h, "isOrthographic", !0 === t.isOrthographicCamera),
                (n.isMeshPhongMaterial || n.isMeshToonMaterial || n.isMeshLambertMaterial || n.isMeshBasicMaterial || n.isMeshStandardMaterial || n.isShaderMaterial || n.skinning) && S.setValue(h, "viewMatrix", t.matrixWorldInverse)
            }
            if (n.skinning) {
                S.setOptional(h, i, "bindMatrix"),
                S.setOptional(h, i, "bindMatrixInverse");
                var E = i.skeleton;
                if (E) {
                    var C = E.bones;
                    if (m.floatVertexTextures) {
                        if (void 0 === E.boneTexture) {
                            var A = Math.sqrt(4 * C.length);
                            A = Kn.ceilPowerOfTwo(A),
                            A = Math.max(A, 4);
                            var O = new Float32Array(A * A * 4);
                            O.set(E.boneMatrices);
                            var _ = new Lo(O,A,A,Jt,Gt);
                            E.boneMatrices = O,
                            E.boneTexture = _,
                            E.boneTextureSize = A
                        }
                        S.setValue(h, "boneTexture", E.boneTexture, b),
                        S.setValue(h, "boneTextureSize", E.boneTextureSize)
                    } else
                        S.setOptional(h, E, "boneMatrices")
                }
            }
            return (f || a.receiveShadow !== i.receiveShadow) && (a.receiveShadow = i.receiveShadow,
            S.setValue(h, "receiveShadow", i.receiveShadow)),
            f && (S.setValue(h, "toneMappingExposure", k.toneMappingExposure),
            S.setValue(h, "toneMappingWhitePoint", k.toneMappingWhitePoint),
            a.needsLights && (u = v,
            (l = x).ambientLightColor.needsUpdate = u,
            l.lightProbe.needsUpdate = u,
            l.directionalLights.needsUpdate = u,
            l.directionalLightShadows.needsUpdate = u,
            l.pointLights.needsUpdate = u,
            l.pointLightShadows.needsUpdate = u,
            l.spotLights.needsUpdate = u,
            l.spotLightShadows.needsUpdate = u,
            l.rectAreaLights.needsUpdate = u,
            l.hemisphereLights.needsUpdate = u),
            r && n.fog && function(t, e) {
                t.fogColor.value.copy(e.color),
                e.isFog ? (t.fogNear.value = e.near,
                t.fogFar.value = e.far) : e.isFogExp2 && (t.fogDensity.value = e.density)
            }(x, r),
            n.isMeshBasicMaterial ? Et(x, n) : n.isMeshLambertMaterial ? (Et(x, n),
            function(t, e) {
                e.emissiveMap && (t.emissiveMap.value = e.emissiveMap)
            }(x, n)) : n.isMeshToonMaterial ? (Et(x, n),
            function(t, e) {
                t.specular.value.copy(e.specular),
                t.shininess.value = Math.max(e.shininess, 1e-4),
                e.gradientMap && (t.gradientMap.value = e.gradientMap);
                e.emissiveMap && (t.emissiveMap.value = e.emissiveMap);
                e.bumpMap && (t.bumpMap.value = e.bumpMap,
                t.bumpScale.value = e.bumpScale,
                e.side === T && (t.bumpScale.value *= -1));
                e.normalMap && (t.normalMap.value = e.normalMap,
                t.normalScale.value.copy(e.normalScale),
                e.side === T && t.normalScale.value.negate());
                e.displacementMap && (t.displacementMap.value = e.displacementMap,
                t.displacementScale.value = e.displacementScale,
                t.displacementBias.value = e.displacementBias)
            }(x, n)) : n.isMeshPhongMaterial ? (Et(x, n),
            function(t, e) {
                t.specular.value.copy(e.specular),
                t.shininess.value = Math.max(e.shininess, 1e-4),
                e.emissiveMap && (t.emissiveMap.value = e.emissiveMap);
                e.bumpMap && (t.bumpMap.value = e.bumpMap,
                t.bumpScale.value = e.bumpScale,
                e.side === T && (t.bumpScale.value *= -1));
                e.normalMap && (t.normalMap.value = e.normalMap,
                t.normalScale.value.copy(e.normalScale),
                e.side === T && t.normalScale.value.negate());
                e.displacementMap && (t.displacementMap.value = e.displacementMap,
                t.displacementScale.value = e.displacementScale,
                t.displacementBias.value = e.displacementBias)
            }(x, n)) : n.isMeshStandardMaterial ? (Et(x, n, o),
            n.isMeshPhysicalMaterial ? function(t, e, n) {
                Ct(t, e, n),
                t.reflectivity.value = e.reflectivity,
                t.clearcoat.value = e.clearcoat,
                t.clearcoatRoughness.value = e.clearcoatRoughness,
                e.sheen && t.sheen.value.copy(e.sheen);
                e.clearcoatMap && (t.clearcoatMap.value = e.clearcoatMap);
                e.clearcoatRoughnessMap && (t.clearcoatRoughnessMap.value = e.clearcoatRoughnessMap);
                e.clearcoatNormalMap && (t.clearcoatNormalScale.value.copy(e.clearcoatNormalScale),
                t.clearcoatNormalMap.value = e.clearcoatNormalMap,
                e.side === T && t.clearcoatNormalScale.value.negate());
                t.transparency.value = e.transparency
            }(x, n, o) : Ct(x, n, o)) : n.isMeshMatcapMaterial ? (Et(x, n),
            function(t, e) {
                e.matcap && (t.matcap.value = e.matcap);
                e.bumpMap && (t.bumpMap.value = e.bumpMap,
                t.bumpScale.value = e.bumpScale,
                e.side === T && (t.bumpScale.value *= -1));
                e.normalMap && (t.normalMap.value = e.normalMap,
                t.normalScale.value.copy(e.normalScale),
                e.side === T && t.normalScale.value.negate());
                e.displacementMap && (t.displacementMap.value = e.displacementMap,
                t.displacementScale.value = e.displacementScale,
                t.displacementBias.value = e.displacementBias)
            }(x, n)) : n.isMeshDepthMaterial ? (Et(x, n),
            function(t, e) {
                e.displacementMap && (t.displacementMap.value = e.displacementMap,
                t.displacementScale.value = e.displacementScale,
                t.displacementBias.value = e.displacementBias)
            }(x, n)) : n.isMeshDistanceMaterial ? (Et(x, n),
            function(t, e) {
                e.displacementMap && (t.displacementMap.value = e.displacementMap,
                t.displacementScale.value = e.displacementScale,
                t.displacementBias.value = e.displacementBias);
                t.referencePosition.value.copy(e.referencePosition),
                t.nearDistance.value = e.nearDistance,
                t.farDistance.value = e.farDistance
            }(x, n)) : n.isMeshNormalMaterial ? (Et(x, n),
            function(t, e) {
                e.bumpMap && (t.bumpMap.value = e.bumpMap,
                t.bumpScale.value = e.bumpScale,
                e.side === T && (t.bumpScale.value *= -1));
                e.normalMap && (t.normalMap.value = e.normalMap,
                t.normalScale.value.copy(e.normalScale),
                e.side === T && t.normalScale.value.negate());
                e.displacementMap && (t.displacementMap.value = e.displacementMap,
                t.displacementScale.value = e.displacementScale,
                t.displacementBias.value = e.displacementBias)
            }(x, n)) : n.isLineBasicMaterial ? (function(t, e) {
                t.diffuse.value.copy(e.color),
                t.opacity.value = e.opacity
            }(x, n),
            n.isLineDashedMaterial && function(t, e) {
                t.dashSize.value = e.dashSize,
                t.totalSize.value = e.dashSize + e.gapSize,
                t.scale.value = e.scale
            }(x, n)) : n.isPointsMaterial ? function(t, e) {
                t.diffuse.value.copy(e.color),
                t.opacity.value = e.opacity,
                t.size.value = e.size * Y,
                t.scale.value = .5 * X,
                e.map && (t.map.value = e.map);
                e.alphaMap && (t.alphaMap.value = e.alphaMap);
                var n;
                e.map ? n = e.map : e.alphaMap && (n = e.alphaMap);
                void 0 !== n && (!0 === n.matrixAutoUpdate && n.updateMatrix(),
                t.uvTransform.value.copy(n.matrix))
            }(x, n) : n.isSpriteMaterial ? function(t, e) {
                t.diffuse.value.copy(e.color),
                t.opacity.value = e.opacity,
                t.rotation.value = e.rotation,
                e.map && (t.map.value = e.map);
                e.alphaMap && (t.alphaMap.value = e.alphaMap);
                var n;
                e.map ? n = e.map : e.alphaMap && (n = e.alphaMap);
                void 0 !== n && (!0 === n.matrixAutoUpdate && n.updateMatrix(),
                t.uvTransform.value.copy(n.matrix))
            }(x, n) : n.isShadowMaterial && (x.color.value.copy(n.color),
            x.opacity.value = n.opacity),
            void 0 !== x.ltc_1 && (x.ltc_1.value = Fo.LTC_1),
            void 0 !== x.ltc_2 && (x.ltc_2.value = Fo.LTC_2),
            ts.upload(h, a.uniformsList, x, b),
            n.isShaderMaterial && (n.uniformsNeedUpdate = !1)),
            n.isShaderMaterial && !0 === n.uniformsNeedUpdate && (ts.upload(h, a.uniformsList, x, b),
            n.uniformsNeedUpdate = !1),
            n.isSpriteMaterial && S.setValue(h, "center", i.center),
            S.setValue(h, "modelViewMatrix", i.modelViewMatrix),
            S.setValue(h, "normalMatrix", i.normalMatrix),
            S.setValue(h, "modelMatrix", i.matrixWorld),
            w
        }
        function Et(t, e, n) {
            t.opacity.value = e.opacity,
            e.color && t.diffuse.value.copy(e.color),
            e.emissive && t.emissive.value.copy(e.emissive).multiplyScalar(e.emissiveIntensity),
            e.map && (t.map.value = e.map),
            e.alphaMap && (t.alphaMap.value = e.alphaMap),
            e.specularMap && (t.specularMap.value = e.specularMap);
            var i, r, o = e.envMap || n;
            o && (t.envMap.value = o,
            t.flipEnvMap.value = o.isCubeTexture ? -1 : 1,
            t.reflectivity.value = e.reflectivity,
            t.refractionRatio.value = e.refractionRatio,
            t.maxMipLevel.value = y.get(o).__maxMipLevel),
            e.lightMap && (t.lightMap.value = e.lightMap,
            t.lightMapIntensity.value = e.lightMapIntensity),
            e.aoMap && (t.aoMap.value = e.aoMap,
            t.aoMapIntensity.value = e.aoMapIntensity),
            e.map ? i = e.map : e.specularMap ? i = e.specularMap : e.displacementMap ? i = e.displacementMap : e.normalMap ? i = e.normalMap : e.bumpMap ? i = e.bumpMap : e.roughnessMap ? i = e.roughnessMap : e.metalnessMap ? i = e.metalnessMap : e.alphaMap ? i = e.alphaMap : e.emissiveMap && (i = e.emissiveMap),
            void 0 !== i && (i.isWebGLRenderTarget && (i = i.texture),
            !0 === i.matrixAutoUpdate && i.updateMatrix(),
            t.uvTransform.value.copy(i.matrix)),
            e.aoMap ? r = e.aoMap : e.lightMap && (r = e.lightMap),
            void 0 !== r && (r.isWebGLRenderTarget && (r = r.texture),
            !0 === r.matrixAutoUpdate && r.updateMatrix(),
            t.uv2Transform.value.copy(r.matrix))
        }
        function Ct(t, e, n) {
            t.roughness.value = e.roughness,
            t.metalness.value = e.metalness,
            e.roughnessMap && (t.roughnessMap.value = e.roughnessMap),
            e.metalnessMap && (t.metalnessMap.value = e.metalnessMap),
            e.emissiveMap && (t.emissiveMap.value = e.emissiveMap),
            e.bumpMap && (t.bumpMap.value = e.bumpMap,
            t.bumpScale.value = e.bumpScale,
            e.side === T && (t.bumpScale.value *= -1)),
            e.normalMap && (t.normalMap.value = e.normalMap,
            t.normalScale.value.copy(e.normalScale),
            e.side === T && t.normalScale.value.negate()),
            e.displacementMap && (t.displacementMap.value = e.displacementMap,
            t.displacementScale.value = e.displacementScale,
            t.displacementBias.value = e.displacementBias),
            (e.envMap || n) && (t.envMapIntensity.value = e.envMapIntensity)
        }
        yt.setAnimationLoop((function(t) {
            lt.isPresenting || vt && vt(t)
        }
        )),
        "undefined" != typeof window && yt.setContext(window),
        this.setAnimationLoop = function(t) {
            vt = t,
            lt.setAnimationLoop(t),
            yt.start()
        }
        ,
        this.render = function(t, e) {
            var n, i;
            if (void 0 !== arguments[2] && (console.warn("THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead."),
            n = arguments[2]),
            void 0 !== arguments[3] && (console.warn("THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead."),
            i = arguments[3]),
            e && e.isCamera) {
                if (!D) {
                    U.geometry = null,
                    U.program = null,
                    U.wireframe = !1,
                    F = -1,
                    B = null,
                    !0 === t.autoUpdate && t.updateMatrixWorld(),
                    null === e.parent && e.updateMatrixWorld(),
                    lt.enabled && lt.isPresenting && (e = lt.getCamera(e)),
                    (p = C.get(t, e)).init(),
                    t.onBeforeRender(k, t, e, n || j),
                    rt.multiplyMatrices(e.projectionMatrix, e.matrixWorldInverse),
                    tt.setFromProjectionMatrix(rt),
                    it = this.localClippingEnabled,
                    nt = et.init(this.clippingPlanes, it, e),
                    (d = E.get(t, e)).init(),
                    bt(t, e, 0, k.sortObjects),
                    d.finish(),
                    !0 === k.sortObjects && d.sort(K, Z),
                    nt && et.beginShadows();
                    var r = p.state.shadowsArray;
                    ut.render(r, t, e),
                    p.setupLights(e),
                    nt && et.endShadows(),
                    this.info.autoReset && this.info.reset(),
                    void 0 !== n && this.setRenderTarget(n),
                    A.render(d, t, e, i);
                    var o = d.opaque
                      , a = d.transparent;
                    if (t.overrideMaterial) {
                        var s = t.overrideMaterial;
                        o.length && wt(o, t, e, s),
                        a.length && wt(a, t, e, s)
                    } else
                        o.length && wt(o, t, e),
                        a.length && wt(a, t, e);
                    t.onAfterRender(k, t, e),
                    null !== j && (b.updateRenderTargetMipmap(j),
                    b.updateMultisampleRenderTarget(j)),
                    g.buffers.depth.setTest(!0),
                    g.buffers.depth.setMask(!0),
                    g.buffers.color.setMask(!0),
                    g.setPolygonOffset(!1),
                    d = null,
                    p = null
                }
            } else
                console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.")
        }
        ,
        this.setFramebuffer = function(t) {
            R !== t && null === j && h.bindFramebuffer(36160, t),
            R = t
        }
        ,
        this.getActiveCubeFace = function() {
            return L
        }
        ,
        this.getActiveMipmapLevel = function() {
            return N
        }
        ,
        this.getRenderTarget = function() {
            return j
        }
        ,
        this.setRenderTarget = function(t, e, n) {
            j = t,
            L = e,
            N = n,
            t && void 0 === y.get(t).__webglFramebuffer && b.setupRenderTarget(t);
            var i = R
              , r = !1;
            if (t) {
                var o = y.get(t).__webglFramebuffer;
                t.isWebGLCubeRenderTarget ? (i = o[e || 0],
                r = !0) : i = t.isWebGLMultisampleRenderTarget ? y.get(t).__webglMultisampledFramebuffer : o,
                G.copy(t.viewport),
                H.copy(t.scissor),
                W = t.scissorTest
            } else
                G.copy(J).multiplyScalar(Y).floor(),
                H.copy(Q).multiplyScalar(Y).floor(),
                W = $;
            if (V !== i && (h.bindFramebuffer(36160, i),
            V = i),
            g.viewport(G),
            g.scissor(H),
            g.setScissorTest(W),
            r) {
                var a = y.get(t.texture);
                h.framebufferTexture2D(36160, 36064, 34069 + (e || 0), a.__webglTexture, n || 0)
            }
        }
        ,
        this.readRenderTargetPixels = function(t, e, n, i, r, o, a) {
            if (t && t.isWebGLRenderTarget) {
                var s = y.get(t).__webglFramebuffer;
                if (t.isWebGLCubeRenderTarget && void 0 !== a && (s = s[a]),
                s) {
                    var c = !1;
                    s !== V && (h.bindFramebuffer(36160, s),
                    c = !0);
                    try {
                        var l = t.texture
                          , u = l.format
                          , d = l.type;
                        if (u !== Jt && I.convert(u) !== h.getParameter(35739))
                            return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");
                        if (!(d === jt || I.convert(d) === h.getParameter(35738) || d === Gt && (m.isWebGL2 || f.get("OES_texture_float") || f.get("WEBGL_color_buffer_float")) || d === Ht && (m.isWebGL2 ? f.get("EXT_color_buffer_float") : f.get("EXT_color_buffer_half_float"))))
                            return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");
                        36053 === h.checkFramebufferStatus(36160) ? e >= 0 && e <= t.width - i && n >= 0 && n <= t.height - r && h.readPixels(e, n, i, r, I.convert(u), I.convert(d), o) : console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.")
                    } finally {
                        c && h.bindFramebuffer(36160, V)
                    }
                }
            } else
                console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")
        }
        ,
        this.copyFramebufferToTexture = function(t, e, n) {
            void 0 === n && (n = 0);
            var i = Math.pow(2, -n)
              , r = Math.floor(e.image.width * i)
              , o = Math.floor(e.image.height * i)
              , a = I.convert(e.format);
            b.setTexture2D(e, 0),
            h.copyTexImage2D(3553, n, a, t.x, t.y, r, o, 0),
            g.unbindTexture()
        }
        ,
        this.copyTextureToTexture = function(t, e, n, i) {
            var r = e.image.width
              , o = e.image.height
              , a = I.convert(n.format)
              , s = I.convert(n.type);
            b.setTexture2D(n, 0),
            e.isDataTexture ? h.texSubImage2D(3553, i || 0, t.x, t.y, r, o, a, s, e.image.data) : h.texSubImage2D(3553, i || 0, t.x, t.y, a, s, e.image),
            g.unbindTexture()
        }
        ,
        this.initTexture = function(t) {
            b.setTexture2D(t, 0),
            g.unbindTexture()
        }
        ,
        "undefined" != typeof __THREE_DEVTOOLS__ && __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{
            detail: this
        }))
    }
    function zs(t, e) {
        this.name = "",
        this.color = new Er(t),
        this.density = void 0 !== e ? e : 25e-5
    }
    function Gs(t, e, n) {
        this.name = "",
        this.color = new Er(t),
        this.near = void 0 !== e ? e : 1,
        this.far = void 0 !== n ? n : 1e3
    }
    function Hs(t, e) {
        this.array = t,
        this.stride = e,
        this.count = void 0 !== t ? t.length / e : 0,
        this.usage = Nn,
        this.updateRange = {
            offset: 0,
            count: -1
        },
        this.version = 0
    }
    Vs.prototype = Object.assign(Object.create(ko.prototype), {
        constructor: Vs,
        isArrayCamera: !0
    }),
    Fs.prototype = Object.assign(Object.create(Di.prototype), {
        constructor: Fs,
        isGroup: !0
    }),
    Object.assign(Us.prototype, Wn.prototype),
    Object.assign(zs.prototype, {
        isFogExp2: !0,
        clone: function() {
            return new zs(this.color,this.density)
        },
        toJSON: function() {
            return {
                type: "FogExp2",
                color: this.color.getHex(),
                density: this.density
            }
        }
    }),
    Object.assign(Gs.prototype, {
        isFog: !0,
        clone: function() {
            return new Gs(this.color,this.near,this.far)
        },
        toJSON: function() {
            return {
                type: "Fog",
                color: this.color.getHex(),
                near: this.near,
                far: this.far
            }
        }
    }),
    Object.defineProperty(Hs.prototype, "needsUpdate", {
        set: function(t) {
            !0 === t && this.version++
        }
    }),
    Object.assign(Hs.prototype, {
        isInterleavedBuffer: !0,
        onUploadCallback: function() {},
        setUsage: function(t) {
            return this.usage = t,
            this
        },
        copy: function(t) {
            return this.array = new t.array.constructor(t.array),
            this.count = t.count,
            this.stride = t.stride,
            this.usage = t.usage,
            this
        },
        copyAt: function(t, e, n) {
            t *= this.stride,
            n *= e.stride;
            for (var i = 0, r = this.stride; i < r; i++)
                this.array[t + i] = e.array[n + i];
            return this
        },
        set: function(t, e) {
            return void 0 === e && (e = 0),
            this.array.set(t, e),
            this
        },
        clone: function() {
            return (new this.constructor).copy(this)
        },
        onUpload: function(t) {
            return this.onUploadCallback = t,
            this
        }
    });
    var Ws, qs = new si;
    function Xs(t, e, n, i) {
        this.data = t,
        this.itemSize = e,
        this.offset = n,
        this.normalized = !0 === i
    }
    function Ys(t) {
        Pr.call(this),
        this.type = "SpriteMaterial",
        this.color = new Er(16777215),
        this.map = null,
        this.alphaMap = null,
        this.rotation = 0,
        this.sizeAttenuation = !0,
        this.transparent = !0,
        this.setValues(t)
    }
    Object.defineProperties(Xs.prototype, {
        count: {
            get: function() {
                return this.data.count
            }
        },
        array: {
            get: function() {
                return this.data.array
            }
        }
    }),
    Object.assign(Xs.prototype, {
        isInterleavedBufferAttribute: !0,
        applyMatrix4: function(t) {
            for (var e = 0, n = this.data.count; e < n; e++)
                qs.x = this.getX(e),
                qs.y = this.getY(e),
                qs.z = this.getZ(e),
                qs.applyMatrix4(t),
                this.setXYZ(e, qs.x, qs.y, qs.z);
            return this
        },
        setX: function(t, e) {
            return this.data.array[t * this.data.stride + this.offset] = e,
            this
        },
        setY: function(t, e) {
            return this.data.array[t * this.data.stride + this.offset + 1] = e,
            this
        },
        setZ: function(t, e) {
            return this.data.array[t * this.data.stride + this.offset + 2] = e,
            this
        },
        setW: function(t, e) {
            return this.data.array[t * this.data.stride + this.offset + 3] = e,
            this
        },
        getX: function(t) {
            return this.data.array[t * this.data.stride + this.offset]
        },
        getY: function(t) {
            return this.data.array[t * this.data.stride + this.offset + 1]
        },
        getZ: function(t) {
            return this.data.array[t * this.data.stride + this.offset + 2]
        },
        getW: function(t) {
            return this.data.array[t * this.data.stride + this.offset + 3]
        },
        setXY: function(t, e, n) {
            return t = t * this.data.stride + this.offset,
            this.data.array[t + 0] = e,
            this.data.array[t + 1] = n,
            this
        },
        setXYZ: function(t, e, n, i) {
            return t = t * this.data.stride + this.offset,
            this.data.array[t + 0] = e,
            this.data.array[t + 1] = n,
            this.data.array[t + 2] = i,
            this
        },
        setXYZW: function(t, e, n, i, r) {
            return t = t * this.data.stride + this.offset,
            this.data.array[t + 0] = e,
            this.data.array[t + 1] = n,
            this.data.array[t + 2] = i,
            this.data.array[t + 3] = r,
            this
        }
    }),
    Ys.prototype = Object.create(Pr.prototype),
    Ys.prototype.constructor = Ys,
    Ys.prototype.isSpriteMaterial = !0,
    Ys.prototype.copy = function(t) {
        return Pr.prototype.copy.call(this, t),
        this.color.copy(t.color),
        this.map = t.map,
        this.alphaMap = t.alphaMap,
        this.rotation = t.rotation,
        this.sizeAttenuation = t.sizeAttenuation,
        this
    }
    ;
    var Ks = new si
      , Zs = new si
      , Js = new si
      , Qs = new Zn
      , $s = new Zn
      , tc = new mi
      , ec = new si
      , nc = new si
      , ic = new si
      , rc = new Zn
      , oc = new Zn
      , ac = new Zn;
    function sc(t) {
        if (Di.call(this),
        this.type = "Sprite",
        void 0 === Ws) {
            Ws = new Qr;
            var e = new Hs(new Float32Array([-.5, -.5, 0, 0, 0, .5, -.5, 0, 1, 0, .5, .5, 0, 1, 1, -.5, .5, 0, 0, 1]),5);
            Ws.setIndex([0, 1, 2, 0, 2, 3]),
            Ws.setAttribute("position", new Xs(e,3,0,!1)),
            Ws.setAttribute("uv", new Xs(e,2,3,!1))
        }
        this.geometry = Ws,
        this.material = void 0 !== t ? t : new Ys,
        this.center = new Zn(.5,.5)
    }
    function cc(t, e, n, i, r, o) {
        Qs.subVectors(t, n).addScalar(.5).multiply(i),
        void 0 !== r ? ($s.x = o * Qs.x - r * Qs.y,
        $s.y = r * Qs.x + o * Qs.y) : $s.copy(Qs),
        t.copy(e),
        t.x += $s.x,
        t.y += $s.y,
        t.applyMatrix4(tc)
    }
    sc.prototype = Object.assign(Object.create(Di.prototype), {
        constructor: sc,
        isSprite: !0,
        raycast: function(t, e) {
            null === t.camera && console.error('THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'),
            Zs.setFromMatrixScale(this.matrixWorld),
            tc.copy(t.camera.matrixWorld),
            this.modelViewMatrix.multiplyMatrices(t.camera.matrixWorldInverse, this.matrixWorld),
            Js.setFromMatrixPosition(this.modelViewMatrix),
            t.camera.isPerspectiveCamera && !1 === this.material.sizeAttenuation && Zs.multiplyScalar(-Js.z);
            var n, i, r = this.material.rotation;
            0 !== r && (i = Math.cos(r),
            n = Math.sin(r));
            var o = this.center;
            cc(ec.set(-.5, -.5, 0), Js, o, Zs, n, i),
            cc(nc.set(.5, -.5, 0), Js, o, Zs, n, i),
            cc(ic.set(.5, .5, 0), Js, o, Zs, n, i),
            rc.set(0, 0),
            oc.set(1, 0),
            ac.set(1, 1);
            var a = t.ray.intersectTriangle(ec, nc, ic, !1, Ks);
            if (null !== a || (cc(nc.set(-.5, .5, 0), Js, o, Zs, n, i),
            oc.set(0, 1),
            null !== (a = t.ray.intersectTriangle(ec, ic, nc, !1, Ks)))) {
                var s = t.ray.origin.distanceTo(Ks);
                s < t.near || s > t.far || e.push({
                    distance: s,
                    point: Ks.clone(),
                    uv: wr.getUV(Ks, ec, nc, ic, rc, oc, ac, new Zn),
                    face: null,
                    object: this
                })
            }
        },
        clone: function() {
            return new this.constructor(this.material).copy(this)
        },
        copy: function(t) {
            return Di.prototype.copy.call(this, t),
            void 0 !== t.center && this.center.copy(t.center),
            this
        }
    });
    var lc = new si
      , uc = new si;
    function dc() {
        Di.call(this),
        this._currentLevel = 0,
        this.type = "LOD",
        Object.defineProperties(this, {
            levels: {
                enumerable: !0,
                value: []
            }
        }),
        this.autoUpdate = !0
    }
    function pc(t, e) {
        t && t.isGeometry && console.error("THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead."),
        vo.call(this, t, e),
        this.type = "SkinnedMesh",
        this.bindMode = "attached",
        this.bindMatrix = new mi,
        this.bindMatrixInverse = new mi
    }
    dc.prototype = Object.assign(Object.create(Di.prototype), {
        constructor: dc,
        isLOD: !0,
        copy: function(t) {
            Di.prototype.copy.call(this, t, !1);
            for (var e = t.levels, n = 0, i = e.length; n < i; n++) {
                var r = e[n];
                this.addLevel(r.object.clone(), r.distance)
            }
            return this.autoUpdate = t.autoUpdate,
            this
        },
        addLevel: function(t, e) {
            void 0 === e && (e = 0),
            e = Math.abs(e);
            for (var n = this.levels, i = 0; i < n.length && !(e < n[i].distance); i++)
                ;
            return n.splice(i, 0, {
                distance: e,
                object: t
            }),
            this.add(t),
            this
        },
        getCurrentLevel: function() {
            return this._currentLevel
        },
        getObjectForDistance: function(t) {
            var e = this.levels;
            if (e.length > 0) {
                for (var n = 1, i = e.length; n < i && !(t < e[n].distance); n++)
                    ;
                return e[n - 1].object
            }
            return null
        },
        raycast: function(t, e) {
            if (this.levels.length > 0) {
                lc.setFromMatrixPosition(this.matrixWorld);
                var n = t.ray.origin.distanceTo(lc);
                this.getObjectForDistance(n).raycast(t, e)
            }
        },
        update: function(t) {
            var e = this.levels;
            if (e.length > 1) {
                lc.setFromMatrixPosition(t.matrixWorld),
                uc.setFromMatrixPosition(this.matrixWorld);
                var n = lc.distanceTo(uc) / t.zoom;
                e[0].object.visible = !0;
                for (var i = 1, r = e.length; i < r && n >= e[i].distance; i++)
                    e[i - 1].object.visible = !1,
                    e[i].object.visible = !0;
                for (this._currentLevel = i - 1; i < r; i++)
                    e[i].object.visible = !1
            }
        },
        toJSON: function(t) {
            var e = Di.prototype.toJSON.call(this, t);
            !1 === this.autoUpdate && (e.object.autoUpdate = !1),
            e.object.levels = [];
            for (var n = this.levels, i = 0, r = n.length; i < r; i++) {
                var o = n[i];
                e.object.levels.push({
                    object: o.object.uuid,
                    distance: o.distance
                })
            }
            return e
        }
    }),
    pc.prototype = Object.assign(Object.create(vo.prototype), {
        constructor: pc,
        isSkinnedMesh: !0,
        bind: function(t, e) {
            this.skeleton = t,
            void 0 === e && (this.updateMatrixWorld(!0),
            this.skeleton.calculateInverses(),
            e = this.matrixWorld),
            this.bindMatrix.copy(e),
            this.bindMatrixInverse.getInverse(e)
        },
        pose: function() {
            this.skeleton.pose()
        },
        normalizeSkinWeights: function() {
            for (var t = new ei, e = this.geometry.attributes.skinWeight, n = 0, i = e.count; n < i; n++) {
                t.x = e.getX(n),
                t.y = e.getY(n),
                t.z = e.getZ(n),
                t.w = e.getW(n);
                var r = 1 / t.manhattanLength();
                r !== 1 / 0 ? t.multiplyScalar(r) : t.set(1, 0, 0, 0),
                e.setXYZW(n, t.x, t.y, t.z, t.w)
            }
        },
        updateMatrixWorld: function(t) {
            vo.prototype.updateMatrixWorld.call(this, t),
            "attached" === this.bindMode ? this.bindMatrixInverse.getInverse(this.matrixWorld) : "detached" === this.bindMode ? this.bindMatrixInverse.getInverse(this.bindMatrix) : console.warn("THREE.SkinnedMesh: Unrecognized bindMode: " + this.bindMode)
        },
        clone: function() {
            return new this.constructor(this.geometry,this.material).copy(this)
        }
    });
    var hc = new mi
      , fc = new mi;
    function mc(t, e) {
        if (t = t || [],
        this.bones = t.slice(0),
        this.boneMatrices = new Float32Array(16 * this.bones.length),
        this.frame = -1,
        void 0 === e)
            this.calculateInverses();
        else if (this.bones.length === e.length)
            this.boneInverses = e.slice(0);
        else {
            console.warn("THREE.Skeleton boneInverses is the wrong length."),
            this.boneInverses = [];
            for (var n = 0, i = this.bones.length; n < i; n++)
                this.boneInverses.push(new mi)
        }
    }
    function gc() {
        Di.call(this),
        this.type = "Bone"
    }
    Object.assign(mc.prototype, {
        calculateInverses: function() {
            this.boneInverses = [];
            for (var t = 0, e = this.bones.length; t < e; t++) {
                var n = new mi;
                this.bones[t] && n.getInverse(this.bones[t].matrixWorld),
                this.boneInverses.push(n)
            }
        },
        pose: function() {
            var t, e, n;
            for (e = 0,
            n = this.bones.length; e < n; e++)
                (t = this.bones[e]) && t.matrixWorld.getInverse(this.boneInverses[e]);
            for (e = 0,
            n = this.bones.length; e < n; e++)
                (t = this.bones[e]) && (t.parent && t.parent.isBone ? (t.matrix.getInverse(t.parent.matrixWorld),
                t.matrix.multiply(t.matrixWorld)) : t.matrix.copy(t.matrixWorld),
                t.matrix.decompose(t.position, t.quaternion, t.scale))
        },
        update: function() {
            for (var t = this.bones, e = this.boneInverses, n = this.boneMatrices, i = this.boneTexture, r = 0, o = t.length; r < o; r++) {
                var a = t[r] ? t[r].matrixWorld : fc;
                hc.multiplyMatrices(a, e[r]),
                hc.toArray(n, 16 * r)
            }
            void 0 !== i && (i.needsUpdate = !0)
        },
        clone: function() {
            return new mc(this.bones,this.boneInverses)
        },
        getBoneByName: function(t) {
            for (var e = 0, n = this.bones.length; e < n; e++) {
                var i = this.bones[e];
                if (i.name === t)
                    return i
            }
        },
        dispose: function() {
            this.boneTexture && (this.boneTexture.dispose(),
            this.boneTexture = void 0)
        }
    }),
    gc.prototype = Object.assign(Object.create(Di.prototype), {
        constructor: gc,
        isBone: !0
    });
    var vc = new mi
      , yc = new mi
      , bc = []
      , wc = new vo;
    function Sc(t, e, n) {
        vo.call(this, t, e),
        this.instanceMatrix = new Dr(new Float32Array(16 * n),16),
        this.count = n,
        this.frustumCulled = !1
    }
    function xc(t) {
        Pr.call(this),
        this.type = "LineBasicMaterial",
        this.color = new Er(16777215),
        this.linewidth = 1,
        this.linecap = "round",
        this.linejoin = "round",
        this.setValues(t)
    }
    Sc.prototype = Object.assign(Object.create(vo.prototype), {
        constructor: Sc,
        isInstancedMesh: !0,
        getMatrixAt: function(t, e) {
            e.fromArray(this.instanceMatrix.array, 16 * t)
        },
        raycast: function(t, e) {
            var n = this.matrixWorld
              , i = this.count;
            if (wc.geometry = this.geometry,
            wc.material = this.material,
            void 0 !== wc.material)
                for (var r = 0; r < i; r++)
                    this.getMatrixAt(r, vc),
                    yc.multiplyMatrices(n, vc),
                    wc.matrixWorld = yc,
                    wc.raycast(t, bc),
                    bc.length > 0 && (bc[0].instanceId = r,
                    bc[0].object = this,
                    e.push(bc[0]),
                    bc.length = 0)
        },
        setMatrixAt: function(t, e) {
            e.toArray(this.instanceMatrix.array, 16 * t)
        },
        updateMorphTargets: function() {}
    }),
    xc.prototype = Object.create(Pr.prototype),
    xc.prototype.constructor = xc,
    xc.prototype.isLineBasicMaterial = !0,
    xc.prototype.copy = function(t) {
        return Pr.prototype.copy.call(this, t),
        this.color.copy(t.color),
        this.linewidth = t.linewidth,
        this.linecap = t.linecap,
        this.linejoin = t.linejoin,
        this
    }
    ;
    var Mc = new si
      , Ec = new si
      , Cc = new mi
      , Ac = new or
      , Tc = new Ji;
    function Oc(t, e, n) {
        1 === n && console.error("THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead."),
        Di.call(this),
        this.type = "Line",
        this.geometry = void 0 !== t ? t : new Qr,
        this.material = void 0 !== e ? e : new xc
    }
    Oc.prototype = Object.assign(Object.create(Di.prototype), {
        constructor: Oc,
        isLine: !0,
        computeLineDistances: function() {
            var t = this.geometry;
            if (t.isBufferGeometry)
                if (null === t.index) {
                    for (var e = t.attributes.position, n = [0], i = 1, r = e.count; i < r; i++)
                        Mc.fromBufferAttribute(e, i - 1),
                        Ec.fromBufferAttribute(e, i),
                        n[i] = n[i - 1],
                        n[i] += Mc.distanceTo(Ec);
                    t.setAttribute("lineDistance", new Br(n,1))
                } else
                    console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");
            else if (t.isGeometry) {
                var o = t.vertices;
                (n = t.lineDistances)[0] = 0;
                for (i = 1,
                r = o.length; i < r; i++)
                    n[i] = n[i - 1],
                    n[i] += o[i - 1].distanceTo(o[i])
            }
            return this
        },
        raycast: function(t, e) {
            var n = this.geometry
              , i = this.matrixWorld
              , r = t.params.Line.threshold;
            if (null === n.boundingSphere && n.computeBoundingSphere(),
            Tc.copy(n.boundingSphere),
            Tc.applyMatrix4(i),
            Tc.radius += r,
            !1 !== t.ray.intersectsSphere(Tc)) {
                Cc.getInverse(i),
                Ac.copy(t.ray).applyMatrix4(Cc);
                var o = r / ((this.scale.x + this.scale.y + this.scale.z) / 3)
                  , a = o * o
                  , s = new si
                  , c = new si
                  , l = new si
                  , u = new si
                  , d = this && this.isLineSegments ? 2 : 1;
                if (n.isBufferGeometry) {
                    var p = n.index
                      , h = n.attributes.position.array;
                    if (null !== p)
                        for (var f = p.array, m = 0, g = f.length - 1; m < g; m += d) {
                            var v = f[m]
                              , y = f[m + 1];
                            if (s.fromArray(h, 3 * v),
                            c.fromArray(h, 3 * y),
                            !(Ac.distanceSqToSegment(s, c, u, l) > a))
                                u.applyMatrix4(this.matrixWorld),
                                (S = t.ray.origin.distanceTo(u)) < t.near || S > t.far || e.push({
                                    distance: S,
                                    point: l.clone().applyMatrix4(this.matrixWorld),
                                    index: m,
                                    face: null,
                                    faceIndex: null,
                                    object: this
                                })
                        }
                    else
                        for (m = 0,
                        g = h.length / 3 - 1; m < g; m += d) {
                            if (s.fromArray(h, 3 * m),
                            c.fromArray(h, 3 * m + 3),
                            !(Ac.distanceSqToSegment(s, c, u, l) > a))
                                u.applyMatrix4(this.matrixWorld),
                                (S = t.ray.origin.distanceTo(u)) < t.near || S > t.far || e.push({
                                    distance: S,
                                    point: l.clone().applyMatrix4(this.matrixWorld),
                                    index: m,
                                    face: null,
                                    faceIndex: null,
                                    object: this
                                })
                        }
                } else if (n.isGeometry) {
                    var b = n.vertices
                      , w = b.length;
                    for (m = 0; m < w - 1; m += d) {
                        var S;
                        if (!(Ac.distanceSqToSegment(b[m], b[m + 1], u, l) > a))
                            u.applyMatrix4(this.matrixWorld),
                            (S = t.ray.origin.distanceTo(u)) < t.near || S > t.far || e.push({
                                distance: S,
                                point: l.clone().applyMatrix4(this.matrixWorld),
                                index: m,
                                face: null,
                                faceIndex: null,
                                object: this
                            })
                    }
                }
            }
        },
        clone: function() {
            return new this.constructor(this.geometry,this.material).copy(this)
        }
    });
    var _c = new si
      , Pc = new si;
    function Ic(t, e) {
        Oc.call(this, t, e),
        this.type = "LineSegments"
    }
    function kc(t, e) {
        Oc.call(this, t, e),
        this.type = "LineLoop"
    }
    function Dc(t) {
        Pr.call(this),
        this.type = "PointsMaterial",
        this.color = new Er(16777215),
        this.map = null,
        this.alphaMap = null,
        this.size = 1,
        this.sizeAttenuation = !0,
        this.morphTargets = !1,
        this.setValues(t)
    }
    Ic.prototype = Object.assign(Object.create(Oc.prototype), {
        constructor: Ic,
        isLineSegments: !0,
        computeLineDistances: function() {
            var t = this.geometry;
            if (t.isBufferGeometry)
                if (null === t.index) {
                    for (var e = t.attributes.position, n = [], i = 0, r = e.count; i < r; i += 2)
                        _c.fromBufferAttribute(e, i),
                        Pc.fromBufferAttribute(e, i + 1),
                        n[i] = 0 === i ? 0 : n[i - 1],
                        n[i + 1] = n[i] + _c.distanceTo(Pc);
                    t.setAttribute("lineDistance", new Br(n,1))
                } else
                    console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");
            else if (t.isGeometry) {
                var o = t.vertices;
                for (n = t.lineDistances,
                i = 0,
                r = o.length; i < r; i += 2)
                    _c.copy(o[i]),
                    Pc.copy(o[i + 1]),
                    n[i] = 0 === i ? 0 : n[i - 1],
                    n[i + 1] = n[i] + _c.distanceTo(Pc)
            }
            return this
        }
    }),
    kc.prototype = Object.assign(Object.create(Oc.prototype), {
        constructor: kc,
        isLineLoop: !0
    }),
    Dc.prototype = Object.create(Pr.prototype),
    Dc.prototype.constructor = Dc,
    Dc.prototype.isPointsMaterial = !0,
    Dc.prototype.copy = function(t) {
        return Pr.prototype.copy.call(this, t),
        this.color.copy(t.color),
        this.map = t.map,
        this.alphaMap = t.alphaMap,
        this.size = t.size,
        this.sizeAttenuation = t.sizeAttenuation,
        this.morphTargets = t.morphTargets,
        this
    }
    ;
    var Rc = new mi
      , Lc = new or
      , Nc = new Ji
      , jc = new si;
    function Vc(t, e) {
        Di.call(this),
        this.type = "Points",
        this.geometry = void 0 !== t ? t : new Qr,
        this.material = void 0 !== e ? e : new Dc,
        this.updateMorphTargets()
    }
    function Fc(t, e, n, i, r, o, a) {
        var s = Lc.distanceSqToPoint(t);
        if (s < n) {
            var c = new si;
            Lc.closestPointToPoint(t, c),
            c.applyMatrix4(i);
            var l = r.ray.origin.distanceTo(c);
            if (l < r.near || l > r.far)
                return;
            o.push({
                distance: l,
                distanceToRay: Math.sqrt(s),
                point: c,
                index: e,
                face: null,
                object: a
            })
        }
    }
    function Uc(t, e, n, i, r, o, a, s, c) {
        ti.call(this, t, e, n, i, r, o, a, s, c),
        this.format = void 0 !== a ? a : Zt,
        this.minFilter = void 0 !== o ? o : kt,
        this.magFilter = void 0 !== r ? r : kt,
        this.generateMipmaps = !1
    }
    function Bc(t, e, n, i, r, o, a, s, c, l, u, d) {
        ti.call(this, null, o, a, s, c, l, i, r, u, d),
        this.image = {
            width: e,
            height: n
        },
        this.mipmaps = t,
        this.flipY = !1,
        this.generateMipmaps = !1
    }
    function zc(t, e, n, i, r, o, a, s, c) {
        ti.call(this, t, e, n, i, r, o, a, s, c),
        this.needsUpdate = !0
    }
    function Gc(t, e, n, i, r, o, a, s, c, l) {
        if ((l = void 0 !== l ? l : ee) !== ee && l !== ne)
            throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");
        void 0 === n && l === ee && (n = Ut),
        void 0 === n && l === ne && (n = Yt),
        ti.call(this, null, i, r, o, a, s, l, n, c),
        this.image = {
            width: t,
            height: e
        },
        this.magFilter = void 0 !== a ? a : Tt,
        this.minFilter = void 0 !== s ? s : Tt,
        this.flipY = !1,
        this.generateMipmaps = !1
    }
    function Hc(t) {
        Qr.call(this),
        this.type = "WireframeGeometry";
        var e, n, i, r, o, a, s, c, l, u, d = [], p = [0, 0], h = {}, f = ["a", "b", "c"];
        if (t && t.isGeometry) {
            var m = t.faces;
            for (e = 0,
            i = m.length; e < i; e++) {
                var g = m[e];
                for (n = 0; n < 3; n++)
                    s = g[f[n]],
                    c = g[f[(n + 1) % 3]],
                    p[0] = Math.min(s, c),
                    p[1] = Math.max(s, c),
                    void 0 === h[l = p[0] + "," + p[1]] && (h[l] = {
                        index1: p[0],
                        index2: p[1]
                    })
            }
            for (l in h)
                a = h[l],
                u = t.vertices[a.index1],
                d.push(u.x, u.y, u.z),
                u = t.vertices[a.index2],
                d.push(u.x, u.y, u.z)
        } else if (t && t.isBufferGeometry) {
            var v, y, b, w, S, x, M;
            if (u = new si,
            null !== t.index) {
                for (v = t.attributes.position,
                y = t.index,
                0 === (b = t.groups).length && (b = [{
                    start: 0,
                    count: y.count,
                    materialIndex: 0
                }]),
                r = 0,
                o = b.length; r < o; ++r)
                    for (e = S = (w = b[r]).start,
                    i = S + w.count; e < i; e += 3)
                        for (n = 0; n < 3; n++)
                            s = y.getX(e + n),
                            c = y.getX(e + (n + 1) % 3),
                            p[0] = Math.min(s, c),
                            p[1] = Math.max(s, c),
                            void 0 === h[l = p[0] + "," + p[1]] && (h[l] = {
                                index1: p[0],
                                index2: p[1]
                            });
                for (l in h)
                    a = h[l],
                    u.fromBufferAttribute(v, a.index1),
                    d.push(u.x, u.y, u.z),
                    u.fromBufferAttribute(v, a.index2),
                    d.push(u.x, u.y, u.z)
            } else
                for (e = 0,
                i = (v = t.attributes.position).count / 3; e < i; e++)
                    for (n = 0; n < 3; n++)
                        x = 3 * e + n,
                        u.fromBufferAttribute(v, x),
                        d.push(u.x, u.y, u.z),
                        M = 3 * e + (n + 1) % 3,
                        u.fromBufferAttribute(v, M),
                        d.push(u.x, u.y, u.z)
        }
        this.setAttribute("position", new Br(d,3))
    }
    function Wc(t, e, n) {
        Eo.call(this),
        this.type = "ParametricGeometry",
        this.parameters = {
            func: t,
            slices: e,
            stacks: n
        },
        this.fromBufferGeometry(new qc(t,e,n)),
        this.mergeVertices()
    }
    function qc(t, e, n) {
        Qr.call(this),
        this.type = "ParametricBufferGeometry",
        this.parameters = {
            func: t,
            slices: e,
            stacks: n
        };
        var i, r, o = [], a = [], s = [], c = [], l = 1e-5, u = new si, d = new si, p = new si, h = new si, f = new si;
        t.length < 3 && console.error("THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.");
        var m = e + 1;
        for (i = 0; i <= n; i++) {
            var g = i / n;
            for (r = 0; r <= e; r++) {
                var v = r / e;
                t(v, g, d),
                a.push(d.x, d.y, d.z),
                v - l >= 0 ? (t(v - l, g, p),
                h.subVectors(d, p)) : (t(v + l, g, p),
                h.subVectors(p, d)),
                g - l >= 0 ? (t(v, g - l, p),
                f.subVectors(d, p)) : (t(v, g + l, p),
                f.subVectors(p, d)),
                u.crossVectors(h, f).normalize(),
                s.push(u.x, u.y, u.z),
                c.push(v, g)
            }
        }
        for (i = 0; i < n; i++)
            for (r = 0; r < e; r++) {
                var y = i * m + r
                  , b = i * m + r + 1
                  , w = (i + 1) * m + r + 1
                  , S = (i + 1) * m + r;
                o.push(y, b, S),
                o.push(b, w, S)
            }
        this.setIndex(o),
        this.setAttribute("position", new Br(a,3)),
        this.setAttribute("normal", new Br(s,3)),
        this.setAttribute("uv", new Br(c,2))
    }
    function Xc(t, e, n, i) {
        Eo.call(this),
        this.type = "PolyhedronGeometry",
        this.parameters = {
            vertices: t,
            indices: e,
            radius: n,
            detail: i
        },
        this.fromBufferGeometry(new Yc(t,e,n,i)),
        this.mergeVertices()
    }
    function Yc(t, e, n, i) {
        Qr.call(this),
        this.type = "PolyhedronBufferGeometry",
        this.parameters = {
            vertices: t,
            indices: e,
            radius: n,
            detail: i
        },
        n = n || 1;
        var r = []
          , o = [];
        function a(t, e, n, i) {
            var r, o, a = Math.pow(2, i), c = [];
            for (r = 0; r <= a; r++) {
                c[r] = [];
                var l = t.clone().lerp(n, r / a)
                  , u = e.clone().lerp(n, r / a)
                  , d = a - r;
                for (o = 0; o <= d; o++)
                    c[r][o] = 0 === o && r === a ? l : l.clone().lerp(u, o / d)
            }
            for (r = 0; r < a; r++)
                for (o = 0; o < 2 * (a - r) - 1; o++) {
                    var p = Math.floor(o / 2);
                    o % 2 == 0 ? (s(c[r][p + 1]),
                    s(c[r + 1][p]),
                    s(c[r][p])) : (s(c[r][p + 1]),
                    s(c[r + 1][p + 1]),
                    s(c[r + 1][p]))
                }
        }
        function s(t) {
            r.push(t.x, t.y, t.z)
        }
        function c(e, n) {
            var i = 3 * e;
            n.x = t[i + 0],
            n.y = t[i + 1],
            n.z = t[i + 2]
        }
        function l(t, e, n, i) {
            i < 0 && 1 === t.x && (o[e] = t.x - 1),
            0 === n.x && 0 === n.z && (o[e] = i / 2 / Math.PI + .5)
        }
        function u(t) {
            return Math.atan2(t.z, -t.x)
        }
        !function(t) {
            for (var n = new si, i = new si, r = new si, o = 0; o < e.length; o += 3)
                c(e[o + 0], n),
                c(e[o + 1], i),
                c(e[o + 2], r),
                a(n, i, r, t)
        }(i = i || 0),
        function(t) {
            for (var e = new si, n = 0; n < r.length; n += 3)
                e.x = r[n + 0],
                e.y = r[n + 1],
                e.z = r[n + 2],
                e.normalize().multiplyScalar(t),
                r[n + 0] = e.x,
                r[n + 1] = e.y,
                r[n + 2] = e.z
        }(n),
        function() {
            for (var t = new si, e = 0; e < r.length; e += 3) {
                t.x = r[e + 0],
                t.y = r[e + 1],
                t.z = r[e + 2];
                var n = u(t) / 2 / Math.PI + .5
                  , i = (a = t,
                Math.atan2(-a.y, Math.sqrt(a.x * a.x + a.z * a.z)) / Math.PI + .5);
                o.push(n, 1 - i)
            }
            var a;
            (function() {
                for (var t = new si, e = new si, n = new si, i = new si, a = new Zn, s = new Zn, c = new Zn, d = 0, p = 0; d < r.length; d += 9,
                p += 6) {
                    t.set(r[d + 0], r[d + 1], r[d + 2]),
                    e.set(r[d + 3], r[d + 4], r[d + 5]),
                    n.set(r[d + 6], r[d + 7], r[d + 8]),
                    a.set(o[p + 0], o[p + 1]),
                    s.set(o[p + 2], o[p + 3]),
                    c.set(o[p + 4], o[p + 5]),
                    i.copy(t).add(e).add(n).divideScalar(3);
                    var h = u(i);
                    l(a, p + 0, t, h),
                    l(s, p + 2, e, h),
                    l(c, p + 4, n, h)
                }
            }
            )(),
            function() {
                for (var t = 0; t < o.length; t += 6) {
                    var e = o[t + 0]
                      , n = o[t + 2]
                      , i = o[t + 4]
                      , r = Math.max(e, n, i)
                      , a = Math.min(e, n, i);
                    r > .9 && a < .1 && (e < .2 && (o[t + 0] += 1),
                    n < .2 && (o[t + 2] += 1),
                    i < .2 && (o[t + 4] += 1))
                }
            }()
        }(),
        this.setAttribute("position", new Br(r,3)),
        this.setAttribute("normal", new Br(r.slice(),3)),
        this.setAttribute("uv", new Br(o,2)),
        0 === i ? this.computeVertexNormals() : this.normalizeNormals()
    }
    function Kc(t, e) {
        Eo.call(this),
        this.type = "TetrahedronGeometry",
        this.parameters = {
            radius: t,
            detail: e
        },
        this.fromBufferGeometry(new Zc(t,e)),
        this.mergeVertices()
    }
    function Zc(t, e) {
        Yc.call(this, [1, 1, 1, -1, -1, 1, -1, 1, -1, 1, -1, -1], [2, 1, 0, 0, 3, 2, 1, 3, 0, 2, 3, 1], t, e),
        this.type = "TetrahedronBufferGeometry",
        this.parameters = {
            radius: t,
            detail: e
        }
    }
    function Jc(t, e) {
        Eo.call(this),
        this.type = "OctahedronGeometry",
        this.parameters = {
            radius: t,
            detail: e
        },
        this.fromBufferGeometry(new Qc(t,e)),
        this.mergeVertices()
    }
    function Qc(t, e) {
        Yc.call(this, [1, 0, 0, -1, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 1, 0, 0, -1], [0, 2, 4, 0, 4, 3, 0, 3, 5, 0, 5, 2, 1, 2, 5, 1, 5, 3, 1, 3, 4, 1, 4, 2], t, e),
        this.type = "OctahedronBufferGeometry",
        this.parameters = {
            radius: t,
            detail: e
        }
    }
    function $c(t, e) {
        Eo.call(this),
        this.type = "IcosahedronGeometry",
        this.parameters = {
            radius: t,
            detail: e
        },
        this.fromBufferGeometry(new tl(t,e)),
        this.mergeVertices()
    }
    function tl(t, e) {
        var n = (1 + Math.sqrt(5)) / 2
          , i = [-1, n, 0, 1, n, 0, -1, -n, 0, 1, -n, 0, 0, -1, n, 0, 1, n, 0, -1, -n, 0, 1, -n, n, 0, -1, n, 0, 1, -n, 0, -1, -n, 0, 1];
        Yc.call(this, i, [0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11, 1, 5, 9, 5, 11, 4, 11, 10, 2, 10, 7, 6, 7, 1, 8, 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9, 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1], t, e),
        this.type = "IcosahedronBufferGeometry",
        this.parameters = {
            radius: t,
            detail: e
        }
    }
    function el(t, e) {
        Eo.call(this),
        this.type = "DodecahedronGeometry",
        this.parameters = {
            radius: t,
            detail: e
        },
        this.fromBufferGeometry(new nl(t,e)),
        this.mergeVertices()
    }
    function nl(t, e) {
        var n = (1 + Math.sqrt(5)) / 2
          , i = 1 / n
          , r = [-1, -1, -1, -1, -1, 1, -1, 1, -1, -1, 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, -1, 1, 1, 1, 0, -i, -n, 0, -i, n, 0, i, -n, 0, i, n, -i, -n, 0, -i, n, 0, i, -n, 0, i, n, 0, -n, 0, -i, n, 0, -i, -n, 0, i, n, 0, i];
        Yc.call(this, r, [3, 11, 7, 3, 7, 15, 3, 15, 13, 7, 19, 17, 7, 17, 6, 7, 6, 15, 17, 4, 8, 17, 8, 10, 17, 10, 6, 8, 0, 16, 8, 16, 2, 8, 2, 10, 0, 12, 1, 0, 1, 18, 0, 18, 16, 6, 10, 2, 6, 2, 13, 6, 13, 15, 2, 16, 18, 2, 18, 3, 2, 3, 13, 18, 1, 9, 18, 9, 11, 18, 11, 3, 4, 14, 12, 4, 12, 0, 4, 0, 8, 11, 9, 5, 11, 5, 19, 11, 19, 7, 19, 5, 14, 19, 14, 4, 19, 4, 17, 1, 12, 14, 1, 14, 5, 1, 5, 9], t, e),
        this.type = "DodecahedronBufferGeometry",
        this.parameters = {
            radius: t,
            detail: e
        }
    }
    function il(t, e, n, i, r, o) {
        Eo.call(this),
        this.type = "TubeGeometry",
        this.parameters = {
            path: t,
            tubularSegments: e,
            radius: n,
            radialSegments: i,
            closed: r
        },
        void 0 !== o && console.warn("THREE.TubeGeometry: taper has been removed.");
        var a = new rl(t,e,n,i,r);
        this.tangents = a.tangents,
        this.normals = a.normals,
        this.binormals = a.binormals,
        this.fromBufferGeometry(a),
        this.mergeVertices()
    }
    function rl(t, e, n, i, r) {
        Qr.call(this),
        this.type = "TubeBufferGeometry",
        this.parameters = {
            path: t,
            tubularSegments: e,
            radius: n,
            radialSegments: i,
            closed: r
        },
        e = e || 64,
        n = n || 1,
        i = i || 8,
        r = r || !1;
        var o = t.computeFrenetFrames(e, r);
        this.tangents = o.tangents,
        this.normals = o.normals,
        this.binormals = o.binormals;
        var a, s, c = new si, l = new si, u = new Zn, d = new si, p = [], h = [], f = [], m = [];
        function g(r) {
            d = t.getPointAt(r / e, d);
            var a = o.normals[r]
              , u = o.binormals[r];
            for (s = 0; s <= i; s++) {
                var f = s / i * Math.PI * 2
                  , m = Math.sin(f)
                  , g = -Math.cos(f);
                l.x = g * a.x + m * u.x,
                l.y = g * a.y + m * u.y,
                l.z = g * a.z + m * u.z,
                l.normalize(),
                h.push(l.x, l.y, l.z),
                c.x = d.x + n * l.x,
                c.y = d.y + n * l.y,
                c.z = d.z + n * l.z,
                p.push(c.x, c.y, c.z)
            }
        }
        !function() {
            for (a = 0; a < e; a++)
                g(a);
            g(!1 === r ? e : 0),
            function() {
                for (a = 0; a <= e; a++)
                    for (s = 0; s <= i; s++)
                        u.x = a / e,
                        u.y = s / i,
                        f.push(u.x, u.y)
            }(),
            function() {
                for (s = 1; s <= e; s++)
                    for (a = 1; a <= i; a++) {
                        var t = (i + 1) * (s - 1) + (a - 1)
                          , n = (i + 1) * s + (a - 1)
                          , r = (i + 1) * s + a
                          , o = (i + 1) * (s - 1) + a;
                        m.push(t, n, o),
                        m.push(n, r, o)
                    }
            }()
        }(),
        this.setIndex(m),
        this.setAttribute("position", new Br(p,3)),
        this.setAttribute("normal", new Br(h,3)),
        this.setAttribute("uv", new Br(f,2))
    }
    function ol(t, e, n, i, r, o, a) {
        Eo.call(this),
        this.type = "TorusKnotGeometry",
        this.parameters = {
            radius: t,
            tube: e,
            tubularSegments: n,
            radialSegments: i,
            p: r,
            q: o
        },
        void 0 !== a && console.warn("THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead."),
        this.fromBufferGeometry(new al(t,e,n,i,r,o)),
        this.mergeVertices()
    }
    function al(t, e, n, i, r, o) {
        Qr.call(this),
        this.type = "TorusKnotBufferGeometry",
        this.parameters = {
            radius: t,
            tube: e,
            tubularSegments: n,
            radialSegments: i,
            p: r,
            q: o
        },
        t = t || 1,
        e = e || .4,
        n = Math.floor(n) || 64,
        i = Math.floor(i) || 8,
        r = r || 2,
        o = o || 3;
        var a, s, c = [], l = [], u = [], d = [], p = new si, h = new si, f = new si, m = new si, g = new si, v = new si, y = new si;
        for (a = 0; a <= n; ++a) {
            var b = a / n * r * Math.PI * 2;
            for (T(b, r, o, t, f),
            T(b + .01, r, o, t, m),
            v.subVectors(m, f),
            y.addVectors(m, f),
            g.crossVectors(v, y),
            y.crossVectors(g, v),
            g.normalize(),
            y.normalize(),
            s = 0; s <= i; ++s) {
                var w = s / i * Math.PI * 2
                  , S = -e * Math.cos(w)
                  , x = e * Math.sin(w);
                p.x = f.x + (S * y.x + x * g.x),
                p.y = f.y + (S * y.y + x * g.y),
                p.z = f.z + (S * y.z + x * g.z),
                l.push(p.x, p.y, p.z),
                h.subVectors(p, f).normalize(),
                u.push(h.x, h.y, h.z),
                d.push(a / n),
                d.push(s / i)
            }
        }
        for (s = 1; s <= n; s++)
            for (a = 1; a <= i; a++) {
                var M = (i + 1) * (s - 1) + (a - 1)
                  , E = (i + 1) * s + (a - 1)
                  , C = (i + 1) * s + a
                  , A = (i + 1) * (s - 1) + a;
                c.push(M, E, A),
                c.push(E, C, A)
            }
        function T(t, e, n, i, r) {
            var o = Math.cos(t)
              , a = Math.sin(t)
              , s = n / e * t
              , c = Math.cos(s);
            r.x = i * (2 + c) * .5 * o,
            r.y = i * (2 + c) * a * .5,
            r.z = i * Math.sin(s) * .5
        }
        this.setIndex(c),
        this.setAttribute("position", new Br(l,3)),
        this.setAttribute("normal", new Br(u,3)),
        this.setAttribute("uv", new Br(d,2))
    }
    function sl(t, e, n, i, r) {
        Eo.call(this),
        this.type = "TorusGeometry",
        this.parameters = {
            radius: t,
            tube: e,
            radialSegments: n,
            tubularSegments: i,
            arc: r
        },
        this.fromBufferGeometry(new cl(t,e,n,i,r)),
        this.mergeVertices()
    }
    function cl(t, e, n, i, r) {
        Qr.call(this),
        this.type = "TorusBufferGeometry",
        this.parameters = {
            radius: t,
            tube: e,
            radialSegments: n,
            tubularSegments: i,
            arc: r
        },
        t = t || 1,
        e = e || .4,
        n = Math.floor(n) || 8,
        i = Math.floor(i) || 6,
        r = r || 2 * Math.PI;
        var o, a, s = [], c = [], l = [], u = [], d = new si, p = new si, h = new si;
        for (o = 0; o <= n; o++)
            for (a = 0; a <= i; a++) {
                var f = a / i * r
                  , m = o / n * Math.PI * 2;
                p.x = (t + e * Math.cos(m)) * Math.cos(f),
                p.y = (t + e * Math.cos(m)) * Math.sin(f),
                p.z = e * Math.sin(m),
                c.push(p.x, p.y, p.z),
                d.x = t * Math.cos(f),
                d.y = t * Math.sin(f),
                h.subVectors(p, d).normalize(),
                l.push(h.x, h.y, h.z),
                u.push(a / i),
                u.push(o / n)
            }
        for (o = 1; o <= n; o++)
            for (a = 1; a <= i; a++) {
                var g = (i + 1) * o + a - 1
                  , v = (i + 1) * (o - 1) + a - 1
                  , y = (i + 1) * (o - 1) + a
                  , b = (i + 1) * o + a;
                s.push(g, v, b),
                s.push(v, y, b)
            }
        this.setIndex(s),
        this.setAttribute("position", new Br(c,3)),
        this.setAttribute("normal", new Br(l,3)),
        this.setAttribute("uv", new Br(u,2))
    }
    Vc.prototype = Object.assign(Object.create(Di.prototype), {
        constructor: Vc,
        isPoints: !0,
        raycast: function(t, e) {
            var n = this.geometry
              , i = this.matrixWorld
              , r = t.params.Points.threshold;
            if (null === n.boundingSphere && n.computeBoundingSphere(),
            Nc.copy(n.boundingSphere),
            Nc.applyMatrix4(i),
            Nc.radius += r,
            !1 !== t.ray.intersectsSphere(Nc)) {
                Rc.getInverse(i),
                Lc.copy(t.ray).applyMatrix4(Rc);
                var o = r / ((this.scale.x + this.scale.y + this.scale.z) / 3)
                  , a = o * o;
                if (n.isBufferGeometry) {
                    var s = n.index
                      , c = n.attributes.position.array;
                    if (null !== s)
                        for (var l = s.array, u = 0, d = l.length; u < d; u++) {
                            var p = l[u];
                            jc.fromArray(c, 3 * p),
                            Fc(jc, p, a, i, t, e, this)
                        }
                    else {
                        u = 0;
                        for (var h = c.length / 3; u < h; u++)
                            jc.fromArray(c, 3 * u),
                            Fc(jc, u, a, i, t, e, this)
                    }
                } else {
                    var f = n.vertices;
                    for (u = 0,
                    h = f.length; u < h; u++)
                        Fc(f[u], u, a, i, t, e, this)
                }
            }
        },
        updateMorphTargets: function() {
            var t, e, n, i = this.geometry;
            if (i.isBufferGeometry) {
                var r = i.morphAttributes
                  , o = Object.keys(r);
                if (o.length > 0) {
                    var a = r[o[0]];
                    if (void 0 !== a)
                        for (this.morphTargetInfluences = [],
                        this.morphTargetDictionary = {},
                        t = 0,
                        e = a.length; t < e; t++)
                            n = a[t].name || String(t),
                            this.morphTargetInfluences.push(0),
                            this.morphTargetDictionary[n] = t
                }
            } else {
                var s = i.morphTargets;
                void 0 !== s && s.length > 0 && console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")
            }
        },
        clone: function() {
            return new this.constructor(this.geometry,this.material).copy(this)
        }
    }),
    Uc.prototype = Object.assign(Object.create(ti.prototype), {
        constructor: Uc,
        isVideoTexture: !0,
        update: function() {
            var t = this.image;
            t.readyState >= t.HAVE_CURRENT_DATA && (this.needsUpdate = !0)
        }
    }),
    Bc.prototype = Object.create(ti.prototype),
    Bc.prototype.constructor = Bc,
    Bc.prototype.isCompressedTexture = !0,
    zc.prototype = Object.create(ti.prototype),
    zc.prototype.constructor = zc,
    zc.prototype.isCanvasTexture = !0,
    Gc.prototype = Object.create(ti.prototype),
    Gc.prototype.constructor = Gc,
    Gc.prototype.isDepthTexture = !0,
    Hc.prototype = Object.create(Qr.prototype),
    Hc.prototype.constructor = Hc,
    Wc.prototype = Object.create(Eo.prototype),
    Wc.prototype.constructor = Wc,
    qc.prototype = Object.create(Qr.prototype),
    qc.prototype.constructor = qc,
    Xc.prototype = Object.create(Eo.prototype),
    Xc.prototype.constructor = Xc,
    Yc.prototype = Object.create(Qr.prototype),
    Yc.prototype.constructor = Yc,
    Kc.prototype = Object.create(Eo.prototype),
    Kc.prototype.constructor = Kc,
    Zc.prototype = Object.create(Yc.prototype),
    Zc.prototype.constructor = Zc,
    Jc.prototype = Object.create(Eo.prototype),
    Jc.prototype.constructor = Jc,
    Qc.prototype = Object.create(Yc.prototype),
    Qc.prototype.constructor = Qc,
    $c.prototype = Object.create(Eo.prototype),
    $c.prototype.constructor = $c,
    tl.prototype = Object.create(Yc.prototype),
    tl.prototype.constructor = tl,
    el.prototype = Object.create(Eo.prototype),
    el.prototype.constructor = el,
    nl.prototype = Object.create(Yc.prototype),
    nl.prototype.constructor = nl,
    il.prototype = Object.create(Eo.prototype),
    il.prototype.constructor = il,
    rl.prototype = Object.create(Qr.prototype),
    rl.prototype.constructor = rl,
    rl.prototype.toJSON = function() {
        var t = Qr.prototype.toJSON.call(this);
        return t.path = this.parameters.path.toJSON(),
        t
    }
    ,
    ol.prototype = Object.create(Eo.prototype),
    ol.prototype.constructor = ol,
    al.prototype = Object.create(Qr.prototype),
    al.prototype.constructor = al,
    sl.prototype = Object.create(Eo.prototype),
    sl.prototype.constructor = sl,
    cl.prototype = Object.create(Qr.prototype),
    cl.prototype.constructor = cl;
    var ll = function(t, e, n) {
        n = n || 2;
        var i, r, o, a, s, c, l, u = e && e.length, d = u ? e[0] * n : t.length, p = ul(t, 0, d, n, !0), h = [];
        if (!p || p.next === p.prev)
            return h;
        if (u && (p = function(t, e, n, i) {
            var r, o, a, s, c, l = [];
            for (r = 0,
            o = e.length; r < o; r++)
                a = e[r] * i,
                s = r < o - 1 ? e[r + 1] * i : t.length,
                (c = ul(t, a, s, i, !1)) === c.next && (c.steiner = !0),
                l.push(wl(c));
            for (l.sort(vl),
            r = 0; r < l.length; r++)
                yl(l[r], n),
                n = dl(n, n.next);
            return n
        }(t, e, p, n)),
        t.length > 80 * n) {
            i = o = t[0],
            r = a = t[1];
            for (var f = n; f < d; f += n)
                (s = t[f]) < i && (i = s),
                (c = t[f + 1]) < r && (r = c),
                s > o && (o = s),
                c > a && (a = c);
            l = 0 !== (l = Math.max(o - i, a - r)) ? 1 / l : 0
        }
        return pl(p, h, n, i, r, l),
        h
    };
    function ul(t, e, n, i, r) {
        var o, a;
        if (r === function(t, e, n, i) {
            for (var r = 0, o = e, a = n - i; o < n; o += i)
                r += (t[a] - t[o]) * (t[o + 1] + t[a + 1]),
                a = o;
            return r
        }(t, e, n, i) > 0)
            for (o = e; o < n; o += i)
                a = Ol(o, t[o], t[o + 1], a);
        else
            for (o = n - i; o >= e; o -= i)
                a = Ol(o, t[o], t[o + 1], a);
        return a && El(a, a.next) && (_l(a),
        a = a.next),
        a
    }
    function dl(t, e) {
        if (!t)
            return t;
        e || (e = t);
        var n, i = t;
        do {
            if (n = !1,
            i.steiner || !El(i, i.next) && 0 !== Ml(i.prev, i, i.next))
                i = i.next;
            else {
                if (_l(i),
                (i = e = i.prev) === i.next)
                    break;
                n = !0
            }
        } while (n || i !== e);
        return e
    }
    function pl(t, e, n, i, r, o, a) {
        if (t) {
            !a && o && function(t, e, n, i) {
                var r = t;
                do {
                    null === r.z && (r.z = bl(r.x, r.y, e, n, i)),
                    r.prevZ = r.prev,
                    r.nextZ = r.next,
                    r = r.next
                } while (r !== t);
                r.prevZ.nextZ = null,
                r.prevZ = null,
                function(t) {
                    var e, n, i, r, o, a, s, c, l = 1;
                    do {
                        for (n = t,
                        t = null,
                        o = null,
                        a = 0; n; ) {
                            for (a++,
                            i = n,
                            s = 0,
                            e = 0; e < l && (s++,
                            i = i.nextZ); e++)
                                ;
                            for (c = l; s > 0 || c > 0 && i; )
                                0 !== s && (0 === c || !i || n.z <= i.z) ? (r = n,
                                n = n.nextZ,
                                s--) : (r = i,
                                i = i.nextZ,
                                c--),
                                o ? o.nextZ = r : t = r,
                                r.prevZ = o,
                                o = r;
                            n = i
                        }
                        o.nextZ = null,
                        l *= 2
                    } while (a > 1)
                }(r)
            }(t, i, r, o);
            for (var s, c, l = t; t.prev !== t.next; )
                if (s = t.prev,
                c = t.next,
                o ? fl(t, i, r, o) : hl(t))
                    e.push(s.i / n),
                    e.push(t.i / n),
                    e.push(c.i / n),
                    _l(t),
                    t = c.next,
                    l = c.next;
                else if ((t = c) === l) {
                    a ? 1 === a ? pl(t = ml(t, e, n), e, n, i, r, o, 2) : 2 === a && gl(t, e, n, i, r, o) : pl(dl(t), e, n, i, r, o, 1);
                    break
                }
        }
    }
    function hl(t) {
        var e = t.prev
          , n = t
          , i = t.next;
        if (Ml(e, n, i) >= 0)
            return !1;
        for (var r = t.next.next; r !== t.prev; ) {
            if (Sl(e.x, e.y, n.x, n.y, i.x, i.y, r.x, r.y) && Ml(r.prev, r, r.next) >= 0)
                return !1;
            r = r.next
        }
        return !0
    }
    function fl(t, e, n, i) {
        var r = t.prev
          , o = t
          , a = t.next;
        if (Ml(r, o, a) >= 0)
            return !1;
        for (var s = r.x < o.x ? r.x < a.x ? r.x : a.x : o.x < a.x ? o.x : a.x, c = r.y < o.y ? r.y < a.y ? r.y : a.y : o.y < a.y ? o.y : a.y, l = r.x > o.x ? r.x > a.x ? r.x : a.x : o.x > a.x ? o.x : a.x, u = r.y > o.y ? r.y > a.y ? r.y : a.y : o.y > a.y ? o.y : a.y, d = bl(s, c, e, n, i), p = bl(l, u, e, n, i), h = t.prevZ, f = t.nextZ; h && h.z >= d && f && f.z <= p; ) {
            if (h !== t.prev && h !== t.next && Sl(r.x, r.y, o.x, o.y, a.x, a.y, h.x, h.y) && Ml(h.prev, h, h.next) >= 0)
                return !1;
            if (h = h.prevZ,
            f !== t.prev && f !== t.next && Sl(r.x, r.y, o.x, o.y, a.x, a.y, f.x, f.y) && Ml(f.prev, f, f.next) >= 0)
                return !1;
            f = f.nextZ
        }
        for (; h && h.z >= d; ) {
            if (h !== t.prev && h !== t.next && Sl(r.x, r.y, o.x, o.y, a.x, a.y, h.x, h.y) && Ml(h.prev, h, h.next) >= 0)
                return !1;
            h = h.prevZ
        }
        for (; f && f.z <= p; ) {
            if (f !== t.prev && f !== t.next && Sl(r.x, r.y, o.x, o.y, a.x, a.y, f.x, f.y) && Ml(f.prev, f, f.next) >= 0)
                return !1;
            f = f.nextZ
        }
        return !0
    }
    function ml(t, e, n) {
        var i = t;
        do {
            var r = i.prev
              , o = i.next.next;
            !El(r, o) && Cl(r, i, i.next, o) && Al(r, o) && Al(o, r) && (e.push(r.i / n),
            e.push(i.i / n),
            e.push(o.i / n),
            _l(i),
            _l(i.next),
            i = t = o),
            i = i.next
        } while (i !== t);
        return i
    }
    function gl(t, e, n, i, r, o) {
        var a = t;
        do {
            for (var s = a.next.next; s !== a.prev; ) {
                if (a.i !== s.i && xl(a, s)) {
                    var c = Tl(a, s);
                    return a = dl(a, a.next),
                    c = dl(c, c.next),
                    pl(a, e, n, i, r, o),
                    void pl(c, e, n, i, r, o)
                }
                s = s.next
            }
            a = a.next
        } while (a !== t)
    }
    function vl(t, e) {
        return t.x - e.x
    }
    function yl(t, e) {
        if (e = function(t, e) {
            var n, i = e, r = t.x, o = t.y, a = -1 / 0;
            do {
                if (o <= i.y && o >= i.next.y && i.next.y !== i.y) {
                    var s = i.x + (o - i.y) * (i.next.x - i.x) / (i.next.y - i.y);
                    if (s <= r && s > a) {
                        if (a = s,
                        s === r) {
                            if (o === i.y)
                                return i;
                            if (o === i.next.y)
                                return i.next
                        }
                        n = i.x < i.next.x ? i : i.next
                    }
                }
                i = i.next
            } while (i !== e);
            if (!n)
                return null;
            if (r === a)
                return n.prev;
            var c, l = n, u = n.x, d = n.y, p = 1 / 0;
            i = n.next;
            for (; i !== l; )
                r >= i.x && i.x >= u && r !== i.x && Sl(o < d ? r : a, o, u, d, o < d ? a : r, o, i.x, i.y) && ((c = Math.abs(o - i.y) / (r - i.x)) < p || c === p && i.x > n.x) && Al(i, t) && (n = i,
                p = c),
                i = i.next;
            return n
        }(t, e)) {
            var n = Tl(e, t);
            dl(n, n.next)
        }
    }
    function bl(t, e, n, i, r) {
        return (t = 1431655765 & ((t = 858993459 & ((t = 252645135 & ((t = 16711935 & ((t = 32767 * (t - n) * r) | t << 8)) | t << 4)) | t << 2)) | t << 1)) | (e = 1431655765 & ((e = 858993459 & ((e = 252645135 & ((e = 16711935 & ((e = 32767 * (e - i) * r) | e << 8)) | e << 4)) | e << 2)) | e << 1)) << 1
    }
    function wl(t) {
        var e = t
          , n = t;
        do {
            (e.x < n.x || e.x === n.x && e.y < n.y) && (n = e),
            e = e.next
        } while (e !== t);
        return n
    }
    function Sl(t, e, n, i, r, o, a, s) {
        return (r - a) * (e - s) - (t - a) * (o - s) >= 0 && (t - a) * (i - s) - (n - a) * (e - s) >= 0 && (n - a) * (o - s) - (r - a) * (i - s) >= 0
    }
    function xl(t, e) {
        return t.next.i !== e.i && t.prev.i !== e.i && !function(t, e) {
            var n = t;
            do {
                if (n.i !== t.i && n.next.i !== t.i && n.i !== e.i && n.next.i !== e.i && Cl(n, n.next, t, e))
                    return !0;
                n = n.next
            } while (n !== t);
            return !1
        }(t, e) && Al(t, e) && Al(e, t) && function(t, e) {
            var n = t
              , i = !1
              , r = (t.x + e.x) / 2
              , o = (t.y + e.y) / 2;
            do {
                n.y > o != n.next.y > o && n.next.y !== n.y && r < (n.next.x - n.x) * (o - n.y) / (n.next.y - n.y) + n.x && (i = !i),
                n = n.next
            } while (n !== t);
            return i
        }(t, e)
    }
    function Ml(t, e, n) {
        return (e.y - t.y) * (n.x - e.x) - (e.x - t.x) * (n.y - e.y)
    }
    function El(t, e) {
        return t.x === e.x && t.y === e.y
    }
    function Cl(t, e, n, i) {
        return !!(El(t, n) && El(e, i) || El(t, i) && El(n, e)) || Ml(t, e, n) > 0 != Ml(t, e, i) > 0 && Ml(n, i, t) > 0 != Ml(n, i, e) > 0
    }
    function Al(t, e) {
        return Ml(t.prev, t, t.next) < 0 ? Ml(t, e, t.next) >= 0 && Ml(t, t.prev, e) >= 0 : Ml(t, e, t.prev) < 0 || Ml(t, t.next, e) < 0
    }
    function Tl(t, e) {
        var n = new Pl(t.i,t.x,t.y)
          , i = new Pl(e.i,e.x,e.y)
          , r = t.next
          , o = e.prev;
        return t.next = e,
        e.prev = t,
        n.next = r,
        r.prev = n,
        i.next = n,
        n.prev = i,
        o.next = i,
        i.prev = o,
        i
    }
    function Ol(t, e, n, i) {
        var r = new Pl(t,e,n);
        return i ? (r.next = i.next,
        r.prev = i,
        i.next.prev = r,
        i.next = r) : (r.prev = r,
        r.next = r),
        r
    }
    function _l(t) {
        t.next.prev = t.prev,
        t.prev.next = t.next,
        t.prevZ && (t.prevZ.nextZ = t.nextZ),
        t.nextZ && (t.nextZ.prevZ = t.prevZ)
    }
    function Pl(t, e, n) {
        this.i = t,
        this.x = e,
        this.y = n,
        this.prev = null,
        this.next = null,
        this.z = null,
        this.prevZ = null,
        this.nextZ = null,
        this.steiner = !1
    }
    var Il = {
        area: function(t) {
            for (var e = t.length, n = 0, i = e - 1, r = 0; r < e; i = r++)
                n += t[i].x * t[r].y - t[r].x * t[i].y;
            return .5 * n
        },
        isClockWise: function(t) {
            return Il.area(t) < 0
        },
        triangulateShape: function(t, e) {
            var n = []
              , i = []
              , r = [];
            kl(t),
            Dl(n, t);
            var o = t.length;
            e.forEach(kl);
            for (var a = 0; a < e.length; a++)
                i.push(o),
                o += e[a].length,
                Dl(n, e[a]);
            var s = ll(n, i);
            for (a = 0; a < s.length; a += 3)
                r.push(s.slice(a, a + 3));
            return r
        }
    };
    function kl(t) {
        var e = t.length;
        e > 2 && t[e - 1].equals(t[0]) && t.pop()
    }
    function Dl(t, e) {
        for (var n = 0; n < e.length; n++)
            t.push(e[n].x),
            t.push(e[n].y)
    }
    function Rl(t, e) {
        Eo.call(this),
        this.type = "ExtrudeGeometry",
        this.parameters = {
            shapes: t,
            options: e
        },
        this.fromBufferGeometry(new Ll(t,e)),
        this.mergeVertices()
    }
    function Ll(t, e) {
        Qr.call(this),
        this.type = "ExtrudeBufferGeometry",
        this.parameters = {
            shapes: t,
            options: e
        },
        t = Array.isArray(t) ? t : [t];
        for (var n = this, i = [], r = [], o = 0, a = t.length; o < a; o++) {
            s(t[o])
        }
        function s(t) {
            var o = []
              , a = void 0 !== e.curveSegments ? e.curveSegments : 12
              , s = void 0 !== e.steps ? e.steps : 1
              , c = void 0 !== e.depth ? e.depth : 100
              , l = void 0 === e.bevelEnabled || e.bevelEnabled
              , u = void 0 !== e.bevelThickness ? e.bevelThickness : 6
              , d = void 0 !== e.bevelSize ? e.bevelSize : u - 2
              , p = void 0 !== e.bevelOffset ? e.bevelOffset : 0
              , h = void 0 !== e.bevelSegments ? e.bevelSegments : 3
              , f = e.extrudePath
              , m = void 0 !== e.UVGenerator ? e.UVGenerator : Nl;
            void 0 !== e.amount && (console.warn("THREE.ExtrudeBufferGeometry: amount has been renamed to depth."),
            c = e.amount);
            var g, v, y, b, w, S, x, M, E = !1;
            f && (g = f.getSpacedPoints(s),
            E = !0,
            l = !1,
            v = f.computeFrenetFrames(s, !1),
            y = new si,
            b = new si,
            w = new si),
            l || (h = 0,
            u = 0,
            d = 0,
            p = 0);
            var C = t.extractPoints(a)
              , A = C.shape
              , T = C.holes;
            if (!Il.isClockWise(A))
                for (A = A.reverse(),
                x = 0,
                M = T.length; x < M; x++)
                    S = T[x],
                    Il.isClockWise(S) && (T[x] = S.reverse());
            var O = Il.triangulateShape(A, T)
              , _ = A;
            for (x = 0,
            M = T.length; x < M; x++)
                S = T[x],
                A = A.concat(S);
            function P(t, e, n) {
                return e || console.error("THREE.ExtrudeGeometry: vec does not exist"),
                e.clone().multiplyScalar(n).add(t)
            }
            var I, k, D, R, L, N, j = A.length, V = O.length;
            function F(t, e, n) {
                var i, r, o, a = t.x - e.x, s = t.y - e.y, c = n.x - t.x, l = n.y - t.y, u = a * a + s * s, d = a * l - s * c;
                if (Math.abs(d) > Number.EPSILON) {
                    var p = Math.sqrt(u)
                      , h = Math.sqrt(c * c + l * l)
                      , f = e.x - s / p
                      , m = e.y + a / p
                      , g = ((n.x - l / h - f) * l - (n.y + c / h - m) * c) / (a * l - s * c)
                      , v = (i = f + a * g - t.x) * i + (r = m + s * g - t.y) * r;
                    if (v <= 2)
                        return new Zn(i,r);
                    o = Math.sqrt(v / 2)
                } else {
                    var y = !1;
                    a > Number.EPSILON ? c > Number.EPSILON && (y = !0) : a < -Number.EPSILON ? c < -Number.EPSILON && (y = !0) : Math.sign(s) === Math.sign(l) && (y = !0),
                    y ? (i = -s,
                    r = a,
                    o = Math.sqrt(u)) : (i = a,
                    r = s,
                    o = Math.sqrt(u / 2))
                }
                return new Zn(i / o,r / o)
            }
            for (var U = [], B = 0, z = _.length, G = z - 1, H = B + 1; B < z; B++,
            G++,
            H++)
                G === z && (G = 0),
                H === z && (H = 0),
                U[B] = F(_[B], _[G], _[H]);
            var W, q, X = [], Y = U.concat();
            for (x = 0,
            M = T.length; x < M; x++) {
                for (S = T[x],
                W = [],
                B = 0,
                G = (z = S.length) - 1,
                H = B + 1; B < z; B++,
                G++,
                H++)
                    G === z && (G = 0),
                    H === z && (H = 0),
                    W[B] = F(S[B], S[G], S[H]);
                X.push(W),
                Y = Y.concat(W)
            }
            for (I = 0; I < h; I++) {
                for (D = I / h,
                R = u * Math.cos(D * Math.PI / 2),
                k = d * Math.sin(D * Math.PI / 2) + p,
                B = 0,
                z = _.length; B < z; B++)
                    Z((L = P(_[B], U[B], k)).x, L.y, -R);
                for (x = 0,
                M = T.length; x < M; x++)
                    for (S = T[x],
                    W = X[x],
                    B = 0,
                    z = S.length; B < z; B++)
                        Z((L = P(S[B], W[B], k)).x, L.y, -R)
            }
            for (k = d + p,
            B = 0; B < j; B++)
                L = l ? P(A[B], Y[B], k) : A[B],
                E ? (b.copy(v.normals[0]).multiplyScalar(L.x),
                y.copy(v.binormals[0]).multiplyScalar(L.y),
                w.copy(g[0]).add(b).add(y),
                Z(w.x, w.y, w.z)) : Z(L.x, L.y, 0);
            for (q = 1; q <= s; q++)
                for (B = 0; B < j; B++)
                    L = l ? P(A[B], Y[B], k) : A[B],
                    E ? (b.copy(v.normals[q]).multiplyScalar(L.x),
                    y.copy(v.binormals[q]).multiplyScalar(L.y),
                    w.copy(g[q]).add(b).add(y),
                    Z(w.x, w.y, w.z)) : Z(L.x, L.y, c / s * q);
            for (I = h - 1; I >= 0; I--) {
                for (D = I / h,
                R = u * Math.cos(D * Math.PI / 2),
                k = d * Math.sin(D * Math.PI / 2) + p,
                B = 0,
                z = _.length; B < z; B++)
                    Z((L = P(_[B], U[B], k)).x, L.y, c + R);
                for (x = 0,
                M = T.length; x < M; x++)
                    for (S = T[x],
                    W = X[x],
                    B = 0,
                    z = S.length; B < z; B++)
                        L = P(S[B], W[B], k),
                        E ? Z(L.x, L.y + g[s - 1].y, g[s - 1].x + R) : Z(L.x, L.y, c + R)
            }
            function K(t, e) {
                var n, i;
                for (B = t.length; --B >= 0; ) {
                    n = B,
                    (i = B - 1) < 0 && (i = t.length - 1);
                    var r = 0
                      , o = s + 2 * h;
                    for (r = 0; r < o; r++) {
                        var a = j * r
                          , c = j * (r + 1);
                        Q(e + n + a, e + i + a, e + i + c, e + n + c)
                    }
                }
            }
            function Z(t, e, n) {
                o.push(t),
                o.push(e),
                o.push(n)
            }
            function J(t, e, r) {
                $(t),
                $(e),
                $(r);
                var o = i.length / 3
                  , a = m.generateTopUV(n, i, o - 3, o - 2, o - 1);
                tt(a[0]),
                tt(a[1]),
                tt(a[2])
            }
            function Q(t, e, r, o) {
                $(t),
                $(e),
                $(o),
                $(e),
                $(r),
                $(o);
                var a = i.length / 3
                  , s = m.generateSideWallUV(n, i, a - 6, a - 3, a - 2, a - 1);
                tt(s[0]),
                tt(s[1]),
                tt(s[3]),
                tt(s[1]),
                tt(s[2]),
                tt(s[3])
            }
            function $(t) {
                i.push(o[3 * t + 0]),
                i.push(o[3 * t + 1]),
                i.push(o[3 * t + 2])
            }
            function tt(t) {
                r.push(t.x),
                r.push(t.y)
            }
            !function() {
                var t = i.length / 3;
                if (l) {
                    var e = 0
                      , r = j * e;
                    for (B = 0; B < V; B++)
                        J((N = O[B])[2] + r, N[1] + r, N[0] + r);
                    for (r = j * (e = s + 2 * h),
                    B = 0; B < V; B++)
                        J((N = O[B])[0] + r, N[1] + r, N[2] + r)
                } else {
                    for (B = 0; B < V; B++)
                        J((N = O[B])[2], N[1], N[0]);
                    for (B = 0; B < V; B++)
                        J((N = O[B])[0] + j * s, N[1] + j * s, N[2] + j * s)
                }
                n.addGroup(t, i.length / 3 - t, 0)
            }(),
            function() {
                var t = i.length / 3
                  , e = 0;
                for (K(_, e),
                e += _.length,
                x = 0,
                M = T.length; x < M; x++)
                    K(S = T[x], e),
                    e += S.length;
                n.addGroup(t, i.length / 3 - t, 1)
            }()
        }
        this.setAttribute("position", new Br(i,3)),
        this.setAttribute("uv", new Br(r,2)),
        this.computeVertexNormals()
    }
    Rl.prototype = Object.create(Eo.prototype),
    Rl.prototype.constructor = Rl,
    Rl.prototype.toJSON = function() {
        var t = Eo.prototype.toJSON.call(this);
        return jl(this.parameters.shapes, this.parameters.options, t)
    }
    ,
    Ll.prototype = Object.create(Qr.prototype),
    Ll.prototype.constructor = Ll,
    Ll.prototype.toJSON = function() {
        var t = Qr.prototype.toJSON.call(this);
        return jl(this.parameters.shapes, this.parameters.options, t)
    }
    ;
    var Nl = {
        generateTopUV: function(t, e, n, i, r) {
            var o = e[3 * n]
              , a = e[3 * n + 1]
              , s = e[3 * i]
              , c = e[3 * i + 1]
              , l = e[3 * r]
              , u = e[3 * r + 1];
            return [new Zn(o,a), new Zn(s,c), new Zn(l,u)]
        },
        generateSideWallUV: function(t, e, n, i, r, o) {
            var a = e[3 * n]
              , s = e[3 * n + 1]
              , c = e[3 * n + 2]
              , l = e[3 * i]
              , u = e[3 * i + 1]
              , d = e[3 * i + 2]
              , p = e[3 * r]
              , h = e[3 * r + 1]
              , f = e[3 * r + 2]
              , m = e[3 * o]
              , g = e[3 * o + 1]
              , v = e[3 * o + 2];
            return Math.abs(s - u) < .01 ? [new Zn(a,1 - c), new Zn(l,1 - d), new Zn(p,1 - f), new Zn(m,1 - v)] : [new Zn(s,1 - c), new Zn(u,1 - d), new Zn(h,1 - f), new Zn(g,1 - v)]
        }
    };
    function jl(t, e, n) {
        if (n.shapes = [],
        Array.isArray(t))
            for (var i = 0, r = t.length; i < r; i++) {
                var o = t[i];
                n.shapes.push(o.uuid)
            }
        else
            n.shapes.push(t.uuid);
        return void 0 !== e.extrudePath && (n.options.extrudePath = e.extrudePath.toJSON()),
        n
    }
    function Vl(t, e) {
        Eo.call(this),
        this.type = "TextGeometry",
        this.parameters = {
            text: t,
            parameters: e
        },
        this.fromBufferGeometry(new Fl(t,e)),
        this.mergeVertices()
    }
    function Fl(t, e) {
        var n = (e = e || {}).font;
        if (!n || !n.isFont)
            return console.error("THREE.TextGeometry: font parameter is not an instance of THREE.Font."),
            new Eo;
        var i = n.generateShapes(t, e.size);
        e.depth = void 0 !== e.height ? e.height : 50,
        void 0 === e.bevelThickness && (e.bevelThickness = 10),
        void 0 === e.bevelSize && (e.bevelSize = 8),
        void 0 === e.bevelEnabled && (e.bevelEnabled = !1),
        Ll.call(this, i, e),
        this.type = "TextBufferGeometry"
    }
    function Ul(t, e, n, i, r, o, a) {
        Eo.call(this),
        this.type = "SphereGeometry",
        this.parameters = {
            radius: t,
            widthSegments: e,
            heightSegments: n,
            phiStart: i,
            phiLength: r,
            thetaStart: o,
            thetaLength: a
        },
        this.fromBufferGeometry(new Bl(t,e,n,i,r,o,a)),
        this.mergeVertices()
    }
    function Bl(t, e, n, i, r, o, a) {
        Qr.call(this),
        this.type = "SphereBufferGeometry",
        this.parameters = {
            radius: t,
            widthSegments: e,
            heightSegments: n,
            phiStart: i,
            phiLength: r,
            thetaStart: o,
            thetaLength: a
        },
        t = t || 1,
        e = Math.max(3, Math.floor(e) || 8),
        n = Math.max(2, Math.floor(n) || 6),
        i = void 0 !== i ? i : 0,
        r = void 0 !== r ? r : 2 * Math.PI,
        o = void 0 !== o ? o : 0,
        a = void 0 !== a ? a : Math.PI;
        var s, c, l = Math.min(o + a, Math.PI), u = 0, d = [], p = new si, h = new si, f = [], m = [], g = [], v = [];
        for (c = 0; c <= n; c++) {
            var y = []
              , b = c / n
              , w = 0;
            for (0 == c && 0 == o ? w = .5 / e : c == n && l == Math.PI && (w = -.5 / e),
            s = 0; s <= e; s++) {
                var S = s / e;
                p.x = -t * Math.cos(i + S * r) * Math.sin(o + b * a),
                p.y = t * Math.cos(o + b * a),
                p.z = t * Math.sin(i + S * r) * Math.sin(o + b * a),
                m.push(p.x, p.y, p.z),
                h.copy(p).normalize(),
                g.push(h.x, h.y, h.z),
                v.push(S + w, 1 - b),
                y.push(u++)
            }
            d.push(y)
        }
        for (c = 0; c < n; c++)
            for (s = 0; s < e; s++) {
                var x = d[c][s + 1]
                  , M = d[c][s]
                  , E = d[c + 1][s]
                  , C = d[c + 1][s + 1];
                (0 !== c || o > 0) && f.push(x, M, C),
                (c !== n - 1 || l < Math.PI) && f.push(M, E, C)
            }
        this.setIndex(f),
        this.setAttribute("position", new Br(m,3)),
        this.setAttribute("normal", new Br(g,3)),
        this.setAttribute("uv", new Br(v,2))
    }
    function zl(t, e, n, i, r, o) {
        Eo.call(this),
        this.type = "RingGeometry",
        this.parameters = {
            innerRadius: t,
            outerRadius: e,
            thetaSegments: n,
            phiSegments: i,
            thetaStart: r,
            thetaLength: o
        },
        this.fromBufferGeometry(new Gl(t,e,n,i,r,o)),
        this.mergeVertices()
    }
    function Gl(t, e, n, i, r, o) {
        Qr.call(this),
        this.type = "RingBufferGeometry",
        this.parameters = {
            innerRadius: t,
            outerRadius: e,
            thetaSegments: n,
            phiSegments: i,
            thetaStart: r,
            thetaLength: o
        },
        t = t || .5,
        e = e || 1,
        r = void 0 !== r ? r : 0,
        o = void 0 !== o ? o : 2 * Math.PI,
        n = void 0 !== n ? Math.max(3, n) : 8;
        var a, s, c, l = [], u = [], d = [], p = [], h = t, f = (e - t) / (i = void 0 !== i ? Math.max(1, i) : 1), m = new si, g = new Zn;
        for (s = 0; s <= i; s++) {
            for (c = 0; c <= n; c++)
                a = r + c / n * o,
                m.x = h * Math.cos(a),
                m.y = h * Math.sin(a),
                u.push(m.x, m.y, m.z),
                d.push(0, 0, 1),
                g.x = (m.x / e + 1) / 2,
                g.y = (m.y / e + 1) / 2,
                p.push(g.x, g.y);
            h += f
        }
        for (s = 0; s < i; s++) {
            var v = s * (n + 1);
            for (c = 0; c < n; c++) {
                var y = a = c + v
                  , b = a + n + 1
                  , w = a + n + 2
                  , S = a + 1;
                l.push(y, b, S),
                l.push(b, w, S)
            }
        }
        this.setIndex(l),
        this.setAttribute("position", new Br(u,3)),
        this.setAttribute("normal", new Br(d,3)),
        this.setAttribute("uv", new Br(p,2))
    }
    function Hl(t, e, n, i) {
        Eo.call(this),
        this.type = "LatheGeometry",
        this.parameters = {
            points: t,
            segments: e,
            phiStart: n,
            phiLength: i
        },
        this.fromBufferGeometry(new Wl(t,e,n,i)),
        this.mergeVertices()
    }
    function Wl(t, e, n, i) {
        Qr.call(this),
        this.type = "LatheBufferGeometry",
        this.parameters = {
            points: t,
            segments: e,
            phiStart: n,
            phiLength: i
        },
        e = Math.floor(e) || 12,
        n = n || 0,
        i = i || 2 * Math.PI,
        i = Kn.clamp(i, 0, 2 * Math.PI);
        var r, o, a, s = [], c = [], l = [], u = 1 / e, d = new si, p = new Zn;
        for (o = 0; o <= e; o++) {
            var h = n + o * u * i
              , f = Math.sin(h)
              , m = Math.cos(h);
            for (a = 0; a <= t.length - 1; a++)
                d.x = t[a].x * f,
                d.y = t[a].y,
                d.z = t[a].x * m,
                c.push(d.x, d.y, d.z),
                p.x = o / e,
                p.y = a / (t.length - 1),
                l.push(p.x, p.y)
        }
        for (o = 0; o < e; o++)
            for (a = 0; a < t.length - 1; a++) {
                var g = r = a + o * t.length
                  , v = r + t.length
                  , y = r + t.length + 1
                  , b = r + 1;
                s.push(g, v, b),
                s.push(v, y, b)
            }
        if (this.setIndex(s),
        this.setAttribute("position", new Br(c,3)),
        this.setAttribute("uv", new Br(l,2)),
        this.computeVertexNormals(),
        i === 2 * Math.PI) {
            var w = this.attributes.normal.array
              , S = new si
              , x = new si
              , M = new si;
            for (r = e * t.length * 3,
            o = 0,
            a = 0; o < t.length; o++,
            a += 3)
                S.x = w[a + 0],
                S.y = w[a + 1],
                S.z = w[a + 2],
                x.x = w[r + a + 0],
                x.y = w[r + a + 1],
                x.z = w[r + a + 2],
                M.addVectors(S, x).normalize(),
                w[a + 0] = w[r + a + 0] = M.x,
                w[a + 1] = w[r + a + 1] = M.y,
                w[a + 2] = w[r + a + 2] = M.z
        }
    }
    function ql(t, e) {
        Eo.call(this),
        this.type = "ShapeGeometry",
        "object" === o(e) && (console.warn("THREE.ShapeGeometry: Options parameter has been removed."),
        e = e.curveSegments),
        this.parameters = {
            shapes: t,
            curveSegments: e
        },
        this.fromBufferGeometry(new Xl(t,e)),
        this.mergeVertices()
    }
    function Xl(t, e) {
        Qr.call(this),
        this.type = "ShapeBufferGeometry",
        this.parameters = {
            shapes: t,
            curveSegments: e
        },
        e = e || 12;
        var n = []
          , i = []
          , r = []
          , o = []
          , a = 0
          , s = 0;
        if (!1 === Array.isArray(t))
            l(t);
        else
            for (var c = 0; c < t.length; c++)
                l(t[c]),
                this.addGroup(a, s, c),
                a += s,
                s = 0;
        function l(t) {
            var a, c, l, u = i.length / 3, d = t.extractPoints(e), p = d.shape, h = d.holes;
            for (!1 === Il.isClockWise(p) && (p = p.reverse()),
            a = 0,
            c = h.length; a < c; a++)
                l = h[a],
                !0 === Il.isClockWise(l) && (h[a] = l.reverse());
            var f = Il.triangulateShape(p, h);
            for (a = 0,
            c = h.length; a < c; a++)
                l = h[a],
                p = p.concat(l);
            for (a = 0,
            c = p.length; a < c; a++) {
                var m = p[a];
                i.push(m.x, m.y, 0),
                r.push(0, 0, 1),
                o.push(m.x, m.y)
            }
            for (a = 0,
            c = f.length; a < c; a++) {
                var g = f[a]
                  , v = g[0] + u
                  , y = g[1] + u
                  , b = g[2] + u;
                n.push(v, y, b),
                s += 3
            }
        }
        this.setIndex(n),
        this.setAttribute("position", new Br(i,3)),
        this.setAttribute("normal", new Br(r,3)),
        this.setAttribute("uv", new Br(o,2))
    }
    function Yl(t, e) {
        if (e.shapes = [],
        Array.isArray(t))
            for (var n = 0, i = t.length; n < i; n++) {
                var r = t[n];
                e.shapes.push(r.uuid)
            }
        else
            e.shapes.push(t.uuid);
        return e
    }
    function Kl(t, e) {
        Qr.call(this),
        this.type = "EdgesGeometry",
        this.parameters = {
            thresholdAngle: e
        },
        e = void 0 !== e ? e : 1;
        var n, i, r, o, a = [], s = Math.cos(Kn.DEG2RAD * e), c = [0, 0], l = {}, u = ["a", "b", "c"];
        t.isBufferGeometry ? (o = new Eo).fromBufferGeometry(t) : o = t.clone(),
        o.mergeVertices(),
        o.computeFaceNormals();
        for (var d = o.vertices, p = o.faces, h = 0, f = p.length; h < f; h++)
            for (var m = p[h], g = 0; g < 3; g++)
                n = m[u[g]],
                i = m[u[(g + 1) % 3]],
                c[0] = Math.min(n, i),
                c[1] = Math.max(n, i),
                void 0 === l[r = c[0] + "," + c[1]] ? l[r] = {
                    index1: c[0],
                    index2: c[1],
                    face1: h,
                    face2: void 0
                } : l[r].face2 = h;
        for (r in l) {
            var v = l[r];
            if (void 0 === v.face2 || p[v.face1].normal.dot(p[v.face2].normal) <= s) {
                var y = d[v.index1];
                a.push(y.x, y.y, y.z),
                y = d[v.index2],
                a.push(y.x, y.y, y.z)
            }
        }
        this.setAttribute("position", new Br(a,3))
    }
    function Zl(t, e, n, i, r, o, a, s) {
        Eo.call(this),
        this.type = "CylinderGeometry",
        this.parameters = {
            radiusTop: t,
            radiusBottom: e,
            height: n,
            radialSegments: i,
            heightSegments: r,
            openEnded: o,
            thetaStart: a,
            thetaLength: s
        },
        this.fromBufferGeometry(new Jl(t,e,n,i,r,o,a,s)),
        this.mergeVertices()
    }
    function Jl(t, e, n, i, r, o, a, s) {
        Qr.call(this),
        this.type = "CylinderBufferGeometry",
        this.parameters = {
            radiusTop: t,
            radiusBottom: e,
            height: n,
            radialSegments: i,
            heightSegments: r,
            openEnded: o,
            thetaStart: a,
            thetaLength: s
        };
        var c = this;
        t = void 0 !== t ? t : 1,
        e = void 0 !== e ? e : 1,
        n = n || 1,
        i = Math.floor(i) || 8,
        r = Math.floor(r) || 1,
        o = void 0 !== o && o,
        a = void 0 !== a ? a : 0,
        s = void 0 !== s ? s : 2 * Math.PI;
        var l = []
          , u = []
          , d = []
          , p = []
          , h = 0
          , f = []
          , m = n / 2
          , g = 0;
        function v(n) {
            var r, o, f, v = new Zn, y = new si, b = 0, w = !0 === n ? t : e, S = !0 === n ? 1 : -1;
            for (o = h,
            r = 1; r <= i; r++)
                u.push(0, m * S, 0),
                d.push(0, S, 0),
                p.push(.5, .5),
                h++;
            for (f = h,
            r = 0; r <= i; r++) {
                var x = r / i * s + a
                  , M = Math.cos(x)
                  , E = Math.sin(x);
                y.x = w * E,
                y.y = m * S,
                y.z = w * M,
                u.push(y.x, y.y, y.z),
                d.push(0, S, 0),
                v.x = .5 * M + .5,
                v.y = .5 * E * S + .5,
                p.push(v.x, v.y),
                h++
            }
            for (r = 0; r < i; r++) {
                var C = o + r
                  , A = f + r;
                !0 === n ? l.push(A, A + 1, C) : l.push(A + 1, A, C),
                b += 3
            }
            c.addGroup(g, b, !0 === n ? 1 : 2),
            g += b
        }
        !function() {
            var o, v, y = new si, b = new si, w = 0, S = (e - t) / n;
            for (v = 0; v <= r; v++) {
                var x = []
                  , M = v / r
                  , E = M * (e - t) + t;
                for (o = 0; o <= i; o++) {
                    var C = o / i
                      , A = C * s + a
                      , T = Math.sin(A)
                      , O = Math.cos(A);
                    b.x = E * T,
                    b.y = -M * n + m,
                    b.z = E * O,
                    u.push(b.x, b.y, b.z),
                    y.set(T, S, O).normalize(),
                    d.push(y.x, y.y, y.z),
                    p.push(C, 1 - M),
                    x.push(h++)
                }
                f.push(x)
            }
            for (o = 0; o < i; o++)
                for (v = 0; v < r; v++) {
                    var _ = f[v][o]
                      , P = f[v + 1][o]
                      , I = f[v + 1][o + 1]
                      , k = f[v][o + 1];
                    l.push(_, P, k),
                    l.push(P, I, k),
                    w += 6
                }
            c.addGroup(g, w, 0),
            g += w
        }(),
        !1 === o && (t > 0 && v(!0),
        e > 0 && v(!1)),
        this.setIndex(l),
        this.setAttribute("position", new Br(u,3)),
        this.setAttribute("normal", new Br(d,3)),
        this.setAttribute("uv", new Br(p,2))
    }
    function Ql(t, e, n, i, r, o, a) {
        Zl.call(this, 0, t, e, n, i, r, o, a),
        this.type = "ConeGeometry",
        this.parameters = {
            radius: t,
            height: e,
            radialSegments: n,
            heightSegments: i,
            openEnded: r,
            thetaStart: o,
            thetaLength: a
        }
    }
    function $l(t, e, n, i, r, o, a) {
        Jl.call(this, 0, t, e, n, i, r, o, a),
        this.type = "ConeBufferGeometry",
        this.parameters = {
            radius: t,
            height: e,
            radialSegments: n,
            heightSegments: i,
            openEnded: r,
            thetaStart: o,
            thetaLength: a
        }
    }
    function tu(t, e, n, i) {
        Eo.call(this),
        this.type = "CircleGeometry",
        this.parameters = {
            radius: t,
            segments: e,
            thetaStart: n,
            thetaLength: i
        },
        this.fromBufferGeometry(new eu(t,e,n,i)),
        this.mergeVertices()
    }
    function eu(t, e, n, i) {
        Qr.call(this),
        this.type = "CircleBufferGeometry",
        this.parameters = {
            radius: t,
            segments: e,
            thetaStart: n,
            thetaLength: i
        },
        t = t || 1,
        e = void 0 !== e ? Math.max(3, e) : 8,
        n = void 0 !== n ? n : 0,
        i = void 0 !== i ? i : 2 * Math.PI;
        var r, o, a = [], s = [], c = [], l = [], u = new si, d = new Zn;
        for (s.push(0, 0, 0),
        c.push(0, 0, 1),
        l.push(.5, .5),
        o = 0,
        r = 3; o <= e; o++,
        r += 3) {
            var p = n + o / e * i;
            u.x = t * Math.cos(p),
            u.y = t * Math.sin(p),
            s.push(u.x, u.y, u.z),
            c.push(0, 0, 1),
            d.x = (s[r] / t + 1) / 2,
            d.y = (s[r + 1] / t + 1) / 2,
            l.push(d.x, d.y)
        }
        for (r = 1; r <= e; r++)
            a.push(r, r + 1, 0);
        this.setIndex(a),
        this.setAttribute("position", new Br(s,3)),
        this.setAttribute("normal", new Br(c,3)),
        this.setAttribute("uv", new Br(l,2))
    }
    Vl.prototype = Object.create(Eo.prototype),
    Vl.prototype.constructor = Vl,
    Fl.prototype = Object.create(Ll.prototype),
    Fl.prototype.constructor = Fl,
    Ul.prototype = Object.create(Eo.prototype),
    Ul.prototype.constructor = Ul,
    Bl.prototype = Object.create(Qr.prototype),
    Bl.prototype.constructor = Bl,
    zl.prototype = Object.create(Eo.prototype),
    zl.prototype.constructor = zl,
    Gl.prototype = Object.create(Qr.prototype),
    Gl.prototype.constructor = Gl,
    Hl.prototype = Object.create(Eo.prototype),
    Hl.prototype.constructor = Hl,
    Wl.prototype = Object.create(Qr.prototype),
    Wl.prototype.constructor = Wl,
    ql.prototype = Object.create(Eo.prototype),
    ql.prototype.constructor = ql,
    ql.prototype.toJSON = function() {
        var t = Eo.prototype.toJSON.call(this);
        return Yl(this.parameters.shapes, t)
    }
    ,
    Xl.prototype = Object.create(Qr.prototype),
    Xl.prototype.constructor = Xl,
    Xl.prototype.toJSON = function() {
        var t = Qr.prototype.toJSON.call(this);
        return Yl(this.parameters.shapes, t)
    }
    ,
    Kl.prototype = Object.create(Qr.prototype),
    Kl.prototype.constructor = Kl,
    Zl.prototype = Object.create(Eo.prototype),
    Zl.prototype.constructor = Zl,
    Jl.prototype = Object.create(Qr.prototype),
    Jl.prototype.constructor = Jl,
    Ql.prototype = Object.create(Zl.prototype),
    Ql.prototype.constructor = Ql,
    $l.prototype = Object.create(Jl.prototype),
    $l.prototype.constructor = $l,
    tu.prototype = Object.create(Eo.prototype),
    tu.prototype.constructor = tu,
    eu.prototype = Object.create(Qr.prototype),
    eu.prototype.constructor = eu;
    var nu = Object.freeze({
        __proto__: null,
        WireframeGeometry: Hc,
        ParametricGeometry: Wc,
        ParametricBufferGeometry: qc,
        TetrahedronGeometry: Kc,
        TetrahedronBufferGeometry: Zc,
        OctahedronGeometry: Jc,
        OctahedronBufferGeometry: Qc,
        IcosahedronGeometry: $c,
        IcosahedronBufferGeometry: tl,
        DodecahedronGeometry: el,
        DodecahedronBufferGeometry: nl,
        PolyhedronGeometry: Xc,
        PolyhedronBufferGeometry: Yc,
        TubeGeometry: il,
        TubeBufferGeometry: rl,
        TorusKnotGeometry: ol,
        TorusKnotBufferGeometry: al,
        TorusGeometry: sl,
        TorusBufferGeometry: cl,
        TextGeometry: Vl,
        TextBufferGeometry: Fl,
        SphereGeometry: Ul,
        SphereBufferGeometry: Bl,
        RingGeometry: zl,
        RingBufferGeometry: Gl,
        PlaneGeometry: zo,
        PlaneBufferGeometry: Go,
        LatheGeometry: Hl,
        LatheBufferGeometry: Wl,
        ShapeGeometry: ql,
        ShapeBufferGeometry: Xl,
        ExtrudeGeometry: Rl,
        ExtrudeBufferGeometry: Ll,
        EdgesGeometry: Kl,
        ConeGeometry: Ql,
        ConeBufferGeometry: $l,
        CylinderGeometry: Zl,
        CylinderBufferGeometry: Jl,
        CircleGeometry: tu,
        CircleBufferGeometry: eu,
        BoxGeometry: Co,
        BoxBufferGeometry: Ao
    });
    function iu(t) {
        Pr.call(this),
        this.type = "ShadowMaterial",
        this.color = new Er(0),
        this.transparent = !0,
        this.setValues(t)
    }
    function ru(t) {
        Po.call(this, t),
        this.type = "RawShaderMaterial"
    }
    function ou(t) {
        Pr.call(this),
        this.defines = {
            STANDARD: ""
        },
        this.type = "MeshStandardMaterial",
        this.color = new Er(16777215),
        this.roughness = 1,
        this.metalness = 0,
        this.map = null,
        this.lightMap = null,
        this.lightMapIntensity = 1,
        this.aoMap = null,
        this.aoMapIntensity = 1,
        this.emissive = new Er(0),
        this.emissiveIntensity = 1,
        this.emissiveMap = null,
        this.bumpMap = null,
        this.bumpScale = 1,
        this.normalMap = null,
        this.normalMapType = yn,
        this.normalScale = new Zn(1,1),
        this.displacementMap = null,
        this.displacementScale = 1,
        this.displacementBias = 0,
        this.roughnessMap = null,
        this.metalnessMap = null,
        this.alphaMap = null,
        this.envMap = null,
        this.envMapIntensity = 1,
        this.refractionRatio = .98,
        this.wireframe = !1,
        this.wireframeLinewidth = 1,
        this.wireframeLinecap = "round",
        this.wireframeLinejoin = "round",
        this.skinning = !1,
        this.morphTargets = !1,
        this.morphNormals = !1,
        this.vertexTangents = !1,
        this.setValues(t)
    }
    function au(t) {
        ou.call(this),
        this.defines = {
            STANDARD: "",
            PHYSICAL: ""
        },
        this.type = "MeshPhysicalMaterial",
        this.clearcoat = 0,
        this.clearcoatMap = null,
        this.clearcoatRoughness = 0,
        this.clearcoatRoughnessMap = null,
        this.clearcoatNormalScale = new Zn(1,1),
        this.clearcoatNormalMap = null,
        this.reflectivity = .5,
        this.sheen = null,
        this.transparency = 0,
        this.setValues(t)
    }
    function su(t) {
        Pr.call(this),
        this.type = "MeshPhongMaterial",
        this.color = new Er(16777215),
        this.specular = new Er(1118481),
        this.shininess = 30,
        this.map = null,
        this.lightMap = null,
        this.lightMapIntensity = 1,
        this.aoMap = null,
        this.aoMapIntensity = 1,
        this.emissive = new Er(0),
        this.emissiveIntensity = 1,
        this.emissiveMap = null,
        this.bumpMap = null,
        this.bumpScale = 1,
        this.normalMap = null,
        this.normalMapType = yn,
        this.normalScale = new Zn(1,1),
        this.displacementMap = null,
        this.displacementScale = 1,
        this.displacementBias = 0,
        this.specularMap = null,
        this.alphaMap = null,
        this.envMap = null,
        this.combine = st,
        this.reflectivity = 1,
        this.refractionRatio = .98,
        this.wireframe = !1,
        this.wireframeLinewidth = 1,
        this.wireframeLinecap = "round",
        this.wireframeLinejoin = "round",
        this.skinning = !1,
        this.morphTargets = !1,
        this.morphNormals = !1,
        this.setValues(t)
    }
    function cu(t) {
        Pr.call(this),
        this.defines = {
            TOON: ""
        },
        this.type = "MeshToonMaterial",
        this.color = new Er(16777215),
        this.specular = new Er(1118481),
        this.shininess = 30,
        this.map = null,
        this.gradientMap = null,
        this.lightMap = null,
        this.lightMapIntensity = 1,
        this.aoMap = null,
        this.aoMapIntensity = 1,
        this.emissive = new Er(0),
        this.emissiveIntensity = 1,
        this.emissiveMap = null,
        this.bumpMap = null,
        this.bumpScale = 1,
        this.normalMap = null,
        this.normalMapType = yn,
        this.normalScale = new Zn(1,1),
        this.displacementMap = null,
        this.displacementScale = 1,
        this.displacementBias = 0,
        this.specularMap = null,
        this.alphaMap = null,
        this.wireframe = !1,
        this.wireframeLinewidth = 1,
        this.wireframeLinecap = "round",
        this.wireframeLinejoin = "round",
        this.skinning = !1,
        this.morphTargets = !1,
        this.morphNormals = !1,
        this.setValues(t)
    }
    function lu(t) {
        Pr.call(this),
        this.type = "MeshNormalMaterial",
        this.bumpMap = null,
        this.bumpScale = 1,
        this.normalMap = null,
        this.normalMapType = yn,
        this.normalScale = new Zn(1,1),
        this.displacementMap = null,
        this.displacementScale = 1,
        this.displacementBias = 0,
        this.wireframe = !1,
        this.wireframeLinewidth = 1,
        this.fog = !1,
        this.skinning = !1,
        this.morphTargets = !1,
        this.morphNormals = !1,
        this.setValues(t)
    }
    function uu(t) {
        Pr.call(this),
        this.type = "MeshLambertMaterial",
        this.color = new Er(16777215),
        this.map = null,
        this.lightMap = null,
        this.lightMapIntensity = 1,
        this.aoMap = null,
        this.aoMapIntensity = 1,
        this.emissive = new Er(0),
        this.emissiveIntensity = 1,
        this.emissiveMap = null,
        this.specularMap = null,
        this.alphaMap = null,
        this.envMap = null,
        this.combine = st,
        this.reflectivity = 1,
        this.refractionRatio = .98,
        this.wireframe = !1,
        this.wireframeLinewidth = 1,
        this.wireframeLinecap = "round",
        this.wireframeLinejoin = "round",
        this.skinning = !1,
        this.morphTargets = !1,
        this.morphNormals = !1,
        this.setValues(t)
    }
    function du(t) {
        Pr.call(this),
        this.defines = {
            MATCAP: ""
        },
        this.type = "MeshMatcapMaterial",
        this.color = new Er(16777215),
        this.matcap = null,
        this.map = null,
        this.bumpMap = null,
        this.bumpScale = 1,
        this.normalMap = null,
        this.normalMapType = yn,
        this.normalScale = new Zn(1,1),
        this.displacementMap = null,
        this.displacementScale = 1,
        this.displacementBias = 0,
        this.alphaMap = null,
        this.skinning = !1,
        this.morphTargets = !1,
        this.morphNormals = !1,
        this.setValues(t)
    }
    function pu(t) {
        xc.call(this),
        this.type = "LineDashedMaterial",
        this.scale = 1,
        this.dashSize = 3,
        this.gapSize = 1,
        this.setValues(t)
    }
    iu.prototype = Object.create(Pr.prototype),
    iu.prototype.constructor = iu,
    iu.prototype.isShadowMaterial = !0,
    iu.prototype.copy = function(t) {
        return Pr.prototype.copy.call(this, t),
        this.color.copy(t.color),
        this
    }
    ,
    ru.prototype = Object.create(Po.prototype),
    ru.prototype.constructor = ru,
    ru.prototype.isRawShaderMaterial = !0,
    ou.prototype = Object.create(Pr.prototype),
    ou.prototype.constructor = ou,
    ou.prototype.isMeshStandardMaterial = !0,
    ou.prototype.copy = function(t) {
        return Pr.prototype.copy.call(this, t),
        this.defines = {
            STANDARD: ""
        },
        this.color.copy(t.color),
        this.roughness = t.roughness,
        this.metalness = t.metalness,
        this.map = t.map,
        this.lightMap = t.lightMap,
        this.lightMapIntensity = t.lightMapIntensity,
        this.aoMap = t.aoMap,
        this.aoMapIntensity = t.aoMapIntensity,
        this.emissive.copy(t.emissive),
        this.emissiveMap = t.emissiveMap,
        this.emissiveIntensity = t.emissiveIntensity,
        this.bumpMap = t.bumpMap,
        this.bumpScale = t.bumpScale,
        this.normalMap = t.normalMap,
        this.normalMapType = t.normalMapType,
        this.normalScale.copy(t.normalScale),
        this.displacementMap = t.displacementMap,
        this.displacementScale = t.displacementScale,
        this.displacementBias = t.displacementBias,
        this.roughnessMap = t.roughnessMap,
        this.metalnessMap = t.metalnessMap,
        this.alphaMap = t.alphaMap,
        this.envMap = t.envMap,
        this.envMapIntensity = t.envMapIntensity,
        this.refractionRatio = t.refractionRatio,
        this.wireframe = t.wireframe,
        this.wireframeLinewidth = t.wireframeLinewidth,
        this.wireframeLinecap = t.wireframeLinecap,
        this.wireframeLinejoin = t.wireframeLinejoin,
        this.skinning = t.skinning,
        this.morphTargets = t.morphTargets,
        this.morphNormals = t.morphNormals,
        this.vertexTangents = t.vertexTangents,
        this
    }
    ,
    au.prototype = Object.create(ou.prototype),
    au.prototype.constructor = au,
    au.prototype.isMeshPhysicalMaterial = !0,
    au.prototype.copy = function(t) {
        return ou.prototype.copy.call(this, t),
        this.defines = {
            STANDARD: "",
            PHYSICAL: ""
        },
        this.clearcoat = t.clearcoat,
        this.clearcoatMap = t.clearcoatMap,
        this.clearcoatRoughness = t.clearcoatRoughness,
        this.clearcoatRoughnessMap = t.clearcoatRoughnessMap,
        this.clearcoatNormalMap = t.clearcoatNormalMap,
        this.clearcoatNormalScale.copy(t.clearcoatNormalScale),
        this.reflectivity = t.reflectivity,
        t.sheen ? this.sheen = (this.sheen || new Er).copy(t.sheen) : this.sheen = null,
        this.transparency = t.transparency,
        this
    }
    ,
    su.prototype = Object.create(Pr.prototype),
    su.prototype.constructor = su,
    su.prototype.isMeshPhongMaterial = !0,
    su.prototype.copy = function(t) {
        return Pr.prototype.copy.call(this, t),
        this.color.copy(t.color),
        this.specular.copy(t.specular),
        this.shininess = t.shininess,
        this.map = t.map,
        this.lightMap = t.lightMap,
        this.lightMapIntensity = t.lightMapIntensity,
        this.aoMap = t.aoMap,
        this.aoMapIntensity = t.aoMapIntensity,
        this.emissive.copy(t.emissive),
        this.emissiveMap = t.emissiveMap,
        this.emissiveIntensity = t.emissiveIntensity,
        this.bumpMap = t.bumpMap,
        this.bumpScale = t.bumpScale,
        this.normalMap = t.normalMap,
        this.normalMapType = t.normalMapType,
        this.normalScale.copy(t.normalScale),
        this.displacementMap = t.displacementMap,
        this.displacementScale = t.displacementScale,
        this.displacementBias = t.displacementBias,
        this.specularMap = t.specularMap,
        this.alphaMap = t.alphaMap,
        this.envMap = t.envMap,
        this.combine = t.combine,
        this.reflectivity = t.reflectivity,
        this.refractionRatio = t.refractionRatio,
        this.wireframe = t.wireframe,
        this.wireframeLinewidth = t.wireframeLinewidth,
        this.wireframeLinecap = t.wireframeLinecap,
        this.wireframeLinejoin = t.wireframeLinejoin,
        this.skinning = t.skinning,
        this.morphTargets = t.morphTargets,
        this.morphNormals = t.morphNormals,
        this
    }
    ,
    cu.prototype = Object.create(Pr.prototype),
    cu.prototype.constructor = cu,
    cu.prototype.isMeshToonMaterial = !0,
    cu.prototype.copy = function(t) {
        return Pr.prototype.copy.call(this, t),
        this.color.copy(t.color),
        this.specular.copy(t.specular),
        this.shininess = t.shininess,
        this.map = t.map,
        this.gradientMap = t.gradientMap,
        this.lightMap = t.lightMap,
        this.lightMapIntensity = t.lightMapIntensity,
        this.aoMap = t.aoMap,
        this.aoMapIntensity = t.aoMapIntensity,
        this.emissive.copy(t.emissive),
        this.emissiveMap = t.emissiveMap,
        this.emissiveIntensity = t.emissiveIntensity,
        this.bumpMap = t.bumpMap,
        this.bumpScale = t.bumpScale,
        this.normalMap = t.normalMap,
        this.normalMapType = t.normalMapType,
        this.normalScale.copy(t.normalScale),
        this.displacementMap = t.displacementMap,
        this.displacementScale = t.displacementScale,
        this.displacementBias = t.displacementBias,
        this.specularMap = t.specularMap,
        this.alphaMap = t.alphaMap,
        this.wireframe = t.wireframe,
        this.wireframeLinewidth = t.wireframeLinewidth,
        this.wireframeLinecap = t.wireframeLinecap,
        this.wireframeLinejoin = t.wireframeLinejoin,
        this.skinning = t.skinning,
        this.morphTargets = t.morphTargets,
        this.morphNormals = t.morphNormals,
        this
    }
    ,
    lu.prototype = Object.create(Pr.prototype),
    lu.prototype.constructor = lu,
    lu.prototype.isMeshNormalMaterial = !0,
    lu.prototype.copy = function(t) {
        return Pr.prototype.copy.call(this, t),
        this.bumpMap = t.bumpMap,
        this.bumpScale = t.bumpScale,
        this.normalMap = t.normalMap,
        this.normalMapType = t.normalMapType,
        this.normalScale.copy(t.normalScale),
        this.displacementMap = t.displacementMap,
        this.displacementScale = t.displacementScale,
        this.displacementBias = t.displacementBias,
        this.wireframe = t.wireframe,
        this.wireframeLinewidth = t.wireframeLinewidth,
        this.skinning = t.skinning,
        this.morphTargets = t.morphTargets,
        this.morphNormals = t.morphNormals,
        this
    }
    ,
    uu.prototype = Object.create(Pr.prototype),
    uu.prototype.constructor = uu,
    uu.prototype.isMeshLambertMaterial = !0,
    uu.prototype.copy = function(t) {
        return Pr.prototype.copy.call(this, t),
        this.color.copy(t.color),
        this.map = t.map,
        this.lightMap = t.lightMap,
        this.lightMapIntensity = t.lightMapIntensity,
        this.aoMap = t.aoMap,
        this.aoMapIntensity = t.aoMapIntensity,
        this.emissive.copy(t.emissive),
        this.emissiveMap = t.emissiveMap,
        this.emissiveIntensity = t.emissiveIntensity,
        this.specularMap = t.specularMap,
        this.alphaMap = t.alphaMap,
        this.envMap = t.envMap,
        this.combine = t.combine,
        this.reflectivity = t.reflectivity,
        this.refractionRatio = t.refractionRatio,
        this.wireframe = t.wireframe,
        this.wireframeLinewidth = t.wireframeLinewidth,
        this.wireframeLinecap = t.wireframeLinecap,
        this.wireframeLinejoin = t.wireframeLinejoin,
        this.skinning = t.skinning,
        this.morphTargets = t.morphTargets,
        this.morphNormals = t.morphNormals,
        this
    }
    ,
    du.prototype = Object.create(Pr.prototype),
    du.prototype.constructor = du,
    du.prototype.isMeshMatcapMaterial = !0,
    du.prototype.copy = function(t) {
        return Pr.prototype.copy.call(this, t),
        this.defines = {
            MATCAP: ""
        },
        this.color.copy(t.color),
        this.matcap = t.matcap,
        this.map = t.map,
        this.bumpMap = t.bumpMap,
        this.bumpScale = t.bumpScale,
        this.normalMap = t.normalMap,
        this.normalMapType = t.normalMapType,
        this.normalScale.copy(t.normalScale),
        this.displacementMap = t.displacementMap,
        this.displacementScale = t.displacementScale,
        this.displacementBias = t.displacementBias,
        this.alphaMap = t.alphaMap,
        this.skinning = t.skinning,
        this.morphTargets = t.morphTargets,
        this.morphNormals = t.morphNormals,
        this
    }
    ,
    pu.prototype = Object.create(xc.prototype),
    pu.prototype.constructor = pu,
    pu.prototype.isLineDashedMaterial = !0,
    pu.prototype.copy = function(t) {
        return xc.prototype.copy.call(this, t),
        this.scale = t.scale,
        this.dashSize = t.dashSize,
        this.gapSize = t.gapSize,
        this
    }
    ;
    var hu = Object.freeze({
        __proto__: null,
        ShadowMaterial: iu,
        SpriteMaterial: Ys,
        RawShaderMaterial: ru,
        ShaderMaterial: Po,
        PointsMaterial: Dc,
        MeshPhysicalMaterial: au,
        MeshStandardMaterial: ou,
        MeshPhongMaterial: su,
        MeshToonMaterial: cu,
        MeshNormalMaterial: lu,
        MeshLambertMaterial: uu,
        MeshDepthMaterial: ks,
        MeshDistanceMaterial: Ds,
        MeshBasicMaterial: Ir,
        MeshMatcapMaterial: du,
        LineDashedMaterial: pu,
        LineBasicMaterial: xc,
        Material: Pr
    })
      , fu = {
        arraySlice: function(t, e, n) {
            return fu.isTypedArray(t) ? new t.constructor(t.subarray(e, void 0 !== n ? n : t.length)) : t.slice(e, n)
        },
        convertArray: function(t, e, n) {
            return !t || !n && t.constructor === e ? t : "number" == typeof e.BYTES_PER_ELEMENT ? new e(t) : Array.prototype.slice.call(t)
        },
        isTypedArray: function(t) {
            return ArrayBuffer.isView(t) && !(t instanceof DataView)
        },
        getKeyframeOrder: function(t) {
            for (var e = t.length, n = new Array(e), i = 0; i !== e; ++i)
                n[i] = i;
            return n.sort((function(e, n) {
                return t[e] - t[n]
            }
            )),
            n
        },
        sortedArray: function(t, e, n) {
            for (var i = t.length, r = new t.constructor(i), o = 0, a = 0; a !== i; ++o)
                for (var s = n[o] * e, c = 0; c !== e; ++c)
                    r[a++] = t[s + c];
            return r
        },
        flattenJSON: function(t, e, n, i) {
            for (var r = 1, o = t[0]; void 0 !== o && void 0 === o[i]; )
                o = t[r++];
            if (void 0 !== o) {
                var a = o[i];
                if (void 0 !== a)
                    if (Array.isArray(a))
                        do {
                            void 0 !== (a = o[i]) && (e.push(o.time),
                            n.push.apply(n, a)),
                            o = t[r++]
                        } while (void 0 !== o);
                    else if (void 0 !== a.toArray)
                        do {
                            void 0 !== (a = o[i]) && (e.push(o.time),
                            a.toArray(n, n.length)),
                            o = t[r++]
                        } while (void 0 !== o);
                    else
                        do {
                            void 0 !== (a = o[i]) && (e.push(o.time),
                            n.push(a)),
                            o = t[r++]
                        } while (void 0 !== o)
            }
        },
        subclip: function(t, e, n, i, r) {
            r = r || 30;
            var o = t.clone();
            o.name = e;
            for (var a = [], s = 0; s < o.tracks.length; ++s) {
                for (var c = o.tracks[s], l = c.getValueSize(), u = [], d = [], p = 0; p < c.times.length; ++p) {
                    var h = c.times[p] * r;
                    if (!(h < n || h >= i)) {
                        u.push(c.times[p]);
                        for (var f = 0; f < l; ++f)
                            d.push(c.values[p * l + f])
                    }
                }
                0 !== u.length && (c.times = fu.convertArray(u, c.times.constructor),
                c.values = fu.convertArray(d, c.values.constructor),
                a.push(c))
            }
            o.tracks = a;
            var m = 1 / 0;
            for (s = 0; s < o.tracks.length; ++s)
                m > o.tracks[s].times[0] && (m = o.tracks[s].times[0]);
            for (s = 0; s < o.tracks.length; ++s)
                o.tracks[s].shift(-1 * m);
            return o.resetDuration(),
            o
        }
    };
    function mu(t, e, n, i) {
        this.parameterPositions = t,
        this._cachedIndex = 0,
        this.resultBuffer = void 0 !== i ? i : new e.constructor(n),
        this.sampleValues = e,
        this.valueSize = n
    }
    function gu(t, e, n, i) {
        mu.call(this, t, e, n, i),
        this._weightPrev = -0,
        this._offsetPrev = -0,
        this._weightNext = -0,
        this._offsetNext = -0
    }
    function vu(t, e, n, i) {
        mu.call(this, t, e, n, i)
    }
    function yu(t, e, n, i) {
        mu.call(this, t, e, n, i)
    }
    function bu(t, e, n, i) {
        if (void 0 === t)
            throw new Error("THREE.KeyframeTrack: track name is undefined");
        if (void 0 === e || 0 === e.length)
            throw new Error("THREE.KeyframeTrack: no keyframes in track named " + t);
        this.name = t,
        this.times = fu.convertArray(e, this.TimeBufferType),
        this.values = fu.convertArray(n, this.ValueBufferType),
        this.setInterpolation(i || this.DefaultInterpolation)
    }
    function wu(t, e, n) {
        bu.call(this, t, e, n)
    }
    function Su(t, e, n, i) {
        bu.call(this, t, e, n, i)
    }
    function xu(t, e, n, i) {
        bu.call(this, t, e, n, i)
    }
    function Mu(t, e, n, i) {
        mu.call(this, t, e, n, i)
    }
    function Eu(t, e, n, i) {
        bu.call(this, t, e, n, i)
    }
    function Cu(t, e, n, i) {
        bu.call(this, t, e, n, i)
    }
    function Au(t, e, n, i) {
        bu.call(this, t, e, n, i)
    }
    function Tu(t, e, n) {
        this.name = t,
        this.tracks = n,
        this.duration = void 0 !== e ? e : -1,
        this.uuid = Kn.generateUUID(),
        this.duration < 0 && this.resetDuration()
    }
    function Ou(t) {
        if (void 0 === t.type)
            throw new Error("THREE.KeyframeTrack: track type undefined, can not parse");
        var e = function(t) {
            switch (t.toLowerCase()) {
            case "scalar":
            case "double":
            case "float":
            case "number":
            case "integer":
                return xu;
            case "vector":
            case "vector2":
            case "vector3":
            case "vector4":
                return Au;
            case "color":
                return Su;
            case "quaternion":
                return Eu;
            case "bool":
            case "boolean":
                return wu;
            case "string":
                return Cu
            }
            throw new Error("THREE.KeyframeTrack: Unsupported typeName: " + t)
        }(t.type);
        if (void 0 === t.times) {
            var n = []
              , i = [];
            fu.flattenJSON(t.keys, n, i, "value"),
            t.times = n,
            t.values = i
        }
        return void 0 !== e.parse ? e.parse(t) : new e(t.name,t.times,t.values,t.interpolation)
    }
    Object.assign(mu.prototype, {
        evaluate: function(t) {
            var e = this.parameterPositions
              , n = this._cachedIndex
              , i = e[n]
              , r = e[n - 1];
            t: {
                e: {
                    var o;
                    n: {
                        i: if (!(t < i)) {
                            for (var a = n + 2; ; ) {
                                if (void 0 === i) {
                                    if (t < r)
                                        break i;
                                    return n = e.length,
                                    this._cachedIndex = n,
                                    this.afterEnd_(n - 1, t, r)
                                }
                                if (n === a)
                                    break;
                                if (r = i,
                                t < (i = e[++n]))
                                    break e
                            }
                            o = e.length;
                            break n
                        }
                        if (t >= r)
                            break t;
                        var s = e[1];
                        t < s && (n = 2,
                        r = s);
                        for (a = n - 2; ; ) {
                            if (void 0 === r)
                                return this._cachedIndex = 0,
                                this.beforeStart_(0, t, i);
                            if (n === a)
                                break;
                            if (i = r,
                            t >= (r = e[--n - 1]))
                                break e
                        }
                        o = n,
                        n = 0
                    }
                    for (; n < o; ) {
                        var c = n + o >>> 1;
                        t < e[c] ? o = c : n = c + 1
                    }
                    if (i = e[n],
                    void 0 === (r = e[n - 1]))
                        return this._cachedIndex = 0,
                        this.beforeStart_(0, t, i);
                    if (void 0 === i)
                        return n = e.length,
                        this._cachedIndex = n,
                        this.afterEnd_(n - 1, r, t)
                }
                this._cachedIndex = n,
                this.intervalChanged_(n, r, i)
            }
            return this.interpolate_(n, r, t, i)
        },
        settings: null,
        DefaultSettings_: {},
        getSettings_: function() {
            return this.settings || this.DefaultSettings_
        },
        copySampleValue_: function(t) {
            for (var e = this.resultBuffer, n = this.sampleValues, i = this.valueSize, r = t * i, o = 0; o !== i; ++o)
                e[o] = n[r + o];
            return e
        },
        interpolate_: function() {
            throw new Error("call to abstract method")
        },
        intervalChanged_: function() {}
    }),
    Object.assign(mu.prototype, {
        beforeStart_: mu.prototype.copySampleValue_,
        afterEnd_: mu.prototype.copySampleValue_
    }),
    gu.prototype = Object.assign(Object.create(mu.prototype), {
        constructor: gu,
        DefaultSettings_: {
            endingStart: en,
            endingEnd: en
        },
        intervalChanged_: function(t, e, n) {
            var i = this.parameterPositions
              , r = t - 2
              , o = t + 1
              , a = i[r]
              , s = i[o];
            if (void 0 === a)
                switch (this.getSettings_().endingStart) {
                case nn:
                    r = t,
                    a = 2 * e - n;
                    break;
                case rn:
                    a = e + i[r = i.length - 2] - i[r + 1];
                    break;
                default:
                    r = t,
                    a = n
                }
            if (void 0 === s)
                switch (this.getSettings_().endingEnd) {
                case nn:
                    o = t,
                    s = 2 * n - e;
                    break;
                case rn:
                    o = 1,
                    s = n + i[1] - i[0];
                    break;
                default:
                    o = t - 1,
                    s = e
                }
            var c = .5 * (n - e)
              , l = this.valueSize;
            this._weightPrev = c / (e - a),
            this._weightNext = c / (s - n),
            this._offsetPrev = r * l,
            this._offsetNext = o * l
        },
        interpolate_: function(t, e, n, i) {
            for (var r = this.resultBuffer, o = this.sampleValues, a = this.valueSize, s = t * a, c = s - a, l = this._offsetPrev, u = this._offsetNext, d = this._weightPrev, p = this._weightNext, h = (n - e) / (i - e), f = h * h, m = f * h, g = -d * m + 2 * d * f - d * h, v = (1 + d) * m + (-1.5 - 2 * d) * f + (-.5 + d) * h + 1, y = (-1 - p) * m + (1.5 + p) * f + .5 * h, b = p * m - p * f, w = 0; w !== a; ++w)
                r[w] = g * o[l + w] + v * o[c + w] + y * o[s + w] + b * o[u + w];
            return r
        }
    }),
    vu.prototype = Object.assign(Object.create(mu.prototype), {
        constructor: vu,
        interpolate_: function(t, e, n, i) {
            for (var r = this.resultBuffer, o = this.sampleValues, a = this.valueSize, s = t * a, c = s - a, l = (n - e) / (i - e), u = 1 - l, d = 0; d !== a; ++d)
                r[d] = o[c + d] * u + o[s + d] * l;
            return r
        }
    }),
    yu.prototype = Object.assign(Object.create(mu.prototype), {
        constructor: yu,
        interpolate_: function(t) {
            return this.copySampleValue_(t - 1)
        }
    }),
    Object.assign(bu, {
        toJSON: function(t) {
            var e, n = t.constructor;
            if (void 0 !== n.toJSON)
                e = n.toJSON(t);
            else {
                e = {
                    name: t.name,
                    times: fu.convertArray(t.times, Array),
                    values: fu.convertArray(t.values, Array)
                };
                var i = t.getInterpolation();
                i !== t.DefaultInterpolation && (e.interpolation = i)
            }
            return e.type = t.ValueTypeName,
            e
        }
    }),
    Object.assign(bu.prototype, {
        constructor: bu,
        TimeBufferType: Float32Array,
        ValueBufferType: Float32Array,
        DefaultInterpolation: $e,
        InterpolantFactoryMethodDiscrete: function(t) {
            return new yu(this.times,this.values,this.getValueSize(),t)
        },
        InterpolantFactoryMethodLinear: function(t) {
            return new vu(this.times,this.values,this.getValueSize(),t)
        },
        InterpolantFactoryMethodSmooth: function(t) {
            return new gu(this.times,this.values,this.getValueSize(),t)
        },
        setInterpolation: function(t) {
            var e;
            switch (t) {
            case Qe:
                e = this.InterpolantFactoryMethodDiscrete;
                break;
            case $e:
                e = this.InterpolantFactoryMethodLinear;
                break;
            case tn:
                e = this.InterpolantFactoryMethodSmooth
            }
            if (void 0 === e) {
                var n = "unsupported interpolation for " + this.ValueTypeName + " keyframe track named " + this.name;
                if (void 0 === this.createInterpolant) {
                    if (t === this.DefaultInterpolation)
                        throw new Error(n);
                    this.setInterpolation(this.DefaultInterpolation)
                }
                return console.warn("THREE.KeyframeTrack:", n),
                this
            }
            return this.createInterpolant = e,
            this
        },
        getInterpolation: function() {
            switch (this.createInterpolant) {
            case this.InterpolantFactoryMethodDiscrete:
                return Qe;
            case this.InterpolantFactoryMethodLinear:
                return $e;
            case this.InterpolantFactoryMethodSmooth:
                return tn
            }
        },
        getValueSize: function() {
            return this.values.length / this.times.length
        },
        shift: function(t) {
            if (0 !== t)
                for (var e = this.times, n = 0, i = e.length; n !== i; ++n)
                    e[n] += t;
            return this
        },
        scale: function(t) {
            if (1 !== t)
                for (var e = this.times, n = 0, i = e.length; n !== i; ++n)
                    e[n] *= t;
            return this
        },
        trim: function(t, e) {
            for (var n = this.times, i = n.length, r = 0, o = i - 1; r !== i && n[r] < t; )
                ++r;
            for (; -1 !== o && n[o] > e; )
                --o;
            if (++o,
            0 !== r || o !== i) {
                r >= o && (r = (o = Math.max(o, 1)) - 1);
                var a = this.getValueSize();
                this.times = fu.arraySlice(n, r, o),
                this.values = fu.arraySlice(this.values, r * a, o * a)
            }
            return this
        },
        validate: function() {
            var t = !0
              , e = this.getValueSize();
            e - Math.floor(e) != 0 && (console.error("THREE.KeyframeTrack: Invalid value size in track.", this),
            t = !1);
            var n = this.times
              , i = this.values
              , r = n.length;
            0 === r && (console.error("THREE.KeyframeTrack: Track is empty.", this),
            t = !1);
            for (var o = null, a = 0; a !== r; a++) {
                var s = n[a];
                if ("number" == typeof s && isNaN(s)) {
                    console.error("THREE.KeyframeTrack: Time is not a valid number.", this, a, s),
                    t = !1;
                    break
                }
                if (null !== o && o > s) {
                    console.error("THREE.KeyframeTrack: Out of order keys.", this, a, s, o),
                    t = !1;
                    break
                }
                o = s
            }
            if (void 0 !== i && fu.isTypedArray(i)) {
                a = 0;
                for (var c = i.length; a !== c; ++a) {
                    var l = i[a];
                    if (isNaN(l)) {
                        console.error("THREE.KeyframeTrack: Value is not a valid number.", this, a, l),
                        t = !1;
                        break
                    }
                }
            }
            return t
        },
        optimize: function() {
            for (var t = fu.arraySlice(this.times), e = fu.arraySlice(this.values), n = this.getValueSize(), i = this.getInterpolation() === tn, r = 1, o = t.length - 1, a = 1; a < o; ++a) {
                var s = !1
                  , c = t[a];
                if (c !== t[a + 1] && (1 !== a || c !== c[0]))
                    if (i)
                        s = !0;
                    else
                        for (var l = a * n, u = l - n, d = l + n, p = 0; p !== n; ++p) {
                            var h = e[l + p];
                            if (h !== e[u + p] || h !== e[d + p]) {
                                s = !0;
                                break
                            }
                        }
                if (s) {
                    if (a !== r) {
                        t[r] = t[a];
                        var f = a * n
                          , m = r * n;
                        for (p = 0; p !== n; ++p)
                            e[m + p] = e[f + p]
                    }
                    ++r
                }
            }
            if (o > 0) {
                t[r] = t[o];
                for (f = o * n,
                m = r * n,
                p = 0; p !== n; ++p)
                    e[m + p] = e[f + p];
                ++r
            }
            return r !== t.length ? (this.times = fu.arraySlice(t, 0, r),
            this.values = fu.arraySlice(e, 0, r * n)) : (this.times = t,
            this.values = e),
            this
        },
        clone: function() {
            var t = fu.arraySlice(this.times, 0)
              , e = fu.arraySlice(this.values, 0)
              , n = new (0,
            this.constructor)(this.name,t,e);
            return n.createInterpolant = this.createInterpolant,
            n
        }
    }),
    wu.prototype = Object.assign(Object.create(bu.prototype), {
        constructor: wu,
        ValueTypeName: "bool",
        ValueBufferType: Array,
        DefaultInterpolation: Qe,
        InterpolantFactoryMethodLinear: void 0,
        InterpolantFactoryMethodSmooth: void 0
    }),
    Su.prototype = Object.assign(Object.create(bu.prototype), {
        constructor: Su,
        ValueTypeName: "color"
    }),
    xu.prototype = Object.assign(Object.create(bu.prototype), {
        constructor: xu,
        ValueTypeName: "number"
    }),
    Mu.prototype = Object.assign(Object.create(mu.prototype), {
        constructor: Mu,
        interpolate_: function(t, e, n, i) {
            for (var r = this.resultBuffer, o = this.sampleValues, a = this.valueSize, s = t * a, c = (n - e) / (i - e), l = s + a; s !== l; s += 4)
                ri.slerpFlat(r, 0, o, s - a, o, s, c);
            return r
        }
    }),
    Eu.prototype = Object.assign(Object.create(bu.prototype), {
        constructor: Eu,
        ValueTypeName: "quaternion",
        DefaultInterpolation: $e,
        InterpolantFactoryMethodLinear: function(t) {
            return new Mu(this.times,this.values,this.getValueSize(),t)
        },
        InterpolantFactoryMethodSmooth: void 0
    }),
    Cu.prototype = Object.assign(Object.create(bu.prototype), {
        constructor: Cu,
        ValueTypeName: "string",
        ValueBufferType: Array,
        DefaultInterpolation: Qe,
        InterpolantFactoryMethodLinear: void 0,
        InterpolantFactoryMethodSmooth: void 0
    }),
    Au.prototype = Object.assign(Object.create(bu.prototype), {
        constructor: Au,
        ValueTypeName: "vector"
    }),
    Object.assign(Tu, {
        parse: function(t) {
            for (var e = [], n = t.tracks, i = 1 / (t.fps || 1), r = 0, o = n.length; r !== o; ++r)
                e.push(Ou(n[r]).scale(i));
            return new Tu(t.name,t.duration,e)
        },
        toJSON: function(t) {
            for (var e = [], n = t.tracks, i = {
                name: t.name,
                duration: t.duration,
                tracks: e,
                uuid: t.uuid
            }, r = 0, o = n.length; r !== o; ++r)
                e.push(bu.toJSON(n[r]));
            return i
        },
        CreateFromMorphTargetSequence: function(t, e, n, i) {
            for (var r = e.length, o = [], a = 0; a < r; a++) {
                var s = []
                  , c = [];
                s.push((a + r - 1) % r, a, (a + 1) % r),
                c.push(0, 1, 0);
                var l = fu.getKeyframeOrder(s);
                s = fu.sortedArray(s, 1, l),
                c = fu.sortedArray(c, 1, l),
                i || 0 !== s[0] || (s.push(r),
                c.push(c[0])),
                o.push(new xu(".morphTargetInfluences[" + e[a].name + "]",s,c).scale(1 / n))
            }
            return new Tu(t,-1,o)
        },
        findByName: function(t, e) {
            var n = t;
            if (!Array.isArray(t)) {
                var i = t;
                n = i.geometry && i.geometry.animations || i.animations
            }
            for (var r = 0; r < n.length; r++)
                if (n[r].name === e)
                    return n[r];
            return null
        },
        CreateClipsFromMorphTargetSequences: function(t, e, n) {
            for (var i = {}, r = /^([\w-]*?)([\d]+)$/, o = 0, a = t.length; o < a; o++) {
                var s = t[o]
                  , c = s.name.match(r);
                if (c && c.length > 1) {
                    var l = i[d = c[1]];
                    l || (i[d] = l = []),
                    l.push(s)
                }
            }
            var u = [];
            for (var d in i)
                u.push(Tu.CreateFromMorphTargetSequence(d, i[d], e, n));
            return u
        },
        parseAnimation: function(t, e) {
            if (!t)
                return console.error("THREE.AnimationClip: No animation in JSONLoader data."),
                null;
            for (var n = function(t, e, n, i, r) {
                if (0 !== n.length) {
                    var o = []
                      , a = [];
                    fu.flattenJSON(n, o, a, i),
                    0 !== o.length && r.push(new t(e,o,a))
                }
            }, i = [], r = t.name || "default", o = t.length || -1, a = t.fps || 30, s = t.hierarchy || [], c = 0; c < s.length; c++) {
                var l = s[c].keys;
                if (l && 0 !== l.length)
                    if (l[0].morphTargets) {
                        for (var u = {}, d = 0; d < l.length; d++)
                            if (l[d].morphTargets)
                                for (var p = 0; p < l[d].morphTargets.length; p++)
                                    u[l[d].morphTargets[p]] = -1;
                        for (var h in u) {
                            var f = []
                              , m = [];
                            for (p = 0; p !== l[d].morphTargets.length; ++p) {
                                var g = l[d];
                                f.push(g.time),
                                m.push(g.morphTarget === h ? 1 : 0)
                            }
                            i.push(new xu(".morphTargetInfluence[" + h + "]",f,m))
                        }
                        o = u.length * (a || 1)
                    } else {
                        var v = ".bones[" + e[c].name + "]";
                        n(Au, v + ".position", l, "pos", i),
                        n(Eu, v + ".quaternion", l, "rot", i),
                        n(Au, v + ".scale", l, "scl", i)
                    }
            }
            return 0 === i.length ? null : new Tu(r,o,i)
        }
    }),
    Object.assign(Tu.prototype, {
        resetDuration: function() {
            for (var t = 0, e = 0, n = this.tracks.length; e !== n; ++e) {
                var i = this.tracks[e];
                t = Math.max(t, i.times[i.times.length - 1])
            }
            return this.duration = t,
            this
        },
        trim: function() {
            for (var t = 0; t < this.tracks.length; t++)
                this.tracks[t].trim(0, this.duration);
            return this
        },
        validate: function() {
            for (var t = !0, e = 0; e < this.tracks.length; e++)
                t = t && this.tracks[e].validate();
            return t
        },
        optimize: function() {
            for (var t = 0; t < this.tracks.length; t++)
                this.tracks[t].optimize();
            return this
        },
        clone: function() {
            for (var t = [], e = 0; e < this.tracks.length; e++)
                t.push(this.tracks[e].clone());
            return new Tu(this.name,this.duration,t)
        }
    });
    var _u = {
        enabled: !1,
        files: {},
        add: function(t, e) {
            !1 !== this.enabled && (this.files[t] = e)
        },
        get: function(t) {
            if (!1 !== this.enabled)
                return this.files[t]
        },
        remove: function(t) {
            delete this.files[t]
        },
        clear: function() {
            this.files = {}
        }
    };
    function Pu(t, e, n) {
        var i = this
          , r = !1
          , o = 0
          , a = 0
          , s = void 0
          , c = [];
        this.onStart = void 0,
        this.onLoad = t,
        this.onProgress = e,
        this.onError = n,
        this.itemStart = function(t) {
            a++,
            !1 === r && void 0 !== i.onStart && i.onStart(t, o, a),
            r = !0
        }
        ,
        this.itemEnd = function(t) {
            o++,
            void 0 !== i.onProgress && i.onProgress(t, o, a),
            o === a && (r = !1,
            void 0 !== i.onLoad && i.onLoad())
        }
        ,
        this.itemError = function(t) {
            void 0 !== i.onError && i.onError(t)
        }
        ,
        this.resolveURL = function(t) {
            return s ? s(t) : t
        }
        ,
        this.setURLModifier = function(t) {
            return s = t,
            this
        }
        ,
        this.addHandler = function(t, e) {
            return c.push(t, e),
            this
        }
        ,
        this.removeHandler = function(t) {
            var e = c.indexOf(t);
            return -1 !== e && c.splice(e, 2),
            this
        }
        ,
        this.getHandler = function(t) {
            for (var e = 0, n = c.length; e < n; e += 2) {
                var i = c[e]
                  , r = c[e + 1];
                if (i.global && (i.lastIndex = 0),
                i.test(t))
                    return r
            }
            return null
        }
    }
    var Iu = new Pu;
    function ku(t) {
        this.manager = void 0 !== t ? t : Iu,
        this.crossOrigin = "anonymous",
        this.path = "",
        this.resourcePath = ""
    }
    Object.assign(ku.prototype, {
        load: function() {},
        parse: function() {},
        setCrossOrigin: function(t) {
            return this.crossOrigin = t,
            this
        },
        setPath: function(t) {
            return this.path = t,
            this
        },
        setResourcePath: function(t) {
            return this.resourcePath = t,
            this
        }
    });
    var Du = {};
    function Ru(t) {
        ku.call(this, t)
    }
    function Lu(t) {
        ku.call(this, t)
    }
    function Nu(t) {
        ku.call(this, t)
    }
    function ju(t) {
        ku.call(this, t)
    }
    function Vu(t) {
        ku.call(this, t)
    }
    function Fu(t) {
        ku.call(this, t)
    }
    function Uu(t) {
        ku.call(this, t)
    }
    function Bu() {
        this.type = "Curve",
        this.arcLengthDivisions = 200
    }
    function zu(t, e, n, i, r, o, a, s) {
        Bu.call(this),
        this.type = "EllipseCurve",
        this.aX = t || 0,
        this.aY = e || 0,
        this.xRadius = n || 1,
        this.yRadius = i || 1,
        this.aStartAngle = r || 0,
        this.aEndAngle = o || 2 * Math.PI,
        this.aClockwise = a || !1,
        this.aRotation = s || 0
    }
    function Gu(t, e, n, i, r, o) {
        zu.call(this, t, e, n, n, i, r, o),
        this.type = "ArcCurve"
    }
    function Hu() {
        var t = 0
          , e = 0
          , n = 0
          , i = 0;
        function r(r, o, a, s) {
            t = r,
            e = a,
            n = -3 * r + 3 * o - 2 * a - s,
            i = 2 * r - 2 * o + a + s
        }
        return {
            initCatmullRom: function(t, e, n, i, o) {
                r(e, n, o * (n - t), o * (i - e))
            },
            initNonuniformCatmullRom: function(t, e, n, i, o, a, s) {
                var c = (e - t) / o - (n - t) / (o + a) + (n - e) / a
                  , l = (n - e) / a - (i - e) / (a + s) + (i - n) / s;
                r(e, n, c *= a, l *= a)
            },
            calc: function(r) {
                var o = r * r;
                return t + e * r + n * o + i * (o * r)
            }
        }
    }
    Ru.prototype = Object.assign(Object.create(ku.prototype), {
        constructor: Ru,
        load: function(t, e, n, i) {
            void 0 === t && (t = ""),
            void 0 !== this.path && (t = this.path + t),
            t = this.manager.resolveURL(t);
            var r = this
              , o = _u.get(t);
            if (void 0 !== o)
                return r.manager.itemStart(t),
                setTimeout((function() {
                    e && e(o),
                    r.manager.itemEnd(t)
                }
                ), 0),
                o;
            if (void 0 === Du[t]) {
                var a = t.match(/^data:(.*?)(;base64)?,(.*)$/);
                if (a) {
                    var s = a[1]
                      , c = !!a[2]
                      , l = a[3];
                    l = decodeURIComponent(l),
                    c && (l = atob(l));
                    try {
                        var u, d = (this.responseType || "").toLowerCase();
                        switch (d) {
                        case "arraybuffer":
                        case "blob":
                            for (var p = new Uint8Array(l.length), h = 0; h < l.length; h++)
                                p[h] = l.charCodeAt(h);
                            u = "blob" === d ? new Blob([p.buffer],{
                                type: s
                            }) : p.buffer;
                            break;
                        case "document":
                            var f = new DOMParser;
                            u = f.parseFromString(l, s);
                            break;
                        case "json":
                            u = JSON.parse(l);
                            break;
                        default:
                            u = l
                        }
                        setTimeout((function() {
                            e && e(u),
                            r.manager.itemEnd(t)
                        }
                        ), 0)
                    } catch (e) {
                        setTimeout((function() {
                            i && i(e),
                            r.manager.itemError(t),
                            r.manager.itemEnd(t)
                        }
                        ), 0)
                    }
                } else {
                    Du[t] = [],
                    Du[t].push({
                        onLoad: e,
                        onProgress: n,
                        onError: i
                    });
                    var m = new XMLHttpRequest;
                    for (var g in m.open("GET", t, !0),
                    m.addEventListener("load", (function(e) {
                        var n = this.response
                          , i = Du[t];
                        if (delete Du[t],
                        200 === this.status || 0 === this.status) {
                            0 === this.status && console.warn("THREE.FileLoader: HTTP Status 0 received."),
                            _u.add(t, n);
                            for (var o = 0, a = i.length; o < a; o++) {
                                (s = i[o]).onLoad && s.onLoad(n)
                            }
                            r.manager.itemEnd(t)
                        } else {
                            for (o = 0,
                            a = i.length; o < a; o++) {
                                var s;
                                (s = i[o]).onError && s.onError(e)
                            }
                            r.manager.itemError(t),
                            r.manager.itemEnd(t)
                        }
                    }
                    ), !1),
                    m.addEventListener("progress", (function(e) {
                        for (var n = Du[t], i = 0, r = n.length; i < r; i++) {
                            var o = n[i];
                            o.onProgress && o.onProgress(e)
                        }
                    }
                    ), !1),
                    m.addEventListener("error", (function(e) {
                        var n = Du[t];
                        delete Du[t];
                        for (var i = 0, o = n.length; i < o; i++) {
                            var a = n[i];
                            a.onError && a.onError(e)
                        }
                        r.manager.itemError(t),
                        r.manager.itemEnd(t)
                    }
                    ), !1),
                    m.addEventListener("abort", (function(e) {
                        var n = Du[t];
                        delete Du[t];
                        for (var i = 0, o = n.length; i < o; i++) {
                            var a = n[i];
                            a.onError && a.onError(e)
                        }
                        r.manager.itemError(t),
                        r.manager.itemEnd(t)
                    }
                    ), !1),
                    void 0 !== this.responseType && (m.responseType = this.responseType),
                    void 0 !== this.withCredentials && (m.withCredentials = this.withCredentials),
                    m.overrideMimeType && m.overrideMimeType(void 0 !== this.mimeType ? this.mimeType : "text/plain"),
                    this.requestHeader)
                        m.setRequestHeader(g, this.requestHeader[g]);
                    m.send(null)
                }
                return r.manager.itemStart(t),
                m
            }
            Du[t].push({
                onLoad: e,
                onProgress: n,
                onError: i
            })
        },
        setResponseType: function(t) {
            return this.responseType = t,
            this
        },
        setWithCredentials: function(t) {
            return this.withCredentials = t,
            this
        },
        setMimeType: function(t) {
            return this.mimeType = t,
            this
        },
        setRequestHeader: function(t) {
            return this.requestHeader = t,
            this
        }
    }),
    Lu.prototype = Object.assign(Object.create(ku.prototype), {
        constructor: Lu,
        load: function(t, e, n, i) {
            var r = this
              , o = new Ru(r.manager);
            o.setPath(r.path),
            o.load(t, (function(t) {
                e(r.parse(JSON.parse(t)))
            }
            ), n, i)
        },
        parse: function(t) {
            for (var e = [], n = 0; n < t.length; n++) {
                var i = Tu.parse(t[n]);
                e.push(i)
            }
            return e
        }
    }),
    Nu.prototype = Object.assign(Object.create(ku.prototype), {
        constructor: Nu,
        load: function(t, e, n, i) {
            var r = this
              , o = []
              , a = new Bc;
            a.image = o;
            var s = new Ru(this.manager);
            function c(c) {
                s.load(t[c], (function(t) {
                    var n = r.parse(t, !0);
                    o[c] = {
                        width: n.width,
                        height: n.height,
                        format: n.format,
                        mipmaps: n.mipmaps
                    },
                    6 === (l += 1) && (1 === n.mipmapCount && (a.minFilter = kt),
                    a.format = n.format,
                    a.needsUpdate = !0,
                    e && e(a))
                }
                ), n, i)
            }
            if (s.setPath(this.path),
            s.setResponseType("arraybuffer"),
            Array.isArray(t))
                for (var l = 0, u = 0, d = t.length; u < d; ++u)
                    c(u);
            else
                s.load(t, (function(t) {
                    var n = r.parse(t, !0);
                    if (n.isCubemap)
                        for (var i = n.mipmaps.length / n.mipmapCount, s = 0; s < i; s++) {
                            o[s] = {
                                mipmaps: []
                            };
                            for (var c = 0; c < n.mipmapCount; c++)
                                o[s].mipmaps.push(n.mipmaps[s * n.mipmapCount + c]),
                                o[s].format = n.format,
                                o[s].width = n.width,
                                o[s].height = n.height
                        }
                    else
                        a.image.width = n.width,
                        a.image.height = n.height,
                        a.mipmaps = n.mipmaps;
                    1 === n.mipmapCount && (a.minFilter = kt),
                    a.format = n.format,
                    a.needsUpdate = !0,
                    e && e(a)
                }
                ), n, i);
            return a
        }
    }),
    ju.prototype = Object.assign(Object.create(ku.prototype), {
        constructor: ju,
        load: function(t, e, n, i) {
            var r = this
              , o = new Lo
              , a = new Ru(this.manager);
            return a.setResponseType("arraybuffer"),
            a.setPath(this.path),
            a.load(t, (function(t) {
                var n = r.parse(t);
                n && (void 0 !== n.image ? o.image = n.image : void 0 !== n.data && (o.image.width = n.width,
                o.image.height = n.height,
                o.image.data = n.data),
                o.wrapS = void 0 !== n.wrapS ? n.wrapS : Ct,
                o.wrapT = void 0 !== n.wrapT ? n.wrapT : Ct,
                o.magFilter = void 0 !== n.magFilter ? n.magFilter : kt,
                o.minFilter = void 0 !== n.minFilter ? n.minFilter : kt,
                o.anisotropy = void 0 !== n.anisotropy ? n.anisotropy : 1,
                void 0 !== n.format && (o.format = n.format),
                void 0 !== n.type && (o.type = n.type),
                void 0 !== n.mipmaps && (o.mipmaps = n.mipmaps,
                o.minFilter = Lt),
                1 === n.mipmapCount && (o.minFilter = kt),
                o.needsUpdate = !0,
                e && e(o, n))
            }
            ), n, i),
            o
        }
    }),
    Vu.prototype = Object.assign(Object.create(ku.prototype), {
        constructor: Vu,
        load: function(t, e, n, i) {
            void 0 !== this.path && (t = this.path + t),
            t = this.manager.resolveURL(t);
            var r = this
              , o = _u.get(t);
            if (void 0 !== o)
                return r.manager.itemStart(t),
                setTimeout((function() {
                    e && e(o),
                    r.manager.itemEnd(t)
                }
                ), 0),
                o;
            var a = document.createElementNS("http://www.w3.org/1999/xhtml", "img");
            function s() {
                a.removeEventListener("load", s, !1),
                a.removeEventListener("error", c, !1),
                _u.add(t, this),
                e && e(this),
                r.manager.itemEnd(t)
            }
            function c(e) {
                a.removeEventListener("load", s, !1),
                a.removeEventListener("error", c, !1),
                i && i(e),
                r.manager.itemError(t),
                r.manager.itemEnd(t)
            }
            return a.addEventListener("load", s, !1),
            a.addEventListener("error", c, !1),
            "data:" !== t.substr(0, 5) && void 0 !== this.crossOrigin && (a.crossOrigin = this.crossOrigin),
            r.manager.itemStart(t),
            a.src = t,
            a
        }
    }),
    Fu.prototype = Object.assign(Object.create(ku.prototype), {
        constructor: Fu,
        load: function(t, e, n, i) {
            var r = new ia
              , o = new Vu(this.manager);
            o.setCrossOrigin(this.crossOrigin),
            o.setPath(this.path);
            var a = 0;
            function s(n) {
                o.load(t[n], (function(t) {
                    r.images[n] = t,
                    6 === ++a && (r.needsUpdate = !0,
                    e && e(r))
                }
                ), void 0, i)
            }
            for (var c = 0; c < t.length; ++c)
                s(c);
            return r
        }
    }),
    Uu.prototype = Object.assign(Object.create(ku.prototype), {
        constructor: Uu,
        load: function(t, e, n, i) {
            var r = new ti
              , o = new Vu(this.manager);
            return o.setCrossOrigin(this.crossOrigin),
            o.setPath(this.path),
            o.load(t, (function(n) {
                r.image = n;
                var i = t.search(/\.jpe?g($|\?)/i) > 0 || 0 === t.search(/^data\:image\/jpeg/);
                r.format = i ? Zt : Jt,
                r.needsUpdate = !0,
                void 0 !== e && e(r)
            }
            ), n, i),
            r
        }
    }),
    Object.assign(Bu.prototype, {
        getPoint: function() {
            return console.warn("THREE.Curve: .getPoint() not implemented."),
            null
        },
        getPointAt: function(t, e) {
            var n = this.getUtoTmapping(t);
            return this.getPoint(n, e)
        },
        getPoints: function(t) {
            void 0 === t && (t = 5);
            for (var e = [], n = 0; n <= t; n++)
                e.push(this.getPoint(n / t));
            return e
        },
        getSpacedPoints: function(t) {
            void 0 === t && (t = 5);
            for (var e = [], n = 0; n <= t; n++)
                e.push(this.getPointAt(n / t));
            return e
        },
        getLength: function() {
            var t = this.getLengths();
            return t[t.length - 1]
        },
        getLengths: function(t) {
            if (void 0 === t && (t = this.arcLengthDivisions),
            this.cacheArcLengths && this.cacheArcLengths.length === t + 1 && !this.needsUpdate)
                return this.cacheArcLengths;
            this.needsUpdate = !1;
            var e, n, i = [], r = this.getPoint(0), o = 0;
            for (i.push(0),
            n = 1; n <= t; n++)
                o += (e = this.getPoint(n / t)).distanceTo(r),
                i.push(o),
                r = e;
            return this.cacheArcLengths = i,
            i
        },
        updateArcLengths: function() {
            this.needsUpdate = !0,
            this.getLengths()
        },
        getUtoTmapping: function(t, e) {
            var n, i = this.getLengths(), r = 0, o = i.length;
            n = e || t * i[o - 1];
            for (var a, s = 0, c = o - 1; s <= c; )
                if ((a = i[r = Math.floor(s + (c - s) / 2)] - n) < 0)
                    s = r + 1;
                else {
                    if (!(a > 0)) {
                        c = r;
                        break
                    }
                    c = r - 1
                }
            if (i[r = c] === n)
                return r / (o - 1);
            var l = i[r];
            return (r + (n - l) / (i[r + 1] - l)) / (o - 1)
        },
        getTangent: function(t) {
            var e = t - 1e-4
              , n = t + 1e-4;
            e < 0 && (e = 0),
            n > 1 && (n = 1);
            var i = this.getPoint(e);
            return this.getPoint(n).clone().sub(i).normalize()
        },
        getTangentAt: function(t) {
            var e = this.getUtoTmapping(t);
            return this.getTangent(e)
        },
        computeFrenetFrames: function(t, e) {
            var n, i, r, o = new si, a = [], s = [], c = [], l = new si, u = new mi;
            for (n = 0; n <= t; n++)
                i = n / t,
                a[n] = this.getTangentAt(i),
                a[n].normalize();
            s[0] = new si,
            c[0] = new si;
            var d = Number.MAX_VALUE
              , p = Math.abs(a[0].x)
              , h = Math.abs(a[0].y)
              , f = Math.abs(a[0].z);
            for (p <= d && (d = p,
            o.set(1, 0, 0)),
            h <= d && (d = h,
            o.set(0, 1, 0)),
            f <= d && o.set(0, 0, 1),
            l.crossVectors(a[0], o).normalize(),
            s[0].crossVectors(a[0], l),
            c[0].crossVectors(a[0], s[0]),
            n = 1; n <= t; n++)
                s[n] = s[n - 1].clone(),
                c[n] = c[n - 1].clone(),
                l.crossVectors(a[n - 1], a[n]),
                l.length() > Number.EPSILON && (l.normalize(),
                r = Math.acos(Kn.clamp(a[n - 1].dot(a[n]), -1, 1)),
                s[n].applyMatrix4(u.makeRotationAxis(l, r))),
                c[n].crossVectors(a[n], s[n]);
            if (!0 === e)
                for (r = Math.acos(Kn.clamp(s[0].dot(s[t]), -1, 1)),
                r /= t,
                a[0].dot(l.crossVectors(s[0], s[t])) > 0 && (r = -r),
                n = 1; n <= t; n++)
                    s[n].applyMatrix4(u.makeRotationAxis(a[n], r * n)),
                    c[n].crossVectors(a[n], s[n]);
            return {
                tangents: a,
                normals: s,
                binormals: c
            }
        },
        clone: function() {
            return (new this.constructor).copy(this)
        },
        copy: function(t) {
            return this.arcLengthDivisions = t.arcLengthDivisions,
            this
        },
        toJSON: function() {
            var t = {
                metadata: {
                    version: 4.5,
                    type: "Curve",
                    generator: "Curve.toJSON"
                }
            };
            return t.arcLengthDivisions = this.arcLengthDivisions,
            t.type = this.type,
            t
        },
        fromJSON: function(t) {
            return this.arcLengthDivisions = t.arcLengthDivisions,
            this
        }
    }),
    zu.prototype = Object.create(Bu.prototype),
    zu.prototype.constructor = zu,
    zu.prototype.isEllipseCurve = !0,
    zu.prototype.getPoint = function(t, e) {
        for (var n = e || new Zn, i = 2 * Math.PI, r = this.aEndAngle - this.aStartAngle, o = Math.abs(r) < Number.EPSILON; r < 0; )
            r += i;
        for (; r > i; )
            r -= i;
        r < Number.EPSILON && (r = o ? 0 : i),
        !0 !== this.aClockwise || o || (r === i ? r = -i : r -= i);
        var a = this.aStartAngle + t * r
          , s = this.aX + this.xRadius * Math.cos(a)
          , c = this.aY + this.yRadius * Math.sin(a);
        if (0 !== this.aRotation) {
            var l = Math.cos(this.aRotation)
              , u = Math.sin(this.aRotation)
              , d = s - this.aX
              , p = c - this.aY;
            s = d * l - p * u + this.aX,
            c = d * u + p * l + this.aY
        }
        return n.set(s, c)
    }
    ,
    zu.prototype.copy = function(t) {
        return Bu.prototype.copy.call(this, t),
        this.aX = t.aX,
        this.aY = t.aY,
        this.xRadius = t.xRadius,
        this.yRadius = t.yRadius,
        this.aStartAngle = t.aStartAngle,
        this.aEndAngle = t.aEndAngle,
        this.aClockwise = t.aClockwise,
        this.aRotation = t.aRotation,
        this
    }
    ,
    zu.prototype.toJSON = function() {
        var t = Bu.prototype.toJSON.call(this);
        return t.aX = this.aX,
        t.aY = this.aY,
        t.xRadius = this.xRadius,
        t.yRadius = this.yRadius,
        t.aStartAngle = this.aStartAngle,
        t.aEndAngle = this.aEndAngle,
        t.aClockwise = this.aClockwise,
        t.aRotation = this.aRotation,
        t
    }
    ,
    zu.prototype.fromJSON = function(t) {
        return Bu.prototype.fromJSON.call(this, t),
        this.aX = t.aX,
        this.aY = t.aY,
        this.xRadius = t.xRadius,
        this.yRadius = t.yRadius,
        this.aStartAngle = t.aStartAngle,
        this.aEndAngle = t.aEndAngle,
        this.aClockwise = t.aClockwise,
        this.aRotation = t.aRotation,
        this
    }
    ,
    Gu.prototype = Object.create(zu.prototype),
    Gu.prototype.constructor = Gu,
    Gu.prototype.isArcCurve = !0;
    var Wu = new si
      , qu = new Hu
      , Xu = new Hu
      , Yu = new Hu;
    function Ku(t, e, n, i) {
        Bu.call(this),
        this.type = "CatmullRomCurve3",
        this.points = t || [],
        this.closed = e || !1,
        this.curveType = n || "centripetal",
        this.tension = i || .5
    }
    function Zu(t, e, n, i, r) {
        var o = .5 * (i - e)
          , a = .5 * (r - n)
          , s = t * t;
        return (2 * n - 2 * i + o + a) * (t * s) + (-3 * n + 3 * i - 2 * o - a) * s + o * t + n
    }
    function Ju(t, e, n, i) {
        return function(t, e) {
            var n = 1 - t;
            return n * n * e
        }(t, e) + function(t, e) {
            return 2 * (1 - t) * t * e
        }(t, n) + function(t, e) {
            return t * t * e
        }(t, i)
    }
    function Qu(t, e, n, i, r) {
        return function(t, e) {
            var n = 1 - t;
            return n * n * n * e
        }(t, e) + function(t, e) {
            var n = 1 - t;
            return 3 * n * n * t * e
        }(t, n) + function(t, e) {
            return 3 * (1 - t) * t * t * e
        }(t, i) + function(t, e) {
            return t * t * t * e
        }(t, r)
    }
    function $u(t, e, n, i) {
        Bu.call(this),
        this.type = "CubicBezierCurve",
        this.v0 = t || new Zn,
        this.v1 = e || new Zn,
        this.v2 = n || new Zn,
        this.v3 = i || new Zn
    }
    function td(t, e, n, i) {
        Bu.call(this),
        this.type = "CubicBezierCurve3",
        this.v0 = t || new si,
        this.v1 = e || new si,
        this.v2 = n || new si,
        this.v3 = i || new si
    }
    function ed(t, e) {
        Bu.call(this),
        this.type = "LineCurve",
        this.v1 = t || new Zn,
        this.v2 = e || new Zn
    }
    function nd(t, e) {
        Bu.call(this),
        this.type = "LineCurve3",
        this.v1 = t || new si,
        this.v2 = e || new si
    }
    function id(t, e, n) {
        Bu.call(this),
        this.type = "QuadraticBezierCurve",
        this.v0 = t || new Zn,
        this.v1 = e || new Zn,
        this.v2 = n || new Zn
    }
    function rd(t, e, n) {
        Bu.call(this),
        this.type = "QuadraticBezierCurve3",
        this.v0 = t || new si,
        this.v1 = e || new si,
        this.v2 = n || new si
    }
    function od(t) {
        Bu.call(this),
        this.type = "SplineCurve",
        this.points = t || []
    }
    Ku.prototype = Object.create(Bu.prototype),
    Ku.prototype.constructor = Ku,
    Ku.prototype.isCatmullRomCurve3 = !0,
    Ku.prototype.getPoint = function(t, e) {
        var n, i, r, o, a = e || new si, s = this.points, c = s.length, l = (c - (this.closed ? 0 : 1)) * t, u = Math.floor(l), d = l - u;
        if (this.closed ? u += u > 0 ? 0 : (Math.floor(Math.abs(u) / c) + 1) * c : 0 === d && u === c - 1 && (u = c - 2,
        d = 1),
        this.closed || u > 0 ? n = s[(u - 1) % c] : (Wu.subVectors(s[0], s[1]).add(s[0]),
        n = Wu),
        i = s[u % c],
        r = s[(u + 1) % c],
        this.closed || u + 2 < c ? o = s[(u + 2) % c] : (Wu.subVectors(s[c - 1], s[c - 2]).add(s[c - 1]),
        o = Wu),
        "centripetal" === this.curveType || "chordal" === this.curveType) {
            var p = "chordal" === this.curveType ? .5 : .25
              , h = Math.pow(n.distanceToSquared(i), p)
              , f = Math.pow(i.distanceToSquared(r), p)
              , m = Math.pow(r.distanceToSquared(o), p);
            f < 1e-4 && (f = 1),
            h < 1e-4 && (h = f),
            m < 1e-4 && (m = f),
            qu.initNonuniformCatmullRom(n.x, i.x, r.x, o.x, h, f, m),
            Xu.initNonuniformCatmullRom(n.y, i.y, r.y, o.y, h, f, m),
            Yu.initNonuniformCatmullRom(n.z, i.z, r.z, o.z, h, f, m)
        } else
            "catmullrom" === this.curveType && (qu.initCatmullRom(n.x, i.x, r.x, o.x, this.tension),
            Xu.initCatmullRom(n.y, i.y, r.y, o.y, this.tension),
            Yu.initCatmullRom(n.z, i.z, r.z, o.z, this.tension));
        return a.set(qu.calc(d), Xu.calc(d), Yu.calc(d)),
        a
    }
    ,
    Ku.prototype.copy = function(t) {
        Bu.prototype.copy.call(this, t),
        this.points = [];
        for (var e = 0, n = t.points.length; e < n; e++) {
            var i = t.points[e];
            this.points.push(i.clone())
        }
        return this.closed = t.closed,
        this.curveType = t.curveType,
        this.tension = t.tension,
        this
    }
    ,
    Ku.prototype.toJSON = function() {
        var t = Bu.prototype.toJSON.call(this);
        t.points = [];
        for (var e = 0, n = this.points.length; e < n; e++) {
            var i = this.points[e];
            t.points.push(i.toArray())
        }
        return t.closed = this.closed,
        t.curveType = this.curveType,
        t.tension = this.tension,
        t
    }
    ,
    Ku.prototype.fromJSON = function(t) {
        Bu.prototype.fromJSON.call(this, t),
        this.points = [];
        for (var e = 0, n = t.points.length; e < n; e++) {
            var i = t.points[e];
            this.points.push((new si).fromArray(i))
        }
        return this.closed = t.closed,
        this.curveType = t.curveType,
        this.tension = t.tension,
        this
    }
    ,
    $u.prototype = Object.create(Bu.prototype),
    $u.prototype.constructor = $u,
    $u.prototype.isCubicBezierCurve = !0,
    $u.prototype.getPoint = function(t, e) {
        var n = e || new Zn
          , i = this.v0
          , r = this.v1
          , o = this.v2
          , a = this.v3;
        return n.set(Qu(t, i.x, r.x, o.x, a.x), Qu(t, i.y, r.y, o.y, a.y)),
        n
    }
    ,
    $u.prototype.copy = function(t) {
        return Bu.prototype.copy.call(this, t),
        this.v0.copy(t.v0),
        this.v1.copy(t.v1),
        this.v2.copy(t.v2),
        this.v3.copy(t.v3),
        this
    }
    ,
    $u.prototype.toJSON = function() {
        var t = Bu.prototype.toJSON.call(this);
        return t.v0 = this.v0.toArray(),
        t.v1 = this.v1.toArray(),
        t.v2 = this.v2.toArray(),
        t.v3 = this.v3.toArray(),
        t
    }
    ,
    $u.prototype.fromJSON = function(t) {
        return Bu.prototype.fromJSON.call(this, t),
        this.v0.fromArray(t.v0),
        this.v1.fromArray(t.v1),
        this.v2.fromArray(t.v2),
        this.v3.fromArray(t.v3),
        this
    }
    ,
    td.prototype = Object.create(Bu.prototype),
    td.prototype.constructor = td,
    td.prototype.isCubicBezierCurve3 = !0,
    td.prototype.getPoint = function(t, e) {
        var n = e || new si
          , i = this.v0
          , r = this.v1
          , o = this.v2
          , a = this.v3;
        return n.set(Qu(t, i.x, r.x, o.x, a.x), Qu(t, i.y, r.y, o.y, a.y), Qu(t, i.z, r.z, o.z, a.z)),
        n
    }
    ,
    td.prototype.copy = function(t) {
        return Bu.prototype.copy.call(this, t),
        this.v0.copy(t.v0),
        this.v1.copy(t.v1),
        this.v2.copy(t.v2),
        this.v3.copy(t.v3),
        this
    }
    ,
    td.prototype.toJSON = function() {
        var t = Bu.prototype.toJSON.call(this);
        return t.v0 = this.v0.toArray(),
        t.v1 = this.v1.toArray(),
        t.v2 = this.v2.toArray(),
        t.v3 = this.v3.toArray(),
        t
    }
    ,
    td.prototype.fromJSON = function(t) {
        return Bu.prototype.fromJSON.call(this, t),
        this.v0.fromArray(t.v0),
        this.v1.fromArray(t.v1),
        this.v2.fromArray(t.v2),
        this.v3.fromArray(t.v3),
        this
    }
    ,
    ed.prototype = Object.create(Bu.prototype),
    ed.prototype.constructor = ed,
    ed.prototype.isLineCurve = !0,
    ed.prototype.getPoint = function(t, e) {
        var n = e || new Zn;
        return 1 === t ? n.copy(this.v2) : (n.copy(this.v2).sub(this.v1),
        n.multiplyScalar(t).add(this.v1)),
        n
    }
    ,
    ed.prototype.getPointAt = function(t, e) {
        return this.getPoint(t, e)
    }
    ,
    ed.prototype.getTangent = function() {
        return this.v2.clone().sub(this.v1).normalize()
    }
    ,
    ed.prototype.copy = function(t) {
        return Bu.prototype.copy.call(this, t),
        this.v1.copy(t.v1),
        this.v2.copy(t.v2),
        this
    }
    ,
    ed.prototype.toJSON = function() {
        var t = Bu.prototype.toJSON.call(this);
        return t.v1 = this.v1.toArray(),
        t.v2 = this.v2.toArray(),
        t
    }
    ,
    ed.prototype.fromJSON = function(t) {
        return Bu.prototype.fromJSON.call(this, t),
        this.v1.fromArray(t.v1),
        this.v2.fromArray(t.v2),
        this
    }
    ,
    nd.prototype = Object.create(Bu.prototype),
    nd.prototype.constructor = nd,
    nd.prototype.isLineCurve3 = !0,
    nd.prototype.getPoint = function(t, e) {
        var n = e || new si;
        return 1 === t ? n.copy(this.v2) : (n.copy(this.v2).sub(this.v1),
        n.multiplyScalar(t).add(this.v1)),
        n
    }
    ,
    nd.prototype.getPointAt = function(t, e) {
        return this.getPoint(t, e)
    }
    ,
    nd.prototype.copy = function(t) {
        return Bu.prototype.copy.call(this, t),
        this.v1.copy(t.v1),
        this.v2.copy(t.v2),
        this
    }
    ,
    nd.prototype.toJSON = function() {
        var t = Bu.prototype.toJSON.call(this);
        return t.v1 = this.v1.toArray(),
        t.v2 = this.v2.toArray(),
        t
    }
    ,
    nd.prototype.fromJSON = function(t) {
        return Bu.prototype.fromJSON.call(this, t),
        this.v1.fromArray(t.v1),
        this.v2.fromArray(t.v2),
        this
    }
    ,
    id.prototype = Object.create(Bu.prototype),
    id.prototype.constructor = id,
    id.prototype.isQuadraticBezierCurve = !0,
    id.prototype.getPoint = function(t, e) {
        var n = e || new Zn
          , i = this.v0
          , r = this.v1
          , o = this.v2;
        return n.set(Ju(t, i.x, r.x, o.x), Ju(t, i.y, r.y, o.y)),
        n
    }
    ,
    id.prototype.copy = function(t) {
        return Bu.prototype.copy.call(this, t),
        this.v0.copy(t.v0),
        this.v1.copy(t.v1),
        this.v2.copy(t.v2),
        this
    }
    ,
    id.prototype.toJSON = function() {
        var t = Bu.prototype.toJSON.call(this);
        return t.v0 = this.v0.toArray(),
        t.v1 = this.v1.toArray(),
        t.v2 = this.v2.toArray(),
        t
    }
    ,
    id.prototype.fromJSON = function(t) {
        return Bu.prototype.fromJSON.call(this, t),
        this.v0.fromArray(t.v0),
        this.v1.fromArray(t.v1),
        this.v2.fromArray(t.v2),
        this
    }
    ,
    rd.prototype = Object.create(Bu.prototype),
    rd.prototype.constructor = rd,
    rd.prototype.isQuadraticBezierCurve3 = !0,
    rd.prototype.getPoint = function(t, e) {
        var n = e || new si
          , i = this.v0
          , r = this.v1
          , o = this.v2;
        return n.set(Ju(t, i.x, r.x, o.x), Ju(t, i.y, r.y, o.y), Ju(t, i.z, r.z, o.z)),
        n
    }
    ,
    rd.prototype.copy = function(t) {
        return Bu.prototype.copy.call(this, t),
        this.v0.copy(t.v0),
        this.v1.copy(t.v1),
        this.v2.copy(t.v2),
        this
    }
    ,
    rd.prototype.toJSON = function() {
        var t = Bu.prototype.toJSON.call(this);
        return t.v0 = this.v0.toArray(),
        t.v1 = this.v1.toArray(),
        t.v2 = this.v2.toArray(),
        t
    }
    ,
    rd.prototype.fromJSON = function(t) {
        return Bu.prototype.fromJSON.call(this, t),
        this.v0.fromArray(t.v0),
        this.v1.fromArray(t.v1),
        this.v2.fromArray(t.v2),
        this
    }
    ,
    od.prototype = Object.create(Bu.prototype),
    od.prototype.constructor = od,
    od.prototype.isSplineCurve = !0,
    od.prototype.getPoint = function(t, e) {
        var n = e || new Zn
          , i = this.points
          , r = (i.length - 1) * t
          , o = Math.floor(r)
          , a = r - o
          , s = i[0 === o ? o : o - 1]
          , c = i[o]
          , l = i[o > i.length - 2 ? i.length - 1 : o + 1]
          , u = i[o > i.length - 3 ? i.length - 1 : o + 2];
        return n.set(Zu(a, s.x, c.x, l.x, u.x), Zu(a, s.y, c.y, l.y, u.y)),
        n
    }
    ,
    od.prototype.copy = function(t) {
        Bu.prototype.copy.call(this, t),
        this.points = [];
        for (var e = 0, n = t.points.length; e < n; e++) {
            var i = t.points[e];
            this.points.push(i.clone())
        }
        return this
    }
    ,
    od.prototype.toJSON = function() {
        var t = Bu.prototype.toJSON.call(this);
        t.points = [];
        for (var e = 0, n = this.points.length; e < n; e++) {
            var i = this.points[e];
            t.points.push(i.toArray())
        }
        return t
    }
    ,
    od.prototype.fromJSON = function(t) {
        Bu.prototype.fromJSON.call(this, t),
        this.points = [];
        for (var e = 0, n = t.points.length; e < n; e++) {
            var i = t.points[e];
            this.points.push((new Zn).fromArray(i))
        }
        return this
    }
    ;
    var ad = Object.freeze({
        __proto__: null,
        ArcCurve: Gu,
        CatmullRomCurve3: Ku,
        CubicBezierCurve: $u,
        CubicBezierCurve3: td,
        EllipseCurve: zu,
        LineCurve: ed,
        LineCurve3: nd,
        QuadraticBezierCurve: id,
        QuadraticBezierCurve3: rd,
        SplineCurve: od
    });
    function sd() {
        Bu.call(this),
        this.type = "CurvePath",
        this.curves = [],
        this.autoClose = !1
    }
    function cd(t) {
        sd.call(this),
        this.type = "Path",
        this.currentPoint = new Zn,
        t && this.setFromPoints(t)
    }
    function ld(t) {
        cd.call(this, t),
        this.uuid = Kn.generateUUID(),
        this.type = "Shape",
        this.holes = []
    }
    function ud(t, e) {
        Di.call(this),
        this.type = "Light",
        this.color = new Er(t),
        this.intensity = void 0 !== e ? e : 1,
        this.receiveShadow = void 0
    }
    function dd(t, e, n) {
        ud.call(this, t, n),
        this.type = "HemisphereLight",
        this.castShadow = void 0,
        this.position.copy(Di.DefaultUp),
        this.updateMatrix(),
        this.groundColor = new Er(e)
    }
    function pd(t) {
        this.camera = t,
        this.bias = 0,
        this.radius = 1,
        this.mapSize = new Zn(512,512),
        this.map = null,
        this.mapPass = null,
        this.matrix = new mi,
        this._frustum = new Vo,
        this._frameExtents = new Zn(1,1),
        this._viewportCount = 1,
        this._viewports = [new ei(0,0,1,1)]
    }
    function hd() {
        pd.call(this, new ko(50,1,.5,500))
    }
    function fd(t, e, n, i, r, o) {
        ud.call(this, t, e),
        this.type = "SpotLight",
        this.position.copy(Di.DefaultUp),
        this.updateMatrix(),
        this.target = new Di,
        Object.defineProperty(this, "power", {
            get: function() {
                return this.intensity * Math.PI
            },
            set: function(t) {
                this.intensity = t / Math.PI
            }
        }),
        this.distance = void 0 !== n ? n : 0,
        this.angle = void 0 !== i ? i : Math.PI / 3,
        this.penumbra = void 0 !== r ? r : 0,
        this.decay = void 0 !== o ? o : 1,
        this.shadow = new hd
    }
    function md() {
        pd.call(this, new ko(90,1,.5,500)),
        this._frameExtents = new Zn(4,2),
        this._viewportCount = 6,
        this._viewports = [new ei(2,1,1,1), new ei(0,1,1,1), new ei(3,1,1,1), new ei(1,1,1,1), new ei(3,0,1,1), new ei(1,0,1,1)],
        this._cubeDirections = [new si(1,0,0), new si(-1,0,0), new si(0,0,1), new si(0,0,-1), new si(0,1,0), new si(0,-1,0)],
        this._cubeUps = [new si(0,1,0), new si(0,1,0), new si(0,1,0), new si(0,1,0), new si(0,0,1), new si(0,0,-1)]
    }
    function gd(t, e, n, i) {
        ud.call(this, t, e),
        this.type = "PointLight",
        Object.defineProperty(this, "power", {
            get: function() {
                return 4 * this.intensity * Math.PI
            },
            set: function(t) {
                this.intensity = t / (4 * Math.PI)
            }
        }),
        this.distance = void 0 !== n ? n : 0,
        this.decay = void 0 !== i ? i : 1,
        this.shadow = new md
    }
    function vd(t, e, n, i, r, o) {
        Io.call(this),
        this.type = "OrthographicCamera",
        this.zoom = 1,
        this.view = null,
        this.left = void 0 !== t ? t : -1,
        this.right = void 0 !== e ? e : 1,
        this.top = void 0 !== n ? n : 1,
        this.bottom = void 0 !== i ? i : -1,
        this.near = void 0 !== r ? r : .1,
        this.far = void 0 !== o ? o : 2e3,
        this.updateProjectionMatrix()
    }
    function yd() {
        pd.call(this, new vd(-5,5,5,-5,.5,500))
    }
    function bd(t, e) {
        ud.call(this, t, e),
        this.type = "DirectionalLight",
        this.position.copy(Di.DefaultUp),
        this.updateMatrix(),
        this.target = new Di,
        this.shadow = new yd
    }
    function wd(t, e) {
        ud.call(this, t, e),
        this.type = "AmbientLight",
        this.castShadow = void 0
    }
    function Sd(t, e, n, i) {
        ud.call(this, t, e),
        this.type = "RectAreaLight",
        this.width = void 0 !== n ? n : 10,
        this.height = void 0 !== i ? i : 10
    }
    function xd(t) {
        ku.call(this, t),
        this.textures = {}
    }
    sd.prototype = Object.assign(Object.create(Bu.prototype), {
        constructor: sd,
        add: function(t) {
            this.curves.push(t)
        },
        closePath: function() {
            var t = this.curves[0].getPoint(0)
              , e = this.curves[this.curves.length - 1].getPoint(1);
            t.equals(e) || this.curves.push(new ed(e,t))
        },
        getPoint: function(t) {
            for (var e = t * this.getLength(), n = this.getCurveLengths(), i = 0; i < n.length; ) {
                if (n[i] >= e) {
                    var r = n[i] - e
                      , o = this.curves[i]
                      , a = o.getLength()
                      , s = 0 === a ? 0 : 1 - r / a;
                    return o.getPointAt(s)
                }
                i++
            }
            return null
        },
        getLength: function() {
            var t = this.getCurveLengths();
            return t[t.length - 1]
        },
        updateArcLengths: function() {
            this.needsUpdate = !0,
            this.cacheLengths = null,
            this.getCurveLengths()
        },
        getCurveLengths: function() {
            if (this.cacheLengths && this.cacheLengths.length === this.curves.length)
                return this.cacheLengths;
            for (var t = [], e = 0, n = 0, i = this.curves.length; n < i; n++)
                e += this.curves[n].getLength(),
                t.push(e);
            return this.cacheLengths = t,
            t
        },
        getSpacedPoints: function(t) {
            void 0 === t && (t = 40);
            for (var e = [], n = 0; n <= t; n++)
                e.push(this.getPoint(n / t));
            return this.autoClose && e.push(e[0]),
            e
        },
        getPoints: function(t) {
            t = t || 12;
            for (var e, n = [], i = 0, r = this.curves; i < r.length; i++)
                for (var o = r[i], a = o && o.isEllipseCurve ? 2 * t : o && (o.isLineCurve || o.isLineCurve3) ? 1 : o && o.isSplineCurve ? t * o.points.length : t, s = o.getPoints(a), c = 0; c < s.length; c++) {
                    var l = s[c];
                    e && e.equals(l) || (n.push(l),
                    e = l)
                }
            return this.autoClose && n.length > 1 && !n[n.length - 1].equals(n[0]) && n.push(n[0]),
            n
        },
        copy: function(t) {
            Bu.prototype.copy.call(this, t),
            this.curves = [];
            for (var e = 0, n = t.curves.length; e < n; e++) {
                var i = t.curves[e];
                this.curves.push(i.clone())
            }
            return this.autoClose = t.autoClose,
            this
        },
        toJSON: function() {
            var t = Bu.prototype.toJSON.call(this);
            t.autoClose = this.autoClose,
            t.curves = [];
            for (var e = 0, n = this.curves.length; e < n; e++) {
                var i = this.curves[e];
                t.curves.push(i.toJSON())
            }
            return t
        },
        fromJSON: function(t) {
            Bu.prototype.fromJSON.call(this, t),
            this.autoClose = t.autoClose,
            this.curves = [];
            for (var e = 0, n = t.curves.length; e < n; e++) {
                var i = t.curves[e];
                this.curves.push((new ad[i.type]).fromJSON(i))
            }
            return this
        }
    }),
    cd.prototype = Object.assign(Object.create(sd.prototype), {
        constructor: cd,
        setFromPoints: function(t) {
            this.moveTo(t[0].x, t[0].y);
            for (var e = 1, n = t.length; e < n; e++)
                this.lineTo(t[e].x, t[e].y);
            return this
        },
        moveTo: function(t, e) {
            return this.currentPoint.set(t, e),
            this
        },
        lineTo: function(t, e) {
            var n = new ed(this.currentPoint.clone(),new Zn(t,e));
            return this.curves.push(n),
            this.currentPoint.set(t, e),
            this
        },
        quadraticCurveTo: function(t, e, n, i) {
            var r = new id(this.currentPoint.clone(),new Zn(t,e),new Zn(n,i));
            return this.curves.push(r),
            this.currentPoint.set(n, i),
            this
        },
        bezierCurveTo: function(t, e, n, i, r, o) {
            var a = new $u(this.currentPoint.clone(),new Zn(t,e),new Zn(n,i),new Zn(r,o));
            return this.curves.push(a),
            this.currentPoint.set(r, o),
            this
        },
        splineThru: function(t) {
            var e = new od([this.currentPoint.clone()].concat(t));
            return this.curves.push(e),
            this.currentPoint.copy(t[t.length - 1]),
            this
        },
        arc: function(t, e, n, i, r, o) {
            var a = this.currentPoint.x
              , s = this.currentPoint.y;
            return this.absarc(t + a, e + s, n, i, r, o),
            this
        },
        absarc: function(t, e, n, i, r, o) {
            return this.absellipse(t, e, n, n, i, r, o),
            this
        },
        ellipse: function(t, e, n, i, r, o, a, s) {
            var c = this.currentPoint.x
              , l = this.currentPoint.y;
            return this.absellipse(t + c, e + l, n, i, r, o, a, s),
            this
        },
        absellipse: function(t, e, n, i, r, o, a, s) {
            var c = new zu(t,e,n,i,r,o,a,s);
            if (this.curves.length > 0) {
                var l = c.getPoint(0);
                l.equals(this.currentPoint) || this.lineTo(l.x, l.y)
            }
            this.curves.push(c);
            var u = c.getPoint(1);
            return this.currentPoint.copy(u),
            this
        },
        copy: function(t) {
            return sd.prototype.copy.call(this, t),
            this.currentPoint.copy(t.currentPoint),
            this
        },
        toJSON: function() {
            var t = sd.prototype.toJSON.call(this);
            return t.currentPoint = this.currentPoint.toArray(),
            t
        },
        fromJSON: function(t) {
            return sd.prototype.fromJSON.call(this, t),
            this.currentPoint.fromArray(t.currentPoint),
            this
        }
    }),
    ld.prototype = Object.assign(Object.create(cd.prototype), {
        constructor: ld,
        getPointsHoles: function(t) {
            for (var e = [], n = 0, i = this.holes.length; n < i; n++)
                e[n] = this.holes[n].getPoints(t);
            return e
        },
        extractPoints: function(t) {
            return {
                shape: this.getPoints(t),
                holes: this.getPointsHoles(t)
            }
        },
        copy: function(t) {
            cd.prototype.copy.call(this, t),
            this.holes = [];
            for (var e = 0, n = t.holes.length; e < n; e++) {
                var i = t.holes[e];
                this.holes.push(i.clone())
            }
            return this
        },
        toJSON: function() {
            var t = cd.prototype.toJSON.call(this);
            t.uuid = this.uuid,
            t.holes = [];
            for (var e = 0, n = this.holes.length; e < n; e++) {
                var i = this.holes[e];
                t.holes.push(i.toJSON())
            }
            return t
        },
        fromJSON: function(t) {
            cd.prototype.fromJSON.call(this, t),
            this.uuid = t.uuid,
            this.holes = [];
            for (var e = 0, n = t.holes.length; e < n; e++) {
                var i = t.holes[e];
                this.holes.push((new cd).fromJSON(i))
            }
            return this
        }
    }),
    ud.prototype = Object.assign(Object.create(Di.prototype), {
        constructor: ud,
        isLight: !0,
        copy: function(t) {
            return Di.prototype.copy.call(this, t),
            this.color.copy(t.color),
            this.intensity = t.intensity,
            this
        },
        toJSON: function(t) {
            var e = Di.prototype.toJSON.call(this, t);
            return e.object.color = this.color.getHex(),
            e.object.intensity = this.intensity,
            void 0 !== this.groundColor && (e.object.groundColor = this.groundColor.getHex()),
            void 0 !== this.distance && (e.object.distance = this.distance),
            void 0 !== this.angle && (e.object.angle = this.angle),
            void 0 !== this.decay && (e.object.decay = this.decay),
            void 0 !== this.penumbra && (e.object.penumbra = this.penumbra),
            void 0 !== this.shadow && (e.object.shadow = this.shadow.toJSON()),
            e
        }
    }),
    dd.prototype = Object.assign(Object.create(ud.prototype), {
        constructor: dd,
        isHemisphereLight: !0,
        copy: function(t) {
            return ud.prototype.copy.call(this, t),
            this.groundColor.copy(t.groundColor),
            this
        }
    }),
    Object.assign(pd.prototype, {
        _projScreenMatrix: new mi,
        _lightPositionWorld: new si,
        _lookTarget: new si,
        getViewportCount: function() {
            return this._viewportCount
        },
        getFrustum: function() {
            return this._frustum
        },
        updateMatrices: function(t) {
            var e = this.camera
              , n = this.matrix
              , i = this._projScreenMatrix
              , r = this._lookTarget
              , o = this._lightPositionWorld;
            o.setFromMatrixPosition(t.matrixWorld),
            e.position.copy(o),
            r.setFromMatrixPosition(t.target.matrixWorld),
            e.lookAt(r),
            e.updateMatrixWorld(),
            i.multiplyMatrices(e.projectionMatrix, e.matrixWorldInverse),
            this._frustum.setFromProjectionMatrix(i),
            n.set(.5, 0, 0, .5, 0, .5, 0, .5, 0, 0, .5, .5, 0, 0, 0, 1),
            n.multiply(e.projectionMatrix),
            n.multiply(e.matrixWorldInverse)
        },
        getViewport: function(t) {
            return this._viewports[t]
        },
        getFrameExtents: function() {
            return this._frameExtents
        },
        copy: function(t) {
            return this.camera = t.camera.clone(),
            this.bias = t.bias,
            this.radius = t.radius,
            this.mapSize.copy(t.mapSize),
            this
        },
        clone: function() {
            return (new this.constructor).copy(this)
        },
        toJSON: function() {
            var t = {};
            return 0 !== this.bias && (t.bias = this.bias),
            1 !== this.radius && (t.radius = this.radius),
            512 === this.mapSize.x && 512 === this.mapSize.y || (t.mapSize = this.mapSize.toArray()),
            t.camera = this.camera.toJSON(!1).object,
            delete t.camera.matrix,
            t
        }
    }),
    hd.prototype = Object.assign(Object.create(pd.prototype), {
        constructor: hd,
        isSpotLightShadow: !0,
        updateMatrices: function(t) {
            var e = this.camera
              , n = 2 * Kn.RAD2DEG * t.angle
              , i = this.mapSize.width / this.mapSize.height
              , r = t.distance || e.far;
            n === e.fov && i === e.aspect && r === e.far || (e.fov = n,
            e.aspect = i,
            e.far = r,
            e.updateProjectionMatrix()),
            pd.prototype.updateMatrices.call(this, t)
        }
    }),
    fd.prototype = Object.assign(Object.create(ud.prototype), {
        constructor: fd,
        isSpotLight: !0,
        copy: function(t) {
            return ud.prototype.copy.call(this, t),
            this.distance = t.distance,
            this.angle = t.angle,
            this.penumbra = t.penumbra,
            this.decay = t.decay,
            this.target = t.target.clone(),
            this.shadow = t.shadow.clone(),
            this
        }
    }),
    md.prototype = Object.assign(Object.create(pd.prototype), {
        constructor: md,
        isPointLightShadow: !0,
        updateMatrices: function(t, e) {
            void 0 === e && (e = 0);
            var n = this.camera
              , i = this.matrix
              , r = this._lightPositionWorld
              , o = this._lookTarget
              , a = this._projScreenMatrix;
            r.setFromMatrixPosition(t.matrixWorld),
            n.position.copy(r),
            o.copy(n.position),
            o.add(this._cubeDirections[e]),
            n.up.copy(this._cubeUps[e]),
            n.lookAt(o),
            n.updateMatrixWorld(),
            i.makeTranslation(-r.x, -r.y, -r.z),
            a.multiplyMatrices(n.projectionMatrix, n.matrixWorldInverse),
            this._frustum.setFromProjectionMatrix(a)
        }
    }),
    gd.prototype = Object.assign(Object.create(ud.prototype), {
        constructor: gd,
        isPointLight: !0,
        copy: function(t) {
            return ud.prototype.copy.call(this, t),
            this.distance = t.distance,
            this.decay = t.decay,
            this.shadow = t.shadow.clone(),
            this
        }
    }),
    vd.prototype = Object.assign(Object.create(Io.prototype), {
        constructor: vd,
        isOrthographicCamera: !0,
        copy: function(t, e) {
            return Io.prototype.copy.call(this, t, e),
            this.left = t.left,
            this.right = t.right,
            this.top = t.top,
            this.bottom = t.bottom,
            this.near = t.near,
            this.far = t.far,
            this.zoom = t.zoom,
            this.view = null === t.view ? null : Object.assign({}, t.view),
            this
        },
        setViewOffset: function(t, e, n, i, r, o) {
            null === this.view && (this.view = {
                enabled: !0,
                fullWidth: 1,
                fullHeight: 1,
                offsetX: 0,
                offsetY: 0,
                width: 1,
                height: 1
            }),
            this.view.enabled = !0,
            this.view.fullWidth = t,
            this.view.fullHeight = e,
            this.view.offsetX = n,
            this.view.offsetY = i,
            this.view.width = r,
            this.view.height = o,
            this.updateProjectionMatrix()
        },
        clearViewOffset: function() {
            null !== this.view && (this.view.enabled = !1),
            this.updateProjectionMatrix()
        },
        updateProjectionMatrix: function() {
            var t = (this.right - this.left) / (2 * this.zoom)
              , e = (this.top - this.bottom) / (2 * this.zoom)
              , n = (this.right + this.left) / 2
              , i = (this.top + this.bottom) / 2
              , r = n - t
              , o = n + t
              , a = i + e
              , s = i - e;
            if (null !== this.view && this.view.enabled) {
                var c = (this.right - this.left) / this.view.fullWidth / this.zoom
                  , l = (this.top - this.bottom) / this.view.fullHeight / this.zoom;
                o = (r += c * this.view.offsetX) + c * this.view.width,
                s = (a -= l * this.view.offsetY) - l * this.view.height
            }
            this.projectionMatrix.makeOrthographic(r, o, a, s, this.near, this.far),
            this.projectionMatrixInverse.getInverse(this.projectionMatrix)
        },
        toJSON: function(t) {
            var e = Di.prototype.toJSON.call(this, t);
            return e.object.zoom = this.zoom,
            e.object.left = this.left,
            e.object.right = this.right,
            e.object.top = this.top,
            e.object.bottom = this.bottom,
            e.object.near = this.near,
            e.object.far = this.far,
            null !== this.view && (e.object.view = Object.assign({}, this.view)),
            e
        }
    }),
    yd.prototype = Object.assign(Object.create(pd.prototype), {
        constructor: yd,
        isDirectionalLightShadow: !0,
        updateMatrices: function(t) {
            pd.prototype.updateMatrices.call(this, t)
        }
    }),
    bd.prototype = Object.assign(Object.create(ud.prototype), {
        constructor: bd,
        isDirectionalLight: !0,
        copy: function(t) {
            return ud.prototype.copy.call(this, t),
            this.target = t.target.clone(),
            this.shadow = t.shadow.clone(),
            this
        }
    }),
    wd.prototype = Object.assign(Object.create(ud.prototype), {
        constructor: wd,
        isAmbientLight: !0
    }),
    Sd.prototype = Object.assign(Object.create(ud.prototype), {
        constructor: Sd,
        isRectAreaLight: !0,
        copy: function(t) {
            return ud.prototype.copy.call(this, t),
            this.width = t.width,
            this.height = t.height,
            this
        },
        toJSON: function(t) {
            var e = ud.prototype.toJSON.call(this, t);
            return e.object.width = this.width,
            e.object.height = this.height,
            e
        }
    }),
    xd.prototype = Object.assign(Object.create(ku.prototype), {
        constructor: xd,
        load: function(t, e, n, i) {
            var r = this
              , o = new Ru(r.manager);
            o.setPath(r.path),
            o.load(t, (function(t) {
                e(r.parse(JSON.parse(t)))
            }
            ), n, i)
        },
        parse: function(t) {
            var e = this.textures;
            function n(t) {
                return void 0 === e[t] && console.warn("THREE.MaterialLoader: Undefined texture", t),
                e[t]
            }
            var i = new hu[t.type];
            if (void 0 !== t.uuid && (i.uuid = t.uuid),
            void 0 !== t.name && (i.name = t.name),
            void 0 !== t.color && i.color.setHex(t.color),
            void 0 !== t.roughness && (i.roughness = t.roughness),
            void 0 !== t.metalness && (i.metalness = t.metalness),
            void 0 !== t.sheen && (i.sheen = (new Er).setHex(t.sheen)),
            void 0 !== t.emissive && i.emissive.setHex(t.emissive),
            void 0 !== t.specular && i.specular.setHex(t.specular),
            void 0 !== t.shininess && (i.shininess = t.shininess),
            void 0 !== t.clearcoat && (i.clearcoat = t.clearcoat),
            void 0 !== t.clearcoatRoughness && (i.clearcoatRoughness = t.clearcoatRoughness),
            void 0 !== t.fog && (i.fog = t.fog),
            void 0 !== t.flatShading && (i.flatShading = t.flatShading),
            void 0 !== t.blending && (i.blending = t.blending),
            void 0 !== t.combine && (i.combine = t.combine),
            void 0 !== t.side && (i.side = t.side),
            void 0 !== t.opacity && (i.opacity = t.opacity),
            void 0 !== t.transparent && (i.transparent = t.transparent),
            void 0 !== t.alphaTest && (i.alphaTest = t.alphaTest),
            void 0 !== t.depthTest && (i.depthTest = t.depthTest),
            void 0 !== t.depthWrite && (i.depthWrite = t.depthWrite),
            void 0 !== t.colorWrite && (i.colorWrite = t.colorWrite),
            void 0 !== t.stencilWrite && (i.stencilWrite = t.stencilWrite),
            void 0 !== t.stencilWriteMask && (i.stencilWriteMask = t.stencilWriteMask),
            void 0 !== t.stencilFunc && (i.stencilFunc = t.stencilFunc),
            void 0 !== t.stencilRef && (i.stencilRef = t.stencilRef),
            void 0 !== t.stencilFuncMask && (i.stencilFuncMask = t.stencilFuncMask),
            void 0 !== t.stencilFail && (i.stencilFail = t.stencilFail),
            void 0 !== t.stencilZFail && (i.stencilZFail = t.stencilZFail),
            void 0 !== t.stencilZPass && (i.stencilZPass = t.stencilZPass),
            void 0 !== t.wireframe && (i.wireframe = t.wireframe),
            void 0 !== t.wireframeLinewidth && (i.wireframeLinewidth = t.wireframeLinewidth),
            void 0 !== t.wireframeLinecap && (i.wireframeLinecap = t.wireframeLinecap),
            void 0 !== t.wireframeLinejoin && (i.wireframeLinejoin = t.wireframeLinejoin),
            void 0 !== t.rotation && (i.rotation = t.rotation),
            1 !== t.linewidth && (i.linewidth = t.linewidth),
            void 0 !== t.dashSize && (i.dashSize = t.dashSize),
            void 0 !== t.gapSize && (i.gapSize = t.gapSize),
            void 0 !== t.scale && (i.scale = t.scale),
            void 0 !== t.polygonOffset && (i.polygonOffset = t.polygonOffset),
            void 0 !== t.polygonOffsetFactor && (i.polygonOffsetFactor = t.polygonOffsetFactor),
            void 0 !== t.polygonOffsetUnits && (i.polygonOffsetUnits = t.polygonOffsetUnits),
            void 0 !== t.skinning && (i.skinning = t.skinning),
            void 0 !== t.morphTargets && (i.morphTargets = t.morphTargets),
            void 0 !== t.morphNormals && (i.morphNormals = t.morphNormals),
            void 0 !== t.dithering && (i.dithering = t.dithering),
            void 0 !== t.vertexTangents && (i.vertexTangents = t.vertexTangents),
            void 0 !== t.visible && (i.visible = t.visible),
            void 0 !== t.toneMapped && (i.toneMapped = t.toneMapped),
            void 0 !== t.userData && (i.userData = t.userData),
            void 0 !== t.vertexColors && ("number" == typeof t.vertexColors ? i.vertexColors = t.vertexColors > 0 : i.vertexColors = t.vertexColors),
            void 0 !== t.uniforms)
                for (var r in t.uniforms) {
                    var o = t.uniforms[r];
                    switch (i.uniforms[r] = {},
                    o.type) {
                    case "t":
                        i.uniforms[r].value = n(o.value);
                        break;
                    case "c":
                        i.uniforms[r].value = (new Er).setHex(o.value);
                        break;
                    case "v2":
                        i.uniforms[r].value = (new Zn).fromArray(o.value);
                        break;
                    case "v3":
                        i.uniforms[r].value = (new si).fromArray(o.value);
                        break;
                    case "v4":
                        i.uniforms[r].value = (new ei).fromArray(o.value);
                        break;
                    case "m3":
                        i.uniforms[r].value = (new Jn).fromArray(o.value);
                    case "m4":
                        i.uniforms[r].value = (new mi).fromArray(o.value);
                        break;
                    default:
                        i.uniforms[r].value = o.value
                    }
                }
            if (void 0 !== t.defines && (i.defines = t.defines),
            void 0 !== t.vertexShader && (i.vertexShader = t.vertexShader),
            void 0 !== t.fragmentShader && (i.fragmentShader = t.fragmentShader),
            void 0 !== t.extensions)
                for (var a in t.extensions)
                    i.extensions[a] = t.extensions[a];
            if (void 0 !== t.shading && (i.flatShading = 1 === t.shading),
            void 0 !== t.size && (i.size = t.size),
            void 0 !== t.sizeAttenuation && (i.sizeAttenuation = t.sizeAttenuation),
            void 0 !== t.map && (i.map = n(t.map)),
            void 0 !== t.matcap && (i.matcap = n(t.matcap)),
            void 0 !== t.alphaMap && (i.alphaMap = n(t.alphaMap)),
            void 0 !== t.bumpMap && (i.bumpMap = n(t.bumpMap)),
            void 0 !== t.bumpScale && (i.bumpScale = t.bumpScale),
            void 0 !== t.normalMap && (i.normalMap = n(t.normalMap)),
            void 0 !== t.normalMapType && (i.normalMapType = t.normalMapType),
            void 0 !== t.normalScale) {
                var s = t.normalScale;
                !1 === Array.isArray(s) && (s = [s, s]),
                i.normalScale = (new Zn).fromArray(s)
            }
            return void 0 !== t.displacementMap && (i.displacementMap = n(t.displacementMap)),
            void 0 !== t.displacementScale && (i.displacementScale = t.displacementScale),
            void 0 !== t.displacementBias && (i.displacementBias = t.displacementBias),
            void 0 !== t.roughnessMap && (i.roughnessMap = n(t.roughnessMap)),
            void 0 !== t.metalnessMap && (i.metalnessMap = n(t.metalnessMap)),
            void 0 !== t.emissiveMap && (i.emissiveMap = n(t.emissiveMap)),
            void 0 !== t.emissiveIntensity && (i.emissiveIntensity = t.emissiveIntensity),
            void 0 !== t.specularMap && (i.specularMap = n(t.specularMap)),
            void 0 !== t.envMap && (i.envMap = n(t.envMap)),
            void 0 !== t.envMapIntensity && (i.envMapIntensity = t.envMapIntensity),
            void 0 !== t.reflectivity && (i.reflectivity = t.reflectivity),
            void 0 !== t.refractionRatio && (i.refractionRatio = t.refractionRatio),
            void 0 !== t.lightMap && (i.lightMap = n(t.lightMap)),
            void 0 !== t.lightMapIntensity && (i.lightMapIntensity = t.lightMapIntensity),
            void 0 !== t.aoMap && (i.aoMap = n(t.aoMap)),
            void 0 !== t.aoMapIntensity && (i.aoMapIntensity = t.aoMapIntensity),
            void 0 !== t.gradientMap && (i.gradientMap = n(t.gradientMap)),
            void 0 !== t.clearcoatMap && (i.clearcoatMap = n(t.clearcoatMap)),
            void 0 !== t.clearcoatRoughnessMap && (i.clearcoatRoughnessMap = n(t.clearcoatRoughnessMap)),
            void 0 !== t.clearcoatNormalMap && (i.clearcoatNormalMap = n(t.clearcoatNormalMap)),
            void 0 !== t.clearcoatNormalScale && (i.clearcoatNormalScale = (new Zn).fromArray(t.clearcoatNormalScale)),
            i
        },
        setTextures: function(t) {
            return this.textures = t,
            this
        }
    });
    var Md = {
        decodeText: function(t) {
            if ("undefined" != typeof TextDecoder)
                return (new TextDecoder).decode(t);
            for (var e = "", n = 0, i = t.length; n < i; n++)
                e += String.fromCharCode(t[n]);
            try {
                return decodeURIComponent(escape(e))
            } catch (t) {
                return e
            }
        },
        extractUrlBase: function(t) {
            var e = t.lastIndexOf("/");
            return -1 === e ? "./" : t.substr(0, e + 1)
        }
    };
    function Ed() {
        Qr.call(this),
        this.type = "InstancedBufferGeometry",
        this.maxInstancedCount = void 0
    }
    function Cd(t, e, n, i) {
        "number" == typeof n && (i = n,
        n = !1,
        console.error("THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.")),
        Dr.call(this, t, e, n),
        this.meshPerAttribute = i || 1
    }
    function Ad(t) {
        ku.call(this, t)
    }
    Ed.prototype = Object.assign(Object.create(Qr.prototype), {
        constructor: Ed,
        isInstancedBufferGeometry: !0,
        copy: function(t) {
            return Qr.prototype.copy.call(this, t),
            this.maxInstancedCount = t.maxInstancedCount,
            this
        },
        clone: function() {
            return (new this.constructor).copy(this)
        },
        toJSON: function() {
            var t = Qr.prototype.toJSON.call(this);
            return t.maxInstancedCount = this.maxInstancedCount,
            t.isInstancedBufferGeometry = !0,
            t
        }
    }),
    Cd.prototype = Object.assign(Object.create(Dr.prototype), {
        constructor: Cd,
        isInstancedBufferAttribute: !0,
        copy: function(t) {
            return Dr.prototype.copy.call(this, t),
            this.meshPerAttribute = t.meshPerAttribute,
            this
        },
        toJSON: function() {
            var t = Dr.prototype.toJSON.call(this);
            return t.meshPerAttribute = this.meshPerAttribute,
            t.isInstancedBufferAttribute = !0,
            t
        }
    }),
    Ad.prototype = Object.assign(Object.create(ku.prototype), {
        constructor: Ad,
        load: function(t, e, n, i) {
            var r = this
              , o = new Ru(r.manager);
            o.setPath(r.path),
            o.load(t, (function(t) {
                e(r.parse(JSON.parse(t)))
            }
            ), n, i)
        },
        parse: function(t) {
            var e = t.isInstancedBufferGeometry ? new Ed : new Qr
              , n = t.data.index;
            if (void 0 !== n) {
                var i = new Td[n.type](n.array);
                e.setIndex(new Dr(i,1))
            }
            var r = t.data.attributes;
            for (var o in r) {
                var a = r[o]
                  , s = (i = new Td[a.type](a.array),
                new (a.isInstancedBufferAttribute ? Cd : Dr)(i,a.itemSize,a.normalized));
                void 0 !== a.name && (s.name = a.name),
                e.setAttribute(o, s)
            }
            var c = t.data.morphAttributes;
            if (c)
                for (var o in c) {
                    for (var l = c[o], u = [], d = 0, p = l.length; d < p; d++) {
                        a = l[d],
                        s = new Dr(i = new Td[a.type](a.array),a.itemSize,a.normalized);
                        void 0 !== a.name && (s.name = a.name),
                        u.push(s)
                    }
                    e.morphAttributes[o] = u
                }
            t.data.morphTargetsRelative && (e.morphTargetsRelative = !0);
            var h = t.data.groups || t.data.drawcalls || t.data.offsets;
            if (void 0 !== h) {
                d = 0;
                for (var f = h.length; d !== f; ++d) {
                    var m = h[d];
                    e.addGroup(m.start, m.count, m.materialIndex)
                }
            }
            var g = t.data.boundingSphere;
            if (void 0 !== g) {
                var v = new si;
                void 0 !== g.center && v.fromArray(g.center),
                e.boundingSphere = new Ji(v,g.radius)
            }
            return t.name && (e.name = t.name),
            t.userData && (e.userData = t.userData),
            e
        }
    });
    var Td = {
        Int8Array: Int8Array,
        Uint8Array: Uint8Array,
        Uint8ClampedArray: "undefined" != typeof Uint8ClampedArray ? Uint8ClampedArray : Uint8Array,
        Int16Array: Int16Array,
        Uint16Array: Uint16Array,
        Int32Array: Int32Array,
        Uint32Array: Uint32Array,
        Float32Array: Float32Array,
        Float64Array: Float64Array
    };
    function Od(t) {
        ku.call(this, t)
    }
    Od.prototype = Object.assign(Object.create(ku.prototype), {
        constructor: Od,
        load: function(t, e, n, i) {
            var r = this
              , o = "" === this.path ? Md.extractUrlBase(t) : this.path;
            this.resourcePath = this.resourcePath || o;
            var a = new Ru(r.manager);
            a.setPath(this.path),
            a.load(t, (function(n) {
                var o = null;
                try {
                    o = JSON.parse(n)
                } catch (e) {
                    return void 0 !== i && i(e),
                    void console.error("THREE:ObjectLoader: Can't parse " + t + ".", e.message)
                }
                var a = o.metadata;
                void 0 !== a && void 0 !== a.type && "geometry" !== a.type.toLowerCase() ? r.parse(o, e) : console.error("THREE.ObjectLoader: Can't load " + t)
            }
            ), n, i)
        },
        parse: function(t, e) {
            var n = this.parseShape(t.shapes)
              , i = this.parseGeometries(t.geometries, n)
              , r = this.parseImages(t.images, (function() {
                void 0 !== e && e(s)
            }
            ))
              , o = this.parseTextures(t.textures, r)
              , a = this.parseMaterials(t.materials, o)
              , s = this.parseObject(t.object, i, a);
            return t.animations && (s.animations = this.parseAnimations(t.animations)),
            void 0 !== t.images && 0 !== t.images.length || void 0 !== e && e(s),
            s
        },
        parseShape: function(t) {
            var e = {};
            if (void 0 !== t)
                for (var n = 0, i = t.length; n < i; n++) {
                    var r = (new ld).fromJSON(t[n]);
                    e[r.uuid] = r
                }
            return e
        },
        parseGeometries: function(t, e) {
            var n = {};
            if (void 0 !== t)
                for (var i = new Ad, r = 0, o = t.length; r < o; r++) {
                    var a, s = t[r];
                    switch (s.type) {
                    case "PlaneGeometry":
                    case "PlaneBufferGeometry":
                        a = new nu[s.type](s.width,s.height,s.widthSegments,s.heightSegments);
                        break;
                    case "BoxGeometry":
                    case "BoxBufferGeometry":
                    case "CubeGeometry":
                        a = new nu[s.type](s.width,s.height,s.depth,s.widthSegments,s.heightSegments,s.depthSegments);
                        break;
                    case "CircleGeometry":
                    case "CircleBufferGeometry":
                        a = new nu[s.type](s.radius,s.segments,s.thetaStart,s.thetaLength);
                        break;
                    case "CylinderGeometry":
                    case "CylinderBufferGeometry":
                        a = new nu[s.type](s.radiusTop,s.radiusBottom,s.height,s.radialSegments,s.heightSegments,s.openEnded,s.thetaStart,s.thetaLength);
                        break;
                    case "ConeGeometry":
                    case "ConeBufferGeometry":
                        a = new nu[s.type](s.radius,s.height,s.radialSegments,s.heightSegments,s.openEnded,s.thetaStart,s.thetaLength);
                        break;
                    case "SphereGeometry":
                    case "SphereBufferGeometry":
                        a = new nu[s.type](s.radius,s.widthSegments,s.heightSegments,s.phiStart,s.phiLength,s.thetaStart,s.thetaLength);
                        break;
                    case "DodecahedronGeometry":
                    case "DodecahedronBufferGeometry":
                    case "IcosahedronGeometry":
                    case "IcosahedronBufferGeometry":
                    case "OctahedronGeometry":
                    case "OctahedronBufferGeometry":
                    case "TetrahedronGeometry":
                    case "TetrahedronBufferGeometry":
                        a = new nu[s.type](s.radius,s.detail);
                        break;
                    case "RingGeometry":
                    case "RingBufferGeometry":
                        a = new nu[s.type](s.innerRadius,s.outerRadius,s.thetaSegments,s.phiSegments,s.thetaStart,s.thetaLength);
                        break;
                    case "TorusGeometry":
                    case "TorusBufferGeometry":
                        a = new nu[s.type](s.radius,s.tube,s.radialSegments,s.tubularSegments,s.arc);
                        break;
                    case "TorusKnotGeometry":
                    case "TorusKnotBufferGeometry":
                        a = new nu[s.type](s.radius,s.tube,s.tubularSegments,s.radialSegments,s.p,s.q);
                        break;
                    case "TubeGeometry":
                    case "TubeBufferGeometry":
                        a = new nu[s.type]((new ad[s.path.type]).fromJSON(s.path),s.tubularSegments,s.radius,s.radialSegments,s.closed);
                        break;
                    case "LatheGeometry":
                    case "LatheBufferGeometry":
                        a = new nu[s.type](s.points,s.segments,s.phiStart,s.phiLength);
                        break;
                    case "PolyhedronGeometry":
                    case "PolyhedronBufferGeometry":
                        a = new nu[s.type](s.vertices,s.indices,s.radius,s.details);
                        break;
                    case "ShapeGeometry":
                    case "ShapeBufferGeometry":
                        for (var c = [], l = 0, u = s.shapes.length; l < u; l++) {
                            var d = e[s.shapes[l]];
                            c.push(d)
                        }
                        a = new nu[s.type](c,s.curveSegments);
                        break;
                    case "ExtrudeGeometry":
                    case "ExtrudeBufferGeometry":
                        for (c = [],
                        l = 0,
                        u = s.shapes.length; l < u; l++) {
                            d = e[s.shapes[l]];
                            c.push(d)
                        }
                        var p = s.options.extrudePath;
                        void 0 !== p && (s.options.extrudePath = (new ad[p.type]).fromJSON(p)),
                        a = new nu[s.type](c,s.options);
                        break;
                    case "BufferGeometry":
                    case "InstancedBufferGeometry":
                        a = i.parse(s);
                        break;
                    case "Geometry":
                        console.error('THREE.ObjectLoader: Loading "Geometry" is not supported anymore.');
                        break;
                    default:
                        console.warn('THREE.ObjectLoader: Unsupported geometry type "' + s.type + '"');
                        continue
                    }
                    a.uuid = s.uuid,
                    void 0 !== s.name && (a.name = s.name),
                    !0 === a.isBufferGeometry && void 0 !== s.userData && (a.userData = s.userData),
                    n[s.uuid] = a
                }
            return n
        },
        parseMaterials: function(t, e) {
            var n = {}
              , i = {};
            if (void 0 !== t) {
                var r = new xd;
                r.setTextures(e);
                for (var o = 0, a = t.length; o < a; o++) {
                    var s = t[o];
                    if ("MultiMaterial" === s.type) {
                        for (var c = [], l = 0; l < s.materials.length; l++) {
                            var u = s.materials[l];
                            void 0 === n[u.uuid] && (n[u.uuid] = r.parse(u)),
                            c.push(n[u.uuid])
                        }
                        i[s.uuid] = c
                    } else
                        void 0 === n[s.uuid] && (n[s.uuid] = r.parse(s)),
                        i[s.uuid] = n[s.uuid]
                }
            }
            return i
        },
        parseAnimations: function(t) {
            for (var e = [], n = 0; n < t.length; n++) {
                var i = t[n]
                  , r = Tu.parse(i);
                void 0 !== i.uuid && (r.uuid = i.uuid),
                e.push(r)
            }
            return e
        },
        parseImages: function(t, e) {
            var n = this
              , i = {};
            function r(t) {
                return n.manager.itemStart(t),
                o.load(t, (function() {
                    n.manager.itemEnd(t)
                }
                ), void 0, (function() {
                    n.manager.itemError(t),
                    n.manager.itemEnd(t)
                }
                ))
            }
            if (void 0 !== t && t.length > 0) {
                var o = new Vu(new Pu(e));
                o.setCrossOrigin(this.crossOrigin);
                for (var a = 0, s = t.length; a < s; a++) {
                    var c = t[a]
                      , l = c.url;
                    if (Array.isArray(l)) {
                        i[c.uuid] = [];
                        for (var u = 0, d = l.length; u < d; u++) {
                            var p = l[u]
                              , h = /^(\/\/)|([a-z]+:(\/\/)?)/i.test(p) ? p : n.resourcePath + p;
                            i[c.uuid].push(r(h))
                        }
                    } else {
                        h = /^(\/\/)|([a-z]+:(\/\/)?)/i.test(c.url) ? c.url : n.resourcePath + c.url;
                        i[c.uuid] = r(h)
                    }
                }
            }
            return i
        },
        parseTextures: function(t, e) {
            function n(t, e) {
                return "number" == typeof t ? t : (console.warn("THREE.ObjectLoader.parseTexture: Constant should be in numeric form.", t),
                e[t])
            }
            var i = {};
            if (void 0 !== t)
                for (var r = 0, o = t.length; r < o; r++) {
                    var a, s = t[r];
                    void 0 === s.image && console.warn('THREE.ObjectLoader: No "image" specified for', s.uuid),
                    void 0 === e[s.image] && console.warn("THREE.ObjectLoader: Undefined image", s.image),
                    (a = Array.isArray(e[s.image]) ? new ia(e[s.image]) : new ti(e[s.image])).needsUpdate = !0,
                    a.uuid = s.uuid,
                    void 0 !== s.name && (a.name = s.name),
                    void 0 !== s.mapping && (a.mapping = n(s.mapping, Pd)),
                    void 0 !== s.offset && a.offset.fromArray(s.offset),
                    void 0 !== s.repeat && a.repeat.fromArray(s.repeat),
                    void 0 !== s.center && a.center.fromArray(s.center),
                    void 0 !== s.rotation && (a.rotation = s.rotation),
                    void 0 !== s.wrap && (a.wrapS = n(s.wrap[0], Id),
                    a.wrapT = n(s.wrap[1], Id)),
                    void 0 !== s.format && (a.format = s.format),
                    void 0 !== s.type && (a.type = s.type),
                    void 0 !== s.encoding && (a.encoding = s.encoding),
                    void 0 !== s.minFilter && (a.minFilter = n(s.minFilter, kd)),
                    void 0 !== s.magFilter && (a.magFilter = n(s.magFilter, kd)),
                    void 0 !== s.anisotropy && (a.anisotropy = s.anisotropy),
                    void 0 !== s.flipY && (a.flipY = s.flipY),
                    void 0 !== s.premultiplyAlpha && (a.premultiplyAlpha = s.premultiplyAlpha),
                    void 0 !== s.unpackAlignment && (a.unpackAlignment = s.unpackAlignment),
                    i[s.uuid] = a
                }
            return i
        },
        parseObject: function(t, e, n) {
            var i;
            function r(t) {
                return void 0 === e[t] && console.warn("THREE.ObjectLoader: Undefined geometry", t),
                e[t]
            }
            function o(t) {
                if (void 0 !== t) {
                    if (Array.isArray(t)) {
                        for (var e = [], i = 0, r = t.length; i < r; i++) {
                            var o = t[i];
                            void 0 === n[o] && console.warn("THREE.ObjectLoader: Undefined material", o),
                            e.push(n[o])
                        }
                        return e
                    }
                    return void 0 === n[t] && console.warn("THREE.ObjectLoader: Undefined material", t),
                    n[t]
                }
            }
            switch (t.type) {
            case "Scene":
                i = new Ri,
                void 0 !== t.background && Number.isInteger(t.background) && (i.background = new Er(t.background)),
                void 0 !== t.fog && ("Fog" === t.fog.type ? i.fog = new Gs(t.fog.color,t.fog.near,t.fog.far) : "FogExp2" === t.fog.type && (i.fog = new zs(t.fog.color,t.fog.density)));
                break;
            case "PerspectiveCamera":
                i = new ko(t.fov,t.aspect,t.near,t.far),
                void 0 !== t.focus && (i.focus = t.focus),
                void 0 !== t.zoom && (i.zoom = t.zoom),
                void 0 !== t.filmGauge && (i.filmGauge = t.filmGauge),
                void 0 !== t.filmOffset && (i.filmOffset = t.filmOffset),
                void 0 !== t.view && (i.view = Object.assign({}, t.view));
                break;
            case "OrthographicCamera":
                i = new vd(t.left,t.right,t.top,t.bottom,t.near,t.far),
                void 0 !== t.zoom && (i.zoom = t.zoom),
                void 0 !== t.view && (i.view = Object.assign({}, t.view));
                break;
            case "AmbientLight":
                i = new wd(t.color,t.intensity);
                break;
            case "DirectionalLight":
                i = new bd(t.color,t.intensity);
                break;
            case "PointLight":
                i = new gd(t.color,t.intensity,t.distance,t.decay);
                break;
            case "RectAreaLight":
                i = new Sd(t.color,t.intensity,t.width,t.height);
                break;
            case "SpotLight":
                i = new fd(t.color,t.intensity,t.distance,t.angle,t.penumbra,t.decay);
                break;
            case "HemisphereLight":
                i = new dd(t.color,t.groundColor,t.intensity);
                break;
            case "SkinnedMesh":
                console.warn("THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.");
            case "Mesh":
                i = new vo(a = r(t.geometry),s = o(t.material));
                break;
            case "InstancedMesh":
                var a = r(t.geometry)
                  , s = o(t.material)
                  , c = t.count
                  , l = t.instanceMatrix;
                (i = new Sc(a,s,c)).instanceMatrix = new Dr(new Float32Array(l.array),16);
                break;
            case "LOD":
                i = new dc;
                break;
            case "Line":
                i = new Oc(r(t.geometry),o(t.material),t.mode);
                break;
            case "LineLoop":
                i = new kc(r(t.geometry),o(t.material));
                break;
            case "LineSegments":
                i = new Ic(r(t.geometry),o(t.material));
                break;
            case "PointCloud":
            case "Points":
                i = new Vc(r(t.geometry),o(t.material));
                break;
            case "Sprite":
                i = new sc(o(t.material));
                break;
            case "Group":
                i = new Fs;
                break;
            default:
                i = new Di
            }
            if (i.uuid = t.uuid,
            void 0 !== t.name && (i.name = t.name),
            void 0 !== t.matrix ? (i.matrix.fromArray(t.matrix),
            void 0 !== t.matrixAutoUpdate && (i.matrixAutoUpdate = t.matrixAutoUpdate),
            i.matrixAutoUpdate && i.matrix.decompose(i.position, i.quaternion, i.scale)) : (void 0 !== t.position && i.position.fromArray(t.position),
            void 0 !== t.rotation && i.rotation.fromArray(t.rotation),
            void 0 !== t.quaternion && i.quaternion.fromArray(t.quaternion),
            void 0 !== t.scale && i.scale.fromArray(t.scale)),
            void 0 !== t.castShadow && (i.castShadow = t.castShadow),
            void 0 !== t.receiveShadow && (i.receiveShadow = t.receiveShadow),
            t.shadow && (void 0 !== t.shadow.bias && (i.shadow.bias = t.shadow.bias),
            void 0 !== t.shadow.radius && (i.shadow.radius = t.shadow.radius),
            void 0 !== t.shadow.mapSize && i.shadow.mapSize.fromArray(t.shadow.mapSize),
            void 0 !== t.shadow.camera && (i.shadow.camera = this.parseObject(t.shadow.camera))),
            void 0 !== t.visible && (i.visible = t.visible),
            void 0 !== t.frustumCulled && (i.frustumCulled = t.frustumCulled),
            void 0 !== t.renderOrder && (i.renderOrder = t.renderOrder),
            void 0 !== t.userData && (i.userData = t.userData),
            void 0 !== t.layers && (i.layers.mask = t.layers),
            void 0 !== t.children)
                for (var u = t.children, d = 0; d < u.length; d++)
                    i.add(this.parseObject(u[d], e, n));
            if ("LOD" === t.type) {
                void 0 !== t.autoUpdate && (i.autoUpdate = t.autoUpdate);
                for (var p = t.levels, h = 0; h < p.length; h++) {
                    var f = p[h]
                      , m = i.getObjectByProperty("uuid", f.object);
                    void 0 !== m && i.addLevel(m, f.distance)
                }
            }
            return i
        }
    });
    var _d, Pd = {
        UVMapping: gt,
        CubeReflectionMapping: vt,
        CubeRefractionMapping: yt,
        EquirectangularReflectionMapping: bt,
        EquirectangularRefractionMapping: wt,
        SphericalReflectionMapping: St,
        CubeUVReflectionMapping: xt,
        CubeUVRefractionMapping: Mt
    }, Id = {
        RepeatWrapping: Et,
        ClampToEdgeWrapping: Ct,
        MirroredRepeatWrapping: At
    }, kd = {
        NearestFilter: Tt,
        NearestMipmapNearestFilter: Ot,
        NearestMipmapLinearFilter: Pt,
        LinearFilter: kt,
        LinearMipmapNearestFilter: Dt,
        LinearMipmapLinearFilter: Lt
    };
    function Dd(t) {
        "undefined" == typeof createImageBitmap && console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),
        "undefined" == typeof fetch && console.warn("THREE.ImageBitmapLoader: fetch() not supported."),
        ku.call(this, t),
        this.options = void 0
    }
    function Rd() {
        this.type = "ShapePath",
        this.color = new Er,
        this.subPaths = [],
        this.currentPath = null
    }
    function Ld(t) {
        this.type = "Font",
        this.data = t
    }
    function Nd(t, e, n, i, r) {
        var o = r.glyphs[t] || r.glyphs["?"];
        if (o) {
            var a, s, c, l, u, d, p, h, f = new Rd;
            if (o.o)
                for (var m = o._cachedOutline || (o._cachedOutline = o.o.split(" ")), g = 0, v = m.length; g < v; ) {
                    switch (m[g++]) {
                    case "m":
                        a = m[g++] * e + n,
                        s = m[g++] * e + i,
                        f.moveTo(a, s);
                        break;
                    case "l":
                        a = m[g++] * e + n,
                        s = m[g++] * e + i,
                        f.lineTo(a, s);
                        break;
                    case "q":
                        c = m[g++] * e + n,
                        l = m[g++] * e + i,
                        u = m[g++] * e + n,
                        d = m[g++] * e + i,
                        f.quadraticCurveTo(u, d, c, l);
                        break;
                    case "b":
                        c = m[g++] * e + n,
                        l = m[g++] * e + i,
                        u = m[g++] * e + n,
                        d = m[g++] * e + i,
                        p = m[g++] * e + n,
                        h = m[g++] * e + i,
                        f.bezierCurveTo(u, d, p, h, c, l)
                    }
                }
            return {
                offsetX: o.ha * e,
                path: f
            }
        }
        console.error('THREE.Font: character "' + t + '" does not exists in font family ' + r.familyName + ".")
    }
    function jd(t) {
        ku.call(this, t)
    }
    Dd.prototype = Object.assign(Object.create(ku.prototype), {
        constructor: Dd,
        setOptions: function(t) {
            return this.options = t,
            this
        },
        load: function(t, e, n, i) {
            void 0 === t && (t = ""),
            void 0 !== this.path && (t = this.path + t),
            t = this.manager.resolveURL(t);
            var r = this
              , o = _u.get(t);
            if (void 0 !== o)
                return r.manager.itemStart(t),
                setTimeout((function() {
                    e && e(o),
                    r.manager.itemEnd(t)
                }
                ), 0),
                o;
            fetch(t).then((function(t) {
                return t.blob()
            }
            )).then((function(t) {
                return void 0 === r.options ? createImageBitmap(t) : createImageBitmap(t, r.options)
            }
            )).then((function(n) {
                _u.add(t, n),
                e && e(n),
                r.manager.itemEnd(t)
            }
            )).catch((function(e) {
                i && i(e),
                r.manager.itemError(t),
                r.manager.itemEnd(t)
            }
            )),
            r.manager.itemStart(t)
        }
    }),
    Object.assign(Rd.prototype, {
        moveTo: function(t, e) {
            return this.currentPath = new cd,
            this.subPaths.push(this.currentPath),
            this.currentPath.moveTo(t, e),
            this
        },
        lineTo: function(t, e) {
            return this.currentPath.lineTo(t, e),
            this
        },
        quadraticCurveTo: function(t, e, n, i) {
            return this.currentPath.quadraticCurveTo(t, e, n, i),
            this
        },
        bezierCurveTo: function(t, e, n, i, r, o) {
            return this.currentPath.bezierCurveTo(t, e, n, i, r, o),
            this
        },
        splineThru: function(t) {
            return this.currentPath.splineThru(t),
            this
        },
        toShapes: function(t, e) {
            function n(t) {
                for (var e = [], n = 0, i = t.length; n < i; n++) {
                    var r = t[n]
                      , o = new ld;
                    o.curves = r.curves,
                    e.push(o)
                }
                return e
            }
            function i(t, e) {
                for (var n = e.length, i = !1, r = n - 1, o = 0; o < n; r = o++) {
                    var a = e[r]
                      , s = e[o]
                      , c = s.x - a.x
                      , l = s.y - a.y;
                    if (Math.abs(l) > Number.EPSILON) {
                        if (l < 0 && (a = e[o],
                        c = -c,
                        s = e[r],
                        l = -l),
                        t.y < a.y || t.y > s.y)
                            continue;
                        if (t.y === a.y) {
                            if (t.x === a.x)
                                return !0
                        } else {
                            var u = l * (t.x - a.x) - c * (t.y - a.y);
                            if (0 === u)
                                return !0;
                            if (u < 0)
                                continue;
                            i = !i
                        }
                    } else {
                        if (t.y !== a.y)
                            continue;
                        if (s.x <= t.x && t.x <= a.x || a.x <= t.x && t.x <= s.x)
                            return !0
                    }
                }
                return i
            }
            var r = Il.isClockWise
              , o = this.subPaths;
            if (0 === o.length)
                return [];
            if (!0 === e)
                return n(o);
            var a, s, c, l = [];
            if (1 === o.length)
                return s = o[0],
                (c = new ld).curves = s.curves,
                l.push(c),
                l;
            var u = !r(o[0].getPoints());
            u = t ? !u : u;
            var d, p, h = [], f = [], m = [], g = 0;
            f[g] = void 0,
            m[g] = [];
            for (var v = 0, y = o.length; v < y; v++)
                a = r(d = (s = o[v]).getPoints()),
                (a = t ? !a : a) ? (!u && f[g] && g++,
                f[g] = {
                    s: new ld,
                    p: d
                },
                f[g].s.curves = s.curves,
                u && g++,
                m[g] = []) : m[g].push({
                    h: s,
                    p: d[0]
                });
            if (!f[0])
                return n(o);
            if (f.length > 1) {
                for (var b = !1, w = [], S = 0, x = f.length; S < x; S++)
                    h[S] = [];
                for (S = 0,
                x = f.length; S < x; S++)
                    for (var M = m[S], E = 0; E < M.length; E++) {
                        for (var C = M[E], A = !0, T = 0; T < f.length; T++)
                            i(C.p, f[T].p) && (S !== T && w.push({
                                froms: S,
                                tos: T,
                                hole: E
                            }),
                            A ? (A = !1,
                            h[T].push(C)) : b = !0);
                        A && h[S].push(C)
                    }
                w.length > 0 && (b || (m = h))
            }
            v = 0;
            for (var O = f.length; v < O; v++) {
                c = f[v].s,
                l.push(c);
                for (var _ = 0, P = (p = m[v]).length; _ < P; _++)
                    c.holes.push(p[_].h)
            }
            return l
        }
    }),
    Object.assign(Ld.prototype, {
        isFont: !0,
        generateShapes: function(t, e) {
            void 0 === e && (e = 100);
            for (var n = [], i = function(t, e, n) {
                for (var i = Array.from ? Array.from(t) : String(t).split(""), r = e / n.resolution, o = (n.boundingBox.yMax - n.boundingBox.yMin + n.underlineThickness) * r, a = [], s = 0, c = 0, l = 0; l < i.length; l++) {
                    var u = i[l];
                    if ("\n" === u)
                        s = 0,
                        c -= o;
                    else {
                        var d = Nd(u, r, s, c, n);
                        s += d.offsetX,
                        a.push(d.path)
                    }
                }
                return a
            }(t, e, this.data), r = 0, o = i.length; r < o; r++)
                Array.prototype.push.apply(n, i[r].toShapes());
            return n
        }
    }),
    jd.prototype = Object.assign(Object.create(ku.prototype), {
        constructor: jd,
        load: function(t, e, n, i) {
            var r = this
              , o = new Ru(this.manager);
            o.setPath(this.path),
            o.load(t, (function(t) {
                var n;
                try {
                    n = JSON.parse(t)
                } catch (e) {
                    console.warn("THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead."),
                    n = JSON.parse(t.substring(65, t.length - 2))
                }
                var i = r.parse(n);
                e && e(i)
            }
            ), n, i)
        },
        parse: function(t) {
            return new Ld(t)
        }
    });
    var Vd = {
        getContext: function() {
            return void 0 === _d && (_d = new (window.AudioContext || window.webkitAudioContext)),
            _d
        },
        setContext: function(t) {
            _d = t
        }
    };
    function Fd(t) {
        ku.call(this, t)
    }
    function Ud() {
        this.coefficients = [];
        for (var t = 0; t < 9; t++)
            this.coefficients.push(new si)
    }
    function Bd(t, e) {
        ud.call(this, void 0, e),
        this.sh = void 0 !== t ? t : new Ud
    }
    function zd(t, e, n) {
        Bd.call(this, void 0, n);
        var i = (new Er).set(t)
          , r = (new Er).set(e)
          , o = new si(i.r,i.g,i.b)
          , a = new si(r.r,r.g,r.b)
          , s = Math.sqrt(Math.PI)
          , c = s * Math.sqrt(.75);
        this.sh.coefficients[0].copy(o).add(a).multiplyScalar(s),
        this.sh.coefficients[1].copy(o).sub(a).multiplyScalar(c)
    }
    function Gd(t, e) {
        Bd.call(this, void 0, e);
        var n = (new Er).set(t);
        this.sh.coefficients[0].set(n.r, n.g, n.b).multiplyScalar(2 * Math.sqrt(Math.PI))
    }
    Fd.prototype = Object.assign(Object.create(ku.prototype), {
        constructor: Fd,
        load: function(t, e, n, i) {
            var r = new Ru(this.manager);
            r.setResponseType("arraybuffer"),
            r.setPath(this.path),
            r.load(t, (function(t) {
                var n = t.slice(0);
                Vd.getContext().decodeAudioData(n, (function(t) {
                    e(t)
                }
                ))
            }
            ), n, i)
        }
    }),
    Object.assign(Ud.prototype, {
        isSphericalHarmonics3: !0,
        set: function(t) {
            for (var e = 0; e < 9; e++)
                this.coefficients[e].copy(t[e]);
            return this
        },
        zero: function() {
            for (var t = 0; t < 9; t++)
                this.coefficients[t].set(0, 0, 0);
            return this
        },
        getAt: function(t, e) {
            var n = t.x
              , i = t.y
              , r = t.z
              , o = this.coefficients;
            return e.copy(o[0]).multiplyScalar(.282095),
            e.addScaledVector(o[1], .488603 * i),
            e.addScaledVector(o[2], .488603 * r),
            e.addScaledVector(o[3], .488603 * n),
            e.addScaledVector(o[4], n * i * 1.092548),
            e.addScaledVector(o[5], i * r * 1.092548),
            e.addScaledVector(o[6], .315392 * (3 * r * r - 1)),
            e.addScaledVector(o[7], n * r * 1.092548),
            e.addScaledVector(o[8], .546274 * (n * n - i * i)),
            e
        },
        getIrradianceAt: function(t, e) {
            var n = t.x
              , i = t.y
              , r = t.z
              , o = this.coefficients;
            return e.copy(o[0]).multiplyScalar(.886227),
            e.addScaledVector(o[1], 1.023328 * i),
            e.addScaledVector(o[2], 1.023328 * r),
            e.addScaledVector(o[3], 1.023328 * n),
            e.addScaledVector(o[4], .858086 * n * i),
            e.addScaledVector(o[5], .858086 * i * r),
            e.addScaledVector(o[6], .743125 * r * r - .247708),
            e.addScaledVector(o[7], .858086 * n * r),
            e.addScaledVector(o[8], .429043 * (n * n - i * i)),
            e
        },
        add: function(t) {
            for (var e = 0; e < 9; e++)
                this.coefficients[e].add(t.coefficients[e]);
            return this
        },
        addScaledSH: function(t, e) {
            for (var n = 0; n < 9; n++)
                this.coefficients[n].addScaledVector(t.coefficients[n], e);
            return this
        },
        scale: function(t) {
            for (var e = 0; e < 9; e++)
                this.coefficients[e].multiplyScalar(t);
            return this
        },
        lerp: function(t, e) {
            for (var n = 0; n < 9; n++)
                this.coefficients[n].lerp(t.coefficients[n], e);
            return this
        },
        equals: function(t) {
            for (var e = 0; e < 9; e++)
                if (!this.coefficients[e].equals(t.coefficients[e]))
                    return !1;
            return !0
        },
        copy: function(t) {
            return this.set(t.coefficients)
        },
        clone: function() {
            return (new this.constructor).copy(this)
        },
        fromArray: function(t, e) {
            void 0 === e && (e = 0);
            for (var n = this.coefficients, i = 0; i < 9; i++)
                n[i].fromArray(t, e + 3 * i);
            return this
        },
        toArray: function(t, e) {
            void 0 === t && (t = []),
            void 0 === e && (e = 0);
            for (var n = this.coefficients, i = 0; i < 9; i++)
                n[i].toArray(t, e + 3 * i);
            return t
        }
    }),
    Object.assign(Ud, {
        getBasisAt: function(t, e) {
            var n = t.x
              , i = t.y
              , r = t.z;
            e[0] = .282095,
            e[1] = .488603 * i,
            e[2] = .488603 * r,
            e[3] = .488603 * n,
            e[4] = 1.092548 * n * i,
            e[5] = 1.092548 * i * r,
            e[6] = .315392 * (3 * r * r - 1),
            e[7] = 1.092548 * n * r,
            e[8] = .546274 * (n * n - i * i)
        }
    }),
    Bd.prototype = Object.assign(Object.create(ud.prototype), {
        constructor: Bd,
        isLightProbe: !0,
        copy: function(t) {
            return ud.prototype.copy.call(this, t),
            this.sh.copy(t.sh),
            this.intensity = t.intensity,
            this
        },
        toJSON: function(t) {
            return ud.prototype.toJSON.call(this, t)
        }
    }),
    zd.prototype = Object.assign(Object.create(Bd.prototype), {
        constructor: zd,
        isHemisphereLightProbe: !0,
        copy: function(t) {
            return Bd.prototype.copy.call(this, t),
            this
        },
        toJSON: function(t) {
            return Bd.prototype.toJSON.call(this, t)
        }
    }),
    Gd.prototype = Object.assign(Object.create(Bd.prototype), {
        constructor: Gd,
        isAmbientLightProbe: !0,
        copy: function(t) {
            return Bd.prototype.copy.call(this, t),
            this
        },
        toJSON: function(t) {
            return Bd.prototype.toJSON.call(this, t)
        }
    });
    var Hd = new mi
      , Wd = new mi;
    function qd() {
        this.type = "StereoCamera",
        this.aspect = 1,
        this.eyeSep = .064,
        this.cameraL = new ko,
        this.cameraL.layers.enable(1),
        this.cameraL.matrixAutoUpdate = !1,
        this.cameraR = new ko,
        this.cameraR.layers.enable(2),
        this.cameraR.matrixAutoUpdate = !1,
        this._cache = {
            focus: null,
            fov: null,
            aspect: null,
            near: null,
            far: null,
            zoom: null,
            eyeSep: null
        }
    }
    function Xd(t) {
        this.autoStart = void 0 === t || t,
        this.startTime = 0,
        this.oldTime = 0,
        this.elapsedTime = 0,
        this.running = !1
    }
    Object.assign(qd.prototype, {
        update: function(t) {
            var e = this._cache;
            if (e.focus !== t.focus || e.fov !== t.fov || e.aspect !== t.aspect * this.aspect || e.near !== t.near || e.far !== t.far || e.zoom !== t.zoom || e.eyeSep !== this.eyeSep) {
                e.focus = t.focus,
                e.fov = t.fov,
                e.aspect = t.aspect * this.aspect,
                e.near = t.near,
                e.far = t.far,
                e.zoom = t.zoom,
                e.eyeSep = this.eyeSep;
                var n, i, r = t.projectionMatrix.clone(), o = e.eyeSep / 2, a = o * e.near / e.focus, s = e.near * Math.tan(Kn.DEG2RAD * e.fov * .5) / e.zoom;
                Wd.elements[12] = -o,
                Hd.elements[12] = o,
                n = -s * e.aspect + a,
                i = s * e.aspect + a,
                r.elements[0] = 2 * e.near / (i - n),
                r.elements[8] = (i + n) / (i - n),
                this.cameraL.projectionMatrix.copy(r),
                n = -s * e.aspect - a,
                i = s * e.aspect - a,
                r.elements[0] = 2 * e.near / (i - n),
                r.elements[8] = (i + n) / (i - n),
                this.cameraR.projectionMatrix.copy(r)
            }
            this.cameraL.matrixWorld.copy(t.matrixWorld).multiply(Wd),
            this.cameraR.matrixWorld.copy(t.matrixWorld).multiply(Hd)
        }
    }),
    Object.assign(Xd.prototype, {
        start: function() {
            this.startTime = ("undefined" == typeof performance ? Date : performance).now(),
            this.oldTime = this.startTime,
            this.elapsedTime = 0,
            this.running = !0
        },
        stop: function() {
            this.getElapsedTime(),
            this.running = !1,
            this.autoStart = !1
        },
        getElapsedTime: function() {
            return this.getDelta(),
            this.elapsedTime
        },
        getDelta: function() {
            var t = 0;
            if (this.autoStart && !this.running)
                return this.start(),
                0;
            if (this.running) {
                var e = ("undefined" == typeof performance ? Date : performance).now();
                t = (e - this.oldTime) / 1e3,
                this.oldTime = e,
                this.elapsedTime += t
            }
            return t
        }
    });
    var Yd = new si
      , Kd = new ri
      , Zd = new si
      , Jd = new si;
    function Qd() {
        Di.call(this),
        this.type = "AudioListener",
        this.context = Vd.getContext(),
        this.gain = this.context.createGain(),
        this.gain.connect(this.context.destination),
        this.filter = null,
        this.timeDelta = 0,
        this._clock = new Xd
    }
    function $d(t) {
        Di.call(this),
        this.type = "Audio",
        this.listener = t,
        this.context = t.context,
        this.gain = this.context.createGain(),
        this.gain.connect(t.getInput()),
        this.autoplay = !1,
        this.buffer = null,
        this.detune = 0,
        this.loop = !1,
        this.loopStart = 0,
        this.loopEnd = 0,
        this.offset = 0,
        this.duration = void 0,
        this.playbackRate = 1,
        this.isPlaying = !1,
        this.hasPlaybackControl = !0,
        this.sourceType = "empty",
        this._startedAt = 0,
        this._pausedAt = 0,
        this.filters = []
    }
    Qd.prototype = Object.assign(Object.create(Di.prototype), {
        constructor: Qd,
        getInput: function() {
            return this.gain
        },
        removeFilter: function() {
            return null !== this.filter && (this.gain.disconnect(this.filter),
            this.filter.disconnect(this.context.destination),
            this.gain.connect(this.context.destination),
            this.filter = null),
            this
        },
        getFilter: function() {
            return this.filter
        },
        setFilter: function(t) {
            return null !== this.filter ? (this.gain.disconnect(this.filter),
            this.filter.disconnect(this.context.destination)) : this.gain.disconnect(this.context.destination),
            this.filter = t,
            this.gain.connect(this.filter),
            this.filter.connect(this.context.destination),
            this
        },
        getMasterVolume: function() {
            return this.gain.gain.value
        },
        setMasterVolume: function(t) {
            return this.gain.gain.setTargetAtTime(t, this.context.currentTime, .01),
            this
        },
        updateMatrixWorld: function(t) {
            Di.prototype.updateMatrixWorld.call(this, t);
            var e = this.context.listener
              , n = this.up;
            if (this.timeDelta = this._clock.getDelta(),
            this.matrixWorld.decompose(Yd, Kd, Zd),
            Jd.set(0, 0, -1).applyQuaternion(Kd),
            e.positionX) {
                var i = this.context.currentTime + this.timeDelta;
                e.positionX.linearRampToValueAtTime(Yd.x, i),
                e.positionY.linearRampToValueAtTime(Yd.y, i),
                e.positionZ.linearRampToValueAtTime(Yd.z, i),
                e.forwardX.linearRampToValueAtTime(Jd.x, i),
                e.forwardY.linearRampToValueAtTime(Jd.y, i),
                e.forwardZ.linearRampToValueAtTime(Jd.z, i),
                e.upX.linearRampToValueAtTime(n.x, i),
                e.upY.linearRampToValueAtTime(n.y, i),
                e.upZ.linearRampToValueAtTime(n.z, i)
            } else
                e.setPosition(Yd.x, Yd.y, Yd.z),
                e.setOrientation(Jd.x, Jd.y, Jd.z, n.x, n.y, n.z)
        }
    }),
    $d.prototype = Object.assign(Object.create(Di.prototype), {
        constructor: $d,
        getOutput: function() {
            return this.gain
        },
        setNodeSource: function(t) {
            return this.hasPlaybackControl = !1,
            this.sourceType = "audioNode",
            this.source = t,
            this.connect(),
            this
        },
        setMediaElementSource: function(t) {
            return this.hasPlaybackControl = !1,
            this.sourceType = "mediaNode",
            this.source = this.context.createMediaElementSource(t),
            this.connect(),
            this
        },
        setMediaStreamSource: function(t) {
            return this.hasPlaybackControl = !1,
            this.sourceType = "mediaStreamNode",
            this.source = this.context.createMediaStreamSource(t),
            this.connect(),
            this
        },
        setBuffer: function(t) {
            return this.buffer = t,
            this.sourceType = "buffer",
            this.autoplay && this.play(),
            this
        },
        play: function(t) {
            if (void 0 === t && (t = 0),
            !0 !== this.isPlaying) {
                if (!1 !== this.hasPlaybackControl) {
                    this._startedAt = this.context.currentTime + t;
                    var e = this.context.createBufferSource();
                    return e.buffer = this.buffer,
                    e.loop = this.loop,
                    e.loopStart = this.loopStart,
                    e.loopEnd = this.loopEnd,
                    e.onended = this.onEnded.bind(this),
                    e.start(this._startedAt, this._pausedAt + this.offset, this.duration),
                    this.isPlaying = !0,
                    this.source = e,
                    this.setDetune(this.detune),
                    this.setPlaybackRate(this.playbackRate),
                    this.connect()
                }
                console.warn("THREE.Audio: this Audio has no playback control.")
            } else
                console.warn("THREE.Audio: Audio is already playing.")
        },
        pause: function() {
            if (!1 !== this.hasPlaybackControl)
                return !0 === this.isPlaying && (this._pausedAt += Math.max(this.context.currentTime - this._startedAt, 0) * this.playbackRate,
                this.source.stop(),
                this.source.onended = null,
                this.isPlaying = !1),
                this;
            console.warn("THREE.Audio: this Audio has no playback control.")
        },
        stop: function() {
            if (!1 !== this.hasPlaybackControl)
                return this._pausedAt = 0,
                this.source.stop(),
                this.source.onended = null,
                this.isPlaying = !1,
                this;
            console.warn("THREE.Audio: this Audio has no playback control.")
        },
        connect: function() {
            if (this.filters.length > 0) {
                this.source.connect(this.filters[0]);
                for (var t = 1, e = this.filters.length; t < e; t++)
                    this.filters[t - 1].connect(this.filters[t]);
                this.filters[this.filters.length - 1].connect(this.getOutput())
            } else
                this.source.connect(this.getOutput());
            return this
        },
        disconnect: function() {
            if (this.filters.length > 0) {
                this.source.disconnect(this.filters[0]);
                for (var t = 1, e = this.filters.length; t < e; t++)
                    this.filters[t - 1].disconnect(this.filters[t]);
                this.filters[this.filters.length - 1].disconnect(this.getOutput())
            } else
                this.source.disconnect(this.getOutput());
            return this
        },
        getFilters: function() {
            return this.filters
        },
        setFilters: function(t) {
            return t || (t = []),
            !0 === this.isPlaying ? (this.disconnect(),
            this.filters = t,
            this.connect()) : this.filters = t,
            this
        },
        setDetune: function(t) {
            if (this.detune = t,
            void 0 !== this.source.detune)
                return !0 === this.isPlaying && this.source.detune.setTargetAtTime(this.detune, this.context.currentTime, .01),
                this
        },
        getDetune: function() {
            return this.detune
        },
        getFilter: function() {
            return this.getFilters()[0]
        },
        setFilter: function(t) {
            return this.setFilters(t ? [t] : [])
        },
        setPlaybackRate: function(t) {
            if (!1 !== this.hasPlaybackControl)
                return this.playbackRate = t,
                !0 === this.isPlaying && this.source.playbackRate.setTargetAtTime(this.playbackRate, this.context.currentTime, .01),
                this;
            console.warn("THREE.Audio: this Audio has no playback control.")
        },
        getPlaybackRate: function() {
            return this.playbackRate
        },
        onEnded: function() {
            this.isPlaying = !1
        },
        getLoop: function() {
            return !1 === this.hasPlaybackControl ? (console.warn("THREE.Audio: this Audio has no playback control."),
            !1) : this.loop
        },
        setLoop: function(t) {
            if (!1 !== this.hasPlaybackControl)
                return this.loop = t,
                !0 === this.isPlaying && (this.source.loop = this.loop),
                this;
            console.warn("THREE.Audio: this Audio has no playback control.")
        },
        setLoopStart: function(t) {
            return this.loopStart = t,
            this
        },
        setLoopEnd: function(t) {
            return this.loopEnd = t,
            this
        },
        getVolume: function() {
            return this.gain.gain.value
        },
        setVolume: function(t) {
            return this.gain.gain.setTargetAtTime(t, this.context.currentTime, .01),
            this
        }
    });
    var tp = new si
      , ep = new ri
      , np = new si
      , ip = new si;
    function rp(t) {
        $d.call(this, t),
        this.panner = this.context.createPanner(),
        this.panner.panningModel = "HRTF",
        this.panner.connect(this.gain)
    }
    function op(t, e) {
        this.analyser = t.context.createAnalyser(),
        this.analyser.fftSize = void 0 !== e ? e : 2048,
        this.data = new Uint8Array(this.analyser.frequencyBinCount),
        t.getOutput().connect(this.analyser)
    }
    function ap(t, e, n) {
        this.binding = t,
        this.valueSize = n;
        var i, r = Float64Array;
        switch (e) {
        case "quaternion":
            i = this._slerp;
            break;
        case "string":
        case "bool":
            r = Array,
            i = this._select;
            break;
        default:
            i = this._lerp
        }
        this.buffer = new r(4 * n),
        this._mixBufferRegion = i,
        this.cumulativeWeight = 0,
        this.useCount = 0,
        this.referenceCount = 0
    }
    rp.prototype = Object.assign(Object.create($d.prototype), {
        constructor: rp,
        getOutput: function() {
            return this.panner
        },
        getRefDistance: function() {
            return this.panner.refDistance
        },
        setRefDistance: function(t) {
            return this.panner.refDistance = t,
            this
        },
        getRolloffFactor: function() {
            return this.panner.rolloffFactor
        },
        setRolloffFactor: function(t) {
            return this.panner.rolloffFactor = t,
            this
        },
        getDistanceModel: function() {
            return this.panner.distanceModel
        },
        setDistanceModel: function(t) {
            return this.panner.distanceModel = t,
            this
        },
        getMaxDistance: function() {
            return this.panner.maxDistance
        },
        setMaxDistance: function(t) {
            return this.panner.maxDistance = t,
            this
        },
        setDirectionalCone: function(t, e, n) {
            return this.panner.coneInnerAngle = t,
            this.panner.coneOuterAngle = e,
            this.panner.coneOuterGain = n,
            this
        },
        updateMatrixWorld: function(t) {
            if (Di.prototype.updateMatrixWorld.call(this, t),
            !0 !== this.hasPlaybackControl || !1 !== this.isPlaying) {
                this.matrixWorld.decompose(tp, ep, np),
                ip.set(0, 0, 1).applyQuaternion(ep);
                var e = this.panner;
                if (e.positionX) {
                    var n = this.context.currentTime + this.listener.timeDelta;
                    e.positionX.linearRampToValueAtTime(tp.x, n),
                    e.positionY.linearRampToValueAtTime(tp.y, n),
                    e.positionZ.linearRampToValueAtTime(tp.z, n),
                    e.orientationX.linearRampToValueAtTime(ip.x, n),
                    e.orientationY.linearRampToValueAtTime(ip.y, n),
                    e.orientationZ.linearRampToValueAtTime(ip.z, n)
                } else
                    e.setPosition(tp.x, tp.y, tp.z),
                    e.setOrientation(ip.x, ip.y, ip.z)
            }
        }
    }),
    Object.assign(op.prototype, {
        getFrequencyData: function() {
            return this.analyser.getByteFrequencyData(this.data),
            this.data
        },
        getAverageFrequency: function() {
            for (var t = 0, e = this.getFrequencyData(), n = 0; n < e.length; n++)
                t += e[n];
            return t / e.length
        }
    }),
    Object.assign(ap.prototype, {
        accumulate: function(t, e) {
            var n = this.buffer
              , i = this.valueSize
              , r = t * i + i
              , o = this.cumulativeWeight;
            if (0 === o) {
                for (var a = 0; a !== i; ++a)
                    n[r + a] = n[a];
                o = e
            } else {
                var s = e / (o += e);
                this._mixBufferRegion(n, r, 0, s, i)
            }
            this.cumulativeWeight = o
        },
        apply: function(t) {
            var e = this.valueSize
              , n = this.buffer
              , i = t * e + e
              , r = this.cumulativeWeight
              , o = this.binding;
            if (this.cumulativeWeight = 0,
            r < 1) {
                var a = 3 * e;
                this._mixBufferRegion(n, i, a, 1 - r, e)
            }
            for (var s = e, c = e + e; s !== c; ++s)
                if (n[s] !== n[s + e]) {
                    o.setValue(n, i);
                    break
                }
        },
        saveOriginalState: function() {
            var t = this.binding
              , e = this.buffer
              , n = this.valueSize
              , i = 3 * n;
            t.getValue(e, i);
            for (var r = n, o = i; r !== o; ++r)
                e[r] = e[i + r % n];
            this.cumulativeWeight = 0
        },
        restoreOriginalState: function() {
            var t = 3 * this.valueSize;
            this.binding.setValue(this.buffer, t)
        },
        _select: function(t, e, n, i, r) {
            if (i >= .5)
                for (var o = 0; o !== r; ++o)
                    t[e + o] = t[n + o]
        },
        _slerp: function(t, e, n, i) {
            ri.slerpFlat(t, e, t, e, t, n, i)
        },
        _lerp: function(t, e, n, i, r) {
            for (var o = 1 - i, a = 0; a !== r; ++a) {
                var s = e + a;
                t[s] = t[s] * o + t[n + a] * i
            }
        }
    });
    var sp = new RegExp("[\\[\\]\\.:\\/]","g")
      , cp = "[^" + "\\[\\]\\.:\\/".replace("\\.", "") + "]"
      , lp = /((?:WC+[\/:])*)/.source.replace("WC", "[^\\[\\]\\.:\\/]")
      , up = /(WCOD+)?/.source.replace("WCOD", cp)
      , dp = /(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC", "[^\\[\\]\\.:\\/]")
      , pp = /\.(WC+)(?:\[(.+)\])?/.source.replace("WC", "[^\\[\\]\\.:\\/]")
      , hp = new RegExp("^" + lp + up + dp + pp + "$")
      , fp = ["material", "materials", "bones"];
    function mp(t, e, n) {
        var i = n || gp.parseTrackName(e);
        this._targetGroup = t,
        this._bindings = t.subscribe_(e, i)
    }
    function gp(t, e, n) {
        this.path = e,
        this.parsedPath = n || gp.parseTrackName(e),
        this.node = gp.findNode(t, this.parsedPath.nodeName) || t,
        this.rootNode = t
    }
    function vp() {
        this.uuid = Kn.generateUUID(),
        this._objects = Array.prototype.slice.call(arguments),
        this.nCachedObjects_ = 0;
        var t = {};
        this._indicesByUUID = t;
        for (var e = 0, n = arguments.length; e !== n; ++e)
            t[arguments[e].uuid] = e;
        this._paths = [],
        this._parsedPaths = [],
        this._bindings = [],
        this._bindingsIndicesByPath = {};
        var i = this;
        this.stats = {
            objects: {
                get total() {
                    return i._objects.length
                },
                get inUse() {
                    return this.total - i.nCachedObjects_
                }
            },
            get bindingsPerObject() {
                return i._bindings.length
            }
        }
    }
    function yp(t, e, n) {
        this._mixer = t,
        this._clip = e,
        this._localRoot = n || null;
        for (var i = e.tracks, r = i.length, o = new Array(r), a = {
            endingStart: en,
            endingEnd: en
        }, s = 0; s !== r; ++s) {
            var c = i[s].createInterpolant(null);
            o[s] = c,
            c.settings = a
        }
        this._interpolantSettings = a,
        this._interpolants = o,
        this._propertyBindings = new Array(r),
        this._cacheIndex = null,
        this._byClipCacheIndex = null,
        this._timeScaleInterpolant = null,
        this._weightInterpolant = null,
        this.loop = Ze,
        this._loopCount = -1,
        this._startTime = null,
        this.time = 0,
        this.timeScale = 1,
        this._effectiveTimeScale = 1,
        this.weight = 1,
        this._effectiveWeight = 1,
        this.repetitions = 1 / 0,
        this.paused = !1,
        this.enabled = !0,
        this.clampWhenFinished = !1,
        this.zeroSlopeAtStart = !0,
        this.zeroSlopeAtEnd = !0
    }
    function bp(t) {
        this._root = t,
        this._initMemoryManager(),
        this._accuIndex = 0,
        this.time = 0,
        this.timeScale = 1
    }
    function wp(t) {
        "string" == typeof t && (console.warn("THREE.Uniform: Type parameter is no longer needed."),
        t = arguments[1]),
        this.value = t
    }
    function Sp(t, e, n) {
        Hs.call(this, t, e),
        this.meshPerAttribute = n || 1
    }
    function xp(t, e, n, i) {
        this.ray = new or(t,e),
        this.near = n || 0,
        this.far = i || 1 / 0,
        this.camera = null,
        this.layers = new bi,
        this.params = {
            Mesh: {},
            Line: {
                threshold: 1
            },
            LOD: {},
            Points: {
                threshold: 1
            },
            Sprite: {}
        },
        Object.defineProperties(this.params, {
            PointCloud: {
                get: function() {
                    return console.warn("THREE.Raycaster: params.PointCloud has been renamed to params.Points."),
                    this.Points
                }
            }
        })
    }
    function Mp(t, e) {
        return t.distance - e.distance
    }
    function Ep(t, e, n, i) {
        if (t.layers.test(e.layers) && t.raycast(e, n),
        !0 === i)
            for (var r = t.children, o = 0, a = r.length; o < a; o++)
                Ep(r[o], e, n, !0)
    }
    function Cp(t, e, n) {
        return this.radius = void 0 !== t ? t : 1,
        this.phi = void 0 !== e ? e : 0,
        this.theta = void 0 !== n ? n : 0,
        this
    }
    function Ap(t, e, n) {
        return this.radius = void 0 !== t ? t : 1,
        this.theta = void 0 !== e ? e : 0,
        this.y = void 0 !== n ? n : 0,
        this
    }
    Object.assign(mp.prototype, {
        getValue: function(t, e) {
            this.bind();
            var n = this._targetGroup.nCachedObjects_
              , i = this._bindings[n];
            void 0 !== i && i.getValue(t, e)
        },
        setValue: function(t, e) {
            for (var n = this._bindings, i = this._targetGroup.nCachedObjects_, r = n.length; i !== r; ++i)
                n[i].setValue(t, e)
        },
        bind: function() {
            for (var t = this._bindings, e = this._targetGroup.nCachedObjects_, n = t.length; e !== n; ++e)
                t[e].bind()
        },
        unbind: function() {
            for (var t = this._bindings, e = this._targetGroup.nCachedObjects_, n = t.length; e !== n; ++e)
                t[e].unbind()
        }
    }),
    Object.assign(gp, {
        Composite: mp,
        create: function(t, e, n) {
            return t && t.isAnimationObjectGroup ? new gp.Composite(t,e,n) : new gp(t,e,n)
        },
        sanitizeNodeName: function(t) {
            return t.replace(/\s/g, "_").replace(sp, "")
        },
        parseTrackName: function(t) {
            var e = hp.exec(t);
            if (!e)
                throw new Error("PropertyBinding: Cannot parse trackName: " + t);
            var n = {
                nodeName: e[2],
                objectName: e[3],
                objectIndex: e[4],
                propertyName: e[5],
                propertyIndex: e[6]
            }
              , i = n.nodeName && n.nodeName.lastIndexOf(".");
            if (void 0 !== i && -1 !== i) {
                var r = n.nodeName.substring(i + 1);
                -1 !== fp.indexOf(r) && (n.nodeName = n.nodeName.substring(0, i),
                n.objectName = r)
            }
            if (null === n.propertyName || 0 === n.propertyName.length)
                throw new Error("PropertyBinding: can not parse propertyName from trackName: " + t);
            return n
        },
        findNode: function(t, e) {
            if (!e || "" === e || "." === e || -1 === e || e === t.name || e === t.uuid)
                return t;
            if (t.skeleton) {
                var n = t.skeleton.getBoneByName(e);
                if (void 0 !== n)
                    return n
            }
            if (t.children) {
                var i = function t(n) {
                    for (var i = 0; i < n.length; i++) {
                        var r = n[i];
                        if (r.name === e || r.uuid === e)
                            return r;
                        var o = t(r.children);
                        if (o)
                            return o
                    }
                    return null
                }(t.children);
                if (i)
                    return i
            }
            return null
        }
    }),
    Object.assign(gp.prototype, {
        _getValue_unavailable: function() {},
        _setValue_unavailable: function() {},
        BindingType: {
            Direct: 0,
            EntireArray: 1,
            ArrayElement: 2,
            HasFromToArray: 3
        },
        Versioning: {
            None: 0,
            NeedsUpdate: 1,
            MatrixWorldNeedsUpdate: 2
        },
        GetterByBindingType: [function(t, e) {
            t[e] = this.node[this.propertyName]
        }
        , function(t, e) {
            for (var n = this.resolvedProperty, i = 0, r = n.length; i !== r; ++i)
                t[e++] = n[i]
        }
        , function(t, e) {
            t[e] = this.resolvedProperty[this.propertyIndex]
        }
        , function(t, e) {
            this.resolvedProperty.toArray(t, e)
        }
        ],
        SetterByBindingTypeAndVersioning: [[function(t, e) {
            this.targetObject[this.propertyName] = t[e]
        }
        , function(t, e) {
            this.targetObject[this.propertyName] = t[e],
            this.targetObject.needsUpdate = !0
        }
        , function(t, e) {
            this.targetObject[this.propertyName] = t[e],
            this.targetObject.matrixWorldNeedsUpdate = !0
        }
        ], [function(t, e) {
            for (var n = this.resolvedProperty, i = 0, r = n.length; i !== r; ++i)
                n[i] = t[e++]
        }
        , function(t, e) {
            for (var n = this.resolvedProperty, i = 0, r = n.length; i !== r; ++i)
                n[i] = t[e++];
            this.targetObject.needsUpdate = !0
        }
        , function(t, e) {
            for (var n = this.resolvedProperty, i = 0, r = n.length; i !== r; ++i)
                n[i] = t[e++];
            this.targetObject.matrixWorldNeedsUpdate = !0
        }
        ], [function(t, e) {
            this.resolvedProperty[this.propertyIndex] = t[e]
        }
        , function(t, e) {
            this.resolvedProperty[this.propertyIndex] = t[e],
            this.targetObject.needsUpdate = !0
        }
        , function(t, e) {
            this.resolvedProperty[this.propertyIndex] = t[e],
            this.targetObject.matrixWorldNeedsUpdate = !0
        }
        ], [function(t, e) {
            this.resolvedProperty.fromArray(t, e)
        }
        , function(t, e) {
            this.resolvedProperty.fromArray(t, e),
            this.targetObject.needsUpdate = !0
        }
        , function(t, e) {
            this.resolvedProperty.fromArray(t, e),
            this.targetObject.matrixWorldNeedsUpdate = !0
        }
        ]],
        getValue: function(t, e) {
            this.bind(),
            this.getValue(t, e)
        },
        setValue: function(t, e) {
            this.bind(),
            this.setValue(t, e)
        },
        bind: function() {
            var t = this.node
              , e = this.parsedPath
              , n = e.objectName
              , i = e.propertyName
              , r = e.propertyIndex;
            if (t || (t = gp.findNode(this.rootNode, e.nodeName) || this.rootNode,
            this.node = t),
            this.getValue = this._getValue_unavailable,
            this.setValue = this._setValue_unavailable,
            t) {
                if (n) {
                    var o = e.objectIndex;
                    switch (n) {
                    case "materials":
                        if (!t.material)
                            return void console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.", this);
                        if (!t.material.materials)
                            return void console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.", this);
                        t = t.material.materials;
                        break;
                    case "bones":
                        if (!t.skeleton)
                            return void console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.", this);
                        t = t.skeleton.bones;
                        for (var a = 0; a < t.length; a++)
                            if (t[a].name === o) {
                                o = a;
                                break
                            }
                        break;
                    default:
                        if (void 0 === t[n])
                            return void console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.", this);
                        t = t[n]
                    }
                    if (void 0 !== o) {
                        if (void 0 === t[o])
                            return void console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.", this, t);
                        t = t[o]
                    }
                }
                var s = t[i];
                if (void 0 !== s) {
                    var c = this.Versioning.None;
                    this.targetObject = t,
                    void 0 !== t.needsUpdate ? c = this.Versioning.NeedsUpdate : void 0 !== t.matrixWorldNeedsUpdate && (c = this.Versioning.MatrixWorldNeedsUpdate);
                    var l = this.BindingType.Direct;
                    if (void 0 !== r) {
                        if ("morphTargetInfluences" === i) {
                            if (!t.geometry)
                                return void console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.", this);
                            if (t.geometry.isBufferGeometry) {
                                if (!t.geometry.morphAttributes)
                                    return void console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.", this);
                                for (a = 0; a < this.node.geometry.morphAttributes.position.length; a++)
                                    if (t.geometry.morphAttributes.position[a].name === r) {
                                        r = a;
                                        break
                                    }
                            } else {
                                if (!t.geometry.morphTargets)
                                    return void console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.", this);
                                for (a = 0; a < this.node.geometry.morphTargets.length; a++)
                                    if (t.geometry.morphTargets[a].name === r) {
                                        r = a;
                                        break
                                    }
                            }
                        }
                        l = this.BindingType.ArrayElement,
                        this.resolvedProperty = s,
                        this.propertyIndex = r
                    } else
                        void 0 !== s.fromArray && void 0 !== s.toArray ? (l = this.BindingType.HasFromToArray,
                        this.resolvedProperty = s) : Array.isArray(s) ? (l = this.BindingType.EntireArray,
                        this.resolvedProperty = s) : this.propertyName = i;
                    this.getValue = this.GetterByBindingType[l],
                    this.setValue = this.SetterByBindingTypeAndVersioning[l][c]
                } else {
                    var u = e.nodeName;
                    console.error("THREE.PropertyBinding: Trying to update property for track: " + u + "." + i + " but it wasn't found.", t)
                }
            } else
                console.error("THREE.PropertyBinding: Trying to update node for track: " + this.path + " but it wasn't found.")
        },
        unbind: function() {
            this.node = null,
            this.getValue = this._getValue_unbound,
            this.setValue = this._setValue_unbound
        }
    }),
    Object.assign(gp.prototype, {
        _getValue_unbound: gp.prototype.getValue,
        _setValue_unbound: gp.prototype.setValue
    }),
    Object.assign(vp.prototype, {
        isAnimationObjectGroup: !0,
        add: function() {
            for (var t = this._objects, e = t.length, n = this.nCachedObjects_, i = this._indicesByUUID, r = this._paths, o = this._parsedPaths, a = this._bindings, s = a.length, c = void 0, l = 0, u = arguments.length; l !== u; ++l) {
                var d = arguments[l]
                  , p = d.uuid
                  , h = i[p];
                if (void 0 === h) {
                    h = e++,
                    i[p] = h,
                    t.push(d);
                    for (var f = 0, m = s; f !== m; ++f)
                        a[f].push(new gp(d,r[f],o[f]))
                } else if (h < n) {
                    c = t[h];
                    var g = --n
                      , v = t[g];
                    i[v.uuid] = h,
                    t[h] = v,
                    i[p] = g,
                    t[g] = d;
                    for (f = 0,
                    m = s; f !== m; ++f) {
                        var y = a[f]
                          , b = y[g]
                          , w = y[h];
                        y[h] = b,
                        void 0 === w && (w = new gp(d,r[f],o[f])),
                        y[g] = w
                    }
                } else
                    t[h] !== c && console.error("THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.")
            }
            this.nCachedObjects_ = n
        },
        remove: function() {
            for (var t = this._objects, e = this.nCachedObjects_, n = this._indicesByUUID, i = this._bindings, r = i.length, o = 0, a = arguments.length; o !== a; ++o) {
                var s = arguments[o]
                  , c = s.uuid
                  , l = n[c];
                if (void 0 !== l && l >= e) {
                    var u = e++
                      , d = t[u];
                    n[d.uuid] = l,
                    t[l] = d,
                    n[c] = u,
                    t[u] = s;
                    for (var p = 0, h = r; p !== h; ++p) {
                        var f = i[p]
                          , m = f[u]
                          , g = f[l];
                        f[l] = m,
                        f[u] = g
                    }
                }
            }
            this.nCachedObjects_ = e
        },
        uncache: function() {
            for (var t = this._objects, e = t.length, n = this.nCachedObjects_, i = this._indicesByUUID, r = this._bindings, o = r.length, a = 0, s = arguments.length; a !== s; ++a) {
                var c = arguments[a]
                  , l = c.uuid
                  , u = i[l];
                if (void 0 !== u)
                    if (delete i[l],
                    u < n) {
                        var d = --n
                          , p = t[d]
                          , h = t[y = --e];
                        i[p.uuid] = u,
                        t[u] = p,
                        i[h.uuid] = d,
                        t[d] = h,
                        t.pop();
                        for (var f = 0, m = o; f !== m; ++f) {
                            var g = (b = r[f])[d]
                              , v = b[y];
                            b[u] = g,
                            b[d] = v,
                            b.pop()
                        }
                    } else {
                        var y;
                        i[(h = t[y = --e]).uuid] = u,
                        t[u] = h,
                        t.pop();
                        for (f = 0,
                        m = o; f !== m; ++f) {
                            var b;
                            (b = r[f])[u] = b[y],
                            b.pop()
                        }
                    }
            }
            this.nCachedObjects_ = n
        },
        subscribe_: function(t, e) {
            var n = this._bindingsIndicesByPath
              , i = n[t]
              , r = this._bindings;
            if (void 0 !== i)
                return r[i];
            var o = this._paths
              , a = this._parsedPaths
              , s = this._objects
              , c = s.length
              , l = this.nCachedObjects_
              , u = new Array(c);
            i = r.length,
            n[t] = i,
            o.push(t),
            a.push(e),
            r.push(u);
            for (var d = l, p = s.length; d !== p; ++d) {
                var h = s[d];
                u[d] = new gp(h,t,e)
            }
            return u
        },
        unsubscribe_: function(t) {
            var e = this._bindingsIndicesByPath
              , n = e[t];
            if (void 0 !== n) {
                var i = this._paths
                  , r = this._parsedPaths
                  , o = this._bindings
                  , a = o.length - 1
                  , s = o[a];
                e[t[a]] = n,
                o[n] = s,
                o.pop(),
                r[n] = r[a],
                r.pop(),
                i[n] = i[a],
                i.pop()
            }
        }
    }),
    Object.assign(yp.prototype, {
        play: function() {
            return this._mixer._activateAction(this),
            this
        },
        stop: function() {
            return this._mixer._deactivateAction(this),
            this.reset()
        },
        reset: function() {
            return this.paused = !1,
            this.enabled = !0,
            this.time = 0,
            this._loopCount = -1,
            this._startTime = null,
            this.stopFading().stopWarping()
        },
        isRunning: function() {
            return this.enabled && !this.paused && 0 !== this.timeScale && null === this._startTime && this._mixer._isActiveAction(this)
        },
        isScheduled: function() {
            return this._mixer._isActiveAction(this)
        },
        startAt: function(t) {
            return this._startTime = t,
            this
        },
        setLoop: function(t, e) {
            return this.loop = t,
            this.repetitions = e,
            this
        },
        setEffectiveWeight: function(t) {
            return this.weight = t,
            this._effectiveWeight = this.enabled ? t : 0,
            this.stopFading()
        },
        getEffectiveWeight: function() {
            return this._effectiveWeight
        },
        fadeIn: function(t) {
            return this._scheduleFading(t, 0, 1)
        },
        fadeOut: function(t) {
            return this._scheduleFading(t, 1, 0)
        },
        crossFadeFrom: function(t, e, n) {
            if (t.fadeOut(e),
            this.fadeIn(e),
            n) {
                var i = this._clip.duration
                  , r = t._clip.duration
                  , o = r / i
                  , a = i / r;
                t.warp(1, o, e),
                this.warp(a, 1, e)
            }
            return this
        },
        crossFadeTo: function(t, e, n) {
            return t.crossFadeFrom(this, e, n)
        },
        stopFading: function() {
            var t = this._weightInterpolant;
            return null !== t && (this._weightInterpolant = null,
            this._mixer._takeBackControlInterpolant(t)),
            this
        },
        setEffectiveTimeScale: function(t) {
            return this.timeScale = t,
            this._effectiveTimeScale = this.paused ? 0 : t,
            this.stopWarping()
        },
        getEffectiveTimeScale: function() {
            return this._effectiveTimeScale
        },
        setDuration: function(t) {
            return this.timeScale = this._clip.duration / t,
            this.stopWarping()
        },
        syncWith: function(t) {
            return this.time = t.time,
            this.timeScale = t.timeScale,
            this.stopWarping()
        },
        halt: function(t) {
            return this.warp(this._effectiveTimeScale, 0, t)
        },
        warp: function(t, e, n) {
            var i = this._mixer
              , r = i.time
              , o = this._timeScaleInterpolant
              , a = this.timeScale;
            null === o && (o = i._lendControlInterpolant(),
            this._timeScaleInterpolant = o);
            var s = o.parameterPositions
              , c = o.sampleValues;
            return s[0] = r,
            s[1] = r + n,
            c[0] = t / a,
            c[1] = e / a,
            this
        },
        stopWarping: function() {
            var t = this._timeScaleInterpolant;
            return null !== t && (this._timeScaleInterpolant = null,
            this._mixer._takeBackControlInterpolant(t)),
            this
        },
        getMixer: function() {
            return this._mixer
        },
        getClip: function() {
            return this._clip
        },
        getRoot: function() {
            return this._localRoot || this._mixer._root
        },
        _update: function(t, e, n, i) {
            if (this.enabled) {
                var r = this._startTime;
                if (null !== r) {
                    var o = (t - r) * n;
                    if (o < 0 || 0 === n)
                        return;
                    this._startTime = null,
                    e = n * o
                }
                e *= this._updateTimeScale(t);
                var a = this._updateTime(e)
                  , s = this._updateWeight(t);
                if (s > 0)
                    for (var c = this._interpolants, l = this._propertyBindings, u = 0, d = c.length; u !== d; ++u)
                        c[u].evaluate(a),
                        l[u].accumulate(i, s)
            } else
                this._updateWeight(t)
        },
        _updateWeight: function(t) {
            var e = 0;
            if (this.enabled) {
                e = this.weight;
                var n = this._weightInterpolant;
                if (null !== n) {
                    var i = n.evaluate(t)[0];
                    e *= i,
                    t > n.parameterPositions[1] && (this.stopFading(),
                    0 === i && (this.enabled = !1))
                }
            }
            return this._effectiveWeight = e,
            e
        },
        _updateTimeScale: function(t) {
            var e = 0;
            if (!this.paused) {
                e = this.timeScale;
                var n = this._timeScaleInterpolant;
                if (null !== n)
                    e *= n.evaluate(t)[0],
                    t > n.parameterPositions[1] && (this.stopWarping(),
                    0 === e ? this.paused = !0 : this.timeScale = e)
            }
            return this._effectiveTimeScale = e,
            e
        },
        _updateTime: function(t) {
            var e = this.time + t
              , n = this._clip.duration
              , i = this.loop
              , r = this._loopCount
              , o = i === Je;
            if (0 === t)
                return -1 === r ? e : o && 1 == (1 & r) ? n - e : e;
            if (i === Ke) {
                -1 === r && (this._loopCount = 0,
                this._setEndings(!0, !0, !1));
                t: {
                    if (e >= n)
                        e = n;
                    else {
                        if (!(e < 0)) {
                            this.time = e;
                            break t
                        }
                        e = 0
                    }
                    this.clampWhenFinished ? this.paused = !0 : this.enabled = !1,
                    this.time = e,
                    this._mixer.dispatchEvent({
                        type: "finished",
                        action: this,
                        direction: t < 0 ? -1 : 1
                    })
                }
            } else {
                if (-1 === r && (t >= 0 ? (r = 0,
                this._setEndings(!0, 0 === this.repetitions, o)) : this._setEndings(0 === this.repetitions, !0, o)),
                e >= n || e < 0) {
                    var a = Math.floor(e / n);
                    e -= n * a,
                    r += Math.abs(a);
                    var s = this.repetitions - r;
                    if (s <= 0)
                        this.clampWhenFinished ? this.paused = !0 : this.enabled = !1,
                        e = t > 0 ? n : 0,
                        this.time = e,
                        this._mixer.dispatchEvent({
                            type: "finished",
                            action: this,
                            direction: t > 0 ? 1 : -1
                        });
                    else {
                        if (1 === s) {
                            var c = t < 0;
                            this._setEndings(c, !c, o)
                        } else
                            this._setEndings(!1, !1, o);
                        this._loopCount = r,
                        this.time = e,
                        this._mixer.dispatchEvent({
                            type: "loop",
                            action: this,
                            loopDelta: a
                        })
                    }
                } else
                    this.time = e;
                if (o && 1 == (1 & r))
                    return n - e
            }
            return e
        },
        _setEndings: function(t, e, n) {
            var i = this._interpolantSettings;
            n ? (i.endingStart = nn,
            i.endingEnd = nn) : (i.endingStart = t ? this.zeroSlopeAtStart ? nn : en : rn,
            i.endingEnd = e ? this.zeroSlopeAtEnd ? nn : en : rn)
        },
        _scheduleFading: function(t, e, n) {
            var i = this._mixer
              , r = i.time
              , o = this._weightInterpolant;
            null === o && (o = i._lendControlInterpolant(),
            this._weightInterpolant = o);
            var a = o.parameterPositions
              , s = o.sampleValues;
            return a[0] = r,
            s[0] = e,
            a[1] = r + t,
            s[1] = n,
            this
        }
    }),
    bp.prototype = Object.assign(Object.create(Wn.prototype), {
        constructor: bp,
        _bindAction: function(t, e) {
            var n = t._localRoot || this._root
              , i = t._clip.tracks
              , r = i.length
              , o = t._propertyBindings
              , a = t._interpolants
              , s = n.uuid
              , c = this._bindingsByRootAndName
              , l = c[s];
            void 0 === l && (l = {},
            c[s] = l);
            for (var u = 0; u !== r; ++u) {
                var d = i[u]
                  , p = d.name
                  , h = l[p];
                if (void 0 !== h)
                    o[u] = h;
                else {
                    if (void 0 !== (h = o[u])) {
                        null === h._cacheIndex && (++h.referenceCount,
                        this._addInactiveBinding(h, s, p));
                        continue
                    }
                    var f = e && e._propertyBindings[u].binding.parsedPath;
                    ++(h = new ap(gp.create(n, p, f),d.ValueTypeName,d.getValueSize())).referenceCount,
                    this._addInactiveBinding(h, s, p),
                    o[u] = h
                }
                a[u].resultBuffer = h.buffer
            }
        },
        _activateAction: function(t) {
            if (!this._isActiveAction(t)) {
                if (null === t._cacheIndex) {
                    var e = (t._localRoot || this._root).uuid
                      , n = t._clip.uuid
                      , i = this._actionsByClip[n];
                    this._bindAction(t, i && i.knownActions[0]),
                    this._addInactiveAction(t, n, e)
                }
                for (var r = t._propertyBindings, o = 0, a = r.length; o !== a; ++o) {
                    var s = r[o];
                    0 == s.useCount++ && (this._lendBinding(s),
                    s.saveOriginalState())
                }
                this._lendAction(t)
            }
        },
        _deactivateAction: function(t) {
            if (this._isActiveAction(t)) {
                for (var e = t._propertyBindings, n = 0, i = e.length; n !== i; ++n) {
                    var r = e[n];
                    0 == --r.useCount && (r.restoreOriginalState(),
                    this._takeBackBinding(r))
                }
                this._takeBackAction(t)
            }
        },
        _initMemoryManager: function() {
            this._actions = [],
            this._nActiveActions = 0,
            this._actionsByClip = {},
            this._bindings = [],
            this._nActiveBindings = 0,
            this._bindingsByRootAndName = {},
            this._controlInterpolants = [],
            this._nActiveControlInterpolants = 0;
            var t = this;
            this.stats = {
                actions: {
                    get total() {
                        return t._actions.length
                    },
                    get inUse() {
                        return t._nActiveActions
                    }
                },
                bindings: {
                    get total() {
                        return t._bindings.length
                    },
                    get inUse() {
                        return t._nActiveBindings
                    }
                },
                controlInterpolants: {
                    get total() {
                        return t._controlInterpolants.length
                    },
                    get inUse() {
                        return t._nActiveControlInterpolants
                    }
                }
            }
        },
        _isActiveAction: function(t) {
            var e = t._cacheIndex;
            return null !== e && e < this._nActiveActions
        },
        _addInactiveAction: function(t, e, n) {
            var i = this._actions
              , r = this._actionsByClip
              , o = r[e];
            if (void 0 === o)
                o = {
                    knownActions: [t],
                    actionByRoot: {}
                },
                t._byClipCacheIndex = 0,
                r[e] = o;
            else {
                var a = o.knownActions;
                t._byClipCacheIndex = a.length,
                a.push(t)
            }
            t._cacheIndex = i.length,
            i.push(t),
            o.actionByRoot[n] = t
        },
        _removeInactiveAction: function(t) {
            var e = this._actions
              , n = e[e.length - 1]
              , i = t._cacheIndex;
            n._cacheIndex = i,
            e[i] = n,
            e.pop(),
            t._cacheIndex = null;
            var r = t._clip.uuid
              , o = this._actionsByClip
              , a = o[r]
              , s = a.knownActions
              , c = s[s.length - 1]
              , l = t._byClipCacheIndex;
            c._byClipCacheIndex = l,
            s[l] = c,
            s.pop(),
            t._byClipCacheIndex = null,
            delete a.actionByRoot[(t._localRoot || this._root).uuid],
            0 === s.length && delete o[r],
            this._removeInactiveBindingsForAction(t)
        },
        _removeInactiveBindingsForAction: function(t) {
            for (var e = t._propertyBindings, n = 0, i = e.length; n !== i; ++n) {
                var r = e[n];
                0 == --r.referenceCount && this._removeInactiveBinding(r)
            }
        },
        _lendAction: function(t) {
            var e = this._actions
              , n = t._cacheIndex
              , i = this._nActiveActions++
              , r = e[i];
            t._cacheIndex = i,
            e[i] = t,
            r._cacheIndex = n,
            e[n] = r
        },
        _takeBackAction: function(t) {
            var e = this._actions
              , n = t._cacheIndex
              , i = --this._nActiveActions
              , r = e[i];
            t._cacheIndex = i,
            e[i] = t,
            r._cacheIndex = n,
            e[n] = r
        },
        _addInactiveBinding: function(t, e, n) {
            var i = this._bindingsByRootAndName
              , r = i[e]
              , o = this._bindings;
            void 0 === r && (r = {},
            i[e] = r),
            r[n] = t,
            t._cacheIndex = o.length,
            o.push(t)
        },
        _removeInactiveBinding: function(t) {
            var e = this._bindings
              , n = t.binding
              , i = n.rootNode.uuid
              , r = n.path
              , o = this._bindingsByRootAndName
              , a = o[i]
              , s = e[e.length - 1]
              , c = t._cacheIndex;
            s._cacheIndex = c,
            e[c] = s,
            e.pop(),
            delete a[r],
            0 === Object.keys(a).length && delete o[i]
        },
        _lendBinding: function(t) {
            var e = this._bindings
              , n = t._cacheIndex
              , i = this._nActiveBindings++
              , r = e[i];
            t._cacheIndex = i,
            e[i] = t,
            r._cacheIndex = n,
            e[n] = r
        },
        _takeBackBinding: function(t) {
            var e = this._bindings
              , n = t._cacheIndex
              , i = --this._nActiveBindings
              , r = e[i];
            t._cacheIndex = i,
            e[i] = t,
            r._cacheIndex = n,
            e[n] = r
        },
        _lendControlInterpolant: function() {
            var t = this._controlInterpolants
              , e = this._nActiveControlInterpolants++
              , n = t[e];
            return void 0 === n && ((n = new vu(new Float32Array(2),new Float32Array(2),1,this._controlInterpolantsResultBuffer)).__cacheIndex = e,
            t[e] = n),
            n
        },
        _takeBackControlInterpolant: function(t) {
            var e = this._controlInterpolants
              , n = t.__cacheIndex
              , i = --this._nActiveControlInterpolants
              , r = e[i];
            t.__cacheIndex = i,
            e[i] = t,
            r.__cacheIndex = n,
            e[n] = r
        },
        _controlInterpolantsResultBuffer: new Float32Array(1),
        clipAction: function(t, e) {
            var n = e || this._root
              , i = n.uuid
              , r = "string" == typeof t ? Tu.findByName(n, t) : t
              , o = null !== r ? r.uuid : t
              , a = this._actionsByClip[o]
              , s = null;
            if (void 0 !== a) {
                var c = a.actionByRoot[i];
                if (void 0 !== c)
                    return c;
                s = a.knownActions[0],
                null === r && (r = s._clip)
            }
            if (null === r)
                return null;
            var l = new yp(this,r,e);
            return this._bindAction(l, s),
            this._addInactiveAction(l, o, i),
            l
        },
        existingAction: function(t, e) {
            var n = e || this._root
              , i = n.uuid
              , r = "string" == typeof t ? Tu.findByName(n, t) : t
              , o = r ? r.uuid : t
              , a = this._actionsByClip[o];
            return void 0 !== a && a.actionByRoot[i] || null
        },
        stopAllAction: function() {
            var t = this._actions
              , e = this._nActiveActions
              , n = this._bindings
              , i = this._nActiveBindings;
            this._nActiveActions = 0,
            this._nActiveBindings = 0;
            for (var r = 0; r !== e; ++r)
                t[r].reset();
            for (r = 0; r !== i; ++r)
                n[r].useCount = 0;
            return this
        },
        update: function(t) {
            t *= this.timeScale;
            for (var e = this._actions, n = this._nActiveActions, i = this.time += t, r = Math.sign(t), o = this._accuIndex ^= 1, a = 0; a !== n; ++a) {
                e[a]._update(i, t, r, o)
            }
            var s = this._bindings
              , c = this._nActiveBindings;
            for (a = 0; a !== c; ++a)
                s[a].apply(o);
            return this
        },
        setTime: function(t) {
            this.time = 0;
            for (var e = 0; e < this._actions.length; e++)
                this._actions[e].time = 0;
            return this.update(t)
        },
        getRoot: function() {
            return this._root
        },
        uncacheClip: function(t) {
            var e = this._actions
              , n = t.uuid
              , i = this._actionsByClip
              , r = i[n];
            if (void 0 !== r) {
                for (var o = r.knownActions, a = 0, s = o.length; a !== s; ++a) {
                    var c = o[a];
                    this._deactivateAction(c);
                    var l = c._cacheIndex
                      , u = e[e.length - 1];
                    c._cacheIndex = null,
                    c._byClipCacheIndex = null,
                    u._cacheIndex = l,
                    e[l] = u,
                    e.pop(),
                    this._removeInactiveBindingsForAction(c)
                }
                delete i[n]
            }
        },
        uncacheRoot: function(t) {
            var e = t.uuid
              , n = this._actionsByClip;
            for (var i in n) {
                var r = n[i].actionByRoot[e];
                void 0 !== r && (this._deactivateAction(r),
                this._removeInactiveAction(r))
            }
            var o = this._bindingsByRootAndName[e];
            if (void 0 !== o)
                for (var a in o) {
                    var s = o[a];
                    s.restoreOriginalState(),
                    this._removeInactiveBinding(s)
                }
        },
        uncacheAction: function(t, e) {
            var n = this.existingAction(t, e);
            null !== n && (this._deactivateAction(n),
            this._removeInactiveAction(n))
        }
    }),
    wp.prototype.clone = function() {
        return new wp(void 0 === this.value.clone ? this.value : this.value.clone())
    }
    ,
    Sp.prototype = Object.assign(Object.create(Hs.prototype), {
        constructor: Sp,
        isInstancedInterleavedBuffer: !0,
        copy: function(t) {
            return Hs.prototype.copy.call(this, t),
            this.meshPerAttribute = t.meshPerAttribute,
            this
        }
    }),
    Object.assign(xp.prototype, {
        set: function(t, e) {
            this.ray.set(t, e)
        },
        setFromCamera: function(t, e) {
            e && e.isPerspectiveCamera ? (this.ray.origin.setFromMatrixPosition(e.matrixWorld),
            this.ray.direction.set(t.x, t.y, .5).unproject(e).sub(this.ray.origin).normalize(),
            this.camera = e) : e && e.isOrthographicCamera ? (this.ray.origin.set(t.x, t.y, (e.near + e.far) / (e.near - e.far)).unproject(e),
            this.ray.direction.set(0, 0, -1).transformDirection(e.matrixWorld),
            this.camera = e) : console.error("THREE.Raycaster: Unsupported camera type.")
        },
        intersectObject: function(t, e, n) {
            var i = n || [];
            return Ep(t, this, i, e),
            i.sort(Mp),
            i
        },
        intersectObjects: function(t, e, n) {
            var i = n || [];
            if (!1 === Array.isArray(t))
                return console.warn("THREE.Raycaster.intersectObjects: objects is not an Array."),
                i;
            for (var r = 0, o = t.length; r < o; r++)
                Ep(t[r], this, i, e);
            return i.sort(Mp),
            i
        }
    }),
    Object.assign(Cp.prototype, {
        set: function(t, e, n) {
            return this.radius = t,
            this.phi = e,
            this.theta = n,
            this
        },
        clone: function() {
            return (new this.constructor).copy(this)
        },
        copy: function(t) {
            return this.radius = t.radius,
            this.phi = t.phi,
            this.theta = t.theta,
            this
        },
        makeSafe: function() {
            return this.phi = Math.max(1e-6, Math.min(Math.PI - 1e-6, this.phi)),
            this
        },
        setFromVector3: function(t) {
            return this.setFromCartesianCoords(t.x, t.y, t.z)
        },
        setFromCartesianCoords: function(t, e, n) {
            return this.radius = Math.sqrt(t * t + e * e + n * n),
            0 === this.radius ? (this.theta = 0,
            this.phi = 0) : (this.theta = Math.atan2(t, n),
            this.phi = Math.acos(Kn.clamp(e / this.radius, -1, 1))),
            this
        }
    }),
    Object.assign(Ap.prototype, {
        set: function(t, e, n) {
            return this.radius = t,
            this.theta = e,
            this.y = n,
            this
        },
        clone: function() {
            return (new this.constructor).copy(this)
        },
        copy: function(t) {
            return this.radius = t.radius,
            this.theta = t.theta,
            this.y = t.y,
            this
        },
        setFromVector3: function(t) {
            return this.setFromCartesianCoords(t.x, t.y, t.z)
        },
        setFromCartesianCoords: function(t, e, n) {
            return this.radius = Math.sqrt(t * t + n * n),
            this.theta = Math.atan2(t, n),
            this.y = e,
            this
        }
    });
    var Tp = new Zn;
    function Op(t, e) {
        this.min = void 0 !== t ? t : new Zn(1 / 0,1 / 0),
        this.max = void 0 !== e ? e : new Zn(-1 / 0,-1 / 0)
    }
    Object.assign(Op.prototype, {
        set: function(t, e) {
            return this.min.copy(t),
            this.max.copy(e),
            this
        },
        setFromPoints: function(t) {
            this.makeEmpty();
            for (var e = 0, n = t.length; e < n; e++)
                this.expandByPoint(t[e]);
            return this
        },
        setFromCenterAndSize: function(t, e) {
            var n = Tp.copy(e).multiplyScalar(.5);
            return this.min.copy(t).sub(n),
            this.max.copy(t).add(n),
            this
        },
        clone: function() {
            return (new this.constructor).copy(this)
        },
        copy: function(t) {
            return this.min.copy(t.min),
            this.max.copy(t.max),
            this
        },
        makeEmpty: function() {
            return this.min.x = this.min.y = 1 / 0,
            this.max.x = this.max.y = -1 / 0,
            this
        },
        isEmpty: function() {
            return this.max.x < this.min.x || this.max.y < this.min.y
        },
        getCenter: function(t) {
            return void 0 === t && (console.warn("THREE.Box2: .getCenter() target is now required"),
            t = new Zn),
            this.isEmpty() ? t.set(0, 0) : t.addVectors(this.min, this.max).multiplyScalar(.5)
        },
        getSize: function(t) {
            return void 0 === t && (console.warn("THREE.Box2: .getSize() target is now required"),
            t = new Zn),
            this.isEmpty() ? t.set(0, 0) : t.subVectors(this.max, this.min)
        },
        expandByPoint: function(t) {
            return this.min.min(t),
            this.max.max(t),
            this
        },
        expandByVector: function(t) {
            return this.min.sub(t),
            this.max.add(t),
            this
        },
        expandByScalar: function(t) {
            return this.min.addScalar(-t),
            this.max.addScalar(t),
            this
        },
        containsPoint: function(t) {
            return !(t.x < this.min.x || t.x > this.max.x || t.y < this.min.y || t.y > this.max.y)
        },
        containsBox: function(t) {
            return this.min.x <= t.min.x && t.max.x <= this.max.x && this.min.y <= t.min.y && t.max.y <= this.max.y
        },
        getParameter: function(t, e) {
            return void 0 === e && (console.warn("THREE.Box2: .getParameter() target is now required"),
            e = new Zn),
            e.set((t.x - this.min.x) / (this.max.x - this.min.x), (t.y - this.min.y) / (this.max.y - this.min.y))
        },
        intersectsBox: function(t) {
            return !(t.max.x < this.min.x || t.min.x > this.max.x || t.max.y < this.min.y || t.min.y > this.max.y)
        },
        clampPoint: function(t, e) {
            return void 0 === e && (console.warn("THREE.Box2: .clampPoint() target is now required"),
            e = new Zn),
            e.copy(t).clamp(this.min, this.max)
        },
        distanceToPoint: function(t) {
            return Tp.copy(t).clamp(this.min, this.max).sub(t).length()
        },
        intersect: function(t) {
            return this.min.max(t.min),
            this.max.min(t.max),
            this
        },
        union: function(t) {
            return this.min.min(t.min),
            this.max.max(t.max),
            this
        },
        translate: function(t) {
            return this.min.add(t),
            this.max.add(t),
            this
        },
        equals: function(t) {
            return t.min.equals(this.min) && t.max.equals(this.max)
        }
    });
    var _p = new si
      , Pp = new si;
    function Ip(t, e) {
        this.start = void 0 !== t ? t : new si,
        this.end = void 0 !== e ? e : new si
    }
    function kp(t) {
        Di.call(this),
        this.material = t,
        this.render = function() {}
    }
    Object.assign(Ip.prototype, {
        set: function(t, e) {
            return this.start.copy(t),
            this.end.copy(e),
            this
        },
        clone: function() {
            return (new this.constructor).copy(this)
        },
        copy: function(t) {
            return this.start.copy(t.start),
            this.end.copy(t.end),
            this
        },
        getCenter: function(t) {
            return void 0 === t && (console.warn("THREE.Line3: .getCenter() target is now required"),
            t = new si),
            t.addVectors(this.start, this.end).multiplyScalar(.5)
        },
        delta: function(t) {
            return void 0 === t && (console.warn("THREE.Line3: .delta() target is now required"),
            t = new si),
            t.subVectors(this.end, this.start)
        },
        distanceSq: function() {
            return this.start.distanceToSquared(this.end)
        },
        distance: function() {
            return this.start.distanceTo(this.end)
        },
        at: function(t, e) {
            return void 0 === e && (console.warn("THREE.Line3: .at() target is now required"),
            e = new si),
            this.delta(e).multiplyScalar(t).add(this.start)
        },
        closestPointToPointParameter: function(t, e) {
            _p.subVectors(t, this.start),
            Pp.subVectors(this.end, this.start);
            var n = Pp.dot(Pp)
              , i = Pp.dot(_p) / n;
            return e && (i = Kn.clamp(i, 0, 1)),
            i
        },
        closestPointToPoint: function(t, e, n) {
            var i = this.closestPointToPointParameter(t, e);
            return void 0 === n && (console.warn("THREE.Line3: .closestPointToPoint() target is now required"),
            n = new si),
            this.delta(n).multiplyScalar(i).add(this.start)
        },
        applyMatrix4: function(t) {
            return this.start.applyMatrix4(t),
            this.end.applyMatrix4(t),
            this
        },
        equals: function(t) {
            return t.start.equals(this.start) && t.end.equals(this.end)
        }
    }),
    kp.prototype = Object.create(Di.prototype),
    kp.prototype.constructor = kp,
    kp.prototype.isImmediateRenderObject = !0;
    var Dp = new si;
    function Rp(t, e) {
        Di.call(this),
        this.light = t,
        this.light.updateMatrixWorld(),
        this.matrix = t.matrixWorld,
        this.matrixAutoUpdate = !1,
        this.color = e;
        for (var n = new Qr, i = [0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, -1, 1], r = 0, o = 1; r < 32; r++,
        o++) {
            var a = r / 32 * Math.PI * 2
              , s = o / 32 * Math.PI * 2;
            i.push(Math.cos(a), Math.sin(a), 1, Math.cos(s), Math.sin(s), 1)
        }
        n.setAttribute("position", new Br(i,3));
        var c = new xc({
            fog: !1,
            toneMapped: !1
        });
        this.cone = new Ic(n,c),
        this.add(this.cone),
        this.update()
    }
    Rp.prototype = Object.create(Di.prototype),
    Rp.prototype.constructor = Rp,
    Rp.prototype.dispose = function() {
        this.cone.geometry.dispose(),
        this.cone.material.dispose()
    }
    ,
    Rp.prototype.update = function() {
        this.light.updateMatrixWorld();
        var t = this.light.distance ? this.light.distance : 1e3
          , e = t * Math.tan(this.light.angle);
        this.cone.scale.set(e, e, t),
        Dp.setFromMatrixPosition(this.light.target.matrixWorld),
        this.cone.lookAt(Dp),
        void 0 !== this.color ? this.cone.material.color.set(this.color) : this.cone.material.color.copy(this.light.color)
    }
    ;
    var Lp = new si
      , Np = new mi
      , jp = new mi;
    function Vp(t) {
        for (var e = function t(e) {
            var n = [];
            e && e.isBone && n.push(e);
            for (var i = 0; i < e.children.length; i++)
                n.push.apply(n, t(e.children[i]));
            return n
        }(t), n = new Qr, i = [], r = [], o = new Er(0,0,1), a = new Er(0,1,0), s = 0; s < e.length; s++) {
            var c = e[s];
            c.parent && c.parent.isBone && (i.push(0, 0, 0),
            i.push(0, 0, 0),
            r.push(o.r, o.g, o.b),
            r.push(a.r, a.g, a.b))
        }
        n.setAttribute("position", new Br(i,3)),
        n.setAttribute("color", new Br(r,3));
        var l = new xc({
            vertexColors: !0,
            depthTest: !1,
            depthWrite: !1,
            toneMapped: !1,
            transparent: !0
        });
        Ic.call(this, n, l),
        this.root = t,
        this.bones = e,
        this.matrix = t.matrixWorld,
        this.matrixAutoUpdate = !1
    }
    function Fp(t, e, n) {
        this.light = t,
        this.light.updateMatrixWorld(),
        this.color = n;
        var i = new Bl(e,4,2)
          , r = new Ir({
            wireframe: !0,
            fog: !1,
            toneMapped: !1
        });
        vo.call(this, i, r),
        this.matrix = this.light.matrixWorld,
        this.matrixAutoUpdate = !1,
        this.update()
    }
    Vp.prototype = Object.create(Ic.prototype),
    Vp.prototype.constructor = Vp,
    Vp.prototype.isSkeletonHelper = !0,
    Vp.prototype.updateMatrixWorld = function(t) {
        var e = this.bones
          , n = this.geometry
          , i = n.getAttribute("position");
        jp.getInverse(this.root.matrixWorld);
        for (var r = 0, o = 0; r < e.length; r++) {
            var a = e[r];
            a.parent && a.parent.isBone && (Np.multiplyMatrices(jp, a.matrixWorld),
            Lp.setFromMatrixPosition(Np),
            i.setXYZ(o, Lp.x, Lp.y, Lp.z),
            Np.multiplyMatrices(jp, a.parent.matrixWorld),
            Lp.setFromMatrixPosition(Np),
            i.setXYZ(o + 1, Lp.x, Lp.y, Lp.z),
            o += 2)
        }
        n.getAttribute("position").needsUpdate = !0,
        Di.prototype.updateMatrixWorld.call(this, t)
    }
    ,
    Fp.prototype = Object.create(vo.prototype),
    Fp.prototype.constructor = Fp,
    Fp.prototype.dispose = function() {
        this.geometry.dispose(),
        this.material.dispose()
    }
    ,
    Fp.prototype.update = function() {
        void 0 !== this.color ? this.material.color.set(this.color) : this.material.color.copy(this.light.color)
    }
    ;
    var Up = new si
      , Bp = new Er
      , zp = new Er;
    function Gp(t, e, n) {
        Di.call(this),
        this.light = t,
        this.light.updateMatrixWorld(),
        this.matrix = t.matrixWorld,
        this.matrixAutoUpdate = !1,
        this.color = n;
        var i = new Qc(e);
        i.rotateY(.5 * Math.PI),
        this.material = new Ir({
            wireframe: !0,
            fog: !1,
            toneMapped: !1
        }),
        void 0 === this.color && (this.material.vertexColors = !0);
        var r = i.getAttribute("position")
          , o = new Float32Array(3 * r.count);
        i.setAttribute("color", new Dr(o,3)),
        this.add(new vo(i,this.material)),
        this.update()
    }
    function Hp(t, e, n, i) {
        t = t || 10,
        e = e || 10,
        n = new Er(void 0 !== n ? n : 4473924),
        i = new Er(void 0 !== i ? i : 8947848);
        for (var r = e / 2, o = t / e, a = t / 2, s = [], c = [], l = 0, u = 0, d = -a; l <= e; l++,
        d += o) {
            s.push(-a, 0, d, a, 0, d),
            s.push(d, 0, -a, d, 0, a);
            var p = l === r ? n : i;
            p.toArray(c, u),
            u += 3,
            p.toArray(c, u),
            u += 3,
            p.toArray(c, u),
            u += 3,
            p.toArray(c, u),
            u += 3
        }
        var h = new Qr;
        h.setAttribute("position", new Br(s,3)),
        h.setAttribute("color", new Br(c,3));
        var f = new xc({
            vertexColors: !0,
            toneMapped: !1
        });
        Ic.call(this, h, f)
    }
    function Wp(t, e, n, i, r, o) {
        t = t || 10,
        e = e || 16,
        n = n || 8,
        i = i || 64,
        r = new Er(void 0 !== r ? r : 4473924),
        o = new Er(void 0 !== o ? o : 8947848);
        var a, s, c, l, u, d, p, h = [], f = [];
        for (l = 0; l <= e; l++)
            c = l / e * (2 * Math.PI),
            a = Math.sin(c) * t,
            s = Math.cos(c) * t,
            h.push(0, 0, 0),
            h.push(a, 0, s),
            p = 1 & l ? r : o,
            f.push(p.r, p.g, p.b),
            f.push(p.r, p.g, p.b);
        for (l = 0; l <= n; l++)
            for (p = 1 & l ? r : o,
            d = t - t / n * l,
            u = 0; u < i; u++)
                c = u / i * (2 * Math.PI),
                a = Math.sin(c) * d,
                s = Math.cos(c) * d,
                h.push(a, 0, s),
                f.push(p.r, p.g, p.b),
                c = (u + 1) / i * (2 * Math.PI),
                a = Math.sin(c) * d,
                s = Math.cos(c) * d,
                h.push(a, 0, s),
                f.push(p.r, p.g, p.b);
        var m = new Qr;
        m.setAttribute("position", new Br(h,3)),
        m.setAttribute("color", new Br(f,3));
        var g = new xc({
            vertexColors: !0,
            toneMapped: !1
        });
        Ic.call(this, m, g)
    }
    Gp.prototype = Object.create(Di.prototype),
    Gp.prototype.constructor = Gp,
    Gp.prototype.dispose = function() {
        this.children[0].geometry.dispose(),
        this.children[0].material.dispose()
    }
    ,
    Gp.prototype.update = function() {
        var t = this.children[0];
        if (void 0 !== this.color)
            this.material.color.set(this.color);
        else {
            var e = t.geometry.getAttribute("color");
            Bp.copy(this.light.color),
            zp.copy(this.light.groundColor);
            for (var n = 0, i = e.count; n < i; n++) {
                var r = n < i / 2 ? Bp : zp;
                e.setXYZ(n, r.r, r.g, r.b)
            }
            e.needsUpdate = !0
        }
        t.lookAt(Up.setFromMatrixPosition(this.light.matrixWorld).negate())
    }
    ,
    Hp.prototype = Object.assign(Object.create(Ic.prototype), {
        constructor: Hp,
        copy: function(t) {
            return Ic.prototype.copy.call(this, t),
            this.geometry.copy(t.geometry),
            this.material.copy(t.material),
            this
        },
        clone: function() {
            return (new this.constructor).copy(this)
        }
    }),
    Wp.prototype = Object.create(Ic.prototype),
    Wp.prototype.constructor = Wp;
    var qp = new si
      , Xp = new si
      , Yp = new si;
    function Kp(t, e, n) {
        Di.call(this),
        this.light = t,
        this.light.updateMatrixWorld(),
        this.matrix = t.matrixWorld,
        this.matrixAutoUpdate = !1,
        this.color = n,
        void 0 === e && (e = 1);
        var i = new Qr;
        i.setAttribute("position", new Br([-e, e, 0, e, e, 0, e, -e, 0, -e, -e, 0, -e, e, 0],3));
        var r = new xc({
            fog: !1,
            toneMapped: !1
        });
        this.lightPlane = new Oc(i,r),
        this.add(this.lightPlane),
        (i = new Qr).setAttribute("position", new Br([0, 0, 0, 0, 0, 1],3)),
        this.targetLine = new Oc(i,r),
        this.add(this.targetLine),
        this.update()
    }
    Kp.prototype = Object.create(Di.prototype),
    Kp.prototype.constructor = Kp,
    Kp.prototype.dispose = function() {
        this.lightPlane.geometry.dispose(),
        this.lightPlane.material.dispose(),
        this.targetLine.geometry.dispose(),
        this.targetLine.material.dispose()
    }
    ,
    Kp.prototype.update = function() {
        qp.setFromMatrixPosition(this.light.matrixWorld),
        Xp.setFromMatrixPosition(this.light.target.matrixWorld),
        Yp.subVectors(Xp, qp),
        this.lightPlane.lookAt(Xp),
        void 0 !== this.color ? (this.lightPlane.material.color.set(this.color),
        this.targetLine.material.color.set(this.color)) : (this.lightPlane.material.color.copy(this.light.color),
        this.targetLine.material.color.copy(this.light.color)),
        this.targetLine.lookAt(Xp),
        this.targetLine.scale.z = Yp.length()
    }
    ;
    var Zp = new si
      , Jp = new Io;
    function Qp(t) {
        var e = new Qr
          , n = new xc({
            color: 16777215,
            vertexColors: !0,
            toneMapped: !1
        })
          , i = []
          , r = []
          , o = {}
          , a = new Er(16755200)
          , s = new Er(16711680)
          , c = new Er(43775)
          , l = new Er(16777215)
          , u = new Er(3355443);
        function d(t, e, n) {
            p(t, n),
            p(e, n)
        }
        function p(t, e) {
            i.push(0, 0, 0),
            r.push(e.r, e.g, e.b),
            void 0 === o[t] && (o[t] = []),
            o[t].push(i.length / 3 - 1)
        }
        d("n1", "n2", a),
        d("n2", "n4", a),
        d("n4", "n3", a),
        d("n3", "n1", a),
        d("f1", "f2", a),
        d("f2", "f4", a),
        d("f4", "f3", a),
        d("f3", "f1", a),
        d("n1", "f1", a),
        d("n2", "f2", a),
        d("n3", "f3", a),
        d("n4", "f4", a),
        d("p", "n1", s),
        d("p", "n2", s),
        d("p", "n3", s),
        d("p", "n4", s),
        d("u1", "u2", c),
        d("u2", "u3", c),
        d("u3", "u1", c),
        d("c", "t", l),
        d("p", "c", u),
        d("cn1", "cn2", u),
        d("cn3", "cn4", u),
        d("cf1", "cf2", u),
        d("cf3", "cf4", u),
        e.setAttribute("position", new Br(i,3)),
        e.setAttribute("color", new Br(r,3)),
        Ic.call(this, e, n),
        this.camera = t,
        this.camera.updateProjectionMatrix && this.camera.updateProjectionMatrix(),
        this.matrix = t.matrixWorld,
        this.matrixAutoUpdate = !1,
        this.pointMap = o,
        this.update()
    }
    function $p(t, e, n, i, r, o, a) {
        Zp.set(r, o, a).unproject(i);
        var s = e[t];
        if (void 0 !== s)
            for (var c = n.getAttribute("position"), l = 0, u = s.length; l < u; l++)
                c.setXYZ(s[l], Zp.x, Zp.y, Zp.z)
    }
    Qp.prototype = Object.create(Ic.prototype),
    Qp.prototype.constructor = Qp,
    Qp.prototype.update = function() {
        var t = this.geometry
          , e = this.pointMap;
        Jp.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),
        $p("c", e, t, Jp, 0, 0, -1),
        $p("t", e, t, Jp, 0, 0, 1),
        $p("n1", e, t, Jp, -1, -1, -1),
        $p("n2", e, t, Jp, 1, -1, -1),
        $p("n3", e, t, Jp, -1, 1, -1),
        $p("n4", e, t, Jp, 1, 1, -1),
        $p("f1", e, t, Jp, -1, -1, 1),
        $p("f2", e, t, Jp, 1, -1, 1),
        $p("f3", e, t, Jp, -1, 1, 1),
        $p("f4", e, t, Jp, 1, 1, 1),
        $p("u1", e, t, Jp, .7, 1.1, -1),
        $p("u2", e, t, Jp, -.7, 1.1, -1),
        $p("u3", e, t, Jp, 0, 2, -1),
        $p("cf1", e, t, Jp, -1, 0, 1),
        $p("cf2", e, t, Jp, 1, 0, 1),
        $p("cf3", e, t, Jp, 0, -1, 1),
        $p("cf4", e, t, Jp, 0, 1, 1),
        $p("cn1", e, t, Jp, -1, 0, -1),
        $p("cn2", e, t, Jp, 1, 0, -1),
        $p("cn3", e, t, Jp, 0, -1, -1),
        $p("cn4", e, t, Jp, 0, 1, -1),
        t.getAttribute("position").needsUpdate = !0
    }
    ;
    var th = new Yi;
    function eh(t, e) {
        this.object = t,
        void 0 === e && (e = 16776960);
        var n = new Uint16Array([0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7])
          , i = new Float32Array(24)
          , r = new Qr;
        r.setIndex(new Dr(n,1)),
        r.setAttribute("position", new Dr(i,3)),
        Ic.call(this, r, new xc({
            color: e,
            toneMapped: !1
        })),
        this.matrixAutoUpdate = !1,
        this.update()
    }
    function nh(t, e) {
        this.type = "Box3Helper",
        this.box = t,
        e = e || 16776960;
        var n = new Uint16Array([0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7])
          , i = new Qr;
        i.setIndex(new Dr(n,1)),
        i.setAttribute("position", new Br([1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1],3)),
        Ic.call(this, i, new xc({
            color: e,
            toneMapped: !1
        })),
        this.geometry.computeBoundingSphere()
    }
    function ih(t, e, n) {
        this.type = "PlaneHelper",
        this.plane = t,
        this.size = void 0 === e ? 1 : e;
        var i = void 0 !== n ? n : 16776960
          , r = new Qr;
        r.setAttribute("position", new Br([1, -1, 1, -1, 1, 1, -1, -1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0],3)),
        r.computeBoundingSphere(),
        Oc.call(this, r, new xc({
            color: i,
            toneMapped: !1
        }));
        var o = new Qr;
        o.setAttribute("position", new Br([1, 1, 1, -1, 1, 1, -1, -1, 1, 1, 1, 1, -1, -1, 1, 1, -1, 1],3)),
        o.computeBoundingSphere(),
        this.add(new vo(o,new Ir({
            color: i,
            opacity: .2,
            transparent: !0,
            depthWrite: !1,
            toneMapped: !1
        })))
    }
    eh.prototype = Object.create(Ic.prototype),
    eh.prototype.constructor = eh,
    eh.prototype.update = function(t) {
        if (void 0 !== t && console.warn("THREE.BoxHelper: .update() has no longer arguments."),
        void 0 !== this.object && th.setFromObject(this.object),
        !th.isEmpty()) {
            var e = th.min
              , n = th.max
              , i = this.geometry.attributes.position
              , r = i.array;
            r[0] = n.x,
            r[1] = n.y,
            r[2] = n.z,
            r[3] = e.x,
            r[4] = n.y,
            r[5] = n.z,
            r[6] = e.x,
            r[7] = e.y,
            r[8] = n.z,
            r[9] = n.x,
            r[10] = e.y,
            r[11] = n.z,
            r[12] = n.x,
            r[13] = n.y,
            r[14] = e.z,
            r[15] = e.x,
            r[16] = n.y,
            r[17] = e.z,
            r[18] = e.x,
            r[19] = e.y,
            r[20] = e.z,
            r[21] = n.x,
            r[22] = e.y,
            r[23] = e.z,
            i.needsUpdate = !0,
            this.geometry.computeBoundingSphere()
        }
    }
    ,
    eh.prototype.setFromObject = function(t) {
        return this.object = t,
        this.update(),
        this
    }
    ,
    eh.prototype.copy = function(t) {
        return Ic.prototype.copy.call(this, t),
        this.object = t.object,
        this
    }
    ,
    eh.prototype.clone = function() {
        return (new this.constructor).copy(this)
    }
    ,
    nh.prototype = Object.create(Ic.prototype),
    nh.prototype.constructor = nh,
    nh.prototype.updateMatrixWorld = function(t) {
        var e = this.box;
        e.isEmpty() || (e.getCenter(this.position),
        e.getSize(this.scale),
        this.scale.multiplyScalar(.5),
        Di.prototype.updateMatrixWorld.call(this, t))
    }
    ,
    ih.prototype = Object.create(Oc.prototype),
    ih.prototype.constructor = ih,
    ih.prototype.updateMatrixWorld = function(t) {
        var e = -this.plane.constant;
        Math.abs(e) < 1e-8 && (e = 1e-8),
        this.scale.set(.5 * this.size, .5 * this.size, e),
        this.children[0].material.side = e < 0 ? T : A,
        this.lookAt(this.plane.normal),
        Di.prototype.updateMatrixWorld.call(this, t)
    }
    ;
    var rh, oh, ah = new si;
    function sh(t, e, n, i, r, o) {
        Di.call(this),
        void 0 === t && (t = new si(0,0,1)),
        void 0 === e && (e = new si(0,0,0)),
        void 0 === n && (n = 1),
        void 0 === i && (i = 16776960),
        void 0 === r && (r = .2 * n),
        void 0 === o && (o = .2 * r),
        void 0 === rh && ((rh = new Qr).setAttribute("position", new Br([0, 0, 0, 0, 1, 0],3)),
        (oh = new Jl(0,.5,1,5,1)).translate(0, -.5, 0)),
        this.position.copy(e),
        this.line = new Oc(rh,new xc({
            color: i,
            toneMapped: !1
        })),
        this.line.matrixAutoUpdate = !1,
        this.add(this.line),
        this.cone = new vo(oh,new Ir({
            color: i,
            toneMapped: !1
        })),
        this.cone.matrixAutoUpdate = !1,
        this.add(this.cone),
        this.setDirection(t),
        this.setLength(n, r, o)
    }
    function ch(t) {
        var e = [0, 0, 0, t = t || 1, 0, 0, 0, 0, 0, 0, t, 0, 0, 0, 0, 0, 0, t]
          , n = new Qr;
        n.setAttribute("position", new Br(e,3)),
        n.setAttribute("color", new Br([1, 0, 0, 1, .6, 0, 0, 1, 0, .6, 1, 0, 0, 0, 1, 0, .6, 1],3));
        var i = new xc({
            vertexColors: !0,
            toneMapped: !1
        });
        Ic.call(this, n, i)
    }
    sh.prototype = Object.create(Di.prototype),
    sh.prototype.constructor = sh,
    sh.prototype.setDirection = function(t) {
        if (t.y > .99999)
            this.quaternion.set(0, 0, 0, 1);
        else if (t.y < -.99999)
            this.quaternion.set(1, 0, 0, 0);
        else {
            ah.set(t.z, 0, -t.x).normalize();
            var e = Math.acos(t.y);
            this.quaternion.setFromAxisAngle(ah, e)
        }
    }
    ,
    sh.prototype.setLength = function(t, e, n) {
        void 0 === e && (e = .2 * t),
        void 0 === n && (n = .2 * e),
        this.line.scale.set(1, Math.max(1e-4, t - e), 1),
        this.line.updateMatrix(),
        this.cone.scale.set(n, e, n),
        this.cone.position.y = t,
        this.cone.updateMatrix()
    }
    ,
    sh.prototype.setColor = function(t) {
        this.line.material.color.set(t),
        this.cone.material.color.set(t)
    }
    ,
    sh.prototype.copy = function(t) {
        return Di.prototype.copy.call(this, t, !1),
        this.line.copy(t.line),
        this.cone.copy(t.cone),
        this
    }
    ,
    sh.prototype.clone = function() {
        return (new this.constructor).copy(this)
    }
    ,
    ch.prototype = Object.create(Ic.prototype),
    ch.prototype.constructor = ch;
    var lh, uh, dh, ph, hh = Math.pow(2, 8), fh = [.125, .215, .35, .446, .526, .582], mh = 5 + fh.length, gh = (r(i = {}, cn, 0),
    r(i, ln, 1),
    r(i, dn, 2),
    r(i, hn, 3),
    r(i, fn, 4),
    r(i, mn, 5),
    r(i, un, 6),
    i), vh = new vd, yh = (lh = 20,
    uh = new Float32Array(lh),
    dh = new si(0,1,0),
    (ph = new ru({
        defines: {
            n: lh
        },
        uniforms: {
            envMap: {
                value: null
            },
            samples: {
                value: 1
            },
            weights: {
                value: uh
            },
            latitudinal: {
                value: !1
            },
            dTheta: {
                value: 0
            },
            mipInt: {
                value: 0
            },
            poleAxis: {
                value: dh
            },
            inputEncoding: {
                value: gh[cn]
            },
            outputEncoding: {
                value: gh[cn]
            }
        },
        vertexShader: "\nprecision mediump float;\nprecision mediump int;\nattribute vec3 position;\nattribute vec2 uv;\nattribute float faceIndex;\nvarying vec3 vOutputDirection;\nvec3 getDirection(vec2 uv, float face) {\n\tuv = 2.0 * uv - 1.0;\n\tvec3 direction = vec3(uv, 1.0);\n\tif (face == 0.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.z *= -1.0;\n\t} else if (face == 1.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.z *= -1.0;\n\t} else if (face == 3.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.x *= -1.0;\n\t} else if (face == 4.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.y *= -1.0;\n\t} else if (face == 5.0) {\n\t\tdirection.xz *= -1.0;\n\t}\n\treturn direction;\n}\nvoid main() {\n\tvOutputDirection = getDirection(uv, faceIndex);\n\tgl_Position = vec4( position, 1.0 );\n}\n\t",
        fragmentShader: "\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform int samples;\nuniform float weights[n];\nuniform bool latitudinal;\nuniform float dTheta;\nuniform float mipInt;\nuniform vec3 poleAxis;\n\n".concat("\nuniform int inputEncoding;\nuniform int outputEncoding;\n\n#include <encodings_pars_fragment>\n\nvec4 inputTexelToLinear(vec4 value){\n\tif(inputEncoding == 0){\n\t\treturn value;\n\t}else if(inputEncoding == 1){\n\t\treturn sRGBToLinear(value);\n\t}else if(inputEncoding == 2){\n\t\treturn RGBEToLinear(value);\n\t}else if(inputEncoding == 3){\n\t\treturn RGBMToLinear(value, 7.0);\n\t}else if(inputEncoding == 4){\n\t\treturn RGBMToLinear(value, 16.0);\n\t}else if(inputEncoding == 5){\n\t\treturn RGBDToLinear(value, 256.0);\n\t}else{\n\t\treturn GammaToLinear(value, 2.2);\n\t}\n}\n\nvec4 linearToOutputTexel(vec4 value){\n\tif(outputEncoding == 0){\n\t\treturn value;\n\t}else if(outputEncoding == 1){\n\t\treturn LinearTosRGB(value);\n\t}else if(outputEncoding == 2){\n\t\treturn LinearToRGBE(value);\n\t}else if(outputEncoding == 3){\n\t\treturn LinearToRGBM(value, 7.0);\n\t}else if(outputEncoding == 4){\n\t\treturn LinearToRGBM(value, 16.0);\n\t}else if(outputEncoding == 5){\n\t\treturn LinearToRGBD(value, 256.0);\n\t}else{\n\t\treturn LinearToGamma(value, 2.2);\n\t}\n}\n\nvec4 envMapTexelToLinear(vec4 color) {\n\treturn inputTexelToLinear(color);\n}\n\t", "\n\n#define ENVMAP_TYPE_CUBE_UV\n#include <cube_uv_reflection_fragment>\n\nvec3 getSample(float theta, vec3 axis) {\n\tfloat cosTheta = cos(theta);\n\t// Rodrigues' axis-angle rotation\n\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t+ cross(axis, vOutputDirection) * sin(theta)\n\t\t+ axis * dot(axis, vOutputDirection) * (1.0 - cosTheta);\n\treturn bilinearCubeUV(envMap, sampleDirection, mipInt);\n}\n\nvoid main() {\n\tvec3 axis = latitudinal ? poleAxis : cross(poleAxis, vOutputDirection);\n\tif (all(equal(axis, vec3(0.0))))\n\t\taxis = vec3(vOutputDirection.z, 0.0, - vOutputDirection.x);\n\taxis = normalize(axis);\n\tgl_FragColor = vec4(0.0);\n\tgl_FragColor.rgb += weights[0] * getSample(0.0, axis);\n\tfor (int i = 1; i < n; i++) {\n\t\tif (i >= samples)\n\t\t\tbreak;\n\t\tfloat theta = dTheta * float(i);\n\t\tgl_FragColor.rgb += weights[i] * getSample(-1.0 * theta, axis);\n\t\tgl_FragColor.rgb += weights[i] * getSample(theta, axis);\n\t}\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t"),
        blending: I,
        depthTest: !1,
        depthWrite: !1
    })).type = "SphericalGaussianBlur",
    ph), bh = null, wh = null, Sh = function() {
        for (var t = [], e = [], n = [], i = 8, r = 0; r < mh; r++) {
            var o = Math.pow(2, i);
            e.push(o);
            var a = 1 / o;
            r > 4 ? a = fh[r - 8 + 4 - 1] : 0 == r && (a = 0),
            n.push(a);
            for (var s = 1 / (o - 1), c = -s / 2, l = 1 + s / 2, u = [c, c, l, c, l, l, c, c, l, l, c, l], d = new Float32Array(108), p = new Float32Array(72), h = new Float32Array(36), f = 0; f < 6; f++) {
                var m = f % 3 * 2 / 3 - 1
                  , g = f > 2 ? 0 : -1
                  , v = [m, g, 0, m + 2 / 3, g, 0, m + 2 / 3, g + 1, 0, m, g, 0, m + 2 / 3, g + 1, 0, m, g + 1, 0];
                d.set(v, 18 * f),
                p.set(u, 12 * f);
                var y = [f, f, f, f, f, f];
                h.set(y, 6 * f)
            }
            var b = new Qr;
            b.setAttribute("position", new Dr(d,3)),
            b.setAttribute("uv", new Dr(p,2)),
            b.setAttribute("faceIndex", new Dr(h,1)),
            t.push(b),
            i > 4 && i--
        }
        return {
            _lodPlanes: t,
            _sizeLods: e,
            _sigmas: n
        }
    }(), xh = Sh._lodPlanes, Mh = Sh._sizeLods, Eh = Sh._sigmas, Ch = null, Ah = null, Th = null, Oh = (1 + Math.sqrt(5)) / 2, _h = 1 / Oh, Ph = [new si(1,1,1), new si(-1,1,1), new si(1,1,-1), new si(-1,1,-1), new si(0,Oh,_h), new si(0,Oh,-_h), new si(_h,0,Oh), new si(-_h,0,Oh), new si(Oh,_h,0), new si(-Oh,_h,0)];
    function Ih(t) {
        Ah = t,
        Lh(yh)
    }
    function kh(t) {
        var e = {
            magFilter: Tt,
            minFilter: Tt,
            generateMipmaps: !1,
            type: t ? t.type : jt,
            format: t ? t.format : te,
            encoding: t ? t.encoding : dn,
            depthBuffer: !1,
            stencilBuffer: !1
        }
          , n = Nh(e);
        return n.depthBuffer = !t,
        Ch = Nh(e),
        n
    }
    function Dh(t) {
        Ch.dispose(),
        Ah.setRenderTarget(Th),
        t.scissorTest = !1,
        t.setSize(t.width, t.height)
    }
    function Rh(t, e, n, i) {
        var r = new ko(90,1,e,n)
          , o = [1, 1, 1, 1, -1, 1]
          , a = [1, 1, -1, -1, -1, 1]
          , s = Ah.outputEncoding
          , c = Ah.toneMapping
          , l = Ah.toneMappingExposure
          , u = Ah.getClearColor()
          , d = Ah.getClearAlpha();
        Ah.toneMapping = dt,
        Ah.toneMappingExposure = 1,
        Ah.outputEncoding = cn,
        t.scale.z *= -1;
        var p = t.background;
        if (p && p.isColor) {
            p.convertSRGBToLinear();
            var h = Math.max(p.r, p.g, p.b)
              , f = Math.min(Math.max(Math.ceil(Math.log2(h)), -128), 127);
            p = p.multiplyScalar(Math.pow(2, -f));
            var m = (f + 128) / 255;
            Ah.setClearColor(p, m),
            t.background = null
        }
        for (var g = 0; g < 6; g++) {
            var v = g % 3;
            0 == v ? (r.up.set(0, o[g], 0),
            r.lookAt(a[g], 0, 0)) : 1 == v ? (r.up.set(0, 0, o[g]),
            r.lookAt(0, a[g], 0)) : (r.up.set(0, o[g], 0),
            r.lookAt(0, 0, a[g])),
            jh(i, v * hh, g > 2 ? hh : 0, hh, hh),
            Ah.setRenderTarget(i),
            Ah.render(t, r)
        }
        Ah.toneMapping = c,
        Ah.toneMappingExposure = l,
        Ah.outputEncoding = s,
        Ah.setClearColor(u, d),
        t.scale.z *= -1
    }
    function Lh(t) {
        var e = new Ri;
        e.add(new vo(xh[0],t)),
        Ah.compile(e, vh)
    }
    function Nh(t) {
        var e = new ni(3 * hh,3 * hh,t);
        return e.texture.mapping = xt,
        e.texture.name = "PMREM.cubeUv",
        e.scissorTest = !0,
        e
    }
    function jh(t, e, n, i, r) {
        t.viewport.set(e, n, i, r),
        t.scissor.set(e, n, i, r)
    }
    function Vh(t) {
        var e = Ah.autoClear;
        Ah.autoClear = !1;
        for (var n = 1; n < mh; n++) {
            Fh(t, n - 1, n, Math.sqrt(Eh[n] * Eh[n] - Eh[n - 1] * Eh[n - 1]), Ph[(n - 1) % Ph.length])
        }
        Ah.autoClear = e
    }
    function Fh(t, e, n, i, r) {
        Uh(t, Ch, e, n, i, "latitudinal", r),
        Uh(Ch, t, n, n, i, "longitudinal", r)
    }
    function Uh(t, e, n, i, r, o, a) {
        "latitudinal" !== o && "longitudinal" !== o && console.error("blur direction must be either latitudinal or longitudinal!");
        var s = new Ri;
        s.add(new vo(xh[i],yh));
        var c = yh.uniforms
          , l = Mh[n] - 1
          , u = isFinite(r) ? Math.PI / (2 * l) : 2 * Math.PI / 39
          , d = r / u
          , p = isFinite(r) ? 1 + Math.floor(3 * d) : 20;
        p > 20 && console.warn("sigmaRadians, ".concat(r, ", is too large and will clip, as it requested ").concat(p, " samples when the maximum is set to ").concat(20));
        for (var h = [], f = 0, m = 0; m < 20; ++m) {
            var g = m / d
              , v = Math.exp(-g * g / 2);
            h.push(v),
            0 == m ? f += v : m < p && (f += 2 * v)
        }
        for (m = 0; m < h.length; m++)
            h[m] = h[m] / f;
        c.envMap.value = t.texture,
        c.samples.value = p,
        c.weights.value = h,
        c.latitudinal.value = "latitudinal" === o,
        a && (c.poleAxis.value = a),
        c.dTheta.value = u,
        c.mipInt.value = 8 - n,
        c.inputEncoding.value = gh[t.texture.encoding],
        c.outputEncoding.value = gh[t.texture.encoding];
        var y = Mh[i];
        jh(e, g = 3 * Math.max(0, hh - 2 * y), (0 === i ? 0 : 2 * hh) + 2 * y * (i > 4 ? i - 8 + 4 : 0), 3 * y, 2 * y),
        Ah.setRenderTarget(e),
        Ah.render(s, vh)
    }
    function Bh() {
        var t = new ru({
            uniforms: {
                envMap: {
                    value: null
                },
                texelSize: {
                    value: new Zn(1,1)
                },
                inputEncoding: {
                    value: gh[cn]
                },
                outputEncoding: {
                    value: gh[cn]
                }
            },
            vertexShader: "\nprecision mediump float;\nprecision mediump int;\nattribute vec3 position;\nattribute vec2 uv;\nattribute float faceIndex;\nvarying vec3 vOutputDirection;\nvec3 getDirection(vec2 uv, float face) {\n\tuv = 2.0 * uv - 1.0;\n\tvec3 direction = vec3(uv, 1.0);\n\tif (face == 0.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.z *= -1.0;\n\t} else if (face == 1.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.z *= -1.0;\n\t} else if (face == 3.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.x *= -1.0;\n\t} else if (face == 4.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.y *= -1.0;\n\t} else if (face == 5.0) {\n\t\tdirection.xz *= -1.0;\n\t}\n\treturn direction;\n}\nvoid main() {\n\tvOutputDirection = getDirection(uv, faceIndex);\n\tgl_Position = vec4( position, 1.0 );\n}\n\t",
            fragmentShader: "\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform sampler2D envMap;\nuniform vec2 texelSize;\n\n".concat("\nuniform int inputEncoding;\nuniform int outputEncoding;\n\n#include <encodings_pars_fragment>\n\nvec4 inputTexelToLinear(vec4 value){\n\tif(inputEncoding == 0){\n\t\treturn value;\n\t}else if(inputEncoding == 1){\n\t\treturn sRGBToLinear(value);\n\t}else if(inputEncoding == 2){\n\t\treturn RGBEToLinear(value);\n\t}else if(inputEncoding == 3){\n\t\treturn RGBMToLinear(value, 7.0);\n\t}else if(inputEncoding == 4){\n\t\treturn RGBMToLinear(value, 16.0);\n\t}else if(inputEncoding == 5){\n\t\treturn RGBDToLinear(value, 256.0);\n\t}else{\n\t\treturn GammaToLinear(value, 2.2);\n\t}\n}\n\nvec4 linearToOutputTexel(vec4 value){\n\tif(outputEncoding == 0){\n\t\treturn value;\n\t}else if(outputEncoding == 1){\n\t\treturn LinearTosRGB(value);\n\t}else if(outputEncoding == 2){\n\t\treturn LinearToRGBE(value);\n\t}else if(outputEncoding == 3){\n\t\treturn LinearToRGBM(value, 7.0);\n\t}else if(outputEncoding == 4){\n\t\treturn LinearToRGBM(value, 16.0);\n\t}else if(outputEncoding == 5){\n\t\treturn LinearToRGBD(value, 256.0);\n\t}else{\n\t\treturn LinearToGamma(value, 2.2);\n\t}\n}\n\nvec4 envMapTexelToLinear(vec4 color) {\n\treturn inputTexelToLinear(color);\n}\n\t", "\n\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tvec3 outputDirection = normalize(vOutputDirection);\n\tvec2 uv;\n\tuv.y = asin(clamp(outputDirection.y, -1.0, 1.0)) * RECIPROCAL_PI + 0.5;\n\tuv.x = atan(outputDirection.z, outputDirection.x) * RECIPROCAL_PI2 + 0.5;\n\tvec2 f = fract(uv / texelSize - 0.5);\n\tuv -= f * texelSize;\n\tvec3 tl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x += texelSize.x;\n\tvec3 tr = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.y += texelSize.y;\n\tvec3 br = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tuv.x -= texelSize.x;\n\tvec3 bl = envMapTexelToLinear(texture2D(envMap, uv)).rgb;\n\tvec3 tm = mix(tl, tr, f.x);\n\tvec3 bm = mix(bl, br, f.x);\n\tgl_FragColor.rgb = mix(tm, bm, f.y);\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t"),
            blending: I,
            depthTest: !1,
            depthWrite: !1
        });
        return t.type = "EquirectangularToCubeUV",
        t
    }
    function zh() {
        var t = new ru({
            uniforms: {
                envMap: {
                    value: null
                },
                inputEncoding: {
                    value: gh[cn]
                },
                outputEncoding: {
                    value: gh[cn]
                }
            },
            vertexShader: "\nprecision mediump float;\nprecision mediump int;\nattribute vec3 position;\nattribute vec2 uv;\nattribute float faceIndex;\nvarying vec3 vOutputDirection;\nvec3 getDirection(vec2 uv, float face) {\n\tuv = 2.0 * uv - 1.0;\n\tvec3 direction = vec3(uv, 1.0);\n\tif (face == 0.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.z *= -1.0;\n\t} else if (face == 1.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.z *= -1.0;\n\t} else if (face == 3.0) {\n\t\tdirection = direction.zyx;\n\t\tdirection.x *= -1.0;\n\t} else if (face == 4.0) {\n\t\tdirection = direction.xzy;\n\t\tdirection.y *= -1.0;\n\t} else if (face == 5.0) {\n\t\tdirection.xz *= -1.0;\n\t}\n\treturn direction;\n}\nvoid main() {\n\tvOutputDirection = getDirection(uv, faceIndex);\n\tgl_Position = vec4( position, 1.0 );\n}\n\t",
            fragmentShader: "\nprecision mediump float;\nprecision mediump int;\nvarying vec3 vOutputDirection;\nuniform samplerCube envMap;\n\n".concat("\nuniform int inputEncoding;\nuniform int outputEncoding;\n\n#include <encodings_pars_fragment>\n\nvec4 inputTexelToLinear(vec4 value){\n\tif(inputEncoding == 0){\n\t\treturn value;\n\t}else if(inputEncoding == 1){\n\t\treturn sRGBToLinear(value);\n\t}else if(inputEncoding == 2){\n\t\treturn RGBEToLinear(value);\n\t}else if(inputEncoding == 3){\n\t\treturn RGBMToLinear(value, 7.0);\n\t}else if(inputEncoding == 4){\n\t\treturn RGBMToLinear(value, 16.0);\n\t}else if(inputEncoding == 5){\n\t\treturn RGBDToLinear(value, 256.0);\n\t}else{\n\t\treturn GammaToLinear(value, 2.2);\n\t}\n}\n\nvec4 linearToOutputTexel(vec4 value){\n\tif(outputEncoding == 0){\n\t\treturn value;\n\t}else if(outputEncoding == 1){\n\t\treturn LinearTosRGB(value);\n\t}else if(outputEncoding == 2){\n\t\treturn LinearToRGBE(value);\n\t}else if(outputEncoding == 3){\n\t\treturn LinearToRGBM(value, 7.0);\n\t}else if(outputEncoding == 4){\n\t\treturn LinearToRGBM(value, 16.0);\n\t}else if(outputEncoding == 5){\n\t\treturn LinearToRGBD(value, 256.0);\n\t}else{\n\t\treturn LinearToGamma(value, 2.2);\n\t}\n}\n\nvec4 envMapTexelToLinear(vec4 color) {\n\treturn inputTexelToLinear(color);\n}\n\t", "\n\nvoid main() {\n\tgl_FragColor = vec4(0.0);\n\tgl_FragColor.rgb = envMapTexelToLinear(textureCube(envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ))).rgb;\n\tgl_FragColor = linearToOutputTexel(gl_FragColor);\n}\n\t\t"),
            blending: I,
            depthTest: !1,
            depthWrite: !1
        });
        return t.type = "CubemapToCubeUV",
        t
    }
    function Gh(t, e, n, i, r, o, a) {
        return console.warn("THREE.Face4 has been removed. A THREE.Face3 will be created instead."),
        new Or(t,e,n,r,o,a)
    }
    Ih.prototype = {
        constructor: Ih,
        fromScene: function(t) {
            var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0
              , n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : .1
              , i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 100;
            Th = Ah.getRenderTarget();
            var r = kh();
            return Rh(t, n, i, r),
            e > 0 && Fh(r, 0, 0, e),
            Vh(r),
            Dh(r),
            r
        },
        fromEquirectangular: function(t) {
            return t.magFilter = Tt,
            t.minFilter = Tt,
            t.generateMipmaps = !1,
            this.fromCubemap(t)
        },
        fromCubemap: function(t) {
            Th = Ah.getRenderTarget();
            var e = kh(t);
            return function(t, e) {
                var n = new Ri;
                t.isCubeTexture ? null == wh && (wh = zh()) : null == bh && (bh = Bh());
                var i = t.isCubeTexture ? wh : bh;
                n.add(new vo(xh[0],i));
                var r = i.uniforms;
                r.envMap.value = t,
                t.isCubeTexture || r.texelSize.value.set(1 / t.image.width, 1 / t.image.height);
                r.inputEncoding.value = gh[t.encoding],
                r.outputEncoding.value = gh[t.encoding],
                jh(e, 0, 0, 3 * hh, 2 * hh),
                Ah.setRenderTarget(e),
                Ah.render(n, vh)
            }(t, e),
            Vh(e),
            Dh(e),
            e
        },
        compileCubemapShader: function() {
            null == wh && Lh(wh = zh())
        },
        compileEquirectangularShader: function() {
            null == bh && Lh(bh = Bh())
        },
        dispose: function() {
            yh.dispose(),
            null != wh && wh.dispose(),
            null != bh && bh.dispose();
            for (var t = 0; t < xh.length; t++)
                xh[t].dispose()
        }
    };
    var Hh = 0
      , Wh = 1
      , qh = 0
      , Xh = 1
      , Yh = 2;
    function Kh(t) {
        return console.warn("THREE.MeshFaceMaterial has been removed. Use an Array instead."),
        t
    }
    function Zh(t) {
        return void 0 === t && (t = []),
        console.warn("THREE.MultiMaterial has been removed. Use an Array instead."),
        t.isMultiMaterial = !0,
        t.materials = t,
        t.clone = function() {
            return t.slice()
        }
        ,
        t
    }
    function Jh(t, e) {
        return console.warn("THREE.PointCloud has been renamed to THREE.Points."),
        new Vc(t,e)
    }
    function Qh(t) {
        return console.warn("THREE.Particle has been renamed to THREE.Sprite."),
        new sc(t)
    }
    function $h(t, e) {
        return console.warn("THREE.ParticleSystem has been renamed to THREE.Points."),
        new Vc(t,e)
    }
    function tf(t) {
        return console.warn("THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial."),
        new Dc(t)
    }
    function ef(t) {
        return console.warn("THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial."),
        new Dc(t)
    }
    function nf(t) {
        return console.warn("THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial."),
        new Dc(t)
    }
    function rf(t, e, n) {
        return console.warn("THREE.Vertex has been removed. Use THREE.Vector3 instead."),
        new si(t,e,n)
    }
    function of(t, e) {
        return console.warn("THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead."),
        new Dr(t,e).setUsage(jn)
    }
    function af(t, e) {
        return console.warn("THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead."),
        new Rr(t,e)
    }
    function sf(t, e) {
        return console.warn("THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead."),
        new Lr(t,e)
    }
    function cf(t, e) {
        return console.warn("THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead."),
        new Nr(t,e)
    }
    function lf(t, e) {
        return console.warn("THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead."),
        new jr(t,e)
    }
    function uf(t, e) {
        return console.warn("THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead."),
        new Vr(t,e)
    }
    function df(t, e) {
        return console.warn("THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead."),
        new Fr(t,e)
    }
    function pf(t, e) {
        return console.warn("THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead."),
        new Ur(t,e)
    }
    function hf(t, e) {
        return console.warn("THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead."),
        new Br(t,e)
    }
    function ff(t, e) {
        return console.warn("THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead."),
        new zr(t,e)
    }
    function mf(t) {
        console.warn("THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead."),
        Ku.call(this, t),
        this.type = "catmullrom",
        this.closed = !0
    }
    function gf(t) {
        console.warn("THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead."),
        Ku.call(this, t),
        this.type = "catmullrom"
    }
    function vf(t) {
        console.warn("THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead."),
        Ku.call(this, t),
        this.type = "catmullrom"
    }
    function yf(t) {
        return console.warn("THREE.AxisHelper has been renamed to THREE.AxesHelper."),
        new ch(t)
    }
    function bf(t, e) {
        return console.warn("THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead."),
        new eh(t,e)
    }
    function wf(t, e) {
        return console.warn("THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead."),
        new Ic(new Kl(t.geometry),new xc({
            color: void 0 !== e ? e : 16777215
        }))
    }
    function Sf(t, e) {
        return console.warn("THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead."),
        new Ic(new Hc(t.geometry),new xc({
            color: void 0 !== e ? e : 16777215
        }))
    }
    function xf(t) {
        return console.warn("THREE.XHRLoader has been renamed to THREE.FileLoader."),
        new Ru(t)
    }
    function Mf(t) {
        return console.warn("THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader."),
        new ju(t)
    }
    function Ef(t, e, n) {
        return console.warn("THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options )."),
        new Ro(t,n)
    }
    Bu.create = function(t, e) {
        return console.log("THREE.Curve.create() has been deprecated"),
        t.prototype = Object.create(Bu.prototype),
        t.prototype.constructor = t,
        t.prototype.getPoint = e,
        t
    }
    ,
    Object.assign(sd.prototype, {
        createPointsGeometry: function(t) {
            console.warn("THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");
            var e = this.getPoints(t);
            return this.createGeometry(e)
        },
        createSpacedPointsGeometry: function(t) {
            console.warn("THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");
            var e = this.getSpacedPoints(t);
            return this.createGeometry(e)
        },
        createGeometry: function(t) {
            console.warn("THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");
            for (var e = new Eo, n = 0, i = t.length; n < i; n++) {
                var r = t[n];
                e.vertices.push(new si(r.x,r.y,r.z || 0))
            }
            return e
        }
    }),
    Object.assign(cd.prototype, {
        fromPoints: function(t) {
            return console.warn("THREE.Path: .fromPoints() has been renamed to .setFromPoints()."),
            this.setFromPoints(t)
        }
    }),
    mf.prototype = Object.create(Ku.prototype),
    gf.prototype = Object.create(Ku.prototype),
    vf.prototype = Object.create(Ku.prototype),
    Object.assign(vf.prototype, {
        initFromArray: function() {
            console.error("THREE.Spline: .initFromArray() has been removed.")
        },
        getControlPointsArray: function() {
            console.error("THREE.Spline: .getControlPointsArray() has been removed.")
        },
        reparametrizeByArcLength: function() {
            console.error("THREE.Spline: .reparametrizeByArcLength() has been removed.")
        }
    }),
    Hp.prototype.setColors = function() {
        console.error("THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.")
    }
    ,
    Vp.prototype.update = function() {
        console.error("THREE.SkeletonHelper: update() no longer needs to be called.")
    }
    ,
    Object.assign(ku.prototype, {
        extractUrlBase: function(t) {
            return console.warn("THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead."),
            Md.extractUrlBase(t)
        }
    }),
    ku.Handlers = {
        add: function() {
            console.error("THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.")
        },
        get: function() {
            console.error("THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.")
        }
    },
    Object.assign(Od.prototype, {
        setTexturePath: function(t) {
            return console.warn("THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath()."),
            this.setResourcePath(t)
        }
    }),
    Object.assign(Op.prototype, {
        center: function(t) {
            return console.warn("THREE.Box2: .center() has been renamed to .getCenter()."),
            this.getCenter(t)
        },
        empty: function() {
            return console.warn("THREE.Box2: .empty() has been renamed to .isEmpty()."),
            this.isEmpty()
        },
        isIntersectionBox: function(t) {
            return console.warn("THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox()."),
            this.intersectsBox(t)
        },
        size: function(t) {
            return console.warn("THREE.Box2: .size() has been renamed to .getSize()."),
            this.getSize(t)
        }
    }),
    Object.assign(Yi.prototype, {
        center: function(t) {
            return console.warn("THREE.Box3: .center() has been renamed to .getCenter()."),
            this.getCenter(t)
        },
        empty: function() {
            return console.warn("THREE.Box3: .empty() has been renamed to .isEmpty()."),
            this.isEmpty()
        },
        isIntersectionBox: function(t) {
            return console.warn("THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox()."),
            this.intersectsBox(t)
        },
        isIntersectionSphere: function(t) {
            return console.warn("THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere()."),
            this.intersectsSphere(t)
        },
        size: function(t) {
            return console.warn("THREE.Box3: .size() has been renamed to .getSize()."),
            this.getSize(t)
        }
    }),
    Vo.prototype.setFromMatrix = function(t) {
        return console.warn("THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix()."),
        this.setFromProjectionMatrix(t)
    }
    ,
    Ip.prototype.center = function(t) {
        return console.warn("THREE.Line3: .center() has been renamed to .getCenter()."),
        this.getCenter(t)
    }
    ,
    Object.assign(Kn, {
        random16: function() {
            return console.warn("THREE.Math: .random16() has been deprecated. Use Math.random() instead."),
            Math.random()
        },
        nearestPowerOfTwo: function(t) {
            return console.warn("THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo()."),
            Kn.floorPowerOfTwo(t)
        },
        nextPowerOfTwo: function(t) {
            return console.warn("THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo()."),
            Kn.ceilPowerOfTwo(t)
        }
    }),
    Object.assign(Jn.prototype, {
        flattenToArrayOffset: function(t, e) {
            return console.warn("THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead."),
            this.toArray(t, e)
        },
        multiplyVector3: function(t) {
            return console.warn("THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead."),
            t.applyMatrix3(this)
        },
        multiplyVector3Array: function() {
            console.error("THREE.Matrix3: .multiplyVector3Array() has been removed.")
        },
        applyToBufferAttribute: function(t) {
            return console.warn("THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead."),
            t.applyMatrix3(this)
        },
        applyToVector3Array: function() {
            console.error("THREE.Matrix3: .applyToVector3Array() has been removed.")
        }
    }),
    Object.assign(mi.prototype, {
        extractPosition: function(t) {
            return console.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition()."),
            this.copyPosition(t)
        },
        flattenToArrayOffset: function(t, e) {
            return console.warn("THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead."),
            this.toArray(t, e)
        },
        getPosition: function() {
            return console.warn("THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead."),
            (new si).setFromMatrixColumn(this, 3)
        },
        setRotationFromQuaternion: function(t) {
            return console.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion()."),
            this.makeRotationFromQuaternion(t)
        },
        multiplyToArray: function() {
            console.warn("THREE.Matrix4: .multiplyToArray() has been removed.")
        },
        multiplyVector3: function(t) {
            return console.warn("THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead."),
            t.applyMatrix4(this)
        },
        multiplyVector4: function(t) {
            return console.warn("THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead."),
            t.applyMatrix4(this)
        },
        multiplyVector3Array: function() {
            console.error("THREE.Matrix4: .multiplyVector3Array() has been removed.")
        },
        rotateAxis: function(t) {
            console.warn("THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead."),
            t.transformDirection(this)
        },
        crossVector: function(t) {
            return console.warn("THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead."),
            t.applyMatrix4(this)
        },
        translate: function() {
            console.error("THREE.Matrix4: .translate() has been removed.")
        },
        rotateX: function() {
            console.error("THREE.Matrix4: .rotateX() has been removed.")
        },
        rotateY: function() {
            console.error("THREE.Matrix4: .rotateY() has been removed.")
        },
        rotateZ: function() {
            console.error("THREE.Matrix4: .rotateZ() has been removed.")
        },
        rotateByAxis: function() {
            console.error("THREE.Matrix4: .rotateByAxis() has been removed.")
        },
        applyToBufferAttribute: function(t) {
            return console.warn("THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead."),
            t.applyMatrix4(this)
        },
        applyToVector3Array: function() {
            console.error("THREE.Matrix4: .applyToVector3Array() has been removed.")
        },
        makeFrustum: function(t, e, n, i, r, o) {
            return console.warn("THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead."),
            this.makePerspective(t, e, i, n, r, o)
        }
    }),
    lr.prototype.isIntersectionLine = function(t) {
        return console.warn("THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine()."),
        this.intersectsLine(t)
    }
    ,
    ri.prototype.multiplyVector3 = function(t) {
        return console.warn("THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead."),
        t.applyQuaternion(this)
    }
    ,
    Object.assign(or.prototype, {
        isIntersectionBox: function(t) {
            return console.warn("THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox()."),
            this.intersectsBox(t)
        },
        isIntersectionPlane: function(t) {
            return console.warn("THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane()."),
            this.intersectsPlane(t)
        },
        isIntersectionSphere: function(t) {
            return console.warn("THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere()."),
            this.intersectsSphere(t)
        }
    }),
    Object.assign(wr.prototype, {
        area: function() {
            return console.warn("THREE.Triangle: .area() has been renamed to .getArea()."),
            this.getArea()
        },
        barycoordFromPoint: function(t, e) {
            return console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord()."),
            this.getBarycoord(t, e)
        },
        midpoint: function(t) {
            return console.warn("THREE.Triangle: .midpoint() has been renamed to .getMidpoint()."),
            this.getMidpoint(t)
        },
        normal: function(t) {
            return console.warn("THREE.Triangle: .normal() has been renamed to .getNormal()."),
            this.getNormal(t)
        },
        plane: function(t) {
            return console.warn("THREE.Triangle: .plane() has been renamed to .getPlane()."),
            this.getPlane(t)
        }
    }),
    Object.assign(wr, {
        barycoordFromPoint: function(t, e, n, i, r) {
            return console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord()."),
            wr.getBarycoord(t, e, n, i, r)
        },
        normal: function(t, e, n, i) {
            return console.warn("THREE.Triangle: .normal() has been renamed to .getNormal()."),
            wr.getNormal(t, e, n, i)
        }
    }),
    Object.assign(ld.prototype, {
        extractAllPoints: function(t) {
            return console.warn("THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead."),
            this.extractPoints(t)
        },
        extrude: function(t) {
            return console.warn("THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead."),
            new Rl(this,t)
        },
        makeGeometry: function(t) {
            return console.warn("THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead."),
            new ql(this,t)
        }
    }),
    Object.assign(Zn.prototype, {
        fromAttribute: function(t, e, n) {
            return console.warn("THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute()."),
            this.fromBufferAttribute(t, e, n)
        },
        distanceToManhattan: function(t) {
            return console.warn("THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo()."),
            this.manhattanDistanceTo(t)
        },
        lengthManhattan: function() {
            return console.warn("THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength()."),
            this.manhattanLength()
        }
    }),
    Object.assign(si.prototype, {
        setEulerFromRotationMatrix: function() {
            console.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")
        },
        setEulerFromQuaternion: function() {
            console.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")
        },
        getPositionFromMatrix: function(t) {
            return console.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."),
            this.setFromMatrixPosition(t)
        },
        getScaleFromMatrix: function(t) {
            return console.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale()."),
            this.setFromMatrixScale(t)
        },
        getColumnFromMatrix: function(t, e) {
            return console.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn()."),
            this.setFromMatrixColumn(e, t)
        },
        applyProjection: function(t) {
            return console.warn("THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead."),
            this.applyMatrix4(t)
        },
        fromAttribute: function(t, e, n) {
            return console.warn("THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute()."),
            this.fromBufferAttribute(t, e, n)
        },
        distanceToManhattan: function(t) {
            return console.warn("THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo()."),
            this.manhattanDistanceTo(t)
        },
        lengthManhattan: function() {
            return console.warn("THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength()."),
            this.manhattanLength()
        }
    }),
    Object.assign(ei.prototype, {
        fromAttribute: function(t, e, n) {
            return console.warn("THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute()."),
            this.fromBufferAttribute(t, e, n)
        },
        lengthManhattan: function() {
            return console.warn("THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength()."),
            this.manhattanLength()
        }
    }),
    Object.assign(Eo.prototype, {
        computeTangents: function() {
            console.error("THREE.Geometry: .computeTangents() has been removed.")
        },
        computeLineDistances: function() {
            console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")
        },
        applyMatrix: function(t) {
            return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),
            this.applyMatrix4(t)
        }
    }),
    Object.assign(Di.prototype, {
        getChildByName: function(t) {
            return console.warn("THREE.Object3D: .getChildByName() has been renamed to .getObjectByName()."),
            this.getObjectByName(t)
        },
        renderDepth: function() {
            console.warn("THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.")
        },
        translate: function(t, e) {
            return console.warn("THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead."),
            this.translateOnAxis(e, t)
        },
        getWorldRotation: function() {
            console.error("THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.")
        },
        applyMatrix: function(t) {
            return console.warn("THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4()."),
            this.applyMatrix4(t)
        }
    }),
    Object.defineProperties(Di.prototype, {
        eulerOrder: {
            get: function() {
                return console.warn("THREE.Object3D: .eulerOrder is now .rotation.order."),
                this.rotation.order
            },
            set: function(t) {
                console.warn("THREE.Object3D: .eulerOrder is now .rotation.order."),
                this.rotation.order = t
            }
        },
        useQuaternion: {
            get: function() {
                console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")
            },
            set: function() {
                console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")
            }
        }
    }),
    Object.assign(vo.prototype, {
        setDrawMode: function() {
            console.error("THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.")
        }
    }),
    Object.defineProperties(vo.prototype, {
        drawMode: {
            get: function() {
                return console.error("THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode."),
                on
            },
            set: function() {
                console.error("THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.")
            }
        }
    }),
    Object.defineProperties(dc.prototype, {
        objects: {
            get: function() {
                return console.warn("THREE.LOD: .objects has been renamed to .levels."),
                this.levels
            }
        }
    }),
    Object.defineProperty(mc.prototype, "useVertexTexture", {
        get: function() {
            console.warn("THREE.Skeleton: useVertexTexture has been removed.")
        },
        set: function() {
            console.warn("THREE.Skeleton: useVertexTexture has been removed.")
        }
    }),
    pc.prototype.initBones = function() {
        console.error("THREE.SkinnedMesh: initBones() has been removed.")
    }
    ,
    Object.defineProperty(Bu.prototype, "__arcLengthDivisions", {
        get: function() {
            return console.warn("THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions."),
            this.arcLengthDivisions
        },
        set: function(t) {
            console.warn("THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions."),
            this.arcLengthDivisions = t
        }
    }),
    ko.prototype.setLens = function(t, e) {
        console.warn("THREE.PerspectiveCamera.setLens is deprecated. Use .setFocalLength and .filmGauge for a photographic setup."),
        void 0 !== e && (this.filmGauge = e),
        this.setFocalLength(t)
    }
    ,
    Object.defineProperties(ud.prototype, {
        onlyShadow: {
            set: function() {
                console.warn("THREE.Light: .onlyShadow has been removed.")
            }
        },
        shadowCameraFov: {
            set: function(t) {
                console.warn("THREE.Light: .shadowCameraFov is now .shadow.camera.fov."),
                this.shadow.camera.fov = t
            }
        },
        shadowCameraLeft: {
            set: function(t) {
                console.warn("THREE.Light: .shadowCameraLeft is now .shadow.camera.left."),
                this.shadow.camera.left = t
            }
        },
        shadowCameraRight: {
            set: function(t) {
                console.warn("THREE.Light: .shadowCameraRight is now .shadow.camera.right."),
                this.shadow.camera.right = t
            }
        },
        shadowCameraTop: {
            set: function(t) {
                console.warn("THREE.Light: .shadowCameraTop is now .shadow.camera.top."),
                this.shadow.camera.top = t
            }
        },
        shadowCameraBottom: {
            set: function(t) {
                console.warn("THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom."),
                this.shadow.camera.bottom = t
            }
        },
        shadowCameraNear: {
            set: function(t) {
                console.warn("THREE.Light: .shadowCameraNear is now .shadow.camera.near."),
                this.shadow.camera.near = t
            }
        },
        shadowCameraFar: {
            set: function(t) {
                console.warn("THREE.Light: .shadowCameraFar is now .shadow.camera.far."),
                this.shadow.camera.far = t
            }
        },
        shadowCameraVisible: {
            set: function() {
                console.warn("THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.")
            }
        },
        shadowBias: {
            set: function(t) {
                console.warn("THREE.Light: .shadowBias is now .shadow.bias."),
                this.shadow.bias = t
            }
        },
        shadowDarkness: {
            set: function() {
                console.warn("THREE.Light: .shadowDarkness has been removed.")
            }
        },
        shadowMapWidth: {
            set: function(t) {
                console.warn("THREE.Light: .shadowMapWidth is now .shadow.mapSize.width."),
                this.shadow.mapSize.width = t
            }
        },
        shadowMapHeight: {
            set: function(t) {
                console.warn("THREE.Light: .shadowMapHeight is now .shadow.mapSize.height."),
                this.shadow.mapSize.height = t
            }
        }
    }),
    Object.defineProperties(Dr.prototype, {
        length: {
            get: function() {
                return console.warn("THREE.BufferAttribute: .length has been deprecated. Use .count instead."),
                this.array.length
            }
        },
        dynamic: {
            get: function() {
                return console.warn("THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead."),
                this.usage === jn
            },
            set: function() {
                console.warn("THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead."),
                this.setUsage(jn)
            }
        }
    }),
    Object.assign(Dr.prototype, {
        setDynamic: function(t) {
            return console.warn("THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead."),
            this.setUsage(!0 === t ? jn : Nn),
            this
        },
        copyIndicesArray: function() {
            console.error("THREE.BufferAttribute: .copyIndicesArray() has been removed.")
        },
        setArray: function() {
            console.error("THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers")
        }
    }),
    Object.assign(Qr.prototype, {
        addIndex: function(t) {
            console.warn("THREE.BufferGeometry: .addIndex() has been renamed to .setIndex()."),
            this.setIndex(t)
        },
        addAttribute: function(t, e) {
            return console.warn("THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute()."),
            e && e.isBufferAttribute || e && e.isInterleavedBufferAttribute ? "index" === t ? (console.warn("THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute."),
            this.setIndex(e),
            this) : this.setAttribute(t, e) : (console.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."),
            this.setAttribute(t, new Dr(arguments[1],arguments[2])))
        },
        addDrawCall: function(t, e, n) {
            void 0 !== n && console.warn("THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset."),
            console.warn("THREE.BufferGeometry: .addDrawCall() is now .addGroup()."),
            this.addGroup(t, e)
        },
        clearDrawCalls: function() {
            console.warn("THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups()."),
            this.clearGroups()
        },
        computeTangents: function() {
            console.warn("THREE.BufferGeometry: .computeTangents() has been removed.")
        },
        computeOffsets: function() {
            console.warn("THREE.BufferGeometry: .computeOffsets() has been removed.")
        },
        removeAttribute: function(t) {
            return console.warn("THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute()."),
            this.deleteAttribute(t)
        },
        applyMatrix: function(t) {
            return console.warn("THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4()."),
            this.applyMatrix4(t)
        }
    }),
    Object.defineProperties(Qr.prototype, {
        drawcalls: {
            get: function() {
                return console.error("THREE.BufferGeometry: .drawcalls has been renamed to .groups."),
                this.groups
            }
        },
        offsets: {
            get: function() {
                return console.warn("THREE.BufferGeometry: .offsets has been renamed to .groups."),
                this.groups
            }
        }
    }),
    Object.defineProperties(xp.prototype, {
        linePrecision: {
            get: function() {
                return console.warn("THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead."),
                this.params.Line.threshold
            },
            set: function(t) {
                console.warn("THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead."),
                this.params.Line.threshold = t
            }
        }
    }),
    Object.defineProperties(Hs.prototype, {
        dynamic: {
            get: function() {
                return console.warn("THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead."),
                this.usage === jn
            },
            set: function(t) {
                console.warn("THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead."),
                this.setUsage(t)
            }
        }
    }),
    Object.assign(Hs.prototype, {
        setDynamic: function(t) {
            return console.warn("THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead."),
            this.setUsage(!0 === t ? jn : Nn),
            this
        },
        setArray: function() {
            console.error("THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers")
        }
    }),
    Object.assign(Ll.prototype, {
        getArrays: function() {
            console.error("THREE.ExtrudeBufferGeometry: .getArrays() has been removed.")
        },
        addShapeList: function() {
            console.error("THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.")
        },
        addShape: function() {
            console.error("THREE.ExtrudeBufferGeometry: .addShape() has been removed.")
        }
    }),
    Object.defineProperties(wp.prototype, {
        dynamic: {
            set: function() {
                console.warn("THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.")
            }
        },
        onUpdate: {
            value: function() {
                return console.warn("THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead."),
                this
            }
        }
    }),
    Object.defineProperties(Pr.prototype, {
        wrapAround: {
            get: function() {
                console.warn("THREE.Material: .wrapAround has been removed.")
            },
            set: function() {
                console.warn("THREE.Material: .wrapAround has been removed.")
            }
        },
        overdraw: {
            get: function() {
                console.warn("THREE.Material: .overdraw has been removed.")
            },
            set: function() {
                console.warn("THREE.Material: .overdraw has been removed.")
            }
        },
        wrapRGB: {
            get: function() {
                return console.warn("THREE.Material: .wrapRGB has been removed."),
                new Er
            }
        },
        shading: {
            get: function() {
                console.error("THREE." + this.type + ": .shading has been removed. Use the boolean .flatShading instead.")
            },
            set: function(t) {
                console.warn("THREE." + this.type + ": .shading has been removed. Use the boolean .flatShading instead."),
                this.flatShading = t === _
            }
        },
        stencilMask: {
            get: function() {
                return console.warn("THREE." + this.type + ": .stencilMask has been removed. Use .stencilFuncMask instead."),
                this.stencilFuncMask
            },
            set: function(t) {
                console.warn("THREE." + this.type + ": .stencilMask has been removed. Use .stencilFuncMask instead."),
                this.stencilFuncMask = t
            }
        }
    }),
    Object.defineProperties(su.prototype, {
        metal: {
            get: function() {
                return console.warn("THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead."),
                !1
            },
            set: function() {
                console.warn("THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead")
            }
        }
    }),
    Object.defineProperties(Po.prototype, {
        derivatives: {
            get: function() {
                return console.warn("THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives."),
                this.extensions.derivatives
            },
            set: function(t) {
                console.warn("THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives."),
                this.extensions.derivatives = t
            }
        }
    }),
    Object.assign(Bs.prototype, {
        clearTarget: function(t, e, n, i) {
            console.warn("THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead."),
            this.setRenderTarget(t),
            this.clear(e, n, i)
        },
        animate: function(t) {
            console.warn("THREE.WebGLRenderer: .animate() is now .setAnimationLoop()."),
            this.setAnimationLoop(t)
        },
        getCurrentRenderTarget: function() {
            return console.warn("THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget()."),
            this.getRenderTarget()
        },
        getMaxAnisotropy: function() {
            return console.warn("THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy()."),
            this.capabilities.getMaxAnisotropy()
        },
        getPrecision: function() {
            return console.warn("THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision."),
            this.capabilities.precision
        },
        resetGLState: function() {
            return console.warn("THREE.WebGLRenderer: .resetGLState() is now .state.reset()."),
            this.state.reset()
        },
        supportsFloatTextures: function() {
            return console.warn("THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( 'OES_texture_float' )."),
            this.extensions.get("OES_texture_float")
        },
        supportsHalfFloatTextures: function() {
            return console.warn("THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( 'OES_texture_half_float' )."),
            this.extensions.get("OES_texture_half_float")
        },
        supportsStandardDerivatives: function() {
            return console.warn("THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( 'OES_standard_derivatives' )."),
            this.extensions.get("OES_standard_derivatives")
        },
        supportsCompressedTextureS3TC: function() {
            return console.warn("THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( 'WEBGL_compressed_texture_s3tc' )."),
            this.extensions.get("WEBGL_compressed_texture_s3tc")
        },
        supportsCompressedTexturePVRTC: function() {
            return console.warn("THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( 'WEBGL_compressed_texture_pvrtc' )."),
            this.extensions.get("WEBGL_compressed_texture_pvrtc")
        },
        supportsBlendMinMax: function() {
            return console.warn("THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( 'EXT_blend_minmax' )."),
            this.extensions.get("EXT_blend_minmax")
        },
        supportsVertexTextures: function() {
            return console.warn("THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures."),
            this.capabilities.vertexTextures
        },
        supportsInstancedArrays: function() {
            return console.warn("THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( 'ANGLE_instanced_arrays' )."),
            this.extensions.get("ANGLE_instanced_arrays")
        },
        enableScissorTest: function(t) {
            console.warn("THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest()."),
            this.setScissorTest(t)
        },
        initMaterial: function() {
            console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")
        },
        addPrePlugin: function() {
            console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")
        },
        addPostPlugin: function() {
            console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")
        },
        updateShadowMap: function() {
            console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")
        },
        setFaceCulling: function() {
            console.warn("THREE.WebGLRenderer: .setFaceCulling() has been removed.")
        },
        allocTextureUnit: function() {
            console.warn("THREE.WebGLRenderer: .allocTextureUnit() has been removed.")
        },
        setTexture: function() {
            console.warn("THREE.WebGLRenderer: .setTexture() has been removed.")
        },
        setTexture2D: function() {
            console.warn("THREE.WebGLRenderer: .setTexture2D() has been removed.")
        },
        setTextureCube: function() {
            console.warn("THREE.WebGLRenderer: .setTextureCube() has been removed.")
        },
        getActiveMipMapLevel: function() {
            return console.warn("THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel()."),
            this.getActiveMipmapLevel()
        }
    }),
    Object.defineProperties(Bs.prototype, {
        shadowMapEnabled: {
            get: function() {
                return this.shadowMap.enabled
            },
            set: function(t) {
                console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled."),
                this.shadowMap.enabled = t
            }
        },
        shadowMapType: {
            get: function() {
                return this.shadowMap.type
            },
            set: function(t) {
                console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type."),
                this.shadowMap.type = t
            }
        },
        shadowMapCullFace: {
            get: function() {
                console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.")
            },
            set: function() {
                console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.")
            }
        },
        context: {
            get: function() {
                return console.warn("THREE.WebGLRenderer: .context has been removed. Use .getContext() instead."),
                this.getContext()
            }
        },
        vr: {
            get: function() {
                return console.warn("THREE.WebGLRenderer: .vr has been renamed to .xr"),
                this.xr
            }
        },
        gammaInput: {
            get: function() {
                return console.warn("THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead."),
                !1
            },
            set: function() {
                console.warn("THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.")
            }
        },
        gammaOutput: {
            get: function() {
                return console.warn("THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead."),
                !1
            },
            set: function(t) {
                console.warn("THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead."),
                this.outputEncoding = !0 === t ? ln : cn
            }
        }
    }),
    Object.defineProperties(Rs.prototype, {
        cullFace: {
            get: function() {
                console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.")
            },
            set: function() {
                console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.")
            }
        },
        renderReverseSided: {
            get: function() {
                console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.")
            },
            set: function() {
                console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.")
            }
        },
        renderSingleSided: {
            get: function() {
                console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.")
            },
            set: function() {
                console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.")
            }
        }
    }),
    Object.defineProperties(ni.prototype, {
        wrapS: {
            get: function() {
                return console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS."),
                this.texture.wrapS
            },
            set: function(t) {
                console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS."),
                this.texture.wrapS = t
            }
        },
        wrapT: {
            get: function() {
                return console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT."),
                this.texture.wrapT
            },
            set: function(t) {
                console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT."),
                this.texture.wrapT = t
            }
        },
        magFilter: {
            get: function() {
                return console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter."),
                this.texture.magFilter
            },
            set: function(t) {
                console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter."),
                this.texture.magFilter = t
            }
        },
        minFilter: {
            get: function() {
                return console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter."),
                this.texture.minFilter
            },
            set: function(t) {
                console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter."),
                this.texture.minFilter = t
            }
        },
        anisotropy: {
            get: function() {
                return console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy."),
                this.texture.anisotropy
            },
            set: function(t) {
                console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy."),
                this.texture.anisotropy = t
            }
        },
        offset: {
            get: function() {
                return console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset."),
                this.texture.offset
            },
            set: function(t) {
                console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset."),
                this.texture.offset = t
            }
        },
        repeat: {
            get: function() {
                return console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat."),
                this.texture.repeat
            },
            set: function(t) {
                console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat."),
                this.texture.repeat = t
            }
        },
        format: {
            get: function() {
                return console.warn("THREE.WebGLRenderTarget: .format is now .texture.format."),
                this.texture.format
            },
            set: function(t) {
                console.warn("THREE.WebGLRenderTarget: .format is now .texture.format."),
                this.texture.format = t
            }
        },
        type: {
            get: function() {
                return console.warn("THREE.WebGLRenderTarget: .type is now .texture.type."),
                this.texture.type
            },
            set: function(t) {
                console.warn("THREE.WebGLRenderTarget: .type is now .texture.type."),
                this.texture.type = t
            }
        },
        generateMipmaps: {
            get: function() {
                return console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps."),
                this.texture.generateMipmaps
            },
            set: function(t) {
                console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps."),
                this.texture.generateMipmaps = t
            }
        }
    }),
    Object.defineProperties($d.prototype, {
        load: {
            value: function(t) {
                console.warn("THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.");
                var e = this;
                return (new Fd).load(t, (function(t) {
                    e.setBuffer(t)
                }
                )),
                this
            }
        },
        startTime: {
            set: function() {
                console.warn("THREE.Audio: .startTime is now .play( delay ).")
            }
        }
    }),
    op.prototype.getData = function() {
        return console.warn("THREE.AudioAnalyser: .getData() is now .getFrequencyData()."),
        this.getFrequencyData()
    }
    ,
    Do.prototype.updateCubeMap = function(t, e) {
        return console.warn("THREE.CubeCamera: .updateCubeMap() is now .update()."),
        this.update(t, e)
    }
    ;
    var Cf = {
        merge: function(t, e, n) {
            var i;
            console.warn("THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead."),
            e.isMesh && (e.matrixAutoUpdate && e.updateMatrix(),
            i = e.matrix,
            e = e.geometry),
            t.merge(e, i, n)
        },
        center: function(t) {
            return console.warn("THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead."),
            t.center()
        }
    };
    function Af() {
        console.error("THREE.CanvasRenderer has been removed")
    }
    function Tf() {
        console.error("THREE.JSONLoader has been removed.")
    }
    Qn.crossOrigin = void 0,
    Qn.loadTexture = function(t, e, n, i) {
        console.warn("THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.");
        var r = new Uu;
        r.setCrossOrigin(this.crossOrigin);
        var o = r.load(t, n, void 0, i);
        return e && (o.mapping = e),
        o
    }
    ,
    Qn.loadTextureCube = function(t, e, n, i) {
        console.warn("THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.");
        var r = new Fu;
        r.setCrossOrigin(this.crossOrigin);
        var o = r.load(t, n, void 0, i);
        return e && (o.mapping = e),
        o
    }
    ,
    Qn.loadCompressedTexture = function() {
        console.error("THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.")
    }
    ,
    Qn.loadCompressedTextureCube = function() {
        console.error("THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.")
    }
    ;
    var Of = {
        createMultiMaterialObject: function() {
            console.error("THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js")
        },
        detach: function() {
            console.error("THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js")
        },
        attach: function() {
            console.error("THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js")
        }
    };
    function _f() {
        console.error("THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js")
    }
    "undefined" != typeof __THREE_DEVTOOLS__ && __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{
        detail: {
            revision: h
        }
    }))
}
, function(t, e, n) {
    var i = n(34)
      , r = n(82).f
      , o = n(88)
      , a = n(98)
      , s = n(350)
      , c = n(465)
      , l = n(289);
    t.exports = function(t, e) {
        var n, u, d, p, h, f = t.target, m = t.global, g = t.stat;
        if (n = m ? i : g ? i[f] || s(f, {}) : (i[f] || {}).prototype)
            for (u in e) {
                if (p = e[u],
                d = t.noTargetGet ? (h = r(n, u)) && h.value : n[u],
                !l(m ? u : f + (g ? "." : "#") + u, t.forced) && void 0 !== d) {
                    if (typeof p == typeof d)
                        continue;
                    c(p, d)
                }
                (t.sham || d && d.sham) && o(p, "sham", !0),
                a(n, u, p, t)
            }
    }
}
, function(t, e, n) {
    "use strict";
    n.r(e),
    n.d(e, "UpgradeComponent", (function() {
        return $
    }
    )),
    n.d(e, "UpgradeModule", (function() {
        return tt
    }
    )),
    n.d(e, "VERSION", (function() {
        return R
    }
    )),
    n.d(e, "downgradeComponent", (function() {
        return I
    }
    )),
    n.d(e, "downgradeInjectable", (function() {
        return D
    }
    )),
    n.d(e, "downgradeModule", (function() {
        return H
    }
    )),
    n.d(e, "getAngularJSGlobal", (function() {
        return p
    }
    )),
    n.d(e, "getAngularLib", (function() {
        return u
    }
    )),
    n.d(e, "setAngularJSGlobal", (function() {
        return d
    }
    )),
    n.d(e, "setAngularLib", (function() {
        return l
    }
    )),
    n.d(e, "ɵangular_packages_upgrade_static_static_a", (function() {
        return j
    }
    )),
    n.d(e, "ɵangular_packages_upgrade_static_static_b", (function() {
        return V
    }
    )),
    n.d(e, "ɵangular_packages_upgrade_static_static_c", (function() {
        return F
    }
    )),
    n.d(e, "ɵangular_packages_upgrade_static_static_d", (function() {
        return U
    }
    )),
    n.d(e, "ɵangular_packages_upgrade_static_static_e", (function() {
        return B
    }
    ));
    var i = n(1)
      , r = n(0)
      , o = n(125);
    /**
 * @license Angular v9.1.9
 * (c) 2010-2020 Google LLC. https://angular.io/
 * License: MIT
 */
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function a() {
        throw new Error("AngularJS v1.x is not loaded!")
    }
    var s = function() {
        return a()
    };
    s.cleanData = a;
    var c = {
        bootstrap: a,
        module: a,
        element: s,
        injector: a,
        version: void 0,
        resumeBootstrap: a,
        getTestability: a
    };
    try {
        window.hasOwnProperty("angular") && (c = window.angular)
    } catch (t) {}
    function l(t) {
        d(t)
    }
    function u() {
        return p()
    }
    function d(t) {
        c = t
    }
    function p() {
        return c
    }
    var h = function(t, e) {
        return c.module(t, e)
    }
      , f = function(t) {
        return c.element(t)
    };
    f.cleanData = function(t) {
        return c.element.cleanData(t)
    }
    ;
    var m = "$$angularInjector"
      , g = function() {
        function t(t, e) {
            this.prop = t,
            this.attr = e,
            this.parseBinding()
        }
        return t.prototype.parseBinding = function() {
            this.bracketAttr = "[" + this.attr + "]",
            this.parenAttr = "(" + this.attr + ")",
            this.bracketParenAttr = "[(" + this.attr + ")]";
            var t = this.attr.charAt(0).toUpperCase() + this.attr.substr(1);
            this.onAttr = "on" + t,
            this.bindAttr = "bind" + t,
            this.bindonAttr = "bindon" + t
        }
        ,
        t
    }()
      , v = /^(?:x|data)[:\-_]/i
      , y = /[:\-_]+(.)/g;
    function b(t) {
        return "$" + t + "Controller"
    }
    function w(t) {
        return t.overriddenName || t.name || t.toString().split("\n")[0]
    }
    function S(t) {
        return t.has("$$angularDowngradedModuleCount") ? t.get("$$angularDowngradedModuleCount") : 0
    }
    function x(t) {
        return t.has("$$angularUpgradeAppType") ? t.get("$$angularUpgradeAppType") : 0
    }
    function M(t) {
        return "function" == typeof t
    }
    function E(t, e, n, i) {
        var r = x(t)
          , o = S(t);
        switch (r) {
        case 1:
        case 2:
            if (e)
                throw new Error("Error while " + i + ": 'downgradedModule' unexpectedly specified.\nYou should not specify a value for 'downgradedModule', unless you are downgrading more than one Angular module (via 'downgradeModule()').");
            break;
        case 3:
            if (!e && o >= 2)
                throw new Error("Error while " + i + ": 'downgradedModule' not specified.\nThis application contains more than one downgraded Angular module, thus you need to always specify 'downgradedModule' when downgrading components and injectables.");
            if (!t.has(n))
                throw new Error("Error while " + i + ": Unable to find the specified downgraded module.\nDid you forget to downgrade an Angular module or include it in the AngularJS application?");
            break;
        default:
            throw new Error("Error while " + i + ": Not a valid '@angular/upgrade' application.\nDid you forget to downgrade an Angular module or include it in the AngularJS application?")
        }
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var C, A = {
        __UNINITIALIZED__: !0
    }, T = function() {
        function t(t, e, n, i, r, o, a, s, c, l) {
            this.element = t,
            this.attrs = e,
            this.scope = n,
            this.ngModel = i,
            this.parentInjector = r,
            this.$injector = o,
            this.$compile = a,
            this.$parse = s,
            this.componentFactory = c,
            this.wrapCallback = l,
            this.implementsOnChanges = !1,
            this.inputChangeCount = 0,
            this.inputChanges = {},
            this.componentScope = n.$new()
        }
        return t.prototype.compileContents = function() {
            var t = this
              , e = []
              , n = this.groupProjectableNodes().map((function(e) {
                return t.$compile(e)
            }
            ));
            return this.element.empty(),
            n.forEach((function(n) {
                n(t.scope, (function(n) {
                    e.push(n),
                    t.element.append(n)
                }
                ))
            }
            )),
            e
        }
        ,
        t.prototype.createComponent = function(t) {
            var e = [{
                provide: "$scope",
                useValue: this.componentScope
            }]
              , n = r.Injector.create({
                providers: e,
                parent: this.parentInjector,
                name: "DowngradeComponentAdapter"
            });
            this.componentRef = this.componentFactory.create(n, t, this.element[0]),
            this.viewChangeDetector = this.componentRef.injector.get(r.ChangeDetectorRef),
            this.changeDetector = this.componentRef.changeDetectorRef,
            this.component = this.componentRef.instance;
            var i, o, a = this.componentRef.injector.get(r.Testability, null);
            a && this.componentRef.injector.get(r.TestabilityRegistry).registerApplication(this.componentRef.location.nativeElement, a),
            i = this.ngModel,
            o = this.component,
            i && function(t) {
                return "function" == typeof t.writeValue && "function" == typeof t.registerOnChange
            }(o) && (i.$render = function() {
                o.writeValue(i.$viewValue)
            }
            ,
            o.registerOnChange(i.$setViewValue.bind(i)),
            "function" == typeof o.registerOnTouched && o.registerOnTouched(i.$setTouched.bind(i)))
        }
        ,
        t.prototype.setupInputs = function(t, e) {
            var n = this;
            void 0 === e && (e = !0);
            for (var i = this.attrs, o = this.componentFactory.inputs || [], a = function(t) {
                var e, r, a = new g(o[t].propName,o[t].templateName), c = null;
                if (i.hasOwnProperty(a.attr)) {
                    var l = (e = a.prop,
                    r = A,
                    function(t) {
                        var i, o;
                        (i = r) === (o = t) || i != i && o != o || (r === A && (r = t),
                        n.updateInput(e, r, t),
                        r = t)
                    }
                    );
                    i.$observe(a.attr, l);
                    var u = s.componentScope.$watch((function() {
                        u(),
                        u = null,
                        l(i[a.attr])
                    }
                    ))
                } else
                    i.hasOwnProperty(a.bindAttr) ? c = i[a.bindAttr] : i.hasOwnProperty(a.bracketAttr) ? c = i[a.bracketAttr] : i.hasOwnProperty(a.bindonAttr) ? c = i[a.bindonAttr] : i.hasOwnProperty(a.bracketParenAttr) && (c = i[a.bracketParenAttr]);
                if (null != c) {
                    var d = function(t) {
                        return function(e, i) {
                            return n.updateInput(t, i, e)
                        }
                    }(a.prop);
                    s.componentScope.$watch(c, d)
                }
            }, s = this, c = 0; c < o.length; c++)
                a(c);
            var l = function() {
                return n.changeDetector.detectChanges()
            }
              , u = this.componentFactory.componentType.prototype;
            if (this.implementsOnChanges = !(!u || !u.ngOnChanges),
            this.componentScope.$watch((function() {
                return n.inputChangeCount
            }
            ), this.wrapCallback((function() {
                if (n.implementsOnChanges) {
                    var t = n.inputChanges;
                    n.inputChanges = {},
                    n.component.ngOnChanges(t)
                }
                n.viewChangeDetector.markForCheck(),
                e || l()
            }
            ))),
            e && this.componentScope.$watch(this.wrapCallback(l)),
            t || !e)
                var d = this.componentScope.$watch((function() {
                    d(),
                    d = null,
                    n.parentInjector.get(r.ApplicationRef).attachView(n.componentRef.hostView)
                }
                ))
        }
        ,
        t.prototype.setupOutputs = function() {
            for (var t = this.attrs, e = this.componentFactory.outputs || [], n = 0; n < e.length; n++) {
                var i = new g(e[n].propName,e[n].templateName)
                  , r = i.bindonAttr.substring(0, i.bindonAttr.length - 6)
                  , o = "[(" + i.bracketParenAttr.substring(2, i.bracketParenAttr.length - 8) + ")]";
                t.hasOwnProperty(r) && this.subscribeToOutput(i, t[r], !0),
                t.hasOwnProperty(o) && this.subscribeToOutput(i, t[o], !0),
                t.hasOwnProperty(i.onAttr) && this.subscribeToOutput(i, t[i.onAttr]),
                t.hasOwnProperty(i.parenAttr) && this.subscribeToOutput(i, t[i.parenAttr])
            }
        }
        ,
        t.prototype.subscribeToOutput = function(t, e, n) {
            var i = this;
            void 0 === n && (n = !1);
            var r = this.$parse(e)
              , o = r.assign;
            if (n && !o)
                throw new Error("Expression '" + e + "' is not assignable!");
            var a = this.component[t.prop];
            if (!a)
                throw new Error("Missing emitter '" + t.prop + "' on component '" + w(this.componentFactory.componentType) + "'!");
            a.subscribe({
                next: n ? function(t) {
                    return o(i.scope, t)
                }
                : function(t) {
                    return r(i.scope, {
                        $event: t
                    })
                }
            })
        }
        ,
        t.prototype.registerCleanup = function() {
            var t = this
              , e = this.componentRef.injector.get(r.TestabilityRegistry)
              , n = this.wrapCallback((function() {
                return t.componentRef.destroy()
            }
            ))
              , i = !1;
            this.element.on("$destroy", (function() {
                return t.componentScope.$destroy()
            }
            )),
            this.componentScope.$on("$destroy", (function() {
                i || (i = !0,
                e.unregisterApplication(t.componentRef.location.nativeElement),
                n())
            }
            ))
        }
        ,
        t.prototype.getInjector = function() {
            return this.componentRef.injector
        }
        ,
        t.prototype.updateInput = function(t, e, n) {
            this.implementsOnChanges && (this.inputChanges[t] = new r.SimpleChange(e,n,e === n)),
            this.inputChangeCount++,
            this.component[t] = n
        }
        ,
        t.prototype.groupProjectableNodes = function() {
            return function(t, e) {
                for (var n = [], i = 0, r = t.length; i < r; ++i)
                    n[i] = [];
                for (var o = 0, a = e.length; o < a; ++o) {
                    var s = e[o]
                      , c = O(s, t);
                    null != c && n[c].push(s)
                }
                return n
            }(this.componentFactory.ngContentSelectors, this.element.contents())
        }
        ,
        t
    }();
    function O(t, e) {
        for (var n = [], i = -1, r = 0; r < e.length; r++) {
            var o = e[r];
            "*" === o ? i = r : _(t, o) && n.push(r)
        }
        return n.sort(),
        -1 !== i && n.push(i),
        n.length ? n[0] : null
    }
    function _(t, e) {
        if (!C) {
            var n = Element.prototype;
            C = n.matches || n.matchesSelector || n.mozMatchesSelector || n.msMatchesSelector || n.oMatchesSelector || n.webkitMatchesSelector
        }
        return t.nodeType === Node.ELEMENT_NODE && C.call(t, e)
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var P = function() {
        function t() {
            this.resolved = !1,
            this.callbacks = []
        }
        return t.all = function(e) {
            var n = new t
              , i = 0
              , r = []
              , o = function(t, o) {
                r[t] = o,
                ++i === e.length && n.resolve(r)
            };
            return e.forEach((function(t, e) {
                var n;
                (n = t) && M(n.then) ? t.then((function(t) {
                    return o(e, t)
                }
                )) : o(e, t)
            }
            )),
            n
        }
        ,
        t.prototype.resolve = function(t) {
            this.resolved || (this.value = t,
            this.resolved = !0,
            this.callbacks.forEach((function(e) {
                return e(t)
            }
            )),
            this.callbacks.length = 0)
        }
        ,
        t.prototype.then = function(t) {
            this.resolved ? t(this.value) : this.callbacks.push(t)
        }
        ,
        t
    }();
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function I(t) {
        var e = function(e, n, o) {
            var a, s = 3 === x(n), c = s ? function(t) {
                return function() {
                    return r.NgZone.isInAngularZone() ? t() : a.run(t)
                }
            }
            : function(t) {
                return t
            }
            , l = s && S(n) > 1;
            return {
                restrict: "E",
                terminal: !0,
                require: ["?^^$$angularInjector", "?ngModel"],
                link: function(u, d, p, h) {
                    var f = h[1]
                      , m = h[0]
                      , g = void 0
                      , v = !1;
                    if (!m || l) {
                        var y = t.downgradedModule || ""
                          , b = "$$angularLazyModuleRef" + y
                          , S = "instantiating component '" + w(t.component) + "'";
                        E(n, y, b, S);
                        var x = n.get(b);
                        g = x.injector || x.promise
                    }
                    var M = m || g
                      , C = g || m
                      , A = function(i, a) {
                        var l = a.get(r.ComponentFactoryResolver).resolveComponentFactory(t.component);
                        if (!l)
                            throw new Error("Expecting ComponentFactory for: " + w(t.component));
                        var h = new k(d)
                          , m = new T(d,p,u,f,i,n,e,o,l,c)
                          , g = m.compileContents();
                        m.createComponent(g),
                        m.setupInputs(s, t.propagateDigest),
                        m.setupOutputs(),
                        m.registerCleanup(),
                        h.resolve(m.getInjector()),
                        v && u.$evalAsync((function() {}
                        ))
                    }
                      , O = s ? function(t, e) {
                        a || (a = t.get(r.NgZone)),
                        c((function() {
                            return A(t, e)
                        }
                        ))()
                    }
                    : A;
                    P.all([M, C]).then((function(t) {
                        var e = Object(i.f)(t, 2)
                          , n = e[0]
                          , r = e[1];
                        return O(n, r)
                    }
                    )),
                    v = !0
                }
            }
        };
        return e.$inject = ["$compile", "$injector", "$parse"],
        e
    }
    var k = function(t) {
        function e(e) {
            var n = t.call(this) || this;
            return n.element = e,
            n.injectorKey = b(m),
            e.data(n.injectorKey, n),
            n
        }
        return Object(i.c)(e, t),
        e.prototype.resolve = function(e) {
            this.element.data(this.injectorKey, e),
            this.element = null,
            t.prototype.resolve.call(this, e)
        }
        ,
        e
    }(P);
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function D(t, e) {
        void 0 === e && (e = "");
        var n = function(n) {
            var i = "" + m + e
              , r = M(t) ? w(t) : String(t);
            return E(n, e, i, "instantiating injectable '" + r + "'"),
            n.get(i).get(t)
        };
        return n.$inject = ["$injector"],
        n
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var R = new r.Version("9.1.9")
      , L = null;
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function N(t) {
        L = t
    }
    function j() {
        if (!L)
            throw new Error("Trying to get the AngularJS injector before it being set.");
        var t = L;
        return L = null,
        t
    }
    function V(t) {
        return t.get("$rootScope")
    }
    function F(t) {
        return t.get("$compile")
    }
    function U(t) {
        return t.get("$parse")
    }
    var B = [{
        provide: "$injector",
        useFactory: j,
        deps: []
    }, {
        provide: "$rootScope",
        useFactory: V,
        deps: ["$injector"]
    }, {
        provide: "$compile",
        useFactory: F,
        deps: ["$injector"]
    }, {
        provide: "$parse",
        useFactory: U,
        deps: ["$injector"]
    }]
      , z = function() {
        function t(t) {
            this.modInjector = t
        }
        return t.prototype.get = function(t, e) {
            return e === r["ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR"] ? e : this.modInjector.get(t, e)
        }
        ,
        t
    }()
      , G = 0;
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function H(t) {
        var e, n = "$$UpgradeModule.lazy" + ++G, i = "$$angularLazyModuleRef" + n, r = "" + m + n, a = M(t) ? t : function(e) {
            return Object(o.platformBrowser)(e).bootstrapModuleFactory(t)
        }
        ;
        return h(n, []).constant("$$angularUpgradeAppType", 3).factory(m, [r, W]).factory(r, (function() {
            if (!e)
                throw new Error("Trying to get the Angular injector before bootstrapping the corresponding Angular module.");
            return e
        }
        )).factory("$$angularLazyModuleRef", [i, W]).factory(i, ["$injector", function(t) {
            N(t);
            var n = {
                promise: a(B).then((function(t) {
                    return (e = n.injector = new z(t.injector)).get("$injector"),
                    e
                }
                ))
            };
            return n
        }
        ]).config(["$injector", "$provide", function(t, e) {
            e.constant("$$angularDowngradedModuleCount", S(t) + 1)
        }
        ]),
        n
    }
    function W(t) {
        return t
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var q = /^(\^\^?)?(\?)?(\^\^?)?/
      , X = function() {
        function t(e, n, i, r) {
            this.injector = e,
            this.name = n,
            this.$injector = e.get("$injector"),
            this.$compile = this.$injector.get("$compile"),
            this.$controller = this.$injector.get("$controller"),
            this.element = i.nativeElement,
            this.$element = f(this.element),
            this.directive = r || t.getDirective(this.$injector, n)
        }
        return t.getDirective = function(t, e) {
            var n = t.get(e + "Directive");
            if (n.length > 1)
                throw new Error("Only support single directive definition for: " + e);
            var i = n[0];
            return i.compile && !i.link && Z(e, "compile"),
            i.replace && Z(e, "replace"),
            i.terminal && Z(e, "terminal"),
            i
        }
        ,
        t.getTemplate = function(t, e, n, i) {
            if (void 0 === n && (n = !1),
            void 0 !== e.template)
                return Y(e.template, i);
            if (e.templateUrl) {
                var r = t.get("$templateCache")
                  , o = Y(e.templateUrl, i)
                  , a = r.get(o);
                if (void 0 !== a)
                    return a;
                if (!n)
                    throw new Error("loading directive templates asynchronously is not supported");
                return new Promise((function(e, n) {
                    t.get("$httpBackend")("GET", o, null, (function(t, i) {
                        200 === t ? e(r.put(o, i)) : n("GET component template from '" + o + "' returned '" + t + ": " + i + "'")
                    }
                    ))
                }
                ))
            }
            throw new Error("Directive '" + e.name + "' is not a component, it is missing template.")
        }
        ,
        t.prototype.buildController = function(t, e) {
            var n = {
                $scope: e,
                $element: this.$element
            }
              , i = this.$controller(t, n, null, this.directive.controllerAs);
            return this.$element.data(b(this.directive.name), i),
            i
        }
        ,
        t.prototype.compileTemplate = function(e) {
            return void 0 === e && (e = t.getTemplate(this.$injector, this.directive, !1, this.$element)),
            this.compileHtml(e)
        }
        ,
        t.prototype.onDestroy = function(t, e) {
            e && M(e.$onDestroy) && e.$onDestroy(),
            t.$destroy(),
            f.cleanData([this.element]),
            f.cleanData(this.element.querySelectorAll("*"))
        }
        ,
        t.prototype.prepareTransclusion = function() {
            var t = this
              , e = this.directive.transclude
              , n = this.extractChildNodes()
              , i = function(t, e) {
                return e(r, t = t || {
                    $destroy: function() {}
                })
            }
              , r = n;
            if (e) {
                var o = Object.create(null);
                if ("object" == typeof e) {
                    r = [];
                    var a = Object.create(null)
                      , s = Object.create(null);
                    Object.keys(e).forEach((function(t) {
                        var n = e[t]
                          , i = "?" === n.charAt(0);
                        n = i ? n.substring(1) : n,
                        a[n] = t,
                        o[t] = null,
                        s[t] = i
                    }
                    )),
                    n.forEach((function(t) {
                        var e = a[function(t) {
                            return t.replace(v, "").replace(y, (function(t, e) {
                                return e.toUpperCase()
                            }
                            ))
                        }(t.nodeName.toLowerCase())];
                        e ? (s[e] = !0,
                        o[e] = o[e] || [],
                        o[e].push(t)) : r.push(t)
                    }
                    )),
                    Object.keys(s).forEach((function(e) {
                        if (!s[e])
                            throw new Error("Required transclusion slot '" + e + "' on directive: " + t.name)
                    }
                    )),
                    Object.keys(o).filter((function(t) {
                        return o[t]
                    }
                    )).forEach((function(t) {
                        var e = o[t];
                        o[t] = function(t, n) {
                            return n(e, t)
                        }
                    }
                    ))
                }
                i.$$slots = o,
                r.forEach((function(t) {
                    t.nodeType !== Node.TEXT_NODE || t.nodeValue || (t.nodeValue = "‌")
                }
                ))
            }
            return i
        }
        ,
        t.prototype.resolveAndBindRequiredControllers = function(t) {
            var e = this.getDirectiveRequire()
              , n = this.resolveRequire(e);
            if (t && this.directive.bindToController && K(e)) {
                var i = n;
                Object.keys(i).forEach((function(e) {
                    t[e] = i[e]
                }
                ))
            }
            return n
        }
        ,
        t.prototype.compileHtml = function(t) {
            return this.element.innerHTML = t,
            this.$compile(this.element.childNodes)
        }
        ,
        t.prototype.extractChildNodes = function() {
            for (var t, e = []; t = this.element.firstChild; )
                this.element.removeChild(t),
                e.push(t);
            return e
        }
        ,
        t.prototype.getDirectiveRequire = function() {
            var t = this.directive.require || this.directive.controller && this.directive.name;
            return K(t) && Object.keys(t).forEach((function(e) {
                var n = t[e]
                  , i = n.match(q);
                n.substring(i[0].length) || (t[e] = i[0] + e)
            }
            )),
            t
        }
        ,
        t.prototype.resolveRequire = function(t, e) {
            var n = this;
            if (t) {
                if (Array.isArray(t))
                    return t.map((function(t) {
                        return n.resolveRequire(t)
                    }
                    ));
                if ("object" == typeof t) {
                    var i = {};
                    return Object.keys(t).forEach((function(e) {
                        return i[e] = n.resolveRequire(t[e])
                    }
                    )),
                    i
                }
                if ("string" == typeof t) {
                    var r = t.match(q)
                      , o = r[1] || r[3]
                      , a = t.substring(r[0].length)
                      , s = !!r[2]
                      , c = !!o
                      , l = "^^" === o
                      , u = b(a)
                      , d = l ? this.$element.parent() : this.$element
                      , p = c ? d.inheritedData(u) : d.data(u);
                    if (!p && !s)
                        throw new Error("Unable to find required '" + t + "' in upgraded directive '" + this.name + "'.");
                    return p
                }
                throw new Error("Unrecognized 'require' syntax on upgraded directive '" + this.name + "': " + t)
            }
            return null
        }
        ,
        t
    }();
    function Y(t) {
        for (var e = [], n = 1; n < arguments.length; n++)
            e[n - 1] = arguments[n];
        return M(t) ? t.apply(void 0, Object(i.h)(e)) : t
    }
    function K(t) {
        return t && !Array.isArray(t) && "object" == typeof t
    }
    function Z(t, e) {
        throw new Error("Upgraded directive '" + t + "' contains unsupported feature: '" + e + "'.")
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var J = {
        __UNINITIALIZED__: !0
    }
      , Q = function() {
        this.twoWayBoundProperties = [],
        this.twoWayBoundLastValues = [],
        this.expressionBoundProperties = [],
        this.propertyToOutputMap = {}
    }
      , $ = function() {
        function t(t, e, n) {
            this.name = t,
            this.elementRef = e,
            this.injector = n,
            this.helper = new X(n,t,e),
            this.$injector = this.helper.$injector,
            this.element = this.helper.element,
            this.$element = this.helper.$element,
            this.directive = this.helper.directive,
            this.bindings = this.initializeBindings(this.directive);
            var i = n.get("$scope");
            this.$componentScope = i.$new(!!this.directive.scope),
            this.initializeOutputs()
        }
        return t.prototype.ngOnInit = function() {
            var t = this
              , e = this.helper.prepareTransclusion()
              , n = this.helper.compileTemplate()
              , i = this.directive.controller
              , r = this.directive.bindToController;
            if (i)
                this.controllerInstance = this.helper.buildController(i, this.$componentScope);
            else if (r)
                throw new Error("Upgraded directive '" + this.directive.name + "' specifies 'bindToController' but no controller.");
            this.bindingDestination = r ? this.controllerInstance : this.$componentScope,
            this.bindOutputs();
            var o = this.helper.resolveAndBindRequiredControllers(this.controllerInstance);
            if (this.pendingChanges && (this.forwardChanges(this.pendingChanges),
            this.pendingChanges = null),
            this.controllerInstance && M(this.controllerInstance.$onInit) && this.controllerInstance.$onInit(),
            this.controllerInstance && M(this.controllerInstance.$doCheck)) {
                var a = function() {
                    return t.controllerInstance.$doCheck()
                };
                this.unregisterDoCheckWatcher = this.$componentScope.$parent.$watch(a),
                a()
            }
            var s = this.directive.link
              , c = "object" == typeof s && s.pre
              , l = "object" == typeof s ? s.post : s;
            c && c(this.$componentScope, this.$element, "NOT_SUPPORTED", o, "NOT_SUPPORTED"),
            n(this.$componentScope, null, {
                parentBoundTranscludeFn: e
            }),
            l && l(this.$componentScope, this.$element, "NOT_SUPPORTED", o, "NOT_SUPPORTED"),
            this.controllerInstance && M(this.controllerInstance.$postLink) && this.controllerInstance.$postLink()
        }
        ,
        t.prototype.ngOnChanges = function(t) {
            this.bindingDestination ? this.forwardChanges(t) : this.pendingChanges = t
        }
        ,
        t.prototype.ngDoCheck = function() {
            var t = this
              , e = this.bindings.twoWayBoundProperties
              , n = this.bindings.twoWayBoundLastValues
              , i = this.bindings.propertyToOutputMap;
            e.forEach((function(e, o) {
                var a = t.bindingDestination[e]
                  , s = n[o];
                if (!Object(r["ɵlooseIdentical"])(a, s)) {
                    var c = i[e];
                    t[c].emit(a),
                    n[o] = a
                }
            }
            ))
        }
        ,
        t.prototype.ngOnDestroy = function() {
            M(this.unregisterDoCheckWatcher) && this.unregisterDoCheckWatcher(),
            this.helper.onDestroy(this.$componentScope, this.controllerInstance)
        }
        ,
        t.prototype.initializeBindings = function(t) {
            var e = this
              , n = "object" == typeof t.bindToController;
            if (n && Object.keys(t.scope).length)
                throw new Error("Binding definitions on scope and controller at the same time is not supported.");
            var i = n ? t.bindToController : t.scope
              , r = new Q;
            return "object" == typeof i && Object.keys(i).forEach((function(t) {
                var n = i[t].charAt(0);
                switch (n) {
                case "@":
                case "<":
                    break;
                case "=":
                    r.twoWayBoundProperties.push(t),
                    r.twoWayBoundLastValues.push(J),
                    r.propertyToOutputMap[t] = t + "Change";
                    break;
                case "&":
                    r.expressionBoundProperties.push(t),
                    r.propertyToOutputMap[t] = t;
                    break;
                default:
                    var o = JSON.stringify(i);
                    throw new Error("Unexpected mapping '" + n + "' in '" + o + "' in '" + e.name + "' directive.")
                }
            }
            )),
            r
        }
        ,
        t.prototype.initializeOutputs = function() {
            var t = this;
            this.bindings.twoWayBoundProperties.concat(this.bindings.expressionBoundProperties).forEach((function(e) {
                var n = t.bindings.propertyToOutputMap[e];
                t[n] = new r.EventEmitter
            }
            ))
        }
        ,
        t.prototype.bindOutputs = function() {
            var t = this;
            this.bindings.expressionBoundProperties.forEach((function(e) {
                var n = t.bindings.propertyToOutputMap[e]
                  , i = t[n];
                t.bindingDestination[e] = function(t) {
                    return i.emit(t)
                }
            }
            ))
        }
        ,
        t.prototype.forwardChanges = function(t) {
            var e = this;
            Object.keys(t).forEach((function(n) {
                return e.bindingDestination[n] = t[n].currentValue
            }
            )),
            M(this.bindingDestination.$onChanges) && this.bindingDestination.$onChanges(t)
        }
        ,
        t.ɵfac = function(t) {
            r["ɵɵinvalidFactory"]()
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            features: [r["ɵɵNgOnChangesFeature"]]
        }),
        t
    }()
      , tt = function() {
        function t(t, e) {
            this.ngZone = e,
            this.injector = new z(t)
        }
        return t.prototype.bootstrap = function(t, e, n) {
            var o = this;
            void 0 === e && (e = []);
            var a = "$$UpgradeModule.init"
              , s = (h(a, []).constant("$$angularUpgradeAppType", 2).value(m, this.injector).factory("$$angularLazyModuleRef", [m, function(t) {
                return {
                    injector: t
                }
            }
            ]).config(["$provide", "$injector", function(t, e) {
                e.has("$$testability") && t.decorator("$$testability", ["$delegate", function(t) {
                    var e = t.whenStable
                      , n = o.injector
                      , i = function(o) {
                        e.call(t, (function() {
                            var e = n.get(r.Testability);
                            e.isStable() ? o() : e.whenStable(i.bind(t, o))
                        }
                        ))
                    };
                    return t.whenStable = i,
                    t
                }
                ]),
                e.has("$interval") && t.decorator("$interval", ["$delegate", function(t) {
                    var e = function(e, n, r, a) {
                        for (var s = [], c = 4; c < arguments.length; c++)
                            s[c - 4] = arguments[c];
                        return o.ngZone.runOutsideAngular((function() {
                            return t.apply(void 0, Object(i.h)([function() {
                                for (var t = [], n = 0; n < arguments.length; n++)
                                    t[n] = arguments[n];
                                setTimeout((function() {
                                    o.ngZone.run((function() {
                                        return e.apply(void 0, Object(i.h)(t))
                                    }
                                    ))
                                }
                                ))
                            }
                            , n, r, a], s))
                        }
                        ))
                    };
                    return e.cancel = t.cancel,
                    e
                }
                ])
            }
            ]).run(["$injector", function(e) {
                o.$injector = e,
                N(e),
                o.injector.get("$injector"),
                f(t).data(b(m), o.injector),
                setTimeout((function() {
                    var t = e.get("$rootScope")
                      , n = o.ngZone.onMicrotaskEmpty.subscribe((function() {
                        return t.$$phase ? (Object(r.isDevMode)() && console.warn("A digest was triggered while one was already in progress. This may mean that something is triggering digests outside the Angular zone."),
                        t.$evalAsync()) : t.$digest()
                    }
                    ));
                    t.$on("$destroy", (function() {
                        n.unsubscribe()
                    }
                    ))
                }
                ), 0)
            }
            ]),
            h("$$UpgradeModule", [a].concat(e)))
              , l = window.angular;
            if (l.resumeBootstrap = void 0,
            this.ngZone.run((function() {
                !function(t, e, n) {
                    c.bootstrap(t, e, n)
                }(t, [s.name], n)
            }
            )),
            l.resumeBootstrap) {
                var u = l.resumeBootstrap
                  , d = this.ngZone;
                l.resumeBootstrap = function() {
                    var t = this
                      , e = arguments;
                    return l.resumeBootstrap = u,
                    d.run((function() {
                        return l.resumeBootstrap.apply(t, e)
                    }
                    ))
                }
            }
        }
        ,
        (t = Object(i.b)([Object(i.d)("design:paramtypes", [r.Injector, r.NgZone])], t)).ɵmod = r["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = r["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)(r["ɵɵinject"](r.Injector),r["ɵɵinject"](r.NgZone))
            },
            providers: [B]
        }),
        t
    }()
}
, function(t, e, n) {
    (function(t, i) {
        var r;
        /**
 * @license
 * Lodash <https://lodash.com/>
 * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
 * Released under MIT license <https://lodash.com/license>
 * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
 */
        (function() {
            var o = "Expected a function"
              , a = "__lodash_placeholder__"
              , s = [["ary", 128], ["bind", 1], ["bindKey", 2], ["curry", 8], ["curryRight", 16], ["flip", 512], ["partial", 32], ["partialRight", 64], ["rearg", 256]]
              , c = "[object Arguments]"
              , l = "[object Array]"
              , u = "[object Boolean]"
              , d = "[object Date]"
              , p = "[object Error]"
              , h = "[object Function]"
              , f = "[object GeneratorFunction]"
              , m = "[object Map]"
              , g = "[object Number]"
              , v = "[object Object]"
              , y = "[object RegExp]"
              , b = "[object Set]"
              , w = "[object String]"
              , S = "[object Symbol]"
              , x = "[object WeakMap]"
              , M = "[object ArrayBuffer]"
              , E = "[object DataView]"
              , C = "[object Float32Array]"
              , A = "[object Float64Array]"
              , T = "[object Int8Array]"
              , O = "[object Int16Array]"
              , _ = "[object Int32Array]"
              , P = "[object Uint8Array]"
              , I = "[object Uint16Array]"
              , k = "[object Uint32Array]"
              , D = /\b__p \+= '';/g
              , R = /\b(__p \+=) '' \+/g
              , L = /(__e\(.*?\)|\b__t\)) \+\n'';/g
              , N = /&(?:amp|lt|gt|quot|#39);/g
              , j = /[&<>"']/g
              , V = RegExp(N.source)
              , F = RegExp(j.source)
              , U = /<%-([\s\S]+?)%>/g
              , B = /<%([\s\S]+?)%>/g
              , z = /<%=([\s\S]+?)%>/g
              , G = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/
              , H = /^\w*$/
              , W = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g
              , q = /[\\^$.*+?()[\]{}|]/g
              , X = RegExp(q.source)
              , Y = /^\s+|\s+$/g
              , K = /^\s+/
              , Z = /\s+$/
              , J = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/
              , Q = /\{\n\/\* \[wrapped with (.+)\] \*/
              , $ = /,? & /
              , tt = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g
              , et = /\\(\\)?/g
              , nt = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g
              , it = /\w*$/
              , rt = /^[-+]0x[0-9a-f]+$/i
              , ot = /^0b[01]+$/i
              , at = /^\[object .+?Constructor\]$/
              , st = /^0o[0-7]+$/i
              , ct = /^(?:0|[1-9]\d*)$/
              , lt = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g
              , ut = /($^)/
              , dt = /['\n\r\u2028\u2029\\]/g
              , pt = "\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff"
              , ht = "\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000"
              , ft = "[\\ud800-\\udfff]"
              , mt = "[" + ht + "]"
              , gt = "[" + pt + "]"
              , vt = "\\d+"
              , yt = "[\\u2700-\\u27bf]"
              , bt = "[a-z\\xdf-\\xf6\\xf8-\\xff]"
              , wt = "[^\\ud800-\\udfff" + ht + vt + "\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]"
              , St = "\\ud83c[\\udffb-\\udfff]"
              , xt = "[^\\ud800-\\udfff]"
              , Mt = "(?:\\ud83c[\\udde6-\\uddff]){2}"
              , Et = "[\\ud800-\\udbff][\\udc00-\\udfff]"
              , Ct = "[A-Z\\xc0-\\xd6\\xd8-\\xde]"
              , At = "(?:" + bt + "|" + wt + ")"
              , Tt = "(?:" + Ct + "|" + wt + ")"
              , Ot = "(?:" + gt + "|" + St + ")" + "?"
              , _t = "[\\ufe0e\\ufe0f]?" + Ot + ("(?:\\u200d(?:" + [xt, Mt, Et].join("|") + ")[\\ufe0e\\ufe0f]?" + Ot + ")*")
              , Pt = "(?:" + [yt, Mt, Et].join("|") + ")" + _t
              , It = "(?:" + [xt + gt + "?", gt, Mt, Et, ft].join("|") + ")"
              , kt = RegExp("['’]", "g")
              , Dt = RegExp(gt, "g")
              , Rt = RegExp(St + "(?=" + St + ")|" + It + _t, "g")
              , Lt = RegExp([Ct + "?" + bt + "+(?:['’](?:d|ll|m|re|s|t|ve))?(?=" + [mt, Ct, "$"].join("|") + ")", Tt + "+(?:['’](?:D|LL|M|RE|S|T|VE))?(?=" + [mt, Ct + At, "$"].join("|") + ")", Ct + "?" + At + "+(?:['’](?:d|ll|m|re|s|t|ve))?", Ct + "+(?:['’](?:D|LL|M|RE|S|T|VE))?", "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", vt, Pt].join("|"), "g")
              , Nt = RegExp("[\\u200d\\ud800-\\udfff" + pt + "\\ufe0e\\ufe0f]")
              , jt = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/
              , Vt = ["Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout"]
              , Ft = -1
              , Ut = {};
            Ut[C] = Ut[A] = Ut[T] = Ut[O] = Ut[_] = Ut[P] = Ut["[object Uint8ClampedArray]"] = Ut[I] = Ut[k] = !0,
            Ut[c] = Ut[l] = Ut[M] = Ut[u] = Ut[E] = Ut[d] = Ut[p] = Ut[h] = Ut[m] = Ut[g] = Ut[v] = Ut[y] = Ut[b] = Ut[w] = Ut[x] = !1;
            var Bt = {};
            Bt[c] = Bt[l] = Bt[M] = Bt[E] = Bt[u] = Bt[d] = Bt[C] = Bt[A] = Bt[T] = Bt[O] = Bt[_] = Bt[m] = Bt[g] = Bt[v] = Bt[y] = Bt[b] = Bt[w] = Bt[S] = Bt[P] = Bt["[object Uint8ClampedArray]"] = Bt[I] = Bt[k] = !0,
            Bt[p] = Bt[h] = Bt[x] = !1;
            var zt = {
                "\\": "\\",
                "'": "'",
                "\n": "n",
                "\r": "r",
                "\u2028": "u2028",
                "\u2029": "u2029"
            }
              , Gt = parseFloat
              , Ht = parseInt
              , Wt = "object" == typeof t && t && t.Object === Object && t
              , qt = "object" == typeof self && self && self.Object === Object && self
              , Xt = Wt || qt || Function("return this")()
              , Yt = e && !e.nodeType && e
              , Kt = Yt && "object" == typeof i && i && !i.nodeType && i
              , Zt = Kt && Kt.exports === Yt
              , Jt = Zt && Wt.process
              , Qt = function() {
                try {
                    var t = Kt && Kt.require && Kt.require("util").types;
                    return t || Jt && Jt.binding && Jt.binding("util")
                } catch (t) {}
            }()
              , $t = Qt && Qt.isArrayBuffer
              , te = Qt && Qt.isDate
              , ee = Qt && Qt.isMap
              , ne = Qt && Qt.isRegExp
              , ie = Qt && Qt.isSet
              , re = Qt && Qt.isTypedArray;
            function oe(t, e, n) {
                switch (n.length) {
                case 0:
                    return t.call(e);
                case 1:
                    return t.call(e, n[0]);
                case 2:
                    return t.call(e, n[0], n[1]);
                case 3:
                    return t.call(e, n[0], n[1], n[2])
                }
                return t.apply(e, n)
            }
            function ae(t, e, n, i) {
                for (var r = -1, o = null == t ? 0 : t.length; ++r < o; ) {
                    var a = t[r];
                    e(i, a, n(a), t)
                }
                return i
            }
            function se(t, e) {
                for (var n = -1, i = null == t ? 0 : t.length; ++n < i && !1 !== e(t[n], n, t); )
                    ;
                return t
            }
            function ce(t, e) {
                for (var n = null == t ? 0 : t.length; n-- && !1 !== e(t[n], n, t); )
                    ;
                return t
            }
            function le(t, e) {
                for (var n = -1, i = null == t ? 0 : t.length; ++n < i; )
                    if (!e(t[n], n, t))
                        return !1;
                return !0
            }
            function ue(t, e) {
                for (var n = -1, i = null == t ? 0 : t.length, r = 0, o = []; ++n < i; ) {
                    var a = t[n];
                    e(a, n, t) && (o[r++] = a)
                }
                return o
            }
            function de(t, e) {
                return !!(null == t ? 0 : t.length) && Se(t, e, 0) > -1
            }
            function pe(t, e, n) {
                for (var i = -1, r = null == t ? 0 : t.length; ++i < r; )
                    if (n(e, t[i]))
                        return !0;
                return !1
            }
            function he(t, e) {
                for (var n = -1, i = null == t ? 0 : t.length, r = Array(i); ++n < i; )
                    r[n] = e(t[n], n, t);
                return r
            }
            function fe(t, e) {
                for (var n = -1, i = e.length, r = t.length; ++n < i; )
                    t[r + n] = e[n];
                return t
            }
            function me(t, e, n, i) {
                var r = -1
                  , o = null == t ? 0 : t.length;
                for (i && o && (n = t[++r]); ++r < o; )
                    n = e(n, t[r], r, t);
                return n
            }
            function ge(t, e, n, i) {
                var r = null == t ? 0 : t.length;
                for (i && r && (n = t[--r]); r--; )
                    n = e(n, t[r], r, t);
                return n
            }
            function ve(t, e) {
                for (var n = -1, i = null == t ? 0 : t.length; ++n < i; )
                    if (e(t[n], n, t))
                        return !0;
                return !1
            }
            var ye = Ce("length");
            function be(t, e, n) {
                var i;
                return n(t, (function(t, n, r) {
                    if (e(t, n, r))
                        return i = n,
                        !1
                }
                )),
                i
            }
            function we(t, e, n, i) {
                for (var r = t.length, o = n + (i ? 1 : -1); i ? o-- : ++o < r; )
                    if (e(t[o], o, t))
                        return o;
                return -1
            }
            function Se(t, e, n) {
                return e == e ? function(t, e, n) {
                    var i = n - 1
                      , r = t.length;
                    for (; ++i < r; )
                        if (t[i] === e)
                            return i;
                    return -1
                }(t, e, n) : we(t, Me, n)
            }
            function xe(t, e, n, i) {
                for (var r = n - 1, o = t.length; ++r < o; )
                    if (i(t[r], e))
                        return r;
                return -1
            }
            function Me(t) {
                return t != t
            }
            function Ee(t, e) {
                var n = null == t ? 0 : t.length;
                return n ? Oe(t, e) / n : NaN
            }
            function Ce(t) {
                return function(e) {
                    return null == e ? void 0 : e[t]
                }
            }
            function Ae(t) {
                return function(e) {
                    return null == t ? void 0 : t[e]
                }
            }
            function Te(t, e, n, i, r) {
                return r(t, (function(t, r, o) {
                    n = i ? (i = !1,
                    t) : e(n, t, r, o)
                }
                )),
                n
            }
            function Oe(t, e) {
                for (var n, i = -1, r = t.length; ++i < r; ) {
                    var o = e(t[i]);
                    void 0 !== o && (n = void 0 === n ? o : n + o)
                }
                return n
            }
            function _e(t, e) {
                for (var n = -1, i = Array(t); ++n < t; )
                    i[n] = e(n);
                return i
            }
            function Pe(t) {
                return function(e) {
                    return t(e)
                }
            }
            function Ie(t, e) {
                return he(e, (function(e) {
                    return t[e]
                }
                ))
            }
            function ke(t, e) {
                return t.has(e)
            }
            function De(t, e) {
                for (var n = -1, i = t.length; ++n < i && Se(e, t[n], 0) > -1; )
                    ;
                return n
            }
            function Re(t, e) {
                for (var n = t.length; n-- && Se(e, t[n], 0) > -1; )
                    ;
                return n
            }
            function Le(t, e) {
                for (var n = t.length, i = 0; n--; )
                    t[n] === e && ++i;
                return i
            }
            var Ne = Ae({
                "À": "A",
                "Á": "A",
                "Â": "A",
                "Ã": "A",
                "Ä": "A",
                "Å": "A",
                "à": "a",
                "á": "a",
                "â": "a",
                "ã": "a",
                "ä": "a",
                "å": "a",
                "Ç": "C",
                "ç": "c",
                "Ð": "D",
                "ð": "d",
                "È": "E",
                "É": "E",
                "Ê": "E",
                "Ë": "E",
                "è": "e",
                "é": "e",
                "ê": "e",
                "ë": "e",
                "Ì": "I",
                "Í": "I",
                "Î": "I",
                "Ï": "I",
                "ì": "i",
                "í": "i",
                "î": "i",
                "ï": "i",
                "Ñ": "N",
                "ñ": "n",
                "Ò": "O",
                "Ó": "O",
                "Ô": "O",
                "Õ": "O",
                "Ö": "O",
                "Ø": "O",
                "ò": "o",
                "ó": "o",
                "ô": "o",
                "õ": "o",
                "ö": "o",
                "ø": "o",
                "Ù": "U",
                "Ú": "U",
                "Û": "U",
                "Ü": "U",
                "ù": "u",
                "ú": "u",
                "û": "u",
                "ü": "u",
                "Ý": "Y",
                "ý": "y",
                "ÿ": "y",
                "Æ": "Ae",
                "æ": "ae",
                "Þ": "Th",
                "þ": "th",
                "ß": "ss",
                "Ā": "A",
                "Ă": "A",
                "Ą": "A",
                "ā": "a",
                "ă": "a",
                "ą": "a",
                "Ć": "C",
                "Ĉ": "C",
                "Ċ": "C",
                "Č": "C",
                "ć": "c",
                "ĉ": "c",
                "ċ": "c",
                "č": "c",
                "Ď": "D",
                "Đ": "D",
                "ď": "d",
                "đ": "d",
                "Ē": "E",
                "Ĕ": "E",
                "Ė": "E",
                "Ę": "E",
                "Ě": "E",
                "ē": "e",
                "ĕ": "e",
                "ė": "e",
                "ę": "e",
                "ě": "e",
                "Ĝ": "G",
                "Ğ": "G",
                "Ġ": "G",
                "Ģ": "G",
                "ĝ": "g",
                "ğ": "g",
                "ġ": "g",
                "ģ": "g",
                "Ĥ": "H",
                "Ħ": "H",
                "ĥ": "h",
                "ħ": "h",
                "Ĩ": "I",
                "Ī": "I",
                "Ĭ": "I",
                "Į": "I",
                "İ": "I",
                "ĩ": "i",
                "ī": "i",
                "ĭ": "i",
                "į": "i",
                "ı": "i",
                "Ĵ": "J",
                "ĵ": "j",
                "Ķ": "K",
                "ķ": "k",
                "ĸ": "k",
                "Ĺ": "L",
                "Ļ": "L",
                "Ľ": "L",
                "Ŀ": "L",
                "Ł": "L",
                "ĺ": "l",
                "ļ": "l",
                "ľ": "l",
                "ŀ": "l",
                "ł": "l",
                "Ń": "N",
                "Ņ": "N",
                "Ň": "N",
                "Ŋ": "N",
                "ń": "n",
                "ņ": "n",
                "ň": "n",
                "ŋ": "n",
                "Ō": "O",
                "Ŏ": "O",
                "Ő": "O",
                "ō": "o",
                "ŏ": "o",
                "ő": "o",
                "Ŕ": "R",
                "Ŗ": "R",
                "Ř": "R",
                "ŕ": "r",
                "ŗ": "r",
                "ř": "r",
                "Ś": "S",
                "Ŝ": "S",
                "Ş": "S",
                "Š": "S",
                "ś": "s",
                "ŝ": "s",
                "ş": "s",
                "š": "s",
                "Ţ": "T",
                "Ť": "T",
                "Ŧ": "T",
                "ţ": "t",
                "ť": "t",
                "ŧ": "t",
                "Ũ": "U",
                "Ū": "U",
                "Ŭ": "U",
                "Ů": "U",
                "Ű": "U",
                "Ų": "U",
                "ũ": "u",
                "ū": "u",
                "ŭ": "u",
                "ů": "u",
                "ű": "u",
                "ų": "u",
                "Ŵ": "W",
                "ŵ": "w",
                "Ŷ": "Y",
                "ŷ": "y",
                "Ÿ": "Y",
                "Ź": "Z",
                "Ż": "Z",
                "Ž": "Z",
                "ź": "z",
                "ż": "z",
                "ž": "z",
                "Ĳ": "IJ",
                "ĳ": "ij",
                "Œ": "Oe",
                "œ": "oe",
                "ŉ": "'n",
                "ſ": "s"
            })
              , je = Ae({
                "&": "&amp;",
                "<": "&lt;",
                ">": "&gt;",
                '"': "&quot;",
                "'": "&#39;"
            });
            function Ve(t) {
                return "\\" + zt[t]
            }
            function Fe(t) {
                return Nt.test(t)
            }
            function Ue(t) {
                var e = -1
                  , n = Array(t.size);
                return t.forEach((function(t, i) {
                    n[++e] = [i, t]
                }
                )),
                n
            }
            function Be(t, e) {
                return function(n) {
                    return t(e(n))
                }
            }
            function ze(t, e) {
                for (var n = -1, i = t.length, r = 0, o = []; ++n < i; ) {
                    var s = t[n];
                    s !== e && s !== a || (t[n] = a,
                    o[r++] = n)
                }
                return o
            }
            function Ge(t) {
                var e = -1
                  , n = Array(t.size);
                return t.forEach((function(t) {
                    n[++e] = t
                }
                )),
                n
            }
            function He(t) {
                var e = -1
                  , n = Array(t.size);
                return t.forEach((function(t) {
                    n[++e] = [t, t]
                }
                )),
                n
            }
            function We(t) {
                return Fe(t) ? function(t) {
                    var e = Rt.lastIndex = 0;
                    for (; Rt.test(t); )
                        ++e;
                    return e
                }(t) : ye(t)
            }
            function qe(t) {
                return Fe(t) ? function(t) {
                    return t.match(Rt) || []
                }(t) : function(t) {
                    return t.split("")
                }(t)
            }
            var Xe = Ae({
                "&amp;": "&",
                "&lt;": "<",
                "&gt;": ">",
                "&quot;": '"',
                "&#39;": "'"
            });
            var Ye = function t(e) {
                var n, i = (e = null == e ? Xt : Ye.defaults(Xt.Object(), e, Ye.pick(Xt, Vt))).Array, r = e.Date, pt = e.Error, ht = e.Function, ft = e.Math, mt = e.Object, gt = e.RegExp, vt = e.String, yt = e.TypeError, bt = i.prototype, wt = ht.prototype, St = mt.prototype, xt = e["__core-js_shared__"], Mt = wt.toString, Et = St.hasOwnProperty, Ct = 0, At = (n = /[^.]+$/.exec(xt && xt.keys && xt.keys.IE_PROTO || "")) ? "Symbol(src)_1." + n : "", Tt = St.toString, Ot = Mt.call(mt), _t = Xt._, Pt = gt("^" + Mt.call(Et).replace(q, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"), It = Zt ? e.Buffer : void 0, Rt = e.Symbol, Nt = e.Uint8Array, zt = It ? It.allocUnsafe : void 0, Wt = Be(mt.getPrototypeOf, mt), qt = mt.create, Yt = St.propertyIsEnumerable, Kt = bt.splice, Jt = Rt ? Rt.isConcatSpreadable : void 0, Qt = Rt ? Rt.iterator : void 0, ye = Rt ? Rt.toStringTag : void 0, Ae = function() {
                    try {
                        var t = $r(mt, "defineProperty");
                        return t({}, "", {}),
                        t
                    } catch (t) {}
                }(), Ke = e.clearTimeout !== Xt.clearTimeout && e.clearTimeout, Ze = r && r.now !== Xt.Date.now && r.now, Je = e.setTimeout !== Xt.setTimeout && e.setTimeout, Qe = ft.ceil, $e = ft.floor, tn = mt.getOwnPropertySymbols, en = It ? It.isBuffer : void 0, nn = e.isFinite, rn = bt.join, on = Be(mt.keys, mt), an = ft.max, sn = ft.min, cn = r.now, ln = e.parseInt, un = ft.random, dn = bt.reverse, pn = $r(e, "DataView"), hn = $r(e, "Map"), fn = $r(e, "Promise"), mn = $r(e, "Set"), gn = $r(e, "WeakMap"), vn = $r(mt, "create"), yn = gn && new gn, bn = {}, wn = To(pn), Sn = To(hn), xn = To(fn), Mn = To(mn), En = To(gn), Cn = Rt ? Rt.prototype : void 0, An = Cn ? Cn.valueOf : void 0, Tn = Cn ? Cn.toString : void 0;
                function On(t) {
                    if (Ha(t) && !Da(t) && !(t instanceof kn)) {
                        if (t instanceof In)
                            return t;
                        if (Et.call(t, "__wrapped__"))
                            return Oo(t)
                    }
                    return new In(t)
                }
                var _n = function() {
                    function t() {}
                    return function(e) {
                        if (!Ga(e))
                            return {};
                        if (qt)
                            return qt(e);
                        t.prototype = e;
                        var n = new t;
                        return t.prototype = void 0,
                        n
                    }
                }();
                function Pn() {}
                function In(t, e) {
                    this.__wrapped__ = t,
                    this.__actions__ = [],
                    this.__chain__ = !!e,
                    this.__index__ = 0,
                    this.__values__ = void 0
                }
                function kn(t) {
                    this.__wrapped__ = t,
                    this.__actions__ = [],
                    this.__dir__ = 1,
                    this.__filtered__ = !1,
                    this.__iteratees__ = [],
                    this.__takeCount__ = 4294967295,
                    this.__views__ = []
                }
                function Dn(t) {
                    var e = -1
                      , n = null == t ? 0 : t.length;
                    for (this.clear(); ++e < n; ) {
                        var i = t[e];
                        this.set(i[0], i[1])
                    }
                }
                function Rn(t) {
                    var e = -1
                      , n = null == t ? 0 : t.length;
                    for (this.clear(); ++e < n; ) {
                        var i = t[e];
                        this.set(i[0], i[1])
                    }
                }
                function Ln(t) {
                    var e = -1
                      , n = null == t ? 0 : t.length;
                    for (this.clear(); ++e < n; ) {
                        var i = t[e];
                        this.set(i[0], i[1])
                    }
                }
                function Nn(t) {
                    var e = -1
                      , n = null == t ? 0 : t.length;
                    for (this.__data__ = new Ln; ++e < n; )
                        this.add(t[e])
                }
                function jn(t) {
                    var e = this.__data__ = new Rn(t);
                    this.size = e.size
                }
                function Vn(t, e) {
                    var n = Da(t)
                      , i = !n && ka(t)
                      , r = !n && !i && ja(t)
                      , o = !n && !i && !r && Qa(t)
                      , a = n || i || r || o
                      , s = a ? _e(t.length, vt) : []
                      , c = s.length;
                    for (var l in t)
                        !e && !Et.call(t, l) || a && ("length" == l || r && ("offset" == l || "parent" == l) || o && ("buffer" == l || "byteLength" == l || "byteOffset" == l) || ao(l, c)) || s.push(l);
                    return s
                }
                function Fn(t) {
                    var e = t.length;
                    return e ? t[Ni(0, e - 1)] : void 0
                }
                function Un(t, e) {
                    return Eo(vr(t), Kn(e, 0, t.length))
                }
                function Bn(t) {
                    return Eo(vr(t))
                }
                function zn(t, e, n) {
                    (void 0 !== n && !_a(t[e], n) || void 0 === n && !(e in t)) && Xn(t, e, n)
                }
                function Gn(t, e, n) {
                    var i = t[e];
                    Et.call(t, e) && _a(i, n) && (void 0 !== n || e in t) || Xn(t, e, n)
                }
                function Hn(t, e) {
                    for (var n = t.length; n--; )
                        if (_a(t[n][0], e))
                            return n;
                    return -1
                }
                function Wn(t, e, n, i) {
                    return ti(t, (function(t, r, o) {
                        e(i, t, n(t), o)
                    }
                    )),
                    i
                }
                function qn(t, e) {
                    return t && yr(e, ws(e), t)
                }
                function Xn(t, e, n) {
                    "__proto__" == e && Ae ? Ae(t, e, {
                        configurable: !0,
                        enumerable: !0,
                        value: n,
                        writable: !0
                    }) : t[e] = n
                }
                function Yn(t, e) {
                    for (var n = -1, r = e.length, o = i(r), a = null == t; ++n < r; )
                        o[n] = a ? void 0 : ms(t, e[n]);
                    return o
                }
                function Kn(t, e, n) {
                    return t == t && (void 0 !== n && (t = t <= n ? t : n),
                    void 0 !== e && (t = t >= e ? t : e)),
                    t
                }
                function Zn(t, e, n, i, r, o) {
                    var a, s = 1 & e, l = 2 & e, p = 4 & e;
                    if (n && (a = r ? n(t, i, r, o) : n(t)),
                    void 0 !== a)
                        return a;
                    if (!Ga(t))
                        return t;
                    var x = Da(t);
                    if (x) {
                        if (a = function(t) {
                            var e = t.length
                              , n = new t.constructor(e);
                            e && "string" == typeof t[0] && Et.call(t, "index") && (n.index = t.index,
                            n.input = t.input);
                            return n
                        }(t),
                        !s)
                            return vr(t, a)
                    } else {
                        var D = no(t)
                          , R = D == h || D == f;
                        if (ja(t))
                            return dr(t, s);
                        if (D == v || D == c || R && !r) {
                            if (a = l || R ? {} : ro(t),
                            !s)
                                return l ? function(t, e) {
                                    return yr(t, eo(t), e)
                                }(t, function(t, e) {
                                    return t && yr(e, Ss(e), t)
                                }(a, t)) : function(t, e) {
                                    return yr(t, to(t), e)
                                }(t, qn(a, t))
                        } else {
                            if (!Bt[D])
                                return r ? t : {};
                            a = function(t, e, n) {
                                var i = t.constructor;
                                switch (e) {
                                case M:
                                    return pr(t);
                                case u:
                                case d:
                                    return new i(+t);
                                case E:
                                    return function(t, e) {
                                        var n = e ? pr(t.buffer) : t.buffer;
                                        return new t.constructor(n,t.byteOffset,t.byteLength)
                                    }(t, n);
                                case C:
                                case A:
                                case T:
                                case O:
                                case _:
                                case P:
                                case "[object Uint8ClampedArray]":
                                case I:
                                case k:
                                    return hr(t, n);
                                case m:
                                    return new i;
                                case g:
                                case w:
                                    return new i(t);
                                case y:
                                    return function(t) {
                                        var e = new t.constructor(t.source,it.exec(t));
                                        return e.lastIndex = t.lastIndex,
                                        e
                                    }(t);
                                case b:
                                    return new i;
                                case S:
                                    return r = t,
                                    An ? mt(An.call(r)) : {}
                                }
                                var r
                            }(t, D, s)
                        }
                    }
                    o || (o = new jn);
                    var L = o.get(t);
                    if (L)
                        return L;
                    o.set(t, a),
                    Ka(t) ? t.forEach((function(i) {
                        a.add(Zn(i, e, n, i, t, o))
                    }
                    )) : Wa(t) && t.forEach((function(i, r) {
                        a.set(r, Zn(i, e, n, r, t, o))
                    }
                    ));
                    var N = x ? void 0 : (p ? l ? qr : Wr : l ? Ss : ws)(t);
                    return se(N || t, (function(i, r) {
                        N && (i = t[r = i]),
                        Gn(a, r, Zn(i, e, n, r, t, o))
                    }
                    )),
                    a
                }
                function Jn(t, e, n) {
                    var i = n.length;
                    if (null == t)
                        return !i;
                    for (t = mt(t); i--; ) {
                        var r = n[i]
                          , o = e[r]
                          , a = t[r];
                        if (void 0 === a && !(r in t) || !o(a))
                            return !1
                    }
                    return !0
                }
                function Qn(t, e, n) {
                    if ("function" != typeof t)
                        throw new yt(o);
                    return wo((function() {
                        t.apply(void 0, n)
                    }
                    ), e)
                }
                function $n(t, e, n, i) {
                    var r = -1
                      , o = de
                      , a = !0
                      , s = t.length
                      , c = []
                      , l = e.length;
                    if (!s)
                        return c;
                    n && (e = he(e, Pe(n))),
                    i ? (o = pe,
                    a = !1) : e.length >= 200 && (o = ke,
                    a = !1,
                    e = new Nn(e));
                    t: for (; ++r < s; ) {
                        var u = t[r]
                          , d = null == n ? u : n(u);
                        if (u = i || 0 !== u ? u : 0,
                        a && d == d) {
                            for (var p = l; p--; )
                                if (e[p] === d)
                                    continue t;
                            c.push(u)
                        } else
                            o(e, d, i) || c.push(u)
                    }
                    return c
                }
                On.templateSettings = {
                    escape: U,
                    evaluate: B,
                    interpolate: z,
                    variable: "",
                    imports: {
                        _: On
                    }
                },
                On.prototype = Pn.prototype,
                On.prototype.constructor = On,
                In.prototype = _n(Pn.prototype),
                In.prototype.constructor = In,
                kn.prototype = _n(Pn.prototype),
                kn.prototype.constructor = kn,
                Dn.prototype.clear = function() {
                    this.__data__ = vn ? vn(null) : {},
                    this.size = 0
                }
                ,
                Dn.prototype.delete = function(t) {
                    var e = this.has(t) && delete this.__data__[t];
                    return this.size -= e ? 1 : 0,
                    e
                }
                ,
                Dn.prototype.get = function(t) {
                    var e = this.__data__;
                    if (vn) {
                        var n = e[t];
                        return "__lodash_hash_undefined__" === n ? void 0 : n
                    }
                    return Et.call(e, t) ? e[t] : void 0
                }
                ,
                Dn.prototype.has = function(t) {
                    var e = this.__data__;
                    return vn ? void 0 !== e[t] : Et.call(e, t)
                }
                ,
                Dn.prototype.set = function(t, e) {
                    var n = this.__data__;
                    return this.size += this.has(t) ? 0 : 1,
                    n[t] = vn && void 0 === e ? "__lodash_hash_undefined__" : e,
                    this
                }
                ,
                Rn.prototype.clear = function() {
                    this.__data__ = [],
                    this.size = 0
                }
                ,
                Rn.prototype.delete = function(t) {
                    var e = this.__data__
                      , n = Hn(e, t);
                    return !(n < 0) && (n == e.length - 1 ? e.pop() : Kt.call(e, n, 1),
                    --this.size,
                    !0)
                }
                ,
                Rn.prototype.get = function(t) {
                    var e = this.__data__
                      , n = Hn(e, t);
                    return n < 0 ? void 0 : e[n][1]
                }
                ,
                Rn.prototype.has = function(t) {
                    return Hn(this.__data__, t) > -1
                }
                ,
                Rn.prototype.set = function(t, e) {
                    var n = this.__data__
                      , i = Hn(n, t);
                    return i < 0 ? (++this.size,
                    n.push([t, e])) : n[i][1] = e,
                    this
                }
                ,
                Ln.prototype.clear = function() {
                    this.size = 0,
                    this.__data__ = {
                        hash: new Dn,
                        map: new (hn || Rn),
                        string: new Dn
                    }
                }
                ,
                Ln.prototype.delete = function(t) {
                    var e = Jr(this, t).delete(t);
                    return this.size -= e ? 1 : 0,
                    e
                }
                ,
                Ln.prototype.get = function(t) {
                    return Jr(this, t).get(t)
                }
                ,
                Ln.prototype.has = function(t) {
                    return Jr(this, t).has(t)
                }
                ,
                Ln.prototype.set = function(t, e) {
                    var n = Jr(this, t)
                      , i = n.size;
                    return n.set(t, e),
                    this.size += n.size == i ? 0 : 1,
                    this
                }
                ,
                Nn.prototype.add = Nn.prototype.push = function(t) {
                    return this.__data__.set(t, "__lodash_hash_undefined__"),
                    this
                }
                ,
                Nn.prototype.has = function(t) {
                    return this.__data__.has(t)
                }
                ,
                jn.prototype.clear = function() {
                    this.__data__ = new Rn,
                    this.size = 0
                }
                ,
                jn.prototype.delete = function(t) {
                    var e = this.__data__
                      , n = e.delete(t);
                    return this.size = e.size,
                    n
                }
                ,
                jn.prototype.get = function(t) {
                    return this.__data__.get(t)
                }
                ,
                jn.prototype.has = function(t) {
                    return this.__data__.has(t)
                }
                ,
                jn.prototype.set = function(t, e) {
                    var n = this.__data__;
                    if (n instanceof Rn) {
                        var i = n.__data__;
                        if (!hn || i.length < 199)
                            return i.push([t, e]),
                            this.size = ++n.size,
                            this;
                        n = this.__data__ = new Ln(i)
                    }
                    return n.set(t, e),
                    this.size = n.size,
                    this
                }
                ;
                var ti = Sr(ci)
                  , ei = Sr(li, !0);
                function ni(t, e) {
                    var n = !0;
                    return ti(t, (function(t, i, r) {
                        return n = !!e(t, i, r)
                    }
                    )),
                    n
                }
                function ii(t, e, n) {
                    for (var i = -1, r = t.length; ++i < r; ) {
                        var o = t[i]
                          , a = e(o);
                        if (null != a && (void 0 === s ? a == a && !Ja(a) : n(a, s)))
                            var s = a
                              , c = o
                    }
                    return c
                }
                function ri(t, e) {
                    var n = [];
                    return ti(t, (function(t, i, r) {
                        e(t, i, r) && n.push(t)
                    }
                    )),
                    n
                }
                function oi(t, e, n, i, r) {
                    var o = -1
                      , a = t.length;
                    for (n || (n = oo),
                    r || (r = []); ++o < a; ) {
                        var s = t[o];
                        e > 0 && n(s) ? e > 1 ? oi(s, e - 1, n, i, r) : fe(r, s) : i || (r[r.length] = s)
                    }
                    return r
                }
                var ai = xr()
                  , si = xr(!0);
                function ci(t, e) {
                    return t && ai(t, e, ws)
                }
                function li(t, e) {
                    return t && si(t, e, ws)
                }
                function ui(t, e) {
                    return ue(e, (function(e) {
                        return Ua(t[e])
                    }
                    ))
                }
                function di(t, e) {
                    for (var n = 0, i = (e = sr(e, t)).length; null != t && n < i; )
                        t = t[Ao(e[n++])];
                    return n && n == i ? t : void 0
                }
                function pi(t, e, n) {
                    var i = e(t);
                    return Da(t) ? i : fe(i, n(t))
                }
                function hi(t) {
                    return null == t ? void 0 === t ? "[object Undefined]" : "[object Null]" : ye && ye in mt(t) ? function(t) {
                        var e = Et.call(t, ye)
                          , n = t[ye];
                        try {
                            t[ye] = void 0;
                            var i = !0
                        } catch (t) {}
                        var r = Tt.call(t);
                        i && (e ? t[ye] = n : delete t[ye]);
                        return r
                    }(t) : function(t) {
                        return Tt.call(t)
                    }(t)
                }
                function fi(t, e) {
                    return t > e
                }
                function mi(t, e) {
                    return null != t && Et.call(t, e)
                }
                function gi(t, e) {
                    return null != t && e in mt(t)
                }
                function vi(t, e, n) {
                    for (var r = n ? pe : de, o = t[0].length, a = t.length, s = a, c = i(a), l = 1 / 0, u = []; s--; ) {
                        var d = t[s];
                        s && e && (d = he(d, Pe(e))),
                        l = sn(d.length, l),
                        c[s] = !n && (e || o >= 120 && d.length >= 120) ? new Nn(s && d) : void 0
                    }
                    d = t[0];
                    var p = -1
                      , h = c[0];
                    t: for (; ++p < o && u.length < l; ) {
                        var f = d[p]
                          , m = e ? e(f) : f;
                        if (f = n || 0 !== f ? f : 0,
                        !(h ? ke(h, m) : r(u, m, n))) {
                            for (s = a; --s; ) {
                                var g = c[s];
                                if (!(g ? ke(g, m) : r(t[s], m, n)))
                                    continue t
                            }
                            h && h.push(m),
                            u.push(f)
                        }
                    }
                    return u
                }
                function yi(t, e, n) {
                    var i = null == (t = go(t, e = sr(e, t))) ? t : t[Ao(Fo(e))];
                    return null == i ? void 0 : oe(i, t, n)
                }
                function bi(t) {
                    return Ha(t) && hi(t) == c
                }
                function wi(t, e, n, i, r) {
                    return t === e || (null == t || null == e || !Ha(t) && !Ha(e) ? t != t && e != e : function(t, e, n, i, r, o) {
                        var a = Da(t)
                          , s = Da(e)
                          , h = a ? l : no(t)
                          , f = s ? l : no(e)
                          , x = (h = h == c ? v : h) == v
                          , C = (f = f == c ? v : f) == v
                          , A = h == f;
                        if (A && ja(t)) {
                            if (!ja(e))
                                return !1;
                            a = !0,
                            x = !1
                        }
                        if (A && !x)
                            return o || (o = new jn),
                            a || Qa(t) ? Gr(t, e, n, i, r, o) : function(t, e, n, i, r, o, a) {
                                switch (n) {
                                case E:
                                    if (t.byteLength != e.byteLength || t.byteOffset != e.byteOffset)
                                        return !1;
                                    t = t.buffer,
                                    e = e.buffer;
                                case M:
                                    return !(t.byteLength != e.byteLength || !o(new Nt(t), new Nt(e)));
                                case u:
                                case d:
                                case g:
                                    return _a(+t, +e);
                                case p:
                                    return t.name == e.name && t.message == e.message;
                                case y:
                                case w:
                                    return t == e + "";
                                case m:
                                    var s = Ue;
                                case b:
                                    var c = 1 & i;
                                    if (s || (s = Ge),
                                    t.size != e.size && !c)
                                        return !1;
                                    var l = a.get(t);
                                    if (l)
                                        return l == e;
                                    i |= 2,
                                    a.set(t, e);
                                    var h = Gr(s(t), s(e), i, r, o, a);
                                    return a.delete(t),
                                    h;
                                case S:
                                    if (An)
                                        return An.call(t) == An.call(e)
                                }
                                return !1
                            }(t, e, h, n, i, r, o);
                        if (!(1 & n)) {
                            var T = x && Et.call(t, "__wrapped__")
                              , O = C && Et.call(e, "__wrapped__");
                            if (T || O) {
                                var _ = T ? t.value() : t
                                  , P = O ? e.value() : e;
                                return o || (o = new jn),
                                r(_, P, n, i, o)
                            }
                        }
                        if (!A)
                            return !1;
                        return o || (o = new jn),
                        function(t, e, n, i, r, o) {
                            var a = 1 & n
                              , s = Wr(t)
                              , c = s.length
                              , l = Wr(e).length;
                            if (c != l && !a)
                                return !1;
                            var u = c;
                            for (; u--; ) {
                                var d = s[u];
                                if (!(a ? d in e : Et.call(e, d)))
                                    return !1
                            }
                            var p = o.get(t)
                              , h = o.get(e);
                            if (p && h)
                                return p == e && h == t;
                            var f = !0;
                            o.set(t, e),
                            o.set(e, t);
                            var m = a;
                            for (; ++u < c; ) {
                                d = s[u];
                                var g = t[d]
                                  , v = e[d];
                                if (i)
                                    var y = a ? i(v, g, d, e, t, o) : i(g, v, d, t, e, o);
                                if (!(void 0 === y ? g === v || r(g, v, n, i, o) : y)) {
                                    f = !1;
                                    break
                                }
                                m || (m = "constructor" == d)
                            }
                            if (f && !m) {
                                var b = t.constructor
                                  , w = e.constructor;
                                b == w || !("constructor"in t) || !("constructor"in e) || "function" == typeof b && b instanceof b && "function" == typeof w && w instanceof w || (f = !1)
                            }
                            return o.delete(t),
                            o.delete(e),
                            f
                        }(t, e, n, i, r, o)
                    }(t, e, n, i, wi, r))
                }
                function Si(t, e, n, i) {
                    var r = n.length
                      , o = r
                      , a = !i;
                    if (null == t)
                        return !o;
                    for (t = mt(t); r--; ) {
                        var s = n[r];
                        if (a && s[2] ? s[1] !== t[s[0]] : !(s[0]in t))
                            return !1
                    }
                    for (; ++r < o; ) {
                        var c = (s = n[r])[0]
                          , l = t[c]
                          , u = s[1];
                        if (a && s[2]) {
                            if (void 0 === l && !(c in t))
                                return !1
                        } else {
                            var d = new jn;
                            if (i)
                                var p = i(l, u, c, t, e, d);
                            if (!(void 0 === p ? wi(u, l, 3, i, d) : p))
                                return !1
                        }
                    }
                    return !0
                }
                function xi(t) {
                    return !(!Ga(t) || (e = t,
                    At && At in e)) && (Ua(t) ? Pt : at).test(To(t));
                    var e
                }
                function Mi(t) {
                    return "function" == typeof t ? t : null == t ? qs : "object" == typeof t ? Da(t) ? _i(t[0], t[1]) : Oi(t) : ec(t)
                }
                function Ei(t) {
                    if (!po(t))
                        return on(t);
                    var e = [];
                    for (var n in mt(t))
                        Et.call(t, n) && "constructor" != n && e.push(n);
                    return e
                }
                function Ci(t) {
                    if (!Ga(t))
                        return function(t) {
                            var e = [];
                            if (null != t)
                                for (var n in mt(t))
                                    e.push(n);
                            return e
                        }(t);
                    var e = po(t)
                      , n = [];
                    for (var i in t)
                        ("constructor" != i || !e && Et.call(t, i)) && n.push(i);
                    return n
                }
                function Ai(t, e) {
                    return t < e
                }
                function Ti(t, e) {
                    var n = -1
                      , r = La(t) ? i(t.length) : [];
                    return ti(t, (function(t, i, o) {
                        r[++n] = e(t, i, o)
                    }
                    )),
                    r
                }
                function Oi(t) {
                    var e = Qr(t);
                    return 1 == e.length && e[0][2] ? fo(e[0][0], e[0][1]) : function(n) {
                        return n === t || Si(n, t, e)
                    }
                }
                function _i(t, e) {
                    return co(t) && ho(e) ? fo(Ao(t), e) : function(n) {
                        var i = ms(n, t);
                        return void 0 === i && i === e ? gs(n, t) : wi(e, i, 3)
                    }
                }
                function Pi(t, e, n, i, r) {
                    t !== e && ai(e, (function(o, a) {
                        if (r || (r = new jn),
                        Ga(o))
                            !function(t, e, n, i, r, o, a) {
                                var s = yo(t, n)
                                  , c = yo(e, n)
                                  , l = a.get(c);
                                if (l)
                                    return void zn(t, n, l);
                                var u = o ? o(s, c, n + "", t, e, a) : void 0
                                  , d = void 0 === u;
                                if (d) {
                                    var p = Da(c)
                                      , h = !p && ja(c)
                                      , f = !p && !h && Qa(c);
                                    u = c,
                                    p || h || f ? Da(s) ? u = s : Na(s) ? u = vr(s) : h ? (d = !1,
                                    u = dr(c, !0)) : f ? (d = !1,
                                    u = hr(c, !0)) : u = [] : Xa(c) || ka(c) ? (u = s,
                                    ka(s) ? u = as(s) : Ga(s) && !Ua(s) || (u = ro(c))) : d = !1
                                }
                                d && (a.set(c, u),
                                r(u, c, i, o, a),
                                a.delete(c));
                                zn(t, n, u)
                            }(t, e, a, n, Pi, i, r);
                        else {
                            var s = i ? i(yo(t, a), o, a + "", t, e, r) : void 0;
                            void 0 === s && (s = o),
                            zn(t, a, s)
                        }
                    }
                    ), Ss)
                }
                function Ii(t, e) {
                    var n = t.length;
                    if (n)
                        return ao(e += e < 0 ? n : 0, n) ? t[e] : void 0
                }
                function ki(t, e, n) {
                    e = e.length ? he(e, (function(t) {
                        return Da(t) ? function(e) {
                            return di(e, 1 === t.length ? t[0] : t)
                        }
                        : t
                    }
                    )) : [qs];
                    var i = -1;
                    return e = he(e, Pe(Zr())),
                    function(t, e) {
                        var n = t.length;
                        for (t.sort(e); n--; )
                            t[n] = t[n].value;
                        return t
                    }(Ti(t, (function(t, n, r) {
                        return {
                            criteria: he(e, (function(e) {
                                return e(t)
                            }
                            )),
                            index: ++i,
                            value: t
                        }
                    }
                    )), (function(t, e) {
                        return function(t, e, n) {
                            var i = -1
                              , r = t.criteria
                              , o = e.criteria
                              , a = r.length
                              , s = n.length;
                            for (; ++i < a; ) {
                                var c = fr(r[i], o[i]);
                                if (c) {
                                    if (i >= s)
                                        return c;
                                    var l = n[i];
                                    return c * ("desc" == l ? -1 : 1)
                                }
                            }
                            return t.index - e.index
                        }(t, e, n)
                    }
                    ))
                }
                function Di(t, e, n) {
                    for (var i = -1, r = e.length, o = {}; ++i < r; ) {
                        var a = e[i]
                          , s = di(t, a);
                        n(s, a) && Bi(o, sr(a, t), s)
                    }
                    return o
                }
                function Ri(t, e, n, i) {
                    var r = i ? xe : Se
                      , o = -1
                      , a = e.length
                      , s = t;
                    for (t === e && (e = vr(e)),
                    n && (s = he(t, Pe(n))); ++o < a; )
                        for (var c = 0, l = e[o], u = n ? n(l) : l; (c = r(s, u, c, i)) > -1; )
                            s !== t && Kt.call(s, c, 1),
                            Kt.call(t, c, 1);
                    return t
                }
                function Li(t, e) {
                    for (var n = t ? e.length : 0, i = n - 1; n--; ) {
                        var r = e[n];
                        if (n == i || r !== o) {
                            var o = r;
                            ao(r) ? Kt.call(t, r, 1) : $i(t, r)
                        }
                    }
                    return t
                }
                function Ni(t, e) {
                    return t + $e(un() * (e - t + 1))
                }
                function ji(t, e) {
                    var n = "";
                    if (!t || e < 1 || e > 9007199254740991)
                        return n;
                    do {
                        e % 2 && (n += t),
                        (e = $e(e / 2)) && (t += t)
                    } while (e);
                    return n
                }
                function Vi(t, e) {
                    return So(mo(t, e, qs), t + "")
                }
                function Fi(t) {
                    return Fn(_s(t))
                }
                function Ui(t, e) {
                    var n = _s(t);
                    return Eo(n, Kn(e, 0, n.length))
                }
                function Bi(t, e, n, i) {
                    if (!Ga(t))
                        return t;
                    for (var r = -1, o = (e = sr(e, t)).length, a = o - 1, s = t; null != s && ++r < o; ) {
                        var c = Ao(e[r])
                          , l = n;
                        if ("__proto__" === c || "constructor" === c || "prototype" === c)
                            return t;
                        if (r != a) {
                            var u = s[c];
                            void 0 === (l = i ? i(u, c, s) : void 0) && (l = Ga(u) ? u : ao(e[r + 1]) ? [] : {})
                        }
                        Gn(s, c, l),
                        s = s[c]
                    }
                    return t
                }
                var zi = yn ? function(t, e) {
                    return yn.set(t, e),
                    t
                }
                : qs
                  , Gi = Ae ? function(t, e) {
                    return Ae(t, "toString", {
                        configurable: !0,
                        enumerable: !1,
                        value: Gs(e),
                        writable: !0
                    })
                }
                : qs;
                function Hi(t) {
                    return Eo(_s(t))
                }
                function Wi(t, e, n) {
                    var r = -1
                      , o = t.length;
                    e < 0 && (e = -e > o ? 0 : o + e),
                    (n = n > o ? o : n) < 0 && (n += o),
                    o = e > n ? 0 : n - e >>> 0,
                    e >>>= 0;
                    for (var a = i(o); ++r < o; )
                        a[r] = t[r + e];
                    return a
                }
                function qi(t, e) {
                    var n;
                    return ti(t, (function(t, i, r) {
                        return !(n = e(t, i, r))
                    }
                    )),
                    !!n
                }
                function Xi(t, e, n) {
                    var i = 0
                      , r = null == t ? i : t.length;
                    if ("number" == typeof e && e == e && r <= 2147483647) {
                        for (; i < r; ) {
                            var o = i + r >>> 1
                              , a = t[o];
                            null !== a && !Ja(a) && (n ? a <= e : a < e) ? i = o + 1 : r = o
                        }
                        return r
                    }
                    return Yi(t, e, qs, n)
                }
                function Yi(t, e, n, i) {
                    var r = 0
                      , o = null == t ? 0 : t.length;
                    if (0 === o)
                        return 0;
                    for (var a = (e = n(e)) != e, s = null === e, c = Ja(e), l = void 0 === e; r < o; ) {
                        var u = $e((r + o) / 2)
                          , d = n(t[u])
                          , p = void 0 !== d
                          , h = null === d
                          , f = d == d
                          , m = Ja(d);
                        if (a)
                            var g = i || f;
                        else
                            g = l ? f && (i || p) : s ? f && p && (i || !h) : c ? f && p && !h && (i || !m) : !h && !m && (i ? d <= e : d < e);
                        g ? r = u + 1 : o = u
                    }
                    return sn(o, 4294967294)
                }
                function Ki(t, e) {
                    for (var n = -1, i = t.length, r = 0, o = []; ++n < i; ) {
                        var a = t[n]
                          , s = e ? e(a) : a;
                        if (!n || !_a(s, c)) {
                            var c = s;
                            o[r++] = 0 === a ? 0 : a
                        }
                    }
                    return o
                }
                function Zi(t) {
                    return "number" == typeof t ? t : Ja(t) ? NaN : +t
                }
                function Ji(t) {
                    if ("string" == typeof t)
                        return t;
                    if (Da(t))
                        return he(t, Ji) + "";
                    if (Ja(t))
                        return Tn ? Tn.call(t) : "";
                    var e = t + "";
                    return "0" == e && 1 / t == -1 / 0 ? "-0" : e
                }
                function Qi(t, e, n) {
                    var i = -1
                      , r = de
                      , o = t.length
                      , a = !0
                      , s = []
                      , c = s;
                    if (n)
                        a = !1,
                        r = pe;
                    else if (o >= 200) {
                        var l = e ? null : jr(t);
                        if (l)
                            return Ge(l);
                        a = !1,
                        r = ke,
                        c = new Nn
                    } else
                        c = e ? [] : s;
                    t: for (; ++i < o; ) {
                        var u = t[i]
                          , d = e ? e(u) : u;
                        if (u = n || 0 !== u ? u : 0,
                        a && d == d) {
                            for (var p = c.length; p--; )
                                if (c[p] === d)
                                    continue t;
                            e && c.push(d),
                            s.push(u)
                        } else
                            r(c, d, n) || (c !== s && c.push(d),
                            s.push(u))
                    }
                    return s
                }
                function $i(t, e) {
                    return null == (t = go(t, e = sr(e, t))) || delete t[Ao(Fo(e))]
                }
                function tr(t, e, n, i) {
                    return Bi(t, e, n(di(t, e)), i)
                }
                function er(t, e, n, i) {
                    for (var r = t.length, o = i ? r : -1; (i ? o-- : ++o < r) && e(t[o], o, t); )
                        ;
                    return n ? Wi(t, i ? 0 : o, i ? o + 1 : r) : Wi(t, i ? o + 1 : 0, i ? r : o)
                }
                function nr(t, e) {
                    var n = t;
                    return n instanceof kn && (n = n.value()),
                    me(e, (function(t, e) {
                        return e.func.apply(e.thisArg, fe([t], e.args))
                    }
                    ), n)
                }
                function ir(t, e, n) {
                    var r = t.length;
                    if (r < 2)
                        return r ? Qi(t[0]) : [];
                    for (var o = -1, a = i(r); ++o < r; )
                        for (var s = t[o], c = -1; ++c < r; )
                            c != o && (a[o] = $n(a[o] || s, t[c], e, n));
                    return Qi(oi(a, 1), e, n)
                }
                function rr(t, e, n) {
                    for (var i = -1, r = t.length, o = e.length, a = {}; ++i < r; ) {
                        var s = i < o ? e[i] : void 0;
                        n(a, t[i], s)
                    }
                    return a
                }
                function or(t) {
                    return Na(t) ? t : []
                }
                function ar(t) {
                    return "function" == typeof t ? t : qs
                }
                function sr(t, e) {
                    return Da(t) ? t : co(t, e) ? [t] : Co(ss(t))
                }
                var cr = Vi;
                function lr(t, e, n) {
                    var i = t.length;
                    return n = void 0 === n ? i : n,
                    !e && n >= i ? t : Wi(t, e, n)
                }
                var ur = Ke || function(t) {
                    return Xt.clearTimeout(t)
                }
                ;
                function dr(t, e) {
                    if (e)
                        return t.slice();
                    var n = t.length
                      , i = zt ? zt(n) : new t.constructor(n);
                    return t.copy(i),
                    i
                }
                function pr(t) {
                    var e = new t.constructor(t.byteLength);
                    return new Nt(e).set(new Nt(t)),
                    e
                }
                function hr(t, e) {
                    var n = e ? pr(t.buffer) : t.buffer;
                    return new t.constructor(n,t.byteOffset,t.length)
                }
                function fr(t, e) {
                    if (t !== e) {
                        var n = void 0 !== t
                          , i = null === t
                          , r = t == t
                          , o = Ja(t)
                          , a = void 0 !== e
                          , s = null === e
                          , c = e == e
                          , l = Ja(e);
                        if (!s && !l && !o && t > e || o && a && c && !s && !l || i && a && c || !n && c || !r)
                            return 1;
                        if (!i && !o && !l && t < e || l && n && r && !i && !o || s && n && r || !a && r || !c)
                            return -1
                    }
                    return 0
                }
                function mr(t, e, n, r) {
                    for (var o = -1, a = t.length, s = n.length, c = -1, l = e.length, u = an(a - s, 0), d = i(l + u), p = !r; ++c < l; )
                        d[c] = e[c];
                    for (; ++o < s; )
                        (p || o < a) && (d[n[o]] = t[o]);
                    for (; u--; )
                        d[c++] = t[o++];
                    return d
                }
                function gr(t, e, n, r) {
                    for (var o = -1, a = t.length, s = -1, c = n.length, l = -1, u = e.length, d = an(a - c, 0), p = i(d + u), h = !r; ++o < d; )
                        p[o] = t[o];
                    for (var f = o; ++l < u; )
                        p[f + l] = e[l];
                    for (; ++s < c; )
                        (h || o < a) && (p[f + n[s]] = t[o++]);
                    return p
                }
                function vr(t, e) {
                    var n = -1
                      , r = t.length;
                    for (e || (e = i(r)); ++n < r; )
                        e[n] = t[n];
                    return e
                }
                function yr(t, e, n, i) {
                    var r = !n;
                    n || (n = {});
                    for (var o = -1, a = e.length; ++o < a; ) {
                        var s = e[o]
                          , c = i ? i(n[s], t[s], s, n, t) : void 0;
                        void 0 === c && (c = t[s]),
                        r ? Xn(n, s, c) : Gn(n, s, c)
                    }
                    return n
                }
                function br(t, e) {
                    return function(n, i) {
                        var r = Da(n) ? ae : Wn
                          , o = e ? e() : {};
                        return r(n, t, Zr(i, 2), o)
                    }
                }
                function wr(t) {
                    return Vi((function(e, n) {
                        var i = -1
                          , r = n.length
                          , o = r > 1 ? n[r - 1] : void 0
                          , a = r > 2 ? n[2] : void 0;
                        for (o = t.length > 3 && "function" == typeof o ? (r--,
                        o) : void 0,
                        a && so(n[0], n[1], a) && (o = r < 3 ? void 0 : o,
                        r = 1),
                        e = mt(e); ++i < r; ) {
                            var s = n[i];
                            s && t(e, s, i, o)
                        }
                        return e
                    }
                    ))
                }
                function Sr(t, e) {
                    return function(n, i) {
                        if (null == n)
                            return n;
                        if (!La(n))
                            return t(n, i);
                        for (var r = n.length, o = e ? r : -1, a = mt(n); (e ? o-- : ++o < r) && !1 !== i(a[o], o, a); )
                            ;
                        return n
                    }
                }
                function xr(t) {
                    return function(e, n, i) {
                        for (var r = -1, o = mt(e), a = i(e), s = a.length; s--; ) {
                            var c = a[t ? s : ++r];
                            if (!1 === n(o[c], c, o))
                                break
                        }
                        return e
                    }
                }
                function Mr(t) {
                    return function(e) {
                        var n = Fe(e = ss(e)) ? qe(e) : void 0
                          , i = n ? n[0] : e.charAt(0)
                          , r = n ? lr(n, 1).join("") : e.slice(1);
                        return i[t]() + r
                    }
                }
                function Er(t) {
                    return function(e) {
                        return me(Us(ks(e).replace(kt, "")), t, "")
                    }
                }
                function Cr(t) {
                    return function() {
                        var e = arguments;
                        switch (e.length) {
                        case 0:
                            return new t;
                        case 1:
                            return new t(e[0]);
                        case 2:
                            return new t(e[0],e[1]);
                        case 3:
                            return new t(e[0],e[1],e[2]);
                        case 4:
                            return new t(e[0],e[1],e[2],e[3]);
                        case 5:
                            return new t(e[0],e[1],e[2],e[3],e[4]);
                        case 6:
                            return new t(e[0],e[1],e[2],e[3],e[4],e[5]);
                        case 7:
                            return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])
                        }
                        var n = _n(t.prototype)
                          , i = t.apply(n, e);
                        return Ga(i) ? i : n
                    }
                }
                function Ar(t) {
                    return function(e, n, i) {
                        var r = mt(e);
                        if (!La(e)) {
                            var o = Zr(n, 3);
                            e = ws(e),
                            n = function(t) {
                                return o(r[t], t, r)
                            }
                        }
                        var a = t(e, n, i);
                        return a > -1 ? r[o ? e[a] : a] : void 0
                    }
                }
                function Tr(t) {
                    return Hr((function(e) {
                        var n = e.length
                          , i = n
                          , r = In.prototype.thru;
                        for (t && e.reverse(); i--; ) {
                            var a = e[i];
                            if ("function" != typeof a)
                                throw new yt(o);
                            if (r && !s && "wrapper" == Yr(a))
                                var s = new In([],!0)
                        }
                        for (i = s ? i : n; ++i < n; ) {
                            var c = Yr(a = e[i])
                              , l = "wrapper" == c ? Xr(a) : void 0;
                            s = l && lo(l[0]) && 424 == l[1] && !l[4].length && 1 == l[9] ? s[Yr(l[0])].apply(s, l[3]) : 1 == a.length && lo(a) ? s[c]() : s.thru(a)
                        }
                        return function() {
                            var t = arguments
                              , i = t[0];
                            if (s && 1 == t.length && Da(i))
                                return s.plant(i).value();
                            for (var r = 0, o = n ? e[r].apply(this, t) : i; ++r < n; )
                                o = e[r].call(this, o);
                            return o
                        }
                    }
                    ))
                }
                function Or(t, e, n, r, o, a, s, c, l, u) {
                    var d = 128 & e
                      , p = 1 & e
                      , h = 2 & e
                      , f = 24 & e
                      , m = 512 & e
                      , g = h ? void 0 : Cr(t);
                    return function v() {
                        for (var y = arguments.length, b = i(y), w = y; w--; )
                            b[w] = arguments[w];
                        if (f)
                            var S = Kr(v)
                              , x = Le(b, S);
                        if (r && (b = mr(b, r, o, f)),
                        a && (b = gr(b, a, s, f)),
                        y -= x,
                        f && y < u) {
                            var M = ze(b, S);
                            return Lr(t, e, Or, v.placeholder, n, b, M, c, l, u - y)
                        }
                        var E = p ? n : this
                          , C = h ? E[t] : t;
                        return y = b.length,
                        c ? b = vo(b, c) : m && y > 1 && b.reverse(),
                        d && l < y && (b.length = l),
                        this && this !== Xt && this instanceof v && (C = g || Cr(C)),
                        C.apply(E, b)
                    }
                }
                function _r(t, e) {
                    return function(n, i) {
                        return function(t, e, n, i) {
                            return ci(t, (function(t, r, o) {
                                e(i, n(t), r, o)
                            }
                            )),
                            i
                        }(n, t, e(i), {})
                    }
                }
                function Pr(t, e) {
                    return function(n, i) {
                        var r;
                        if (void 0 === n && void 0 === i)
                            return e;
                        if (void 0 !== n && (r = n),
                        void 0 !== i) {
                            if (void 0 === r)
                                return i;
                            "string" == typeof n || "string" == typeof i ? (n = Ji(n),
                            i = Ji(i)) : (n = Zi(n),
                            i = Zi(i)),
                            r = t(n, i)
                        }
                        return r
                    }
                }
                function Ir(t) {
                    return Hr((function(e) {
                        return e = he(e, Pe(Zr())),
                        Vi((function(n) {
                            var i = this;
                            return t(e, (function(t) {
                                return oe(t, i, n)
                            }
                            ))
                        }
                        ))
                    }
                    ))
                }
                function kr(t, e) {
                    var n = (e = void 0 === e ? " " : Ji(e)).length;
                    if (n < 2)
                        return n ? ji(e, t) : e;
                    var i = ji(e, Qe(t / We(e)));
                    return Fe(e) ? lr(qe(i), 0, t).join("") : i.slice(0, t)
                }
                function Dr(t) {
                    return function(e, n, r) {
                        return r && "number" != typeof r && so(e, n, r) && (n = r = void 0),
                        e = ns(e),
                        void 0 === n ? (n = e,
                        e = 0) : n = ns(n),
                        function(t, e, n, r) {
                            for (var o = -1, a = an(Qe((e - t) / (n || 1)), 0), s = i(a); a--; )
                                s[r ? a : ++o] = t,
                                t += n;
                            return s
                        }(e, n, r = void 0 === r ? e < n ? 1 : -1 : ns(r), t)
                    }
                }
                function Rr(t) {
                    return function(e, n) {
                        return "string" == typeof e && "string" == typeof n || (e = os(e),
                        n = os(n)),
                        t(e, n)
                    }
                }
                function Lr(t, e, n, i, r, o, a, s, c, l) {
                    var u = 8 & e;
                    e |= u ? 32 : 64,
                    4 & (e &= ~(u ? 64 : 32)) || (e &= -4);
                    var d = [t, e, r, u ? o : void 0, u ? a : void 0, u ? void 0 : o, u ? void 0 : a, s, c, l]
                      , p = n.apply(void 0, d);
                    return lo(t) && bo(p, d),
                    p.placeholder = i,
                    xo(p, t, e)
                }
                function Nr(t) {
                    var e = ft[t];
                    return function(t, n) {
                        if (t = os(t),
                        (n = null == n ? 0 : sn(is(n), 292)) && nn(t)) {
                            var i = (ss(t) + "e").split("e");
                            return +((i = (ss(e(i[0] + "e" + (+i[1] + n))) + "e").split("e"))[0] + "e" + (+i[1] - n))
                        }
                        return e(t)
                    }
                }
                var jr = mn && 1 / Ge(new mn([, -0]))[1] == 1 / 0 ? function(t) {
                    return new mn(t)
                }
                : Js;
                function Vr(t) {
                    return function(e) {
                        var n = no(e);
                        return n == m ? Ue(e) : n == b ? He(e) : function(t, e) {
                            return he(e, (function(e) {
                                return [e, t[e]]
                            }
                            ))
                        }(e, t(e))
                    }
                }
                function Fr(t, e, n, r, s, c, l, u) {
                    var d = 2 & e;
                    if (!d && "function" != typeof t)
                        throw new yt(o);
                    var p = r ? r.length : 0;
                    if (p || (e &= -97,
                    r = s = void 0),
                    l = void 0 === l ? l : an(is(l), 0),
                    u = void 0 === u ? u : is(u),
                    p -= s ? s.length : 0,
                    64 & e) {
                        var h = r
                          , f = s;
                        r = s = void 0
                    }
                    var m = d ? void 0 : Xr(t)
                      , g = [t, e, n, r, s, h, f, c, l, u];
                    if (m && function(t, e) {
                        var n = t[1]
                          , i = e[1]
                          , r = n | i
                          , o = r < 131
                          , s = 128 == i && 8 == n || 128 == i && 256 == n && t[7].length <= e[8] || 384 == i && e[7].length <= e[8] && 8 == n;
                        if (!o && !s)
                            return t;
                        1 & i && (t[2] = e[2],
                        r |= 1 & n ? 0 : 4);
                        var c = e[3];
                        if (c) {
                            var l = t[3];
                            t[3] = l ? mr(l, c, e[4]) : c,
                            t[4] = l ? ze(t[3], a) : e[4]
                        }
                        (c = e[5]) && (l = t[5],
                        t[5] = l ? gr(l, c, e[6]) : c,
                        t[6] = l ? ze(t[5], a) : e[6]);
                        (c = e[7]) && (t[7] = c);
                        128 & i && (t[8] = null == t[8] ? e[8] : sn(t[8], e[8]));
                        null == t[9] && (t[9] = e[9]);
                        t[0] = e[0],
                        t[1] = r
                    }(g, m),
                    t = g[0],
                    e = g[1],
                    n = g[2],
                    r = g[3],
                    s = g[4],
                    !(u = g[9] = void 0 === g[9] ? d ? 0 : t.length : an(g[9] - p, 0)) && 24 & e && (e &= -25),
                    e && 1 != e)
                        v = 8 == e || 16 == e ? function(t, e, n) {
                            var r = Cr(t);
                            return function o() {
                                for (var a = arguments.length, s = i(a), c = a, l = Kr(o); c--; )
                                    s[c] = arguments[c];
                                var u = a < 3 && s[0] !== l && s[a - 1] !== l ? [] : ze(s, l);
                                if ((a -= u.length) < n)
                                    return Lr(t, e, Or, o.placeholder, void 0, s, u, void 0, void 0, n - a);
                                var d = this && this !== Xt && this instanceof o ? r : t;
                                return oe(d, this, s)
                            }
                        }(t, e, u) : 32 != e && 33 != e || s.length ? Or.apply(void 0, g) : function(t, e, n, r) {
                            var o = 1 & e
                              , a = Cr(t);
                            return function e() {
                                for (var s = -1, c = arguments.length, l = -1, u = r.length, d = i(u + c), p = this && this !== Xt && this instanceof e ? a : t; ++l < u; )
                                    d[l] = r[l];
                                for (; c--; )
                                    d[l++] = arguments[++s];
                                return oe(p, o ? n : this, d)
                            }
                        }(t, e, n, r);
                    else
                        var v = function(t, e, n) {
                            var i = 1 & e
                              , r = Cr(t);
                            return function e() {
                                var o = this && this !== Xt && this instanceof e ? r : t;
                                return o.apply(i ? n : this, arguments)
                            }
                        }(t, e, n);
                    return xo((m ? zi : bo)(v, g), t, e)
                }
                function Ur(t, e, n, i) {
                    return void 0 === t || _a(t, St[n]) && !Et.call(i, n) ? e : t
                }
                function Br(t, e, n, i, r, o) {
                    return Ga(t) && Ga(e) && (o.set(e, t),
                    Pi(t, e, void 0, Br, o),
                    o.delete(e)),
                    t
                }
                function zr(t) {
                    return Xa(t) ? void 0 : t
                }
                function Gr(t, e, n, i, r, o) {
                    var a = 1 & n
                      , s = t.length
                      , c = e.length;
                    if (s != c && !(a && c > s))
                        return !1;
                    var l = o.get(t)
                      , u = o.get(e);
                    if (l && u)
                        return l == e && u == t;
                    var d = -1
                      , p = !0
                      , h = 2 & n ? new Nn : void 0;
                    for (o.set(t, e),
                    o.set(e, t); ++d < s; ) {
                        var f = t[d]
                          , m = e[d];
                        if (i)
                            var g = a ? i(m, f, d, e, t, o) : i(f, m, d, t, e, o);
                        if (void 0 !== g) {
                            if (g)
                                continue;
                            p = !1;
                            break
                        }
                        if (h) {
                            if (!ve(e, (function(t, e) {
                                if (!ke(h, e) && (f === t || r(f, t, n, i, o)))
                                    return h.push(e)
                            }
                            ))) {
                                p = !1;
                                break
                            }
                        } else if (f !== m && !r(f, m, n, i, o)) {
                            p = !1;
                            break
                        }
                    }
                    return o.delete(t),
                    o.delete(e),
                    p
                }
                function Hr(t) {
                    return So(mo(t, void 0, Ro), t + "")
                }
                function Wr(t) {
                    return pi(t, ws, to)
                }
                function qr(t) {
                    return pi(t, Ss, eo)
                }
                var Xr = yn ? function(t) {
                    return yn.get(t)
                }
                : Js;
                function Yr(t) {
                    for (var e = t.name + "", n = bn[e], i = Et.call(bn, e) ? n.length : 0; i--; ) {
                        var r = n[i]
                          , o = r.func;
                        if (null == o || o == t)
                            return r.name
                    }
                    return e
                }
                function Kr(t) {
                    return (Et.call(On, "placeholder") ? On : t).placeholder
                }
                function Zr() {
                    var t = On.iteratee || Xs;
                    return t = t === Xs ? Mi : t,
                    arguments.length ? t(arguments[0], arguments[1]) : t
                }
                function Jr(t, e) {
                    var n, i, r = t.__data__;
                    return ("string" == (i = typeof (n = e)) || "number" == i || "symbol" == i || "boolean" == i ? "__proto__" !== n : null === n) ? r["string" == typeof e ? "string" : "hash"] : r.map
                }
                function Qr(t) {
                    for (var e = ws(t), n = e.length; n--; ) {
                        var i = e[n]
                          , r = t[i];
                        e[n] = [i, r, ho(r)]
                    }
                    return e
                }
                function $r(t, e) {
                    var n = function(t, e) {
                        return null == t ? void 0 : t[e]
                    }(t, e);
                    return xi(n) ? n : void 0
                }
                var to = tn ? function(t) {
                    return null == t ? [] : (t = mt(t),
                    ue(tn(t), (function(e) {
                        return Yt.call(t, e)
                    }
                    )))
                }
                : rc
                  , eo = tn ? function(t) {
                    for (var e = []; t; )
                        fe(e, to(t)),
                        t = Wt(t);
                    return e
                }
                : rc
                  , no = hi;
                function io(t, e, n) {
                    for (var i = -1, r = (e = sr(e, t)).length, o = !1; ++i < r; ) {
                        var a = Ao(e[i]);
                        if (!(o = null != t && n(t, a)))
                            break;
                        t = t[a]
                    }
                    return o || ++i != r ? o : !!(r = null == t ? 0 : t.length) && za(r) && ao(a, r) && (Da(t) || ka(t))
                }
                function ro(t) {
                    return "function" != typeof t.constructor || po(t) ? {} : _n(Wt(t))
                }
                function oo(t) {
                    return Da(t) || ka(t) || !!(Jt && t && t[Jt])
                }
                function ao(t, e) {
                    var n = typeof t;
                    return !!(e = null == e ? 9007199254740991 : e) && ("number" == n || "symbol" != n && ct.test(t)) && t > -1 && t % 1 == 0 && t < e
                }
                function so(t, e, n) {
                    if (!Ga(n))
                        return !1;
                    var i = typeof e;
                    return !!("number" == i ? La(n) && ao(e, n.length) : "string" == i && e in n) && _a(n[e], t)
                }
                function co(t, e) {
                    if (Da(t))
                        return !1;
                    var n = typeof t;
                    return !("number" != n && "symbol" != n && "boolean" != n && null != t && !Ja(t)) || (H.test(t) || !G.test(t) || null != e && t in mt(e))
                }
                function lo(t) {
                    var e = Yr(t)
                      , n = On[e];
                    if ("function" != typeof n || !(e in kn.prototype))
                        return !1;
                    if (t === n)
                        return !0;
                    var i = Xr(n);
                    return !!i && t === i[0]
                }
                (pn && no(new pn(new ArrayBuffer(1))) != E || hn && no(new hn) != m || fn && "[object Promise]" != no(fn.resolve()) || mn && no(new mn) != b || gn && no(new gn) != x) && (no = function(t) {
                    var e = hi(t)
                      , n = e == v ? t.constructor : void 0
                      , i = n ? To(n) : "";
                    if (i)
                        switch (i) {
                        case wn:
                            return E;
                        case Sn:
                            return m;
                        case xn:
                            return "[object Promise]";
                        case Mn:
                            return b;
                        case En:
                            return x
                        }
                    return e
                }
                );
                var uo = xt ? Ua : oc;
                function po(t) {
                    var e = t && t.constructor;
                    return t === ("function" == typeof e && e.prototype || St)
                }
                function ho(t) {
                    return t == t && !Ga(t)
                }
                function fo(t, e) {
                    return function(n) {
                        return null != n && (n[t] === e && (void 0 !== e || t in mt(n)))
                    }
                }
                function mo(t, e, n) {
                    return e = an(void 0 === e ? t.length - 1 : e, 0),
                    function() {
                        for (var r = arguments, o = -1, a = an(r.length - e, 0), s = i(a); ++o < a; )
                            s[o] = r[e + o];
                        o = -1;
                        for (var c = i(e + 1); ++o < e; )
                            c[o] = r[o];
                        return c[e] = n(s),
                        oe(t, this, c)
                    }
                }
                function go(t, e) {
                    return e.length < 2 ? t : di(t, Wi(e, 0, -1))
                }
                function vo(t, e) {
                    for (var n = t.length, i = sn(e.length, n), r = vr(t); i--; ) {
                        var o = e[i];
                        t[i] = ao(o, n) ? r[o] : void 0
                    }
                    return t
                }
                function yo(t, e) {
                    if (("constructor" !== e || "function" != typeof t[e]) && "__proto__" != e)
                        return t[e]
                }
                var bo = Mo(zi)
                  , wo = Je || function(t, e) {
                    return Xt.setTimeout(t, e)
                }
                  , So = Mo(Gi);
                function xo(t, e, n) {
                    var i = e + "";
                    return So(t, function(t, e) {
                        var n = e.length;
                        if (!n)
                            return t;
                        var i = n - 1;
                        return e[i] = (n > 1 ? "& " : "") + e[i],
                        e = e.join(n > 2 ? ", " : " "),
                        t.replace(J, "{\n/* [wrapped with " + e + "] */\n")
                    }(i, function(t, e) {
                        return se(s, (function(n) {
                            var i = "_." + n[0];
                            e & n[1] && !de(t, i) && t.push(i)
                        }
                        )),
                        t.sort()
                    }(function(t) {
                        var e = t.match(Q);
                        return e ? e[1].split($) : []
                    }(i), n)))
                }
                function Mo(t) {
                    var e = 0
                      , n = 0;
                    return function() {
                        var i = cn()
                          , r = 16 - (i - n);
                        if (n = i,
                        r > 0) {
                            if (++e >= 800)
                                return arguments[0]
                        } else
                            e = 0;
                        return t.apply(void 0, arguments)
                    }
                }
                function Eo(t, e) {
                    var n = -1
                      , i = t.length
                      , r = i - 1;
                    for (e = void 0 === e ? i : e; ++n < e; ) {
                        var o = Ni(n, r)
                          , a = t[o];
                        t[o] = t[n],
                        t[n] = a
                    }
                    return t.length = e,
                    t
                }
                var Co = function(t) {
                    var e = Ma(t, (function(t) {
                        return 500 === n.size && n.clear(),
                        t
                    }
                    ))
                      , n = e.cache;
                    return e
                }((function(t) {
                    var e = [];
                    return 46 === t.charCodeAt(0) && e.push(""),
                    t.replace(W, (function(t, n, i, r) {
                        e.push(i ? r.replace(et, "$1") : n || t)
                    }
                    )),
                    e
                }
                ));
                function Ao(t) {
                    if ("string" == typeof t || Ja(t))
                        return t;
                    var e = t + "";
                    return "0" == e && 1 / t == -1 / 0 ? "-0" : e
                }
                function To(t) {
                    if (null != t) {
                        try {
                            return Mt.call(t)
                        } catch (t) {}
                        try {
                            return t + ""
                        } catch (t) {}
                    }
                    return ""
                }
                function Oo(t) {
                    if (t instanceof kn)
                        return t.clone();
                    var e = new In(t.__wrapped__,t.__chain__);
                    return e.__actions__ = vr(t.__actions__),
                    e.__index__ = t.__index__,
                    e.__values__ = t.__values__,
                    e
                }
                var _o = Vi((function(t, e) {
                    return Na(t) ? $n(t, oi(e, 1, Na, !0)) : []
                }
                ))
                  , Po = Vi((function(t, e) {
                    var n = Fo(e);
                    return Na(n) && (n = void 0),
                    Na(t) ? $n(t, oi(e, 1, Na, !0), Zr(n, 2)) : []
                }
                ))
                  , Io = Vi((function(t, e) {
                    var n = Fo(e);
                    return Na(n) && (n = void 0),
                    Na(t) ? $n(t, oi(e, 1, Na, !0), void 0, n) : []
                }
                ));
                function ko(t, e, n) {
                    var i = null == t ? 0 : t.length;
                    if (!i)
                        return -1;
                    var r = null == n ? 0 : is(n);
                    return r < 0 && (r = an(i + r, 0)),
                    we(t, Zr(e, 3), r)
                }
                function Do(t, e, n) {
                    var i = null == t ? 0 : t.length;
                    if (!i)
                        return -1;
                    var r = i - 1;
                    return void 0 !== n && (r = is(n),
                    r = n < 0 ? an(i + r, 0) : sn(r, i - 1)),
                    we(t, Zr(e, 3), r, !0)
                }
                function Ro(t) {
                    return (null == t ? 0 : t.length) ? oi(t, 1) : []
                }
                function Lo(t) {
                    return t && t.length ? t[0] : void 0
                }
                var No = Vi((function(t) {
                    var e = he(t, or);
                    return e.length && e[0] === t[0] ? vi(e) : []
                }
                ))
                  , jo = Vi((function(t) {
                    var e = Fo(t)
                      , n = he(t, or);
                    return e === Fo(n) ? e = void 0 : n.pop(),
                    n.length && n[0] === t[0] ? vi(n, Zr(e, 2)) : []
                }
                ))
                  , Vo = Vi((function(t) {
                    var e = Fo(t)
                      , n = he(t, or);
                    return (e = "function" == typeof e ? e : void 0) && n.pop(),
                    n.length && n[0] === t[0] ? vi(n, void 0, e) : []
                }
                ));
                function Fo(t) {
                    var e = null == t ? 0 : t.length;
                    return e ? t[e - 1] : void 0
                }
                var Uo = Vi(Bo);
                function Bo(t, e) {
                    return t && t.length && e && e.length ? Ri(t, e) : t
                }
                var zo = Hr((function(t, e) {
                    var n = null == t ? 0 : t.length
                      , i = Yn(t, e);
                    return Li(t, he(e, (function(t) {
                        return ao(t, n) ? +t : t
                    }
                    )).sort(fr)),
                    i
                }
                ));
                function Go(t) {
                    return null == t ? t : dn.call(t)
                }
                var Ho = Vi((function(t) {
                    return Qi(oi(t, 1, Na, !0))
                }
                ))
                  , Wo = Vi((function(t) {
                    var e = Fo(t);
                    return Na(e) && (e = void 0),
                    Qi(oi(t, 1, Na, !0), Zr(e, 2))
                }
                ))
                  , qo = Vi((function(t) {
                    var e = Fo(t);
                    return e = "function" == typeof e ? e : void 0,
                    Qi(oi(t, 1, Na, !0), void 0, e)
                }
                ));
                function Xo(t) {
                    if (!t || !t.length)
                        return [];
                    var e = 0;
                    return t = ue(t, (function(t) {
                        if (Na(t))
                            return e = an(t.length, e),
                            !0
                    }
                    )),
                    _e(e, (function(e) {
                        return he(t, Ce(e))
                    }
                    ))
                }
                function Yo(t, e) {
                    if (!t || !t.length)
                        return [];
                    var n = Xo(t);
                    return null == e ? n : he(n, (function(t) {
                        return oe(e, void 0, t)
                    }
                    ))
                }
                var Ko = Vi((function(t, e) {
                    return Na(t) ? $n(t, e) : []
                }
                ))
                  , Zo = Vi((function(t) {
                    return ir(ue(t, Na))
                }
                ))
                  , Jo = Vi((function(t) {
                    var e = Fo(t);
                    return Na(e) && (e = void 0),
                    ir(ue(t, Na), Zr(e, 2))
                }
                ))
                  , Qo = Vi((function(t) {
                    var e = Fo(t);
                    return e = "function" == typeof e ? e : void 0,
                    ir(ue(t, Na), void 0, e)
                }
                ))
                  , $o = Vi(Xo);
                var ta = Vi((function(t) {
                    var e = t.length
                      , n = e > 1 ? t[e - 1] : void 0;
                    return n = "function" == typeof n ? (t.pop(),
                    n) : void 0,
                    Yo(t, n)
                }
                ));
                function ea(t) {
                    var e = On(t);
                    return e.__chain__ = !0,
                    e
                }
                function na(t, e) {
                    return e(t)
                }
                var ia = Hr((function(t) {
                    var e = t.length
                      , n = e ? t[0] : 0
                      , i = this.__wrapped__
                      , r = function(e) {
                        return Yn(e, t)
                    };
                    return !(e > 1 || this.__actions__.length) && i instanceof kn && ao(n) ? ((i = i.slice(n, +n + (e ? 1 : 0))).__actions__.push({
                        func: na,
                        args: [r],
                        thisArg: void 0
                    }),
                    new In(i,this.__chain__).thru((function(t) {
                        return e && !t.length && t.push(void 0),
                        t
                    }
                    ))) : this.thru(r)
                }
                ));
                var ra = br((function(t, e, n) {
                    Et.call(t, n) ? ++t[n] : Xn(t, n, 1)
                }
                ));
                var oa = Ar(ko)
                  , aa = Ar(Do);
                function sa(t, e) {
                    return (Da(t) ? se : ti)(t, Zr(e, 3))
                }
                function ca(t, e) {
                    return (Da(t) ? ce : ei)(t, Zr(e, 3))
                }
                var la = br((function(t, e, n) {
                    Et.call(t, n) ? t[n].push(e) : Xn(t, n, [e])
                }
                ));
                var ua = Vi((function(t, e, n) {
                    var r = -1
                      , o = "function" == typeof e
                      , a = La(t) ? i(t.length) : [];
                    return ti(t, (function(t) {
                        a[++r] = o ? oe(e, t, n) : yi(t, e, n)
                    }
                    )),
                    a
                }
                ))
                  , da = br((function(t, e, n) {
                    Xn(t, n, e)
                }
                ));
                function pa(t, e) {
                    return (Da(t) ? he : Ti)(t, Zr(e, 3))
                }
                var ha = br((function(t, e, n) {
                    t[n ? 0 : 1].push(e)
                }
                ), (function() {
                    return [[], []]
                }
                ));
                var fa = Vi((function(t, e) {
                    if (null == t)
                        return [];
                    var n = e.length;
                    return n > 1 && so(t, e[0], e[1]) ? e = [] : n > 2 && so(e[0], e[1], e[2]) && (e = [e[0]]),
                    ki(t, oi(e, 1), [])
                }
                ))
                  , ma = Ze || function() {
                    return Xt.Date.now()
                }
                ;
                function ga(t, e, n) {
                    return e = n ? void 0 : e,
                    Fr(t, 128, void 0, void 0, void 0, void 0, e = t && null == e ? t.length : e)
                }
                function va(t, e) {
                    var n;
                    if ("function" != typeof e)
                        throw new yt(o);
                    return t = is(t),
                    function() {
                        return --t > 0 && (n = e.apply(this, arguments)),
                        t <= 1 && (e = void 0),
                        n
                    }
                }
                var ya = Vi((function(t, e, n) {
                    var i = 1;
                    if (n.length) {
                        var r = ze(n, Kr(ya));
                        i |= 32
                    }
                    return Fr(t, i, e, n, r)
                }
                ))
                  , ba = Vi((function(t, e, n) {
                    var i = 3;
                    if (n.length) {
                        var r = ze(n, Kr(ba));
                        i |= 32
                    }
                    return Fr(e, i, t, n, r)
                }
                ));
                function wa(t, e, n) {
                    var i, r, a, s, c, l, u = 0, d = !1, p = !1, h = !0;
                    if ("function" != typeof t)
                        throw new yt(o);
                    function f(e) {
                        var n = i
                          , o = r;
                        return i = r = void 0,
                        u = e,
                        s = t.apply(o, n)
                    }
                    function m(t) {
                        return u = t,
                        c = wo(v, e),
                        d ? f(t) : s
                    }
                    function g(t) {
                        var n = t - l;
                        return void 0 === l || n >= e || n < 0 || p && t - u >= a
                    }
                    function v() {
                        var t = ma();
                        if (g(t))
                            return y(t);
                        c = wo(v, function(t) {
                            var n = e - (t - l);
                            return p ? sn(n, a - (t - u)) : n
                        }(t))
                    }
                    function y(t) {
                        return c = void 0,
                        h && i ? f(t) : (i = r = void 0,
                        s)
                    }
                    function b() {
                        var t = ma()
                          , n = g(t);
                        if (i = arguments,
                        r = this,
                        l = t,
                        n) {
                            if (void 0 === c)
                                return m(l);
                            if (p)
                                return ur(c),
                                c = wo(v, e),
                                f(l)
                        }
                        return void 0 === c && (c = wo(v, e)),
                        s
                    }
                    return e = os(e) || 0,
                    Ga(n) && (d = !!n.leading,
                    a = (p = "maxWait"in n) ? an(os(n.maxWait) || 0, e) : a,
                    h = "trailing"in n ? !!n.trailing : h),
                    b.cancel = function() {
                        void 0 !== c && ur(c),
                        u = 0,
                        i = l = r = c = void 0
                    }
                    ,
                    b.flush = function() {
                        return void 0 === c ? s : y(ma())
                    }
                    ,
                    b
                }
                var Sa = Vi((function(t, e) {
                    return Qn(t, 1, e)
                }
                ))
                  , xa = Vi((function(t, e, n) {
                    return Qn(t, os(e) || 0, n)
                }
                ));
                function Ma(t, e) {
                    if ("function" != typeof t || null != e && "function" != typeof e)
                        throw new yt(o);
                    var n = function() {
                        var i = arguments
                          , r = e ? e.apply(this, i) : i[0]
                          , o = n.cache;
                        if (o.has(r))
                            return o.get(r);
                        var a = t.apply(this, i);
                        return n.cache = o.set(r, a) || o,
                        a
                    };
                    return n.cache = new (Ma.Cache || Ln),
                    n
                }
                function Ea(t) {
                    if ("function" != typeof t)
                        throw new yt(o);
                    return function() {
                        var e = arguments;
                        switch (e.length) {
                        case 0:
                            return !t.call(this);
                        case 1:
                            return !t.call(this, e[0]);
                        case 2:
                            return !t.call(this, e[0], e[1]);
                        case 3:
                            return !t.call(this, e[0], e[1], e[2])
                        }
                        return !t.apply(this, e)
                    }
                }
                Ma.Cache = Ln;
                var Ca = cr((function(t, e) {
                    var n = (e = 1 == e.length && Da(e[0]) ? he(e[0], Pe(Zr())) : he(oi(e, 1), Pe(Zr()))).length;
                    return Vi((function(i) {
                        for (var r = -1, o = sn(i.length, n); ++r < o; )
                            i[r] = e[r].call(this, i[r]);
                        return oe(t, this, i)
                    }
                    ))
                }
                ))
                  , Aa = Vi((function(t, e) {
                    return Fr(t, 32, void 0, e, ze(e, Kr(Aa)))
                }
                ))
                  , Ta = Vi((function(t, e) {
                    return Fr(t, 64, void 0, e, ze(e, Kr(Ta)))
                }
                ))
                  , Oa = Hr((function(t, e) {
                    return Fr(t, 256, void 0, void 0, void 0, e)
                }
                ));
                function _a(t, e) {
                    return t === e || t != t && e != e
                }
                var Pa = Rr(fi)
                  , Ia = Rr((function(t, e) {
                    return t >= e
                }
                ))
                  , ka = bi(function() {
                    return arguments
                }()) ? bi : function(t) {
                    return Ha(t) && Et.call(t, "callee") && !Yt.call(t, "callee")
                }
                  , Da = i.isArray
                  , Ra = $t ? Pe($t) : function(t) {
                    return Ha(t) && hi(t) == M
                }
                ;
                function La(t) {
                    return null != t && za(t.length) && !Ua(t)
                }
                function Na(t) {
                    return Ha(t) && La(t)
                }
                var ja = en || oc
                  , Va = te ? Pe(te) : function(t) {
                    return Ha(t) && hi(t) == d
                }
                ;
                function Fa(t) {
                    if (!Ha(t))
                        return !1;
                    var e = hi(t);
                    return e == p || "[object DOMException]" == e || "string" == typeof t.message && "string" == typeof t.name && !Xa(t)
                }
                function Ua(t) {
                    if (!Ga(t))
                        return !1;
                    var e = hi(t);
                    return e == h || e == f || "[object AsyncFunction]" == e || "[object Proxy]" == e
                }
                function Ba(t) {
                    return "number" == typeof t && t == is(t)
                }
                function za(t) {
                    return "number" == typeof t && t > -1 && t % 1 == 0 && t <= 9007199254740991
                }
                function Ga(t) {
                    var e = typeof t;
                    return null != t && ("object" == e || "function" == e)
                }
                function Ha(t) {
                    return null != t && "object" == typeof t
                }
                var Wa = ee ? Pe(ee) : function(t) {
                    return Ha(t) && no(t) == m
                }
                ;
                function qa(t) {
                    return "number" == typeof t || Ha(t) && hi(t) == g
                }
                function Xa(t) {
                    if (!Ha(t) || hi(t) != v)
                        return !1;
                    var e = Wt(t);
                    if (null === e)
                        return !0;
                    var n = Et.call(e, "constructor") && e.constructor;
                    return "function" == typeof n && n instanceof n && Mt.call(n) == Ot
                }
                var Ya = ne ? Pe(ne) : function(t) {
                    return Ha(t) && hi(t) == y
                }
                ;
                var Ka = ie ? Pe(ie) : function(t) {
                    return Ha(t) && no(t) == b
                }
                ;
                function Za(t) {
                    return "string" == typeof t || !Da(t) && Ha(t) && hi(t) == w
                }
                function Ja(t) {
                    return "symbol" == typeof t || Ha(t) && hi(t) == S
                }
                var Qa = re ? Pe(re) : function(t) {
                    return Ha(t) && za(t.length) && !!Ut[hi(t)]
                }
                ;
                var $a = Rr(Ai)
                  , ts = Rr((function(t, e) {
                    return t <= e
                }
                ));
                function es(t) {
                    if (!t)
                        return [];
                    if (La(t))
                        return Za(t) ? qe(t) : vr(t);
                    if (Qt && t[Qt])
                        return function(t) {
                            for (var e, n = []; !(e = t.next()).done; )
                                n.push(e.value);
                            return n
                        }(t[Qt]());
                    var e = no(t);
                    return (e == m ? Ue : e == b ? Ge : _s)(t)
                }
                function ns(t) {
                    return t ? (t = os(t)) === 1 / 0 || t === -1 / 0 ? 17976931348623157e292 * (t < 0 ? -1 : 1) : t == t ? t : 0 : 0 === t ? t : 0
                }
                function is(t) {
                    var e = ns(t)
                      , n = e % 1;
                    return e == e ? n ? e - n : e : 0
                }
                function rs(t) {
                    return t ? Kn(is(t), 0, 4294967295) : 0
                }
                function os(t) {
                    if ("number" == typeof t)
                        return t;
                    if (Ja(t))
                        return NaN;
                    if (Ga(t)) {
                        var e = "function" == typeof t.valueOf ? t.valueOf() : t;
                        t = Ga(e) ? e + "" : e
                    }
                    if ("string" != typeof t)
                        return 0 === t ? t : +t;
                    t = t.replace(Y, "");
                    var n = ot.test(t);
                    return n || st.test(t) ? Ht(t.slice(2), n ? 2 : 8) : rt.test(t) ? NaN : +t
                }
                function as(t) {
                    return yr(t, Ss(t))
                }
                function ss(t) {
                    return null == t ? "" : Ji(t)
                }
                var cs = wr((function(t, e) {
                    if (po(e) || La(e))
                        yr(e, ws(e), t);
                    else
                        for (var n in e)
                            Et.call(e, n) && Gn(t, n, e[n])
                }
                ))
                  , ls = wr((function(t, e) {
                    yr(e, Ss(e), t)
                }
                ))
                  , us = wr((function(t, e, n, i) {
                    yr(e, Ss(e), t, i)
                }
                ))
                  , ds = wr((function(t, e, n, i) {
                    yr(e, ws(e), t, i)
                }
                ))
                  , ps = Hr(Yn);
                var hs = Vi((function(t, e) {
                    t = mt(t);
                    var n = -1
                      , i = e.length
                      , r = i > 2 ? e[2] : void 0;
                    for (r && so(e[0], e[1], r) && (i = 1); ++n < i; )
                        for (var o = e[n], a = Ss(o), s = -1, c = a.length; ++s < c; ) {
                            var l = a[s]
                              , u = t[l];
                            (void 0 === u || _a(u, St[l]) && !Et.call(t, l)) && (t[l] = o[l])
                        }
                    return t
                }
                ))
                  , fs = Vi((function(t) {
                    return t.push(void 0, Br),
                    oe(Ms, void 0, t)
                }
                ));
                function ms(t, e, n) {
                    var i = null == t ? void 0 : di(t, e);
                    return void 0 === i ? n : i
                }
                function gs(t, e) {
                    return null != t && io(t, e, gi)
                }
                var vs = _r((function(t, e, n) {
                    null != e && "function" != typeof e.toString && (e = Tt.call(e)),
                    t[e] = n
                }
                ), Gs(qs))
                  , ys = _r((function(t, e, n) {
                    null != e && "function" != typeof e.toString && (e = Tt.call(e)),
                    Et.call(t, e) ? t[e].push(n) : t[e] = [n]
                }
                ), Zr)
                  , bs = Vi(yi);
                function ws(t) {
                    return La(t) ? Vn(t) : Ei(t)
                }
                function Ss(t) {
                    return La(t) ? Vn(t, !0) : Ci(t)
                }
                var xs = wr((function(t, e, n) {
                    Pi(t, e, n)
                }
                ))
                  , Ms = wr((function(t, e, n, i) {
                    Pi(t, e, n, i)
                }
                ))
                  , Es = Hr((function(t, e) {
                    var n = {};
                    if (null == t)
                        return n;
                    var i = !1;
                    e = he(e, (function(e) {
                        return e = sr(e, t),
                        i || (i = e.length > 1),
                        e
                    }
                    )),
                    yr(t, qr(t), n),
                    i && (n = Zn(n, 7, zr));
                    for (var r = e.length; r--; )
                        $i(n, e[r]);
                    return n
                }
                ));
                var Cs = Hr((function(t, e) {
                    return null == t ? {} : function(t, e) {
                        return Di(t, e, (function(e, n) {
                            return gs(t, n)
                        }
                        ))
                    }(t, e)
                }
                ));
                function As(t, e) {
                    if (null == t)
                        return {};
                    var n = he(qr(t), (function(t) {
                        return [t]
                    }
                    ));
                    return e = Zr(e),
                    Di(t, n, (function(t, n) {
                        return e(t, n[0])
                    }
                    ))
                }
                var Ts = Vr(ws)
                  , Os = Vr(Ss);
                function _s(t) {
                    return null == t ? [] : Ie(t, ws(t))
                }
                var Ps = Er((function(t, e, n) {
                    return e = e.toLowerCase(),
                    t + (n ? Is(e) : e)
                }
                ));
                function Is(t) {
                    return Fs(ss(t).toLowerCase())
                }
                function ks(t) {
                    return (t = ss(t)) && t.replace(lt, Ne).replace(Dt, "")
                }
                var Ds = Er((function(t, e, n) {
                    return t + (n ? "-" : "") + e.toLowerCase()
                }
                ))
                  , Rs = Er((function(t, e, n) {
                    return t + (n ? " " : "") + e.toLowerCase()
                }
                ))
                  , Ls = Mr("toLowerCase");
                var Ns = Er((function(t, e, n) {
                    return t + (n ? "_" : "") + e.toLowerCase()
                }
                ));
                var js = Er((function(t, e, n) {
                    return t + (n ? " " : "") + Fs(e)
                }
                ));
                var Vs = Er((function(t, e, n) {
                    return t + (n ? " " : "") + e.toUpperCase()
                }
                ))
                  , Fs = Mr("toUpperCase");
                function Us(t, e, n) {
                    return t = ss(t),
                    void 0 === (e = n ? void 0 : e) ? function(t) {
                        return jt.test(t)
                    }(t) ? function(t) {
                        return t.match(Lt) || []
                    }(t) : function(t) {
                        return t.match(tt) || []
                    }(t) : t.match(e) || []
                }
                var Bs = Vi((function(t, e) {
                    try {
                        return oe(t, void 0, e)
                    } catch (t) {
                        return Fa(t) ? t : new pt(t)
                    }
                }
                ))
                  , zs = Hr((function(t, e) {
                    return se(e, (function(e) {
                        e = Ao(e),
                        Xn(t, e, ya(t[e], t))
                    }
                    )),
                    t
                }
                ));
                function Gs(t) {
                    return function() {
                        return t
                    }
                }
                var Hs = Tr()
                  , Ws = Tr(!0);
                function qs(t) {
                    return t
                }
                function Xs(t) {
                    return Mi("function" == typeof t ? t : Zn(t, 1))
                }
                var Ys = Vi((function(t, e) {
                    return function(n) {
                        return yi(n, t, e)
                    }
                }
                ))
                  , Ks = Vi((function(t, e) {
                    return function(n) {
                        return yi(t, n, e)
                    }
                }
                ));
                function Zs(t, e, n) {
                    var i = ws(e)
                      , r = ui(e, i);
                    null != n || Ga(e) && (r.length || !i.length) || (n = e,
                    e = t,
                    t = this,
                    r = ui(e, ws(e)));
                    var o = !(Ga(n) && "chain"in n && !n.chain)
                      , a = Ua(t);
                    return se(r, (function(n) {
                        var i = e[n];
                        t[n] = i,
                        a && (t.prototype[n] = function() {
                            var e = this.__chain__;
                            if (o || e) {
                                var n = t(this.__wrapped__)
                                  , r = n.__actions__ = vr(this.__actions__);
                                return r.push({
                                    func: i,
                                    args: arguments,
                                    thisArg: t
                                }),
                                n.__chain__ = e,
                                n
                            }
                            return i.apply(t, fe([this.value()], arguments))
                        }
                        )
                    }
                    )),
                    t
                }
                function Js() {}
                var Qs = Ir(he)
                  , $s = Ir(le)
                  , tc = Ir(ve);
                function ec(t) {
                    return co(t) ? Ce(Ao(t)) : function(t) {
                        return function(e) {
                            return di(e, t)
                        }
                    }(t)
                }
                var nc = Dr()
                  , ic = Dr(!0);
                function rc() {
                    return []
                }
                function oc() {
                    return !1
                }
                var ac = Pr((function(t, e) {
                    return t + e
                }
                ), 0)
                  , sc = Nr("ceil")
                  , cc = Pr((function(t, e) {
                    return t / e
                }
                ), 1)
                  , lc = Nr("floor");
                var uc, dc = Pr((function(t, e) {
                    return t * e
                }
                ), 1), pc = Nr("round"), hc = Pr((function(t, e) {
                    return t - e
                }
                ), 0);
                return On.after = function(t, e) {
                    if ("function" != typeof e)
                        throw new yt(o);
                    return t = is(t),
                    function() {
                        if (--t < 1)
                            return e.apply(this, arguments)
                    }
                }
                ,
                On.ary = ga,
                On.assign = cs,
                On.assignIn = ls,
                On.assignInWith = us,
                On.assignWith = ds,
                On.at = ps,
                On.before = va,
                On.bind = ya,
                On.bindAll = zs,
                On.bindKey = ba,
                On.castArray = function() {
                    if (!arguments.length)
                        return [];
                    var t = arguments[0];
                    return Da(t) ? t : [t]
                }
                ,
                On.chain = ea,
                On.chunk = function(t, e, n) {
                    e = (n ? so(t, e, n) : void 0 === e) ? 1 : an(is(e), 0);
                    var r = null == t ? 0 : t.length;
                    if (!r || e < 1)
                        return [];
                    for (var o = 0, a = 0, s = i(Qe(r / e)); o < r; )
                        s[a++] = Wi(t, o, o += e);
                    return s
                }
                ,
                On.compact = function(t) {
                    for (var e = -1, n = null == t ? 0 : t.length, i = 0, r = []; ++e < n; ) {
                        var o = t[e];
                        o && (r[i++] = o)
                    }
                    return r
                }
                ,
                On.concat = function() {
                    var t = arguments.length;
                    if (!t)
                        return [];
                    for (var e = i(t - 1), n = arguments[0], r = t; r--; )
                        e[r - 1] = arguments[r];
                    return fe(Da(n) ? vr(n) : [n], oi(e, 1))
                }
                ,
                On.cond = function(t) {
                    var e = null == t ? 0 : t.length
                      , n = Zr();
                    return t = e ? he(t, (function(t) {
                        if ("function" != typeof t[1])
                            throw new yt(o);
                        return [n(t[0]), t[1]]
                    }
                    )) : [],
                    Vi((function(n) {
                        for (var i = -1; ++i < e; ) {
                            var r = t[i];
                            if (oe(r[0], this, n))
                                return oe(r[1], this, n)
                        }
                    }
                    ))
                }
                ,
                On.conforms = function(t) {
                    return function(t) {
                        var e = ws(t);
                        return function(n) {
                            return Jn(n, t, e)
                        }
                    }(Zn(t, 1))
                }
                ,
                On.constant = Gs,
                On.countBy = ra,
                On.create = function(t, e) {
                    var n = _n(t);
                    return null == e ? n : qn(n, e)
                }
                ,
                On.curry = function t(e, n, i) {
                    var r = Fr(e, 8, void 0, void 0, void 0, void 0, void 0, n = i ? void 0 : n);
                    return r.placeholder = t.placeholder,
                    r
                }
                ,
                On.curryRight = function t(e, n, i) {
                    var r = Fr(e, 16, void 0, void 0, void 0, void 0, void 0, n = i ? void 0 : n);
                    return r.placeholder = t.placeholder,
                    r
                }
                ,
                On.debounce = wa,
                On.defaults = hs,
                On.defaultsDeep = fs,
                On.defer = Sa,
                On.delay = xa,
                On.difference = _o,
                On.differenceBy = Po,
                On.differenceWith = Io,
                On.drop = function(t, e, n) {
                    var i = null == t ? 0 : t.length;
                    return i ? Wi(t, (e = n || void 0 === e ? 1 : is(e)) < 0 ? 0 : e, i) : []
                }
                ,
                On.dropRight = function(t, e, n) {
                    var i = null == t ? 0 : t.length;
                    return i ? Wi(t, 0, (e = i - (e = n || void 0 === e ? 1 : is(e))) < 0 ? 0 : e) : []
                }
                ,
                On.dropRightWhile = function(t, e) {
                    return t && t.length ? er(t, Zr(e, 3), !0, !0) : []
                }
                ,
                On.dropWhile = function(t, e) {
                    return t && t.length ? er(t, Zr(e, 3), !0) : []
                }
                ,
                On.fill = function(t, e, n, i) {
                    var r = null == t ? 0 : t.length;
                    return r ? (n && "number" != typeof n && so(t, e, n) && (n = 0,
                    i = r),
                    function(t, e, n, i) {
                        var r = t.length;
                        for ((n = is(n)) < 0 && (n = -n > r ? 0 : r + n),
                        (i = void 0 === i || i > r ? r : is(i)) < 0 && (i += r),
                        i = n > i ? 0 : rs(i); n < i; )
                            t[n++] = e;
                        return t
                    }(t, e, n, i)) : []
                }
                ,
                On.filter = function(t, e) {
                    return (Da(t) ? ue : ri)(t, Zr(e, 3))
                }
                ,
                On.flatMap = function(t, e) {
                    return oi(pa(t, e), 1)
                }
                ,
                On.flatMapDeep = function(t, e) {
                    return oi(pa(t, e), 1 / 0)
                }
                ,
                On.flatMapDepth = function(t, e, n) {
                    return n = void 0 === n ? 1 : is(n),
                    oi(pa(t, e), n)
                }
                ,
                On.flatten = Ro,
                On.flattenDeep = function(t) {
                    return (null == t ? 0 : t.length) ? oi(t, 1 / 0) : []
                }
                ,
                On.flattenDepth = function(t, e) {
                    return (null == t ? 0 : t.length) ? oi(t, e = void 0 === e ? 1 : is(e)) : []
                }
                ,
                On.flip = function(t) {
                    return Fr(t, 512)
                }
                ,
                On.flow = Hs,
                On.flowRight = Ws,
                On.fromPairs = function(t) {
                    for (var e = -1, n = null == t ? 0 : t.length, i = {}; ++e < n; ) {
                        var r = t[e];
                        i[r[0]] = r[1]
                    }
                    return i
                }
                ,
                On.functions = function(t) {
                    return null == t ? [] : ui(t, ws(t))
                }
                ,
                On.functionsIn = function(t) {
                    return null == t ? [] : ui(t, Ss(t))
                }
                ,
                On.groupBy = la,
                On.initial = function(t) {
                    return (null == t ? 0 : t.length) ? Wi(t, 0, -1) : []
                }
                ,
                On.intersection = No,
                On.intersectionBy = jo,
                On.intersectionWith = Vo,
                On.invert = vs,
                On.invertBy = ys,
                On.invokeMap = ua,
                On.iteratee = Xs,
                On.keyBy = da,
                On.keys = ws,
                On.keysIn = Ss,
                On.map = pa,
                On.mapKeys = function(t, e) {
                    var n = {};
                    return e = Zr(e, 3),
                    ci(t, (function(t, i, r) {
                        Xn(n, e(t, i, r), t)
                    }
                    )),
                    n
                }
                ,
                On.mapValues = function(t, e) {
                    var n = {};
                    return e = Zr(e, 3),
                    ci(t, (function(t, i, r) {
                        Xn(n, i, e(t, i, r))
                    }
                    )),
                    n
                }
                ,
                On.matches = function(t) {
                    return Oi(Zn(t, 1))
                }
                ,
                On.matchesProperty = function(t, e) {
                    return _i(t, Zn(e, 1))
                }
                ,
                On.memoize = Ma,
                On.merge = xs,
                On.mergeWith = Ms,
                On.method = Ys,
                On.methodOf = Ks,
                On.mixin = Zs,
                On.negate = Ea,
                On.nthArg = function(t) {
                    return t = is(t),
                    Vi((function(e) {
                        return Ii(e, t)
                    }
                    ))
                }
                ,
                On.omit = Es,
                On.omitBy = function(t, e) {
                    return As(t, Ea(Zr(e)))
                }
                ,
                On.once = function(t) {
                    return va(2, t)
                }
                ,
                On.orderBy = function(t, e, n, i) {
                    return null == t ? [] : (Da(e) || (e = null == e ? [] : [e]),
                    Da(n = i ? void 0 : n) || (n = null == n ? [] : [n]),
                    ki(t, e, n))
                }
                ,
                On.over = Qs,
                On.overArgs = Ca,
                On.overEvery = $s,
                On.overSome = tc,
                On.partial = Aa,
                On.partialRight = Ta,
                On.partition = ha,
                On.pick = Cs,
                On.pickBy = As,
                On.property = ec,
                On.propertyOf = function(t) {
                    return function(e) {
                        return null == t ? void 0 : di(t, e)
                    }
                }
                ,
                On.pull = Uo,
                On.pullAll = Bo,
                On.pullAllBy = function(t, e, n) {
                    return t && t.length && e && e.length ? Ri(t, e, Zr(n, 2)) : t
                }
                ,
                On.pullAllWith = function(t, e, n) {
                    return t && t.length && e && e.length ? Ri(t, e, void 0, n) : t
                }
                ,
                On.pullAt = zo,
                On.range = nc,
                On.rangeRight = ic,
                On.rearg = Oa,
                On.reject = function(t, e) {
                    return (Da(t) ? ue : ri)(t, Ea(Zr(e, 3)))
                }
                ,
                On.remove = function(t, e) {
                    var n = [];
                    if (!t || !t.length)
                        return n;
                    var i = -1
                      , r = []
                      , o = t.length;
                    for (e = Zr(e, 3); ++i < o; ) {
                        var a = t[i];
                        e(a, i, t) && (n.push(a),
                        r.push(i))
                    }
                    return Li(t, r),
                    n
                }
                ,
                On.rest = function(t, e) {
                    if ("function" != typeof t)
                        throw new yt(o);
                    return Vi(t, e = void 0 === e ? e : is(e))
                }
                ,
                On.reverse = Go,
                On.sampleSize = function(t, e, n) {
                    return e = (n ? so(t, e, n) : void 0 === e) ? 1 : is(e),
                    (Da(t) ? Un : Ui)(t, e)
                }
                ,
                On.set = function(t, e, n) {
                    return null == t ? t : Bi(t, e, n)
                }
                ,
                On.setWith = function(t, e, n, i) {
                    return i = "function" == typeof i ? i : void 0,
                    null == t ? t : Bi(t, e, n, i)
                }
                ,
                On.shuffle = function(t) {
                    return (Da(t) ? Bn : Hi)(t)
                }
                ,
                On.slice = function(t, e, n) {
                    var i = null == t ? 0 : t.length;
                    return i ? (n && "number" != typeof n && so(t, e, n) ? (e = 0,
                    n = i) : (e = null == e ? 0 : is(e),
                    n = void 0 === n ? i : is(n)),
                    Wi(t, e, n)) : []
                }
                ,
                On.sortBy = fa,
                On.sortedUniq = function(t) {
                    return t && t.length ? Ki(t) : []
                }
                ,
                On.sortedUniqBy = function(t, e) {
                    return t && t.length ? Ki(t, Zr(e, 2)) : []
                }
                ,
                On.split = function(t, e, n) {
                    return n && "number" != typeof n && so(t, e, n) && (e = n = void 0),
                    (n = void 0 === n ? 4294967295 : n >>> 0) ? (t = ss(t)) && ("string" == typeof e || null != e && !Ya(e)) && !(e = Ji(e)) && Fe(t) ? lr(qe(t), 0, n) : t.split(e, n) : []
                }
                ,
                On.spread = function(t, e) {
                    if ("function" != typeof t)
                        throw new yt(o);
                    return e = null == e ? 0 : an(is(e), 0),
                    Vi((function(n) {
                        var i = n[e]
                          , r = lr(n, 0, e);
                        return i && fe(r, i),
                        oe(t, this, r)
                    }
                    ))
                }
                ,
                On.tail = function(t) {
                    var e = null == t ? 0 : t.length;
                    return e ? Wi(t, 1, e) : []
                }
                ,
                On.take = function(t, e, n) {
                    return t && t.length ? Wi(t, 0, (e = n || void 0 === e ? 1 : is(e)) < 0 ? 0 : e) : []
                }
                ,
                On.takeRight = function(t, e, n) {
                    var i = null == t ? 0 : t.length;
                    return i ? Wi(t, (e = i - (e = n || void 0 === e ? 1 : is(e))) < 0 ? 0 : e, i) : []
                }
                ,
                On.takeRightWhile = function(t, e) {
                    return t && t.length ? er(t, Zr(e, 3), !1, !0) : []
                }
                ,
                On.takeWhile = function(t, e) {
                    return t && t.length ? er(t, Zr(e, 3)) : []
                }
                ,
                On.tap = function(t, e) {
                    return e(t),
                    t
                }
                ,
                On.throttle = function(t, e, n) {
                    var i = !0
                      , r = !0;
                    if ("function" != typeof t)
                        throw new yt(o);
                    return Ga(n) && (i = "leading"in n ? !!n.leading : i,
                    r = "trailing"in n ? !!n.trailing : r),
                    wa(t, e, {
                        leading: i,
                        maxWait: e,
                        trailing: r
                    })
                }
                ,
                On.thru = na,
                On.toArray = es,
                On.toPairs = Ts,
                On.toPairsIn = Os,
                On.toPath = function(t) {
                    return Da(t) ? he(t, Ao) : Ja(t) ? [t] : vr(Co(ss(t)))
                }
                ,
                On.toPlainObject = as,
                On.transform = function(t, e, n) {
                    var i = Da(t)
                      , r = i || ja(t) || Qa(t);
                    if (e = Zr(e, 4),
                    null == n) {
                        var o = t && t.constructor;
                        n = r ? i ? new o : [] : Ga(t) && Ua(o) ? _n(Wt(t)) : {}
                    }
                    return (r ? se : ci)(t, (function(t, i, r) {
                        return e(n, t, i, r)
                    }
                    )),
                    n
                }
                ,
                On.unary = function(t) {
                    return ga(t, 1)
                }
                ,
                On.union = Ho,
                On.unionBy = Wo,
                On.unionWith = qo,
                On.uniq = function(t) {
                    return t && t.length ? Qi(t) : []
                }
                ,
                On.uniqBy = function(t, e) {
                    return t && t.length ? Qi(t, Zr(e, 2)) : []
                }
                ,
                On.uniqWith = function(t, e) {
                    return e = "function" == typeof e ? e : void 0,
                    t && t.length ? Qi(t, void 0, e) : []
                }
                ,
                On.unset = function(t, e) {
                    return null == t || $i(t, e)
                }
                ,
                On.unzip = Xo,
                On.unzipWith = Yo,
                On.update = function(t, e, n) {
                    return null == t ? t : tr(t, e, ar(n))
                }
                ,
                On.updateWith = function(t, e, n, i) {
                    return i = "function" == typeof i ? i : void 0,
                    null == t ? t : tr(t, e, ar(n), i)
                }
                ,
                On.values = _s,
                On.valuesIn = function(t) {
                    return null == t ? [] : Ie(t, Ss(t))
                }
                ,
                On.without = Ko,
                On.words = Us,
                On.wrap = function(t, e) {
                    return Aa(ar(e), t)
                }
                ,
                On.xor = Zo,
                On.xorBy = Jo,
                On.xorWith = Qo,
                On.zip = $o,
                On.zipObject = function(t, e) {
                    return rr(t || [], e || [], Gn)
                }
                ,
                On.zipObjectDeep = function(t, e) {
                    return rr(t || [], e || [], Bi)
                }
                ,
                On.zipWith = ta,
                On.entries = Ts,
                On.entriesIn = Os,
                On.extend = ls,
                On.extendWith = us,
                Zs(On, On),
                On.add = ac,
                On.attempt = Bs,
                On.camelCase = Ps,
                On.capitalize = Is,
                On.ceil = sc,
                On.clamp = function(t, e, n) {
                    return void 0 === n && (n = e,
                    e = void 0),
                    void 0 !== n && (n = (n = os(n)) == n ? n : 0),
                    void 0 !== e && (e = (e = os(e)) == e ? e : 0),
                    Kn(os(t), e, n)
                }
                ,
                On.clone = function(t) {
                    return Zn(t, 4)
                }
                ,
                On.cloneDeep = function(t) {
                    return Zn(t, 5)
                }
                ,
                On.cloneDeepWith = function(t, e) {
                    return Zn(t, 5, e = "function" == typeof e ? e : void 0)
                }
                ,
                On.cloneWith = function(t, e) {
                    return Zn(t, 4, e = "function" == typeof e ? e : void 0)
                }
                ,
                On.conformsTo = function(t, e) {
                    return null == e || Jn(t, e, ws(e))
                }
                ,
                On.deburr = ks,
                On.defaultTo = function(t, e) {
                    return null == t || t != t ? e : t
                }
                ,
                On.divide = cc,
                On.endsWith = function(t, e, n) {
                    t = ss(t),
                    e = Ji(e);
                    var i = t.length
                      , r = n = void 0 === n ? i : Kn(is(n), 0, i);
                    return (n -= e.length) >= 0 && t.slice(n, r) == e
                }
                ,
                On.eq = _a,
                On.escape = function(t) {
                    return (t = ss(t)) && F.test(t) ? t.replace(j, je) : t
                }
                ,
                On.escapeRegExp = function(t) {
                    return (t = ss(t)) && X.test(t) ? t.replace(q, "\\$&") : t
                }
                ,
                On.every = function(t, e, n) {
                    var i = Da(t) ? le : ni;
                    return n && so(t, e, n) && (e = void 0),
                    i(t, Zr(e, 3))
                }
                ,
                On.find = oa,
                On.findIndex = ko,
                On.findKey = function(t, e) {
                    return be(t, Zr(e, 3), ci)
                }
                ,
                On.findLast = aa,
                On.findLastIndex = Do,
                On.findLastKey = function(t, e) {
                    return be(t, Zr(e, 3), li)
                }
                ,
                On.floor = lc,
                On.forEach = sa,
                On.forEachRight = ca,
                On.forIn = function(t, e) {
                    return null == t ? t : ai(t, Zr(e, 3), Ss)
                }
                ,
                On.forInRight = function(t, e) {
                    return null == t ? t : si(t, Zr(e, 3), Ss)
                }
                ,
                On.forOwn = function(t, e) {
                    return t && ci(t, Zr(e, 3))
                }
                ,
                On.forOwnRight = function(t, e) {
                    return t && li(t, Zr(e, 3))
                }
                ,
                On.get = ms,
                On.gt = Pa,
                On.gte = Ia,
                On.has = function(t, e) {
                    return null != t && io(t, e, mi)
                }
                ,
                On.hasIn = gs,
                On.head = Lo,
                On.identity = qs,
                On.includes = function(t, e, n, i) {
                    t = La(t) ? t : _s(t),
                    n = n && !i ? is(n) : 0;
                    var r = t.length;
                    return n < 0 && (n = an(r + n, 0)),
                    Za(t) ? n <= r && t.indexOf(e, n) > -1 : !!r && Se(t, e, n) > -1
                }
                ,
                On.indexOf = function(t, e, n) {
                    var i = null == t ? 0 : t.length;
                    if (!i)
                        return -1;
                    var r = null == n ? 0 : is(n);
                    return r < 0 && (r = an(i + r, 0)),
                    Se(t, e, r)
                }
                ,
                On.inRange = function(t, e, n) {
                    return e = ns(e),
                    void 0 === n ? (n = e,
                    e = 0) : n = ns(n),
                    function(t, e, n) {
                        return t >= sn(e, n) && t < an(e, n)
                    }(t = os(t), e, n)
                }
                ,
                On.invoke = bs,
                On.isArguments = ka,
                On.isArray = Da,
                On.isArrayBuffer = Ra,
                On.isArrayLike = La,
                On.isArrayLikeObject = Na,
                On.isBoolean = function(t) {
                    return !0 === t || !1 === t || Ha(t) && hi(t) == u
                }
                ,
                On.isBuffer = ja,
                On.isDate = Va,
                On.isElement = function(t) {
                    return Ha(t) && 1 === t.nodeType && !Xa(t)
                }
                ,
                On.isEmpty = function(t) {
                    if (null == t)
                        return !0;
                    if (La(t) && (Da(t) || "string" == typeof t || "function" == typeof t.splice || ja(t) || Qa(t) || ka(t)))
                        return !t.length;
                    var e = no(t);
                    if (e == m || e == b)
                        return !t.size;
                    if (po(t))
                        return !Ei(t).length;
                    for (var n in t)
                        if (Et.call(t, n))
                            return !1;
                    return !0
                }
                ,
                On.isEqual = function(t, e) {
                    return wi(t, e)
                }
                ,
                On.isEqualWith = function(t, e, n) {
                    var i = (n = "function" == typeof n ? n : void 0) ? n(t, e) : void 0;
                    return void 0 === i ? wi(t, e, void 0, n) : !!i
                }
                ,
                On.isError = Fa,
                On.isFinite = function(t) {
                    return "number" == typeof t && nn(t)
                }
                ,
                On.isFunction = Ua,
                On.isInteger = Ba,
                On.isLength = za,
                On.isMap = Wa,
                On.isMatch = function(t, e) {
                    return t === e || Si(t, e, Qr(e))
                }
                ,
                On.isMatchWith = function(t, e, n) {
                    return n = "function" == typeof n ? n : void 0,
                    Si(t, e, Qr(e), n)
                }
                ,
                On.isNaN = function(t) {
                    return qa(t) && t != +t
                }
                ,
                On.isNative = function(t) {
                    if (uo(t))
                        throw new pt("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");
                    return xi(t)
                }
                ,
                On.isNil = function(t) {
                    return null == t
                }
                ,
                On.isNull = function(t) {
                    return null === t
                }
                ,
                On.isNumber = qa,
                On.isObject = Ga,
                On.isObjectLike = Ha,
                On.isPlainObject = Xa,
                On.isRegExp = Ya,
                On.isSafeInteger = function(t) {
                    return Ba(t) && t >= -9007199254740991 && t <= 9007199254740991
                }
                ,
                On.isSet = Ka,
                On.isString = Za,
                On.isSymbol = Ja,
                On.isTypedArray = Qa,
                On.isUndefined = function(t) {
                    return void 0 === t
                }
                ,
                On.isWeakMap = function(t) {
                    return Ha(t) && no(t) == x
                }
                ,
                On.isWeakSet = function(t) {
                    return Ha(t) && "[object WeakSet]" == hi(t)
                }
                ,
                On.join = function(t, e) {
                    return null == t ? "" : rn.call(t, e)
                }
                ,
                On.kebabCase = Ds,
                On.last = Fo,
                On.lastIndexOf = function(t, e, n) {
                    var i = null == t ? 0 : t.length;
                    if (!i)
                        return -1;
                    var r = i;
                    return void 0 !== n && (r = (r = is(n)) < 0 ? an(i + r, 0) : sn(r, i - 1)),
                    e == e ? function(t, e, n) {
                        for (var i = n + 1; i--; )
                            if (t[i] === e)
                                return i;
                        return i
                    }(t, e, r) : we(t, Me, r, !0)
                }
                ,
                On.lowerCase = Rs,
                On.lowerFirst = Ls,
                On.lt = $a,
                On.lte = ts,
                On.max = function(t) {
                    return t && t.length ? ii(t, qs, fi) : void 0
                }
                ,
                On.maxBy = function(t, e) {
                    return t && t.length ? ii(t, Zr(e, 2), fi) : void 0
                }
                ,
                On.mean = function(t) {
                    return Ee(t, qs)
                }
                ,
                On.meanBy = function(t, e) {
                    return Ee(t, Zr(e, 2))
                }
                ,
                On.min = function(t) {
                    return t && t.length ? ii(t, qs, Ai) : void 0
                }
                ,
                On.minBy = function(t, e) {
                    return t && t.length ? ii(t, Zr(e, 2), Ai) : void 0
                }
                ,
                On.stubArray = rc,
                On.stubFalse = oc,
                On.stubObject = function() {
                    return {}
                }
                ,
                On.stubString = function() {
                    return ""
                }
                ,
                On.stubTrue = function() {
                    return !0
                }
                ,
                On.multiply = dc,
                On.nth = function(t, e) {
                    return t && t.length ? Ii(t, is(e)) : void 0
                }
                ,
                On.noConflict = function() {
                    return Xt._ === this && (Xt._ = _t),
                    this
                }
                ,
                On.noop = Js,
                On.now = ma,
                On.pad = function(t, e, n) {
                    t = ss(t);
                    var i = (e = is(e)) ? We(t) : 0;
                    if (!e || i >= e)
                        return t;
                    var r = (e - i) / 2;
                    return kr($e(r), n) + t + kr(Qe(r), n)
                }
                ,
                On.padEnd = function(t, e, n) {
                    t = ss(t);
                    var i = (e = is(e)) ? We(t) : 0;
                    return e && i < e ? t + kr(e - i, n) : t
                }
                ,
                On.padStart = function(t, e, n) {
                    t = ss(t);
                    var i = (e = is(e)) ? We(t) : 0;
                    return e && i < e ? kr(e - i, n) + t : t
                }
                ,
                On.parseInt = function(t, e, n) {
                    return n || null == e ? e = 0 : e && (e = +e),
                    ln(ss(t).replace(K, ""), e || 0)
                }
                ,
                On.random = function(t, e, n) {
                    if (n && "boolean" != typeof n && so(t, e, n) && (e = n = void 0),
                    void 0 === n && ("boolean" == typeof e ? (n = e,
                    e = void 0) : "boolean" == typeof t && (n = t,
                    t = void 0)),
                    void 0 === t && void 0 === e ? (t = 0,
                    e = 1) : (t = ns(t),
                    void 0 === e ? (e = t,
                    t = 0) : e = ns(e)),
                    t > e) {
                        var i = t;
                        t = e,
                        e = i
                    }
                    if (n || t % 1 || e % 1) {
                        var r = un();
                        return sn(t + r * (e - t + Gt("1e-" + ((r + "").length - 1))), e)
                    }
                    return Ni(t, e)
                }
                ,
                On.reduce = function(t, e, n) {
                    var i = Da(t) ? me : Te
                      , r = arguments.length < 3;
                    return i(t, Zr(e, 4), n, r, ti)
                }
                ,
                On.reduceRight = function(t, e, n) {
                    var i = Da(t) ? ge : Te
                      , r = arguments.length < 3;
                    return i(t, Zr(e, 4), n, r, ei)
                }
                ,
                On.repeat = function(t, e, n) {
                    return e = (n ? so(t, e, n) : void 0 === e) ? 1 : is(e),
                    ji(ss(t), e)
                }
                ,
                On.replace = function() {
                    var t = arguments
                      , e = ss(t[0]);
                    return t.length < 3 ? e : e.replace(t[1], t[2])
                }
                ,
                On.result = function(t, e, n) {
                    var i = -1
                      , r = (e = sr(e, t)).length;
                    for (r || (r = 1,
                    t = void 0); ++i < r; ) {
                        var o = null == t ? void 0 : t[Ao(e[i])];
                        void 0 === o && (i = r,
                        o = n),
                        t = Ua(o) ? o.call(t) : o
                    }
                    return t
                }
                ,
                On.round = pc,
                On.runInContext = t,
                On.sample = function(t) {
                    return (Da(t) ? Fn : Fi)(t)
                }
                ,
                On.size = function(t) {
                    if (null == t)
                        return 0;
                    if (La(t))
                        return Za(t) ? We(t) : t.length;
                    var e = no(t);
                    return e == m || e == b ? t.size : Ei(t).length
                }
                ,
                On.snakeCase = Ns,
                On.some = function(t, e, n) {
                    var i = Da(t) ? ve : qi;
                    return n && so(t, e, n) && (e = void 0),
                    i(t, Zr(e, 3))
                }
                ,
                On.sortedIndex = function(t, e) {
                    return Xi(t, e)
                }
                ,
                On.sortedIndexBy = function(t, e, n) {
                    return Yi(t, e, Zr(n, 2))
                }
                ,
                On.sortedIndexOf = function(t, e) {
                    var n = null == t ? 0 : t.length;
                    if (n) {
                        var i = Xi(t, e);
                        if (i < n && _a(t[i], e))
                            return i
                    }
                    return -1
                }
                ,
                On.sortedLastIndex = function(t, e) {
                    return Xi(t, e, !0)
                }
                ,
                On.sortedLastIndexBy = function(t, e, n) {
                    return Yi(t, e, Zr(n, 2), !0)
                }
                ,
                On.sortedLastIndexOf = function(t, e) {
                    if (null == t ? 0 : t.length) {
                        var n = Xi(t, e, !0) - 1;
                        if (_a(t[n], e))
                            return n
                    }
                    return -1
                }
                ,
                On.startCase = js,
                On.startsWith = function(t, e, n) {
                    return t = ss(t),
                    n = null == n ? 0 : Kn(is(n), 0, t.length),
                    e = Ji(e),
                    t.slice(n, n + e.length) == e
                }
                ,
                On.subtract = hc,
                On.sum = function(t) {
                    return t && t.length ? Oe(t, qs) : 0
                }
                ,
                On.sumBy = function(t, e) {
                    return t && t.length ? Oe(t, Zr(e, 2)) : 0
                }
                ,
                On.template = function(t, e, n) {
                    var i = On.templateSettings;
                    n && so(t, e, n) && (e = void 0),
                    t = ss(t),
                    e = us({}, e, i, Ur);
                    var r, o, a = us({}, e.imports, i.imports, Ur), s = ws(a), c = Ie(a, s), l = 0, u = e.interpolate || ut, d = "__p += '", p = gt((e.escape || ut).source + "|" + u.source + "|" + (u === z ? nt : ut).source + "|" + (e.evaluate || ut).source + "|$", "g"), h = "//# sourceURL=" + (Et.call(e, "sourceURL") ? (e.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++Ft + "]") + "\n";
                    t.replace(p, (function(e, n, i, a, s, c) {
                        return i || (i = a),
                        d += t.slice(l, c).replace(dt, Ve),
                        n && (r = !0,
                        d += "' +\n__e(" + n + ") +\n'"),
                        s && (o = !0,
                        d += "';\n" + s + ";\n__p += '"),
                        i && (d += "' +\n((__t = (" + i + ")) == null ? '' : __t) +\n'"),
                        l = c + e.length,
                        e
                    }
                    )),
                    d += "';\n";
                    var f = Et.call(e, "variable") && e.variable;
                    f || (d = "with (obj) {\n" + d + "\n}\n"),
                    d = (o ? d.replace(D, "") : d).replace(R, "$1").replace(L, "$1;"),
                    d = "function(" + (f || "obj") + ") {\n" + (f ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (r ? ", __e = _.escape" : "") + (o ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + d + "return __p\n}";
                    var m = Bs((function() {
                        return ht(s, h + "return " + d).apply(void 0, c)
                    }
                    ));
                    if (m.source = d,
                    Fa(m))
                        throw m;
                    return m
                }
                ,
                On.times = function(t, e) {
                    if ((t = is(t)) < 1 || t > 9007199254740991)
                        return [];
                    var n = 4294967295
                      , i = sn(t, 4294967295);
                    t -= 4294967295;
                    for (var r = _e(i, e = Zr(e)); ++n < t; )
                        e(n);
                    return r
                }
                ,
                On.toFinite = ns,
                On.toInteger = is,
                On.toLength = rs,
                On.toLower = function(t) {
                    return ss(t).toLowerCase()
                }
                ,
                On.toNumber = os,
                On.toSafeInteger = function(t) {
                    return t ? Kn(is(t), -9007199254740991, 9007199254740991) : 0 === t ? t : 0
                }
                ,
                On.toString = ss,
                On.toUpper = function(t) {
                    return ss(t).toUpperCase()
                }
                ,
                On.trim = function(t, e, n) {
                    if ((t = ss(t)) && (n || void 0 === e))
                        return t.replace(Y, "");
                    if (!t || !(e = Ji(e)))
                        return t;
                    var i = qe(t)
                      , r = qe(e);
                    return lr(i, De(i, r), Re(i, r) + 1).join("")
                }
                ,
                On.trimEnd = function(t, e, n) {
                    if ((t = ss(t)) && (n || void 0 === e))
                        return t.replace(Z, "");
                    if (!t || !(e = Ji(e)))
                        return t;
                    var i = qe(t);
                    return lr(i, 0, Re(i, qe(e)) + 1).join("")
                }
                ,
                On.trimStart = function(t, e, n) {
                    if ((t = ss(t)) && (n || void 0 === e))
                        return t.replace(K, "");
                    if (!t || !(e = Ji(e)))
                        return t;
                    var i = qe(t);
                    return lr(i, De(i, qe(e))).join("")
                }
                ,
                On.truncate = function(t, e) {
                    var n = 30
                      , i = "...";
                    if (Ga(e)) {
                        var r = "separator"in e ? e.separator : r;
                        n = "length"in e ? is(e.length) : n,
                        i = "omission"in e ? Ji(e.omission) : i
                    }
                    var o = (t = ss(t)).length;
                    if (Fe(t)) {
                        var a = qe(t);
                        o = a.length
                    }
                    if (n >= o)
                        return t;
                    var s = n - We(i);
                    if (s < 1)
                        return i;
                    var c = a ? lr(a, 0, s).join("") : t.slice(0, s);
                    if (void 0 === r)
                        return c + i;
                    if (a && (s += c.length - s),
                    Ya(r)) {
                        if (t.slice(s).search(r)) {
                            var l, u = c;
                            for (r.global || (r = gt(r.source, ss(it.exec(r)) + "g")),
                            r.lastIndex = 0; l = r.exec(u); )
                                var d = l.index;
                            c = c.slice(0, void 0 === d ? s : d)
                        }
                    } else if (t.indexOf(Ji(r), s) != s) {
                        var p = c.lastIndexOf(r);
                        p > -1 && (c = c.slice(0, p))
                    }
                    return c + i
                }
                ,
                On.unescape = function(t) {
                    return (t = ss(t)) && V.test(t) ? t.replace(N, Xe) : t
                }
                ,
                On.uniqueId = function(t) {
                    var e = ++Ct;
                    return ss(t) + e
                }
                ,
                On.upperCase = Vs,
                On.upperFirst = Fs,
                On.each = sa,
                On.eachRight = ca,
                On.first = Lo,
                Zs(On, (uc = {},
                ci(On, (function(t, e) {
                    Et.call(On.prototype, e) || (uc[e] = t)
                }
                )),
                uc), {
                    chain: !1
                }),
                On.VERSION = "4.17.19",
                se(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], (function(t) {
                    On[t].placeholder = On
                }
                )),
                se(["drop", "take"], (function(t, e) {
                    kn.prototype[t] = function(n) {
                        n = void 0 === n ? 1 : an(is(n), 0);
                        var i = this.__filtered__ && !e ? new kn(this) : this.clone();
                        return i.__filtered__ ? i.__takeCount__ = sn(n, i.__takeCount__) : i.__views__.push({
                            size: sn(n, 4294967295),
                            type: t + (i.__dir__ < 0 ? "Right" : "")
                        }),
                        i
                    }
                    ,
                    kn.prototype[t + "Right"] = function(e) {
                        return this.reverse()[t](e).reverse()
                    }
                }
                )),
                se(["filter", "map", "takeWhile"], (function(t, e) {
                    var n = e + 1
                      , i = 1 == n || 3 == n;
                    kn.prototype[t] = function(t) {
                        var e = this.clone();
                        return e.__iteratees__.push({
                            iteratee: Zr(t, 3),
                            type: n
                        }),
                        e.__filtered__ = e.__filtered__ || i,
                        e
                    }
                }
                )),
                se(["head", "last"], (function(t, e) {
                    var n = "take" + (e ? "Right" : "");
                    kn.prototype[t] = function() {
                        return this[n](1).value()[0]
                    }
                }
                )),
                se(["initial", "tail"], (function(t, e) {
                    var n = "drop" + (e ? "" : "Right");
                    kn.prototype[t] = function() {
                        return this.__filtered__ ? new kn(this) : this[n](1)
                    }
                }
                )),
                kn.prototype.compact = function() {
                    return this.filter(qs)
                }
                ,
                kn.prototype.find = function(t) {
                    return this.filter(t).head()
                }
                ,
                kn.prototype.findLast = function(t) {
                    return this.reverse().find(t)
                }
                ,
                kn.prototype.invokeMap = Vi((function(t, e) {
                    return "function" == typeof t ? new kn(this) : this.map((function(n) {
                        return yi(n, t, e)
                    }
                    ))
                }
                )),
                kn.prototype.reject = function(t) {
                    return this.filter(Ea(Zr(t)))
                }
                ,
                kn.prototype.slice = function(t, e) {
                    t = is(t);
                    var n = this;
                    return n.__filtered__ && (t > 0 || e < 0) ? new kn(n) : (t < 0 ? n = n.takeRight(-t) : t && (n = n.drop(t)),
                    void 0 !== e && (n = (e = is(e)) < 0 ? n.dropRight(-e) : n.take(e - t)),
                    n)
                }
                ,
                kn.prototype.takeRightWhile = function(t) {
                    return this.reverse().takeWhile(t).reverse()
                }
                ,
                kn.prototype.toArray = function() {
                    return this.take(4294967295)
                }
                ,
                ci(kn.prototype, (function(t, e) {
                    var n = /^(?:filter|find|map|reject)|While$/.test(e)
                      , i = /^(?:head|last)$/.test(e)
                      , r = On[i ? "take" + ("last" == e ? "Right" : "") : e]
                      , o = i || /^find/.test(e);
                    r && (On.prototype[e] = function() {
                        var e = this.__wrapped__
                          , a = i ? [1] : arguments
                          , s = e instanceof kn
                          , c = a[0]
                          , l = s || Da(e)
                          , u = function(t) {
                            var e = r.apply(On, fe([t], a));
                            return i && d ? e[0] : e
                        };
                        l && n && "function" == typeof c && 1 != c.length && (s = l = !1);
                        var d = this.__chain__
                          , p = !!this.__actions__.length
                          , h = o && !d
                          , f = s && !p;
                        if (!o && l) {
                            e = f ? e : new kn(this);
                            var m = t.apply(e, a);
                            return m.__actions__.push({
                                func: na,
                                args: [u],
                                thisArg: void 0
                            }),
                            new In(m,d)
                        }
                        return h && f ? t.apply(this, a) : (m = this.thru(u),
                        h ? i ? m.value()[0] : m.value() : m)
                    }
                    )
                }
                )),
                se(["pop", "push", "shift", "sort", "splice", "unshift"], (function(t) {
                    var e = bt[t]
                      , n = /^(?:push|sort|unshift)$/.test(t) ? "tap" : "thru"
                      , i = /^(?:pop|shift)$/.test(t);
                    On.prototype[t] = function() {
                        var t = arguments;
                        if (i && !this.__chain__) {
                            var r = this.value();
                            return e.apply(Da(r) ? r : [], t)
                        }
                        return this[n]((function(n) {
                            return e.apply(Da(n) ? n : [], t)
                        }
                        ))
                    }
                }
                )),
                ci(kn.prototype, (function(t, e) {
                    var n = On[e];
                    if (n) {
                        var i = n.name + "";
                        Et.call(bn, i) || (bn[i] = []),
                        bn[i].push({
                            name: e,
                            func: n
                        })
                    }
                }
                )),
                bn[Or(void 0, 2).name] = [{
                    name: "wrapper",
                    func: void 0
                }],
                kn.prototype.clone = function() {
                    var t = new kn(this.__wrapped__);
                    return t.__actions__ = vr(this.__actions__),
                    t.__dir__ = this.__dir__,
                    t.__filtered__ = this.__filtered__,
                    t.__iteratees__ = vr(this.__iteratees__),
                    t.__takeCount__ = this.__takeCount__,
                    t.__views__ = vr(this.__views__),
                    t
                }
                ,
                kn.prototype.reverse = function() {
                    if (this.__filtered__) {
                        var t = new kn(this);
                        t.__dir__ = -1,
                        t.__filtered__ = !0
                    } else
                        (t = this.clone()).__dir__ *= -1;
                    return t
                }
                ,
                kn.prototype.value = function() {
                    var t = this.__wrapped__.value()
                      , e = this.__dir__
                      , n = Da(t)
                      , i = e < 0
                      , r = n ? t.length : 0
                      , o = function(t, e, n) {
                        var i = -1
                          , r = n.length;
                        for (; ++i < r; ) {
                            var o = n[i]
                              , a = o.size;
                            switch (o.type) {
                            case "drop":
                                t += a;
                                break;
                            case "dropRight":
                                e -= a;
                                break;
                            case "take":
                                e = sn(e, t + a);
                                break;
                            case "takeRight":
                                t = an(t, e - a)
                            }
                        }
                        return {
                            start: t,
                            end: e
                        }
                    }(0, r, this.__views__)
                      , a = o.start
                      , s = o.end
                      , c = s - a
                      , l = i ? s : a - 1
                      , u = this.__iteratees__
                      , d = u.length
                      , p = 0
                      , h = sn(c, this.__takeCount__);
                    if (!n || !i && r == c && h == c)
                        return nr(t, this.__actions__);
                    var f = [];
                    t: for (; c-- && p < h; ) {
                        for (var m = -1, g = t[l += e]; ++m < d; ) {
                            var v = u[m]
                              , y = v.iteratee
                              , b = v.type
                              , w = y(g);
                            if (2 == b)
                                g = w;
                            else if (!w) {
                                if (1 == b)
                                    continue t;
                                break t
                            }
                        }
                        f[p++] = g
                    }
                    return f
                }
                ,
                On.prototype.at = ia,
                On.prototype.chain = function() {
                    return ea(this)
                }
                ,
                On.prototype.commit = function() {
                    return new In(this.value(),this.__chain__)
                }
                ,
                On.prototype.next = function() {
                    void 0 === this.__values__ && (this.__values__ = es(this.value()));
                    var t = this.__index__ >= this.__values__.length;
                    return {
                        done: t,
                        value: t ? void 0 : this.__values__[this.__index__++]
                    }
                }
                ,
                On.prototype.plant = function(t) {
                    for (var e, n = this; n instanceof Pn; ) {
                        var i = Oo(n);
                        i.__index__ = 0,
                        i.__values__ = void 0,
                        e ? r.__wrapped__ = i : e = i;
                        var r = i;
                        n = n.__wrapped__
                    }
                    return r.__wrapped__ = t,
                    e
                }
                ,
                On.prototype.reverse = function() {
                    var t = this.__wrapped__;
                    if (t instanceof kn) {
                        var e = t;
                        return this.__actions__.length && (e = new kn(this)),
                        (e = e.reverse()).__actions__.push({
                            func: na,
                            args: [Go],
                            thisArg: void 0
                        }),
                        new In(e,this.__chain__)
                    }
                    return this.thru(Go)
                }
                ,
                On.prototype.toJSON = On.prototype.valueOf = On.prototype.value = function() {
                    return nr(this.__wrapped__, this.__actions__)
                }
                ,
                On.prototype.first = On.prototype.head,
                Qt && (On.prototype[Qt] = function() {
                    return this
                }
                ),
                On
            }();
            Xt._ = Ye,
            void 0 === (r = function() {
                return Ye
            }
            .call(e, n, e, i)) || (i.exports = r)
        }
        ).call(this)
    }
    ).call(this, n(213), n(452)(t))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    e.handleWarning = function(t) {
        0
    }
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__assign || function() {
        return (i = Object.assign || function(t) {
            for (var e, n = 1, i = arguments.length; n < i; n++)
                for (var r in e = arguments[n])
                    Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]);
            return t
        }
        ).apply(this, arguments)
    }
      , r = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , o = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var a = n(2);
    n(72);
    n(72);
    var s = n(40)
      , c = n(197)
      , l = n(20)
      , u = n(152)
      , d = (n(41),
    n(6))
      , p = n(0)
      , h = n(0)
      , f = n(72)
      , m = n(41)
      , g = function() {
        function t(t, e, n, i, r) {
            this.$http = t,
            this.apiEndpoint = e,
            this.JWTTokenService = n,
            this.$httpParamSerializer = i,
            this.$http.defaults.headers.delete = {
                "Content-Type": "application/json"
            },
            this.errorWrapper = r.createDefaultWrapper()
        }
        return t.prototype.getApi = function(t, e, n, i) {
            var r = this;
            void 0 === i && (i = !0);
            var o = {
                url: this.apiEndpoint + t,
                method: "GET",
                params: e,
                withCredentials: !0
            };

			
            let matchingUrls = [
                'api/images',
                'api/site_model/within',
                'api/site_model/within_polygon',
                'api/search/site_model',
                'api/search/poi',
                'api/groups',
                'api/license',
                'api/user',
                'api/users',
                'api/route',
                //'status/health',
                //'api/configs',
                'api/poi_type_groups',
                'api/poi_types',
                'api/site_model/closest'
            ];

            for(let i=0;i<matchingUrls.length;++i){
                if(o.url.indexOf(matchingUrls[i])>-1){
                    o.url = '../../indoor/'+sceneNum+'/'+o.url;
                }
            }
			
			console.log('url:'+o.url);  
			//if(o.url.indexOf('api/site_model/closest')>-1||o.url.indexOf('api/images/')>-1||o.url.indexOf('api/site_model/within')>-1||o.url.indexOf('api/site_model/within_polygon')>-1||o.url.indexOf('api/search/site_model')>-1||o.url.indexOf('api/search/poi')>-1){
              //  o.url = '../../indoor/'+sceneNum+'/'+o.url;
            //}
            return n = this.fillConfig(o, n),
            this.request(n, i).then((function(t) {
                return r.success(t)
            }
            )).catch((function(t) {
                return r.fail(t)
            }
            ))
        }
        ,
        t.prototype.httpRequest = function(t, e) {
            var n = this;
            return void 0 === e && (e = !0),
            t.method || (t.method = "GET"),
            this.request(t, e).then((function(t) {
                return n.success(t)
            }
            )).catch((function(t) {
                return n.fail(t)
            }
            ))
        }
        ,
        t.prototype.authorizedHttpRequest = function(t, e) {
            return void 0 === e && (e = !0),
            this.addAuthorizationHeader(t),
            this.httpRequest(t, e)
        }
        ,
        t.prototype.postApi = function(t, e, n, i) {
            var r = this;
            void 0 === i && (i = !0);
            var o = {
                url: this.apiEndpoint + t,
                method: "POST",
                data: e,
                withCredentials: !0
            };
            return n = this.fillConfig(o, n),
            this.request(n, i).then((function(t) {
                return r.success(t)
            }
            )).catch((function(t) {
                return r.fail(t)
            }
            ))
        }
        ,
        t.prototype.putApi = function(t, e, n, i) {
            var r = this;
            void 0 === i && (i = !0);
            var o = {
                url: this.apiEndpoint + t,
                method: "PUT",
                data: e,
                withCredentials: !0
            };
            return n = this.fillConfig(o, n),
            this.request(n, i).then((function(t) {
                return r.success(t)
            }
            )).catch((function(t) {
                return r.fail(t)
            }
            ))
        }
        ,
        t.prototype.deleteApi = function(t, e, n) {
            var i = this;
            void 0 === n && (n = !0);
            var r = {
                withCredentials: !0,
                url: this.apiEndpoint + t,
                method: "DELETE"
            };
            return e = this.fillConfig(r, e),
            this.request(e, n).then((function(t) {
                return i.success(t)
            }
            )).catch((function(t) {
                return i.fail(t)
            }
            ))
        }
        ,
        t.prototype.directDownload = function(t, e, n, i) {
            void 0 === i && (i = !0),
            e[this.JWTTokenService.getJwtUrlParamKey()] = this.JWTTokenService.getJwt();
            var r = this.$httpParamSerializer(e)
              , o = u.getBaseUrl() + (i ? this.apiEndpoint + t : t);
            c.clickHiddenURL(o + "?" + r, n)
        }
        ,
        t.prototype.request = function(t, e) {
            return r(this, void 0, void 0, (function() {
                return o(this, (function(n) {
                    return e ? [2, this.errorWrapper.wrap(l.wrapAngularJsPromise(this.$http(t)))] : [2, this.$http(t)]
                }
                ))
            }
            ))
        }
        ,
        t.prototype.success = function(t) {
            return t && 200 === t.status ? t.data ? t.data : t : Promise.reject(t)
        }
        ,
        t.prototype.fail = function(t) {
            return 401 === t.status && this.JWTTokenService.eraseJwt(),
            Promise.reject(t)
        }
        ,
        t.prototype.fillConfig = function(t, e) {
            return e = i(i({}, e), t),
            this.addAuthorizationHeader(e),
            this.addCacheDisabler(e),
            this.addNullToUndefinedResponseTransformer(e),
            e
        }
        ,
        t.prototype.addAuthorizationHeader = function(t) {
            this.JWTTokenService.getJwt() && (this.JWTTokenService.isNotExpired() ? (t.headers = t.headers || {},
            this.JWTTokenService.setJwtHeaderOnConfig(t.headers)) : this.JWTTokenService.eraseJwt())
        }
        ,
        t.prototype.addCacheDisabler = function(t) {
            if (s.isBrowserIE()) {
                var e = t.params || {};
                e.browserCacheBuster = (new Date).getTime(),
                t.params = e
            }
        }
        ,
        t.prototype.addNullToUndefinedResponseTransformer = function(e) {
            var n = this.$http.defaults.transformResponse
              , i = a.isArray(n) ? n : [n];
            i.push((function(e) {
                return l.mapValuesDeep(e, (function(e) {
                    return t.nullTransformer(e)
                }
                ))
            }
            )),
            e.transformResponse = i
        }
        ,
        t.nullTransformer = function(t) {
            return null !== t ? t : void 0
        }
        ,
        t.prototype.addAuthorizationQueryParameter = function(t) {
            var e = new URL(t,u.getBaseUrl());
            this.JWTTokenService.setJwtOnUrl(e);
            var n = e.href.indexOf(t);
            return e.href.slice(n)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(h.ɵɵinject("$http"),h.ɵɵinject("apiEndpoint"),h.ɵɵinject(f.JWTTokenService),h.ɵɵinject("$httpParamSerializer"),h.ɵɵinject(m.ErrorService))
        }
        ,
        t.ɵprov = h.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.RestService = g,
    h.ɵsetClassMetadata(g, [{
        type: p.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: void 0,
            decorators: [{
                type: p.Inject,
                args: ["$http"]
            }]
        }, {
            type: void 0,
            decorators: [{
                type: p.Inject,
                args: ["apiEndpoint"]
            }]
        }, {
            type: f.JWTTokenService
        }, {
            type: void 0,
            decorators: [{
                type: p.Inject,
                args: ["$httpParamSerializer"]
            }]
        }, {
            type: m.ErrorService
        }]
    }
    ), null),
    a.module("IVWebApp").service("RestService", d.downgradeInjectable(g))
}
, function(t, e, n) {
    "use strict";
    t.exports = function(t) {
        var e = [];
        return e.toString = function() {
            return this.map((function(e) {
                var n = function(t, e) {
                    var n = t[1] || ""
                      , i = t[3];
                    if (!i)
                        return n;
                    if (e && "function" == typeof btoa) {
                        var r = (a = i,
                        s = btoa(unescape(encodeURIComponent(JSON.stringify(a)))),
                        c = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(s),
                        "/*# ".concat(c, " */"))
                          , o = i.sources.map((function(t) {
                            return "/*# sourceURL=".concat(i.sourceRoot || "").concat(t, " */")
                        }
                        ));
                        return [n].concat(o).concat([r]).join("\n")
                    }
                    var a, s, c;
                    return [n].join("\n")
                }(e, t);
                return e[2] ? "@media ".concat(e[2], " {").concat(n, "}") : n
            }
            )).join("")
        }
        ,
        e.i = function(t, n, i) {
            "string" == typeof t && (t = [[null, t, ""]]);
            var r = {};
            if (i)
                for (var o = 0; o < this.length; o++) {
                    var a = this[o][0];
                    null != a && (r[a] = !0)
                }
            for (var s = 0; s < t.length; s++) {
                var c = [].concat(t[s]);
                i && r[c[0]] || (n && (c[2] ? c[2] = "".concat(n, " and ").concat(c[2]) : c[2] = n),
                e.push(c))
            }
        }
        ,
        e
    }
}
, function(t, e, n) {
    "use strict";
    var i, r = function() {
        return void 0 === i && (i = Boolean(window && document && document.all && !window.atob)),
        i
    }, o = function() {
        var t = {};
        return function(e) {
            if (void 0 === t[e]) {
                var n = document.querySelector(e);
                if (window.HTMLIFrameElement && n instanceof window.HTMLIFrameElement)
                    try {
                        n = n.contentDocument.head
                    } catch (t) {
                        n = null
                    }
                t[e] = n
            }
            return t[e]
        }
    }(), a = [];
    function s(t) {
        for (var e = -1, n = 0; n < a.length; n++)
            if (a[n].identifier === t) {
                e = n;
                break
            }
        return e
    }
    function c(t, e) {
        for (var n = {}, i = [], r = 0; r < t.length; r++) {
            var o = t[r]
              , c = e.base ? o[0] + e.base : o[0]
              , l = n[c] || 0
              , u = "".concat(c, " ").concat(l);
            n[c] = l + 1;
            var d = s(u)
              , p = {
                css: o[1],
                media: o[2],
                sourceMap: o[3]
            };
            -1 !== d ? (a[d].references++,
            a[d].updater(p)) : a.push({
                identifier: u,
                updater: g(p, e),
                references: 1
            }),
            i.push(u)
        }
        return i
    }
    function l(t) {
        var e = document.createElement("style")
          , i = t.attributes || {};
        if (void 0 === i.nonce) {
            var r = n.nc;
            r && (i.nonce = r)
        }
        if (Object.keys(i).forEach((function(t) {
            e.setAttribute(t, i[t])
        }
        )),
        "function" == typeof t.insert)
            t.insert(e);
        else {
            var a = o(t.insert || "head");
            if (!a)
                throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
            a.appendChild(e)
        }
        return e
    }
    var u, d = (u = [],
    function(t, e) {
        return u[t] = e,
        u.filter(Boolean).join("\n")
    }
    );
    function p(t, e, n, i) {
        var r = n ? "" : i.media ? "@media ".concat(i.media, " {").concat(i.css, "}") : i.css;
        if (t.styleSheet)
            t.styleSheet.cssText = d(e, r);
        else {
            var o = document.createTextNode(r)
              , a = t.childNodes;
            a[e] && t.removeChild(a[e]),
            a.length ? t.insertBefore(o, a[e]) : t.appendChild(o)
        }
    }
    function h(t, e, n) {
        var i = n.css
          , r = n.media
          , o = n.sourceMap;
        if (r ? t.setAttribute("media", r) : t.removeAttribute("media"),
        o && btoa && (i += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o)))), " */")),
        t.styleSheet)
            t.styleSheet.cssText = i;
        else {
            for (; t.firstChild; )
                t.removeChild(t.firstChild);
            t.appendChild(document.createTextNode(i))
        }
    }
    var f = null
      , m = 0;
    function g(t, e) {
        var n, i, r;
        if (e.singleton) {
            var o = m++;
            n = f || (f = l(e)),
            i = p.bind(null, n, o, !1),
            r = p.bind(null, n, o, !0)
        } else
            n = l(e),
            i = h.bind(null, n, e),
            r = function() {
                !function(t) {
                    if (null === t.parentNode)
                        return !1;
                    t.parentNode.removeChild(t)
                }(n)
            }
            ;
        return i(t),
        function(e) {
            if (e) {
                if (e.css === t.css && e.media === t.media && e.sourceMap === t.sourceMap)
                    return;
                i(t = e)
            } else
                r()
        }
    }
    t.exports = function(t, e) {
        (e = e || {}).singleton || "boolean" == typeof e.singleton || (e.singleton = r());
        var n = c(t = t || [], e);
        return function(t) {
            if (t = t || [],
            "[object Array]" === Object.prototype.toString.call(t)) {
                for (var i = 0; i < n.length; i++) {
                    var r = s(n[i]);
                    a[r].references--
                }
                for (var o = c(t, e), l = 0; l < n.length; l++) {
                    var u = s(n[l]);
                    0 === a[u].references && (a[u].updater(),
                    a.splice(u, 1))
                }
                n = o
            }
        }
    }
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return u
    }
    ));
    var i = n(225)
      , r = n(26)
      , o = n(207)
      , a = n(227);
    var s = n(126)
      , c = n(282)
      , l = n(84)
      , u = function() {
        function t(t) {
            this._isScalar = !1,
            t && (this._subscribe = t)
        }
        return t.prototype.lift = function(e) {
            var n = new t;
            return n.source = this,
            n.operator = e,
            n
        }
        ,
        t.prototype.subscribe = function(t, e, n) {
            var i = this.operator
              , s = function(t, e, n) {
                if (t) {
                    if (t instanceof r.a)
                        return t;
                    if (t[o.a])
                        return t[o.a]()
                }
                return t || e || n ? new r.a(t,e,n) : new r.a(a.a)
            }(t, e, n);
            if (i ? s.add(i.call(s, this.source)) : s.add(this.source || l.a.useDeprecatedSynchronousErrorHandling && !s.syncErrorThrowable ? this._subscribe(s) : this._trySubscribe(s)),
            l.a.useDeprecatedSynchronousErrorHandling && s.syncErrorThrowable && (s.syncErrorThrowable = !1,
            s.syncErrorThrown))
                throw s.syncErrorValue;
            return s
        }
        ,
        t.prototype._trySubscribe = function(t) {
            try {
                return this._subscribe(t)
            } catch (e) {
                l.a.useDeprecatedSynchronousErrorHandling && (t.syncErrorThrown = !0,
                t.syncErrorValue = e),
                Object(i.a)(t) ? t.error(e) : console.warn(e)
            }
        }
        ,
        t.prototype.forEach = function(t, e) {
            var n = this;
            return new (e = d(e))((function(e, i) {
                var r;
                r = n.subscribe((function(e) {
                    try {
                        t(e)
                    } catch (t) {
                        i(t),
                        r && r.unsubscribe()
                    }
                }
                ), i, e)
            }
            ))
        }
        ,
        t.prototype._subscribe = function(t) {
            var e = this.source;
            return e && e.subscribe(t)
        }
        ,
        t.prototype[s.a] = function() {
            return this
        }
        ,
        t.prototype.pipe = function() {
            for (var t = [], e = 0; e < arguments.length; e++)
                t[e] = arguments[e];
            return 0 === t.length ? this : Object(c.b)(t)(this)
        }
        ,
        t.prototype.toPromise = function(t) {
            var e = this;
            return new (t = d(t))((function(t, n) {
                var i;
                e.subscribe((function(t) {
                    return i = t
                }
                ), (function(t) {
                    return n(t)
                }
                ), (function() {
                    return t(i)
                }
                ))
            }
            ))
        }
        ,
        t.create = function(e) {
            return new t(e)
        }
        ,
        t
    }();
    function d(t) {
        if (t || (t = l.a.Promise || Promise),
        !t)
            throw new Error("no Promise impl found");
        return t
    }
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return u
    }
    )),
    n.d(e, "b", (function() {
        return d
    }
    )),
    n.d(e, "c", (function() {
        return v
    }
    )),
    n.d(e, "d", (function() {
        return g
    }
    )),
    n.d(e, "e", (function() {
        return h
    }
    )),
    n.d(e, "f", (function() {
        return f
    }
    )),
    n.d(e, "g", (function() {
        return m
    }
    ));
    var i, r = n(0), o = n(3);
    try {
        i = "undefined" != typeof Intl && Intl.v8BreakIterator
    } catch (t) {
        i = !1
    }
    var a, s, c, l, u = function() {
        function t(t) {
            this._platformId = t,
            this.isBrowser = this._platformId ? Object(o.isPlatformBrowser)(this._platformId) : "object" == typeof document && !!document,
            this.EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent),
            this.TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent),
            this.BLINK = this.isBrowser && !(!window.chrome && !i) && "undefined" != typeof CSS && !this.EDGE && !this.TRIDENT,
            this.WEBKIT = this.isBrowser && /AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && !this.TRIDENT,
            this.IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !("MSStream"in window),
            this.FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent),
            this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT,
            this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT
        }
        return t.ctorParameters = function() {
            return [{
                type: Object,
                decorators: [{
                    type: r.Optional
                }, {
                    type: r.Inject,
                    args: [r.PLATFORM_ID]
                }]
            }]
        }
        ,
        t.ɵprov = Object(r["ɵɵdefineInjectable"])({
            factory: function() {
                return new t(Object(r["ɵɵinject"])(r.PLATFORM_ID, 8))
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)(r["ɵɵinject"](r.PLATFORM_ID, 8))
        }
        ,
        t
    }(), d = function() {
        function t() {}
        return t.ɵmod = r["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = r["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            }
        }),
        t
    }(), p = ["color", "button", "checkbox", "date", "datetime-local", "email", "file", "hidden", "image", "month", "number", "password", "radio", "range", "reset", "search", "submit", "tel", "text", "time", "url", "week"];
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function h() {
        if (a)
            return a;
        if ("object" != typeof document || !document)
            return a = new Set(p);
        var t = document.createElement("input");
        return a = new Set(p.filter((function(e) {
            return t.setAttribute("type", e),
            t.type === e
        }
        )))
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function f(t) {
        return function() {
            if (null == s && "undefined" != typeof window)
                try {
                    window.addEventListener("test", null, Object.defineProperty({}, "passive", {
                        get: function() {
                            return s = !0
                        }
                    }))
                } finally {
                    s = s || !1
                }
            return s
        }() ? t : !!t.capture
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function m() {
        return !("object" != typeof document || !("scrollBehavior"in document.documentElement.style))
    }
    function g() {
        if ("object" != typeof document || !document)
            return 0;
        if (null == c) {
            var t = document.createElement("div")
              , e = t.style;
            t.dir = "rtl",
            e.height = "1px",
            e.width = "1px",
            e.overflow = "auto",
            e.visibility = "hidden",
            e.pointerEvents = "none",
            e.position = "absolute";
            var n = document.createElement("div")
              , i = n.style;
            i.width = "2px",
            i.height = "1px",
            t.appendChild(n),
            document.body.appendChild(t),
            c = 0,
            0 === t.scrollLeft && (t.scrollLeft = 1,
            c = 0 === t.scrollLeft ? 1 : 2),
            t.parentNode.removeChild(t)
        }
        return c
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function v(t) {
        if (function() {
            if (null == l) {
                var t = "undefined" != typeof document ? document.head : null;
                l = !(!t || !t.createShadowRoot && !t.attachShadow)
            }
            return l
        }()) {
            var e = t.getRootNode ? t.getRootNode() : null;
            if ("undefined" != typeof ShadowRoot && ShadowRoot && e instanceof ShadowRoot)
                return e
        }
        return null
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(7)
      , r = n(2)
      , o = n(378)
      , a = n(4);
    n(66);
    n(66);
    var s = n(6)
      , c = n(0)
      , l = n(0)
      , u = n(66)
      , d = function() {
        function t(t) {
            this.TransformService = t,
            this.onBeforeReferenceSystemChangedEvent = this.TransformService.onBeforeLocalReferenceSystemChange,
            this.offsetChanged = this.TransformService.onAfterLocalReferenceSystemChange
        }
        return Object.defineProperty(t.prototype, "initialized", {
            get: function() {
                return this.TransformService.localReferenceSystemReady
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.isInitialized = function() {
            return this.TransformService.haveLocalCoordinateSystem()
        }
        ,
        t.prototype.initCoordinatesSystem = function(t, e) {
            if (t.length > 0)
                this.TransformService.setLocalCoordinateSystem(t[0].globalLocation);
            else if (e.length > 0) {
                var n = e[0]
                  , i = n.vectorEntity instanceof o.Polygon ? n.vectorEntity.boundary[0] : n.vectorEntity.coordinates[0];
                this.TransformService.setLocalCoordinateSystem(new a.Vector3(i.x,i.y,0))
            } else
                this.TransformService.unsetLocalCoordinateSystem()
        }
        ,
        t.prototype.toLocal = function(t, e, n) {
            if (!this.TransformService.haveLocalCoordinateSystem())
                throw new Error("GeoTransformationService not initialized");
            return void 0 === n ? this.TransformService.globalToLocal.transform(new a.Vector2(t,e)) : this.TransformService.globalToLocal.transform(new a.Vector3(t,e,n))
        }
        ,
        t.prototype.vectorToLocal = function(t) {
            if (t) {
                if (!this.TransformService.haveLocalCoordinateSystem())
                    throw new Error("GeoTransformationService not initialized");
                return a.Vector2,
                this.TransformService.globalToLocal.transform(t.clone())
            }
        }
        ,
        t.prototype.vectorArrayToLocal = function(t) {
            var e = this;
            return i.map(t, (function(t) {
                return e.vectorToLocal(t)
            }
            ))
        }
        ,
        t.prototype.toGlobal = function(t) {
            if (console.warn('Deprecated usage of "toGlobal", use "vector2ToGlobal or vectorToGlobal" instead.'),
            !this.TransformService.haveLocalCoordinateSystem())
                throw new Error("GeoTransformationService not initialized");
            var e = this.TransformService.localToGlobal.transform(new a.Vector3(t.x,t.y,0));
            return void 0 !== t.z ? [e.x, e.y] : [e.x, e.y, e.z]
        }
        ,
        t.prototype.vector2ToGlobal = function(t) {
            if (t) {
                if (!this.TransformService.haveLocalCoordinateSystem())
                    throw new Error("GeoTransformationService not initialized");
                return this.TransformService.localToGlobal.transform(t.clone())
            }
        }
        ,
        t.prototype.vectorToGlobal = function(t) {
            if (t) {
                if (!this.TransformService.haveLocalCoordinateSystem())
                    throw new Error("GeoTransformationService not initialized");
                return this.TransformService.localToGlobal.transform(t.clone())
            }
        }
        ,
        t.prototype.toLocalHeight = function(t) {
            return this.TransformService.globalToLocal.transform(new a.Vector3(0,0,t)).z
        }
        ,
        t.prototype.toGlobalHeight = function(t) {
            return this.TransformService.localToGlobal.transform(new a.Vector3(0,0,t)).z
        }
        ,
        t.prototype.setOffsetFromGlobal = function(t) {
            this.TransformService.setLocalCoordinateSystem(t)
        }
        ,
        t.prototype.updateLocalCoordinates = function() {
            this.offsetChanged.emit()
        }
        ,
        t.prototype.checkAndFixOffset = function(e) {
            e.location.length() > t.RELOCATE_LOCAL_SYSTEM_THRESHOLD && this.setOffsetFromGlobal(e.globalLocation)
        }
        ,
        t.RELOCATE_LOCAL_SYSTEM_THRESHOLD = 1e4,
        t.ɵfac = function(e) {
            return new (e || t)(l.ɵɵinject(u.TransformService))
        }
        ,
        t.ɵprov = l.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.GeoTransformationService = d,
    l.ɵsetClassMetadata(d, [{
        type: c.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: u.TransformService
        }]
    }
    ), null),
    r.module("IVWebApp").service("GeoTransformationService", s.downgradeInjectable(d))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(16)
      , o = (n(251),
    n(61),
    n(1036));
    n(54),
    n(251);
    var a = n(25)
      , s = n(144)
      , c = n(92)
      , l = n(375)
      , u = (n(36),
    n(6))
      , d = n(0)
      , p = n(0)
      , h = n(251)
      , f = n(61)
      , m = n(36)
      , g = function() {
        function t(t, e, n, i, l) {
            var u, d;
            this.ConfigRepository = t,
            this.$location = e,
            this.MessageReportingService = n,
            this.gettextCatalog = i,
            this.AuthenticationService = l,
            this.updated = new r.Signal,
            this.groupedConfigs = [],
            this.changedConfigs = {},
            this.configMap = {},
            this.validators = ((u = {})[a.Configs.LAYERS_POLYGON_VECTOR_MAP_STYLE] = new o.VectorMapStyleSheetValidator(this.gettextCatalog.getString("Vector Map Style Sheet", void 0, "title"),this.gettextCatalog.getString("Failed to parse vector map style sheet:")),
            u),
            this.LICENSABLE_CONFIGS = ((d = {})[c.LicenseFeatureType.ROUTING] = [a.Configs.ROUTING_ENABLED],
            d[c.LicenseFeatureType.ANALYST] = [a.Configs.TRACKING_CODE, a.Configs.TRACKING_ENABLED],
            d[c.LicenseFeatureType.USER_MANAGEMENT] = [a.Configs.AUTH_LOCAL_ENABLED],
            d),
            this.CONFIG_ALIASES = [{
                original: a.Configs.LAYERS_POINTCLOUD_VISIBLE,
                alias: "pc"
            }, {
                original: a.Configs.CORE_INIT_LAT,
                alias: "vlat"
            }, {
                original: a.Configs.CORE_INIT_LON,
                alias: "vlon"
            }],
            this.configDeferred = new s.Deferred,
            this.fetch()
        }
        return t.prototype.getLicensableConfigFeature = function(t) {
            for (var e in this.LICENSABLE_CONFIGS)
                if (this.LICENSABLE_CONFIGS[e].indexOf(t) > -1)
                    return l.LicenseFeature.getFeatureTypeByCode(e)
        }
        ,
        t.prototype.fetch = function(t) {
            var e = this;
            void 0 === t && (t = !1),
            this.configDeferred = new s.Deferred,
            this.initialized = this.configDeferred.promise,
            this.groupedConfigs = [],
            this.AuthenticationService.isDataAccessible().then((function(t) {
                return t ? Promise.resolve() : (e.ConfigRepository.resetCache(),
                e.configArray = [],
                e.updateConfigMap(),
                e.buildGroupedConfig(),
                Promise.reject(void 0))
            }
            )).then((function() {
                return e.ConfigRepository.findAll(t)
            }
            )).then((function() {
                e.configArray = e.ConfigRepository.data,
                e.updateConfigMap(),
                e.buildGroupedConfig()
            }
            )).catch((function() {
                e.configDeferred.reject()
            }
            ))
        }
        ,
        t.prototype.buildGroupedConfig = function() {
            var t = i.copy(this.configArray).filter((function(t) {
                return t && t.editInForm
            }
            )).map((function(t) {
                return "boolean" === t.type && (t.value = "true" === t.value),
                t
            }
            ));
            if (0 !== t.length) {
                var e = t.sort((function(t, e) {
                    return t.category.localeCompare(e.category)
                }
                ))
                  , n = this.groupedConfigs[this.groupedConfigs.push([]) - 1];
                n.category = e[0].category;
                for (var r = 0, o = e; r < o.length; r++) {
                    var a = o[r];
                    0 === n.category.localeCompare(a.category) || ((n = this.groupedConfigs[this.groupedConfigs.push([]) - 1]).category = a.category),
                    n.push(a)
                }
                this.groupedConfigs = this.groupedConfigs.sort((function(t, e) {
                    return -t.length + e.length
                }
                ))
            }
        }
        ,
        t.prototype.setLocalDefaults = function(t) {
            this.overrides = t,
            this.updateConfigMap()
        }
        ,
        t.prototype.updateConfigMap = function(t) {
            var e = this
              , n = t || this.configArray;
            if (n && this.overrides) {
                for (var r = 0, o = n; r < o.length; r++) {
                    var a = o[r];
                    this.configMap[a.name] = a.value
                }
                i.forEach(this.overrides, (function(t, n) {
                    e.configMap[n] = t
                }
                )),
                this.updateFromURL(),
                this.configDeferred.resolve()
            }
        }
        ,
        t.prototype.updateFromURL = function() {
            var t = this
              , e = this.$location.search();
            i.forEach(e, (function(n, i) {
                if (i !== a.Configs.TRACKING_CODE && i !== a.Configs.TRACKING_ENABLED) {
                    for (var r = 0, o = t.CONFIG_ALIASES; r < o.length; r++) {
                        var s = o[r];
                        s.alias === i && (i = s.original),
                        s.original === i && delete e[s.original]
                    }
                    t.configMap[i] = n
                }
            }
            )),
            this.updated.emit()
        }
        ,
        t.prototype.saveConfig = function(t, e) {
            var n = this
              , i = this.configArray.find((function(e) {
                return e.name === t
            }
            ));
            if (!i)
                return Promise.reject(new Error("No such config exists"));
            var r = i.value;
            return i.value = e,
            this.ConfigRepository.save(i, !1).catch((function() {
                return i.value = r,
                n.MessageReportingService.showMessage(n.gettextCatalog.getString("Update Failed", void 0, "title"), n.gettextCatalog.getString("Updating changes to server over REST interface failed. Reverting local changes to match server.")),
                [i]
            }
            ))
        }
        ,
        t.prototype.saveConfigs = function(t) {
            var e = this
              , n = Object.keys(t).map((function(n) {
                var i;
                return t[n].hasOwnProperty("value") ? i = t[n] : (i = e.getConfigResource(n)).value = t[n],
                i
            }
            ));
            return this.ConfigRepository.save(n).then((function(t) {
                return e.updateConfigMap(),
                t
            }
            ))
        }
        ,
        t.prototype.validateConfigs = function(t) {
            for (var e = 0, n = Object.keys(t); e < n.length; e++) {
                var i = n[e];
                if (this.validators.hasOwnProperty(i)) {
                    var r = this.validators[i]
                      , o = r.validate(t[i].value.toString());
                    if (t[i].value = o.cleanedValue,
                    !o.valid)
                        return this.MessageReportingService.showMessage(r.title, o.reason),
                        !1
                }
            }
            return !0
        }
        ,
        t.prototype.getBoolean = function(t, e) {
            return this.isConfigDefined(t) ? "true" === this.configMap[t] || !0 === this.configMap[t] : e
        }
        ,
        t.prototype.getInteger = function(t, e) {
            return this.parseToNumber(t, (function(t) {
                return parseInt(t, void 0)
            }
            ), e)
        }
        ,
        t.prototype.getFloat = function(t, e) {
            return this.parseToNumber(t, parseFloat, e)
        }
        ,
        t.prototype.parseToNumber = function(t, e, n) {
            if (this.isConfigDefined(t)) {
                var i = e(this.configMap[t]);
                return isNaN(i) ? n : i
            }
            return n
        }
        ,
        t.prototype.getString = function(t, e) {
            return void 0 !== this.configMap[t] ? this.configMap[t] : e
        }
        ,
        t.prototype.getArray = function(t, e, n) {
            return this.isConfigDefined(t) ? e ? this.configMap[t].split(",").map((function(t) {
                return parseInt(t, 10)
            }
            )) : this.configMap[t].split(",") : n
        }
        ,
        t.prototype.isConfigDefined = function(t) {
            return void 0 !== this.configMap[t] && "" !== this.configMap[t]
        }
        ,
        t.prototype.getAliasByName = function(t) {
            for (var e = 0, n = this.CONFIG_ALIASES; e < n.length; e++) {
                var i = n[e];
                if (i.original === t)
                    return i.alias
            }
        }
        ,
        t.prototype.getConfigResource = function(t) {
            return this.configArray.filter((function(e) {
                return e.name === t
            }
            ))[0]
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(p.ɵɵinject(h.ConfigRepository),p.ɵɵinject("$location"),p.ɵɵinject(f.MessageReportingService),p.ɵɵinject("gettextCatalog"),p.ɵɵinject(m.AuthenticationService))
        }
        ,
        t.ɵprov = p.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.ConfigService = g,
    p.ɵsetClassMetadata(g, [{
        type: d.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: h.ConfigRepository
        }, {
            type: void 0,
            decorators: [{
                type: d.Inject,
                args: ["$location"]
            }]
        }, {
            type: f.MessageReportingService
        }, {
            type: void 0,
            decorators: [{
                type: d.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: m.AuthenticationService
        }]
    }
    ), null),
    i.module("IVWebApp").service("ConfigService", u.downgradeInjectable(g))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function() {
        function t(t, e, n) {
            void 0 === t && (t = null),
            void 0 === e && (e = null),
            void 0 === n && (n = 0),
            this.enabled = !0,
            this.newLink = !1,
            this.callback = null,
            this.prev = t || this,
            this.next = e || this,
            this.order = n
        }
        return t.prototype.isEnabled = function() {
            return this.enabled && !this.newLink
        }
        ,
        t.prototype.setEnabled = function(t) {
            this.enabled = t
        }
        ,
        t.prototype.unlink = function() {
            this.callback = null,
            this.next.prev = this.prev,
            this.prev.next = this.next
        }
        ,
        t.prototype.insert = function(e, n) {
            for (var i = this.prev; i !== this && !(i.order <= n); )
                i = i.prev;
            var r = new t(i,i.next,n);
            return r.callback = e,
            i.next = r,
            r.next.prev = r,
            r
        }
        ,
        t
    }()
      , a = function() {
        function t(t, e) {
            this.link = e
        }
        return t.prototype.disconnect = function() {
            return null !== this.link && (this.link.unlink(),
            this.link = null,
            !0)
        }
        ,
        Object.defineProperty(t.prototype, "enabled", {
            get: function() {
                return null !== this.link && this.link.isEnabled()
            },
            set: function(t) {
                this.link && this.link.setEnabled(t)
            },
            enumerable: !0,
            configurable: !0
        }),
        t
    }()
      , s = function() {
        function t() {
            this.list = []
        }
        return t.prototype.add = function(t) {
            this.list.push(t)
        }
        ,
        t.prototype.disconnectAll = function() {
            for (var t = 0, e = this.list; t < e.length; t++) {
                e[t].disconnect()
            }
            this.list = []
        }
        ,
        t
    }();
    e.SignalConnections = s;
    var c = function() {
        function t() {
            this.head = new o,
            this.hasNewLinks = !1,
            this.emitDepth = 0,
            this.emit = this.emitInternal.bind(this)
        }
        return t.prototype.connect = function(t, e) {
            void 0 === e && (e = 0);
            var n = this.head.insert(t, e);
            return this.emitDepth > 0 && (this.hasNewLinks = !0,
            n.newLink = !0),
            new a(this.head,n)
        }
        ,
        t.prototype.disconnect = function(t) {
            for (var e = this.head.next; e !== this.head; e = e.next)
                if (e.callback === t)
                    return e.unlink(),
                    !0;
            return !1
        }
        ,
        t.prototype.disconnectAll = function() {
            for (; this.head.next !== this.head; )
                this.head.next.unlink()
        }
        ,
        t.prototype.emitInternal = function() {
            this.emitDepth++;
            for (var t = this.head.next; t !== this.head; t = t.next)
                t.isEnabled() && t.callback && t.callback.apply(null, arguments);
            this.emitDepth--,
            this.unsetNewLink()
        }
        ,
        t.prototype.emitCollecting = function(t, e) {
            this.emitDepth++;
            for (var n = this.head.next; n !== this.head; n = n.next)
                if (n.isEnabled() && n.callback) {
                    var i = n.callback.apply(null, e);
                    if (!t.handleResult(i))
                        break
                }
            this.emitDepth--,
            this.unsetNewLink()
        }
        ,
        t.prototype.unsetNewLink = function() {
            if (this.hasNewLinks && 0 == this.emitDepth) {
                for (var t = this.head.next; t !== this.head; t = t.next)
                    t.newLink = !1;
                this.hasNewLinks = !1
            }
        }
        ,
        t
    }();
    e.Signal = c;
    var l = function(t) {
        var e = this;
        this.emit = function() {
            t.emitCollecting(e, arguments)
        }
    };
    e.Collector = l;
    var u = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.handleResult = function(t) {
            return this.result = t,
            !0
        }
        ,
        e.prototype.getResult = function() {
            return this.result
        }
        ,
        e.prototype.reset = function() {
            delete this.result
        }
        ,
        e
    }(l);
    e.CollectorLast = u;
    var d = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.result = !1,
            e
        }
        return r(e, t),
        e.prototype.handleResult = function(t) {
            return this.result = t,
            !!this.result
        }
        ,
        e.prototype.getResult = function() {
            return this.result
        }
        ,
        e.prototype.reset = function() {
            this.result = !1
        }
        ,
        e
    }(l);
    e.CollectorUntil0 = d;
    var p = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.result = !1,
            e
        }
        return r(e, t),
        e.prototype.handleResult = function(t) {
            return this.result = t,
            !this.result
        }
        ,
        e.prototype.getResult = function() {
            return this.result
        }
        ,
        e.prototype.reset = function() {
            this.result = !1
        }
        ,
        e
    }(l);
    e.CollectorWhile0 = p;
    var h = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.result = [],
            e
        }
        return r(e, t),
        e.prototype.handleResult = function(t) {
            return this.result.push(t),
            !0
        }
        ,
        e.prototype.getResult = function() {
            return this.result
        }
        ,
        e.prototype.reset = function() {
            this.result.length = 0
        }
        ,
        e
    }(l);
    e.CollectorArray = h
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var i = n(2)
          , r = n(16)
          , o = n(255)
          , a = (n(15),
        n(25))
          , s = n(8)
          , c = n(20)
          , l = n(144)
          , u = n(6)
          , d = n(0)
          , p = n(0)
          , h = n(15)
          , f = function() {
            function e(t) {
                var e = this;
                this.ConfigService = t,
                this.onTransitionStart = new r.Signal,
                this.onTransitionEnd = new r.Signal,
                this.onViewSwap = new r.Signal,
                this.secondaryViewVisibilityChanged = new r.Signal,
                this.secondaryViewHovered = !1,
                this.mainViewDeferred = new l.Deferred,
                this.mapViewDeferred = new l.Deferred,
                this.viewSwapAllowed = !0,
                this.primaryView = o.ViewType.PANORAMA,
                this._showSecondaryView = !0,
                t.initialized.then((function() {
                    e.showSecondaryView = t.getBoolean(a.Configs.LAYERS_MAP_VISIBLE, e.showSecondaryView)
                }
                )).catch(s.handleWarning),
                this.mainViewDeferred.promise.then((function(t) {
                    return e.mainView = t
                }
                )).catch(s.handleWarning),
                this.mapViewDeferred.promise.then((function(t) {
                    return e.mapView = t
                }
                )).catch(s.handleWarning)
            }
            return Object.defineProperty(e.prototype, "showSecondaryView", {
                get: function() {
                    return this._showSecondaryView
                },
                set: function(t) {
                    this._showSecondaryView = t,
                    c.invalidateAngular(),
                    this.secondaryViewVisibilityChanged.emit(t)
                },
                enumerable: !0,
                configurable: !0
            }),
            e.prototype.setPrimaryView = function(t) {
                this.primaryView !== t && this.swapViews()
            }
            ,
            e.prototype.swapViews = function() {
                var e = t(this.mainView.divContainer.container)
                  , n = t(this.mapView.divContainer.container)
                  , i = e.parent()
                  , r = n.parent();
                e.prependTo(r),
                n.prependTo(i),
                this.mainView.divContainer.onResize(),
                this.mapView.divContainer.onResize(),
                this.primaryView = this.isMapPrimaryView() ? o.ViewType.PANORAMA : o.ViewType.MAP,
                this.onViewSwap.emit(this.primaryView)
            }
            ,
            e.prototype.canSwapViews = function() {
                return this.showSecondaryView
            }
            ,
            e.prototype.isMapVisible = function() {
                return this.showSecondaryView || this.isMapPrimaryView()
            }
            ,
            e.prototype.getCurrentMainViewMode = function() {
                return this.mainView.viewMode
            }
            ,
            e.prototype.isPanoVisible = function() {
                return this.showSecondaryView || this.isPanoPrimaryView()
            }
            ,
            e.prototype.getPrimaryView = function() {
                return this.primaryView
            }
            ,
            e.prototype.isMapPrimaryView = function() {
                return this.primaryView === o.ViewType.MAP
            }
            ,
            e.prototype.isPanoPrimaryView = function() {
                return this.primaryView === o.ViewType.PANORAMA
            }
            ,
            e.ɵfac = function(t) {
                return new (t || e)(p.ɵɵinject(h.ConfigService))
            }
            ,
            e.ɵprov = p.ɵɵdefineInjectable({
                token: e,
                factory: e.ɵfac,
                providedIn: "root"
            }),
            e
        }();
        e.ViewService = f,
        p.ɵsetClassMetadata(f, [{
            type: d.Injectable,
            args: [{
                providedIn: "root"
            }]
        }], (function() {
            return [{
                type: h.ConfigService
            }]
        }
        ), null),
        i.module("IVWebApp").service("ViewService", u.downgradeInjectable(f))
    }
    ).call(this, n(19))
}
, function(t, e) {
    t.exports = function(t) {
        try {
            return !!t()
        } catch (t) {
            return !0
        }
    }
}
, function(t, e, n) {
    var i, r, o;
    /*!
 * jQuery JavaScript Library v2.2.4
 * http://jquery.com/
 *
 * Includes Sizzle.js
 * http://sizzlejs.com/
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license
 * http://jquery.org/license
 *
 * Date: 2016-05-20T17:23Z
 */
    r = "undefined" != typeof window ? window : this,
    o = function(n, r) {
        var o = []
          , a = n.document
          , s = o.slice
          , c = o.concat
          , l = o.push
          , u = o.indexOf
          , d = {}
          , p = d.toString
          , h = d.hasOwnProperty
          , f = {}
          , m = function(t, e) {
            return new m.fn.init(t,e)
        }
          , g = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g
          , v = /^-ms-/
          , y = /-([\da-z])/gi
          , b = function(t, e) {
            return e.toUpperCase()
        };
        function w(t) {
            var e = !!t && "length"in t && t.length
              , n = m.type(t);
            return "function" !== n && !m.isWindow(t) && ("array" === n || 0 === e || "number" == typeof e && e > 0 && e - 1 in t)
        }
        m.fn = m.prototype = {
            jquery: "2.2.4",
            constructor: m,
            selector: "",
            length: 0,
            toArray: function() {
                return s.call(this)
            },
            get: function(t) {
                return null != t ? t < 0 ? this[t + this.length] : this[t] : s.call(this)
            },
            pushStack: function(t) {
                var e = m.merge(this.constructor(), t);
                return e.prevObject = this,
                e.context = this.context,
                e
            },
            each: function(t) {
                return m.each(this, t)
            },
            map: function(t) {
                return this.pushStack(m.map(this, (function(e, n) {
                    return t.call(e, n, e)
                }
                )))
            },
            slice: function() {
                return this.pushStack(s.apply(this, arguments))
            },
            first: function() {
                return this.eq(0)
            },
            last: function() {
                return this.eq(-1)
            },
            eq: function(t) {
                var e = this.length
                  , n = +t + (t < 0 ? e : 0);
                return this.pushStack(n >= 0 && n < e ? [this[n]] : [])
            },
            end: function() {
                return this.prevObject || this.constructor()
            },
            push: l,
            sort: o.sort,
            splice: o.splice
        },
        m.extend = m.fn.extend = function() {
            var t, e, n, i, r, o, a = arguments[0] || {}, s = 1, c = arguments.length, l = !1;
            for ("boolean" == typeof a && (l = a,
            a = arguments[s] || {},
            s++),
            "object" == typeof a || m.isFunction(a) || (a = {}),
            s === c && (a = this,
            s--); s < c; s++)
                if (null != (t = arguments[s]))
                    for (e in t)
                        n = a[e],
                        a !== (i = t[e]) && (l && i && (m.isPlainObject(i) || (r = m.isArray(i))) ? (r ? (r = !1,
                        o = n && m.isArray(n) ? n : []) : o = n && m.isPlainObject(n) ? n : {},
                        a[e] = m.extend(l, o, i)) : void 0 !== i && (a[e] = i));
            return a
        }
        ,
        m.extend({
            expando: "jQuery" + ("2.2.4" + Math.random()).replace(/\D/g, ""),
            isReady: !0,
            error: function(t) {
                throw new Error(t)
            },
            noop: function() {},
            isFunction: function(t) {
                return "function" === m.type(t)
            },
            isArray: Array.isArray,
            isWindow: function(t) {
                return null != t && t === t.window
            },
            isNumeric: function(t) {
                var e = t && t.toString();
                return !m.isArray(t) && e - parseFloat(e) + 1 >= 0
            },
            isPlainObject: function(t) {
                var e;
                if ("object" !== m.type(t) || t.nodeType || m.isWindow(t))
                    return !1;
                if (t.constructor && !h.call(t, "constructor") && !h.call(t.constructor.prototype || {}, "isPrototypeOf"))
                    return !1;
                for (e in t)
                    ;
                return void 0 === e || h.call(t, e)
            },
            isEmptyObject: function(t) {
                var e;
                for (e in t)
                    return !1;
                return !0
            },
            type: function(t) {
                return null == t ? t + "" : "object" == typeof t || "function" == typeof t ? d[p.call(t)] || "object" : typeof t
            },
            globalEval: function(t) {
                var e, n = eval;
                (t = m.trim(t)) && (1 === t.indexOf("use strict") ? ((e = a.createElement("script")).text = t,
                a.head.appendChild(e).parentNode.removeChild(e)) : n(t))
            },
            camelCase: function(t) {
                return t.replace(v, "ms-").replace(y, b)
            },
            nodeName: function(t, e) {
                return t.nodeName && t.nodeName.toLowerCase() === e.toLowerCase()
            },
            each: function(t, e) {
                var n, i = 0;
                if (w(t))
                    for (n = t.length; i < n && !1 !== e.call(t[i], i, t[i]); i++)
                        ;
                else
                    for (i in t)
                        if (!1 === e.call(t[i], i, t[i]))
                            break;
                return t
            },
            trim: function(t) {
                return null == t ? "" : (t + "").replace(g, "")
            },
            makeArray: function(t, e) {
                var n = e || [];
                return null != t && (w(Object(t)) ? m.merge(n, "string" == typeof t ? [t] : t) : l.call(n, t)),
                n
            },
            inArray: function(t, e, n) {
                return null == e ? -1 : u.call(e, t, n)
            },
            merge: function(t, e) {
                for (var n = +e.length, i = 0, r = t.length; i < n; i++)
                    t[r++] = e[i];
                return t.length = r,
                t
            },
            grep: function(t, e, n) {
                for (var i = [], r = 0, o = t.length, a = !n; r < o; r++)
                    !e(t[r], r) !== a && i.push(t[r]);
                return i
            },
            map: function(t, e, n) {
                var i, r, o = 0, a = [];
                if (w(t))
                    for (i = t.length; o < i; o++)
                        null != (r = e(t[o], o, n)) && a.push(r);
                else
                    for (o in t)
                        null != (r = e(t[o], o, n)) && a.push(r);
                return c.apply([], a)
            },
            guid: 1,
            proxy: function(t, e) {
                var n, i, r;
                if ("string" == typeof e && (n = t[e],
                e = t,
                t = n),
                m.isFunction(t))
                    return i = s.call(arguments, 2),
                    (r = function() {
                        return t.apply(e || this, i.concat(s.call(arguments)))
                    }
                    ).guid = t.guid = t.guid || m.guid++,
                    r
            },
            now: Date.now,
            support: f
        }),
        "function" == typeof Symbol && (m.fn[Symbol.iterator] = o[Symbol.iterator]),
        m.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), (function(t, e) {
            d["[object " + e + "]"] = e.toLowerCase()
        }
        ));
        var S = /*!
 * Sizzle CSS Selector Engine v2.2.1
 * http://sizzlejs.com/
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license
 * http://jquery.org/license
 *
 * Date: 2015-10-17
 */
        function(t) {
            var e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g, v, y, b, w = "sizzle" + 1 * new Date, S = t.document, x = 0, M = 0, E = rt(), C = rt(), A = rt(), T = function(t, e) {
                return t === e && (d = !0),
                0
            }, O = {}.hasOwnProperty, _ = [], P = _.pop, I = _.push, k = _.push, D = _.slice, R = function(t, e) {
                for (var n = 0, i = t.length; n < i; n++)
                    if (t[n] === e)
                        return n;
                return -1
            }, L = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", N = "[\\x20\\t\\r\\n\\f]", j = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", V = "\\[" + N + "*(" + j + ")(?:" + N + "*([*^$|!~]?=)" + N + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + j + "))|)" + N + "*\\]", F = ":(" + j + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + V + ")*)|.*)\\)|)", U = new RegExp(N + "+","g"), B = new RegExp("^" + N + "+|((?:^|[^\\\\])(?:\\\\.)*)" + N + "+$","g"), z = new RegExp("^" + N + "*," + N + "*"), G = new RegExp("^" + N + "*([>+~]|" + N + ")" + N + "*"), H = new RegExp("=" + N + "*([^\\]'\"]*?)" + N + "*\\]","g"), W = new RegExp(F), q = new RegExp("^" + j + "$"), X = {
                ID: new RegExp("^#(" + j + ")"),
                CLASS: new RegExp("^\\.(" + j + ")"),
                TAG: new RegExp("^(" + j + "|[*])"),
                ATTR: new RegExp("^" + V),
                PSEUDO: new RegExp("^" + F),
                CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + N + "*(even|odd|(([+-]|)(\\d*)n|)" + N + "*(?:([+-]|)" + N + "*(\\d+)|))" + N + "*\\)|)","i"),
                bool: new RegExp("^(?:" + L + ")$","i"),
                needsContext: new RegExp("^" + N + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + N + "*((?:-\\d)?\\d*)" + N + "*\\)|)(?=[^-]|$)","i")
            }, Y = /^(?:input|select|textarea|button)$/i, K = /^h\d$/i, Z = /^[^{]+\{\s*\[native \w/, J = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, Q = /[+~]/, $ = /'|\\/g, tt = new RegExp("\\\\([\\da-f]{1,6}" + N + "?|(" + N + ")|.)","ig"), et = function(t, e, n) {
                var i = "0x" + e - 65536;
                return i != i || n ? e : i < 0 ? String.fromCharCode(i + 65536) : String.fromCharCode(i >> 10 | 55296, 1023 & i | 56320)
            }, nt = function() {
                p()
            };
            try {
                k.apply(_ = D.call(S.childNodes), S.childNodes),
                _[S.childNodes.length].nodeType
            } catch (t) {
                k = {
                    apply: _.length ? function(t, e) {
                        I.apply(t, D.call(e))
                    }
                    : function(t, e) {
                        for (var n = t.length, i = 0; t[n++] = e[i++]; )
                            ;
                        t.length = n - 1
                    }
                }
            }
            function it(t, e, i, r) {
                var o, s, l, u, d, f, v, y, x = e && e.ownerDocument, M = e ? e.nodeType : 9;
                if (i = i || [],
                "string" != typeof t || !t || 1 !== M && 9 !== M && 11 !== M)
                    return i;
                if (!r && ((e ? e.ownerDocument || e : S) !== h && p(e),
                e = e || h,
                m)) {
                    if (11 !== M && (f = J.exec(t)))
                        if (o = f[1]) {
                            if (9 === M) {
                                if (!(l = e.getElementById(o)))
                                    return i;
                                if (l.id === o)
                                    return i.push(l),
                                    i
                            } else if (x && (l = x.getElementById(o)) && b(e, l) && l.id === o)
                                return i.push(l),
                                i
                        } else {
                            if (f[2])
                                return k.apply(i, e.getElementsByTagName(t)),
                                i;
                            if ((o = f[3]) && n.getElementsByClassName && e.getElementsByClassName)
                                return k.apply(i, e.getElementsByClassName(o)),
                                i
                        }
                    if (n.qsa && !A[t + " "] && (!g || !g.test(t))) {
                        if (1 !== M)
                            x = e,
                            y = t;
                        else if ("object" !== e.nodeName.toLowerCase()) {
                            for ((u = e.getAttribute("id")) ? u = u.replace($, "\\$&") : e.setAttribute("id", u = w),
                            s = (v = a(t)).length,
                            d = q.test(u) ? "#" + u : "[id='" + u + "']"; s--; )
                                v[s] = d + " " + ft(v[s]);
                            y = v.join(","),
                            x = Q.test(t) && pt(e.parentNode) || e
                        }
                        if (y)
                            try {
                                return k.apply(i, x.querySelectorAll(y)),
                                i
                            } catch (t) {} finally {
                                u === w && e.removeAttribute("id")
                            }
                    }
                }
                return c(t.replace(B, "$1"), e, i, r)
            }
            function rt() {
                var t = [];
                return function e(n, r) {
                    return t.push(n + " ") > i.cacheLength && delete e[t.shift()],
                    e[n + " "] = r
                }
            }
            function ot(t) {
                return t[w] = !0,
                t
            }
            function at(t) {
                var e = h.createElement("div");
                try {
                    return !!t(e)
                } catch (t) {
                    return !1
                } finally {
                    e.parentNode && e.parentNode.removeChild(e),
                    e = null
                }
            }
            function st(t, e) {
                for (var n = t.split("|"), r = n.length; r--; )
                    i.attrHandle[n[r]] = e
            }
            function ct(t, e) {
                var n = e && t
                  , i = n && 1 === t.nodeType && 1 === e.nodeType && (~e.sourceIndex || 1 << 31) - (~t.sourceIndex || 1 << 31);
                if (i)
                    return i;
                if (n)
                    for (; n = n.nextSibling; )
                        if (n === e)
                            return -1;
                return t ? 1 : -1
            }
            function lt(t) {
                return function(e) {
                    return "input" === e.nodeName.toLowerCase() && e.type === t
                }
            }
            function ut(t) {
                return function(e) {
                    var n = e.nodeName.toLowerCase();
                    return ("input" === n || "button" === n) && e.type === t
                }
            }
            function dt(t) {
                return ot((function(e) {
                    return e = +e,
                    ot((function(n, i) {
                        for (var r, o = t([], n.length, e), a = o.length; a--; )
                            n[r = o[a]] && (n[r] = !(i[r] = n[r]))
                    }
                    ))
                }
                ))
            }
            function pt(t) {
                return t && void 0 !== t.getElementsByTagName && t
            }
            for (e in n = it.support = {},
            o = it.isXML = function(t) {
                var e = t && (t.ownerDocument || t).documentElement;
                return !!e && "HTML" !== e.nodeName
            }
            ,
            p = it.setDocument = function(t) {
                var e, r, a = t ? t.ownerDocument || t : S;
                return a !== h && 9 === a.nodeType && a.documentElement ? (f = (h = a).documentElement,
                m = !o(h),
                (r = h.defaultView) && r.top !== r && (r.addEventListener ? r.addEventListener("unload", nt, !1) : r.attachEvent && r.attachEvent("onunload", nt)),
                n.attributes = at((function(t) {
                    return t.className = "i",
                    !t.getAttribute("className")
                }
                )),
                n.getElementsByTagName = at((function(t) {
                    return t.appendChild(h.createComment("")),
                    !t.getElementsByTagName("*").length
                }
                )),
                n.getElementsByClassName = Z.test(h.getElementsByClassName),
                n.getById = at((function(t) {
                    return f.appendChild(t).id = w,
                    !h.getElementsByName || !h.getElementsByName(w).length
                }
                )),
                n.getById ? (i.find.ID = function(t, e) {
                    if (void 0 !== e.getElementById && m) {
                        var n = e.getElementById(t);
                        return n ? [n] : []
                    }
                }
                ,
                i.filter.ID = function(t) {
                    var e = t.replace(tt, et);
                    return function(t) {
                        return t.getAttribute("id") === e
                    }
                }
                ) : (delete i.find.ID,
                i.filter.ID = function(t) {
                    var e = t.replace(tt, et);
                    return function(t) {
                        var n = void 0 !== t.getAttributeNode && t.getAttributeNode("id");
                        return n && n.value === e
                    }
                }
                ),
                i.find.TAG = n.getElementsByTagName ? function(t, e) {
                    return void 0 !== e.getElementsByTagName ? e.getElementsByTagName(t) : n.qsa ? e.querySelectorAll(t) : void 0
                }
                : function(t, e) {
                    var n, i = [], r = 0, o = e.getElementsByTagName(t);
                    if ("*" === t) {
                        for (; n = o[r++]; )
                            1 === n.nodeType && i.push(n);
                        return i
                    }
                    return o
                }
                ,
                i.find.CLASS = n.getElementsByClassName && function(t, e) {
                    if (void 0 !== e.getElementsByClassName && m)
                        return e.getElementsByClassName(t)
                }
                ,
                v = [],
                g = [],
                (n.qsa = Z.test(h.querySelectorAll)) && (at((function(t) {
                    f.appendChild(t).innerHTML = "<a id='" + w + "'></a><select id='" + w + "-\r\\' msallowcapture=''><option selected=''></option></select>",
                    t.querySelectorAll("[msallowcapture^='']").length && g.push("[*^$]=" + N + "*(?:''|\"\")"),
                    t.querySelectorAll("[selected]").length || g.push("\\[" + N + "*(?:value|" + L + ")"),
                    t.querySelectorAll("[id~=" + w + "-]").length || g.push("~="),
                    t.querySelectorAll(":checked").length || g.push(":checked"),
                    t.querySelectorAll("a#" + w + "+*").length || g.push(".#.+[+~]")
                }
                )),
                at((function(t) {
                    var e = h.createElement("input");
                    e.setAttribute("type", "hidden"),
                    t.appendChild(e).setAttribute("name", "D"),
                    t.querySelectorAll("[name=d]").length && g.push("name" + N + "*[*^$|!~]?="),
                    t.querySelectorAll(":enabled").length || g.push(":enabled", ":disabled"),
                    t.querySelectorAll("*,:x"),
                    g.push(",.*:")
                }
                ))),
                (n.matchesSelector = Z.test(y = f.matches || f.webkitMatchesSelector || f.mozMatchesSelector || f.oMatchesSelector || f.msMatchesSelector)) && at((function(t) {
                    n.disconnectedMatch = y.call(t, "div"),
                    y.call(t, "[s!='']:x"),
                    v.push("!=", F)
                }
                )),
                g = g.length && new RegExp(g.join("|")),
                v = v.length && new RegExp(v.join("|")),
                e = Z.test(f.compareDocumentPosition),
                b = e || Z.test(f.contains) ? function(t, e) {
                    var n = 9 === t.nodeType ? t.documentElement : t
                      , i = e && e.parentNode;
                    return t === i || !(!i || 1 !== i.nodeType || !(n.contains ? n.contains(i) : t.compareDocumentPosition && 16 & t.compareDocumentPosition(i)))
                }
                : function(t, e) {
                    if (e)
                        for (; e = e.parentNode; )
                            if (e === t)
                                return !0;
                    return !1
                }
                ,
                T = e ? function(t, e) {
                    if (t === e)
                        return d = !0,
                        0;
                    var i = !t.compareDocumentPosition - !e.compareDocumentPosition;
                    return i || (1 & (i = (t.ownerDocument || t) === (e.ownerDocument || e) ? t.compareDocumentPosition(e) : 1) || !n.sortDetached && e.compareDocumentPosition(t) === i ? t === h || t.ownerDocument === S && b(S, t) ? -1 : e === h || e.ownerDocument === S && b(S, e) ? 1 : u ? R(u, t) - R(u, e) : 0 : 4 & i ? -1 : 1)
                }
                : function(t, e) {
                    if (t === e)
                        return d = !0,
                        0;
                    var n, i = 0, r = t.parentNode, o = e.parentNode, a = [t], s = [e];
                    if (!r || !o)
                        return t === h ? -1 : e === h ? 1 : r ? -1 : o ? 1 : u ? R(u, t) - R(u, e) : 0;
                    if (r === o)
                        return ct(t, e);
                    for (n = t; n = n.parentNode; )
                        a.unshift(n);
                    for (n = e; n = n.parentNode; )
                        s.unshift(n);
                    for (; a[i] === s[i]; )
                        i++;
                    return i ? ct(a[i], s[i]) : a[i] === S ? -1 : s[i] === S ? 1 : 0
                }
                ,
                h) : h
            }
            ,
            it.matches = function(t, e) {
                return it(t, null, null, e)
            }
            ,
            it.matchesSelector = function(t, e) {
                if ((t.ownerDocument || t) !== h && p(t),
                e = e.replace(H, "='$1']"),
                n.matchesSelector && m && !A[e + " "] && (!v || !v.test(e)) && (!g || !g.test(e)))
                    try {
                        var i = y.call(t, e);
                        if (i || n.disconnectedMatch || t.document && 11 !== t.document.nodeType)
                            return i
                    } catch (t) {}
                return it(e, h, null, [t]).length > 0
            }
            ,
            it.contains = function(t, e) {
                return (t.ownerDocument || t) !== h && p(t),
                b(t, e)
            }
            ,
            it.attr = function(t, e) {
                (t.ownerDocument || t) !== h && p(t);
                var r = i.attrHandle[e.toLowerCase()]
                  , o = r && O.call(i.attrHandle, e.toLowerCase()) ? r(t, e, !m) : void 0;
                return void 0 !== o ? o : n.attributes || !m ? t.getAttribute(e) : (o = t.getAttributeNode(e)) && o.specified ? o.value : null
            }
            ,
            it.error = function(t) {
                throw new Error("Syntax error, unrecognized expression: " + t)
            }
            ,
            it.uniqueSort = function(t) {
                var e, i = [], r = 0, o = 0;
                if (d = !n.detectDuplicates,
                u = !n.sortStable && t.slice(0),
                t.sort(T),
                d) {
                    for (; e = t[o++]; )
                        e === t[o] && (r = i.push(o));
                    for (; r--; )
                        t.splice(i[r], 1)
                }
                return u = null,
                t
            }
            ,
            r = it.getText = function(t) {
                var e, n = "", i = 0, o = t.nodeType;
                if (o) {
                    if (1 === o || 9 === o || 11 === o) {
                        if ("string" == typeof t.textContent)
                            return t.textContent;
                        for (t = t.firstChild; t; t = t.nextSibling)
                            n += r(t)
                    } else if (3 === o || 4 === o)
                        return t.nodeValue
                } else
                    for (; e = t[i++]; )
                        n += r(e);
                return n
            }
            ,
            (i = it.selectors = {
                cacheLength: 50,
                createPseudo: ot,
                match: X,
                attrHandle: {},
                find: {},
                relative: {
                    ">": {
                        dir: "parentNode",
                        first: !0
                    },
                    " ": {
                        dir: "parentNode"
                    },
                    "+": {
                        dir: "previousSibling",
                        first: !0
                    },
                    "~": {
                        dir: "previousSibling"
                    }
                },
                preFilter: {
                    ATTR: function(t) {
                        return t[1] = t[1].replace(tt, et),
                        t[3] = (t[3] || t[4] || t[5] || "").replace(tt, et),
                        "~=" === t[2] && (t[3] = " " + t[3] + " "),
                        t.slice(0, 4)
                    },
                    CHILD: function(t) {
                        return t[1] = t[1].toLowerCase(),
                        "nth" === t[1].slice(0, 3) ? (t[3] || it.error(t[0]),
                        t[4] = +(t[4] ? t[5] + (t[6] || 1) : 2 * ("even" === t[3] || "odd" === t[3])),
                        t[5] = +(t[7] + t[8] || "odd" === t[3])) : t[3] && it.error(t[0]),
                        t
                    },
                    PSEUDO: function(t) {
                        var e, n = !t[6] && t[2];
                        return X.CHILD.test(t[0]) ? null : (t[3] ? t[2] = t[4] || t[5] || "" : n && W.test(n) && (e = a(n, !0)) && (e = n.indexOf(")", n.length - e) - n.length) && (t[0] = t[0].slice(0, e),
                        t[2] = n.slice(0, e)),
                        t.slice(0, 3))
                    }
                },
                filter: {
                    TAG: function(t) {
                        var e = t.replace(tt, et).toLowerCase();
                        return "*" === t ? function() {
                            return !0
                        }
                        : function(t) {
                            return t.nodeName && t.nodeName.toLowerCase() === e
                        }
                    },
                    CLASS: function(t) {
                        var e = E[t + " "];
                        return e || (e = new RegExp("(^|" + N + ")" + t + "(" + N + "|$)")) && E(t, (function(t) {
                            return e.test("string" == typeof t.className && t.className || void 0 !== t.getAttribute && t.getAttribute("class") || "")
                        }
                        ))
                    },
                    ATTR: function(t, e, n) {
                        return function(i) {
                            var r = it.attr(i, t);
                            return null == r ? "!=" === e : !e || (r += "",
                            "=" === e ? r === n : "!=" === e ? r !== n : "^=" === e ? n && 0 === r.indexOf(n) : "*=" === e ? n && r.indexOf(n) > -1 : "$=" === e ? n && r.slice(-n.length) === n : "~=" === e ? (" " + r.replace(U, " ") + " ").indexOf(n) > -1 : "|=" === e && (r === n || r.slice(0, n.length + 1) === n + "-"))
                        }
                    },
                    CHILD: function(t, e, n, i, r) {
                        var o = "nth" !== t.slice(0, 3)
                          , a = "last" !== t.slice(-4)
                          , s = "of-type" === e;
                        return 1 === i && 0 === r ? function(t) {
                            return !!t.parentNode
                        }
                        : function(e, n, c) {
                            var l, u, d, p, h, f, m = o !== a ? "nextSibling" : "previousSibling", g = e.parentNode, v = s && e.nodeName.toLowerCase(), y = !c && !s, b = !1;
                            if (g) {
                                if (o) {
                                    for (; m; ) {
                                        for (p = e; p = p[m]; )
                                            if (s ? p.nodeName.toLowerCase() === v : 1 === p.nodeType)
                                                return !1;
                                        f = m = "only" === t && !f && "nextSibling"
                                    }
                                    return !0
                                }
                                if (f = [a ? g.firstChild : g.lastChild],
                                a && y) {
                                    for (b = (h = (l = (u = (d = (p = g)[w] || (p[w] = {}))[p.uniqueID] || (d[p.uniqueID] = {}))[t] || [])[0] === x && l[1]) && l[2],
                                    p = h && g.childNodes[h]; p = ++h && p && p[m] || (b = h = 0) || f.pop(); )
                                        if (1 === p.nodeType && ++b && p === e) {
                                            u[t] = [x, h, b];
                                            break
                                        }
                                } else if (y && (b = h = (l = (u = (d = (p = e)[w] || (p[w] = {}))[p.uniqueID] || (d[p.uniqueID] = {}))[t] || [])[0] === x && l[1]),
                                !1 === b)
                                    for (; (p = ++h && p && p[m] || (b = h = 0) || f.pop()) && ((s ? p.nodeName.toLowerCase() !== v : 1 !== p.nodeType) || !++b || (y && ((u = (d = p[w] || (p[w] = {}))[p.uniqueID] || (d[p.uniqueID] = {}))[t] = [x, b]),
                                    p !== e)); )
                                        ;
                                return (b -= r) === i || b % i == 0 && b / i >= 0
                            }
                        }
                    },
                    PSEUDO: function(t, e) {
                        var n, r = i.pseudos[t] || i.setFilters[t.toLowerCase()] || it.error("unsupported pseudo: " + t);
                        return r[w] ? r(e) : r.length > 1 ? (n = [t, t, "", e],
                        i.setFilters.hasOwnProperty(t.toLowerCase()) ? ot((function(t, n) {
                            for (var i, o = r(t, e), a = o.length; a--; )
                                t[i = R(t, o[a])] = !(n[i] = o[a])
                        }
                        )) : function(t) {
                            return r(t, 0, n)
                        }
                        ) : r
                    }
                },
                pseudos: {
                    not: ot((function(t) {
                        var e = []
                          , n = []
                          , i = s(t.replace(B, "$1"));
                        return i[w] ? ot((function(t, e, n, r) {
                            for (var o, a = i(t, null, r, []), s = t.length; s--; )
                                (o = a[s]) && (t[s] = !(e[s] = o))
                        }
                        )) : function(t, r, o) {
                            return e[0] = t,
                            i(e, null, o, n),
                            e[0] = null,
                            !n.pop()
                        }
                    }
                    )),
                    has: ot((function(t) {
                        return function(e) {
                            return it(t, e).length > 0
                        }
                    }
                    )),
                    contains: ot((function(t) {
                        return t = t.replace(tt, et),
                        function(e) {
                            return (e.textContent || e.innerText || r(e)).indexOf(t) > -1
                        }
                    }
                    )),
                    lang: ot((function(t) {
                        return q.test(t || "") || it.error("unsupported lang: " + t),
                        t = t.replace(tt, et).toLowerCase(),
                        function(e) {
                            var n;
                            do {
                                if (n = m ? e.lang : e.getAttribute("xml:lang") || e.getAttribute("lang"))
                                    return (n = n.toLowerCase()) === t || 0 === n.indexOf(t + "-")
                            } while ((e = e.parentNode) && 1 === e.nodeType);
                            return !1
                        }
                    }
                    )),
                    target: function(e) {
                        var n = t.location && t.location.hash;
                        return n && n.slice(1) === e.id
                    },
                    root: function(t) {
                        return t === f
                    },
                    focus: function(t) {
                        return t === h.activeElement && (!h.hasFocus || h.hasFocus()) && !!(t.type || t.href || ~t.tabIndex)
                    },
                    enabled: function(t) {
                        return !1 === t.disabled
                    },
                    disabled: function(t) {
                        return !0 === t.disabled
                    },
                    checked: function(t) {
                        var e = t.nodeName.toLowerCase();
                        return "input" === e && !!t.checked || "option" === e && !!t.selected
                    },
                    selected: function(t) {
                        return t.parentNode && t.parentNode.selectedIndex,
                        !0 === t.selected
                    },
                    empty: function(t) {
                        for (t = t.firstChild; t; t = t.nextSibling)
                            if (t.nodeType < 6)
                                return !1;
                        return !0
                    },
                    parent: function(t) {
                        return !i.pseudos.empty(t)
                    },
                    header: function(t) {
                        return K.test(t.nodeName)
                    },
                    input: function(t) {
                        return Y.test(t.nodeName)
                    },
                    button: function(t) {
                        var e = t.nodeName.toLowerCase();
                        return "input" === e && "button" === t.type || "button" === e
                    },
                    text: function(t) {
                        var e;
                        return "input" === t.nodeName.toLowerCase() && "text" === t.type && (null == (e = t.getAttribute("type")) || "text" === e.toLowerCase())
                    },
                    first: dt((function() {
                        return [0]
                    }
                    )),
                    last: dt((function(t, e) {
                        return [e - 1]
                    }
                    )),
                    eq: dt((function(t, e, n) {
                        return [n < 0 ? n + e : n]
                    }
                    )),
                    even: dt((function(t, e) {
                        for (var n = 0; n < e; n += 2)
                            t.push(n);
                        return t
                    }
                    )),
                    odd: dt((function(t, e) {
                        for (var n = 1; n < e; n += 2)
                            t.push(n);
                        return t
                    }
                    )),
                    lt: dt((function(t, e, n) {
                        for (var i = n < 0 ? n + e : n; --i >= 0; )
                            t.push(i);
                        return t
                    }
                    )),
                    gt: dt((function(t, e, n) {
                        for (var i = n < 0 ? n + e : n; ++i < e; )
                            t.push(i);
                        return t
                    }
                    ))
                }
            }).pseudos.nth = i.pseudos.eq,
            {
                radio: !0,
                checkbox: !0,
                file: !0,
                password: !0,
                image: !0
            })
                i.pseudos[e] = lt(e);
            for (e in {
                submit: !0,
                reset: !0
            })
                i.pseudos[e] = ut(e);
            function ht() {}
            function ft(t) {
                for (var e = 0, n = t.length, i = ""; e < n; e++)
                    i += t[e].value;
                return i
            }
            function mt(t, e, n) {
                var i = e.dir
                  , r = n && "parentNode" === i
                  , o = M++;
                return e.first ? function(e, n, o) {
                    for (; e = e[i]; )
                        if (1 === e.nodeType || r)
                            return t(e, n, o)
                }
                : function(e, n, a) {
                    var s, c, l, u = [x, o];
                    if (a) {
                        for (; e = e[i]; )
                            if ((1 === e.nodeType || r) && t(e, n, a))
                                return !0
                    } else
                        for (; e = e[i]; )
                            if (1 === e.nodeType || r) {
                                if ((s = (c = (l = e[w] || (e[w] = {}))[e.uniqueID] || (l[e.uniqueID] = {}))[i]) && s[0] === x && s[1] === o)
                                    return u[2] = s[2];
                                if (c[i] = u,
                                u[2] = t(e, n, a))
                                    return !0
                            }
                }
            }
            function gt(t) {
                return t.length > 1 ? function(e, n, i) {
                    for (var r = t.length; r--; )
                        if (!t[r](e, n, i))
                            return !1;
                    return !0
                }
                : t[0]
            }
            function vt(t, e, n, i, r) {
                for (var o, a = [], s = 0, c = t.length, l = null != e; s < c; s++)
                    (o = t[s]) && (n && !n(o, i, r) || (a.push(o),
                    l && e.push(s)));
                return a
            }
            function yt(t, e, n, i, r, o) {
                return i && !i[w] && (i = yt(i)),
                r && !r[w] && (r = yt(r, o)),
                ot((function(o, a, s, c) {
                    var l, u, d, p = [], h = [], f = a.length, m = o || function(t, e, n) {
                        for (var i = 0, r = e.length; i < r; i++)
                            it(t, e[i], n);
                        return n
                    }(e || "*", s.nodeType ? [s] : s, []), g = !t || !o && e ? m : vt(m, p, t, s, c), v = n ? r || (o ? t : f || i) ? [] : a : g;
                    if (n && n(g, v, s, c),
                    i)
                        for (l = vt(v, h),
                        i(l, [], s, c),
                        u = l.length; u--; )
                            (d = l[u]) && (v[h[u]] = !(g[h[u]] = d));
                    if (o) {
                        if (r || t) {
                            if (r) {
                                for (l = [],
                                u = v.length; u--; )
                                    (d = v[u]) && l.push(g[u] = d);
                                r(null, v = [], l, c)
                            }
                            for (u = v.length; u--; )
                                (d = v[u]) && (l = r ? R(o, d) : p[u]) > -1 && (o[l] = !(a[l] = d))
                        }
                    } else
                        v = vt(v === a ? v.splice(f, v.length) : v),
                        r ? r(null, a, v, c) : k.apply(a, v)
                }
                ))
            }
            function bt(t) {
                for (var e, n, r, o = t.length, a = i.relative[t[0].type], s = a || i.relative[" "], c = a ? 1 : 0, u = mt((function(t) {
                    return t === e
                }
                ), s, !0), d = mt((function(t) {
                    return R(e, t) > -1
                }
                ), s, !0), p = [function(t, n, i) {
                    var r = !a && (i || n !== l) || ((e = n).nodeType ? u(t, n, i) : d(t, n, i));
                    return e = null,
                    r
                }
                ]; c < o; c++)
                    if (n = i.relative[t[c].type])
                        p = [mt(gt(p), n)];
                    else {
                        if ((n = i.filter[t[c].type].apply(null, t[c].matches))[w]) {
                            for (r = ++c; r < o && !i.relative[t[r].type]; r++)
                                ;
                            return yt(c > 1 && gt(p), c > 1 && ft(t.slice(0, c - 1).concat({
                                value: " " === t[c - 2].type ? "*" : ""
                            })).replace(B, "$1"), n, c < r && bt(t.slice(c, r)), r < o && bt(t = t.slice(r)), r < o && ft(t))
                        }
                        p.push(n)
                    }
                return gt(p)
            }
            return ht.prototype = i.filters = i.pseudos,
            i.setFilters = new ht,
            a = it.tokenize = function(t, e) {
                var n, r, o, a, s, c, l, u = C[t + " "];
                if (u)
                    return e ? 0 : u.slice(0);
                for (s = t,
                c = [],
                l = i.preFilter; s; ) {
                    for (a in n && !(r = z.exec(s)) || (r && (s = s.slice(r[0].length) || s),
                    c.push(o = [])),
                    n = !1,
                    (r = G.exec(s)) && (n = r.shift(),
                    o.push({
                        value: n,
                        type: r[0].replace(B, " ")
                    }),
                    s = s.slice(n.length)),
                    i.filter)
                        !(r = X[a].exec(s)) || l[a] && !(r = l[a](r)) || (n = r.shift(),
                        o.push({
                            value: n,
                            type: a,
                            matches: r
                        }),
                        s = s.slice(n.length));
                    if (!n)
                        break
                }
                return e ? s.length : s ? it.error(t) : C(t, c).slice(0)
            }
            ,
            s = it.compile = function(t, e) {
                var n, r = [], o = [], s = A[t + " "];
                if (!s) {
                    for (e || (e = a(t)),
                    n = e.length; n--; )
                        (s = bt(e[n]))[w] ? r.push(s) : o.push(s);
                    (s = A(t, function(t, e) {
                        var n = e.length > 0
                          , r = t.length > 0
                          , o = function(o, a, s, c, u) {
                            var d, f, g, v = 0, y = "0", b = o && [], w = [], S = l, M = o || r && i.find.TAG("*", u), E = x += null == S ? 1 : Math.random() || .1, C = M.length;
                            for (u && (l = a === h || a || u); y !== C && null != (d = M[y]); y++) {
                                if (r && d) {
                                    for (f = 0,
                                    a || d.ownerDocument === h || (p(d),
                                    s = !m); g = t[f++]; )
                                        if (g(d, a || h, s)) {
                                            c.push(d);
                                            break
                                        }
                                    u && (x = E)
                                }
                                n && ((d = !g && d) && v--,
                                o && b.push(d))
                            }
                            if (v += y,
                            n && y !== v) {
                                for (f = 0; g = e[f++]; )
                                    g(b, w, a, s);
                                if (o) {
                                    if (v > 0)
                                        for (; y--; )
                                            b[y] || w[y] || (w[y] = P.call(c));
                                    w = vt(w)
                                }
                                k.apply(c, w),
                                u && !o && w.length > 0 && v + e.length > 1 && it.uniqueSort(c)
                            }
                            return u && (x = E,
                            l = S),
                            b
                        };
                        return n ? ot(o) : o
                    }(o, r))).selector = t
                }
                return s
            }
            ,
            c = it.select = function(t, e, r, o) {
                var c, l, u, d, p, h = "function" == typeof t && t, f = !o && a(t = h.selector || t);
                if (r = r || [],
                1 === f.length) {
                    if ((l = f[0] = f[0].slice(0)).length > 2 && "ID" === (u = l[0]).type && n.getById && 9 === e.nodeType && m && i.relative[l[1].type]) {
                        if (!(e = (i.find.ID(u.matches[0].replace(tt, et), e) || [])[0]))
                            return r;
                        h && (e = e.parentNode),
                        t = t.slice(l.shift().value.length)
                    }
                    for (c = X.needsContext.test(t) ? 0 : l.length; c-- && (u = l[c],
                    !i.relative[d = u.type]); )
                        if ((p = i.find[d]) && (o = p(u.matches[0].replace(tt, et), Q.test(l[0].type) && pt(e.parentNode) || e))) {
                            if (l.splice(c, 1),
                            !(t = o.length && ft(l)))
                                return k.apply(r, o),
                                r;
                            break
                        }
                }
                return (h || s(t, f))(o, e, !m, r, !e || Q.test(t) && pt(e.parentNode) || e),
                r
            }
            ,
            n.sortStable = w.split("").sort(T).join("") === w,
            n.detectDuplicates = !!d,
            p(),
            n.sortDetached = at((function(t) {
                return 1 & t.compareDocumentPosition(h.createElement("div"))
            }
            )),
            at((function(t) {
                return t.innerHTML = "<a href='#'></a>",
                "#" === t.firstChild.getAttribute("href")
            }
            )) || st("type|href|height|width", (function(t, e, n) {
                if (!n)
                    return t.getAttribute(e, "type" === e.toLowerCase() ? 1 : 2)
            }
            )),
            n.attributes && at((function(t) {
                return t.innerHTML = "<input/>",
                t.firstChild.setAttribute("value", ""),
                "" === t.firstChild.getAttribute("value")
            }
            )) || st("value", (function(t, e, n) {
                if (!n && "input" === t.nodeName.toLowerCase())
                    return t.defaultValue
            }
            )),
            at((function(t) {
                return null == t.getAttribute("disabled")
            }
            )) || st(L, (function(t, e, n) {
                var i;
                if (!n)
                    return !0 === t[e] ? e.toLowerCase() : (i = t.getAttributeNode(e)) && i.specified ? i.value : null
            }
            )),
            it
        }(n);
        m.find = S,
        m.expr = S.selectors,
        m.expr[":"] = m.expr.pseudos,
        m.uniqueSort = m.unique = S.uniqueSort,
        m.text = S.getText,
        m.isXMLDoc = S.isXML,
        m.contains = S.contains;
        var x = function(t, e, n) {
            for (var i = [], r = void 0 !== n; (t = t[e]) && 9 !== t.nodeType; )
                if (1 === t.nodeType) {
                    if (r && m(t).is(n))
                        break;
                    i.push(t)
                }
            return i
        }
          , M = function(t, e) {
            for (var n = []; t; t = t.nextSibling)
                1 === t.nodeType && t !== e && n.push(t);
            return n
        }
          , E = m.expr.match.needsContext
          , C = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/
          , A = /^.[^:#\[\.,]*$/;
        function T(t, e, n) {
            if (m.isFunction(e))
                return m.grep(t, (function(t, i) {
                    return !!e.call(t, i, t) !== n
                }
                ));
            if (e.nodeType)
                return m.grep(t, (function(t) {
                    return t === e !== n
                }
                ));
            if ("string" == typeof e) {
                if (A.test(e))
                    return m.filter(e, t, n);
                e = m.filter(e, t)
            }
            return m.grep(t, (function(t) {
                return u.call(e, t) > -1 !== n
            }
            ))
        }
        m.filter = function(t, e, n) {
            var i = e[0];
            return n && (t = ":not(" + t + ")"),
            1 === e.length && 1 === i.nodeType ? m.find.matchesSelector(i, t) ? [i] : [] : m.find.matches(t, m.grep(e, (function(t) {
                return 1 === t.nodeType
            }
            )))
        }
        ,
        m.fn.extend({
            find: function(t) {
                var e, n = this.length, i = [], r = this;
                if ("string" != typeof t)
                    return this.pushStack(m(t).filter((function() {
                        for (e = 0; e < n; e++)
                            if (m.contains(r[e], this))
                                return !0
                    }
                    )));
                for (e = 0; e < n; e++)
                    m.find(t, r[e], i);
                return (i = this.pushStack(n > 1 ? m.unique(i) : i)).selector = this.selector ? this.selector + " " + t : t,
                i
            },
            filter: function(t) {
                return this.pushStack(T(this, t || [], !1))
            },
            not: function(t) {
                return this.pushStack(T(this, t || [], !0))
            },
            is: function(t) {
                return !!T(this, "string" == typeof t && E.test(t) ? m(t) : t || [], !1).length
            }
        });
        var O, _ = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/;
        (m.fn.init = function(t, e, n) {
            var i, r;
            if (!t)
                return this;
            if (n = n || O,
            "string" == typeof t) {
                if (!(i = "<" === t[0] && ">" === t[t.length - 1] && t.length >= 3 ? [null, t, null] : _.exec(t)) || !i[1] && e)
                    return !e || e.jquery ? (e || n).find(t) : this.constructor(e).find(t);
                if (i[1]) {
                    if (e = e instanceof m ? e[0] : e,
                    m.merge(this, m.parseHTML(i[1], e && e.nodeType ? e.ownerDocument || e : a, !0)),
                    C.test(i[1]) && m.isPlainObject(e))
                        for (i in e)
                            m.isFunction(this[i]) ? this[i](e[i]) : this.attr(i, e[i]);
                    return this
                }
                return (r = a.getElementById(i[2])) && r.parentNode && (this.length = 1,
                this[0] = r),
                this.context = a,
                this.selector = t,
                this
            }
            return t.nodeType ? (this.context = this[0] = t,
            this.length = 1,
            this) : m.isFunction(t) ? void 0 !== n.ready ? n.ready(t) : t(m) : (void 0 !== t.selector && (this.selector = t.selector,
            this.context = t.context),
            m.makeArray(t, this))
        }
        ).prototype = m.fn,
        O = m(a);
        var P = /^(?:parents|prev(?:Until|All))/
          , I = {
            children: !0,
            contents: !0,
            next: !0,
            prev: !0
        };
        function k(t, e) {
            for (; (t = t[e]) && 1 !== t.nodeType; )
                ;
            return t
        }
        m.fn.extend({
            has: function(t) {
                var e = m(t, this)
                  , n = e.length;
                return this.filter((function() {
                    for (var t = 0; t < n; t++)
                        if (m.contains(this, e[t]))
                            return !0
                }
                ))
            },
            closest: function(t, e) {
                for (var n, i = 0, r = this.length, o = [], a = E.test(t) || "string" != typeof t ? m(t, e || this.context) : 0; i < r; i++)
                    for (n = this[i]; n && n !== e; n = n.parentNode)
                        if (n.nodeType < 11 && (a ? a.index(n) > -1 : 1 === n.nodeType && m.find.matchesSelector(n, t))) {
                            o.push(n);
                            break
                        }
                return this.pushStack(o.length > 1 ? m.uniqueSort(o) : o)
            },
            index: function(t) {
                return t ? "string" == typeof t ? u.call(m(t), this[0]) : u.call(this, t.jquery ? t[0] : t) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
            },
            add: function(t, e) {
                return this.pushStack(m.uniqueSort(m.merge(this.get(), m(t, e))))
            },
            addBack: function(t) {
                return this.add(null == t ? this.prevObject : this.prevObject.filter(t))
            }
        }),
        m.each({
            parent: function(t) {
                var e = t.parentNode;
                return e && 11 !== e.nodeType ? e : null
            },
            parents: function(t) {
                return x(t, "parentNode")
            },
            parentsUntil: function(t, e, n) {
                return x(t, "parentNode", n)
            },
            next: function(t) {
                return k(t, "nextSibling")
            },
            prev: function(t) {
                return k(t, "previousSibling")
            },
            nextAll: function(t) {
                return x(t, "nextSibling")
            },
            prevAll: function(t) {
                return x(t, "previousSibling")
            },
            nextUntil: function(t, e, n) {
                return x(t, "nextSibling", n)
            },
            prevUntil: function(t, e, n) {
                return x(t, "previousSibling", n)
            },
            siblings: function(t) {
                return M((t.parentNode || {}).firstChild, t)
            },
            children: function(t) {
                return M(t.firstChild)
            },
            contents: function(t) {
                return t.contentDocument || m.merge([], t.childNodes)
            }
        }, (function(t, e) {
            m.fn[t] = function(n, i) {
                var r = m.map(this, e, n);
                return "Until" !== t.slice(-5) && (i = n),
                i && "string" == typeof i && (r = m.filter(i, r)),
                this.length > 1 && (I[t] || m.uniqueSort(r),
                P.test(t) && r.reverse()),
                this.pushStack(r)
            }
        }
        ));
        var D, R = /\S+/g;
        function L() {
            a.removeEventListener("DOMContentLoaded", L),
            n.removeEventListener("load", L),
            m.ready()
        }
        m.Callbacks = function(t) {
            t = "string" == typeof t ? function(t) {
                var e = {};
                return m.each(t.match(R) || [], (function(t, n) {
                    e[n] = !0
                }
                )),
                e
            }(t) : m.extend({}, t);
            var e, n, i, r, o = [], a = [], s = -1, c = function() {
                for (r = t.once,
                i = e = !0; a.length; s = -1)
                    for (n = a.shift(); ++s < o.length; )
                        !1 === o[s].apply(n[0], n[1]) && t.stopOnFalse && (s = o.length,
                        n = !1);
                t.memory || (n = !1),
                e = !1,
                r && (o = n ? [] : "")
            }, l = {
                add: function() {
                    return o && (n && !e && (s = o.length - 1,
                    a.push(n)),
                    function e(n) {
                        m.each(n, (function(n, i) {
                            m.isFunction(i) ? t.unique && l.has(i) || o.push(i) : i && i.length && "string" !== m.type(i) && e(i)
                        }
                        ))
                    }(arguments),
                    n && !e && c()),
                    this
                },
                remove: function() {
                    return m.each(arguments, (function(t, e) {
                        for (var n; (n = m.inArray(e, o, n)) > -1; )
                            o.splice(n, 1),
                            n <= s && s--
                    }
                    )),
                    this
                },
                has: function(t) {
                    return t ? m.inArray(t, o) > -1 : o.length > 0
                },
                empty: function() {
                    return o && (o = []),
                    this
                },
                disable: function() {
                    return r = a = [],
                    o = n = "",
                    this
                },
                disabled: function() {
                    return !o
                },
                lock: function() {
                    return r = a = [],
                    n || (o = n = ""),
                    this
                },
                locked: function() {
                    return !!r
                },
                fireWith: function(t, n) {
                    return r || (n = [t, (n = n || []).slice ? n.slice() : n],
                    a.push(n),
                    e || c()),
                    this
                },
                fire: function() {
                    return l.fireWith(this, arguments),
                    this
                },
                fired: function() {
                    return !!i
                }
            };
            return l
        }
        ,
        m.extend({
            Deferred: function(t) {
                var e = [["resolve", "done", m.Callbacks("once memory"), "resolved"], ["reject", "fail", m.Callbacks("once memory"), "rejected"], ["notify", "progress", m.Callbacks("memory")]]
                  , n = "pending"
                  , i = {
                    state: function() {
                        return n
                    },
                    always: function() {
                        return r.done(arguments).fail(arguments),
                        this
                    },
                    then: function() {
                        var t = arguments;
                        return m.Deferred((function(n) {
                            m.each(e, (function(e, o) {
                                var a = m.isFunction(t[e]) && t[e];
                                r[o[1]]((function() {
                                    var t = a && a.apply(this, arguments);
                                    t && m.isFunction(t.promise) ? t.promise().progress(n.notify).done(n.resolve).fail(n.reject) : n[o[0] + "With"](this === i ? n.promise() : this, a ? [t] : arguments)
                                }
                                ))
                            }
                            )),
                            t = null
                        }
                        )).promise()
                    },
                    promise: function(t) {
                        return null != t ? m.extend(t, i) : i
                    }
                }
                  , r = {};
                return i.pipe = i.then,
                m.each(e, (function(t, o) {
                    var a = o[2]
                      , s = o[3];
                    i[o[1]] = a.add,
                    s && a.add((function() {
                        n = s
                    }
                    ), e[1 ^ t][2].disable, e[2][2].lock),
                    r[o[0]] = function() {
                        return r[o[0] + "With"](this === r ? i : this, arguments),
                        this
                    }
                    ,
                    r[o[0] + "With"] = a.fireWith
                }
                )),
                i.promise(r),
                t && t.call(r, r),
                r
            },
            when: function(t) {
                var e, n, i, r = 0, o = s.call(arguments), a = o.length, c = 1 !== a || t && m.isFunction(t.promise) ? a : 0, l = 1 === c ? t : m.Deferred(), u = function(t, n, i) {
                    return function(r) {
                        n[t] = this,
                        i[t] = arguments.length > 1 ? s.call(arguments) : r,
                        i === e ? l.notifyWith(n, i) : --c || l.resolveWith(n, i)
                    }
                };
                if (a > 1)
                    for (e = new Array(a),
                    n = new Array(a),
                    i = new Array(a); r < a; r++)
                        o[r] && m.isFunction(o[r].promise) ? o[r].promise().progress(u(r, n, e)).done(u(r, i, o)).fail(l.reject) : --c;
                return c || l.resolveWith(i, o),
                l.promise()
            }
        }),
        m.fn.ready = function(t) {
            return m.ready.promise().done(t),
            this
        }
        ,
        m.extend({
            isReady: !1,
            readyWait: 1,
            holdReady: function(t) {
                t ? m.readyWait++ : m.ready(!0)
            },
            ready: function(t) {
                (!0 === t ? --m.readyWait : m.isReady) || (m.isReady = !0,
                !0 !== t && --m.readyWait > 0 || (D.resolveWith(a, [m]),
                m.fn.triggerHandler && (m(a).triggerHandler("ready"),
                m(a).off("ready"))))
            }
        }),
        m.ready.promise = function(t) {
            return D || (D = m.Deferred(),
            "complete" === a.readyState || "loading" !== a.readyState && !a.documentElement.doScroll ? n.setTimeout(m.ready) : (a.addEventListener("DOMContentLoaded", L),
            n.addEventListener("load", L))),
            D.promise(t)
        }
        ,
        m.ready.promise();
        var N = function(t, e, n, i, r, o, a) {
            var s = 0
              , c = t.length
              , l = null == n;
            if ("object" === m.type(n))
                for (s in r = !0,
                n)
                    N(t, e, s, n[s], !0, o, a);
            else if (void 0 !== i && (r = !0,
            m.isFunction(i) || (a = !0),
            l && (a ? (e.call(t, i),
            e = null) : (l = e,
            e = function(t, e, n) {
                return l.call(m(t), n)
            }
            )),
            e))
                for (; s < c; s++)
                    e(t[s], n, a ? i : i.call(t[s], s, e(t[s], n)));
            return r ? t : l ? e.call(t) : c ? e(t[0], n) : o
        }
          , j = function(t) {
            return 1 === t.nodeType || 9 === t.nodeType || !+t.nodeType
        };
        function V() {
            this.expando = m.expando + V.uid++
        }
        V.uid = 1,
        V.prototype = {
            register: function(t, e) {
                var n = e || {};
                return t.nodeType ? t[this.expando] = n : Object.defineProperty(t, this.expando, {
                    value: n,
                    writable: !0,
                    configurable: !0
                }),
                t[this.expando]
            },
            cache: function(t) {
                if (!j(t))
                    return {};
                var e = t[this.expando];
                return e || (e = {},
                j(t) && (t.nodeType ? t[this.expando] = e : Object.defineProperty(t, this.expando, {
                    value: e,
                    configurable: !0
                }))),
                e
            },
            set: function(t, e, n) {
                var i, r = this.cache(t);
                if ("string" == typeof e)
                    r[e] = n;
                else
                    for (i in e)
                        r[i] = e[i];
                return r
            },
            get: function(t, e) {
                return void 0 === e ? this.cache(t) : t[this.expando] && t[this.expando][e]
            },
            access: function(t, e, n) {
                var i;
                return void 0 === e || e && "string" == typeof e && void 0 === n ? void 0 !== (i = this.get(t, e)) ? i : this.get(t, m.camelCase(e)) : (this.set(t, e, n),
                void 0 !== n ? n : e)
            },
            remove: function(t, e) {
                var n, i, r, o = t[this.expando];
                if (void 0 !== o) {
                    if (void 0 === e)
                        this.register(t);
                    else {
                        m.isArray(e) ? i = e.concat(e.map(m.camelCase)) : (r = m.camelCase(e),
                        i = e in o ? [e, r] : (i = r)in o ? [i] : i.match(R) || []),
                        n = i.length;
                        for (; n--; )
                            delete o[i[n]]
                    }
                    (void 0 === e || m.isEmptyObject(o)) && (t.nodeType ? t[this.expando] = void 0 : delete t[this.expando])
                }
            },
            hasData: function(t) {
                var e = t[this.expando];
                return void 0 !== e && !m.isEmptyObject(e)
            }
        };
        var F = new V
          , U = new V
          , B = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/
          , z = /[A-Z]/g;
        function G(t, e, n) {
            var i;
            if (void 0 === n && 1 === t.nodeType)
                if (i = "data-" + e.replace(z, "-$&").toLowerCase(),
                "string" == typeof (n = t.getAttribute(i))) {
                    try {
                        n = "true" === n || "false" !== n && ("null" === n ? null : +n + "" === n ? +n : B.test(n) ? m.parseJSON(n) : n)
                    } catch (t) {}
                    U.set(t, e, n)
                } else
                    n = void 0;
            return n
        }
        m.extend({
            hasData: function(t) {
                return U.hasData(t) || F.hasData(t)
            },
            data: function(t, e, n) {
                return U.access(t, e, n)
            },
            removeData: function(t, e) {
                U.remove(t, e)
            },
            _data: function(t, e, n) {
                return F.access(t, e, n)
            },
            _removeData: function(t, e) {
                F.remove(t, e)
            }
        }),
        m.fn.extend({
            data: function(t, e) {
                var n, i, r, o = this[0], a = o && o.attributes;
                if (void 0 === t) {
                    if (this.length && (r = U.get(o),
                    1 === o.nodeType && !F.get(o, "hasDataAttrs"))) {
                        for (n = a.length; n--; )
                            a[n] && 0 === (i = a[n].name).indexOf("data-") && (i = m.camelCase(i.slice(5)),
                            G(o, i, r[i]));
                        F.set(o, "hasDataAttrs", !0)
                    }
                    return r
                }
                return "object" == typeof t ? this.each((function() {
                    U.set(this, t)
                }
                )) : N(this, (function(e) {
                    var n, i;
                    if (o && void 0 === e)
                        return void 0 !== (n = U.get(o, t) || U.get(o, t.replace(z, "-$&").toLowerCase())) ? n : (i = m.camelCase(t),
                        void 0 !== (n = U.get(o, i)) || void 0 !== (n = G(o, i, void 0)) ? n : void 0);
                    i = m.camelCase(t),
                    this.each((function() {
                        var n = U.get(this, i);
                        U.set(this, i, e),
                        t.indexOf("-") > -1 && void 0 !== n && U.set(this, t, e)
                    }
                    ))
                }
                ), null, e, arguments.length > 1, null, !0)
            },
            removeData: function(t) {
                return this.each((function() {
                    U.remove(this, t)
                }
                ))
            }
        }),
        m.extend({
            queue: function(t, e, n) {
                var i;
                if (t)
                    return e = (e || "fx") + "queue",
                    i = F.get(t, e),
                    n && (!i || m.isArray(n) ? i = F.access(t, e, m.makeArray(n)) : i.push(n)),
                    i || []
            },
            dequeue: function(t, e) {
                e = e || "fx";
                var n = m.queue(t, e)
                  , i = n.length
                  , r = n.shift()
                  , o = m._queueHooks(t, e);
                "inprogress" === r && (r = n.shift(),
                i--),
                r && ("fx" === e && n.unshift("inprogress"),
                delete o.stop,
                r.call(t, (function() {
                    m.dequeue(t, e)
                }
                ), o)),
                !i && o && o.empty.fire()
            },
            _queueHooks: function(t, e) {
                var n = e + "queueHooks";
                return F.get(t, n) || F.access(t, n, {
                    empty: m.Callbacks("once memory").add((function() {
                        F.remove(t, [e + "queue", n])
                    }
                    ))
                })
            }
        }),
        m.fn.extend({
            queue: function(t, e) {
                var n = 2;
                return "string" != typeof t && (e = t,
                t = "fx",
                n--),
                arguments.length < n ? m.queue(this[0], t) : void 0 === e ? this : this.each((function() {
                    var n = m.queue(this, t, e);
                    m._queueHooks(this, t),
                    "fx" === t && "inprogress" !== n[0] && m.dequeue(this, t)
                }
                ))
            },
            dequeue: function(t) {
                return this.each((function() {
                    m.dequeue(this, t)
                }
                ))
            },
            clearQueue: function(t) {
                return this.queue(t || "fx", [])
            },
            promise: function(t, e) {
                var n, i = 1, r = m.Deferred(), o = this, a = this.length, s = function() {
                    --i || r.resolveWith(o, [o])
                };
                for ("string" != typeof t && (e = t,
                t = void 0),
                t = t || "fx"; a--; )
                    (n = F.get(o[a], t + "queueHooks")) && n.empty && (i++,
                    n.empty.add(s));
                return s(),
                r.promise(e)
            }
        });
        var H = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source
          , W = new RegExp("^(?:([+-])=|)(" + H + ")([a-z%]*)$","i")
          , q = ["Top", "Right", "Bottom", "Left"]
          , X = function(t, e) {
            return t = e || t,
            "none" === m.css(t, "display") || !m.contains(t.ownerDocument, t)
        };
        function Y(t, e, n, i) {
            var r, o = 1, a = 20, s = i ? function() {
                return i.cur()
            }
            : function() {
                return m.css(t, e, "")
            }
            , c = s(), l = n && n[3] || (m.cssNumber[e] ? "" : "px"), u = (m.cssNumber[e] || "px" !== l && +c) && W.exec(m.css(t, e));
            if (u && u[3] !== l) {
                l = l || u[3],
                n = n || [],
                u = +c || 1;
                do {
                    u /= o = o || ".5",
                    m.style(t, e, u + l)
                } while (o !== (o = s() / c) && 1 !== o && --a)
            }
            return n && (u = +u || +c || 0,
            r = n[1] ? u + (n[1] + 1) * n[2] : +n[2],
            i && (i.unit = l,
            i.start = u,
            i.end = r)),
            r
        }
        var K = /^(?:checkbox|radio)$/i
          , Z = /<([\w:-]+)/
          , J = /^$|\/(?:java|ecma)script/i
          , Q = {
            option: [1, "<select multiple='multiple'>", "</select>"],
            thead: [1, "<table>", "</table>"],
            col: [2, "<table><colgroup>", "</colgroup></table>"],
            tr: [2, "<table><tbody>", "</tbody></table>"],
            td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
            _default: [0, "", ""]
        };
        function $(t, e) {
            var n = void 0 !== t.getElementsByTagName ? t.getElementsByTagName(e || "*") : void 0 !== t.querySelectorAll ? t.querySelectorAll(e || "*") : [];
            return void 0 === e || e && m.nodeName(t, e) ? m.merge([t], n) : n
        }
        function tt(t, e) {
            for (var n = 0, i = t.length; n < i; n++)
                F.set(t[n], "globalEval", !e || F.get(e[n], "globalEval"))
        }
        Q.optgroup = Q.option,
        Q.tbody = Q.tfoot = Q.colgroup = Q.caption = Q.thead,
        Q.th = Q.td;
        var et, nt, it = /<|&#?\w+;/;
        function rt(t, e, n, i, r) {
            for (var o, a, s, c, l, u, d = e.createDocumentFragment(), p = [], h = 0, f = t.length; h < f; h++)
                if ((o = t[h]) || 0 === o)
                    if ("object" === m.type(o))
                        m.merge(p, o.nodeType ? [o] : o);
                    else if (it.test(o)) {
                        for (a = a || d.appendChild(e.createElement("div")),
                        s = (Z.exec(o) || ["", ""])[1].toLowerCase(),
                        c = Q[s] || Q._default,
                        a.innerHTML = c[1] + m.htmlPrefilter(o) + c[2],
                        u = c[0]; u--; )
                            a = a.lastChild;
                        m.merge(p, a.childNodes),
                        (a = d.firstChild).textContent = ""
                    } else
                        p.push(e.createTextNode(o));
            for (d.textContent = "",
            h = 0; o = p[h++]; )
                if (i && m.inArray(o, i) > -1)
                    r && r.push(o);
                else if (l = m.contains(o.ownerDocument, o),
                a = $(d.appendChild(o), "script"),
                l && tt(a),
                n)
                    for (u = 0; o = a[u++]; )
                        J.test(o.type || "") && n.push(o);
            return d
        }
        et = a.createDocumentFragment().appendChild(a.createElement("div")),
        (nt = a.createElement("input")).setAttribute("type", "radio"),
        nt.setAttribute("checked", "checked"),
        nt.setAttribute("name", "t"),
        et.appendChild(nt),
        f.checkClone = et.cloneNode(!0).cloneNode(!0).lastChild.checked,
        et.innerHTML = "<textarea>x</textarea>",
        f.noCloneChecked = !!et.cloneNode(!0).lastChild.defaultValue;
        var ot = /^key/
          , at = /^(?:mouse|pointer|contextmenu|drag|drop)|click/
          , st = /^([^.]*)(?:\.(.+)|)/;
        function ct() {
            return !0
        }
        function lt() {
            return !1
        }
        function ut() {
            try {
                return a.activeElement
            } catch (t) {}
        }
        function dt(t, e, n, i, r, o) {
            var a, s;
            if ("object" == typeof e) {
                for (s in "string" != typeof n && (i = i || n,
                n = void 0),
                e)
                    dt(t, s, n, i, e[s], o);
                return t
            }
            if (null == i && null == r ? (r = n,
            i = n = void 0) : null == r && ("string" == typeof n ? (r = i,
            i = void 0) : (r = i,
            i = n,
            n = void 0)),
            !1 === r)
                r = lt;
            else if (!r)
                return t;
            return 1 === o && (a = r,
            (r = function(t) {
                return m().off(t),
                a.apply(this, arguments)
            }
            ).guid = a.guid || (a.guid = m.guid++)),
            t.each((function() {
                m.event.add(this, e, r, i, n)
            }
            ))
        }
        m.event = {
            global: {},
            add: function(t, e, n, i, r) {
                var o, a, s, c, l, u, d, p, h, f, g, v = F.get(t);
                if (v)
                    for (n.handler && (n = (o = n).handler,
                    r = o.selector),
                    n.guid || (n.guid = m.guid++),
                    (c = v.events) || (c = v.events = {}),
                    (a = v.handle) || (a = v.handle = function(e) {
                        return void 0 !== m && m.event.triggered !== e.type ? m.event.dispatch.apply(t, arguments) : void 0
                    }
                    ),
                    l = (e = (e || "").match(R) || [""]).length; l--; )
                        h = g = (s = st.exec(e[l]) || [])[1],
                        f = (s[2] || "").split(".").sort(),
                        h && (d = m.event.special[h] || {},
                        h = (r ? d.delegateType : d.bindType) || h,
                        d = m.event.special[h] || {},
                        u = m.extend({
                            type: h,
                            origType: g,
                            data: i,
                            handler: n,
                            guid: n.guid,
                            selector: r,
                            needsContext: r && m.expr.match.needsContext.test(r),
                            namespace: f.join(".")
                        }, o),
                        (p = c[h]) || ((p = c[h] = []).delegateCount = 0,
                        d.setup && !1 !== d.setup.call(t, i, f, a) || t.addEventListener && t.addEventListener(h, a)),
                        d.add && (d.add.call(t, u),
                        u.handler.guid || (u.handler.guid = n.guid)),
                        r ? p.splice(p.delegateCount++, 0, u) : p.push(u),
                        m.event.global[h] = !0)
            },
            remove: function(t, e, n, i, r) {
                var o, a, s, c, l, u, d, p, h, f, g, v = F.hasData(t) && F.get(t);
                if (v && (c = v.events)) {
                    for (l = (e = (e || "").match(R) || [""]).length; l--; )
                        if (h = g = (s = st.exec(e[l]) || [])[1],
                        f = (s[2] || "").split(".").sort(),
                        h) {
                            for (d = m.event.special[h] || {},
                            p = c[h = (i ? d.delegateType : d.bindType) || h] || [],
                            s = s[2] && new RegExp("(^|\\.)" + f.join("\\.(?:.*\\.|)") + "(\\.|$)"),
                            a = o = p.length; o--; )
                                u = p[o],
                                !r && g !== u.origType || n && n.guid !== u.guid || s && !s.test(u.namespace) || i && i !== u.selector && ("**" !== i || !u.selector) || (p.splice(o, 1),
                                u.selector && p.delegateCount--,
                                d.remove && d.remove.call(t, u));
                            a && !p.length && (d.teardown && !1 !== d.teardown.call(t, f, v.handle) || m.removeEvent(t, h, v.handle),
                            delete c[h])
                        } else
                            for (h in c)
                                m.event.remove(t, h + e[l], n, i, !0);
                    m.isEmptyObject(c) && F.remove(t, "handle events")
                }
            },
            dispatch: function(t) {
                t = m.event.fix(t);
                var e, n, i, r, o, a = [], c = s.call(arguments), l = (F.get(this, "events") || {})[t.type] || [], u = m.event.special[t.type] || {};
                if (c[0] = t,
                t.delegateTarget = this,
                !u.preDispatch || !1 !== u.preDispatch.call(this, t)) {
                    for (a = m.event.handlers.call(this, t, l),
                    e = 0; (r = a[e++]) && !t.isPropagationStopped(); )
                        for (t.currentTarget = r.elem,
                        n = 0; (o = r.handlers[n++]) && !t.isImmediatePropagationStopped(); )
                            t.rnamespace && !t.rnamespace.test(o.namespace) || (t.handleObj = o,
                            t.data = o.data,
                            void 0 !== (i = ((m.event.special[o.origType] || {}).handle || o.handler).apply(r.elem, c)) && !1 === (t.result = i) && (t.preventDefault(),
                            t.stopPropagation()));
                    return u.postDispatch && u.postDispatch.call(this, t),
                    t.result
                }
            },
            handlers: function(t, e) {
                var n, i, r, o, a = [], s = e.delegateCount, c = t.target;
                if (s && c.nodeType && ("click" !== t.type || isNaN(t.button) || t.button < 1))
                    for (; c !== this; c = c.parentNode || this)
                        if (1 === c.nodeType && (!0 !== c.disabled || "click" !== t.type)) {
                            for (i = [],
                            n = 0; n < s; n++)
                                void 0 === i[r = (o = e[n]).selector + " "] && (i[r] = o.needsContext ? m(r, this).index(c) > -1 : m.find(r, this, null, [c]).length),
                                i[r] && i.push(o);
                            i.length && a.push({
                                elem: c,
                                handlers: i
                            })
                        }
                return s < e.length && a.push({
                    elem: this,
                    handlers: e.slice(s)
                }),
                a
            },
            props: "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
            fixHooks: {},
            keyHooks: {
                props: "char charCode key keyCode".split(" "),
                filter: function(t, e) {
                    return null == t.which && (t.which = null != e.charCode ? e.charCode : e.keyCode),
                    t
                }
            },
            mouseHooks: {
                props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
                filter: function(t, e) {
                    var n, i, r, o = e.button;
                    return null == t.pageX && null != e.clientX && (i = (n = t.target.ownerDocument || a).documentElement,
                    r = n.body,
                    t.pageX = e.clientX + (i && i.scrollLeft || r && r.scrollLeft || 0) - (i && i.clientLeft || r && r.clientLeft || 0),
                    t.pageY = e.clientY + (i && i.scrollTop || r && r.scrollTop || 0) - (i && i.clientTop || r && r.clientTop || 0)),
                    t.which || void 0 === o || (t.which = 1 & o ? 1 : 2 & o ? 3 : 4 & o ? 2 : 0),
                    t
                }
            },
            fix: function(t) {
                if (t[m.expando])
                    return t;
                var e, n, i, r = t.type, o = t, s = this.fixHooks[r];
                for (s || (this.fixHooks[r] = s = at.test(r) ? this.mouseHooks : ot.test(r) ? this.keyHooks : {}),
                i = s.props ? this.props.concat(s.props) : this.props,
                t = new m.Event(o),
                e = i.length; e--; )
                    t[n = i[e]] = o[n];
                return t.target || (t.target = a),
                3 === t.target.nodeType && (t.target = t.target.parentNode),
                s.filter ? s.filter(t, o) : t
            },
            special: {
                load: {
                    noBubble: !0
                },
                focus: {
                    trigger: function() {
                        if (this !== ut() && this.focus)
                            return this.focus(),
                            !1
                    },
                    delegateType: "focusin"
                },
                blur: {
                    trigger: function() {
                        if (this === ut() && this.blur)
                            return this.blur(),
                            !1
                    },
                    delegateType: "focusout"
                },
                click: {
                    trigger: function() {
                        if ("checkbox" === this.type && this.click && m.nodeName(this, "input"))
                            return this.click(),
                            !1
                    },
                    _default: function(t) {
                        return m.nodeName(t.target, "a")
                    }
                },
                beforeunload: {
                    postDispatch: function(t) {
                        void 0 !== t.result && t.originalEvent && (t.originalEvent.returnValue = t.result)
                    }
                }
            }
        },
        m.removeEvent = function(t, e, n) {
            t.removeEventListener && t.removeEventListener(e, n)
        }
        ,
        m.Event = function(t, e) {
            if (!(this instanceof m.Event))
                return new m.Event(t,e);
            t && t.type ? (this.originalEvent = t,
            this.type = t.type,
            this.isDefaultPrevented = t.defaultPrevented || void 0 === t.defaultPrevented && !1 === t.returnValue ? ct : lt) : this.type = t,
            e && m.extend(this, e),
            this.timeStamp = t && t.timeStamp || m.now(),
            this[m.expando] = !0
        }
        ,
        m.Event.prototype = {
            constructor: m.Event,
            isDefaultPrevented: lt,
            isPropagationStopped: lt,
            isImmediatePropagationStopped: lt,
            isSimulated: !1,
            preventDefault: function() {
                var t = this.originalEvent;
                this.isDefaultPrevented = ct,
                t && !this.isSimulated && t.preventDefault()
            },
            stopPropagation: function() {
                var t = this.originalEvent;
                this.isPropagationStopped = ct,
                t && !this.isSimulated && t.stopPropagation()
            },
            stopImmediatePropagation: function() {
                var t = this.originalEvent;
                this.isImmediatePropagationStopped = ct,
                t && !this.isSimulated && t.stopImmediatePropagation(),
                this.stopPropagation()
            }
        },
        m.each({
            mouseenter: "mouseover",
            mouseleave: "mouseout",
            pointerenter: "pointerover",
            pointerleave: "pointerout"
        }, (function(t, e) {
            m.event.special[t] = {
                delegateType: e,
                bindType: e,
                handle: function(t) {
                    var n, i = this, r = t.relatedTarget, o = t.handleObj;
                    return r && (r === i || m.contains(i, r)) || (t.type = o.origType,
                    n = o.handler.apply(this, arguments),
                    t.type = e),
                    n
                }
            }
        }
        )),
        m.fn.extend({
            on: function(t, e, n, i) {
                return dt(this, t, e, n, i)
            },
            one: function(t, e, n, i) {
                return dt(this, t, e, n, i, 1)
            },
            off: function(t, e, n) {
                var i, r;
                if (t && t.preventDefault && t.handleObj)
                    return i = t.handleObj,
                    m(t.delegateTarget).off(i.namespace ? i.origType + "." + i.namespace : i.origType, i.selector, i.handler),
                    this;
                if ("object" == typeof t) {
                    for (r in t)
                        this.off(r, e, t[r]);
                    return this
                }
                return !1 !== e && "function" != typeof e || (n = e,
                e = void 0),
                !1 === n && (n = lt),
                this.each((function() {
                    m.event.remove(this, t, n, e)
                }
                ))
            }
        });
        var pt = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi
          , ht = /<script|<style|<link/i
          , ft = /checked\s*(?:[^=]|=\s*.checked.)/i
          , mt = /^true\/(.*)/
          , gt = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
        function vt(t, e) {
            return m.nodeName(t, "table") && m.nodeName(11 !== e.nodeType ? e : e.firstChild, "tr") ? t.getElementsByTagName("tbody")[0] || t.appendChild(t.ownerDocument.createElement("tbody")) : t
        }
        function yt(t) {
            return t.type = (null !== t.getAttribute("type")) + "/" + t.type,
            t
        }
        function bt(t) {
            var e = mt.exec(t.type);
            return e ? t.type = e[1] : t.removeAttribute("type"),
            t
        }
        function wt(t, e) {
            var n, i, r, o, a, s, c, l;
            if (1 === e.nodeType) {
                if (F.hasData(t) && (o = F.access(t),
                a = F.set(e, o),
                l = o.events))
                    for (r in delete a.handle,
                    a.events = {},
                    l)
                        for (n = 0,
                        i = l[r].length; n < i; n++)
                            m.event.add(e, r, l[r][n]);
                U.hasData(t) && (s = U.access(t),
                c = m.extend({}, s),
                U.set(e, c))
            }
        }
        function St(t, e, n, i) {
            e = c.apply([], e);
            var r, o, a, s, l, u, d = 0, p = t.length, h = p - 1, g = e[0], v = m.isFunction(g);
            if (v || p > 1 && "string" == typeof g && !f.checkClone && ft.test(g))
                return t.each((function(r) {
                    var o = t.eq(r);
                    v && (e[0] = g.call(this, r, o.html())),
                    St(o, e, n, i)
                }
                ));
            if (p && (o = (r = rt(e, t[0].ownerDocument, !1, t, i)).firstChild,
            1 === r.childNodes.length && (r = o),
            o || i)) {
                for (s = (a = m.map($(r, "script"), yt)).length; d < p; d++)
                    l = r,
                    d !== h && (l = m.clone(l, !0, !0),
                    s && m.merge(a, $(l, "script"))),
                    n.call(t[d], l, d);
                if (s)
                    for (u = a[a.length - 1].ownerDocument,
                    m.map(a, bt),
                    d = 0; d < s; d++)
                        l = a[d],
                        J.test(l.type || "") && !F.access(l, "globalEval") && m.contains(u, l) && (l.src ? m._evalUrl && m._evalUrl(l.src) : m.globalEval(l.textContent.replace(gt, "")))
            }
            return t
        }
        function xt(t, e, n) {
            for (var i, r = e ? m.filter(e, t) : t, o = 0; null != (i = r[o]); o++)
                n || 1 !== i.nodeType || m.cleanData($(i)),
                i.parentNode && (n && m.contains(i.ownerDocument, i) && tt($(i, "script")),
                i.parentNode.removeChild(i));
            return t
        }
        m.extend({
            htmlPrefilter: function(t) {
                return t.replace(pt, "<$1></$2>")
            },
            clone: function(t, e, n) {
                var i, r, o, a, s, c, l, u = t.cloneNode(!0), d = m.contains(t.ownerDocument, t);
                if (!(f.noCloneChecked || 1 !== t.nodeType && 11 !== t.nodeType || m.isXMLDoc(t)))
                    for (a = $(u),
                    i = 0,
                    r = (o = $(t)).length; i < r; i++)
                        s = o[i],
                        c = a[i],
                        l = void 0,
                        "input" === (l = c.nodeName.toLowerCase()) && K.test(s.type) ? c.checked = s.checked : "input" !== l && "textarea" !== l || (c.defaultValue = s.defaultValue);
                if (e)
                    if (n)
                        for (o = o || $(t),
                        a = a || $(u),
                        i = 0,
                        r = o.length; i < r; i++)
                            wt(o[i], a[i]);
                    else
                        wt(t, u);
                return (a = $(u, "script")).length > 0 && tt(a, !d && $(t, "script")),
                u
            },
            cleanData: function(t) {
                for (var e, n, i, r = m.event.special, o = 0; void 0 !== (n = t[o]); o++)
                    if (j(n)) {
                        if (e = n[F.expando]) {
                            if (e.events)
                                for (i in e.events)
                                    r[i] ? m.event.remove(n, i) : m.removeEvent(n, i, e.handle);
                            n[F.expando] = void 0
                        }
                        n[U.expando] && (n[U.expando] = void 0)
                    }
            }
        }),
        m.fn.extend({
            domManip: St,
            detach: function(t) {
                return xt(this, t, !0)
            },
            remove: function(t) {
                return xt(this, t)
            },
            text: function(t) {
                return N(this, (function(t) {
                    return void 0 === t ? m.text(this) : this.empty().each((function() {
                        1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = t)
                    }
                    ))
                }
                ), null, t, arguments.length)
            },
            append: function() {
                return St(this, arguments, (function(t) {
                    1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || vt(this, t).appendChild(t)
                }
                ))
            },
            prepend: function() {
                return St(this, arguments, (function(t) {
                    if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
                        var e = vt(this, t);
                        e.insertBefore(t, e.firstChild)
                    }
                }
                ))
            },
            before: function() {
                return St(this, arguments, (function(t) {
                    this.parentNode && this.parentNode.insertBefore(t, this)
                }
                ))
            },
            after: function() {
                return St(this, arguments, (function(t) {
                    this.parentNode && this.parentNode.insertBefore(t, this.nextSibling)
                }
                ))
            },
            empty: function() {
                for (var t, e = 0; null != (t = this[e]); e++)
                    1 === t.nodeType && (m.cleanData($(t, !1)),
                    t.textContent = "");
                return this
            },
            clone: function(t, e) {
                return t = null != t && t,
                e = null == e ? t : e,
                this.map((function() {
                    return m.clone(this, t, e)
                }
                ))
            },
            html: function(t) {
                return N(this, (function(t) {
                    var e = this[0] || {}
                      , n = 0
                      , i = this.length;
                    if (void 0 === t && 1 === e.nodeType)
                        return e.innerHTML;
                    if ("string" == typeof t && !ht.test(t) && !Q[(Z.exec(t) || ["", ""])[1].toLowerCase()]) {
                        t = m.htmlPrefilter(t);
                        try {
                            for (; n < i; n++)
                                1 === (e = this[n] || {}).nodeType && (m.cleanData($(e, !1)),
                                e.innerHTML = t);
                            e = 0
                        } catch (t) {}
                    }
                    e && this.empty().append(t)
                }
                ), null, t, arguments.length)
            },
            replaceWith: function() {
                var t = [];
                return St(this, arguments, (function(e) {
                    var n = this.parentNode;
                    m.inArray(this, t) < 0 && (m.cleanData($(this)),
                    n && n.replaceChild(e, this))
                }
                ), t)
            }
        }),
        m.each({
            appendTo: "append",
            prependTo: "prepend",
            insertBefore: "before",
            insertAfter: "after",
            replaceAll: "replaceWith"
        }, (function(t, e) {
            m.fn[t] = function(t) {
                for (var n, i = [], r = m(t), o = r.length - 1, a = 0; a <= o; a++)
                    n = a === o ? this : this.clone(!0),
                    m(r[a])[e](n),
                    l.apply(i, n.get());
                return this.pushStack(i)
            }
        }
        ));
        var Mt, Et = {
            HTML: "block",
            BODY: "block"
        };
        function Ct(t, e) {
            var n = m(e.createElement(t)).appendTo(e.body)
              , i = m.css(n[0], "display");
            return n.detach(),
            i
        }
        function At(t) {
            var e = a
              , n = Et[t];
            return n || ("none" !== (n = Ct(t, e)) && n || ((e = (Mt = (Mt || m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(e.documentElement))[0].contentDocument).write(),
            e.close(),
            n = Ct(t, e),
            Mt.detach()),
            Et[t] = n),
            n
        }
        var Tt = /^margin/
          , Ot = new RegExp("^(" + H + ")(?!px)[a-z%]+$","i")
          , _t = function(t) {
            var e = t.ownerDocument.defaultView;
            return e && e.opener || (e = n),
            e.getComputedStyle(t)
        }
          , Pt = function(t, e, n, i) {
            var r, o, a = {};
            for (o in e)
                a[o] = t.style[o],
                t.style[o] = e[o];
            for (o in r = n.apply(t, i || []),
            e)
                t.style[o] = a[o];
            return r
        }
          , It = a.documentElement;
        function kt(t, e, n) {
            var i, r, o, a, s = t.style;
            return "" !== (a = (n = n || _t(t)) ? n.getPropertyValue(e) || n[e] : void 0) && void 0 !== a || m.contains(t.ownerDocument, t) || (a = m.style(t, e)),
            n && !f.pixelMarginRight() && Ot.test(a) && Tt.test(e) && (i = s.width,
            r = s.minWidth,
            o = s.maxWidth,
            s.minWidth = s.maxWidth = s.width = a,
            a = n.width,
            s.width = i,
            s.minWidth = r,
            s.maxWidth = o),
            void 0 !== a ? a + "" : a
        }
        function Dt(t, e) {
            return {
                get: function() {
                    if (!t())
                        return (this.get = e).apply(this, arguments);
                    delete this.get
                }
            }
        }
        !function() {
            var t, e, i, r, o = a.createElement("div"), s = a.createElement("div");
            function c() {
                s.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",
                s.innerHTML = "",
                It.appendChild(o);
                var a = n.getComputedStyle(s);
                t = "1%" !== a.top,
                r = "2px" === a.marginLeft,
                e = "4px" === a.width,
                s.style.marginRight = "50%",
                i = "4px" === a.marginRight,
                It.removeChild(o)
            }
            s.style && (s.style.backgroundClip = "content-box",
            s.cloneNode(!0).style.backgroundClip = "",
            f.clearCloneStyle = "content-box" === s.style.backgroundClip,
            o.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",
            o.appendChild(s),
            m.extend(f, {
                pixelPosition: function() {
                    return c(),
                    t
                },
                boxSizingReliable: function() {
                    return null == e && c(),
                    e
                },
                pixelMarginRight: function() {
                    return null == e && c(),
                    i
                },
                reliableMarginLeft: function() {
                    return null == e && c(),
                    r
                },
                reliableMarginRight: function() {
                    var t, e = s.appendChild(a.createElement("div"));
                    return e.style.cssText = s.style.cssText = "-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",
                    e.style.marginRight = e.style.width = "0",
                    s.style.width = "1px",
                    It.appendChild(o),
                    t = !parseFloat(n.getComputedStyle(e).marginRight),
                    It.removeChild(o),
                    s.removeChild(e),
                    t
                }
            }))
        }();
        var Rt = /^(none|table(?!-c[ea]).+)/
          , Lt = {
            position: "absolute",
            visibility: "hidden",
            display: "block"
        }
          , Nt = {
            letterSpacing: "0",
            fontWeight: "400"
        }
          , jt = ["Webkit", "O", "Moz", "ms"]
          , Vt = a.createElement("div").style;
        function Ft(t) {
            if (t in Vt)
                return t;
            for (var e = t[0].toUpperCase() + t.slice(1), n = jt.length; n--; )
                if ((t = jt[n] + e)in Vt)
                    return t
        }
        function Ut(t, e, n) {
            var i = W.exec(e);
            return i ? Math.max(0, i[2] - (n || 0)) + (i[3] || "px") : e
        }
        function Bt(t, e, n, i, r) {
            for (var o = n === (i ? "border" : "content") ? 4 : "width" === e ? 1 : 0, a = 0; o < 4; o += 2)
                "margin" === n && (a += m.css(t, n + q[o], !0, r)),
                i ? ("content" === n && (a -= m.css(t, "padding" + q[o], !0, r)),
                "margin" !== n && (a -= m.css(t, "border" + q[o] + "Width", !0, r))) : (a += m.css(t, "padding" + q[o], !0, r),
                "padding" !== n && (a += m.css(t, "border" + q[o] + "Width", !0, r)));
            return a
        }
        function zt(t, e, n) {
            var i = !0
              , r = "width" === e ? t.offsetWidth : t.offsetHeight
              , o = _t(t)
              , a = "border-box" === m.css(t, "boxSizing", !1, o);
            if (r <= 0 || null == r) {
                if (((r = kt(t, e, o)) < 0 || null == r) && (r = t.style[e]),
                Ot.test(r))
                    return r;
                i = a && (f.boxSizingReliable() || r === t.style[e]),
                r = parseFloat(r) || 0
            }
            return r + Bt(t, e, n || (a ? "border" : "content"), i, o) + "px"
        }
        function Gt(t, e) {
            for (var n, i, r, o = [], a = 0, s = t.length; a < s; a++)
                (i = t[a]).style && (o[a] = F.get(i, "olddisplay"),
                n = i.style.display,
                e ? (o[a] || "none" !== n || (i.style.display = ""),
                "" === i.style.display && X(i) && (o[a] = F.access(i, "olddisplay", At(i.nodeName)))) : (r = X(i),
                "none" === n && r || F.set(i, "olddisplay", r ? n : m.css(i, "display"))));
            for (a = 0; a < s; a++)
                (i = t[a]).style && (e && "none" !== i.style.display && "" !== i.style.display || (i.style.display = e ? o[a] || "" : "none"));
            return t
        }
        function Ht(t, e, n, i, r) {
            return new Ht.prototype.init(t,e,n,i,r)
        }
        m.extend({
            cssHooks: {
                opacity: {
                    get: function(t, e) {
                        if (e) {
                            var n = kt(t, "opacity");
                            return "" === n ? "1" : n
                        }
                    }
                }
            },
            cssNumber: {
                animationIterationCount: !0,
                columnCount: !0,
                fillOpacity: !0,
                flexGrow: !0,
                flexShrink: !0,
                fontWeight: !0,
                lineHeight: !0,
                opacity: !0,
                order: !0,
                orphans: !0,
                widows: !0,
                zIndex: !0,
                zoom: !0
            },
            cssProps: {
                float: "cssFloat"
            },
            style: function(t, e, n, i) {
                if (t && 3 !== t.nodeType && 8 !== t.nodeType && t.style) {
                    var r, o, a, s = m.camelCase(e), c = t.style;
                    if (e = m.cssProps[s] || (m.cssProps[s] = Ft(s) || s),
                    a = m.cssHooks[e] || m.cssHooks[s],
                    void 0 === n)
                        return a && "get"in a && void 0 !== (r = a.get(t, !1, i)) ? r : c[e];
                    "string" == (o = typeof n) && (r = W.exec(n)) && r[1] && (n = Y(t, e, r),
                    o = "number"),
                    null != n && n == n && ("number" === o && (n += r && r[3] || (m.cssNumber[s] ? "" : "px")),
                    f.clearCloneStyle || "" !== n || 0 !== e.indexOf("background") || (c[e] = "inherit"),
                    a && "set"in a && void 0 === (n = a.set(t, n, i)) || (c[e] = n))
                }
            },
            css: function(t, e, n, i) {
                var r, o, a, s = m.camelCase(e);
                return e = m.cssProps[s] || (m.cssProps[s] = Ft(s) || s),
                (a = m.cssHooks[e] || m.cssHooks[s]) && "get"in a && (r = a.get(t, !0, n)),
                void 0 === r && (r = kt(t, e, i)),
                "normal" === r && e in Nt && (r = Nt[e]),
                "" === n || n ? (o = parseFloat(r),
                !0 === n || isFinite(o) ? o || 0 : r) : r
            }
        }),
        m.each(["height", "width"], (function(t, e) {
            m.cssHooks[e] = {
                get: function(t, n, i) {
                    if (n)
                        return Rt.test(m.css(t, "display")) && 0 === t.offsetWidth ? Pt(t, Lt, (function() {
                            return zt(t, e, i)
                        }
                        )) : zt(t, e, i)
                },
                set: function(t, n, i) {
                    var r, o = i && _t(t), a = i && Bt(t, e, i, "border-box" === m.css(t, "boxSizing", !1, o), o);
                    return a && (r = W.exec(n)) && "px" !== (r[3] || "px") && (t.style[e] = n,
                    n = m.css(t, e)),
                    Ut(0, n, a)
                }
            }
        }
        )),
        m.cssHooks.marginLeft = Dt(f.reliableMarginLeft, (function(t, e) {
            if (e)
                return (parseFloat(kt(t, "marginLeft")) || t.getBoundingClientRect().left - Pt(t, {
                    marginLeft: 0
                }, (function() {
                    return t.getBoundingClientRect().left
                }
                ))) + "px"
        }
        )),
        m.cssHooks.marginRight = Dt(f.reliableMarginRight, (function(t, e) {
            if (e)
                return Pt(t, {
                    display: "inline-block"
                }, kt, [t, "marginRight"])
        }
        )),
        m.each({
            margin: "",
            padding: "",
            border: "Width"
        }, (function(t, e) {
            m.cssHooks[t + e] = {
                expand: function(n) {
                    for (var i = 0, r = {}, o = "string" == typeof n ? n.split(" ") : [n]; i < 4; i++)
                        r[t + q[i] + e] = o[i] || o[i - 2] || o[0];
                    return r
                }
            },
            Tt.test(t) || (m.cssHooks[t + e].set = Ut)
        }
        )),
        m.fn.extend({
            css: function(t, e) {
                return N(this, (function(t, e, n) {
                    var i, r, o = {}, a = 0;
                    if (m.isArray(e)) {
                        for (i = _t(t),
                        r = e.length; a < r; a++)
                            o[e[a]] = m.css(t, e[a], !1, i);
                        return o
                    }
                    return void 0 !== n ? m.style(t, e, n) : m.css(t, e)
                }
                ), t, e, arguments.length > 1)
            },
            show: function() {
                return Gt(this, !0)
            },
            hide: function() {
                return Gt(this)
            },
            toggle: function(t) {
                return "boolean" == typeof t ? t ? this.show() : this.hide() : this.each((function() {
                    X(this) ? m(this).show() : m(this).hide()
                }
                ))
            }
        }),
        m.Tween = Ht,
        Ht.prototype = {
            constructor: Ht,
            init: function(t, e, n, i, r, o) {
                this.elem = t,
                this.prop = n,
                this.easing = r || m.easing._default,
                this.options = e,
                this.start = this.now = this.cur(),
                this.end = i,
                this.unit = o || (m.cssNumber[n] ? "" : "px")
            },
            cur: function() {
                var t = Ht.propHooks[this.prop];
                return t && t.get ? t.get(this) : Ht.propHooks._default.get(this)
            },
            run: function(t) {
                var e, n = Ht.propHooks[this.prop];
                return this.options.duration ? this.pos = e = m.easing[this.easing](t, this.options.duration * t, 0, 1, this.options.duration) : this.pos = e = t,
                this.now = (this.end - this.start) * e + this.start,
                this.options.step && this.options.step.call(this.elem, this.now, this),
                n && n.set ? n.set(this) : Ht.propHooks._default.set(this),
                this
            }
        },
        Ht.prototype.init.prototype = Ht.prototype,
        Ht.propHooks = {
            _default: {
                get: function(t) {
                    var e;
                    return 1 !== t.elem.nodeType || null != t.elem[t.prop] && null == t.elem.style[t.prop] ? t.elem[t.prop] : (e = m.css(t.elem, t.prop, "")) && "auto" !== e ? e : 0
                },
                set: function(t) {
                    m.fx.step[t.prop] ? m.fx.step[t.prop](t) : 1 !== t.elem.nodeType || null == t.elem.style[m.cssProps[t.prop]] && !m.cssHooks[t.prop] ? t.elem[t.prop] = t.now : m.style(t.elem, t.prop, t.now + t.unit)
                }
            }
        },
        Ht.propHooks.scrollTop = Ht.propHooks.scrollLeft = {
            set: function(t) {
                t.elem.nodeType && t.elem.parentNode && (t.elem[t.prop] = t.now)
            }
        },
        m.easing = {
            linear: function(t) {
                return t
            },
            swing: function(t) {
                return .5 - Math.cos(t * Math.PI) / 2
            },
            _default: "swing"
        },
        m.fx = Ht.prototype.init,
        m.fx.step = {};
        var Wt, qt, Xt = /^(?:toggle|show|hide)$/, Yt = /queueHooks$/;
        function Kt() {
            return n.setTimeout((function() {
                Wt = void 0
            }
            )),
            Wt = m.now()
        }
        function Zt(t, e) {
            var n, i = 0, r = {
                height: t
            };
            for (e = e ? 1 : 0; i < 4; i += 2 - e)
                r["margin" + (n = q[i])] = r["padding" + n] = t;
            return e && (r.opacity = r.width = t),
            r
        }
        function Jt(t, e, n) {
            for (var i, r = (Qt.tweeners[e] || []).concat(Qt.tweeners["*"]), o = 0, a = r.length; o < a; o++)
                if (i = r[o].call(n, e, t))
                    return i
        }
        function Qt(t, e, n) {
            var i, r, o = 0, a = Qt.prefilters.length, s = m.Deferred().always((function() {
                delete c.elem
            }
            )), c = function() {
                if (r)
                    return !1;
                for (var e = Wt || Kt(), n = Math.max(0, l.startTime + l.duration - e), i = 1 - (n / l.duration || 0), o = 0, a = l.tweens.length; o < a; o++)
                    l.tweens[o].run(i);
                return s.notifyWith(t, [l, i, n]),
                i < 1 && a ? n : (s.resolveWith(t, [l]),
                !1)
            }, l = s.promise({
                elem: t,
                props: m.extend({}, e),
                opts: m.extend(!0, {
                    specialEasing: {},
                    easing: m.easing._default
                }, n),
                originalProperties: e,
                originalOptions: n,
                startTime: Wt || Kt(),
                duration: n.duration,
                tweens: [],
                createTween: function(e, n) {
                    var i = m.Tween(t, l.opts, e, n, l.opts.specialEasing[e] || l.opts.easing);
                    return l.tweens.push(i),
                    i
                },
                stop: function(e) {
                    var n = 0
                      , i = e ? l.tweens.length : 0;
                    if (r)
                        return this;
                    for (r = !0; n < i; n++)
                        l.tweens[n].run(1);
                    return e ? (s.notifyWith(t, [l, 1, 0]),
                    s.resolveWith(t, [l, e])) : s.rejectWith(t, [l, e]),
                    this
                }
            }), u = l.props;
            for (function(t, e) {
                var n, i, r, o, a;
                for (n in t)
                    if (r = e[i = m.camelCase(n)],
                    o = t[n],
                    m.isArray(o) && (r = o[1],
                    o = t[n] = o[0]),
                    n !== i && (t[i] = o,
                    delete t[n]),
                    (a = m.cssHooks[i]) && "expand"in a)
                        for (n in o = a.expand(o),
                        delete t[i],
                        o)
                            n in t || (t[n] = o[n],
                            e[n] = r);
                    else
                        e[i] = r
            }(u, l.opts.specialEasing); o < a; o++)
                if (i = Qt.prefilters[o].call(l, t, u, l.opts))
                    return m.isFunction(i.stop) && (m._queueHooks(l.elem, l.opts.queue).stop = m.proxy(i.stop, i)),
                    i;
            return m.map(u, Jt, l),
            m.isFunction(l.opts.start) && l.opts.start.call(t, l),
            m.fx.timer(m.extend(c, {
                elem: t,
                anim: l,
                queue: l.opts.queue
            })),
            l.progress(l.opts.progress).done(l.opts.done, l.opts.complete).fail(l.opts.fail).always(l.opts.always)
        }
        m.Animation = m.extend(Qt, {
            tweeners: {
                "*": [function(t, e) {
                    var n = this.createTween(t, e);
                    return Y(n.elem, t, W.exec(e), n),
                    n
                }
                ]
            },
            tweener: function(t, e) {
                m.isFunction(t) ? (e = t,
                t = ["*"]) : t = t.match(R);
                for (var n, i = 0, r = t.length; i < r; i++)
                    n = t[i],
                    Qt.tweeners[n] = Qt.tweeners[n] || [],
                    Qt.tweeners[n].unshift(e)
            },
            prefilters: [function(t, e, n) {
                var i, r, o, a, s, c, l, u = this, d = {}, p = t.style, h = t.nodeType && X(t), f = F.get(t, "fxshow");
                for (i in n.queue || (null == (s = m._queueHooks(t, "fx")).unqueued && (s.unqueued = 0,
                c = s.empty.fire,
                s.empty.fire = function() {
                    s.unqueued || c()
                }
                ),
                s.unqueued++,
                u.always((function() {
                    u.always((function() {
                        s.unqueued--,
                        m.queue(t, "fx").length || s.empty.fire()
                    }
                    ))
                }
                ))),
                1 === t.nodeType && ("height"in e || "width"in e) && (n.overflow = [p.overflow, p.overflowX, p.overflowY],
                "inline" === ("none" === (l = m.css(t, "display")) ? F.get(t, "olddisplay") || At(t.nodeName) : l) && "none" === m.css(t, "float") && (p.display = "inline-block")),
                n.overflow && (p.overflow = "hidden",
                u.always((function() {
                    p.overflow = n.overflow[0],
                    p.overflowX = n.overflow[1],
                    p.overflowY = n.overflow[2]
                }
                ))),
                e)
                    if (r = e[i],
                    Xt.exec(r)) {
                        if (delete e[i],
                        o = o || "toggle" === r,
                        r === (h ? "hide" : "show")) {
                            if ("show" !== r || !f || void 0 === f[i])
                                continue;
                            h = !0
                        }
                        d[i] = f && f[i] || m.style(t, i)
                    } else
                        l = void 0;
                if (m.isEmptyObject(d))
                    "inline" === ("none" === l ? At(t.nodeName) : l) && (p.display = l);
                else
                    for (i in f ? "hidden"in f && (h = f.hidden) : f = F.access(t, "fxshow", {}),
                    o && (f.hidden = !h),
                    h ? m(t).show() : u.done((function() {
                        m(t).hide()
                    }
                    )),
                    u.done((function() {
                        var e;
                        for (e in F.remove(t, "fxshow"),
                        d)
                            m.style(t, e, d[e])
                    }
                    )),
                    d)
                        a = Jt(h ? f[i] : 0, i, u),
                        i in f || (f[i] = a.start,
                        h && (a.end = a.start,
                        a.start = "width" === i || "height" === i ? 1 : 0))
            }
            ],
            prefilter: function(t, e) {
                e ? Qt.prefilters.unshift(t) : Qt.prefilters.push(t)
            }
        }),
        m.speed = function(t, e, n) {
            var i = t && "object" == typeof t ? m.extend({}, t) : {
                complete: n || !n && e || m.isFunction(t) && t,
                duration: t,
                easing: n && e || e && !m.isFunction(e) && e
            };
            return i.duration = m.fx.off ? 0 : "number" == typeof i.duration ? i.duration : i.duration in m.fx.speeds ? m.fx.speeds[i.duration] : m.fx.speeds._default,
            null != i.queue && !0 !== i.queue || (i.queue = "fx"),
            i.old = i.complete,
            i.complete = function() {
                m.isFunction(i.old) && i.old.call(this),
                i.queue && m.dequeue(this, i.queue)
            }
            ,
            i
        }
        ,
        m.fn.extend({
            fadeTo: function(t, e, n, i) {
                return this.filter(X).css("opacity", 0).show().end().animate({
                    opacity: e
                }, t, n, i)
            },
            animate: function(t, e, n, i) {
                var r = m.isEmptyObject(t)
                  , o = m.speed(e, n, i)
                  , a = function() {
                    var e = Qt(this, m.extend({}, t), o);
                    (r || F.get(this, "finish")) && e.stop(!0)
                };
                return a.finish = a,
                r || !1 === o.queue ? this.each(a) : this.queue(o.queue, a)
            },
            stop: function(t, e, n) {
                var i = function(t) {
                    var e = t.stop;
                    delete t.stop,
                    e(n)
                };
                return "string" != typeof t && (n = e,
                e = t,
                t = void 0),
                e && !1 !== t && this.queue(t || "fx", []),
                this.each((function() {
                    var e = !0
                      , r = null != t && t + "queueHooks"
                      , o = m.timers
                      , a = F.get(this);
                    if (r)
                        a[r] && a[r].stop && i(a[r]);
                    else
                        for (r in a)
                            a[r] && a[r].stop && Yt.test(r) && i(a[r]);
                    for (r = o.length; r--; )
                        o[r].elem !== this || null != t && o[r].queue !== t || (o[r].anim.stop(n),
                        e = !1,
                        o.splice(r, 1));
                    !e && n || m.dequeue(this, t)
                }
                ))
            },
            finish: function(t) {
                return !1 !== t && (t = t || "fx"),
                this.each((function() {
                    var e, n = F.get(this), i = n[t + "queue"], r = n[t + "queueHooks"], o = m.timers, a = i ? i.length : 0;
                    for (n.finish = !0,
                    m.queue(this, t, []),
                    r && r.stop && r.stop.call(this, !0),
                    e = o.length; e--; )
                        o[e].elem === this && o[e].queue === t && (o[e].anim.stop(!0),
                        o.splice(e, 1));
                    for (e = 0; e < a; e++)
                        i[e] && i[e].finish && i[e].finish.call(this);
                    delete n.finish
                }
                ))
            }
        }),
        m.each(["toggle", "show", "hide"], (function(t, e) {
            var n = m.fn[e];
            m.fn[e] = function(t, i, r) {
                return null == t || "boolean" == typeof t ? n.apply(this, arguments) : this.animate(Zt(e, !0), t, i, r)
            }
        }
        )),
        m.each({
            slideDown: Zt("show"),
            slideUp: Zt("hide"),
            slideToggle: Zt("toggle"),
            fadeIn: {
                opacity: "show"
            },
            fadeOut: {
                opacity: "hide"
            },
            fadeToggle: {
                opacity: "toggle"
            }
        }, (function(t, e) {
            m.fn[t] = function(t, n, i) {
                return this.animate(e, t, n, i)
            }
        }
        )),
        m.timers = [],
        m.fx.tick = function() {
            var t, e = 0, n = m.timers;
            for (Wt = m.now(); e < n.length; e++)
                (t = n[e])() || n[e] !== t || n.splice(e--, 1);
            n.length || m.fx.stop(),
            Wt = void 0
        }
        ,
        m.fx.timer = function(t) {
            m.timers.push(t),
            t() ? m.fx.start() : m.timers.pop()
        }
        ,
        m.fx.interval = 13,
        m.fx.start = function() {
            qt || (qt = n.setInterval(m.fx.tick, m.fx.interval))
        }
        ,
        m.fx.stop = function() {
            n.clearInterval(qt),
            qt = null
        }
        ,
        m.fx.speeds = {
            slow: 600,
            fast: 200,
            _default: 400
        },
        m.fn.delay = function(t, e) {
            return t = m.fx && m.fx.speeds[t] || t,
            e = e || "fx",
            this.queue(e, (function(e, i) {
                var r = n.setTimeout(e, t);
                i.stop = function() {
                    n.clearTimeout(r)
                }
            }
            ))
        }
        ,
        function() {
            var t = a.createElement("input")
              , e = a.createElement("select")
              , n = e.appendChild(a.createElement("option"));
            t.type = "checkbox",
            f.checkOn = "" !== t.value,
            f.optSelected = n.selected,
            e.disabled = !0,
            f.optDisabled = !n.disabled,
            (t = a.createElement("input")).value = "t",
            t.type = "radio",
            f.radioValue = "t" === t.value
        }();
        var $t, te = m.expr.attrHandle;
        m.fn.extend({
            attr: function(t, e) {
                return N(this, m.attr, t, e, arguments.length > 1)
            },
            removeAttr: function(t) {
                return this.each((function() {
                    m.removeAttr(this, t)
                }
                ))
            }
        }),
        m.extend({
            attr: function(t, e, n) {
                var i, r, o = t.nodeType;
                if (3 !== o && 8 !== o && 2 !== o)
                    return void 0 === t.getAttribute ? m.prop(t, e, n) : (1 === o && m.isXMLDoc(t) || (e = e.toLowerCase(),
                    r = m.attrHooks[e] || (m.expr.match.bool.test(e) ? $t : void 0)),
                    void 0 !== n ? null === n ? void m.removeAttr(t, e) : r && "set"in r && void 0 !== (i = r.set(t, n, e)) ? i : (t.setAttribute(e, n + ""),
                    n) : r && "get"in r && null !== (i = r.get(t, e)) ? i : null == (i = m.find.attr(t, e)) ? void 0 : i)
            },
            attrHooks: {
                type: {
                    set: function(t, e) {
                        if (!f.radioValue && "radio" === e && m.nodeName(t, "input")) {
                            var n = t.value;
                            return t.setAttribute("type", e),
                            n && (t.value = n),
                            e
                        }
                    }
                }
            },
            removeAttr: function(t, e) {
                var n, i, r = 0, o = e && e.match(R);
                if (o && 1 === t.nodeType)
                    for (; n = o[r++]; )
                        i = m.propFix[n] || n,
                        m.expr.match.bool.test(n) && (t[i] = !1),
                        t.removeAttribute(n)
            }
        }),
        $t = {
            set: function(t, e, n) {
                return !1 === e ? m.removeAttr(t, n) : t.setAttribute(n, n),
                n
            }
        },
        m.each(m.expr.match.bool.source.match(/\w+/g), (function(t, e) {
            var n = te[e] || m.find.attr;
            te[e] = function(t, e, i) {
                var r, o;
                return i || (o = te[e],
                te[e] = r,
                r = null != n(t, e, i) ? e.toLowerCase() : null,
                te[e] = o),
                r
            }
        }
        ));
        var ee = /^(?:input|select|textarea|button)$/i
          , ne = /^(?:a|area)$/i;
        m.fn.extend({
            prop: function(t, e) {
                return N(this, m.prop, t, e, arguments.length > 1)
            },
            removeProp: function(t) {
                return this.each((function() {
                    delete this[m.propFix[t] || t]
                }
                ))
            }
        }),
        m.extend({
            prop: function(t, e, n) {
                var i, r, o = t.nodeType;
                if (3 !== o && 8 !== o && 2 !== o)
                    return 1 === o && m.isXMLDoc(t) || (e = m.propFix[e] || e,
                    r = m.propHooks[e]),
                    void 0 !== n ? r && "set"in r && void 0 !== (i = r.set(t, n, e)) ? i : t[e] = n : r && "get"in r && null !== (i = r.get(t, e)) ? i : t[e]
            },
            propHooks: {
                tabIndex: {
                    get: function(t) {
                        var e = m.find.attr(t, "tabindex");
                        return e ? parseInt(e, 10) : ee.test(t.nodeName) || ne.test(t.nodeName) && t.href ? 0 : -1
                    }
                }
            },
            propFix: {
                for: "htmlFor",
                class: "className"
            }
        }),
        f.optSelected || (m.propHooks.selected = {
            get: function(t) {
                var e = t.parentNode;
                return e && e.parentNode && e.parentNode.selectedIndex,
                null
            },
            set: function(t) {
                var e = t.parentNode;
                e && (e.selectedIndex,
                e.parentNode && e.parentNode.selectedIndex)
            }
        }),
        m.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], (function() {
            m.propFix[this.toLowerCase()] = this
        }
        ));
        var ie = /[\t\r\n\f]/g;
        function re(t) {
            return t.getAttribute && t.getAttribute("class") || ""
        }
        m.fn.extend({
            addClass: function(t) {
                var e, n, i, r, o, a, s, c = 0;
                if (m.isFunction(t))
                    return this.each((function(e) {
                        m(this).addClass(t.call(this, e, re(this)))
                    }
                    ));
                if ("string" == typeof t && t)
                    for (e = t.match(R) || []; n = this[c++]; )
                        if (r = re(n),
                        i = 1 === n.nodeType && (" " + r + " ").replace(ie, " ")) {
                            for (a = 0; o = e[a++]; )
                                i.indexOf(" " + o + " ") < 0 && (i += o + " ");
                            r !== (s = m.trim(i)) && n.setAttribute("class", s)
                        }
                return this
            },
            removeClass: function(t) {
                var e, n, i, r, o, a, s, c = 0;
                if (m.isFunction(t))
                    return this.each((function(e) {
                        m(this).removeClass(t.call(this, e, re(this)))
                    }
                    ));
                if (!arguments.length)
                    return this.attr("class", "");
                if ("string" == typeof t && t)
                    for (e = t.match(R) || []; n = this[c++]; )
                        if (r = re(n),
                        i = 1 === n.nodeType && (" " + r + " ").replace(ie, " ")) {
                            for (a = 0; o = e[a++]; )
                                for (; i.indexOf(" " + o + " ") > -1; )
                                    i = i.replace(" " + o + " ", " ");
                            r !== (s = m.trim(i)) && n.setAttribute("class", s)
                        }
                return this
            },
            toggleClass: function(t, e) {
                var n = typeof t;
                return "boolean" == typeof e && "string" === n ? e ? this.addClass(t) : this.removeClass(t) : m.isFunction(t) ? this.each((function(n) {
                    m(this).toggleClass(t.call(this, n, re(this), e), e)
                }
                )) : this.each((function() {
                    var e, i, r, o;
                    if ("string" === n)
                        for (i = 0,
                        r = m(this),
                        o = t.match(R) || []; e = o[i++]; )
                            r.hasClass(e) ? r.removeClass(e) : r.addClass(e);
                    else
                        void 0 !== t && "boolean" !== n || ((e = re(this)) && F.set(this, "__className__", e),
                        this.setAttribute && this.setAttribute("class", e || !1 === t ? "" : F.get(this, "__className__") || ""))
                }
                ))
            },
            hasClass: function(t) {
                var e, n, i = 0;
                for (e = " " + t + " "; n = this[i++]; )
                    if (1 === n.nodeType && (" " + re(n) + " ").replace(ie, " ").indexOf(e) > -1)
                        return !0;
                return !1
            }
        });
        var oe = /\r/g
          , ae = /[\x20\t\r\n\f]+/g;
        m.fn.extend({
            val: function(t) {
                var e, n, i, r = this[0];
                return arguments.length ? (i = m.isFunction(t),
                this.each((function(n) {
                    var r;
                    1 === this.nodeType && (null == (r = i ? t.call(this, n, m(this).val()) : t) ? r = "" : "number" == typeof r ? r += "" : m.isArray(r) && (r = m.map(r, (function(t) {
                        return null == t ? "" : t + ""
                    }
                    ))),
                    (e = m.valHooks[this.type] || m.valHooks[this.nodeName.toLowerCase()]) && "set"in e && void 0 !== e.set(this, r, "value") || (this.value = r))
                }
                ))) : r ? (e = m.valHooks[r.type] || m.valHooks[r.nodeName.toLowerCase()]) && "get"in e && void 0 !== (n = e.get(r, "value")) ? n : "string" == typeof (n = r.value) ? n.replace(oe, "") : null == n ? "" : n : void 0
            }
        }),
        m.extend({
            valHooks: {
                option: {
                    get: function(t) {
                        var e = m.find.attr(t, "value");
                        return null != e ? e : m.trim(m.text(t)).replace(ae, " ")
                    }
                },
                select: {
                    get: function(t) {
                        for (var e, n, i = t.options, r = t.selectedIndex, o = "select-one" === t.type || r < 0, a = o ? null : [], s = o ? r + 1 : i.length, c = r < 0 ? s : o ? r : 0; c < s; c++)
                            if (((n = i[c]).selected || c === r) && (f.optDisabled ? !n.disabled : null === n.getAttribute("disabled")) && (!n.parentNode.disabled || !m.nodeName(n.parentNode, "optgroup"))) {
                                if (e = m(n).val(),
                                o)
                                    return e;
                                a.push(e)
                            }
                        return a
                    },
                    set: function(t, e) {
                        for (var n, i, r = t.options, o = m.makeArray(e), a = r.length; a--; )
                            ((i = r[a]).selected = m.inArray(m.valHooks.option.get(i), o) > -1) && (n = !0);
                        return n || (t.selectedIndex = -1),
                        o
                    }
                }
            }
        }),
        m.each(["radio", "checkbox"], (function() {
            m.valHooks[this] = {
                set: function(t, e) {
                    if (m.isArray(e))
                        return t.checked = m.inArray(m(t).val(), e) > -1
                }
            },
            f.checkOn || (m.valHooks[this].get = function(t) {
                return null === t.getAttribute("value") ? "on" : t.value
            }
            )
        }
        ));
        var se = /^(?:focusinfocus|focusoutblur)$/;
        m.extend(m.event, {
            trigger: function(t, e, i, r) {
                var o, s, c, l, u, d, p, f = [i || a], g = h.call(t, "type") ? t.type : t, v = h.call(t, "namespace") ? t.namespace.split(".") : [];
                if (s = c = i = i || a,
                3 !== i.nodeType && 8 !== i.nodeType && !se.test(g + m.event.triggered) && (g.indexOf(".") > -1 && (v = g.split("."),
                g = v.shift(),
                v.sort()),
                u = g.indexOf(":") < 0 && "on" + g,
                (t = t[m.expando] ? t : new m.Event(g,"object" == typeof t && t)).isTrigger = r ? 2 : 3,
                t.namespace = v.join("."),
                t.rnamespace = t.namespace ? new RegExp("(^|\\.)" + v.join("\\.(?:.*\\.|)") + "(\\.|$)") : null,
                t.result = void 0,
                t.target || (t.target = i),
                e = null == e ? [t] : m.makeArray(e, [t]),
                p = m.event.special[g] || {},
                r || !p.trigger || !1 !== p.trigger.apply(i, e))) {
                    if (!r && !p.noBubble && !m.isWindow(i)) {
                        for (l = p.delegateType || g,
                        se.test(l + g) || (s = s.parentNode); s; s = s.parentNode)
                            f.push(s),
                            c = s;
                        c === (i.ownerDocument || a) && f.push(c.defaultView || c.parentWindow || n)
                    }
                    for (o = 0; (s = f[o++]) && !t.isPropagationStopped(); )
                        t.type = o > 1 ? l : p.bindType || g,
                        (d = (F.get(s, "events") || {})[t.type] && F.get(s, "handle")) && d.apply(s, e),
                        (d = u && s[u]) && d.apply && j(s) && (t.result = d.apply(s, e),
                        !1 === t.result && t.preventDefault());
                    return t.type = g,
                    r || t.isDefaultPrevented() || p._default && !1 !== p._default.apply(f.pop(), e) || !j(i) || u && m.isFunction(i[g]) && !m.isWindow(i) && ((c = i[u]) && (i[u] = null),
                    m.event.triggered = g,
                    i[g](),
                    m.event.triggered = void 0,
                    c && (i[u] = c)),
                    t.result
                }
            },
            simulate: function(t, e, n) {
                var i = m.extend(new m.Event, n, {
                    type: t,
                    isSimulated: !0
                });
                m.event.trigger(i, null, e)
            }
        }),
        m.fn.extend({
            trigger: function(t, e) {
                return this.each((function() {
                    m.event.trigger(t, e, this)
                }
                ))
            },
            triggerHandler: function(t, e) {
                var n = this[0];
                if (n)
                    return m.event.trigger(t, e, n, !0)
            }
        }),
        m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), (function(t, e) {
            m.fn[e] = function(t, n) {
                return arguments.length > 0 ? this.on(e, null, t, n) : this.trigger(e)
            }
        }
        )),
        m.fn.extend({
            hover: function(t, e) {
                return this.mouseenter(t).mouseleave(e || t)
            }
        }),
        f.focusin = "onfocusin"in n,
        f.focusin || m.each({
            focus: "focusin",
            blur: "focusout"
        }, (function(t, e) {
            var n = function(t) {
                m.event.simulate(e, t.target, m.event.fix(t))
            };
            m.event.special[e] = {
                setup: function() {
                    var i = this.ownerDocument || this
                      , r = F.access(i, e);
                    r || i.addEventListener(t, n, !0),
                    F.access(i, e, (r || 0) + 1)
                },
                teardown: function() {
                    var i = this.ownerDocument || this
                      , r = F.access(i, e) - 1;
                    r ? F.access(i, e, r) : (i.removeEventListener(t, n, !0),
                    F.remove(i, e))
                }
            }
        }
        ));
        var ce = n.location
          , le = m.now()
          , ue = /\?/;
        m.parseJSON = function(t) {
            return JSON.parse(t + "")
        }
        ,
        m.parseXML = function(t) {
            var e;
            if (!t || "string" != typeof t)
                return null;
            try {
                e = (new n.DOMParser).parseFromString(t, "text/xml")
            } catch (t) {
                e = void 0
            }
            return e && !e.getElementsByTagName("parsererror").length || m.error("Invalid XML: " + t),
            e
        }
        ;
        var de = /#.*$/
          , pe = /([?&])_=[^&]*/
          , he = /^(.*?):[ \t]*([^\r\n]*)$/gm
          , fe = /^(?:GET|HEAD)$/
          , me = /^\/\//
          , ge = {}
          , ve = {}
          , ye = "*/".concat("*")
          , be = a.createElement("a");
        function we(t) {
            return function(e, n) {
                "string" != typeof e && (n = e,
                e = "*");
                var i, r = 0, o = e.toLowerCase().match(R) || [];
                if (m.isFunction(n))
                    for (; i = o[r++]; )
                        "+" === i[0] ? (i = i.slice(1) || "*",
                        (t[i] = t[i] || []).unshift(n)) : (t[i] = t[i] || []).push(n)
            }
        }
        function Se(t, e, n, i) {
            var r = {}
              , o = t === ve;
            function a(s) {
                var c;
                return r[s] = !0,
                m.each(t[s] || [], (function(t, s) {
                    var l = s(e, n, i);
                    return "string" != typeof l || o || r[l] ? o ? !(c = l) : void 0 : (e.dataTypes.unshift(l),
                    a(l),
                    !1)
                }
                )),
                c
            }
            return a(e.dataTypes[0]) || !r["*"] && a("*")
        }
        function xe(t, e) {
            var n, i, r = m.ajaxSettings.flatOptions || {};
            for (n in e)
                void 0 !== e[n] && ((r[n] ? t : i || (i = {}))[n] = e[n]);
            return i && m.extend(!0, t, i),
            t
        }
        be.href = ce.href,
        m.extend({
            active: 0,
            lastModified: {},
            etag: {},
            ajaxSettings: {
                url: ce.href,
                type: "GET",
                isLocal: /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(ce.protocol),
                global: !0,
                processData: !0,
                async: !0,
                contentType: "application/x-www-form-urlencoded; charset=UTF-8",
                accepts: {
                    "*": ye,
                    text: "text/plain",
                    html: "text/html",
                    xml: "application/xml, text/xml",
                    json: "application/json, text/javascript"
                },
                contents: {
                    xml: /\bxml\b/,
                    html: /\bhtml/,
                    json: /\bjson\b/
                },
                responseFields: {
                    xml: "responseXML",
                    text: "responseText",
                    json: "responseJSON"
                },
                converters: {
                    "* text": String,
                    "text html": !0,
                    "text json": m.parseJSON,
                    "text xml": m.parseXML
                },
                flatOptions: {
                    url: !0,
                    context: !0
                }
            },
            ajaxSetup: function(t, e) {
                return e ? xe(xe(t, m.ajaxSettings), e) : xe(m.ajaxSettings, t)
            },
            ajaxPrefilter: we(ge),
            ajaxTransport: we(ve),
            ajax: function(t, e) {
                "object" == typeof t && (e = t,
                t = void 0),
                e = e || {};
                var i, r, o, s, c, l, u, d, p = m.ajaxSetup({}, e), h = p.context || p, f = p.context && (h.nodeType || h.jquery) ? m(h) : m.event, g = m.Deferred(), v = m.Callbacks("once memory"), y = p.statusCode || {}, b = {}, w = {}, S = 0, x = "canceled", M = {
                    readyState: 0,
                    getResponseHeader: function(t) {
                        var e;
                        if (2 === S) {
                            if (!s)
                                for (s = {}; e = he.exec(o); )
                                    s[e[1].toLowerCase()] = e[2];
                            e = s[t.toLowerCase()]
                        }
                        return null == e ? null : e
                    },
                    getAllResponseHeaders: function() {
                        return 2 === S ? o : null
                    },
                    setRequestHeader: function(t, e) {
                        var n = t.toLowerCase();
                        return S || (t = w[n] = w[n] || t,
                        b[t] = e),
                        this
                    },
                    overrideMimeType: function(t) {
                        return S || (p.mimeType = t),
                        this
                    },
                    statusCode: function(t) {
                        var e;
                        if (t)
                            if (S < 2)
                                for (e in t)
                                    y[e] = [y[e], t[e]];
                            else
                                M.always(t[M.status]);
                        return this
                    },
                    abort: function(t) {
                        var e = t || x;
                        return i && i.abort(e),
                        E(0, e),
                        this
                    }
                };
                if (g.promise(M).complete = v.add,
                M.success = M.done,
                M.error = M.fail,
                p.url = ((t || p.url || ce.href) + "").replace(de, "").replace(me, ce.protocol + "//"),
                p.type = e.method || e.type || p.method || p.type,
                p.dataTypes = m.trim(p.dataType || "*").toLowerCase().match(R) || [""],
                null == p.crossDomain) {
                    l = a.createElement("a");
                    try {
                        l.href = p.url,
                        l.href = l.href,
                        p.crossDomain = be.protocol + "//" + be.host != l.protocol + "//" + l.host
                    } catch (t) {
                        p.crossDomain = !0
                    }
                }
                if (p.data && p.processData && "string" != typeof p.data && (p.data = m.param(p.data, p.traditional)),
                Se(ge, p, e, M),
                2 === S)
                    return M;
                for (d in (u = m.event && p.global) && 0 == m.active++ && m.event.trigger("ajaxStart"),
                p.type = p.type.toUpperCase(),
                p.hasContent = !fe.test(p.type),
                r = p.url,
                p.hasContent || (p.data && (r = p.url += (ue.test(r) ? "&" : "?") + p.data,
                delete p.data),
                !1 === p.cache && (p.url = pe.test(r) ? r.replace(pe, "$1_=" + le++) : r + (ue.test(r) ? "&" : "?") + "_=" + le++)),
                p.ifModified && (m.lastModified[r] && M.setRequestHeader("If-Modified-Since", m.lastModified[r]),
                m.etag[r] && M.setRequestHeader("If-None-Match", m.etag[r])),
                (p.data && p.hasContent && !1 !== p.contentType || e.contentType) && M.setRequestHeader("Content-Type", p.contentType),
                M.setRequestHeader("Accept", p.dataTypes[0] && p.accepts[p.dataTypes[0]] ? p.accepts[p.dataTypes[0]] + ("*" !== p.dataTypes[0] ? ", " + ye + "; q=0.01" : "") : p.accepts["*"]),
                p.headers)
                    M.setRequestHeader(d, p.headers[d]);
                if (p.beforeSend && (!1 === p.beforeSend.call(h, M, p) || 2 === S))
                    return M.abort();
                for (d in x = "abort",
                {
                    success: 1,
                    error: 1,
                    complete: 1
                })
                    M[d](p[d]);
                if (i = Se(ve, p, e, M)) {
                    if (M.readyState = 1,
                    u && f.trigger("ajaxSend", [M, p]),
                    2 === S)
                        return M;
                    p.async && p.timeout > 0 && (c = n.setTimeout((function() {
                        M.abort("timeout")
                    }
                    ), p.timeout));
                    try {
                        S = 1,
                        i.send(b, E)
                    } catch (t) {
                        if (!(S < 2))
                            throw t;
                        E(-1, t)
                    }
                } else
                    E(-1, "No Transport");
                function E(t, e, a, s) {
                    var l, d, b, w, x, E = e;
                    2 !== S && (S = 2,
                    c && n.clearTimeout(c),
                    i = void 0,
                    o = s || "",
                    M.readyState = t > 0 ? 4 : 0,
                    l = t >= 200 && t < 300 || 304 === t,
                    a && (w = function(t, e, n) {
                        for (var i, r, o, a, s = t.contents, c = t.dataTypes; "*" === c[0]; )
                            c.shift(),
                            void 0 === i && (i = t.mimeType || e.getResponseHeader("Content-Type"));
                        if (i)
                            for (r in s)
                                if (s[r] && s[r].test(i)) {
                                    c.unshift(r);
                                    break
                                }
                        if (c[0]in n)
                            o = c[0];
                        else {
                            for (r in n) {
                                if (!c[0] || t.converters[r + " " + c[0]]) {
                                    o = r;
                                    break
                                }
                                a || (a = r)
                            }
                            o = o || a
                        }
                        if (o)
                            return o !== c[0] && c.unshift(o),
                            n[o]
                    }(p, M, a)),
                    w = function(t, e, n, i) {
                        var r, o, a, s, c, l = {}, u = t.dataTypes.slice();
                        if (u[1])
                            for (a in t.converters)
                                l[a.toLowerCase()] = t.converters[a];
                        for (o = u.shift(); o; )
                            if (t.responseFields[o] && (n[t.responseFields[o]] = e),
                            !c && i && t.dataFilter && (e = t.dataFilter(e, t.dataType)),
                            c = o,
                            o = u.shift())
                                if ("*" === o)
                                    o = c;
                                else if ("*" !== c && c !== o) {
                                    if (!(a = l[c + " " + o] || l["* " + o]))
                                        for (r in l)
                                            if ((s = r.split(" "))[1] === o && (a = l[c + " " + s[0]] || l["* " + s[0]])) {
                                                !0 === a ? a = l[r] : !0 !== l[r] && (o = s[0],
                                                u.unshift(s[1]));
                                                break
                                            }
                                    if (!0 !== a)
                                        if (a && t.throws)
                                            e = a(e);
                                        else
                                            try {
                                                e = a(e)
                                            } catch (t) {
                                                return {
                                                    state: "parsererror",
                                                    error: a ? t : "No conversion from " + c + " to " + o
                                                }
                                            }
                                }
                        return {
                            state: "success",
                            data: e
                        }
                    }(p, w, M, l),
                    l ? (p.ifModified && ((x = M.getResponseHeader("Last-Modified")) && (m.lastModified[r] = x),
                    (x = M.getResponseHeader("etag")) && (m.etag[r] = x)),
                    204 === t || "HEAD" === p.type ? E = "nocontent" : 304 === t ? E = "notmodified" : (E = w.state,
                    d = w.data,
                    l = !(b = w.error))) : (b = E,
                    !t && E || (E = "error",
                    t < 0 && (t = 0))),
                    M.status = t,
                    M.statusText = (e || E) + "",
                    l ? g.resolveWith(h, [d, E, M]) : g.rejectWith(h, [M, E, b]),
                    M.statusCode(y),
                    y = void 0,
                    u && f.trigger(l ? "ajaxSuccess" : "ajaxError", [M, p, l ? d : b]),
                    v.fireWith(h, [M, E]),
                    u && (f.trigger("ajaxComplete", [M, p]),
                    --m.active || m.event.trigger("ajaxStop")))
                }
                return M
            },
            getJSON: function(t, e, n) {
                return m.get(t, e, n, "json")
            },
            getScript: function(t, e) {
                return m.get(t, void 0, e, "script")
            }
        }),
        m.each(["get", "post"], (function(t, e) {
            m[e] = function(t, n, i, r) {
                return m.isFunction(n) && (r = r || i,
                i = n,
                n = void 0),
                m.ajax(m.extend({
                    url: t,
                    type: e,
                    dataType: r,
                    data: n,
                    success: i
                }, m.isPlainObject(t) && t))
            }
        }
        )),
        m._evalUrl = function(t) {
            return m.ajax({
                url: t,
                type: "GET",
                dataType: "script",
                async: !1,
                global: !1,
                throws: !0
            })
        }
        ,
        m.fn.extend({
            wrapAll: function(t) {
                var e;
                return m.isFunction(t) ? this.each((function(e) {
                    m(this).wrapAll(t.call(this, e))
                }
                )) : (this[0] && (e = m(t, this[0].ownerDocument).eq(0).clone(!0),
                this[0].parentNode && e.insertBefore(this[0]),
                e.map((function() {
                    for (var t = this; t.firstElementChild; )
                        t = t.firstElementChild;
                    return t
                }
                )).append(this)),
                this)
            },
            wrapInner: function(t) {
                return m.isFunction(t) ? this.each((function(e) {
                    m(this).wrapInner(t.call(this, e))
                }
                )) : this.each((function() {
                    var e = m(this)
                      , n = e.contents();
                    n.length ? n.wrapAll(t) : e.append(t)
                }
                ))
            },
            wrap: function(t) {
                var e = m.isFunction(t);
                return this.each((function(n) {
                    m(this).wrapAll(e ? t.call(this, n) : t)
                }
                ))
            },
            unwrap: function() {
                return this.parent().each((function() {
                    m.nodeName(this, "body") || m(this).replaceWith(this.childNodes)
                }
                )).end()
            }
        }),
        m.expr.filters.hidden = function(t) {
            return !m.expr.filters.visible(t)
        }
        ,
        m.expr.filters.visible = function(t) {
            return t.offsetWidth > 0 || t.offsetHeight > 0 || t.getClientRects().length > 0
        }
        ;
        var Me = /%20/g
          , Ee = /\[\]$/
          , Ce = /\r?\n/g
          , Ae = /^(?:submit|button|image|reset|file)$/i
          , Te = /^(?:input|select|textarea|keygen)/i;
        function Oe(t, e, n, i) {
            var r;
            if (m.isArray(e))
                m.each(e, (function(e, r) {
                    n || Ee.test(t) ? i(t, r) : Oe(t + "[" + ("object" == typeof r && null != r ? e : "") + "]", r, n, i)
                }
                ));
            else if (n || "object" !== m.type(e))
                i(t, e);
            else
                for (r in e)
                    Oe(t + "[" + r + "]", e[r], n, i)
        }
        m.param = function(t, e) {
            var n, i = [], r = function(t, e) {
                e = m.isFunction(e) ? e() : null == e ? "" : e,
                i[i.length] = encodeURIComponent(t) + "=" + encodeURIComponent(e)
            };
            if (void 0 === e && (e = m.ajaxSettings && m.ajaxSettings.traditional),
            m.isArray(t) || t.jquery && !m.isPlainObject(t))
                m.each(t, (function() {
                    r(this.name, this.value)
                }
                ));
            else
                for (n in t)
                    Oe(n, t[n], e, r);
            return i.join("&").replace(Me, "+")
        }
        ,
        m.fn.extend({
            serialize: function() {
                return m.param(this.serializeArray())
            },
            serializeArray: function() {
                return this.map((function() {
                    var t = m.prop(this, "elements");
                    return t ? m.makeArray(t) : this
                }
                )).filter((function() {
                    var t = this.type;
                    return this.name && !m(this).is(":disabled") && Te.test(this.nodeName) && !Ae.test(t) && (this.checked || !K.test(t))
                }
                )).map((function(t, e) {
                    var n = m(this).val();
                    return null == n ? null : m.isArray(n) ? m.map(n, (function(t) {
                        return {
                            name: e.name,
                            value: t.replace(Ce, "\r\n")
                        }
                    }
                    )) : {
                        name: e.name,
                        value: n.replace(Ce, "\r\n")
                    }
                }
                )).get()
            }
        }),
        m.ajaxSettings.xhr = function() {
            try {
                return new n.XMLHttpRequest
            } catch (t) {}
        }
        ;
        var _e = {
            0: 200,
            1223: 204
        }
          , Pe = m.ajaxSettings.xhr();
        f.cors = !!Pe && "withCredentials"in Pe,
        f.ajax = Pe = !!Pe,
        m.ajaxTransport((function(t) {
            var e, i;
            if (f.cors || Pe && !t.crossDomain)
                return {
                    send: function(r, o) {
                        var a, s = t.xhr();
                        if (s.open(t.type, t.url, t.async, t.username, t.password),
                        t.xhrFields)
                            for (a in t.xhrFields)
                                s[a] = t.xhrFields[a];
                        for (a in t.mimeType && s.overrideMimeType && s.overrideMimeType(t.mimeType),
                        t.crossDomain || r["X-Requested-With"] || (r["X-Requested-With"] = "XMLHttpRequest"),
                        r)
                            s.setRequestHeader(a, r[a]);
                        e = function(t) {
                            return function() {
                                e && (e = i = s.onload = s.onerror = s.onabort = s.onreadystatechange = null,
                                "abort" === t ? s.abort() : "error" === t ? "number" != typeof s.status ? o(0, "error") : o(s.status, s.statusText) : o(_e[s.status] || s.status, s.statusText, "text" !== (s.responseType || "text") || "string" != typeof s.responseText ? {
                                    binary: s.response
                                } : {
                                    text: s.responseText
                                }, s.getAllResponseHeaders()))
                            }
                        }
                        ,
                        s.onload = e(),
                        i = s.onerror = e("error"),
                        void 0 !== s.onabort ? s.onabort = i : s.onreadystatechange = function() {
                            4 === s.readyState && n.setTimeout((function() {
                                e && i()
                            }
                            ))
                        }
                        ,
                        e = e("abort");
                        try {
                            s.send(t.hasContent && t.data || null)
                        } catch (t) {
                            if (e)
                                throw t
                        }
                    },
                    abort: function() {
                        e && e()
                    }
                }
        }
        )),
        m.ajaxSetup({
            accepts: {
                script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
            },
            contents: {
                script: /\b(?:java|ecma)script\b/
            },
            converters: {
                "text script": function(t) {
                    return m.globalEval(t),
                    t
                }
            }
        }),
        m.ajaxPrefilter("script", (function(t) {
            void 0 === t.cache && (t.cache = !1),
            t.crossDomain && (t.type = "GET")
        }
        )),
        m.ajaxTransport("script", (function(t) {
            var e, n;
            if (t.crossDomain)
                return {
                    send: function(i, r) {
                        e = m("<script>").prop({
                            charset: t.scriptCharset,
                            src: t.url
                        }).on("load error", n = function(t) {
                            e.remove(),
                            n = null,
                            t && r("error" === t.type ? 404 : 200, t.type)
                        }
                        ),
                        a.head.appendChild(e[0])
                    },
                    abort: function() {
                        n && n()
                    }
                }
        }
        ));
        var Ie = []
          , ke = /(=)\?(?=&|$)|\?\?/;
        m.ajaxSetup({
            jsonp: "callback",
            jsonpCallback: function() {
                var t = Ie.pop() || m.expando + "_" + le++;
                return this[t] = !0,
                t
            }
        }),
        m.ajaxPrefilter("json jsonp", (function(t, e, i) {
            var r, o, a, s = !1 !== t.jsonp && (ke.test(t.url) ? "url" : "string" == typeof t.data && 0 === (t.contentType || "").indexOf("application/x-www-form-urlencoded") && ke.test(t.data) && "data");
            if (s || "jsonp" === t.dataTypes[0])
                return r = t.jsonpCallback = m.isFunction(t.jsonpCallback) ? t.jsonpCallback() : t.jsonpCallback,
                s ? t[s] = t[s].replace(ke, "$1" + r) : !1 !== t.jsonp && (t.url += (ue.test(t.url) ? "&" : "?") + t.jsonp + "=" + r),
                t.converters["script json"] = function() {
                    return a || m.error(r + " was not called"),
                    a[0]
                }
                ,
                t.dataTypes[0] = "json",
                o = n[r],
                n[r] = function() {
                    a = arguments
                }
                ,
                i.always((function() {
                    void 0 === o ? m(n).removeProp(r) : n[r] = o,
                    t[r] && (t.jsonpCallback = e.jsonpCallback,
                    Ie.push(r)),
                    a && m.isFunction(o) && o(a[0]),
                    a = o = void 0
                }
                )),
                "script"
        }
        )),
        m.parseHTML = function(t, e, n) {
            if (!t || "string" != typeof t)
                return null;
            "boolean" == typeof e && (n = e,
            e = !1),
            e = e || a;
            var i = C.exec(t)
              , r = !n && [];
            return i ? [e.createElement(i[1])] : (i = rt([t], e, r),
            r && r.length && m(r).remove(),
            m.merge([], i.childNodes))
        }
        ;
        var De = m.fn.load;
        function Re(t) {
            return m.isWindow(t) ? t : 9 === t.nodeType && t.defaultView
        }
        m.fn.load = function(t, e, n) {
            if ("string" != typeof t && De)
                return De.apply(this, arguments);
            var i, r, o, a = this, s = t.indexOf(" ");
            return s > -1 && (i = m.trim(t.slice(s)),
            t = t.slice(0, s)),
            m.isFunction(e) ? (n = e,
            e = void 0) : e && "object" == typeof e && (r = "POST"),
            a.length > 0 && m.ajax({
                url: t,
                type: r || "GET",
                dataType: "html",
                data: e
            }).done((function(t) {
                o = arguments,
                a.html(i ? m("<div>").append(m.parseHTML(t)).find(i) : t)
            }
            )).always(n && function(t, e) {
                a.each((function() {
                    n.apply(this, o || [t.responseText, e, t])
                }
                ))
            }
            ),
            this
        }
        ,
        m.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], (function(t, e) {
            m.fn[e] = function(t) {
                return this.on(e, t)
            }
        }
        )),
        m.expr.filters.animated = function(t) {
            return m.grep(m.timers, (function(e) {
                return t === e.elem
            }
            )).length
        }
        ,
        m.offset = {
            setOffset: function(t, e, n) {
                var i, r, o, a, s, c, l = m.css(t, "position"), u = m(t), d = {};
                "static" === l && (t.style.position = "relative"),
                s = u.offset(),
                o = m.css(t, "top"),
                c = m.css(t, "left"),
                ("absolute" === l || "fixed" === l) && (o + c).indexOf("auto") > -1 ? (a = (i = u.position()).top,
                r = i.left) : (a = parseFloat(o) || 0,
                r = parseFloat(c) || 0),
                m.isFunction(e) && (e = e.call(t, n, m.extend({}, s))),
                null != e.top && (d.top = e.top - s.top + a),
                null != e.left && (d.left = e.left - s.left + r),
                "using"in e ? e.using.call(t, d) : u.css(d)
            }
        },
        m.fn.extend({
            offset: function(t) {
                if (arguments.length)
                    return void 0 === t ? this : this.each((function(e) {
                        m.offset.setOffset(this, t, e)
                    }
                    ));
                var e, n, i = this[0], r = {
                    top: 0,
                    left: 0
                }, o = i && i.ownerDocument;
                return o ? (e = o.documentElement,
                m.contains(e, i) ? (r = i.getBoundingClientRect(),
                n = Re(o),
                {
                    top: r.top + n.pageYOffset - e.clientTop,
                    left: r.left + n.pageXOffset - e.clientLeft
                }) : r) : void 0
            },
            position: function() {
                if (this[0]) {
                    var t, e, n = this[0], i = {
                        top: 0,
                        left: 0
                    };
                    return "fixed" === m.css(n, "position") ? e = n.getBoundingClientRect() : (t = this.offsetParent(),
                    e = this.offset(),
                    m.nodeName(t[0], "html") || (i = t.offset()),
                    i.top += m.css(t[0], "borderTopWidth", !0),
                    i.left += m.css(t[0], "borderLeftWidth", !0)),
                    {
                        top: e.top - i.top - m.css(n, "marginTop", !0),
                        left: e.left - i.left - m.css(n, "marginLeft", !0)
                    }
                }
            },
            offsetParent: function() {
                return this.map((function() {
                    for (var t = this.offsetParent; t && "static" === m.css(t, "position"); )
                        t = t.offsetParent;
                    return t || It
                }
                ))
            }
        }),
        m.each({
            scrollLeft: "pageXOffset",
            scrollTop: "pageYOffset"
        }, (function(t, e) {
            var n = "pageYOffset" === e;
            m.fn[t] = function(i) {
                return N(this, (function(t, i, r) {
                    var o = Re(t);
                    if (void 0 === r)
                        return o ? o[e] : t[i];
                    o ? o.scrollTo(n ? o.pageXOffset : r, n ? r : o.pageYOffset) : t[i] = r
                }
                ), t, i, arguments.length)
            }
        }
        )),
        m.each(["top", "left"], (function(t, e) {
            m.cssHooks[e] = Dt(f.pixelPosition, (function(t, n) {
                if (n)
                    return n = kt(t, e),
                    Ot.test(n) ? m(t).position()[e] + "px" : n
            }
            ))
        }
        )),
        m.each({
            Height: "height",
            Width: "width"
        }, (function(t, e) {
            m.each({
                padding: "inner" + t,
                content: e,
                "": "outer" + t
            }, (function(n, i) {
                m.fn[i] = function(i, r) {
                    var o = arguments.length && (n || "boolean" != typeof i)
                      , a = n || (!0 === i || !0 === r ? "margin" : "border");
                    return N(this, (function(e, n, i) {
                        var r;
                        return m.isWindow(e) ? e.document.documentElement["client" + t] : 9 === e.nodeType ? (r = e.documentElement,
                        Math.max(e.body["scroll" + t], r["scroll" + t], e.body["offset" + t], r["offset" + t], r["client" + t])) : void 0 === i ? m.css(e, n, a) : m.style(e, n, i, a)
                    }
                    ), e, o ? i : void 0, o, null)
                }
            }
            ))
        }
        )),
        m.fn.extend({
            bind: function(t, e, n) {
                return this.on(t, null, e, n)
            },
            unbind: function(t, e) {
                return this.off(t, null, e)
            },
            delegate: function(t, e, n, i) {
                return this.on(e, t, n, i)
            },
            undelegate: function(t, e, n) {
                return 1 === arguments.length ? this.off(t, "**") : this.off(e, t || "**", n)
            },
            size: function() {
                return this.length
            }
        }),
        m.fn.andSelf = m.fn.addBack,
        void 0 === (i = function() {
            return m
        }
        .apply(e, [])) || (t.exports = i);
        var Le = n.jQuery
          , Ne = n.$;
        return m.noConflict = function(t) {
            return n.$ === m && (n.$ = Ne),
            t && n.jQuery === m && (n.jQuery = Le),
            m
        }
        ,
        r || (n.jQuery = n.$ = m),
        m
    }
    ,
    "object" == typeof t.exports ? t.exports = r.document ? o(r, !0) : function(t) {
        if (!t.document)
            throw new Error("jQuery requires a window with a document");
        return o(t)
    }
    : o(r)
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        var i = this && this.__awaiter || function(t, e, n, i) {
            return new (n || (n = Promise))((function(r, o) {
                function a(t) {
                    try {
                        c(i.next(t))
                    } catch (t) {
                        o(t)
                    }
                }
                function s(t) {
                    try {
                        c(i.throw(t))
                    } catch (t) {
                        o(t)
                    }
                }
                function c(t) {
                    var e;
                    t.done ? r(t.value) : (e = t.value,
                    e instanceof n ? e : new n((function(t) {
                        t(e)
                    }
                    ))).then(a, s)
                }
                c((i = i.apply(t, e || [])).next())
            }
            ))
        }
          , r = this && this.__generator || function(t, e) {
            var n, i, r, o, a = {
                label: 0,
                sent: function() {
                    if (1 & r[0])
                        throw r[1];
                    return r[1]
                },
                trys: [],
                ops: []
            };
            return o = {
                next: s(0),
                throw: s(1),
                return: s(2)
            },
            "function" == typeof Symbol && (o[Symbol.iterator] = function() {
                return this
            }
            ),
            o;
            function s(o) {
                return function(s) {
                    return function(o) {
                        if (n)
                            throw new TypeError("Generator is already executing.");
                        for (; a; )
                            try {
                                if (n = 1,
                                i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                                0) : i.next) && !(r = r.call(i, o[1])).done)
                                    return r;
                                switch (i = 0,
                                r && (o = [2 & o[0], r.value]),
                                o[0]) {
                                case 0:
                                case 1:
                                    r = o;
                                    break;
                                case 4:
                                    return a.label++,
                                    {
                                        value: o[1],
                                        done: !1
                                    };
                                case 5:
                                    a.label++,
                                    i = o[1],
                                    o = [0];
                                    continue;
                                case 7:
                                    o = a.ops.pop(),
                                    a.trys.pop();
                                    continue;
                                default:
                                    if (!(r = a.trys,
                                    (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                        a = 0;
                                        continue
                                    }
                                    if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                        a.label = o[1];
                                        break
                                    }
                                    if (6 === o[0] && a.label < r[1]) {
                                        a.label = r[1],
                                        r = o;
                                        break
                                    }
                                    if (r && a.label < r[2]) {
                                        a.label = r[2],
                                        a.ops.push(o);
                                        break
                                    }
                                    r[2] && a.ops.pop(),
                                    a.trys.pop();
                                    continue
                                }
                                o = e.call(t, a)
                            } catch (t) {
                                o = [6, t],
                                i = 0
                            } finally {
                                n = r = 0
                            }
                        if (5 & o[0])
                            throw o[1];
                        return {
                            value: o[0] ? o[1] : void 0,
                            done: !0
                        }
                    }([o, s])
                }
            }
        }
          , o = this && this.__spreadArrays || function() {
            for (var t = 0, e = 0, n = arguments.length; e < n; e++)
                t += arguments[e].length;
            var i = Array(t)
              , r = 0;
            for (e = 0; e < n; e++)
                for (var o = arguments[e], a = 0, s = o.length; a < s; a++,
                r++)
                    i[r] = o[a];
            return i
        }
        ;
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var a = n(2)
          , s = n(7);
        e.invalidateAngular = function(t, e) {
            void 0 === e && (e = 0),
            window.IV.injector && window.IV.injector.get("$timeout")((function() {
                t && t()
            }
            ), e)
        }
        ,
        e.blurActiveElement = function() {
            window.IV.injector && window.IV.injector.get("$timeout")((function() {
                a.element(document.activeElement).blur()
            }
            ))
        }
        ,
        e.replaceArray = function(t, e, n) {
            var i;
            if (void 0 === n && (n = 65e3),
            t && e) {
                n <= 0 && (n = 65e3);
                for (var r = 0, a = n; r < a; ) {
                    var s = e.slice(r, a);
                    (i = Array.prototype.splice).call.apply(i, o([t, r, a], s)),
                    r = a,
                    a = Math.min(a + n, e.length)
                }
                t.splice(a)
            }
        }
        ,
        e.mapValuesDeep = function t(e, n) {
            if (e instanceof ArrayBuffer)
                return e;
            if (s.isArray(e)) {
                for (var i = 0; i < e.length; i++)
                    e[i] = t(e[i], n);
                return e
            }
            if (s.isObject(e)) {
                for (var r in e)
                    e[r] = t(e[r], n);
                return e
            }
            return n(e)
        }
        ,
        e.isBlank = function(t) {
            return !t || 0 === t.trim().length
        }
        ,
        e.degreesToRadians = function(t) {
            return t * Math.PI / 180
        }
        ,
        e.radiansToDegrees = function(t) {
            return 180 * t / Math.PI
        }
        ,
        e.requestAnimationFrame_ = function() {
            var e = document.createElement("script");
            e.innerHTML = atob("Y29uc29sZS5sb2coIlRoaXMgZmVhdHVyZSByZXF1aXJlcyBhIGxpY2Vuc2Ugd2l0aCB0aGUgQVBJIGZlYXR1cmUuIFBsZWFzZSBjb250YWN0IHNhbGVzQG5hdnZpcy5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24uIik7"),
            t("body").append(e)
        }
        ,
        e.buildHashMap = function(t) {
            var e = new Map;
            return t.forEach((function(t) {
                return e.set(t[0], t[1])
            }
            )),
            e
        }
        ,
        e.optionalCollect = function() {
            for (var t = [], e = 0; e < arguments.length; e++)
                t[e] = arguments[e];
            return Promise.all(t.map((function(t) {
                return t.catch((function() {}
                ))
            }
            ))).then((function(t) {
                return t.filter((function(t) {
                    return void 0 !== t
                }
                ))
            }
            ))
        }
        ,
        e.wrapAngularJsPromise = function(t) {
            return i(this, void 0, void 0, (function() {
                return r(this, (function(e) {
                    return [2, t]
                }
                ))
            }
            ))
        }
        ,
        e.timeout = function(t) {
            return i(this, void 0, void 0, (function() {
                return r(this, (function(e) {
                    return [2, new Promise((function(e) {
                        return setTimeout(e, t)
                    }
                    ))]
                }
                ))
            }
            ))
        }
        ,
        e.signalEmitted = function(t) {
            return i(this, void 0, void 0, (function() {
                return r(this, (function(e) {
                    return [2, new Promise((function(e, n) {
                        var i = t.connect((function(t) {
                            t ? e() : n(),
                            i.disconnect()
                        }
                        ))
                    }
                    ))]
                }
                ))
            }
            ))
        }
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(390);
    n(390);
    n(256);
    var r, o = n(256), a = n(8), s = (n(17),
    n(39),
    n(316)), c = (n(36),
    n(392)), l = n(260), u = n(6), d = n(0), p = n(105), h = n(218), f = n(64), m = n(1119), g = n(222), v = n(1120), y = n(24), b = (n(50),
    n(446),
    n(120),
    n(232)), w = n(348), S = n(0), x = n(256), M = n(390), E = n(24), C = n(17), A = n(39), T = n(36), O = n(50), _ = n(446), P = n(120);
    !function(t) {
        t.DATASETS_MENU = "templates/menu/DatasetsMenu.html",
        t.VIEW_MENU = "templates/menu/ViewMenu.html",
        t.POINTCLOUD_PANE = "templates/menu/PointCloudPane.html ",
        t.POITYPES_MENU = "templates/menu/poi/POITypesMainPanel.html",
        t.MEASUREMENTS = "templates/menu/Measurements.html",
        t.SHARE_MENU = "templates/menu/ShareMenu.html",
        t.GEOREGISTRATION_MODE = "templates/alignment/GeoRegistrationPanel.html",
        t.DATASETALIGNMENT_MODE = "templates/alignment/DatasetAlignmentPanel.html",
        t.SITEMODEL_MODE = "templates/alignment/SiteModelEditor.html",
        t.NAVGRAPH_MODE = "templates/navgraph/NavGraphEditor.html",
        t.VECTORMAP_MODE = "templates/vectormap/VectorMapToolbox.html",
        t.DOWNLOAD_POINT_CLOUD_MODE = "templates/download-point-cloud/DownloadPointCloud.html",
        t.SETTINGS = "templates/menu/Settings.html",
        t.CONFIG_SETTINGS = "templates/settings/ConfigEditor.html",
        t.INSTANCE_KEY_SUBSCRIPTION_SETTINGS = "templates/settings/administration/LicenseSubscription.html",
        t.AUTH_SETTINGS = "templates/settings/authentication/AuthPanel.html",
        t.USERS_SETTINGS = "templates/settings/permissions/Users.html",
        t.GROUPS_SETTINGS = "templates/settings/permissions/Groups.html",
        t.AUDIT_SETTINGS = "templates/settings/AuditPanel.html",
        t.DATA_SETTINGS = "templates/settings/DatasetManagement.html",
        t.HIDDENIMAGE_SETTINGS = "templates/settings/HiddenImages.html",
        t.THEME_SETTINGS = "templates/settings/ThemePanel.html",
        t.LOGIN_MENU = "templates/menu/LoginMenu.html"
    }(r = e.TemplateName || (e.TemplateName = {}));
    var I = function() {
        function t(t, e, n, i, r, o, a, s, c, l) {
            this.GoogleTagManagerService = t,
            this.PiwikService = e,
            this.$rootScope = n,
            this.ModeService = i,
            this.ViewService = r,
            this.PoiService = o,
            this.AuthenticationService = a,
            this.LanguageService = s,
            this.DeveloperEventService = c,
            this.FeatureFlagsService = l,
            this.areLoggersCallbackAdded = !1,
            this.lastLocationChangeTime = Date.now(),
            this.templateLoadingTimes = new Map
        }
        return t.prototype.setupTracking = function() {
            var t = this;
            this.GoogleTagManagerService.setupTrackingScript().then((function() {
                return t.addEventListeners()
            }
            )).catch(a.handleWarning),
            this.PiwikService.setupTrackingScript().then((function() {
                return t.addEventListeners()
            }
            )).catch(a.handleWarning)
        }
        ,
        t.prototype.addEventListeners = function() {
            var e = this;
            this.areLoggersCallbackAdded || (this.areLoggersCallbackAdded = !0,
            this.ViewService.onTransitionEnd.connect((function(t) {
                t.previousImage && (e.trackImageTransition(t.previousImage, t.image, Date.now() - e.lastLocationChangeTime),
                e.lastLocationChangeTime = Date.now())
            }
            )),
            this.PoiService.onPoiOpen.connect((function(t) {
                e.trackPoiOpen(t),
                e.lastPoiOpenId = t.id
            }
            )),
            this.PoiService.onPoiClose.connect((function(t) {
                t.id === e.lastPoiOpenId && e.trackPoiClose(t)
            }
            )),
            this.PoiService.onPoiSave.connect((function(e, n) {
                n ? t.trackPoiCreated() : t.trackPoiEdited()
            }
            )),
            this.AuthenticationService.onAuthenticationChanged.connect((function(n) {
                n.isGuest() ? t.trackUserLogOut() : e.trackUserLogIn(n)
            }
            )),
            this.LanguageService.onLanguageChange.connect((function(e) {
                return t.trackLanguageChangedEvent(e.key)
            }
            )),
            this.$rootScope.$on("$includeContentLoaded", (function(t, n) {
                return e.trackTemplateUsageTimes(t, n)
            }
            )))
        }
        ,
        t.prototype.trackTemplateUsageTimes = function(t, e) {
            switch (e) {
            case r.DATASETS_MENU:
                this.trackTemplate(t, e, (function(t) {
                    return o.GoogleTagManagerService.trackDatasetsMenuUsage(t)
                }
                ));
                break;
            case r.VIEW_MENU:
                this.trackTemplate(t, e, (function(t) {
                    return o.GoogleTagManagerService.trackViewMenuUsage(t)
                }
                ));
                break;
            case r.POINTCLOUD_PANE:
                this.trackTemplate(t, e, (function(t) {
                    return o.GoogleTagManagerService.trackPointcloudMenuUsage(t)
                }
                ));
                break;
            case r.POITYPES_MENU:
                this.trackTemplate(t, e, (function(t) {
                    return o.GoogleTagManagerService.trackPoiTypesMenuUsage(t)
                }
                ));
                break;
            case r.SHARE_MENU:
                this.trackTemplate(t, e, (function(t) {
                    return o.GoogleTagManagerService.trackShareMenuUsage(t)
                }
                ));
                break;
            case r.GEOREGISTRATION_MODE:
                this.trackTemplate(t, e, (function(t) {
                    return o.GoogleTagManagerService.trackGeoRegistrationModeUsage(t)
                }
                ));
                break;
            case r.DATASETALIGNMENT_MODE:
                this.trackTemplate(t, e, (function(t) {
                    return o.GoogleTagManagerService.trackDatasetAlignmentModeUsage(t)
                }
                ));
                break;
            case r.SITEMODEL_MODE:
                this.trackTemplate(t, e, (function(t) {
                    return o.GoogleTagManagerService.trackSiteModelModeUsage(t)
                }
                ));
                break;
            case r.NAVGRAPH_MODE:
                this.trackTemplate(t, e, (function(t) {
                    return o.GoogleTagManagerService.trackNavGraphModeUsage(t)
                }
                ));
                break;
            case r.VECTORMAP_MODE:
                this.trackTemplate(t, e, (function(t) {
                    return o.GoogleTagManagerService.trackVectorMapModeUsage(t)
                }
                ));
                break;
            case r.DOWNLOAD_POINT_CLOUD_MODE:
                this.trackTemplate(t, e, (function(t) {
                    return o.GoogleTagManagerService.trackDownloadPointCloudModeUsage(t)
                }
                ));
                break;
            case r.SETTINGS:
                this.trackTemplate(t, e, (function(t) {
                    return o.GoogleTagManagerService.trackSettingsMenuUsage(t)
                }
                ));
                break;
            case r.CONFIG_SETTINGS:
                this.trackTemplate(t, e, (function(t) {
                    return o.GoogleTagManagerService.trackConfigSettingsUsage(t)
                }
                ));
                break;
            case r.AUTH_SETTINGS:
                this.trackTemplate(t, e, (function(t) {
                    return o.GoogleTagManagerService.trackAuthSettingsUsage(t)
                }
                ));
                break;
            case r.INSTANCE_KEY_SUBSCRIPTION_SETTINGS:
                this.trackTemplate(t, e, (function(t) {
                    return o.GoogleTagManagerService.trackSubscriptionSettingsUsage(t)
                }
                ));
                break;
            case r.USERS_SETTINGS:
                this.trackTemplate(t, e, (function(t) {
                    return o.GoogleTagManagerService.trackUsersSettingsUsage(t)
                }
                ));
                break;
            case r.GROUPS_SETTINGS:
                this.trackTemplate(t, e, (function(t) {
                    return o.GoogleTagManagerService.trackGroupsSettingsUsage(t)
                }
                ));
                break;
            case r.DATA_SETTINGS:
                this.trackTemplate(t, e, (function(t) {
                    return o.GoogleTagManagerService.trackDataSettingsUsage(t)
                }
                ));
                break;
            case r.HIDDENIMAGE_SETTINGS:
                this.trackTemplate(t, e, (function(t) {
                    return o.GoogleTagManagerService.trackHiddenImagesSettingsUsage(t)
                }
                ));
                break;
            case r.LOGIN_MENU:
                this.trackTemplate(t, e, (function(t) {
                    return o.GoogleTagManagerService.trackLoginMenuUsage(t)
                }
                ))
            }
        }
        ,
        t.prototype.trackTemplate = function(t, e, n) {
            var i = this;
            this.templateLoadingTimes.set(e, Date.now()),
            t.targetScope.$on("$destroy", (function() {
                return n(Math.round((Date.now() - i.templateLoadingTimes.get(e)) / 1e3))
            }
            ))
        }
        ,
        t.trackHamburgerClick = function() {
            o.GoogleTagManagerService.trackHamburgerClick()
        }
        ,
        t.prototype.trackUserLogIn = function(t) {
            this.GoogleTagManagerService.trackUserLogin(t.isAdmin())
        }
        ,
        t.trackUserLogOut = function() {
            o.GoogleTagManagerService.trackUserLogout()
        }
        ,
        t.trackSubscriptionLinkClick = function() {
            new f.TrackingEvent("settings_manageSubscriptionClicked").submit()
        }
        ,
        t.trackUserAdded = function() {
            o.GoogleTagManagerService.trackUserAdded()
        }
        ,
        t.trackGroupAdded = function() {
            o.GoogleTagManagerService.trackGroupAdded()
        }
        ,
        t.trackBundleEdited = function() {
            o.GoogleTagManagerService.trackBundleEdited()
        }
        ,
        t.trackBundleCreated = function() {
            o.GoogleTagManagerService.trackBundleCreated()
        }
        ,
        t.trackFileUploaded = function(t) {
            var e = t.name.split(".").pop();
            o.GoogleTagManagerService.trackFileUploaded(e, t.size)
        }
        ,
        t.trackBundleDownload = function() {
            o.GoogleTagManagerService.trackBundleDownload()
        }
        ,
        t.trackBundleUnloaded = function() {
            o.GoogleTagManagerService.trackBundleUnloaded()
        }
        ,
        t.trackBundleLoaded = function() {
            o.GoogleTagManagerService.trackBundleLoaded()
        }
        ,
        t.trackDatasetUnloaded = function() {
            o.GoogleTagManagerService.trackDatasetUnloaded()
        }
        ,
        t.trackDatasetLoaded = function() {
            o.GoogleTagManagerService.trackDatasetLoaded()
        }
        ,
        t.trackMapsDownloaded = function() {
            o.GoogleTagManagerService.trackMapsDownloaded()
        }
        ,
        t.trackMapsUploaded = function() {
            o.GoogleTagManagerService.trackMapsUploaded()
        }
        ,
        t.trackMapsRemoved = function() {
            o.GoogleTagManagerService.trackMapsRemoved()
        }
        ,
        t.trackNavGraphCreated = function() {
            o.GoogleTagManagerService.trackNavGraphCreated()
        }
        ,
        t.trackNavGraphRemoved = function() {
            o.GoogleTagManagerService.trackNavGraphRemoved()
        }
        ,
        t.trackNavGraphImported = function() {
            o.GoogleTagManagerService.trackNavGraphImported()
        }
        ,
        t.trackNavDataImported = function() {
            o.GoogleTagManagerService.trackNavDataImported()
        }
        ,
        t.trackNavDataRemoved = function() {
            o.GoogleTagManagerService.trackNavDataRemoved()
        }
        ,
        t.prototype.trackImageTransition = function(t, e, n) {
            this.PiwikService.trackImageTransition(t.id, e.id, n)
        }
        ,
        t.prototype.trackPoiOpen = function(t) {
            this.PiwikService.trackPoiOpen(t),
            o.GoogleTagManagerService.trackPoiOpen()
        }
        ,
        t.prototype.trackPoiClose = function(t) {
            this.PiwikService.trackPoiClose(t)
        }
        ,
        t.trackPoiCreated = function() {
            o.GoogleTagManagerService.trackPoiCreated()
        }
        ,
        t.trackPoiEdited = function() {
            o.GoogleTagManagerService.trackPoiEdited()
        }
        ,
        t.prototype.trackPoiDeleted = function(t) {
            void 0 === t && (t = !1),
            o.GoogleTagManagerService.trackPoiDeleted(t)
        }
        ,
        t.prototype.trackPointCloudDownloadEntered = function(t) {
            o.GoogleTagManagerService.trackPointCloudDownloadEntered(h.MenuType[t])
        }
        ,
        t.prototype.trackPointCloudDownloadEnteredIntoMode = function(t) {
            o.GoogleTagManagerService.trackPointCloudDownloadEnteredIntoMode(p.SceneViewMode[t])
        }
        ,
        t.prototype.trackPointCloudDownloadButtonClicked = function(t) {
            o.GoogleTagManagerService.trackPointCloudDownloadButtonClicked(p.SceneViewMode[t])
        }
        ,
        t.prototype.trackPointCloudDownload = function() {
            o.GoogleTagManagerService.trackPointCloudDownloaded()
        }
        ,
        t.prototype.trackInvalidMeasuredControlPointPosesFileLines = function(t) {
            o.GoogleTagManagerService.trackInvalidMeasuredControlPointPosesFileLines(t)
        }
        ,
        t.prototype.trackPointCloudDownloadViewModeChanged = function(t, e) {
            o.GoogleTagManagerService.trackPointCloudDownloadViewModeChanged(p.SceneViewMode[t], p.SceneViewMode[e])
        }
        ,
        t.prototype.trackRenderingModeChanged = function(t, e) {
            this.ModeService.currentMode === y.ModeState.NORMAL && (t === g.RenderingMode.Panorama ? (new m.PanoramaRenderingModeChangedEvent).isEnabled(e).submit() : t === g.RenderingMode.PointCloud && (new m.PointCloudRenderingModeChangedEvent).isEnabled(e).submit())
        }
        ,
        t.trackSiteModelDetailsViewed = function() {
            o.GoogleTagManagerService.trackSiteModelDetailsViewed()
        }
        ,
        t.trackShareAction = function(t) {
            switch (t) {
            case c.ShareType.CUSTOM_LOCATION:
                o.GoogleTagManagerService.trackTemporaryPoiSharing();
                break;
            case c.ShareType.LOCATION:
                o.GoogleTagManagerService.trackLocationSharing();
                break;
            case c.ShareType.POI:
                o.GoogleTagManagerService.trackPoiSharing();
                break;
            case c.ShareType.SME:
                o.GoogleTagManagerService.trackSiteModelSharing();
                break;
            default:
                console.warn("Untracked sharetype is used:", t)
            }
        }
        ,
        t.trackLanguageChangedEvent = function(t) {
            o.GoogleTagManagerService.trackLanguageChanged(t)
        }
        ,
        t.prototype.trackSearchInputSearch = function(t, e) {
            this.PiwikService.trackPoiSearchResults("autoComplete", t, e),
            o.GoogleTagManagerService.trackSearchPerformed(t.length, e)
        }
        ,
        t.prototype.trackSearchResultSelection = function(t, e, n) {
            this.PiwikService.trackPoiSearchResults("manualPOISelection", e, n),
            o.GoogleTagManagerService.trackSearchResultSelection(t instanceof l.PoiSearchEntity)
        }
        ,
        t.prototype.trackSearchInputClear = function(t, e) {
            this.PiwikService.trackPoiSearchResults("clearPressed", t, e)
        }
        ,
        t.prototype.trackSearchInputBlur = function(t) {
            this.PiwikService.trackEvent("search", "focusLost", t || "")
        }
        ,
        t.prototype.trackSessionStart = function(t, e) {
            (new v.SessionStartedEvent).withRenderingMode(t, e).submit()
        }
        ,
        t.prototype.trackTypeaheadNavigationKeys = function(t, e) {
            this.PiwikService.trackEvent(e || "search", "keyboard", t)
        }
        ,
        t.prototype.trackRouteInputSearch = function(t, e, n) {
            this.PiwikService.trackPoiSearchResults(n === s.RoutePoint.START ? "routingStartAutoComplete" : "routingEndAutoComplete", t, e),
            o.GoogleTagManagerService.trackRouteSearchPerformed(t.length, e)
        }
        ,
        t.prototype.trackRoutePointSelection = function(t, e, n) {
            this.PiwikService.trackPoiSearchResults(n === s.RoutePoint.START ? "routingStartManualPOISelection" : "routingEndManualPOISelection", t, e)
        }
        ,
        t.prototype.trackRouteInputClear = function(t, e) {
            this.PiwikService.trackPoiSearchResults(e === s.RoutePoint.START ? "routingStartClearPressed" : "routingEndClearPressed", t)
        }
        ,
        t.prototype.trackRouteInitiation = function(t) {
            this.PiwikService.trackRouteInitiation(t)
        }
        ,
        t.prototype.trackRouteReversal = function(t, e) {
            this.PiwikService.trackReverseRoute(t, e)
        }
        ,
        t.prototype.trackRouteClose = function() {
            this.PiwikService.trackCloseRouteMenu()
        }
        ,
        t.prototype.trackResultsListByKey = function(t, e) {
            this.PiwikService.trackPoiSearchResults("enterPressed", t, e)
        }
        ,
        t.prototype.trackResultsListByClick = function(t, e) {
            this.PiwikService.trackPoiSearchResults("magnifierClicked", t, e)
        }
        ,
        t.prototype.trackResultsListByMoreClick = function(t, e) {
            this.PiwikService.trackPoiSearchResults("showResultsList", t, e)
        }
        ,
        t.prototype.trackHideResultsClick = function() {
            this.PiwikService.trackHideResults()
        }
        ,
        t.prototype.trackMapZoom = function(t) {
            this.PiwikService.trackZoom(t)
        }
        ,
        t.prototype.trackMapDrag = function(t, e) {
            this.PiwikService.trackDragging(t, e)
        }
        ,
        t.prototype.trackMapClick = function(t) {
            this.PiwikService.trackMapClick(t)
        }
        ,
        t.prototype.trackFloorChange = function(t, e, n, i) {
            this.PiwikService.trackFloorChange(t, e, n, i)
        }
        ,
        t.prototype.trackPreDefinedEvent = function(t) {
            t && (t.submit(),
            this.trackAsDevelopmentEvent(t))
        }
        ,
        t.prototype.trackCloudProcessingEnterEvent = function() {
            o.GoogleTagManagerService.trackCloudProcessingEnterEvent()
        }
        ,
        t.prototype.trackUploadDataEnterEvent = function() {
            o.GoogleTagManagerService.trackUploadDataEnterEvent()
        }
        ,
        t.prototype.trackProcessingTaskEnterEvent = function() {
            o.GoogleTagManagerService.trackProcessingTaskEnterEvent()
        }
        ,
        t.prototype.trackProcessedDataEnterEvent = function() {
            o.GoogleTagManagerService.trackProcessedDataEnterEvent()
        }
        ,
        t.prototype.trackCreateNewProcessingTask = function() {
            o.GoogleTagManagerService.trackCreateNewProcessingTask()
        }
        ,
        t.prototype.trackProcessingTaskCreationStepButtonClickedEvent = function(t) {
            o.GoogleTagManagerService.trackProcessingTaskCreationStepButtonClickedEvent(t)
        }
        ,
        t.prototype.trackProcessingTaskNextButtonClickedEvent = function() {
            o.GoogleTagManagerService.trackProcessingTaskNextButtonClickedEvent()
        }
        ,
        t.prototype.trackAsDevelopmentEvent = function(t) {
            var e = this;
            this.FeatureFlagsService.isEnabled(b.FeatureFlag.DEVELOPER_MENU).then((function() {
                return e.DeveloperEventService.push(t.eventData)
            }
            )).catch(w.handleDisabledFeature)
        }
        ,
        t.prototype.trackViewControlPointsConfiguration = function() {
            o.GoogleTagManagerService.trackViewControlPointsConfiguration()
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(S.ɵɵinject(x.GoogleTagManagerService),S.ɵɵinject(M.PiwikService),S.ɵɵinject("$rootScope"),S.ɵɵinject(E.ModeService),S.ɵɵinject(C.ViewService),S.ɵɵinject(A.PoiService),S.ɵɵinject(T.AuthenticationService),S.ɵɵinject(O.LanguageService),S.ɵɵinject(_.DeveloperEventService),S.ɵɵinject(P.FeatureFlagsService))
        }
        ,
        t.ɵprov = S.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.TrackingService = I,
    S.ɵsetClassMetadata(I, [{
        type: d.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: x.GoogleTagManagerService
        }, {
            type: M.PiwikService
        }, {
            type: void 0,
            decorators: [{
                type: d.Inject,
                args: ["$rootScope"]
            }]
        }, {
            type: E.ModeService
        }, {
            type: C.ViewService
        }, {
            type: A.PoiService
        }, {
            type: T.AuthenticationService
        }, {
            type: O.LanguageService
        }, {
            type: _.DeveloperEventService
        }, {
            type: P.FeatureFlagsService
        }]
    }
    ), null),
    i.module("IVWebApp").service("TrackingService", u.downgradeInjectable(I))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(528)
      , s = n(1046)
      , c = (n(9),
    n(16))
      , l = n(7)
      , u = (n(14),
    n(534))
      , d = n(4)
      , p = (n(379),
    n(1050))
      , h = n(6)
      , f = n(0)
      , m = n(0)
      , g = n(9)
      , v = n(379)
      , y = n(14)
      , b = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, a.SiteModelEntity, e, "children") || this;
            return o.GeoTransformationService = r,
            o.siteModelUpdated = new c.Signal,
            o.path = "site_model",
            o.v21 = new d.Vector2,
            o.v22 = new d.Vector2,
            o.get = function(t) {
                return void 0 === t && (t = !1),
                o.GeoTransformationService.initialized.then((function() {
                    return o.findAll(t)
                }
                ))
            }
            ,
            o.generate = function() {
                return o.RestService.postApi(o.path + "/generate", {}).then((function(t) {
                    var e = o.updateData(o.transformResponse(t));
                    return o.siteModelUpdated.emit(),
                    e
                }
                ))
            }
            ,
            o.updateAttributes = function(t) {
                return o.RestService.postApi(o.path + "/attributes", o.transformRequest(t)).then((function(t) {
                    var e = o.updateData(o.transformResponse(t));
                    return o.siteModelUpdated.emit(),
                    e
                }
                ))
            }
            ,
            o.injectables.GeoTransformationService = o.GeoTransformationService,
            o.injectables.SiteModelTypeService = i,
            o.injectables.gettextCatalog = n,
            o.transformLocationAction = new u.TransformLocationRepositoryAction(o),
            o.GeoTransformationService.onBeforeReferenceSystemChangedEvent.connect((function() {
                o.data.forEach((function(t) {
                    return t.onBeforeReferenceSystemChangedEvent()
                }
                ))
            }
            )),
            o.GeoTransformationService.offsetChanged.connect((function() {
                return o.transformLocationAction.perform()
            }
            )),
            o.siteModelUpdated.connect((function() {
                return o.resetRequestCache()
            }
            )),
            o
        }
        return r(e, t),
        e.prototype.save = function(t, e) {
            var n = this;
            return void 0 === e && (e = !0),
            this._save(t, e).then((function(t) {
                var e = n.updateData(t);
                return n.siteModelUpdated.emit(),
                e
            }
            ))
        }
        ,
        e.prototype.findWithinGlobal = function(t, e) {
            var n = this;
            return this.RestService.getApi(this.path + "/within", {
                location: t.toArray(),
                type: e
            }).then((function(t) {
                return n.mapToRepositoryEntities(t)
            }
            ))
        }
        ,
        e.prototype.findWithin = function(t, e) {
            var n = this;
            return this.GeoTransformationService.initialized.then((function() {
                var i;
                return t instanceof d.Vector2 && (i = n.GeoTransformationService.vector2ToGlobal(t)),
                t instanceof d.Vector3 && (i = n.GeoTransformationService.vectorToGlobal(t)),
                n.findWithinGlobal(i, e)
            }
            ))
        }
        ,
        e.prototype.findWithinPolygon = function(t, e) {
            var n = this;
            return this.GeoTransformationService.initialized.then((function() {
                var i = t.toData();
                return n.RestService.postApi(n.path + "/within_polygon", {
                    polygon: i,
                    type: e
                }).then((function(t) {
                    return n.mapToRepositoryEntities(t)
                }
                ))
            }
            ))
        }
        ,
        e.prototype.findClosest = function(t, e, n) {
            var i = this;
            return this.GeoTransformationService.initialized.then((function() {
                var r = i.GeoTransformationService.vectorToGlobal(t);
                return i.findClosestWithGlobalCoordinates(r, e, n)
            }
            ))
        }
        ,
        e.prototype.findClosestWithGlobalCoordinates = function(t, e, n) {
            var i = this;
            return this.RestService.getApi(this.path + "/closest", {
                location: t.toArray(),
                radius: e,
                type: n
            }).then((function(t) {
                return i.mapToRepositoryEntities(t)
            }
            ))
        }
        ,
        e.prototype.findByTypeAndDistance2D = function(t, e, n) {
            return Promise.resolve(this.findCachedByTypeAndDistance2D(t, e, n))
        }
        ,
        e.prototype.findCachedByTypeAndDistance2D = function(t, e, n) {
            var i = this
              , r = n * n;
            return this.v21.set(e.x, e.y),
            l.filter(this.dataMap, (function(e) {
                return e.type === t && (i.v22.set(e.center.x, e.center.y),
                i.v21.distanceToSquared(i.v22) < r)
            }
            ))
        }
        ,
        e.prototype.findClosestByTypeAndDistance2D = function(t, e, n) {
            return this.findClosest(e, n, t).then((function(t) {
                return t.length > 0 ? t[0] : void 0
            }
            ))
        }
        ,
        e.prototype.exportSiteModel = function(t, e) {
            this.RestService.directDownload(this.path + "/export", {
                ids: t,
                fileName: e
            }, e)
        }
        ,
        e.prototype.importSiteModel = function(t, e) {
            var n = this;
            return this._save(this.data, !0).then((function() {
                var i = e ? "/" + e.toString() : "";
                return n.RestService.postApi(n.path + "/import" + i, t).then((function(t) {
                    var e = n.updateData(n.transformResponse(t));
                    return n.siteModelUpdated.emit(),
                    e
                }
                ))
            }
            ))
        }
        ,
        e.prototype.isAnyFloorChanging = function(t) {
            var e = t.map((function(t) {
                return t.toData()
            }
            ));
            return this.RestService.postApi(this.path + "/check_map_invalidation", e)
        }
        ,
        e.prototype.getSiteModelValidityReport = function(t) {
            var e = this
              , n = t.map((function(t) {
                return t.toData()
            }
            ));
            return this.RestService.postApi(this.path + "/validate", n).then((function(t) {
                var n = new p.SiteModelErrorReport(e);
                return n.fillFromData(t),
                n
            }
            ))
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(m.ɵɵinject(g.RestService),m.ɵɵinject("gettextCatalog"),m.ɵɵinject(v.SiteModelTypeService),m.ɵɵinject(y.GeoTransformationService))
        }
        ,
        e.ɵprov = m.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(s.TreeRestRepository);
    e.SiteModelRepository = b,
    m.ɵsetClassMetadata(b, [{
        type: f.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: g.RestService
        }, {
            type: void 0,
            decorators: [{
                type: f.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: v.SiteModelTypeService
        }, {
            type: y.GeoTransformationService
        }]
    }
    ), null),
    o.module("IVWebApp").service("SiteModelRepository", h.downgradeInjectable(b))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return a
    }
    )),
    n.d(e, "b", (function() {
        return s
    }
    )),
    n.d(e, "c", (function() {
        return r
    }
    )),
    n.d(e, "d", (function() {
        return c
    }
    )),
    n.d(e, "e", (function() {
        return l
    }
    )),
    n.d(e, "f", (function() {
        return o
    }
    ));
    var i = n(0);
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function r(t) {
        return null != t && "" + t != "false"
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function o(t, e) {
        return void 0 === e && (e = 0),
        a(t) ? Number(t) : e
    }
    function a(t) {
        return !isNaN(parseFloat(t)) && !isNaN(Number(t))
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function s(t) {
        return Array.isArray(t) ? t : [t]
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function c(t) {
        return null == t ? "" : "string" == typeof t ? t : t + "px"
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function l(t) {
        return t instanceof i.ElementRef ? t.nativeElement : t
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i, r = n(2), o = n(16), a = n(6), s = n(0), c = n(0);
    !function(t) {
        t.NORMAL = "normal",
        t.DATASET_ALIGNMENT = "datasetAlignment",
        t.GEO_REGISTRATION = "GeoRegistration",
        t.SITE_MODEL_EDITOR = "SiteModelEditor",
        t.NAV_GRAPH_EDITOR = "NavGraphEditor",
        t.DOWNLOAD_POINT_CLOUD = "DownloadPointCloud",
        t.MEASUREMENTS = "Measurements"
    }(i = e.ModeState || (e.ModeState = {}));
    var l = function() {
        function t() {
            this.currentMode = i.NORMAL,
            this.isSwitchingMode = !1,
            this.modeChanged = new o.Signal
        }
        return t.prototype.isNormalMode = function() {
            return this.currentMode === i.NORMAL
        }
        ,
        t.prototype.isGeoRegistrationMode = function() {
            return this.currentMode === i.GEO_REGISTRATION
        }
        ,
        t.prototype.isDatasetAlignmentMode = function() {
            return this.currentMode === i.DATASET_ALIGNMENT
        }
        ,
        t.prototype.isSiteModelEditorMode = function() {
            return this.currentMode === i.SITE_MODEL_EDITOR
        }
        ,
        t.prototype.isNavGraphEditorMode = function() {
            return this.currentMode === i.NAV_GRAPH_EDITOR
        }
        ,
        t.prototype.isDownloadPointCloudMode = function() {
            return this.currentMode === i.DOWNLOAD_POINT_CLOUD
        }
        ,
        t.prototype.isMeasurementsMode = function() {
            return this.currentMode === i.MEASUREMENTS
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵprov = c.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.ModeService = l,
    c.ɵsetClassMetadata(l, [{
        type: s.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], null, null),
    r.module("IVWebApp").service("ModeService", a.downgradeInjectable(l))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.AUDITING_POI_ENABLED = "auditing.poi.enabled",
        t.AUDITING_POI_RETENTION_SECONDS = "auditing.poi.retention_seconds",
        t.AUTH_LOCAL_ENABLED = "auth.local.enabled",
        t.CORE_INIT_IMAGE = "core.init.image",
        t.CORE_INIT_LAT = "core.init.lat",
        t.CORE_INIT_LON = "core.init.lon",
        t.CORE_INIT_LOCATION_LAT = "core.init.location.lat",
        t.CORE_INIT_LOCATION_LON = "core.init.location.lon",
        t.CORE_INIT_LOCATION_Z = "core.init.location.z",
        t.CORE_INIT_MAP_FLOOR = "core.init.map.floor",
        t.CORE_INIT_MAP_FOV = "core.init.map.fov",
        t.CORE_INIT_MAP_LAT = "core.init.map.lat",
        t.CORE_INIT_MAP_LON = "core.init.map.lon",
        t.CORE_INIT_VIEW = "core.init.view",
        t.CORE_INIT_VIEW_MOBILE = "core.init.view.mobile",
        t.CORE_MAP_ANGLE = "core.map.angle",
        t.CORE_MAP_ATTRIBUTION = "core.map.attribution",
        t.CORE_MAP_BASEMAP = "core.map.basemap",
        t.CORE_MAP_BG = "core.map.bg",
        t.CORE_MAP_FOV_BLENDING = "core.map.fov.blending",
        t.CORE_MAP_FOV_COLOR = "core.map.fov.color",
        t.CORE_MAP_MARKER_BLENDING = "core.map.marker.blending",
        t.CORE_MAP_MARKER_COLOR = "core.map.marker.color",
        t.CORE_MAP_TILE_MAX_ZOOM = "core.map.tile_max_zoom",
        t.CORE_MAP_TILE_MIN_ZOOM = "core.map.tile_min_zoom",
        t.CORE_MAP_TILE_URL = "core.map.tile_url",
        t.CORE_SECURITY_CORS = "core.security.cors",
        t.FEEDBACK_EMAIL_RECIPIENT_EMAIL = "feedback.email.recipient.email",
        t.FEEDBACK_PRIVACY_HTML = "feedback.privacy.html",
        t.FEEDBACK_PRIVACY_TEXT_CHECKBOX = "feedback.privacy.text_checkbox",
        t.FEEDBACK_PRIVACY_TEXT_TEXT = "feedback.privacy.text_text",
        t.INFO_TERMS_EXTRA = "info.terms.extra",
        t.INFO_TERMS_PRIVACY = "info.terms.privacy",
        t.LANG = "lang",
        t.LAYERS_LOCATIONS_VISIBLE = "layers.locations.visible",
        t.LAYERS_MAP_VISIBLE = "layers.map.visible",
        t.LAYERS_PANORAMAS_VISIBLE = "layers.panoramas.visible",
        t.LAYERS_PANORAMA_MOBILE_MAX_RES = "layers.panoramas.mobile_max_res",
        t.LAYERS_POINTCLOUD_SAME_RES = "layers.pointcloud.same_res",
        t.LAYERS_POINTCLOUD_VISIBLE = "layers.pointcloud.visible",
        t.LAYERS_POLYGON_VECTOR_MAP_STYLE = "layers.polygon.vector_map_style",
        t.LAYERS_CAMERAFOV_MOBILE_VISIBLE = "layers.camerafov.mobile_visible",
        t.MENU_DATASETS_VISIBLE = "menu.datasets.visible",
        t.MENU_LOGIN_VISIBLE = "menu.login.visible",
        t.MENU_MODE_VISIBLE = "menu.mode.visible",
        t.MENU_NEWWINDOW_VISIBLE = "menu.newwindow.visible",
        t.MENU_POI_VISIBLE = "menu.poi.visible",
        t.MENU_SETTINGS_VISIBLE = "menu.settings.visible",
        t.MENU_SHARE_VISIBLE = "menu.share.visible",
        t.MENU_VIEW_VISIBLE = "menu.view.visible",
        t.MENU_CLOUD_PROCESSING_VISIBLE = "menu.cloud_processing.visible",
        t.MENU_MEASUREMENTS_VISIBLE = "menu.measurements.visible",
        t.PRIVATE_MODE_ENABLED = "security.private_mode",
        t.FEDERATED_JWK_SET_URI = "oauth.resourceserver.jwk-set-uri",
        t.FEDERATED_GROUPS_CLAIM_ARRAY_KEY = "oauth.resourceserver.groups-claim-array-key",
        t.OAUTH_HOST_PREFIX = "oauth.host-prefix",
        t.FEDERATED_USE_TOKEN_GROUPS = "oauth.resourceserver.use-token-groups",
        t.OAUTH_HOST_URL = "oauth.host.url",
        t.OAUTH_REDIRECT_URLS = "oauth.redirect.urls",
        t.OAUTH_CLIENT_ID = "oauth.client.id",
        t.OAUTH_ISSUER_URL = "oauth.issuer.url",
        t.OAUTH_CLIENT_SECRET = "oauth.client.secret",
        t.OAUTH_USE_TOKEN_GROUPS = "oauth.use.token.groups",
        t.OAUTH_GROUPS_CLAIM_ARRAY_KEY = "oauth.groups.claim.array.key",
        t.POI_FULLSCREEN = "poi.fullscreen",
        t.POI_NAMES_MAP = "poi.names.map",
        t.POI_NAMES_PANORAMAS = "poi.names.panoramas",
        t.POI_SHARE_ENABLED = "poi.share.enabled",
        t.POI_TYPES = "poi.types",
        t.POI_VISIBILITYCHECK_ENABLED = "poi.visibilitycheck.enabled",
        t.ROUTING_ENABLED = "routing.enabled",
        t.SITE_MODEL_SEARCH_ENABLED = "site_model_search.enabled",
        t.TRACKING_CODE = "tracking.code",
        t.TRACKING_ENABLED = "tracking.enabled",
        t.UI_FLOORCHANGER_VISIBLE = "ui.floorchanger.visible",
        t.UI_POI_PANEL_VISIBLE = "ui.poi_panel.visible",
        t.UI_SEARCH_VISIBLE = "ui.search.visible",
        t.UI_STATUSCHECK_VISIBLE = "ui.statuscheck.visible"
    }(e.Configs || (e.Configs = {}))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return u
    }
    ));
    var i = n(1)
      , r = n(142)
      , o = n(227)
      , a = n(33)
      , s = n(207)
      , c = n(84)
      , l = n(167)
      , u = function(t) {
        function e(n, i, r) {
            var a = t.call(this) || this;
            switch (a.syncErrorValue = null,
            a.syncErrorThrown = !1,
            a.syncErrorThrowable = !1,
            a.isStopped = !1,
            arguments.length) {
            case 0:
                a.destination = o.a;
                break;
            case 1:
                if (!n) {
                    a.destination = o.a;
                    break
                }
                if ("object" == typeof n) {
                    n instanceof e ? (a.syncErrorThrowable = n.syncErrorThrowable,
                    a.destination = n,
                    n.add(a)) : (a.syncErrorThrowable = !0,
                    a.destination = new d(a,n));
                    break
                }
            default:
                a.syncErrorThrowable = !0,
                a.destination = new d(a,n,i,r)
            }
            return a
        }
        return i.c(e, t),
        e.prototype[s.a] = function() {
            return this
        }
        ,
        e.create = function(t, n, i) {
            var r = new e(t,n,i);
            return r.syncErrorThrowable = !1,
            r
        }
        ,
        e.prototype.next = function(t) {
            this.isStopped || this._next(t)
        }
        ,
        e.prototype.error = function(t) {
            this.isStopped || (this.isStopped = !0,
            this._error(t))
        }
        ,
        e.prototype.complete = function() {
            this.isStopped || (this.isStopped = !0,
            this._complete())
        }
        ,
        e.prototype.unsubscribe = function() {
            this.closed || (this.isStopped = !0,
            t.prototype.unsubscribe.call(this))
        }
        ,
        e.prototype._next = function(t) {
            this.destination.next(t)
        }
        ,
        e.prototype._error = function(t) {
            this.destination.error(t),
            this.unsubscribe()
        }
        ,
        e.prototype._complete = function() {
            this.destination.complete(),
            this.unsubscribe()
        }
        ,
        e.prototype._unsubscribeAndRecycle = function() {
            var t = this._parentOrParents;
            return this._parentOrParents = null,
            this.unsubscribe(),
            this.closed = !1,
            this.isStopped = !1,
            this._parentOrParents = t,
            this
        }
        ,
        e
    }(a.a)
      , d = function(t) {
        function e(e, n, i, a) {
            var s, c = t.call(this) || this;
            c._parentSubscriber = e;
            var l = c;
            return Object(r.a)(n) ? s = n : n && (s = n.next,
            i = n.error,
            a = n.complete,
            n !== o.a && (l = Object.create(n),
            Object(r.a)(l.unsubscribe) && c.add(l.unsubscribe.bind(l)),
            l.unsubscribe = c.unsubscribe.bind(c))),
            c._context = l,
            c._next = s,
            c._error = i,
            c._complete = a,
            c
        }
        return i.c(e, t),
        e.prototype.next = function(t) {
            if (!this.isStopped && this._next) {
                var e = this._parentSubscriber;
                c.a.useDeprecatedSynchronousErrorHandling && e.syncErrorThrowable ? this.__tryOrSetError(e, this._next, t) && this.unsubscribe() : this.__tryOrUnsub(this._next, t)
            }
        }
        ,
        e.prototype.error = function(t) {
            if (!this.isStopped) {
                var e = this._parentSubscriber
                  , n = c.a.useDeprecatedSynchronousErrorHandling;
                if (this._error)
                    n && e.syncErrorThrowable ? (this.__tryOrSetError(e, this._error, t),
                    this.unsubscribe()) : (this.__tryOrUnsub(this._error, t),
                    this.unsubscribe());
                else if (e.syncErrorThrowable)
                    n ? (e.syncErrorValue = t,
                    e.syncErrorThrown = !0) : Object(l.a)(t),
                    this.unsubscribe();
                else {
                    if (this.unsubscribe(),
                    n)
                        throw t;
                    Object(l.a)(t)
                }
            }
        }
        ,
        e.prototype.complete = function() {
            var t = this;
            if (!this.isStopped) {
                var e = this._parentSubscriber;
                if (this._complete) {
                    var n = function() {
                        return t._complete.call(t._context)
                    };
                    c.a.useDeprecatedSynchronousErrorHandling && e.syncErrorThrowable ? (this.__tryOrSetError(e, n),
                    this.unsubscribe()) : (this.__tryOrUnsub(n),
                    this.unsubscribe())
                } else
                    this.unsubscribe()
            }
        }
        ,
        e.prototype.__tryOrUnsub = function(t, e) {
            try {
                t.call(this._context, e)
            } catch (t) {
                if (this.unsubscribe(),
                c.a.useDeprecatedSynchronousErrorHandling)
                    throw t;
                Object(l.a)(t)
            }
        }
        ,
        e.prototype.__tryOrSetError = function(t, e, n) {
            if (!c.a.useDeprecatedSynchronousErrorHandling)
                throw new Error("bad call");
            try {
                e.call(this._context, n)
            } catch (e) {
                return c.a.useDeprecatedSynchronousErrorHandling ? (t.syncErrorValue = e,
                t.syncErrorThrown = !0,
                !0) : (Object(l.a)(e),
                !0)
            }
            return !1
        }
        ,
        e.prototype._unsubscribe = function() {
            var t = this._parentSubscriber;
            this._context = null,
            this._parentSubscriber = null,
            t.unsubscribe()
        }
        ,
        e
    }(u)
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(178);
    n(178);
    n(36);
    n(36);
    n(187),
    n(15);
    var r = n(57)
      , o = n(6)
      , a = n(0)
      , s = (n(54),
    n(0))
      , c = n(15)
      , l = n(187)
      , u = n(178)
      , d = n(36)
      , p = n(54)
      , h = function() {
        function t(t, e, n, i, r, o, a) {
            var s = this;
            this.$timeout = t,
            this.$window = e,
            this.ConfigService = n,
            this.StorageService = i,
            this.UserRepository = r,
            this.AuthenticationService = o,
            this.LicenseService = a,
            this.isUserLoggedIn = function() {
                return s.userInfo && void 0 !== s.userInfo.id
            }
        }
        return Object.defineProperty(t.prototype, "userInfo", {
            get: function() {
                return this.AuthenticationService.currentUser
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.getRoles = function() {
            for (var t = [], e = 0, n = Object.values(r.GroupAttributes); e < n.length; e++) {
                var i = n[e];
                this.userInfo.checkAttribute(i) && t.push(i)
            }
            return t
        }
        ,
        t.prototype.canViewSiteModelAttributes = function() {
            return this.userInfo.checkAttribute(r.GroupAttributes.CAN_VIEW_SITE_MODEL_ATTRIBUTES)
        }
        ,
        t.prototype.canEditSiteModelAttributes = function() {
            return this.userInfo.checkAttribute(r.GroupAttributes.CAN_EDIT_SITE_MODEL_ATTRIBUTES)
        }
        ,
        t.prototype.canCropAndDownloadPointCloud = function() {
            return this.LicenseService.isLicenseValid && this.userInfo && this.userInfo.checkAttribute(r.GroupAttributes.CAN_CROP_AND_DOWNLOAD_POINT_CLOUD)
        }
        ,
        t.prototype.canSaveMeasurements = function() {
            return this.LicenseService.isLicenseValid && this.userInfo && !this.userInfo.isGuest() && this.userInfo.checkAttribute(r.GroupAttributes.CAN_SAVE_MEASUREMENTS)
        }
        ,
        t.prototype.canUseMeasurementTool = function() {
            return this.LicenseService.isLicenseValid && this.userInfo && this.userInfo.checkAttribute(r.GroupAttributes.CAN_USE_MEASUREMENT_TOOL)
        }
        ,
        t.prototype.canViewAuditPanel = function() {
            return this.userInfo && this.userInfo.checkAttribute(r.GroupAttributes.CAN_EXPORT_POI_AUDIT_RECORDS)
        }
        ,
        t.prototype.isAdmin = function() {
            return this.userInfo && this.userInfo.isAdmin()
        }
        ,
        t.prototype.isGuest = function() {
            return !this.userInfo || this.userInfo.isGuest()
        }
        ,
        t.prototype.getDefaultGroupRead = function() {
            var t = this.getStoredGroup("iv_group_read");
            return t || this.userInfo && this.userInfo.defaultGroupRead
        }
        ,
        t.prototype.getDefaultGroupWrite = function() {
            var t = this.getStoredGroup("iv_group_write");
            return t || this.userInfo && this.userInfo.defaultGroupWrite
        }
        ,
        t.prototype.getStoredGroup = function(t) {
            var e = this.StorageService.get(t);
            return this.userInfo && (-1 === this.userInfo.groups.indexOf(e) || 0 === e && !this.userInfo.checkAttribute(r.GroupAttributes.CAN_MAKE_PUBLIC)) ? void 0 : e
        }
        ,
        t.prototype.localLogin = function(t, e) {
            return this.AuthenticationService.login(t, e)
        }
        ,
        t.prototype.logout = function() {
            return this.AuthenticationService.logout()
        }
        ,
        t.prototype.changePassword = function(t, e, n, i) {
            var r = this.UserRepository.create();
            return r.id = t,
            r.username = e,
            r.password = n,
            r.passwordNew = i,
            this.UserRepository.updatePassword(r)
        }
        ,
        t.prototype.updateUserProfile = function(t) {
            var e = this;
            return this.UserRepository.updateProfile(t).then((function(t) {
                return e.userInfo.id === t.id && e.AuthenticationService.fetchCurrentUser().catch((function() {}
                )),
                t
            }
            ))
        }
        ,
        t.prototype.updateUserPrimaryGroups = function(t, e) {
            var n = this.UserRepository.create();
            return n.id = t,
            n.primaryGroups = e,
            this.UserRepository.updatePrimaryGroups(n)
        }
        ,
        t.prototype.removeUser = function(t) {
            return this.UserRepository.remove({
                id: t
            })
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(s.ɵɵinject("$timeout"),s.ɵɵinject("$window"),s.ɵɵinject(c.ConfigService),s.ɵɵinject(l.StorageService),s.ɵɵinject(u.UserRepository),s.ɵɵinject(d.AuthenticationService),s.ɵɵinject(p.LicenseService))
        }
        ,
        t.ɵprov = s.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.UserService = h,
    s.ɵsetClassMetadata(h, [{
        type: a.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: void 0,
            decorators: [{
                type: a.Inject,
                args: ["$timeout"]
            }]
        }, {
            type: void 0,
            decorators: [{
                type: a.Inject,
                args: ["$window"]
            }]
        }, {
            type: c.ConfigService
        }, {
            type: l.StorageService
        }, {
            type: u.UserRepository
        }, {
            type: d.AuthenticationService
        }, {
            type: p.LicenseService
        }]
    }
    ), null),
    i.module("IVWebApp").service("UserService", o.downgradeInjectable(h))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(7)
      , o = (n(83),
    n(22),
    n(20))
      , a = (n(21),
    n(55))
      , s = n(16)
      , c = (n(17),
    n(36),
    n(6))
      , l = n(0)
      , u = n(105)
      , d = n(52)
      , p = n(0)
      , h = n(83)
      , f = n(22)
      , m = n(21)
      , g = n(17)
      , v = n(36)
      , y = function() {
        function t(t, e, n, i, r) {
            var o = this;
            this.SiteModelService = t,
            this.SiteModelRepository = e,
            this.TrackingService = n,
            this.ViewService = i,
            this.onFloorChange = new s.Signal,
            this.onFloorUpdate = new s.Signal,
            this.currentFloors = [],
            this.floorNames = [],
            this.floors = [],
            this.mapMode = !1,
            this.isFirstFloorChange = !0,
            e.siteModelUpdated.connect((function() {
                return o.resetCurrentFloors()
            }
            )),
            r.onAuthenticationChanged.connect((function(t, e) {
                if (e)
                    o.resetCurrentFloors();
                else {
                    var n = o.currentFloors;
                    o.floors = [],
                    o.currentFloors = [],
                    o.syncFloorNames(),
                    o.floorsUpdateComplete(o.currentFloors),
                    o.floorChangeComplete(n, !1).catch((function() {}
                    ))
                }
            }
            ))
        }
        return t.prototype.getCurrentFloorName = function() {
            return this.currentFloorName
        }
        ,
        t.prototype.resetCurrentFloors = function() {
            this.floors = [],
            this.updateFloors(this.mapMode).catch((function() {}
            ))
        }
        ,
        t.prototype.updateFloors = function(t) {
            this.mapMode = t;
            var e = this.ViewService.mapView.getCamera()
              , n = this.ViewService.mainView;
            return n.viewMode === u.SceneViewMode.Map && this.ViewService.isPanoPrimaryView() && (e = n.getViewportByName(d.SplitViewportName.TOP_VIEW).getCamera()),
            t ? this.updateByFloorsInView(e) : this.updateByMainViewPosition()
        }
        ,
        t.prototype.changeFloorByEntity = function(t, e) {
            void 0 === e && (e = this.ViewService.isPanoPrimaryView());
            var n = t.getEntityOfType(a.SiteModelType.FLOOR);
            return n ? (this.oldFloorName = this.getCurrentFloorName(),
            this.changeFloorByName(n.name, e)) : Promise.reject(void 0)
        }
        ,
        t.prototype.changeFloorByName = function(t, e) {
            return void 0 === e && (e = this.ViewService.isPanoPrimaryView()),
            this.currentFloorName === t ? Promise.reject(void 0) : (this.currentFloorName = t,
            this.mapMode ? this.setCurrentFloorsByName(e) : this.setCurrentFloorsByPositionAndName(this.ViewService.mainView.getCamera().position, e))
        }
        ,
        t.prototype.changeFloorByMainViewPosition = function() {
            var t = this;
            return this.SiteModelService.getCurrentMainViewFloor().catch((function() {}
            )).then((function(e) {
                return e ? t.changeFloorByName(e.name, !1) : Promise.reject(void 0)
            }
            ))
        }
        ,
        t.prototype.getFloorForHeight = function(e) {
            return this.floors.filter((function(n) {
                return t.isHeightInFloor(e, n)
            }
            ))[0]
        }
        ,
        t.prototype.isInCurrentFloors = function(t) {
            if (t) {
                var e = t.getEntityOfType(a.SiteModelType.FLOOR);
                return r.includes(this.currentFloors, e)
            }
            return !1
        }
        ,
        t.isHeightInFloor = function(t, e) {
            return void 0 !== e.zMin && void 0 !== e.zMax && r.inRange(t, e.zMin, e.zMax)
        }
        ,
        t.prototype.updateByFloorsInView = function(t) {
            var e = this
              , n = this.floors;
            return this.floors = [],
            this.SiteModelService.getFloorsInView(t).then((function(t) {
                return e.floors = t,
                e.syncFloorNames(),
                e.floorsUpdateComplete(n),
                e.setCurrentFloorsByName(!1)
            }
            ))
        }
        ,
        t.prototype.updateByMainViewPosition = function() {
            var t = this
              , e = this.floors;
            return this.floors = [],
            this.SiteModelService.getCurrentMainViewFloor().catch((function() {}
            )).then((function(n) {
                n && t.SiteModelService.getFloorsOfContainingBuilding(n, t.floors),
                t.syncFloorNames(),
                t.floorsUpdateComplete(e),
                t.currentFloorName = n ? n.name : void 0;
                var i = t.ViewService.mainView.getCamera().position;
                return t.setCurrentFloorsByPositionAndName(i, !1)
            }
            ))
        }
        ,
        t.prototype.syncFloorNames = function() {
            this.floorNames = this.calculateFloorNames(this.floors)
        }
        ,
        t.prototype.calculateFloorNames = function(e) {
            for (var n = r.groupBy(e, (function(t) {
                return t.name
            }
            )), i = r.partition(n, (function(e) {
                var n;
                return t.IS_NUMBER_RX.test(null === (n = e[0].name) || void 0 === n ? void 0 : n.trim())
            }
            )), o = i[0], a = i[1], s = r.sortBy(o, (function(t) {
                return parseInt(t[0].name, 10)
            }
            )), c = 0, l = a; c < l.length; c++) {
                for (var u = l[c], d = 0, p = s; d < p.length; d++) {
                    var h = p[d]
                      , f = this.compareFloorGroups(h, u);
                    if (!(void 0 === f || f <= 0)) {
                        s.splice(s.indexOf(h), 0, u);
                        break
                    }
                }
                -1 === s.indexOf(u) && s.push(u)
            }
            return s.map((function(t) {
                return t[0].name
            }
            ))
        }
        ,
        t.prototype.compareFloorGroups = function(t, e) {
            var n = this
              , i = r.intersectionBy(t, e, (function(t) {
                return t.getEntityOfType(a.SiteModelType.BUILDING)
            }
            ));
            if (i.length > 0) {
                var o = 0;
                return i.forEach((function(t) {
                    var i = n.findFloorInBuilding(e, t);
                    o += t.zMin < i.zMin ? -1 : 1
                }
                )),
                o
            }
        }
        ,
        t.prototype.findFloorInBuilding = function(t, e) {
            return t.find((function(t) {
                return t.getEntityOfType(a.SiteModelType.BUILDING) === e.getEntityOfType(a.SiteModelType.BUILDING)
            }
            ))
        }
        ,
        t.prototype.setCurrentFloorsByName = function(t) {
            var e = this
              , n = this.currentFloors;
            return this.currentFloors = r.filter(this.floors, (function(t) {
                return t.name === e.currentFloorName
            }
            )),
            this.floorChangeComplete(n, t)
        }
        ,
        t.prototype.setCurrentFloorsByPositionAndName = function(e, n) {
            var i = this
              , o = this.currentFloors;
            return this.currentFloors = [],
            this.SiteModelRepository.findByTypeAndDistance2D(a.SiteModelType.FLOOR, e, t.MAX_DIST_PANO_MODE).then((function(t) {
                i.currentFloors = r.filter(t, (function(t) {
                    return t.name === i.currentFloorName
                }
                ))
            }
            )).catch((function() {}
            )).then((function() {
                return i.floorChangeComplete(o, n)
            }
            ))
        }
        ,
        t.prototype.floorsUpdateComplete = function(t) {
            if (!r.isEqual(t, this.floors)) {
                var e = {
                    floors: this.floors,
                    floorNames: this.floorNames,
                    currentFloors: this.currentFloors
                };
                this.onFloorUpdate.emit(e),
                o.invalidateAngular()
            }
        }
        ,
        t.prototype.floorChangeComplete = function(t, e) {
            if (r.isEqual(t, this.currentFloors) && !this.isFirstFloorChange)
                return Promise.reject(void 0);
            var n = {
                currentFloors: this.currentFloors,
                mayChangeLocation: e
            };
            return this.onFloorChange.emit(n),
            this.isFirstFloorChange = !1,
            this.trackFloorChange(t),
            o.invalidateAngular(),
            Promise.resolve()
        }
        ,
        t.prototype.trackFloorChange = function(t) {
            this.TrackingService.trackFloorChange(t, this.currentFloors, this.oldFloorName, this.currentFloorName)
        }
        ,
        t.MAX_DIST_PANO_MODE = 1500,
        t.IS_NUMBER_RX = /^-?[0-9]+$/,
        t.ɵfac = function(e) {
            return new (e || t)(p.ɵɵinject(h.SiteModelService),p.ɵɵinject(f.SiteModelRepository),p.ɵɵinject(m.TrackingService),p.ɵɵinject(g.ViewService),p.ɵɵinject(v.AuthenticationService))
        }
        ,
        t.ɵprov = p.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.FloorChangerService = y,
    p.ɵsetClassMetadata(y, [{
        type: l.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: h.SiteModelService
        }, {
            type: f.SiteModelRepository
        }, {
            type: m.TrackingService
        }, {
            type: g.ViewService
        }, {
            type: v.AuthenticationService
        }]
    }
    ), null),
    i.module("IVWebApp").service("FloorChangerService", c.downgradeInjectable(y))
}
, function(t, e, n) {
    var i = n(42);
    t.exports = function(t) {
        if (!i(t))
            throw TypeError(String(t) + " is not an object");
        return t
    }
}
, function(t, e, n) {
    "use strict";
    n.r(e),
    n.d(e, "AUTO_STYLE", (function() {
        return o
    }
    )),
    n.d(e, "AnimationBuilder", (function() {
        return i
    }
    )),
    n.d(e, "AnimationFactory", (function() {
        return r
    }
    )),
    n.d(e, "NoopAnimationPlayer", (function() {
        return w
    }
    )),
    n.d(e, "animate", (function() {
        return s
    }
    )),
    n.d(e, "animateChild", (function() {
        return m
    }
    )),
    n.d(e, "animation", (function() {
        return f
    }
    )),
    n.d(e, "group", (function() {
        return c
    }
    )),
    n.d(e, "keyframes", (function() {
        return p
    }
    )),
    n.d(e, "query", (function() {
        return v
    }
    )),
    n.d(e, "sequence", (function() {
        return l
    }
    )),
    n.d(e, "stagger", (function() {
        return y
    }
    )),
    n.d(e, "state", (function() {
        return d
    }
    )),
    n.d(e, "style", (function() {
        return u
    }
    )),
    n.d(e, "transition", (function() {
        return h
    }
    )),
    n.d(e, "trigger", (function() {
        return a
    }
    )),
    n.d(e, "useAnimation", (function() {
        return g
    }
    )),
    n.d(e, "ɵAnimationGroupPlayer", (function() {
        return S
    }
    )),
    n.d(e, "ɵPRE_STYLE", (function() {
        return x
    }
    ));
    /**
 * @license Angular v9.1.9
 * (c) 2010-2020 Google LLC. https://angular.io/
 * License: MIT
 */
    var i = function() {}
      , r = function() {}
      , o = "*";
    function a(t, e) {
        return {
            type: 7,
            name: t,
            definitions: e,
            options: {}
        }
    }
    function s(t, e) {
        return void 0 === e && (e = null),
        {
            type: 4,
            styles: e,
            timings: t
        }
    }
    function c(t, e) {
        return void 0 === e && (e = null),
        {
            type: 3,
            steps: t,
            options: e
        }
    }
    function l(t, e) {
        return void 0 === e && (e = null),
        {
            type: 2,
            steps: t,
            options: e
        }
    }
    function u(t) {
        return {
            type: 6,
            styles: t,
            offset: null
        }
    }
    function d(t, e, n) {
        return {
            type: 0,
            name: t,
            styles: e,
            options: n
        }
    }
    function p(t) {
        return {
            type: 5,
            steps: t
        }
    }
    function h(t, e, n) {
        return void 0 === n && (n = null),
        {
            type: 1,
            expr: t,
            animation: e,
            options: n
        }
    }
    function f(t, e) {
        return void 0 === e && (e = null),
        {
            type: 8,
            animation: t,
            options: e
        }
    }
    function m(t) {
        return void 0 === t && (t = null),
        {
            type: 9,
            options: t
        }
    }
    function g(t, e) {
        return void 0 === e && (e = null),
        {
            type: 10,
            animation: t,
            options: e
        }
    }
    function v(t, e, n) {
        return void 0 === n && (n = null),
        {
            type: 11,
            selector: t,
            animation: e,
            options: n
        }
    }
    function y(t, e) {
        return {
            type: 12,
            timings: t,
            animation: e
        }
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function b(t) {
        Promise.resolve(null).then(t)
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var w = function() {
        function t(t, e) {
            void 0 === t && (t = 0),
            void 0 === e && (e = 0),
            this._onDoneFns = [],
            this._onStartFns = [],
            this._onDestroyFns = [],
            this._started = !1,
            this._destroyed = !1,
            this._finished = !1,
            this.parentPlayer = null,
            this.totalTime = t + e
        }
        return t.prototype._onFinish = function() {
            this._finished || (this._finished = !0,
            this._onDoneFns.forEach((function(t) {
                return t()
            }
            )),
            this._onDoneFns = [])
        }
        ,
        t.prototype.onStart = function(t) {
            this._onStartFns.push(t)
        }
        ,
        t.prototype.onDone = function(t) {
            this._onDoneFns.push(t)
        }
        ,
        t.prototype.onDestroy = function(t) {
            this._onDestroyFns.push(t)
        }
        ,
        t.prototype.hasStarted = function() {
            return this._started
        }
        ,
        t.prototype.init = function() {}
        ,
        t.prototype.play = function() {
            this.hasStarted() || (this._onStart(),
            this.triggerMicrotask()),
            this._started = !0
        }
        ,
        t.prototype.triggerMicrotask = function() {
            var t = this;
            b((function() {
                return t._onFinish()
            }
            ))
        }
        ,
        t.prototype._onStart = function() {
            this._onStartFns.forEach((function(t) {
                return t()
            }
            )),
            this._onStartFns = []
        }
        ,
        t.prototype.pause = function() {}
        ,
        t.prototype.restart = function() {}
        ,
        t.prototype.finish = function() {
            this._onFinish()
        }
        ,
        t.prototype.destroy = function() {
            this._destroyed || (this._destroyed = !0,
            this.hasStarted() || this._onStart(),
            this.finish(),
            this._onDestroyFns.forEach((function(t) {
                return t()
            }
            )),
            this._onDestroyFns = [])
        }
        ,
        t.prototype.reset = function() {}
        ,
        t.prototype.setPosition = function(t) {}
        ,
        t.prototype.getPosition = function() {
            return 0
        }
        ,
        t.prototype.triggerCallback = function(t) {
            var e = "start" == t ? this._onStartFns : this._onDoneFns;
            e.forEach((function(t) {
                return t()
            }
            )),
            e.length = 0
        }
        ,
        t
    }()
      , S = function() {
        function t(t) {
            var e = this;
            this._onDoneFns = [],
            this._onStartFns = [],
            this._finished = !1,
            this._started = !1,
            this._destroyed = !1,
            this._onDestroyFns = [],
            this.parentPlayer = null,
            this.totalTime = 0,
            this.players = t;
            var n = 0
              , i = 0
              , r = 0
              , o = this.players.length;
            0 == o ? b((function() {
                return e._onFinish()
            }
            )) : this.players.forEach((function(t) {
                t.onDone((function() {
                    ++n == o && e._onFinish()
                }
                )),
                t.onDestroy((function() {
                    ++i == o && e._onDestroy()
                }
                )),
                t.onStart((function() {
                    ++r == o && e._onStart()
                }
                ))
            }
            )),
            this.totalTime = this.players.reduce((function(t, e) {
                return Math.max(t, e.totalTime)
            }
            ), 0)
        }
        return t.prototype._onFinish = function() {
            this._finished || (this._finished = !0,
            this._onDoneFns.forEach((function(t) {
                return t()
            }
            )),
            this._onDoneFns = [])
        }
        ,
        t.prototype.init = function() {
            this.players.forEach((function(t) {
                return t.init()
            }
            ))
        }
        ,
        t.prototype.onStart = function(t) {
            this._onStartFns.push(t)
        }
        ,
        t.prototype._onStart = function() {
            this.hasStarted() || (this._started = !0,
            this._onStartFns.forEach((function(t) {
                return t()
            }
            )),
            this._onStartFns = [])
        }
        ,
        t.prototype.onDone = function(t) {
            this._onDoneFns.push(t)
        }
        ,
        t.prototype.onDestroy = function(t) {
            this._onDestroyFns.push(t)
        }
        ,
        t.prototype.hasStarted = function() {
            return this._started
        }
        ,
        t.prototype.play = function() {
            this.parentPlayer || this.init(),
            this._onStart(),
            this.players.forEach((function(t) {
                return t.play()
            }
            ))
        }
        ,
        t.prototype.pause = function() {
            this.players.forEach((function(t) {
                return t.pause()
            }
            ))
        }
        ,
        t.prototype.restart = function() {
            this.players.forEach((function(t) {
                return t.restart()
            }
            ))
        }
        ,
        t.prototype.finish = function() {
            this._onFinish(),
            this.players.forEach((function(t) {
                return t.finish()
            }
            ))
        }
        ,
        t.prototype.destroy = function() {
            this._onDestroy()
        }
        ,
        t.prototype._onDestroy = function() {
            this._destroyed || (this._destroyed = !0,
            this._onFinish(),
            this.players.forEach((function(t) {
                return t.destroy()
            }
            )),
            this._onDestroyFns.forEach((function(t) {
                return t()
            }
            )),
            this._onDestroyFns = [])
        }
        ,
        t.prototype.reset = function() {
            this.players.forEach((function(t) {
                return t.reset()
            }
            )),
            this._destroyed = !1,
            this._finished = !1,
            this._started = !1
        }
        ,
        t.prototype.setPosition = function(t) {
            var e = t * this.totalTime;
            this.players.forEach((function(t) {
                var n = t.totalTime ? Math.min(1, e / t.totalTime) : 1;
                t.setPosition(n)
            }
            ))
        }
        ,
        t.prototype.getPosition = function() {
            var t = 0;
            return this.players.forEach((function(e) {
                var n = e.getPosition();
                t = Math.min(n, t)
            }
            )),
            t
        }
        ,
        t.prototype.beforeDestroy = function() {
            this.players.forEach((function(t) {
                t.beforeDestroy && t.beforeDestroy()
            }
            ))
        }
        ,
        t.prototype.triggerCallback = function(t) {
            var e = "start" == t ? this._onStartFns : this._onDoneFns;
            e.forEach((function(t) {
                return t()
            }
            )),
            e.length = 0
        }
        ,
        t
    }()
      , x = "!";
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(1058)
      , s = (n(9),
    n(22),
    n(310))
      , c = (n(14),
    n(75),
    n(135))
      , l = (n(66),
    n(380))
      , u = n(382)
      , d = n(6)
      , p = n(0)
      , h = n(0)
      , f = n(9)
      , m = n(14)
      , g = n(22)
      , v = n(75)
      , y = n(66)
      , b = function(t) {
        function e(e, n, i, r, o) {
            var s = t.call(this, a.Dataset, e, n, i) || this;
            return s.TransformService = o,
            s.path = "datasets",
            c.EntityRelationMapper.manyToOne(s, "bundle", "bundleId", r),
            c.EntityRelationMapper.manyToMany(s, "siteModelEntities", "siteModelEntityIds", i),
            s.entityCreated.connect((function(t) {
                s.registerTransforms(t)
            }
            )),
            s.entityRemoved.connect((function(t) {
                s.unregisterTransform(t)
            }
            )),
            s
        }
        return r(e, t),
        e.prototype.registerTransforms = function(t) {
            for (var e = 0, n = t; e < n.length; e++) {
                var i = n[e];
                i.crs = new l.ReferenceSystem(!1,this.TransformService.NAVVIS_PREFIX + ":" + i.name),
                this.TransformService.registerReferenceSystem(i.crs),
                i.transform = new u.AffineTransform(i.crs,this.TransformService.crsLocal,i.m2w_),
                this.TransformService.registerTransform(i.transform)
            }
        }
        ,
        e.prototype.unregisterTransform = function(t) {
            t.crs && this.TransformService.unregisterReferenceSystem(t.crs),
            t.transform && this.TransformService.unregisterTransform(t.transform)
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(h.ɵɵinject(f.RestService),h.ɵɵinject(m.GeoTransformationService),h.ɵɵinject(g.SiteModelRepository),h.ɵɵinject(v.BundleRepository),h.ɵɵinject(y.TransformService))
        }
        ,
        e.ɵprov = h.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(s.SiteModelBoundRestRepository);
    e.DatasetRepository = b,
    h.ɵsetClassMetadata(b, [{
        type: p.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: f.RestService
        }, {
            type: m.GeoTransformationService
        }, {
            type: g.SiteModelRepository
        }, {
            type: v.BundleRepository
        }, {
            type: y.TransformService
        }]
    }
    ), null),
    o.module("IVWebApp").service("DatasetRepository", d.downgradeInjectable(b))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "b", (function() {
        return u
    }
    )),
    n.d(e, "a", (function() {
        return d
    }
    ));
    var i = n(1)
      , r = n(12)
      , o = n(26)
      , a = n(33)
      , s = n(127)
      , c = n(336)
      , l = n(207)
      , u = function(t) {
        function e(e) {
            var n = t.call(this, e) || this;
            return n.destination = e,
            n
        }
        return i.c(e, t),
        e
    }(o.a)
      , d = function(t) {
        function e() {
            var e = t.call(this) || this;
            return e.observers = [],
            e.closed = !1,
            e.isStopped = !1,
            e.hasError = !1,
            e.thrownError = null,
            e
        }
        return i.c(e, t),
        e.prototype[l.a] = function() {
            return new u(this)
        }
        ,
        e.prototype.lift = function(t) {
            var e = new p(this,this);
            return e.operator = t,
            e
        }
        ,
        e.prototype.next = function(t) {
            if (this.closed)
                throw new s.a;
            if (!this.isStopped)
                for (var e = this.observers, n = e.length, i = e.slice(), r = 0; r < n; r++)
                    i[r].next(t)
        }
        ,
        e.prototype.error = function(t) {
            if (this.closed)
                throw new s.a;
            this.hasError = !0,
            this.thrownError = t,
            this.isStopped = !0;
            for (var e = this.observers, n = e.length, i = e.slice(), r = 0; r < n; r++)
                i[r].error(t);
            this.observers.length = 0
        }
        ,
        e.prototype.complete = function() {
            if (this.closed)
                throw new s.a;
            this.isStopped = !0;
            for (var t = this.observers, e = t.length, n = t.slice(), i = 0; i < e; i++)
                n[i].complete();
            this.observers.length = 0
        }
        ,
        e.prototype.unsubscribe = function() {
            this.isStopped = !0,
            this.closed = !0,
            this.observers = null
        }
        ,
        e.prototype._trySubscribe = function(e) {
            if (this.closed)
                throw new s.a;
            return t.prototype._trySubscribe.call(this, e)
        }
        ,
        e.prototype._subscribe = function(t) {
            if (this.closed)
                throw new s.a;
            return this.hasError ? (t.error(this.thrownError),
            a.a.EMPTY) : this.isStopped ? (t.complete(),
            a.a.EMPTY) : (this.observers.push(t),
            new c.a(this,t))
        }
        ,
        e.prototype.asObservable = function() {
            var t = new r.a;
            return t.source = this,
            t
        }
        ,
        e.create = function(t, e) {
            return new p(t,e)
        }
        ,
        e
    }(r.a)
      , p = function(t) {
        function e(e, n) {
            var i = t.call(this) || this;
            return i.destination = e,
            i.source = n,
            i
        }
        return i.c(e, t),
        e.prototype.next = function(t) {
            var e = this.destination;
            e && e.next && e.next(t)
        }
        ,
        e.prototype.error = function(t) {
            var e = this.destination;
            e && e.error && this.destination.error(t)
        }
        ,
        e.prototype.complete = function() {
            var t = this.destination;
            t && t.complete && this.destination.complete()
        }
        ,
        e.prototype._subscribe = function(t) {
            return this.source ? this.source.subscribe(t) : a.a.EMPTY
        }
        ,
        e
    }(d)
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return s
    }
    ));
    var i = n(56)
      , r = n(224)
      , o = n(142)
      , a = n(208)
      , s = function() {
        function t(t) {
            this.closed = !1,
            this._parentOrParents = null,
            this._subscriptions = null,
            t && (this._unsubscribe = t)
        }
        var e;
        return t.prototype.unsubscribe = function() {
            var e;
            if (!this.closed) {
                var n = this._parentOrParents
                  , s = this._unsubscribe
                  , l = this._subscriptions;
                if (this.closed = !0,
                this._parentOrParents = null,
                this._subscriptions = null,
                n instanceof t)
                    n.remove(this);
                else if (null !== n)
                    for (var u = 0; u < n.length; ++u) {
                        n[u].remove(this)
                    }
                if (Object(o.a)(s))
                    try {
                        s.call(this)
                    } catch (t) {
                        e = t instanceof a.a ? c(t.errors) : [t]
                    }
                if (Object(i.a)(l)) {
                    u = -1;
                    for (var d = l.length; ++u < d; ) {
                        var p = l[u];
                        if (Object(r.a)(p))
                            try {
                                p.unsubscribe()
                            } catch (t) {
                                e = e || [],
                                t instanceof a.a ? e = e.concat(c(t.errors)) : e.push(t)
                            }
                    }
                }
                if (e)
                    throw new a.a(e)
            }
        }
        ,
        t.prototype.add = function(e) {
            var n = e;
            if (!e)
                return t.EMPTY;
            switch (typeof e) {
            case "function":
                n = new t(e);
            case "object":
                if (n === this || n.closed || "function" != typeof n.unsubscribe)
                    return n;
                if (this.closed)
                    return n.unsubscribe(),
                    n;
                if (!(n instanceof t)) {
                    var i = n;
                    (n = new t)._subscriptions = [i]
                }
                break;
            default:
                throw new Error("unrecognized teardown " + e + " added to Subscription.")
            }
            var r = n._parentOrParents;
            if (null === r)
                n._parentOrParents = this;
            else if (r instanceof t) {
                if (r === this)
                    return n;
                n._parentOrParents = [r, this]
            } else {
                if (-1 !== r.indexOf(this))
                    return n;
                r.push(this)
            }
            var o = this._subscriptions;
            return null === o ? this._subscriptions = [n] : o.push(n),
            n
        }
        ,
        t.prototype.remove = function(t) {
            var e = this._subscriptions;
            if (e) {
                var n = e.indexOf(t);
                -1 !== n && e.splice(n, 1)
            }
        }
        ,
        t.EMPTY = ((e = new t).closed = !0,
        e),
        t
    }();
    function c(t) {
        return t.reduce((function(t, e) {
            return t.concat(e instanceof a.a ? e.errors : e)
        }
        ), [])
    }
}
, function(t, e, n) {
    (function(e) {
        var n = function(t) {
            return t && t.Math == Math && t
        };
        t.exports = n("object" == typeof globalThis && globalThis) || n("object" == typeof window && window) || n("object" == typeof self && self) || n("object" == typeof e && e) || Function("return this")()
    }
    ).call(this, n(213))
}
, function(t, e, n) {
    t.exports = n.p + "a67177e1632a760641d07441303b97d0.ic_close_grey.svg"
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , r = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2);
    n(178);
    n(178);
    n(9),
    n(72);
    var a = n(16)
      , s = (n(86),
    n(8))
      , c = n(0)
      , l = n(6)
      , u = n(144)
      , d = n(20)
      , p = n(0)
      , h = n(9)
      , f = n(178)
      , m = n(72)
      , g = n(86)
      , v = function() {
        function t(t, e, n, i, r) {
            this.RestService = t,
            this.UserRepository = e,
            this.JWTTokenService = n,
            this.$timeout = i,
            this.InstanceInformationService = r,
            this.OAUTH_ERROR_QUERY_PARAM = "oauth_error",
            this.onAuthenticationChanged = new a.Signal,
            this.dataLoadCompleted = new a.Signal,
            this.showLoginScreenModal = new a.Signal,
            this.dataAccessible = !1,
            this.loggedInWithToken = !1,
            this.initializedDeferred = new u.Deferred,
            this.initialized = this.initializedDeferred.promise
        }
        return t.prototype.initialize = function() {
            var t = this
              , e = this.fetchCurrentUser().then((function(e) {
                return t.initializedDeferred.resolve(e),
                e
            }
            )).catch((function(e) {
                t.initializedDeferred.reject(e)
            }
            ));
            return this.isDataAccessible().catch(s.handleWarning),
            e
        }
        ,
        t.prototype.fetchCurrentUser = function() {
            var t = this;
            return this.RestService.getApi("user", {}, void 0, !1).then((function(e) {
                var n = t.UserRepository.create();
                return n.fillFromData(e),
                t.currentUser = n,
                n
            }
            ))
        }
        ,
        t.prototype.login = function(t, e, n) {
            var o = this;
            return void 0 === n && (n = !1),
            this.RestService.postApi("auth/token", {
                username: t,
                password: e
            }, void 0, !1).then((function(t) {
                return i(o, void 0, void 0, (function() {
                    return r(this, (function(e) {
                        switch (e.label) {
                        case 0:
                            return this.JWTTokenService.saveJwt(t.token),
                            this.currentUser = this.UserRepository.create(),
                            this.currentUser.fillFromData(t.principal),
                            this.sendAuthenticationChanged(),
                            this.refreshJwtBeforeExpiry(),
                            n ? [4, d.signalEmitted(this.dataLoadCompleted)] : [3, 2];
                        case 1:
                            e.sent(),
                            e.label = 2;
                        case 2:
                            return [2, this.currentUser]
                        }
                    }
                    ))
                }
                ))
            }
            ))
        }
        ,
        t.prototype.loginWithToken = function(t, e) {
            return void 0 === e && (e = !1),
            this.markAsLoggedInWithToken(),
            this.loginWithTokenInternal(t, !0, !1, e)
        }
        ,
        t.prototype.loginWithTokenInternal = function(t, e, n, o) {
            var a = this;
            return void 0 === e && (e = !1),
            void 0 === n && (n = !0),
            void 0 === o && (o = !1),
            this.JWTTokenService.saveJwt(t),
            this.fetchCurrentUser().then((function(t) {
                return i(a, void 0, void 0, (function() {
                    return r(this, (function(i) {
                        switch (i.label) {
                        case 0:
                            return this.currentUser = t,
                            n ? this.refreshJwtBeforeExpiry() : this.clearRefreshTimers(),
                            e ? (this.sendAuthenticationChanged(),
                            o ? [4, d.signalEmitted(this.dataLoadCompleted)] : [3, 2]) : [3, 2];
                        case 1:
                            i.sent(),
                            i.label = 2;
                        case 2:
                            return [2, t]
                        }
                    }
                    ))
                }
                ))
            }
            ))
        }
        ,
        t.prototype.updateToken = function(t) {
            this.JWTTokenService.saveJwt(t)
        }
        ,
        t.prototype.markAsLoggedInWithToken = function() {
            this.loggedInWithToken = !0
        }
        ,
        t.prototype.refreshJwtBeforeExpiry = function() {
            var t = this;
            this.clearRefreshTimers(),
            this.loggedInWithToken ? console.warn("Refreshed IV token was requested but the user was logged in with a (maybe external) token directly") : this.refreshTimer = this.$timeout((function() {
                t.refreshTimer = void 0,
                t.RestService.getApi("auth/refresh", {}, void 0, !1).then((function(e) {
                    t.updateToken(e.token),
                    t.refreshJwtBeforeExpiry()
                }
                )).catch((function(e) {
                    401 === e.status && t.JWTTokenService.eraseJwt()
                }
                ))
            }
            ), this.JWTTokenService.renewIn())
        }
        ,
        t.prototype.clearRefreshTimers = function() {
            this.refreshTimer && (this.$timeout.cancel(this.refreshTimer),
            this.refreshTimer = void 0)
        }
        ,
        t.prototype.logout = function() {
            var t = this;
            return this.JWTTokenService.eraseJwt(),
            this.loggedInWithToken = !1,
            this.clearRefreshTimers(),
            this.fetchCurrentUser().then((function() {
                return t.sendAuthenticationChanged()
            }
            ))
        }
        ,
        t.prototype.isDataAccessible = function() {
            return i(this, void 0, void 0, (function() {
                var t = this;
                return r(this, (function(e) {
                    switch (e.label) {
                    case 0:
                        return [4, this.initialized];
                    case 1:
                        return e.sent(),
                        this.currentUser.isGuest() ? [2, this.InstanceInformationService.getInformation().then((function(e) {
                            return t.dataAccessible = !e.isPrivate,
                            t.dataAccessible
                        }
                        ))] : (this.dataAccessible = !0,
                        [2, Promise.resolve(this.dataAccessible)])
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.sendAuthenticationChanged = function() {
            var t = this;
            this.isDataAccessible().then((function(e) {
                t.onAuthenticationChanged.emit(t.currentUser, e)
            }
            )).catch(s.handleWarning)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(p.ɵɵinject(h.RestService),p.ɵɵinject(f.UserRepository),p.ɵɵinject(m.JWTTokenService),p.ɵɵinject("$timeout"),p.ɵɵinject(g.InstanceInformationService))
        }
        ,
        t.ɵprov = p.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.AuthenticationService = v,
    p.ɵsetClassMetadata(v, [{
        type: c.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: h.RestService
        }, {
            type: f.UserRepository
        }, {
            type: m.JWTTokenService
        }, {
            type: void 0,
            decorators: [{
                type: c.Inject,
                args: ["$timeout"]
            }]
        }, {
            type: g.InstanceInformationService
        }]
    }
    ), null),
    o.module("IVWebApp").service("AuthenticationService", l.downgradeInjectable(v))
}
, function(t, e, n) {
    "use strict";
    n.r(e),
    n.d(e, "BidiModule", (function() {
        return l
    }
    )),
    n.d(e, "DIR_DOCUMENT", (function() {
        return o
    }
    )),
    n.d(e, "Dir", (function() {
        return c
    }
    )),
    n.d(e, "Directionality", (function() {
        return s
    }
    )),
    n.d(e, "ɵangular_material_src_cdk_bidi_bidi_a", (function() {
        return a
    }
    ));
    var i = n(0)
      , r = n(3)
      , o = new i.InjectionToken("cdk-dir-doc",{
        providedIn: "root",
        factory: a
    });
    function a() {
        return Object(i.inject)(r.DOCUMENT)
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var s = function() {
        function t(t) {
            if (this.value = "ltr",
            this.change = new i.EventEmitter,
            t) {
                var e = t.body ? t.body.dir : null
                  , n = t.documentElement ? t.documentElement.dir : null
                  , r = e || n;
                this.value = "ltr" === r || "rtl" === r ? r : "ltr"
            }
        }
        return t.prototype.ngOnDestroy = function() {
            this.change.complete()
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: void 0,
                decorators: [{
                    type: i.Optional
                }, {
                    type: i.Inject,
                    args: [o]
                }]
            }]
        }
        ,
        t.ɵprov = Object(i["ɵɵdefineInjectable"])({
            factory: function() {
                return new t(Object(i["ɵɵinject"])(o, 8))
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)(i["ɵɵinject"](o, 8))
        }
        ,
        t
    }()
      , c = function() {
        function t() {
            this._dir = "ltr",
            this._isInitialized = !1,
            this.change = new i.EventEmitter
        }
        return Object.defineProperty(t.prototype, "dir", {
            get: function() {
                return this._dir
            },
            set: function(t) {
                var e = this._dir
                  , n = t ? t.toLowerCase() : t;
                this._rawDir = t,
                this._dir = "ltr" === n || "rtl" === n ? n : "ltr",
                e !== this._dir && this._isInitialized && this.change.emit(this._dir)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "value", {
            get: function() {
                return this.dir
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.ngAfterContentInit = function() {
            this._isInitialized = !0
        }
        ,
        t.prototype.ngOnDestroy = function() {
            this.change.complete()
        }
        ,
        t.propDecorators = {
            change: [{
                type: i.Output,
                args: ["dirChange"]
            }],
            dir: [{
                type: i.Input
            }]
        },
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵdir = i["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "dir", ""]],
            hostVars: 1,
            hostBindings: function(t, e) {
                2 & t && i["ɵɵattribute"]("dir", e._rawDir)
            },
            inputs: {
                dir: "dir"
            },
            outputs: {
                change: "dirChange"
            },
            exportAs: ["dir"],
            features: [i["ɵɵProvidersFeature"]([{
                provide: s,
                useExisting: t
            }])]
        }),
        t
    }()
      , l = function() {
        function t() {}
        return t.ɵmod = i["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = i["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            }
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && i["ɵɵsetNgModuleScope"](t, {
            declarations: [c],
            exports: [c]
        }),
        t
    }();
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , r = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(7)
      , s = n(16)
      , c = n(6)
      , l = n(0)
      , u = (n(131),
    n(8))
      , d = n(0)
      , p = n(131)
      , h = function() {
        function t(t, e, n) {
            this.ToolboxMenuService = t,
            this.$timeout = e,
            this.hotkeys = n,
            this.navigationStack = [],
            this.items = [],
            this.itemsVisibilityUpdated = new s.Signal,
            this.transitionInProgress = !1,
            this.internalTransitionInProgress = !1,
            this.switchingItemsInProgress = !1,
            this.itemsMap = {},
            this._isMenuHidden = !0,
            this.verticalMenuTransitionDuration = 200,
            this.initItemsUpdateHandler()
        }
        return t.prototype.initItemsUpdateHandler = function() {
            var t = this;
            this.itemsVisibilityUpdated.connect((function() {
                if (t.isAnyItemVisible()) {
                    var e = t.navigationStack.findIndex((function(t) {
                        return !t.isVisible()
                    }
                    ));
                    e > -1 && a.times(t.navigationStack.length - e, (function() {
                        return t.goBack()
                    }
                    ))
                } else
                    t.closeMenu()
            }
            ))
        }
        ,
        t.prototype.openMenu = function() {
            this.isMenuHidden = !1
        }
        ,
        t.prototype.closeMenu = function() {
            var t = this;
            this.checkActiveItemOnExit((function() {
                return t.closeMenu()
            }
            )) || (this.isMenuHidden = !0)
        }
        ,
        t.prototype.goToItem = function(e) {
            return i(this, void 0, void 0, (function() {
                var n = this;
                return r(this, (function(i) {
                    switch (i.label) {
                    case 0:
                        if (this.isItemOnStack(e) || e.active || !e.isVisible())
                            return [2];
                        if (!e.isFullscreen || this.ToolboxMenuService.isMenuHidden)
                            return [3, 4];
                        i.label = 1;
                    case 1:
                        return i.trys.push([1, 3, , 4]),
                        [4, this.ToolboxMenuService.closeMenu(!0)];
                    case 2:
                        return i.sent(),
                        [3, 4];
                    case 3:
                        return i.sent(),
                        [2];
                    case 4:
                        return this.checkActiveItemOnExit((function() {
                            return n.goToItem(e).catch(u.handleWarning)
                        }
                        )) ? [2] : (e.onClick && e.onClick(),
                        t.isItemWithContent(e) ? (e.active = !0,
                        this.isTabSwitchItem(e) ? (this.switchingItemsInProgress = !0,
                        this.goBack(0)) : (this.internalTransitionInProgress = !0,
                        this.$timeout((function() {
                            return n.internalTransitionInProgress = !1
                        }
                        ), this.verticalMenuTransitionDuration).catch(u.handleWarning)),
                        e.isFullscreen && this.hotkeys.pause(),
                        this.navigationStack.push(e),
                        [2]) : [2])
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.goBack = function(t) {
            var e = this;
            if (void 0 === t && (t = this.verticalMenuTransitionDuration),
            !this.checkActiveItemOnExit((function() {
                return e.goBack()
            }
            ))) {
                var n = this.navigationStack.pop();
                this.internalTransitionInProgress = !0,
                this.$timeout((function() {
                    n.active = !1,
                    e.internalTransitionInProgress = !1,
                    e.switchingItemsInProgress = !1
                }
                ), t).catch(u.handleWarning)
            }
        }
        ,
        t.prototype.goToRoot = function() {
            var t = this;
            a.times(this.navigationStack.length, (function() {
                return t.goBack()
            }
            ))
        }
        ,
        t.prototype.continueHoldAction = function() {
            this.holdAction && (this.holdAction(),
            this.holdAction = void 0)
        }
        ,
        t.prototype.isParentItemsCollection = function(t) {
            var e = this.navigationStack.length;
            return e > 1 && a.inRange(this.navigationStack.indexOf(t), 0, e - 1)
        }
        ,
        t.prototype.isActiveItemsCollection = function(t) {
            var e = this.getActiveItem();
            return void 0 !== e && e === t
        }
        ,
        t.prototype.isChildItemsCollection = function(t) {
            return void 0 !== t && -1 === this.navigationStack.indexOf(t)
        }
        ,
        t.prototype.isAnyItemVisible = function() {
            return this.items.some((function(t) {
                return t.isVisible()
            }
            ))
        }
        ,
        t.prototype.getActiveItem = function() {
            var t = this.navigationStack.length;
            return t > 0 ? this.navigationStack[t - 1] : void 0
        }
        ,
        t.prototype.isTabSwitchItem = function(t) {
            var e = this.getActiveItem();
            return void 0 !== e && !a.includes(e.items, t)
        }
        ,
        Object.defineProperty(t.prototype, "isMenuHidden", {
            get: function() {
                return this._isMenuHidden
            },
            set: function(t) {
                var e = this;
                if (this._isMenuHidden !== t) {
                    if (this._isMenuHidden = t,
                    t) {
                        var n = this.getActiveItem()
                          , i = void 0 !== n && n.isFullscreen ? 0 : this.verticalMenuTransitionDuration;
                        this.$timeout((function() {
                            return e.goToRoot()
                        }
                        ), i).catch(u.handleWarning)
                    }
                    this.transitionInProgress = !0,
                    this.$timeout((function() {
                        return e.transitionInProgress = !1
                    }
                    ), this.verticalMenuTransitionDuration).catch(u.handleWarning)
                }
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.isItemOnStack = function(t) {
            return this.navigationStack.some((function(e) {
                return e === t
            }
            ))
        }
        ,
        t.prototype.addItem = function(t) {
            this.items.push(t),
            this.storeItem(t)
        }
        ,
        t.prototype.getItem = function(t) {
            return this.itemsMap[t]
        }
        ,
        t.isItemWithContent = function(t) {
            return void 0 !== t.template && t.template.length > 0 || void 0 !== t.items && t.items.length > 0
        }
        ,
        t.prototype.storeItem = function(t) {
            var e = this;
            this.itemsMap[t.key] = t,
            t.items.forEach((function(t) {
                return e.storeItem(t)
            }
            ))
        }
        ,
        t.prototype.checkActiveItemOnExit = function(t) {
            var e = this.getActiveItem();
            return void 0 !== e && e.isFullscreen && this.hotkeys.unpause(),
            !(void 0 === e || void 0 === e.onExit || !e.onExit()) && (this.holdAction = t,
            !0)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(d.ɵɵinject(p.ToolboxMenuService),d.ɵɵinject("$timeout"),d.ɵɵinject("hotkeys"))
        }
        ,
        t.ɵprov = d.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.SidebarMenuService = h,
    d.ɵsetClassMetadata(h, [{
        type: l.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: p.ToolboxMenuService
        }, {
            type: void 0,
            decorators: [{
                type: l.Inject,
                args: ["$timeout"]
            }]
        }, {
            type: void 0,
            decorators: [{
                type: l.Inject,
                args: ["hotkeys"]
            }]
        }]
    }
    ), null),
    o.module("IVWebApp").service("SidebarMenuService", c.downgradeInjectable(h))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(7)
      , o = n(4)
      , a = (n(15),
    n(391),
    n(54),
    n(103),
    n(41),
    n(25))
      , s = n(20)
      , c = n(16)
      , l = n(92)
      , u = (n(38),
    n(6))
      , d = n(0)
      , p = (n(17),
    n(8))
      , h = n(0)
      , f = n(15)
      , m = n(41)
      , g = n(54)
      , v = n(391)
      , y = n(103)
      , b = n(38)
      , w = n(17)
      , S = function() {
        function t(t, e, n, i, r, o, a, s, l, u) {
            var d = this;
            this.IV = t,
            this.gettextCatalog = e,
            this.$timeout = n,
            this.ConfigService = i,
            this.ErrorService = r,
            this.LicenseService = o,
            this.PoiSearchRepository = a,
            this.PoiRepository = s,
            this.SidebarMenuService = l,
            this.ViewService = u,
            this.poisChanged = new c.Signal,
            this.openEditor = new c.Signal,
            this.routeModeChanged = new c.Signal,
            this.onPoiOpen = new c.Signal,
            this.onPoiClose = new c.Signal,
            this.onPoisHighlight = new c.Signal,
            this.onPoisUnhighlight = new c.Signal,
            this.onPoiClick = new c.Signal,
            this.onPoiMouseOver = new c.Signal,
            this.onPoiMouseOut = new c.Signal,
            this.onPoiSave = new c.Signal,
            this.onPoiDelete = new c.Signal,
            this.isRouteMode = !1,
            this.wasRouteFound = !1,
            this.enableFeatures = {
                routing: !1,
                share: !0,
                view: !0,
                fullScreen: !1,
                visibilityCheck: !0
            },
            this.onPoiClickCollector = new c.CollectorWhile0(this.onPoiClick),
            this.uploadedIconsList = {},
            this.errorHandler = this.ErrorService.createDefaultOnceWrapper(),
            this.routing = {
                start: void 0,
                end: void 0
            },
            this._highlightedPois = new Set,
            s.entityRemoved.connect((function(t, e) {
                e || (d._openedPoi && d._openedPoi.id === t.id && d.closeAndUnhighlightPoi(),
                d.poisChanged.emit(),
                d.onPoiDelete.emit(t))
            }
            )),
            s.transformLocationAction.connect((function() {
                return d.poisChanged.emit()
            }
            )),
            i.updated.connect((function() {
                d.initEnableFeatures(),
                d.poisChanged.emit()
            }
            )),
            this.initEnableFeatures()
        }
        return Object.defineProperty(t.prototype, "poisToDisplay", {
            get: function() {
                return this._poisToDisplay
            },
            set: function(t) {
                this._poisToDisplay = t,
                this.poisChanged.emit()
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "highlightedPois", {
            get: function() {
                return this._highlightedPois
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "openedPoi", {
            get: function() {
                return this._openedPoi
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "focusedPoi", {
            get: function() {
                return this._focusedPoi
            },
            set: function(t) {
                this._focusedPoi && this.unhighlightPois([this._focusedPoi]),
                void 0 !== t && this.highlightPois([t]),
                this._focusedPoi = t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "movingPoi", {
            get: function() {
                return this._movingPoi
            },
            set: function(t) {
                this._movingPoi && this.unhighlightPois([this._movingPoi]),
                void 0 !== t && this.highlightPois([t]),
                this._movingPoi = t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "routeStart", {
            get: function() {
                return this.routing.start
            },
            set: function(t) {
                t ? this.highlightPois([t]) : this.routing.start !== this.routing.end && this.routing.start && this.unhighlightPois([this.routing.start]),
                this.routing.start = t,
                this.routeStart && this.routeStart.isLocationAsPoi && (this.routeStart.title = this.getNewTitle(this.routeStart.title, !0),
                this.routeStart.icon = n(1116))
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "routeEnd", {
            get: function() {
                return this.routing.end
            },
            set: function(t) {
                t ? this.highlightPois([t]) : this.routing.start !== this.routing.end && this.routing.end && this.unhighlightPois([this.routing.end]),
                this.routing.end = t,
                this.routeEnd && this.routeEnd.isLocationAsPoi && (this.routeEnd.title = this.getNewTitle(this.routeEnd.title, !1),
                this.routeEnd.icon = n(1117))
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.initEnableFeatures = function() {
            var t = this;
            this.ConfigService.initialized.then((function() {
                t.enableFeatures.share = t.ConfigService.getBoolean(a.Configs.POI_SHARE_ENABLED, t.enableFeatures.share),
                t.enableFeatures.fullScreen = t.ConfigService.getBoolean(a.Configs.POI_FULLSCREEN, t.enableFeatures.fullScreen),
                t.enableFeatures.visibilityCheck = t.ConfigService.getBoolean(a.Configs.POI_VISIBILITYCHECK_ENABLED, t.enableFeatures.visibilityCheck),
                t.LicenseService.initialized.then((function() {
                    t.enableFeatures.routing = t.LicenseService.isFeatureEnabled(l.LicenseFeatureType.ROUTING) && t.ConfigService.getBoolean(a.Configs.ROUTING_ENABLED, t.enableFeatures.routing)
                }
                )).catch((function() {}
                )),
                s.invalidateAngular()
            }
            )).catch((function() {}
            ))
        }
        ,
        t.prototype.refreshPois = function() {
            this.poisChanged.emit()
        }
        ,
        t.prototype.openAndHighlight = function(t) {
            this.closeAndUnhighlightPoi(),
            this.openPoi(t) && this.highlightPois([t])
        }
        ,
        t.prototype.openHighlightAndGoToPoi = function(t) {
            return this.movingPoi ? Promise.reject(void 0) : (this.openAndHighlight(t),
            this.goToPoi(t))
        }
        ,
        t.prototype.closeAndUnhighlightPoi = function() {
            this._openedPoi && (this._highlightedPois.has(this._openedPoi) && this.unhighlightPois([this._openedPoi]),
            this.closePoi())
        }
        ,
        t.prototype.openPoi = function(t) {
            return this.ConfigService.getBoolean(a.Configs.UI_POI_PANEL_VISIBLE, !0) ? (this.closePoi(),
            this.SidebarMenuService.closeMenu(),
            this.isRoutePickingPhase() || (this._openedPoi = t),
            this.onPoiOpen.emit(t),
            !0) : (this._openedPoi = t,
            !1)
        }
        ,
        t.prototype.closePoi = function() {
            if (this._openedPoi) {
                var t = this._openedPoi;
                this._openedPoi = void 0,
                this.onPoiClose.emit(t)
            }
        }
        ,
        t.prototype.highlightPois = function(t) {
            for (var e = 0, n = t; e < n.length; e++) {
                var i = n[e];
                this._highlightedPois.add(i)
            }
            this.onPoisHighlight.emit(t)
        }
        ,
        t.prototype.unhighlightPois = function(t) {
            for (var e = 0, n = t; e < n.length; e++) {
                var i = n[e];
                this._highlightedPois.delete(i)
            }
            this.onPoisUnhighlight.emit(t)
        }
        ,
        t.prototype.goToPoi = function(t) {
            return void 0 === t && (t = this._openedPoi),
            t ? this.IV.moveToPoi(t, !0) : Promise.reject("POI is not set to go to.")
        }
        ,
        t.prototype.enterRouteMode = function() {
            this.isRouteMode || (this.isRouteMode = !0,
            this.routeModeChanged.emit(),
            this.SidebarMenuService.closeMenu())
        }
        ,
        t.prototype.exitRouteMode = function() {
            this.isRouteMode && (this.isRouteMode = !1,
            this.routeModeChanged.emit())
        }
        ,
        t.prototype.recalculateTextEditorSize = function() {
            this.$timeout((function() {
                var t = document.getElementById("cke_editor1");
                if (t) {
                    var e = i.element("#cke_editor1 .cke_top")
                      , n = 100 + e.outerHeight(!0)
                      , r = 40 + (i.element("#editPoi").hasClass("full-window") ? 0 : 60)
                      , o = i.element("#editPoi .modal-header").outerHeight(!0) + i.element(".poiModalForm").outerHeight(!0) + i.element("#upload_panel").outerHeight(!0) + i.element("#editPoi .status-messages").outerHeight(!0) + i.element("#editPoi .modal-footer").outerHeight(!0) + r
                      , a = window.innerHeight - o
                      , s = t.style.height.replace("px", "")
                      , c = t.getElementsByClassName("cke_contents")[0]
                      , l = i.element(t);
                    if (c && (parseInt(s, 10) !== l.height() || "" === t.style.height || a !== l.height())) {
                        var u = Math.max(a, n);
                        c.style.height = (u - e.outerHeight(!0) - 15 - 4).toString() + "px",
                        t.style.height = (u - 4).toString() + "px"
                    }
                }
            }
            )).catch(p.handleWarning)
        }
        ,
        t.prototype.search = function(t, e, n) {
            var i = this;
            return this.errorHandler.wrap(this.PoiSearchRepository.search(t, e, n)).then((function(t) {
                return t = r.filter(t, (function(t) {
                    return !!t.poiType
                }
                )),
                r.forEach(t, (function(t) {
                    var e = i.PoiRepository.create();
                    e.fillFromSearchResult(t),
                    t.fakePoi = e
                }
                )),
                t
            }
            )).catch((function(t) {
                return console.error(t.data.msg),
                []
            }
            ))
        }
        ,
        t.prototype.deletePoi = function(t) {
            return this.PoiRepository.remove(t)
        }
        ,
        t.prototype.getUploadedIcons = function() {
            return this.updateUploadedIcons(),
            this.uploadedIconsList
        }
        ,
        t.prototype.uploadedCustomIcon = function(t) {
            this.uploadedIconsList[t] = !0
        }
        ,
        t.prototype.updateUploadedIcons = function() {
            for (var t = 0, e = this.PoiRepository.data; t < e.length; t++) {
                var n = e[t];
                n.hasCustomIcon() && (this.uploadedIconsList[n.icon] = !0)
            }
        }
        ,
        t.prototype.getLocationAsPoi = function(e, i) {
            void 0 === i && (i = !1);
            var r = e ? this.gettextCatalog.getString("Location") : this.gettextCatalog.getString("Current location");
            return !e && this.ViewService.mainView.getImage() ? e = this.ViewService.mainView.getImage().floorLocation : e || (e = this.ViewService.mainView.getCamera().position.clone().sub(new o.Vector3(0,0,t.DEFAULT_CUSTOM_LOCATION_HEIGHT))),
            this.PoiRepository.createReadOnly(e, i, r, n(1118))
        }
        ,
        t.prototype.getPoiFromSearchResultAsPoi = function(t) {
            return t.isPoiFromSearchResult ? this.PoiRepository.findOne(t.id) : Promise.resolve(t)
        }
        ,
        t.prototype.isRoutePickingPhase = function() {
            return this.isRouteMode && !(this.routing.start && this.routing.end)
        }
        ,
        t.prototype.isRoutePhase = function() {
            return this.isRouteMode && !!this.routing.start && !!this.routing.end
        }
        ,
        t.prototype.clearRouting = function() {
            this.routing.start = void 0,
            this.routing.end = void 0
        }
        ,
        t.prototype.clickPoi = function(t, e) {
            this.onPoiClickCollector.emit(t, e)
        }
        ,
        t.prototype.getNewTitle = function(t, e) {
            var n = this.gettextCatalog.getString("Start", void 0, "Noun")
              , i = this.gettextCatalog.getString("Destination");
            return t === this.gettextCatalog.getString("Location") || t === n || t === i ? e ? n : i : t
        }
        ,
        t.DEFAULT_CUSTOM_LOCATION_HEIGHT = 1.9,
        t.ɵfac = function(e) {
            return new (e || t)(h.ɵɵinject("IV"),h.ɵɵinject("gettextCatalog"),h.ɵɵinject("$timeout"),h.ɵɵinject(f.ConfigService),h.ɵɵinject(m.ErrorService),h.ɵɵinject(g.LicenseService),h.ɵɵinject(v.PoiSearchRepository),h.ɵɵinject(y.PoiRepository),h.ɵɵinject(b.SidebarMenuService),h.ɵɵinject(w.ViewService))
        }
        ,
        t.ɵprov = h.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.PoiService = S,
    h.ɵsetClassMetadata(S, [{
        type: d.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: void 0,
            decorators: [{
                type: d.Inject,
                args: ["IV"]
            }]
        }, {
            type: void 0,
            decorators: [{
                type: d.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: void 0,
            decorators: [{
                type: d.Inject,
                args: ["$timeout"]
            }]
        }, {
            type: f.ConfigService
        }, {
            type: m.ErrorService
        }, {
            type: g.LicenseService
        }, {
            type: v.PoiSearchRepository
        }, {
            type: y.PoiRepository
        }, {
            type: b.SidebarMenuService
        }, {
            type: w.ViewService
        }]
    }
    ), null),
    i.module("IVWebApp").service("PoiService", u.downgradeInjectable(S))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i, r = n(215);
    !function(t) {
        t.IOS = "IOS"
    }(i = e.Platform || (e.Platform = {}));
    var o, a = new Map;
    function s() {
        return document.getElementsByClassName("indoorViewer")[0]
    }
    function c() {
        return void 0 === o && (o = s().clientWidth <= 767),
        o
    }
    a.set(i.IOS, ["iPad Simulator", "iPhone Simulator", "iPod Simulator", "iPad", "iPhone", "iPod"]),
    e.isPlatform = function(t) {
        return a.get(t).indexOf(navigator.platform) > -1
    }
    ,
    e.isInIframe = function() {
        try {
            return window.self !== window.top
        } catch (t) {
            return !0
        }
    }
    ,
    window && window.IV && window.IV.bootstrapped((function() {
        r.addResizeEventListener(s(), (function() {
            o = void 0
        }
        ))
    }
    )),
    e.isMobileLayout = c,
    e.isDesktopLayout = function() {
        return !c()
    }
    ,
    e.isMobileBrowser = function() {
        var t = navigator.userAgent || navigator.vendor || window.opera;
        return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|ad|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(t.substr(0, 4))
    }
    ,
    e.isBrowserIE = function() {
        return /(Trident\/7\.0)/.test(navigator.userAgent)
    }
    ,
    e.vibrate = function(t) {
        return !!navigator.vibrate && navigator.vibrate(void 0 !== t ? t : 100)
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(1012)
      , o = n(1013)
      , a = n(1014)
      , s = n(522)
      , c = n(1015)
      , l = (n(61),
    n(1016))
      , u = n(521)
      , d = n(1017)
      , p = n(1018)
      , h = n(1019)
      , f = n(1020)
      , m = n(1021)
      , g = n(1022)
      , v = n(1023)
      , y = n(1024)
      , b = n(1025)
      , w = n(1026)
      , S = n(1027)
      , x = n(1028)
      , M = n(1029)
      , E = n(6)
      , C = n(0)
      , A = n(1030)
      , T = n(1031)
      , O = n(1032)
      , _ = n(0)
      , P = n(61)
      , I = function() {
        function t(t, e, n, i, r) {
            this.gettextCatalog = t,
            this.MessageReportingService = e,
            this.isAnyReporterAdded = !1,
            this.wrapper = r,
            this.networkDetectors = n,
            this.exceptionDetectors = i
        }
        return t.prototype.build = function() {
            return this.isAnyReporterAdded || this.wrapper.addReporters(new c.ConsoleReporter),
            this.wrapper
        }
        ,
        t.prototype.report = function(t, e) {
            return void 0 === t && (t = !0),
            void 0 === e && (e = !1),
            this.isAnyReporterAdded = !0,
            e && this.wrapper.addReporters(new c.ConsoleReporter),
            t && this.wrapper.addReporters(new l.MessageServiceReporter(this.MessageReportingService,this.gettextCatalog)),
            this
        }
        ,
        t.prototype.network = function() {
            var t;
            return (t = this.wrapper).addDetectors.apply(t, this.networkDetectors),
            this
        }
        ,
        t.prototype.exceptions = function() {
            var t;
            return (t = this.wrapper).addDetectors.apply(t, this.exceptionDetectors),
            this
        }
        ,
        t.prototype.generic = function(t) {
            return void 0 !== t && t && this.wrapper.addDetectors(new s.GenericDetector(this.gettextCatalog,t)),
            this
        }
        ,
        t.prototype.detector = function(t) {
            return t && this.wrapper.addDetectors(t),
            this
        }
        ,
        t
    }()
      , k = function() {
        function t(t, e) {
            this.gettextCatalog = t,
            this.MessageReportingService = e,
            this.networkDetectors = [],
            this.networkDetectors.push(new a.NetworkDownDetector(this.gettextCatalog), new o.ProxyDetector(this.gettextCatalog), new d.RequestErrorDetector(this.gettextCatalog))
        }
        return t.prototype.createDefaultWrapper = function() {
            return this.newWrapper().report().exceptions().network().build()
        }
        ,
        t.prototype.createDefaultOnceWrapper = function() {
            return this.newOnceWrapper().report().exceptions().network().build()
        }
        ,
        t.prototype.newWrapper = function() {
            return new I(this.gettextCatalog,this.MessageReportingService,this.networkDetectors,t.getAllExceptionDetectors(this.gettextCatalog),new u.ErrorWrapper)
        }
        ,
        t.prototype.newOnceWrapper = function() {
            return new I(this.gettextCatalog,this.MessageReportingService,this.networkDetectors,t.getAllExceptionDetectors(this.gettextCatalog),new r.OnceErrorWrapper)
        }
        ,
        t.getErrorMessage = function(t, e) {
            for (var n = 0, i = this.getAllExceptionDetectors(e); n < i.length; n++) {
                var r = i[n];
                if (r.applies(t))
                    return r.currentErrorMessage
            }
        }
        ,
        t.getAllJobFailureDetectors = function(t) {
            var e = [];
            return e.push(new w.OutOfMemoryDetector(t)),
            e.push(new x.InconsistentScanDetector(t)),
            e.push(new S.ProcessingToolFailureDetector(t)),
            e.push(new M.TooManyRunningJobsDetector(t)),
            e.push(new A.EmptyPointCloudDetector(t)),
            e.push(new T.MapTilingUnsupportedDetector(t)),
            e
        }
        ,
        t.getAllExceptionDetectors = function(t) {
            var e = [];
            return e.push(new b.ServerBadDataOnDiskExceptionDetector(t)),
            e.push(new p.ServerFileNotFoundExceptionDetector(t)),
            e.push(new h.ServerMissingFileOnDiskExceptionDetector(t)),
            e.push(new f.ServerNoSuchObjectExceptionDetector(t)),
            e.push(new m.ServerObjectConflictExceptionDetector(t)),
            e.push(new g.ServerSiteModelNameExceptionDetector(t)),
            e.push(new v.ServerUploadExceptionDetector(t)),
            e.push(new y.ServerVariousExceptionDetector(t)),
            e.push(new O.ServerJobValidationException(t)),
            e
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(_.ɵɵinject("gettextCatalog"),_.ɵɵinject(P.MessageReportingService))
        }
        ,
        t.ɵprov = _.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.ErrorService = k,
    _.ɵsetClassMetadata(k, [{
        type: C.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: void 0,
            decorators: [{
                type: C.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: P.MessageReportingService
        }]
    }
    ), null),
    i.module("IVWebApp").service("ErrorService", E.downgradeInjectable(k))
}
, function(t, e) {
    t.exports = function(t) {
        return "object" == typeof t ? null !== t : "function" == typeof t
    }
}
, function(t, e, n) {
    var i = n(18);
    t.exports = !i((function() {
        return 7 != Object.defineProperty({}, 1, {
            get: function() {
                return 7
            }
        })[1]
    }
    ))
}
, function(t, e, n) {
    var i = n(122)
      , r = Math.min;
    t.exports = function(t) {
        return t > 0 ? r(i(t), 9007199254740991) : 0
    }
}
, function(t, e, n) {
    var i = n(34)
      , r = n(284)
      , o = n(58)
      , a = n(236)
      , s = n(352)
      , c = n(460)
      , l = r("wks")
      , u = i.Symbol
      , d = c ? u : u && u.withoutSetter || a;
    t.exports = function(t) {
        return o(l, t) || (s && o(u, t) ? l[t] = u[t] : l[t] = d("Symbol." + t)),
        l[t]
    }
}
, function(t, e, n) {
    "use strict";
    var i, r = n(371), o = n(43), a = n(34), s = n(42), c = n(58), l = n(242), u = n(88), d = n(98), p = n(48).f, h = n(99), f = n(191), m = n(45), g = n(236), v = a.Int8Array, y = v && v.prototype, b = a.Uint8ClampedArray, w = b && b.prototype, S = v && h(v), x = y && h(y), M = Object.prototype, E = M.isPrototypeOf, C = m("toStringTag"), A = g("TYPED_ARRAY_TAG"), T = r && !!f && "Opera" !== l(a.opera), O = !1, _ = {
        Int8Array: 1,
        Uint8Array: 1,
        Uint8ClampedArray: 1,
        Int16Array: 2,
        Uint16Array: 2,
        Int32Array: 4,
        Uint32Array: 4,
        Float32Array: 4,
        Float64Array: 8
    }, P = function(t) {
        return s(t) && c(_, l(t))
    };
    for (i in _)
        a[i] || (T = !1);
    if ((!T || "function" != typeof S || S === Function.prototype) && (S = function() {
        throw TypeError("Incorrect invocation")
    }
    ,
    T))
        for (i in _)
            a[i] && f(a[i], S);
    if ((!T || !x || x === M) && (x = S.prototype,
    T))
        for (i in _)
            a[i] && f(a[i].prototype, x);
    if (T && h(w) !== x && f(w, x),
    o && !c(x, C))
        for (i in O = !0,
        p(x, C, {
            get: function() {
                return s(this) ? this[A] : void 0
            }
        }),
        _)
            a[i] && u(a[i], A, i);
    t.exports = {
        NATIVE_ARRAY_BUFFER_VIEWS: T,
        TYPED_ARRAY_TAG: O && A,
        aTypedArray: function(t) {
            if (P(t))
                return t;
            throw TypeError("Target is not a typed array")
        },
        aTypedArrayConstructor: function(t) {
            if (f) {
                if (E.call(S, t))
                    return t
            } else
                for (var e in _)
                    if (c(_, i)) {
                        var n = a[e];
                        if (n && (t === n || E.call(n, t)))
                            return t
                    }
            throw TypeError("Target is not a typed array constructor")
        },
        exportTypedArrayMethod: function(t, e, n) {
            if (o) {
                if (n)
                    for (var i in _) {
                        var r = a[i];
                        r && c(r.prototype, t) && delete r.prototype[t]
                    }
                x[t] && !n || d(x, t, n ? e : T && y[t] || e)
            }
        },
        exportTypedArrayStaticMethod: function(t, e, n) {
            var i, r;
            if (o) {
                if (f) {
                    if (n)
                        for (i in _)
                            (r = a[i]) && c(r, t) && delete r[t];
                    if (S[t] && !n)
                        return;
                    try {
                        return d(S, t, n ? e : T && v[t] || e)
                    } catch (t) {}
                }
                for (i in _)
                    !(r = a[i]) || r[t] && !n || d(r, t, e)
            }
        },
        isView: function(t) {
            var e = l(t);
            return "DataView" === e || c(_, e)
        },
        isTypedArray: P,
        TypedArray: S,
        TypedArrayPrototype: x
    }
}
, function(t, e, n) {
    "use strict";
    n.r(e),
    n.d(e, "APR", (function() {
        return Dt
    }
    )),
    n.d(e, "AUG", (function() {
        return jt
    }
    )),
    n.d(e, "AnimationCurves", (function() {
        return x
    }
    )),
    n.d(e, "AnimationDurations", (function() {
        return M
    }
    )),
    n.d(e, "DEC", (function() {
        return Bt
    }
    )),
    n.d(e, "DateAdapter", (function() {
        return V
    }
    )),
    n.d(e, "ErrorStateMatcher", (function() {
        return J
    }
    )),
    n.d(e, "FEB", (function() {
        return It
    }
    )),
    n.d(e, "GestureConfig", (function() {
        return nt
    }
    )),
    n.d(e, "JAN", (function() {
        return Pt
    }
    )),
    n.d(e, "JUL", (function() {
        return Nt
    }
    )),
    n.d(e, "JUN", (function() {
        return Lt
    }
    )),
    n.d(e, "MAR", (function() {
        return kt
    }
    )),
    n.d(e, "MATERIAL_SANITY_CHECKS", (function() {
        return A
    }
    )),
    n.d(e, "MAT_DATE_FORMATS", (function() {
        return F
    }
    )),
    n.d(e, "MAT_DATE_LOCALE", (function() {
        return R
    }
    )),
    n.d(e, "MAT_DATE_LOCALE_FACTORY", (function() {
        return L
    }
    )),
    n.d(e, "MAT_DATE_LOCALE_PROVIDER", (function() {
        return j
    }
    )),
    n.d(e, "MAT_HAMMER_OPTIONS", (function() {
        return Q
    }
    )),
    n.d(e, "MAT_LABEL_GLOBAL_OPTIONS", (function() {
        return _t
    }
    )),
    n.d(e, "MAT_NATIVE_DATE_FORMATS", (function() {
        return q
    }
    )),
    n.d(e, "MAT_OPTION_PARENT_COMPONENT", (function() {
        return Et
    }
    )),
    n.d(e, "MAT_RIPPLE_GLOBAL_OPTIONS", (function() {
        return ft
    }
    )),
    n.d(e, "MAY", (function() {
        return Rt
    }
    )),
    n.d(e, "MatCommonModule", (function() {
        return T
    }
    )),
    n.d(e, "MatLine", (function() {
        return it
    }
    )),
    n.d(e, "MatLineModule", (function() {
        return st
    }
    )),
    n.d(e, "MatLineSetter", (function() {
        return at
    }
    )),
    n.d(e, "MatNativeDateModule", (function() {
        return K
    }
    )),
    n.d(e, "MatOptgroup", (function() {
        return St
    }
    )),
    n.d(e, "MatOption", (function() {
        return Ct
    }
    )),
    n.d(e, "MatOptionModule", (function() {
        return Ot
    }
    )),
    n.d(e, "MatOptionSelectionChange", (function() {
        return Mt
    }
    )),
    n.d(e, "MatPseudoCheckbox", (function() {
        return vt
    }
    )),
    n.d(e, "MatPseudoCheckboxModule", (function() {
        return yt
    }
    )),
    n.d(e, "MatRipple", (function() {
        return mt
    }
    )),
    n.d(e, "MatRippleModule", (function() {
        return gt
    }
    )),
    n.d(e, "NOV", (function() {
        return Ut
    }
    )),
    n.d(e, "NativeDateAdapter", (function() {
        return W
    }
    )),
    n.d(e, "NativeDateModule", (function() {
        return X
    }
    )),
    n.d(e, "OCT", (function() {
        return Ft
    }
    )),
    n.d(e, "RippleRef", (function() {
        return ct
    }
    )),
    n.d(e, "RippleRenderer", (function() {
        return ht
    }
    )),
    n.d(e, "SEP", (function() {
        return Vt
    }
    )),
    n.d(e, "ShowOnDirtyErrorStateMatcher", (function() {
        return Z
    }
    )),
    n.d(e, "VERSION", (function() {
        return S
    }
    )),
    n.d(e, "_countGroupLabelsBeforeOption", (function() {
        return At
    }
    )),
    n.d(e, "_getOptionScrollPosition", (function() {
        return Tt
    }
    )),
    n.d(e, "defaultRippleAnimationConfig", (function() {
        return lt
    }
    )),
    n.d(e, "mixinColor", (function() {
        return _
    }
    )),
    n.d(e, "mixinDisableRipple", (function() {
        return P
    }
    )),
    n.d(e, "mixinDisabled", (function() {
        return O
    }
    )),
    n.d(e, "mixinErrorState", (function() {
        return k
    }
    )),
    n.d(e, "mixinInitialized", (function() {
        return D
    }
    )),
    n.d(e, "mixinTabIndex", (function() {
        return I
    }
    )),
    n.d(e, "setLines", (function() {
        return rt
    }
    )),
    n.d(e, "ɵ0", (function() {
        return Y
    }
    )),
    n.d(e, "ɵ1", (function() {
        return tt
    }
    )),
    n.d(e, "ɵangular_material_src_material_core_core_a", (function() {
        return C
    }
    ));
    var i = n(0)
      , r = n(63)
      , o = n(37)
      , a = new i.Version("9.2.2")
      , s = n(3)
      , c = n(1)
      , l = n(23)
      , u = n(32)
      , d = n(12)
      , p = n(13)
      , h = n(125)
      , f = n(438)
      , m = n(95)
      , g = n(60)
      , v = ["*", [["mat-option"], ["ng-container"]]]
      , y = ["*", "mat-option, ng-container"];
    function b(t, e) {
        if (1 & t && i["ɵɵelement"](0, "mat-pseudo-checkbox", 3),
        2 & t) {
            var n = i["ɵɵnextContext"]();
            i["ɵɵproperty"]("state", n.selected ? "checked" : "unchecked")("disabled", n.disabled)
        }
    }
    var w = ["*"]
      , S = new i.Version("9.2.2")
      , x = function() {
        function t() {}
        return t.STANDARD_CURVE = "cubic-bezier(0.4,0.0,0.2,1)",
        t.DECELERATION_CURVE = "cubic-bezier(0.0,0.0,0.2,1)",
        t.ACCELERATION_CURVE = "cubic-bezier(0.4,0.0,1,1)",
        t.SHARP_CURVE = "cubic-bezier(0.4,0.0,0.6,1)",
        t
    }()
      , M = function() {
        function t() {}
        return t.COMPLEX = "375ms",
        t.ENTERING = "225ms",
        t.EXITING = "195ms",
        t
    }()
      , E = new i.Version("9.2.2");
    function C() {
        return !0
    }
    var A = new i.InjectionToken("mat-sanity-checks",{
        providedIn: "root",
        factory: C
    })
      , T = function() {
        function t(t, e, n) {
            this._hasDoneGlobalChecks = !1,
            this._document = n,
            t._applyBodyHighContrastModeCssClasses(),
            this._sanityChecks = e,
            this._hasDoneGlobalChecks || (this._checkDoctypeIsDefined(),
            this._checkThemeIsPresent(),
            this._checkCdkVersionMatch(),
            this._hasDoneGlobalChecks = !0)
        }
        return t.prototype._getDocument = function() {
            var t = this._document || document;
            return "object" == typeof t && t ? t : null
        }
        ,
        t.prototype._getWindow = function() {
            var t = this._getDocument()
              , e = (null == t ? void 0 : t.defaultView) || window;
            return "object" == typeof e && e ? e : null
        }
        ,
        t.prototype._checksAreEnabled = function() {
            return Object(i.isDevMode)() && !this._isTestEnv()
        }
        ,
        t.prototype._isTestEnv = function() {
            var t = this._getWindow();
            return t && (t.__karma__ || t.jasmine)
        }
        ,
        t.prototype._checkDoctypeIsDefined = function() {
            var t = this._checksAreEnabled() && (!0 === this._sanityChecks || this._sanityChecks.doctype)
              , e = this._getDocument();
            t && e && !e.doctype && console.warn("Current document does not have a doctype. This may cause some Angular Material components not to behave as expected.")
        }
        ,
        t.prototype._checkThemeIsPresent = function() {
            var t = !this._checksAreEnabled() || !1 === this._sanityChecks || !this._sanityChecks.theme
              , e = this._getDocument();
            if (!t && e && e.body && "function" == typeof getComputedStyle) {
                var n = e.createElement("div");
                n.classList.add("mat-theme-loaded-marker"),
                e.body.appendChild(n);
                var i = getComputedStyle(n);
                i && "none" !== i.display && console.warn("Could not find Angular Material core theme. Most Material components may not work as expected. For more info refer to the theming guide: https://material.angular.io/guide/theming"),
                e.body.removeChild(n)
            }
        }
        ,
        t.prototype._checkCdkVersionMatch = function() {
            this._checksAreEnabled() && (!0 === this._sanityChecks || this._sanityChecks.version) && E.full !== a.full && console.warn("The Angular Material version (" + E.full + ") does not match the Angular CDK version (" + a.full + ").\nPlease ensure the versions of these two packages exactly match.")
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: r.j
            }, {
                type: void 0,
                decorators: [{
                    type: i.Optional
                }, {
                    type: i.Inject,
                    args: [A]
                }]
            }, {
                type: void 0,
                decorators: [{
                    type: i.Optional
                }, {
                    type: i.Inject,
                    args: [s.DOCUMENT]
                }]
            }]
        }
        ,
        t.ɵmod = i["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = i["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)(i["ɵɵinject"](r.j),i["ɵɵinject"](A, 8),i["ɵɵinject"](s.DOCUMENT, 8))
            },
            imports: [[o.BidiModule], o.BidiModule]
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && i["ɵɵsetNgModuleScope"](t, {
            imports: function() {
                return [o.BidiModule]
            },
            exports: function() {
                return [o.BidiModule]
            }
        }),
        t
    }();
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function O(t) {
        return function(t) {
            function e() {
                for (var e = [], n = 0; n < arguments.length; n++)
                    e[n] = arguments[n];
                var i = t.apply(this, Object(c.h)(e)) || this;
                return i._disabled = !1,
                i
            }
            return Object(c.c)(e, t),
            Object.defineProperty(e.prototype, "disabled", {
                get: function() {
                    return this._disabled
                },
                set: function(t) {
                    this._disabled = Object(l.c)(t)
                },
                enumerable: !0,
                configurable: !0
            }),
            e
        }(t)
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function _(t, e) {
        return function(t) {
            function n() {
                for (var n = [], i = 0; i < arguments.length; i++)
                    n[i] = arguments[i];
                var r = t.apply(this, Object(c.h)(n)) || this;
                return r.color = e,
                r
            }
            return Object(c.c)(n, t),
            Object.defineProperty(n.prototype, "color", {
                get: function() {
                    return this._color
                },
                set: function(t) {
                    var n = t || e;
                    n !== this._color && (this._color && this._elementRef.nativeElement.classList.remove("mat-" + this._color),
                    n && this._elementRef.nativeElement.classList.add("mat-" + n),
                    this._color = n)
                },
                enumerable: !0,
                configurable: !0
            }),
            n
        }(t)
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function P(t) {
        return function(t) {
            function e() {
                for (var e = [], n = 0; n < arguments.length; n++)
                    e[n] = arguments[n];
                var i = t.apply(this, Object(c.h)(e)) || this;
                return i._disableRipple = !1,
                i
            }
            return Object(c.c)(e, t),
            Object.defineProperty(e.prototype, "disableRipple", {
                get: function() {
                    return this._disableRipple
                },
                set: function(t) {
                    this._disableRipple = Object(l.c)(t)
                },
                enumerable: !0,
                configurable: !0
            }),
            e
        }(t)
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function I(t, e) {
        return void 0 === e && (e = 0),
        function(t) {
            function n() {
                for (var n = [], i = 0; i < arguments.length; i++)
                    n[i] = arguments[i];
                var r = t.apply(this, Object(c.h)(n)) || this;
                return r._tabIndex = e,
                r
            }
            return Object(c.c)(n, t),
            Object.defineProperty(n.prototype, "tabIndex", {
                get: function() {
                    return this.disabled ? -1 : this._tabIndex
                },
                set: function(t) {
                    this._tabIndex = null != t ? t : e
                },
                enumerable: !0,
                configurable: !0
            }),
            n
        }(t)
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function k(t) {
        return function(t) {
            function e() {
                for (var e = [], n = 0; n < arguments.length; n++)
                    e[n] = arguments[n];
                var i = t.apply(this, Object(c.h)(e)) || this;
                return i.errorState = !1,
                i.stateChanges = new u.a,
                i
            }
            return Object(c.c)(e, t),
            e.prototype.updateErrorState = function() {
                var t = this.errorState
                  , e = this._parentFormGroup || this._parentForm
                  , n = this.errorStateMatcher || this._defaultErrorStateMatcher
                  , i = this.ngControl ? this.ngControl.control : null
                  , r = n.isErrorState(i, e);
                r !== t && (this.errorState = r,
                this.stateChanges.next())
            }
            ,
            e
        }(t)
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function D(t) {
        return function(t) {
            function e() {
                for (var e = [], n = 0; n < arguments.length; n++)
                    e[n] = arguments[n];
                var i = t.apply(this, Object(c.h)(e)) || this;
                return i._isInitialized = !1,
                i._pendingSubscribers = [],
                i.initialized = new d.a((function(t) {
                    i._isInitialized ? i._notifySubscriber(t) : i._pendingSubscribers.push(t)
                }
                )),
                i
            }
            return Object(c.c)(e, t),
            e.prototype._markInitialized = function() {
                if (this._isInitialized)
                    throw Error("This directive has already been marked as initialized and should not be called twice.");
                this._isInitialized = !0,
                this._pendingSubscribers.forEach(this._notifySubscriber),
                this._pendingSubscribers = null
            }
            ,
            e.prototype._notifySubscriber = function(t) {
                t.next(),
                t.complete()
            }
            ,
            e
        }(t)
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var R = new i.InjectionToken("MAT_DATE_LOCALE",{
        providedIn: "root",
        factory: L
    });
    function L() {
        return Object(i.inject)(i.LOCALE_ID)
    }
    var N, j = {
        provide: R,
        useExisting: i.LOCALE_ID
    }, V = function() {
        function t() {
            this._localeChanges = new u.a
        }
        return Object.defineProperty(t.prototype, "localeChanges", {
            get: function() {
                return this._localeChanges
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.deserialize = function(t) {
            return null == t || this.isDateInstance(t) && this.isValid(t) ? t : this.invalid()
        }
        ,
        t.prototype.setLocale = function(t) {
            this.locale = t,
            this._localeChanges.next()
        }
        ,
        t.prototype.compareDate = function(t, e) {
            return this.getYear(t) - this.getYear(e) || this.getMonth(t) - this.getMonth(e) || this.getDate(t) - this.getDate(e)
        }
        ,
        t.prototype.sameDate = function(t, e) {
            if (t && e) {
                var n = this.isValid(t)
                  , i = this.isValid(e);
                return n && i ? !this.compareDate(t, e) : n == i
            }
            return t == e
        }
        ,
        t.prototype.clampDate = function(t, e, n) {
            return e && this.compareDate(t, e) < 0 ? e : n && this.compareDate(t, n) > 0 ? n : t
        }
        ,
        t
    }(), F = new i.InjectionToken("mat-date-formats");
    try {
        N = "undefined" != typeof Intl
    } catch (t) {
        N = !1
    }
    var U = {
        long: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
        short: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
        narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"]
    }
      , B = H(31, (function(t) {
        return String(t + 1)
    }
    ))
      , z = {
        long: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
        short: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
        narrow: ["S", "M", "T", "W", "T", "F", "S"]
    }
      , G = /^\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|(?:(?:\+|-)\d{2}:\d{2}))?)?$/;
    function H(t, e) {
        for (var n = Array(t), i = 0; i < t; i++)
            n[i] = e(i);
        return n
    }
    var W = function(t) {
        function e(e, n) {
            var i = t.call(this) || this;
            return i.useUtcForDisplay = !0,
            t.prototype.setLocale.call(i, e),
            i.useUtcForDisplay = !n.TRIDENT,
            i._clampDate = n.TRIDENT || n.EDGE,
            i
        }
        return Object(c.c)(e, t),
        e.prototype.getYear = function(t) {
            return t.getFullYear()
        }
        ,
        e.prototype.getMonth = function(t) {
            return t.getMonth()
        }
        ,
        e.prototype.getDate = function(t) {
            return t.getDate()
        }
        ,
        e.prototype.getDayOfWeek = function(t) {
            return t.getDay()
        }
        ,
        e.prototype.getMonthNames = function(t) {
            var e = this;
            if (N) {
                var n = new Intl.DateTimeFormat(this.locale,{
                    month: t,
                    timeZone: "utc"
                });
                return H(12, (function(t) {
                    return e._stripDirectionalityCharacters(e._format(n, new Date(2017,t,1)))
                }
                ))
            }
            return U[t]
        }
        ,
        e.prototype.getDateNames = function() {
            var t = this;
            if (N) {
                var e = new Intl.DateTimeFormat(this.locale,{
                    day: "numeric",
                    timeZone: "utc"
                });
                return H(31, (function(n) {
                    return t._stripDirectionalityCharacters(t._format(e, new Date(2017,0,n + 1)))
                }
                ))
            }
            return B
        }
        ,
        e.prototype.getDayOfWeekNames = function(t) {
            var e = this;
            if (N) {
                var n = new Intl.DateTimeFormat(this.locale,{
                    weekday: t,
                    timeZone: "utc"
                });
                return H(7, (function(t) {
                    return e._stripDirectionalityCharacters(e._format(n, new Date(2017,0,t + 1)))
                }
                ))
            }
            return z[t]
        }
        ,
        e.prototype.getYearName = function(t) {
            if (N) {
                var e = new Intl.DateTimeFormat(this.locale,{
                    year: "numeric",
                    timeZone: "utc"
                });
                return this._stripDirectionalityCharacters(this._format(e, t))
            }
            return String(this.getYear(t))
        }
        ,
        e.prototype.getFirstDayOfWeek = function() {
            return 0
        }
        ,
        e.prototype.getNumDaysInMonth = function(t) {
            return this.getDate(this._createDateWithOverflow(this.getYear(t), this.getMonth(t) + 1, 0))
        }
        ,
        e.prototype.clone = function(t) {
            return new Date(t.getTime())
        }
        ,
        e.prototype.createDate = function(t, e, n) {
            if (e < 0 || e > 11)
                throw Error('Invalid month index "' + e + '". Month index has to be between 0 and 11.');
            if (n < 1)
                throw Error('Invalid date "' + n + '". Date has to be greater than 0.');
            var i = this._createDateWithOverflow(t, e, n);
            if (i.getMonth() != e)
                throw Error('Invalid date "' + n + '" for month with index "' + e + '".');
            return i
        }
        ,
        e.prototype.today = function() {
            return new Date
        }
        ,
        e.prototype.parse = function(t) {
            return "number" == typeof t ? new Date(t) : t ? new Date(Date.parse(t)) : null
        }
        ,
        e.prototype.format = function(t, e) {
            if (!this.isValid(t))
                throw Error("NativeDateAdapter: Cannot format invalid date.");
            if (N) {
                this._clampDate && (t.getFullYear() < 1 || t.getFullYear() > 9999) && (t = this.clone(t)).setFullYear(Math.max(1, Math.min(9999, t.getFullYear()))),
                e = Object(c.a)(Object(c.a)({}, e), {
                    timeZone: "utc"
                });
                var n = new Intl.DateTimeFormat(this.locale,e);
                return this._stripDirectionalityCharacters(this._format(n, t))
            }
            return this._stripDirectionalityCharacters(t.toDateString())
        }
        ,
        e.prototype.addCalendarYears = function(t, e) {
            return this.addCalendarMonths(t, 12 * e)
        }
        ,
        e.prototype.addCalendarMonths = function(t, e) {
            var n = this._createDateWithOverflow(this.getYear(t), this.getMonth(t) + e, this.getDate(t));
            return this.getMonth(n) != ((this.getMonth(t) + e) % 12 + 12) % 12 && (n = this._createDateWithOverflow(this.getYear(n), this.getMonth(n), 0)),
            n
        }
        ,
        e.prototype.addCalendarDays = function(t, e) {
            return this._createDateWithOverflow(this.getYear(t), this.getMonth(t), this.getDate(t) + e)
        }
        ,
        e.prototype.toIso8601 = function(t) {
            return [t.getUTCFullYear(), this._2digit(t.getUTCMonth() + 1), this._2digit(t.getUTCDate())].join("-")
        }
        ,
        e.prototype.deserialize = function(e) {
            if ("string" == typeof e) {
                if (!e)
                    return null;
                if (G.test(e)) {
                    var n = new Date(e);
                    if (this.isValid(n))
                        return n
                }
            }
            return t.prototype.deserialize.call(this, e)
        }
        ,
        e.prototype.isDateInstance = function(t) {
            return t instanceof Date
        }
        ,
        e.prototype.isValid = function(t) {
            return !isNaN(t.getTime())
        }
        ,
        e.prototype.invalid = function() {
            return new Date(NaN)
        }
        ,
        e.prototype._createDateWithOverflow = function(t, e, n) {
            var i = new Date(t,e,n);
            return t >= 0 && t < 100 && i.setFullYear(this.getYear(i) - 1900),
            i
        }
        ,
        e.prototype._2digit = function(t) {
            return ("00" + t).slice(-2)
        }
        ,
        e.prototype._stripDirectionalityCharacters = function(t) {
            return t.replace(/[\u200e\u200f]/g, "")
        }
        ,
        e.prototype._format = function(t, e) {
            var n = new Date(Date.UTC(e.getFullYear(), e.getMonth(), e.getDate(), e.getHours(), e.getMinutes(), e.getSeconds(), e.getMilliseconds()));
            return t.format(n)
        }
        ,
        e.ctorParameters = function() {
            return [{
                type: String,
                decorators: [{
                    type: i.Optional
                }, {
                    type: i.Inject,
                    args: [R]
                }]
            }, {
                type: p.a
            }]
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(i["ɵɵinject"](R, 8),i["ɵɵinject"](p.a))
        }
        ,
        e.ɵprov = i["ɵɵdefineInjectable"]({
            token: e,
            factory: function(t) {
                return e.ɵfac(t)
            }
        }),
        e
    }(V)
      , q = {
        parse: {
            dateInput: null
        },
        display: {
            dateInput: {
                year: "numeric",
                month: "numeric",
                day: "numeric"
            },
            monthYearLabel: {
                year: "numeric",
                month: "short"
            },
            dateA11yLabel: {
                year: "numeric",
                month: "long",
                day: "numeric"
            },
            monthYearA11yLabel: {
                year: "numeric",
                month: "long"
            }
        }
    }
      , X = function() {
        function t() {}
        return t.ɵmod = i["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = i["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            },
            providers: [{
                provide: V,
                useClass: W
            }],
            imports: [[p.b]]
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && i["ɵɵsetNgModuleScope"](t, {
            imports: function() {
                return [p.b]
            }
        }),
        t
    }()
      , Y = q
      , K = function() {
        function t() {}
        return t.ɵmod = i["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = i["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            },
            providers: [{
                provide: F,
                useValue: Y
            }],
            imports: [[X]]
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && i["ɵɵsetNgModuleScope"](t, {
            imports: [X]
        }),
        t
    }()
      , Z = function() {
        function t() {}
        return t.prototype.isErrorState = function(t, e) {
            return !!(t && t.invalid && (t.dirty || e && e.submitted))
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵprov = i["ɵɵdefineInjectable"]({
            token: t,
            factory: function(e) {
                return t.ɵfac(e)
            }
        }),
        t
    }()
      , J = function() {
        function t() {}
        return t.prototype.isErrorState = function(t, e) {
            return !!(t && t.invalid && (t.touched || e && e.submitted))
        }
        ,
        t.ɵprov = Object(i["ɵɵdefineInjectable"])({
            factory: function() {
                return new t
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t
    }()
      , Q = new i.InjectionToken("MAT_HAMMER_OPTIONS")
      , $ = ["longpress", "slide", "slidestart", "slideend", "slideright", "slideleft"]
      , tt = function() {}
      , et = {
        on: function() {},
        off: tt
    }
      , nt = function(t) {
        function e(e, n) {
            var i = t.call(this) || this;
            return i._hammerOptions = e,
            i.events = $,
            i
        }
        return Object(c.c)(e, t),
        e.prototype.buildHammer = function(t) {
            var e = "undefined" != typeof window ? window.Hammer : null;
            if (!e)
                return et;
            var n = new e(t,this._hammerOptions || void 0)
              , i = new e.Pan
              , r = new e.Swipe
              , o = new e.Press
              , a = this._createRecognizer(i, {
                event: "slide",
                threshold: 0
            }, r)
              , s = this._createRecognizer(o, {
                event: "longpress",
                time: 500
            });
            return i.recognizeWith(r),
            s.recognizeWith(a),
            n.add([r, o, i, a, s]),
            n
        }
        ,
        e.prototype._createRecognizer = function(t, e) {
            for (var n = [], i = 2; i < arguments.length; i++)
                n[i - 2] = arguments[i];
            var r = new t.constructor(e);
            return n.push(t),
            n.forEach((function(t) {
                return r.recognizeWith(t)
            }
            )),
            r
        }
        ,
        e.ctorParameters = function() {
            return [{
                type: void 0,
                decorators: [{
                    type: i.Optional
                }, {
                    type: i.Inject,
                    args: [Q]
                }]
            }, {
                type: T,
                decorators: [{
                    type: i.Optional
                }]
            }]
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(i["ɵɵinject"](Q, 8),i["ɵɵinject"](T, 8))
        }
        ,
        e.ɵprov = i["ɵɵdefineInjectable"]({
            token: e,
            factory: function(t) {
                return e.ɵfac(t)
            }
        }),
        e
    }(h.HammerGestureConfig)
      , it = function() {
        function t() {}
        return t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵdir = i["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "mat-line", ""], ["", "matLine", ""]],
            hostAttrs: [1, "mat-line"]
        }),
        t
    }();
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function rt(t, e, n) {
        void 0 === n && (n = "mat"),
        t.changes.pipe(Object(f.a)(t)).subscribe((function(t) {
            var i = t.length;
            ot(e, n + "-2-line", !1),
            ot(e, n + "-3-line", !1),
            ot(e, n + "-multi-line", !1),
            2 === i || 3 === i ? ot(e, n + "-" + i + "-line", !0) : i > 3 && ot(e, n + "-multi-line", !0)
        }
        ))
    }
    function ot(t, e, n) {
        var i = t.nativeElement.classList;
        n ? i.add(e) : i.remove(e)
    }
    var at = function(t, e) {
        rt(t, e)
    }
      , st = function() {
        function t() {}
        return t.ɵmod = i["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = i["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            },
            imports: [[T], T]
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && i["ɵɵsetNgModuleScope"](t, {
            declarations: [it],
            imports: [T],
            exports: [it, T]
        }),
        t
    }()
      , ct = function() {
        function t(t, e, n) {
            this._renderer = t,
            this.element = e,
            this.config = n,
            this.state = 3
        }
        return t.prototype.fadeOut = function() {
            this._renderer.fadeOutRipple(this)
        }
        ,
        t
    }()
      , lt = {
        enterDuration: 450,
        exitDuration: 400
    }
      , ut = Object(p.f)({
        passive: !0
    })
      , dt = ["mousedown", "touchstart"]
      , pt = ["mouseup", "mouseleave", "touchend", "touchcancel"]
      , ht = function() {
        function t(t, e, n, i) {
            this._target = t,
            this._ngZone = e,
            this._isPointerDown = !1,
            this._activeRipples = new Set,
            this._pointerUpEventsRegistered = !1,
            i.isBrowser && (this._containerElement = Object(l.e)(n))
        }
        return t.prototype.fadeInRipple = function(t, e, n) {
            var i = this;
            void 0 === n && (n = {});
            var r = this._containerRect = this._containerRect || this._containerElement.getBoundingClientRect()
              , o = Object(c.a)(Object(c.a)({}, lt), n.animation);
            n.centered && (t = r.left + r.width / 2,
            e = r.top + r.height / 2);
            var a, s = n.radius || function(t, e, n) {
                var i = Math.max(Math.abs(t - n.left), Math.abs(t - n.right))
                  , r = Math.max(Math.abs(e - n.top), Math.abs(e - n.bottom));
                return Math.sqrt(i * i + r * r)
            }/**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
            (t, e, r), l = t - r.left, u = e - r.top, d = o.enterDuration, p = document.createElement("div");
            p.classList.add("mat-ripple-element"),
            p.style.left = l - s + "px",
            p.style.top = u - s + "px",
            p.style.height = 2 * s + "px",
            p.style.width = 2 * s + "px",
            null != n.color && (p.style.backgroundColor = n.color),
            p.style.transitionDuration = d + "ms",
            this._containerElement.appendChild(p),
            a = p,
            window.getComputedStyle(a).getPropertyValue("opacity"),
            p.style.transform = "scale(1)";
            var h = new ct(this,p,n);
            return h.state = 0,
            this._activeRipples.add(h),
            n.persistent || (this._mostRecentTransientRipple = h),
            this._runTimeoutOutsideZone((function() {
                var t = h === i._mostRecentTransientRipple;
                h.state = 1,
                n.persistent || t && i._isPointerDown || h.fadeOut()
            }
            ), d),
            h
        }
        ,
        t.prototype.fadeOutRipple = function(t) {
            var e = this._activeRipples.delete(t);
            if (t === this._mostRecentTransientRipple && (this._mostRecentTransientRipple = null),
            this._activeRipples.size || (this._containerRect = null),
            e) {
                var n = t.element
                  , i = Object(c.a)(Object(c.a)({}, lt), t.config.animation);
                n.style.transitionDuration = i.exitDuration + "ms",
                n.style.opacity = "0",
                t.state = 2,
                this._runTimeoutOutsideZone((function() {
                    t.state = 3,
                    n.parentNode.removeChild(n)
                }
                ), i.exitDuration)
            }
        }
        ,
        t.prototype.fadeOutAll = function() {
            this._activeRipples.forEach((function(t) {
                return t.fadeOut()
            }
            ))
        }
        ,
        t.prototype.setupTriggerEvents = function(t) {
            var e = Object(l.e)(t);
            e && e !== this._triggerElement && (this._removeTriggerEvents(),
            this._triggerElement = e,
            this._registerEvents(dt))
        }
        ,
        t.prototype.handleEvent = function(t) {
            "mousedown" === t.type ? this._onMousedown(t) : "touchstart" === t.type ? this._onTouchStart(t) : this._onPointerUp(),
            this._pointerUpEventsRegistered || (this._registerEvents(pt),
            this._pointerUpEventsRegistered = !0)
        }
        ,
        t.prototype._onMousedown = function(t) {
            var e = Object(r.l)(t)
              , n = this._lastTouchStartEvent && Date.now() < this._lastTouchStartEvent + 800;
            this._target.rippleDisabled || e || n || (this._isPointerDown = !0,
            this.fadeInRipple(t.clientX, t.clientY, this._target.rippleConfig))
        }
        ,
        t.prototype._onTouchStart = function(t) {
            if (!this._target.rippleDisabled) {
                this._lastTouchStartEvent = Date.now(),
                this._isPointerDown = !0;
                for (var e = t.changedTouches, n = 0; n < e.length; n++)
                    this.fadeInRipple(e[n].clientX, e[n].clientY, this._target.rippleConfig)
            }
        }
        ,
        t.prototype._onPointerUp = function() {
            this._isPointerDown && (this._isPointerDown = !1,
            this._activeRipples.forEach((function(t) {
                var e = 1 === t.state || t.config.terminateOnPointerUp && 0 === t.state;
                !t.config.persistent && e && t.fadeOut()
            }
            )))
        }
        ,
        t.prototype._runTimeoutOutsideZone = function(t, e) {
            void 0 === e && (e = 0),
            this._ngZone.runOutsideAngular((function() {
                return setTimeout(t, e)
            }
            ))
        }
        ,
        t.prototype._registerEvents = function(t) {
            var e = this;
            this._ngZone.runOutsideAngular((function() {
                t.forEach((function(t) {
                    e._triggerElement.addEventListener(t, e, ut)
                }
                ))
            }
            ))
        }
        ,
        t.prototype._removeTriggerEvents = function() {
            var t = this;
            this._triggerElement && (dt.forEach((function(e) {
                t._triggerElement.removeEventListener(e, t, ut)
            }
            )),
            this._pointerUpEventsRegistered && pt.forEach((function(e) {
                t._triggerElement.removeEventListener(e, t, ut)
            }
            )))
        }
        ,
        t
    }();
    var ft = new i.InjectionToken("mat-ripple-global-options")
      , mt = function() {
        function t(t, e, n, i, r) {
            this._elementRef = t,
            this._animationMode = r,
            this.radius = 0,
            this._disabled = !1,
            this._isInitialized = !1,
            this._globalOptions = i || {},
            this._rippleRenderer = new ht(this,e,t,n)
        }
        return Object.defineProperty(t.prototype, "disabled", {
            get: function() {
                return this._disabled
            },
            set: function(t) {
                this._disabled = t,
                this._setupTriggerEventsIfEnabled()
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "trigger", {
            get: function() {
                return this._trigger || this._elementRef.nativeElement
            },
            set: function(t) {
                this._trigger = t,
                this._setupTriggerEventsIfEnabled()
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.ngOnInit = function() {
            this._isInitialized = !0,
            this._setupTriggerEventsIfEnabled()
        }
        ,
        t.prototype.ngOnDestroy = function() {
            this._rippleRenderer._removeTriggerEvents()
        }
        ,
        t.prototype.fadeOutAll = function() {
            this._rippleRenderer.fadeOutAll()
        }
        ,
        Object.defineProperty(t.prototype, "rippleConfig", {
            get: function() {
                return {
                    centered: this.centered,
                    radius: this.radius,
                    color: this.color,
                    animation: Object(c.a)(Object(c.a)(Object(c.a)({}, this._globalOptions.animation), "NoopAnimations" === this._animationMode ? {
                        enterDuration: 0,
                        exitDuration: 0
                    } : {}), this.animation),
                    terminateOnPointerUp: this._globalOptions.terminateOnPointerUp
                }
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "rippleDisabled", {
            get: function() {
                return this.disabled || !!this._globalOptions.disabled
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype._setupTriggerEventsIfEnabled = function() {
            !this.disabled && this._isInitialized && this._rippleRenderer.setupTriggerEvents(this.trigger)
        }
        ,
        t.prototype.launch = function(t, e, n) {
            return void 0 === e && (e = 0),
            "number" == typeof t ? this._rippleRenderer.fadeInRipple(t, e, Object(c.a)(Object(c.a)({}, this.rippleConfig), n)) : this._rippleRenderer.fadeInRipple(0, 0, Object(c.a)(Object(c.a)({}, this.rippleConfig), t))
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: i.ElementRef
            }, {
                type: i.NgZone
            }, {
                type: p.a
            }, {
                type: void 0,
                decorators: [{
                    type: i.Optional
                }, {
                    type: i.Inject,
                    args: [ft]
                }]
            }, {
                type: String,
                decorators: [{
                    type: i.Optional
                }, {
                    type: i.Inject,
                    args: [m.ANIMATION_MODULE_TYPE]
                }]
            }]
        }
        ,
        t.propDecorators = {
            color: [{
                type: i.Input,
                args: ["matRippleColor"]
            }],
            unbounded: [{
                type: i.Input,
                args: ["matRippleUnbounded"]
            }],
            centered: [{
                type: i.Input,
                args: ["matRippleCentered"]
            }],
            radius: [{
                type: i.Input,
                args: ["matRippleRadius"]
            }],
            animation: [{
                type: i.Input,
                args: ["matRippleAnimation"]
            }],
            disabled: [{
                type: i.Input,
                args: ["matRippleDisabled"]
            }],
            trigger: [{
                type: i.Input,
                args: ["matRippleTrigger"]
            }]
        },
        t.ɵfac = function(e) {
            return new (e || t)(i["ɵɵdirectiveInject"](i.ElementRef),i["ɵɵdirectiveInject"](i.NgZone),i["ɵɵdirectiveInject"](p.a),i["ɵɵdirectiveInject"](ft, 8),i["ɵɵdirectiveInject"](m.ANIMATION_MODULE_TYPE, 8))
        }
        ,
        t.ɵdir = i["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "mat-ripple", ""], ["", "matRipple", ""]],
            hostAttrs: [1, "mat-ripple"],
            hostVars: 2,
            hostBindings: function(t, e) {
                2 & t && i["ɵɵclassProp"]("mat-ripple-unbounded", e.unbounded)
            },
            inputs: {
                radius: ["matRippleRadius", "radius"],
                disabled: ["matRippleDisabled", "disabled"],
                trigger: ["matRippleTrigger", "trigger"],
                color: ["matRippleColor", "color"],
                unbounded: ["matRippleUnbounded", "unbounded"],
                centered: ["matRippleCentered", "centered"],
                animation: ["matRippleAnimation", "animation"]
            },
            exportAs: ["matRipple"]
        }),
        t
    }()
      , gt = function() {
        function t() {}
        return t.ɵmod = i["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = i["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            },
            imports: [[T, p.b], T]
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && i["ɵɵsetNgModuleScope"](t, {
            declarations: function() {
                return [mt]
            },
            imports: function() {
                return [T, p.b]
            },
            exports: function() {
                return [mt, T]
            }
        }),
        t
    }()
      , vt = function() {
        function t(t) {
            this._animationMode = t,
            this.state = "unchecked",
            this.disabled = !1
        }
        return t.ctorParameters = function() {
            return [{
                type: String,
                decorators: [{
                    type: i.Optional
                }, {
                    type: i.Inject,
                    args: [m.ANIMATION_MODULE_TYPE]
                }]
            }]
        }
        ,
        t.propDecorators = {
            state: [{
                type: i.Input
            }],
            disabled: [{
                type: i.Input
            }]
        },
        t.ɵfac = function(e) {
            return new (e || t)(i["ɵɵdirectiveInject"](m.ANIMATION_MODULE_TYPE, 8))
        }
        ,
        t.ɵcmp = i["ɵɵdefineComponent"]({
            type: t,
            selectors: [["mat-pseudo-checkbox"]],
            hostAttrs: [1, "mat-pseudo-checkbox"],
            hostVars: 8,
            hostBindings: function(t, e) {
                2 & t && i["ɵɵclassProp"]("mat-pseudo-checkbox-indeterminate", "indeterminate" === e.state)("mat-pseudo-checkbox-checked", "checked" === e.state)("mat-pseudo-checkbox-disabled", e.disabled)("_mat-animation-noopable", "NoopAnimations" === e._animationMode)
            },
            inputs: {
                state: "state",
                disabled: "disabled"
            },
            decls: 0,
            vars: 0,
            template: function(t, e) {},
            styles: ['.mat-pseudo-checkbox{width:16px;height:16px;border:2px solid;border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:"";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox.mat-pseudo-checkbox-indeterminate{border-color:transparent}._mat-animation-noopable.mat-pseudo-checkbox{transition:none;animation:none}._mat-animation-noopable.mat-pseudo-checkbox::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{top:5px;left:1px;width:10px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{top:2.4px;left:1px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}\n'],
            encapsulation: 2,
            changeDetection: 0
        }),
        t
    }()
      , yt = function() {
        function t() {}
        return t.ɵmod = i["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = i["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            }
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && i["ɵɵsetNgModuleScope"](t, {
            declarations: [vt],
            exports: [vt]
        }),
        t
    }()
      , bt = O((function() {}
    ))
      , wt = 0
      , St = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e._labelId = "mat-optgroup-label-" + wt++,
            e
        }
        Object(c.c)(e, t),
        e.propDecorators = {
            label: [{
                type: i.Input
            }]
        },
        e.ɵfac = function(t) {
            return n(t || e)
        }
        ,
        e.ɵcmp = i["ɵɵdefineComponent"]({
            type: e,
            selectors: [["mat-optgroup"]],
            hostAttrs: ["role", "group", 1, "mat-optgroup"],
            hostVars: 4,
            hostBindings: function(t, e) {
                2 & t && (i["ɵɵattribute"]("aria-disabled", e.disabled.toString())("aria-labelledby", e._labelId),
                i["ɵɵclassProp"]("mat-optgroup-disabled", e.disabled))
            },
            inputs: {
                disabled: "disabled",
                label: "label"
            },
            exportAs: ["matOptgroup"],
            features: [i["ɵɵInheritDefinitionFeature"]],
            ngContentSelectors: y,
            decls: 4,
            vars: 2,
            consts: [[1, "mat-optgroup-label", 3, "id"]],
            template: function(t, e) {
                1 & t && (i["ɵɵprojectionDef"](v),
                i["ɵɵelementStart"](0, "label", 0),
                i["ɵɵtext"](1),
                i["ɵɵprojection"](2),
                i["ɵɵelementEnd"](),
                i["ɵɵprojection"](3, 1)),
                2 & t && (i["ɵɵproperty"]("id", e._labelId),
                i["ɵɵadvance"](1),
                i["ɵɵtextInterpolate1"]("", e.label, " "))
            },
            styles: [".mat-optgroup-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-optgroup-label[disabled]{cursor:default}[dir=rtl] .mat-optgroup-label{text-align:right}.mat-optgroup-label .mat-icon{margin-right:16px;vertical-align:middle}.mat-optgroup-label .mat-icon svg{vertical-align:top}[dir=rtl] .mat-optgroup-label .mat-icon{margin-left:16px;margin-right:0}\n"],
            encapsulation: 2,
            changeDetection: 0
        });
        var n = i["ɵɵgetInheritedFactory"](e);
        return e
    }(bt)
      , xt = 0
      , Mt = function(t, e) {
        void 0 === e && (e = !1),
        this.source = t,
        this.isUserInput = e
    }
      , Et = new i.InjectionToken("MAT_OPTION_PARENT_COMPONENT")
      , Ct = function() {
        function t(t, e, n, r) {
            this._element = t,
            this._changeDetectorRef = e,
            this._parent = n,
            this.group = r,
            this._selected = !1,
            this._active = !1,
            this._disabled = !1,
            this._mostRecentViewValue = "",
            this.id = "mat-option-" + xt++,
            this.onSelectionChange = new i.EventEmitter,
            this._stateChanges = new u.a
        }
        return Object.defineProperty(t.prototype, "multiple", {
            get: function() {
                return this._parent && this._parent.multiple
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "selected", {
            get: function() {
                return this._selected
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "disabled", {
            get: function() {
                return this.group && this.group.disabled || this._disabled
            },
            set: function(t) {
                this._disabled = Object(l.c)(t)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "disableRipple", {
            get: function() {
                return this._parent && this._parent.disableRipple
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "active", {
            get: function() {
                return this._active
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "viewValue", {
            get: function() {
                return (this._getHostElement().textContent || "").trim()
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.select = function() {
            this._selected || (this._selected = !0,
            this._changeDetectorRef.markForCheck(),
            this._emitSelectionChangeEvent())
        }
        ,
        t.prototype.deselect = function() {
            this._selected && (this._selected = !1,
            this._changeDetectorRef.markForCheck(),
            this._emitSelectionChangeEvent())
        }
        ,
        t.prototype.focus = function(t, e) {
            var n = this._getHostElement();
            "function" == typeof n.focus && n.focus(e)
        }
        ,
        t.prototype.setActiveStyles = function() {
            this._active || (this._active = !0,
            this._changeDetectorRef.markForCheck())
        }
        ,
        t.prototype.setInactiveStyles = function() {
            this._active && (this._active = !1,
            this._changeDetectorRef.markForCheck())
        }
        ,
        t.prototype.getLabel = function() {
            return this.viewValue
        }
        ,
        t.prototype._handleKeydown = function(t) {
            t.keyCode !== g.ENTER && t.keyCode !== g.SPACE || Object(g.hasModifierKey)(t) || (this._selectViaInteraction(),
            t.preventDefault())
        }
        ,
        t.prototype._selectViaInteraction = function() {
            this.disabled || (this._selected = !this.multiple || !this._selected,
            this._changeDetectorRef.markForCheck(),
            this._emitSelectionChangeEvent(!0))
        }
        ,
        t.prototype._getAriaSelected = function() {
            return this.selected || !this.multiple && null
        }
        ,
        t.prototype._getTabIndex = function() {
            return this.disabled ? "-1" : "0"
        }
        ,
        t.prototype._getHostElement = function() {
            return this._element.nativeElement
        }
        ,
        t.prototype.ngAfterViewChecked = function() {
            if (this._selected) {
                var t = this.viewValue;
                t !== this._mostRecentViewValue && (this._mostRecentViewValue = t,
                this._stateChanges.next())
            }
        }
        ,
        t.prototype.ngOnDestroy = function() {
            this._stateChanges.complete()
        }
        ,
        t.prototype._emitSelectionChangeEvent = function(t) {
            void 0 === t && (t = !1),
            this.onSelectionChange.emit(new Mt(this,t))
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: i.ElementRef
            }, {
                type: i.ChangeDetectorRef
            }, {
                type: void 0,
                decorators: [{
                    type: i.Optional
                }, {
                    type: i.Inject,
                    args: [Et]
                }]
            }, {
                type: St,
                decorators: [{
                    type: i.Optional
                }]
            }]
        }
        ,
        t.propDecorators = {
            value: [{
                type: i.Input
            }],
            id: [{
                type: i.Input
            }],
            disabled: [{
                type: i.Input
            }],
            onSelectionChange: [{
                type: i.Output
            }]
        },
        t.ɵfac = function(e) {
            return new (e || t)(i["ɵɵdirectiveInject"](i.ElementRef),i["ɵɵdirectiveInject"](i.ChangeDetectorRef),i["ɵɵdirectiveInject"](Et, 8),i["ɵɵdirectiveInject"](St, 8))
        }
        ,
        t.ɵcmp = i["ɵɵdefineComponent"]({
            type: t,
            selectors: [["mat-option"]],
            hostAttrs: ["role", "option", 1, "mat-option", "mat-focus-indicator"],
            hostVars: 12,
            hostBindings: function(t, e) {
                1 & t && i["ɵɵlistener"]("click", (function() {
                    return e._selectViaInteraction()
                }
                ))("keydown", (function(t) {
                    return e._handleKeydown(t)
                }
                )),
                2 & t && (i["ɵɵhostProperty"]("id", e.id),
                i["ɵɵattribute"]("tabindex", e._getTabIndex())("aria-selected", e._getAriaSelected())("aria-disabled", e.disabled.toString()),
                i["ɵɵclassProp"]("mat-selected", e.selected)("mat-option-multiple", e.multiple)("mat-active", e.active)("mat-option-disabled", e.disabled))
            },
            inputs: {
                id: "id",
                disabled: "disabled",
                value: "value"
            },
            outputs: {
                onSelectionChange: "onSelectionChange"
            },
            exportAs: ["matOption"],
            ngContentSelectors: w,
            decls: 4,
            vars: 3,
            consts: [["class", "mat-option-pseudo-checkbox", 3, "state", "disabled", 4, "ngIf"], [1, "mat-option-text"], ["mat-ripple", "", 1, "mat-option-ripple", 3, "matRippleTrigger", "matRippleDisabled"], [1, "mat-option-pseudo-checkbox", 3, "state", "disabled"]],
            template: function(t, e) {
                1 & t && (i["ɵɵprojectionDef"](),
                i["ɵɵtemplate"](0, b, 1, 2, "mat-pseudo-checkbox", 0),
                i["ɵɵelementStart"](1, "span", 1),
                i["ɵɵprojection"](2),
                i["ɵɵelementEnd"](),
                i["ɵɵelement"](3, "div", 2)),
                2 & t && (i["ɵɵproperty"]("ngIf", e.multiple),
                i["ɵɵadvance"](3),
                i["ɵɵproperty"]("matRippleTrigger", e._getHostElement())("matRippleDisabled", e.disabled || e.disableRipple))
            },
            directives: [s.NgIf, mt, vt],
            styles: [".mat-option{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative;cursor:pointer;outline:none;display:flex;flex-direction:row;max-width:100%;box-sizing:border-box;align-items:center;-webkit-tap-highlight-color:transparent}.mat-option[disabled]{cursor:default}[dir=rtl] .mat-option{text-align:right}.mat-option .mat-icon{margin-right:16px;vertical-align:middle}.mat-option .mat-icon svg{vertical-align:top}[dir=rtl] .mat-option .mat-icon{margin-left:16px;margin-right:0}.mat-option[aria-disabled=true]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-optgroup .mat-option:not(.mat-option-multiple){padding-left:32px}[dir=rtl] .mat-optgroup .mat-option:not(.mat-option-multiple){padding-left:16px;padding-right:32px}.cdk-high-contrast-active .mat-option{margin:0 1px}.cdk-high-contrast-active .mat-option.mat-active{border:solid 1px currentColor;margin:0}.mat-option-text{display:inline-block;flex-grow:1;overflow:hidden;text-overflow:ellipsis}.mat-option .mat-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.cdk-high-contrast-active .mat-option .mat-option-ripple{opacity:.5}.mat-option-pseudo-checkbox{margin-right:8px}[dir=rtl] .mat-option-pseudo-checkbox{margin-left:8px;margin-right:0}\n"],
            encapsulation: 2,
            changeDetection: 0
        }),
        t
    }();
    function At(t, e, n) {
        if (n.length) {
            for (var i = e.toArray(), r = n.toArray(), o = 0, a = 0; a < t + 1; a++)
                i[a].group && i[a].group === r[o] && o++;
            return o
        }
        return 0
    }
    function Tt(t, e, n, i) {
        var r = t * e;
        return r < n ? r : r + e > n + i ? Math.max(0, r - i + e) : n
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var Ot = function() {
        function t() {}
        return t.ɵmod = i["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = i["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            },
            imports: [[gt, s.CommonModule, yt]]
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && i["ɵɵsetNgModuleScope"](t, {
            declarations: function() {
                return [Ct, St]
            },
            imports: function() {
                return [gt, s.CommonModule, yt]
            },
            exports: function() {
                return [Ct, St]
            }
        }),
        t
    }()
      , _t = new i.InjectionToken("mat-label-global-options")
      , Pt = 0
      , It = 1
      , kt = 2
      , Dt = 3
      , Rt = 4
      , Lt = 5
      , Nt = 6
      , jt = 7
      , Vt = 8
      , Ft = 9
      , Ut = 10
      , Bt = 11;
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
}
, function(t, e, n) {
    var i = n(43)
      , r = n(459)
      , o = n(29)
      , a = n(134)
      , s = Object.defineProperty;
    e.f = i ? s : function(t, e, n) {
        if (o(t),
        e = a(e, !0),
        o(n),
        r)
            try {
                return s(t, e, n)
            } catch (t) {}
        if ("get"in n || "set"in n)
            throw TypeError("Accessors not supported");
        return "value"in n && (t[e] = n.value),
        t
    }
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , r = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(7);
    n(263),
    n(31),
    n(90);
    n(263),
    n(31),
    n(90);
    var s = n(135)
      , c = (n(22),
    n(4))
      , l = n(136)
      , u = (n(14),
    n(55))
      , d = n(6)
      , p = n(0)
      , h = n(549)
      , f = n(0)
      , m = n(263)
      , g = n(90)
      , v = n(31)
      , y = n(22)
      , b = n(14)
      , w = function() {
        function t(t, e, n, i, r) {
            this.CameraHeadRepository = t,
            this.ImageRepository = e,
            this.DatasetRepository = n,
            this.SiteModelRepository = i,
            this.GeoTransformationService = r,
            s.EntityRelationMapper.manyToOne(this.ImageRepository, "cameraHead", "cameraHeadId", this.CameraHeadRepository),
            s.EntityRelationMapper.manyToOne(this.ImageRepository, "dataset", "datasetId", this.DatasetRepository)
        }
        return Object.defineProperty(t.prototype, "images", {
            get: function() {
                return console.warn('Deprecated usage of "images", use "ImageRepository.findAll()" or "ImageRepository.data" instead.'),
                this.ImageRepository.data
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "imageById", {
            get: function() {
                return console.warn('Deprecated usage of "imageById", use "ImageRepository.findOne()" or "ImageRepository.dataMap" instead.'),
                this.ImageRepository.dataMap
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.getFirstImageInDataset = function(t, e) {
            return i(this, void 0, void 0, (function() {
                var n, i;
                return r(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        return n = (new l.ImageRestFilterBuilder).hidden(!1).sortBy(h.SortableField.FILE_ID).sortOrder(h.SortOrder.ASCENDING).limit(1).dataset([t]),
                        e && (a.includes(t.siteModelEntities, e) ? n.siteModel([e]) : console.warn("getFirstImageInDataset: given site model entity", e.id, "is not assigned to dataset", t.id, "therefore ignoring!")),
                        [4, this.ImageRepository.filter(n.build())];
                    case 1:
                        return [2, (i = r.sent()).length > 0 ? i[0] : void 0]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.getImageInDataset = function(t, e) {
            return this.ImageRepository.filter((new l.ImageRestFilterBuilder).dataset([t]).build()).then((function(t) {
                return a.find(t, (function(t) {
                    return parseInt(t.fileId, 0) === e
                }
                ))
            }
            ))
        }
        ,
        t.prototype.getClosestImageOnFloor = function(t, e) {
            var n = this;
            return this.GeoTransformationService.initialized.then((function() {
                var i = n.GeoTransformationService.vectorToGlobal(t);
                return n.getClosestImageOnFloorGlobal(i, e)
            }
            ))
        }
        ,
        t.prototype.getClosestImageOnFloorGlobal = function(t, e) {
            var n = this;
            return this.SiteModelRepository.findWithinGlobal(t, u.SiteModelType.FLOOR).then((function(i) {
                var r = i.length > 0 ? i : [void 0];
                return n.getClosestImageGlobal(t, e, r)
            }
            ))
        }
        ,
        t.prototype.getClosestImage = function(t, e, n) {
            var i = this;
            return this.GeoTransformationService.initialized.then((function() {
                var r = t instanceof c.Vector3 ? i.GeoTransformationService.vectorToGlobal(t) : i.GeoTransformationService.vector2ToGlobal(t);
                return i.getClosestImageGlobal(r, e, n)
            }
            ))
        }
        ,
        t.prototype.getClosestImageGlobal = function(t, e, n) {
            var i = (new l.ImageRestFilterBuilder).location(t).hidden(!1).limit(1);
            return n && i.siteModel(n),
            e && i.radius(e),
            this.ImageRepository.filter(i.build()).then((function(t) {
                return 1 !== t.length ? Promise.reject("No image found") : t[0]
            }
            ))
        }
        ,
        t.prototype.getClosestImageInDir = function(t, e, n, i) {
            void 0 === n && (n = 1),
            void 0 === i && (i = 10);
            var r = e.lon
              , o = new c.Vector3(Math.cos(r) * i * n,Math.sin(r) * i * n,0)
              , a = (new c.Vector3).copy(t.location).add(o);
            return this.getClosestImage(a)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(f.ɵɵinject(m.CameraHeadRepository),f.ɵɵinject(g.ImageRepository),f.ɵɵinject(v.DatasetRepository),f.ɵɵinject(y.SiteModelRepository),f.ɵɵinject(b.GeoTransformationService))
        }
        ,
        t.ɵprov = f.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.ImageService = w,
    f.ɵsetClassMetadata(w, [{
        type: p.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: m.CameraHeadRepository
        }, {
            type: g.ImageRepository
        }, {
            type: v.DatasetRepository
        }, {
            type: y.SiteModelRepository
        }, {
            type: b.GeoTransformationService
        }]
    }
    ), null),
    o.module("IVWebApp").service("ImageService", d.downgradeInjectable(w))
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , r = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(7)
      , s = (n(15),
    n(25))
      , c = n(16)
      , l = n(384)
      , u = n(6)
      , d = n(0)
      , p = (n(168),
    n(0))
      , h = n(15)
      , f = n(168)
      , m = function() {
        function t(t, e, n, i) {
            var r = this;
            this.gettextCatalog = t,
            this.ConfigService = e,
            this.localStorageService = n,
            this.TranslocoService = i,
            this.onLanguageChange = new c.Signal,
            this.LOCAL_STORAGE_KEY = "iv_lang_key",
            this.registeredLanguageKeys = [],
            this.isInitialized = !1,
            this.localize = function(t) {
                if (t && 0 !== a.size(t)) {
                    var e = Object.keys(t);
                    return t[r.dataLanguage] || t[r.fallbackLanguage.toString()] || t[e[0]]
                }
            }
            ,
            this.fallbackLanguage = l.UiLanguage.ENGLISH,
            this.dataLanguage = this.fallbackLanguage.toString(),
            a.forIn(l.UiLanguage, (function(t) {
                return r.registeredLanguageKeys.push(t)
            }
            )),
            this.initialized = new Promise((function(t) {
                r.ConfigService.initialized.then((function() {
                    return r.initLanguage()
                }
                )).catch((function() {
                    return r.initLanguage()
                }
                )).then((function() {
                    return r.isInitialized = !0
                }
                )).then((function() {
                    t(!0)
                }
                )).catch((function() {
                    t(!1)
                }
                ))
            }
            ))
        }
        return Object.defineProperty(t.prototype, "allDataLanguages", {
            get: function() {
                return t.allDataLanguages
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.setLanguage = function(t) {
            return this.dataLanguage = t,
            this._setUiLanguage(t)
        }
        ,
        t.prototype._setUiLanguage = function(t) {
            return this.isLanguageRegistered(t) ? (this.initAngularTranslation(t),
            this.initAngularJsTranslation(t)) : Promise.reject("Language " + t + " not supported by the user interface.")
        }
        ,
        t.prototype.initAngularJsTranslation = function(t) {
            return i(this, void 0, void 0, (function() {
                return r(this, (function(e) {
                    switch (e.label) {
                    case 0:
                        return this.gettextCatalog.setCurrentLanguage(t),
                        [4, this.gettextCatalog.loadRemote("translations/" + t + ".json")];
                    case 1:
                        return e.sent(),
                        this.localStorageService.set(this.LOCAL_STORAGE_KEY, this.dataLanguage),
                        this.isInitialized && this.onLanguageChange.emit(this.getLanguage(t)),
                        [2]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.initAngularTranslation = function(t) {
            this.TranslocoService.load(t).subscribe(),
            this.TranslocoService.setActiveLang(t)
        }
        ,
        t.prototype.setDataLanguage = function(t) {
            var e = this.getLanguage(t.toString());
            this.updateDataLanguage(e)
        }
        ,
        t.prototype.setUiLanguage = function(t) {
            return this._setUiLanguage(t.toString())
        }
        ,
        t.prototype.getCurrentDataLanguage = function() {
            return this.getLanguage(this.dataLanguage)
        }
        ,
        t.prototype.getCurrentUiLanguage = function() {
            var t = this.getCurrentLanguage();
            return this.getLanguage(t)
        }
        ,
        t.prototype.resetLanguage = function() {
            this.localStorageService.remove(this.LOCAL_STORAGE_KEY);
            var t = this.getBrowserLocale() ? this.getBrowserLocale() : this.fallbackLanguage.toString();
            return this.setLanguage(t).catch((function() {}
            )),
            this.getLanguage(t)
        }
        ,
        t.prototype.updateDataLanguage = function(t) {
            this.dataLanguage = t.key
        }
        ,
        t.prototype.getCurrentLanguage = function() {
            return this.gettextCatalog.getCurrentLanguage()
        }
        ,
        t.prototype.getRegisteredLanguages = function() {
            for (var t = [], e = 0, n = this.registeredLanguageKeys; e < n.length; e++) {
                var i = n[e];
                t.push(this.getLanguage(i))
            }
            return t
        }
        ,
        t.prototype.getRegisteredLanguageNumberFormats = function() {
            return this.getRegisteredLanguages().map((function(t) {
                return {
                    key: t.key,
                    numberFormat: t.numberFormat
                }
            }
            ))
        }
        ,
        t.prototype.getUniqueLanguageNumberFormats = function() {
            return a.uniqBy(this.getRegisteredLanguageNumberFormats(), (function(t) {
                return t.numberFormat
            }
            ))
        }
        ,
        t.prototype.getCurrentLanguageNumberFormat = function(t) {
            var e = this.getCurrentLanguage()
              , n = a.find(this.getRegisteredLanguageNumberFormats(), (function(t) {
                return t.key === e
            }
            ));
            if (!n) {
                var i = this.getLanguage(this.fallbackLanguage.toString());
                n = {
                    key: i.key,
                    numberFormat: i.numberFormat
                }
            }
            return n = t.find((function(t) {
                return t.numberFormat === n.numberFormat
            }
            ))
        }
        ,
        t.prototype.getBrowserLocale = function() {
            var t = this.getBrowserLocaleString();
            return this.isLanguageRegistered(t) ? t : t.split("_")[0]
        }
        ,
        t.prototype.getBrowserLocaleString = function() {
            var t = window.navigator;
            return ((o.isArray(t.languages) ? t.languages[0] : t.language || t.browserLanguage || t.systemLanguage || t.userLanguage) || "").split("-").join("_").toLowerCase()
        }
        ,
        t.prototype.getLanguage = function(e) {
            return a.find(t.allDataLanguages, {
                key: e
            })
        }
        ,
        t.prototype.initLanguage = function() {
            return this.ConfigService.getString(s.Configs.LANG) ? this.setLanguage(this.ConfigService.getString(s.Configs.LANG)) : this.localStorageService.get(this.LOCAL_STORAGE_KEY) ? this.setLanguage(this.localStorageService.get(this.LOCAL_STORAGE_KEY)) : this.getBrowserLocale() ? this.setLanguage(this.getBrowserLocale()) : this.setLanguage(this.fallbackLanguage.toString())
        }
        ,
        t.prototype.isLanguageRegistered = function(t) {
            return this.registeredLanguageKeys.indexOf(t) > -1
        }
        ,
        t.allDataLanguages = [{
            key: "ab",
            name: "Abkhaz",
            nativeName: "Аҧсуа"
        }, {
            key: "aa",
            name: "Afar",
            nativeName: "Afaraf"
        }, {
            key: "af",
            name: "Afrikaans",
            nativeName: "Afrikaans"
        }, {
            key: "ak",
            name: "Akan",
            nativeName: "Akan"
        }, {
            key: "sq",
            name: "Albanian",
            nativeName: "Shqip"
        }, {
            key: "am",
            name: "Amharic",
            nativeName: "አማርኛ"
        }, {
            key: "ar",
            name: "Arabic",
            nativeName: "العربية"
        }, {
            key: "an",
            name: "Aragonese",
            nativeName: "Aragonés"
        }, {
            key: "hy",
            name: "Armenian",
            nativeName: "Հայերեն"
        }, {
            key: "as",
            name: "Assamese",
            nativeName: "অসমীয়া"
        }, {
            key: "av",
            name: "Avaric",
            nativeName: "Авар мацӀ"
        }, {
            key: "ae",
            name: "Avestan",
            nativeName: "Avesta"
        }, {
            key: "ay",
            name: "Aymara",
            nativeName: "Aymar aru"
        }, {
            key: "az",
            name: "Azerbaijani",
            nativeName: "Azərbaycan dili"
        }, {
            key: "bm",
            name: "Bambara",
            nativeName: "Bamanankan"
        }, {
            key: "ba",
            name: "Bashkir",
            nativeName: "Башҡорт теле"
        }, {
            key: "eu",
            name: "Basque",
            nativeName: "Euskara"
        }, {
            key: "be",
            name: "Belarusian",
            nativeName: "Беларуская"
        }, {
            key: "bn",
            name: "Bengali",
            nativeName: "বাংলা"
        }, {
            key: "bh",
            name: "Bihari",
            nativeName: "भोजपुरी"
        }, {
            key: "bi",
            name: "Bislama",
            nativeName: "Bislama"
        }, {
            key: "bs",
            name: "Bosnian",
            nativeName: "Bosanski jezik"
        }, {
            key: "br",
            name: "Breton",
            nativeName: "Brezhoneg"
        }, {
            key: "bg",
            name: "Bulgarian",
            nativeName: "Български език"
        }, {
            key: "my",
            name: "Burmese",
            nativeName: "ဗမာစာ"
        }, {
            key: "ca",
            name: "Catalan; Valencian",
            nativeName: "Català"
        }, {
            key: "ch",
            name: "Chamorro",
            nativeName: "Chamoru"
        }, {
            key: "ce",
            name: "Chechen",
            nativeName: "Нохчийн мотт"
        }, {
            key: "ny",
            name: "Chichewa; Chewa; Nyanja",
            nativeName: "ChiCheŵa"
        }, {
            key: "zh",
            name: "Chinese",
            nativeName: "简体中文 (Simplified Chinese)",
            numberFormat: "1,000.00",
            decimalSeparator: l.DecimalSeparators.POINT
        }, {
            key: "zh_tw",
            name: "Traditional Chinese",
            nativeName: "繁體中文 (Traditional Chinese)",
            numberFormat: "1,000.00",
            decimalSeparator: l.DecimalSeparators.POINT
        }, {
            key: "cv",
            name: "Chuvash",
            nativeName: "Чӑваш чӗлхи"
        }, {
            key: "kw",
            name: "Cornish",
            nativeName: "Kernewek"
        }, {
            key: "co",
            name: "Corsican",
            nativeName: "Corsu"
        }, {
            key: "cr",
            name: "Cree",
            nativeName: "ᓀᐦᐃᔭᐍᐏᐣ"
        }, {
            key: "hr",
            name: "Croatian",
            nativeName: "Hrvatski"
        }, {
            key: "cs",
            name: "Czech",
            nativeName: "Česky",
            numberFormat: "1 000,00",
            decimalSeparator: l.DecimalSeparators.COMMA
        }, {
            key: "da",
            name: "Danish",
            nativeName: "Dansk"
        }, {
            key: "dv",
            name: "Divehi; Dhivehi; Maldivian;",
            nativeName: "ދިވެހި"
        }, {
            key: "nl",
            name: "Dutch",
            nativeName: "Nederlands"
        }, {
            key: "en",
            name: "English",
            nativeName: "English",
            numberFormat: "1,000.00",
            decimalSeparator: l.DecimalSeparators.POINT
        }, {
            key: "eo",
            name: "Esperanto",
            nativeName: "Esperanto"
        }, {
            key: "et",
            name: "Estonian",
            nativeName: "Eesti"
        }, {
            key: "ee",
            name: "Ewe",
            nativeName: "Eʋegbe"
        }, {
            key: "fo",
            name: "Faroese",
            nativeName: "Føroyskt"
        }, {
            key: "fj",
            name: "Fijian",
            nativeName: "Vosa Vakaviti"
        }, {
            key: "fi",
            name: "Finnish",
            nativeName: "Suomi"
        }, {
            key: "fr",
            name: "French",
            nativeName: "Français",
            numberFormat: "1.000,00",
            decimalSeparator: l.DecimalSeparators.COMMA
        }, {
            key: "ff",
            name: "Fula; Fulah; Pulaar; Pular",
            nativeName: "Fulfulde"
        }, {
            key: "gl",
            name: "Galician",
            nativeName: "Galego"
        }, {
            key: "ka",
            name: "Georgian",
            nativeName: "ქართული"
        }, {
            key: "de",
            name: "German",
            nativeName: "Deutsch",
            numberFormat: "1.000,00",
            decimalSeparator: l.DecimalSeparators.COMMA
        }, {
            key: "el",
            name: "Greek, Modern",
            nativeName: "Ελληνικά"
        }, {
            key: "gn",
            name: "Guaraní",
            nativeName: "Avañeẽ"
        }, {
            key: "gu",
            name: "Gujarati",
            nativeName: "ગુજરાતી"
        }, {
            key: "ht",
            name: "Haitian; Haitian Creole",
            nativeName: "Kreyòl ayisyen"
        }, {
            key: "ha",
            name: "Hausa",
            nativeName: "Hausa"
        }, {
            key: "he",
            name: "Hebrew (modern)",
            nativeName: "עברית"
        }, {
            key: "hz",
            name: "Herero",
            nativeName: "Otjiherero"
        }, {
            key: "hi",
            name: "Hindi",
            nativeName: "हिन्दी"
        }, {
            key: "ho",
            name: "Hiri Motu",
            nativeName: "Hiri Motu"
        }, {
            key: "hu",
            name: "Hungarian",
            nativeName: "Magyar",
            numberFormat: "1.000,00",
            decimalSeparator: l.DecimalSeparators.COMMA
        }, {
            key: "ia",
            name: "Interlingua",
            nativeName: "Interlingua"
        }, {
            key: "id",
            name: "Indonesian",
            nativeName: "Bahasa Indonesia"
        }, {
            key: "ie",
            name: "Interlingue",
            nativeName: "Interlingue"
        }, {
            key: "ga",
            name: "Irish",
            nativeName: "Gaeilge"
        }, {
            key: "ig",
            name: "Igbo",
            nativeName: "Asụsụ Igbo"
        }, {
            key: "ik",
            name: "Inupiaq",
            nativeName: "Iñupiaq"
        }, {
            key: "io",
            name: "Ido",
            nativeName: "Ido"
        }, {
            key: "is",
            name: "Icelandic",
            nativeName: "Íslenska"
        }, {
            key: "it",
            name: "Italian",
            nativeName: "Italiano"
        }, {
            key: "iu",
            name: "Inuktitut",
            nativeName: "ᐃᓄᒃᑎᑐᑦ"
        }, {
            key: "ja",
            name: "Japanese",
            nativeName: "日本語",
            numberFormat: "1,000.00",
            decimalSeparator: l.DecimalSeparators.POINT
        }, {
            key: "jv",
            name: "Javanese",
            nativeName: "Basa Jawa"
        }, {
            key: "kl",
            name: "Kalaallisut, Greenlandic",
            nativeName: "Kalaallisut"
        }, {
            key: "kn",
            name: "Kannada",
            nativeName: "ಕನ್ನಡ"
        }, {
            key: "kr",
            name: "Kanuri",
            nativeName: "Kanuri"
        }, {
            key: "ks",
            name: "Kashmiri",
            nativeName: "कश्मीरी"
        }, {
            key: "kk",
            name: "Kazakh",
            nativeName: "Қазақ тілі"
        }, {
            key: "km",
            name: "Khmer",
            nativeName: "ភាសាខ្មែរ"
        }, {
            key: "ki",
            name: "Kikuyu, Gikuyu",
            nativeName: "Gĩkũyũ"
        }, {
            key: "rw",
            name: "Kinyarwanda",
            nativeName: "Ikinyarwanda"
        }, {
            key: "ky",
            name: "Kirghiz, Kyrgyz",
            nativeName: "Кыргыз тили"
        }, {
            key: "kv",
            name: "Komi",
            nativeName: "Коми кыв"
        }, {
            key: "kg",
            name: "Kongo",
            nativeName: "KiKongo"
        }, {
            key: "ko",
            name: "Korean",
            nativeName: "한국어 (韓國語)"
        }, {
            key: "ku",
            name: "Kurdish",
            nativeName: "Kurdî"
        }, {
            key: "kj",
            name: "Kwanyama, Kuanyama",
            nativeName: "Kuanyama"
        }, {
            key: "la",
            name: "Latin",
            nativeName: "Latine"
        }, {
            key: "lb",
            name: "Luxembourgish, Letzeburgesch",
            nativeName: "Lëtzebuergesch"
        }, {
            key: "lg",
            name: "Luganda",
            nativeName: "Luganda"
        }, {
            key: "li",
            name: "Limburgish, Limburgan, Limburger",
            nativeName: "Limburgs"
        }, {
            key: "ln",
            name: "Lingala",
            nativeName: "Lingála"
        }, {
            key: "lo",
            name: "Lao",
            nativeName: "ພາສາລາວ"
        }, {
            key: "lt",
            name: "Lithuanian",
            nativeName: "Lietuvių kalba"
        }, {
            key: "lu",
            name: "Luba-Katanga",
            nativeName: "Luba-Katanga"
        }, {
            key: "lv",
            name: "Latvian",
            nativeName: "Latviešu valoda"
        }, {
            key: "gv",
            name: "Manx",
            nativeName: "Gaelg"
        }, {
            key: "mk",
            name: "Macedonian",
            nativeName: "Македонски јазик"
        }, {
            key: "mg",
            name: "Malagasy",
            nativeName: "Malagasy fiteny"
        }, {
            key: "ms",
            name: "Malay",
            nativeName: "Bahasa Melayu"
        }, {
            key: "ml",
            name: "Malayalam",
            nativeName: "മലയാളം"
        }, {
            key: "mt",
            name: "Maltese",
            nativeName: "Malti"
        }, {
            key: "mi",
            name: "Māori",
            nativeName: "Te reo Māori"
        }, {
            key: "mr",
            name: "Marathi (Marāṭhī)",
            nativeName: "मराठी"
        }, {
            key: "mh",
            name: "Marshallese",
            nativeName: "Kajin M̧ajeļ"
        }, {
            key: "mn",
            name: "Mongolian",
            nativeName: "Монгол"
        }, {
            key: "na",
            name: "Nauru",
            nativeName: "Ekakairũ Naoero"
        }, {
            key: "nv",
            name: "Navajo, Navaho",
            nativeName: "Diné bizaad"
        }, {
            key: "nb",
            name: "Norwegian Bokmål",
            nativeName: "Norsk bokmål"
        }, {
            key: "nd",
            name: "North Ndebele",
            nativeName: "IsiNdebele"
        }, {
            key: "ne",
            name: "Nepali",
            nativeName: "नेपाली"
        }, {
            key: "ng",
            name: "Ndonga",
            nativeName: "Owambo"
        }, {
            key: "nn",
            name: "Norwegian Nynorsk",
            nativeName: "Norsk nynorsk"
        }, {
            key: "no",
            name: "Norwegian",
            nativeName: "Norsk"
        }, {
            key: "ii",
            name: "Nuosu",
            nativeName: "Nuosuhxop"
        }, {
            key: "nr",
            name: "South Ndebele",
            nativeName: "IsiNdebele"
        }, {
            key: "oc",
            name: "Occitan",
            nativeName: "Occitan"
        }, {
            key: "oj",
            name: "Ojibwe, Ojibwa",
            nativeName: "ᐊᓂᔑᓈᐯᒧᐎᓐ"
        }, {
            key: "cu",
            name: "Old Church Slavonic",
            nativeName: "Ѩзыкъ словѣньскъ"
        }, {
            key: "om",
            name: "Oromo",
            nativeName: "Afaan Oromoo"
        }, {
            key: "or",
            name: "Oriya",
            nativeName: "ଓଡ଼ିଆ"
        }, {
            key: "os",
            name: "Ossetian, Ossetic",
            nativeName: "Ирон æвзаг"
        }, {
            key: "pa",
            name: "Panjabi, Punjabi",
            nativeName: "ਪੰਜਾਬੀ"
        }, {
            key: "pi",
            name: "Pāli",
            nativeName: "पाऴि"
        }, {
            key: "fa",
            name: "Persian",
            nativeName: "فارسی"
        }, {
            key: "pl",
            name: "Polish",
            nativeName: "Polski",
            numberFormat: "1 000,00",
            decimalSeparator: l.DecimalSeparators.COMMA
        }, {
            key: "ps",
            name: "Pashto, Pushto",
            nativeName: "پښتو"
        }, {
            key: "pt",
            name: "Portuguese",
            nativeName: "Português"
        }, {
            key: "qu",
            name: "Quechua",
            nativeName: "Runa Simi"
        }, {
            key: "rm",
            name: "Romansh",
            nativeName: "Rumantsch grischun"
        }, {
            key: "rn",
            name: "Kirundi",
            nativeName: "KiRundi"
        }, {
            key: "ro",
            name: "Romanian, Moldavian, Moldovan",
            nativeName: "Română"
        }, {
            key: "ru",
            name: "Russian",
            nativeName: "Русский язык"
        }, {
            key: "sa",
            name: "Sanskrit (Saṁskṛta)",
            nativeName: "संस्कृतम्"
        }, {
            key: "sc",
            name: "Sardinian",
            nativeName: "Sardu"
        }, {
            key: "sd",
            name: "Sindhi",
            nativeName: "सिन्धी"
        }, {
            key: "se",
            name: "Northern Sami",
            nativeName: "Davvisámegiella"
        }, {
            key: "sm",
            name: "Samoan",
            nativeName: "Gagana faa Samoa"
        }, {
            key: "sg",
            name: "Sango",
            nativeName: "Yângâ tî sängö"
        }, {
            key: "sr",
            name: "Serbian",
            nativeName: "Српски језик"
        }, {
            key: "gd",
            name: "Scottish Gaelic; Gaelic",
            nativeName: "Gàidhlig"
        }, {
            key: "sn",
            name: "Shona",
            nativeName: "ChiShona"
        }, {
            key: "si",
            name: "Sinhala, Sinhalese",
            nativeName: "සිංහල"
        }, {
            key: "sk",
            name: "Slovak",
            nativeName: "Slovenčina"
        }, {
            key: "sl",
            name: "Slovene",
            nativeName: "Slovenščina"
        }, {
            key: "so",
            name: "Somali",
            nativeName: "Soomaaliga"
        }, {
            key: "st",
            name: "Southern Sotho",
            nativeName: "Sesotho"
        }, {
            key: "es",
            name: "Spanish; Castilian",
            nativeName: "Español"
        }, {
            key: "su",
            name: "Sundanese",
            nativeName: "Basa Sunda"
        }, {
            key: "sw",
            name: "Swahili",
            nativeName: "Kiswahili"
        }, {
            key: "ss",
            name: "Swati",
            nativeName: "SiSwati"
        }, {
            key: "sv",
            name: "Swedish",
            nativeName: "Svenska"
        }, {
            key: "ta",
            name: "Tamil",
            nativeName: "தமிழ்"
        }, {
            key: "te",
            name: "Telugu",
            nativeName: "తెలుగు"
        }, {
            key: "tg",
            name: "Tajik",
            nativeName: "Тоҷикӣ"
        }, {
            key: "th",
            name: "Thai",
            nativeName: "ไทย"
        }, {
            key: "ti",
            name: "Tigrinya",
            nativeName: "ትግርኛ"
        }, {
            key: "bo",
            name: "Tibetan Standard, Tibetan, Central",
            nativeName: "བོད་ཡིག"
        }, {
            key: "tk",
            name: "Turkmen",
            nativeName: "Türkmen"
        }, {
            key: "tl",
            name: "Tagalog",
            nativeName: "Wikang Tagalog"
        }, {
            key: "tn",
            name: "Tswana",
            nativeName: "Setswana"
        }, {
            key: "to",
            name: "Tonga (Tonga Islands)",
            nativeName: "Faka Tonga"
        }, {
            key: "tr",
            name: "Turkish",
            nativeName: "Türkçe",
            numberFormat: "1.000,00",
            decimalSeparator: l.DecimalSeparators.COMMA
        }, {
            key: "ts",
            name: "Tsonga",
            nativeName: "Xitsonga"
        }, {
            key: "tt",
            name: "Tatar",
            nativeName: "Татарча"
        }, {
            key: "tw",
            name: "Twi",
            nativeName: "Twi"
        }, {
            key: "ty",
            name: "Tahitian",
            nativeName: "Reo Tahiti"
        }, {
            key: "ug",
            name: "Uighur, Uyghur",
            nativeName: "Uyƣurqə"
        }, {
            key: "uk",
            name: "Ukrainian",
            nativeName: "Українська"
        }, {
            key: "ur",
            name: "Urdu",
            nativeName: "اردو"
        }, {
            key: "uz",
            name: "Uzbek",
            nativeName: "Zbek"
        }, {
            key: "ve",
            name: "Venda",
            nativeName: "Tshivenḓa"
        }, {
            key: "vi",
            name: "Vietnamese",
            nativeName: "Tiếng Việt"
        }, {
            key: "vo",
            name: "Volapük",
            nativeName: "Volapük"
        }, {
            key: "wa",
            name: "Walloon",
            nativeName: "Walon"
        }, {
            key: "cy",
            name: "Welsh",
            nativeName: "Cymraeg"
        }, {
            key: "wo",
            name: "Wolof",
            nativeName: "Wollof"
        }, {
            key: "fy",
            name: "Western Frisian",
            nativeName: "Frysk"
        }, {
            key: "xh",
            name: "Xhosa",
            nativeName: "IsiXhosa"
        }, {
            key: "yi",
            name: "Yiddish",
            nativeName: "ייִדיש"
        }, {
            key: "yo",
            name: "Yoruba",
            nativeName: "Yorùbá"
        }, {
            key: "za",
            name: "Zhuang, Chuang",
            nativeName: "Saɯ cueŋƅ"
        }],
        t.ɵfac = function(e) {
            return new (e || t)(p.ɵɵinject("gettextCatalog"),p.ɵɵinject(h.ConfigService),p.ɵɵinject("localStorageService"),p.ɵɵinject(f.TranslocoService))
        }
        ,
        t.ɵprov = p.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.LanguageService = m,
    p.ɵsetClassMetadata(m, [{
        type: d.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: void 0,
            decorators: [{
                type: d.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: h.ConfigService
        }, {
            type: void 0,
            decorators: [{
                type: d.Inject,
                args: ["localStorageService"]
            }]
        }, {
            type: f.TranslocoService
        }]
    }
    ), null),
    o.module("IVWebApp").service("LanguageService", u.downgradeInjectable(m))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return U
    }
    )),
    n.d(e, "b", (function() {
        return D
    }
    )),
    n.d(e, "c", (function() {
        return B
    }
    )),
    n.d(e, "d", (function() {
        return L
    }
    ));
    var i = n(23)
      , r = n(0)
      , o = n(32)
      , a = n(93)
      , s = n(12)
      , c = n(229)
      , l = n(279)
      , u = n(335)
      , d = n(331)
      , p = n(33)
      , h = n(338)
      , f = n(631)
      , m = n(437)
      , g = n(165)
      , v = n(341)
      , y = n(438)
      , b = n(650)
      , w = n(276)
      , S = n(536)
      , x = n(13)
      , M = n(3)
      , E = n(37)
      , C = n(1)
      , A = n(343)
      , T = ["contentWrapper"]
      , O = ["*"]
      , _ = new r.InjectionToken("VIRTUAL_SCROLL_STRATEGY")
      , P = function() {
        function t(t, e, n) {
            this._scrolledIndexChange = new o.a,
            this.scrolledIndexChange = this._scrolledIndexChange.pipe(Object(f.a)()),
            this._viewport = null,
            this._itemSize = t,
            this._minBufferPx = e,
            this._maxBufferPx = n
        }
        return t.prototype.attach = function(t) {
            this._viewport = t,
            this._updateTotalContentSize(),
            this._updateRenderedRange()
        }
        ,
        t.prototype.detach = function() {
            this._scrolledIndexChange.complete(),
            this._viewport = null
        }
        ,
        t.prototype.updateItemAndBufferSize = function(t, e, n) {
            if (n < e)
                throw Error("CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx");
            this._itemSize = t,
            this._minBufferPx = e,
            this._maxBufferPx = n,
            this._updateTotalContentSize(),
            this._updateRenderedRange()
        }
        ,
        t.prototype.onContentScrolled = function() {
            this._updateRenderedRange()
        }
        ,
        t.prototype.onDataLengthChanged = function() {
            this._updateTotalContentSize(),
            this._updateRenderedRange()
        }
        ,
        t.prototype.onContentRendered = function() {}
        ,
        t.prototype.onRenderedOffsetChanged = function() {}
        ,
        t.prototype.scrollToIndex = function(t, e) {
            this._viewport && this._viewport.scrollToOffset(t * this._itemSize, e)
        }
        ,
        t.prototype._updateTotalContentSize = function() {
            this._viewport && this._viewport.setTotalContentSize(this._viewport.getDataLength() * this._itemSize)
        }
        ,
        t.prototype._updateRenderedRange = function() {
            if (this._viewport) {
                var t = this._viewport.measureScrollOffset()
                  , e = t / this._itemSize
                  , n = this._viewport.getRenderedRange()
                  , i = {
                    start: n.start,
                    end: n.end
                }
                  , r = this._viewport.getViewportSize()
                  , o = this._viewport.getDataLength()
                  , a = t - i.start * this._itemSize;
                if (a < this._minBufferPx && 0 != i.start) {
                    var s = Math.ceil((this._maxBufferPx - a) / this._itemSize);
                    i.start = Math.max(0, i.start - s),
                    i.end = Math.min(o, Math.ceil(e + (r + this._minBufferPx) / this._itemSize))
                } else {
                    var c = i.end * this._itemSize - (t + r);
                    if (c < this._minBufferPx && i.end != o) {
                        var l = Math.ceil((this._maxBufferPx - c) / this._itemSize);
                        l > 0 && (i.end = Math.min(o, i.end + l),
                        i.start = Math.max(0, Math.floor(e - this._minBufferPx / this._itemSize)))
                    }
                }
                this._viewport.setRenderedRange(i),
                this._viewport.setRenderedContentOffset(this._itemSize * i.start),
                this._scrolledIndexChange.next(Math.floor(e))
            }
        }
        ,
        t
    }();
    function I(t) {
        return t._scrollStrategy
    }
    var k = function() {
        function t() {
            this._itemSize = 20,
            this._minBufferPx = 100,
            this._maxBufferPx = 200,
            this._scrollStrategy = new P(this.itemSize,this.minBufferPx,this.maxBufferPx)
        }
        return Object.defineProperty(t.prototype, "itemSize", {
            get: function() {
                return this._itemSize
            },
            set: function(t) {
                this._itemSize = Object(i.f)(t)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "minBufferPx", {
            get: function() {
                return this._minBufferPx
            },
            set: function(t) {
                this._minBufferPx = Object(i.f)(t)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "maxBufferPx", {
            get: function() {
                return this._maxBufferPx
            },
            set: function(t) {
                this._maxBufferPx = Object(i.f)(t)
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.ngOnChanges = function() {
            this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx)
        }
        ,
        t.propDecorators = {
            itemSize: [{
                type: r.Input
            }],
            minBufferPx: [{
                type: r.Input
            }],
            maxBufferPx: [{
                type: r.Input
            }]
        },
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["cdk-virtual-scroll-viewport", "itemSize", ""]],
            inputs: {
                itemSize: "itemSize",
                minBufferPx: "minBufferPx",
                maxBufferPx: "maxBufferPx"
            },
            features: [r["ɵɵProvidersFeature"]([{
                provide: _,
                useFactory: I,
                deps: [Object(r.forwardRef)((function() {
                    return t
                }
                ))]
            }]), r["ɵɵNgOnChangesFeature"]]
        }),
        t
    }()
      , D = function() {
        function t(t, e, n) {
            this._ngZone = t,
            this._platform = e,
            this._scrolled = new o.a,
            this._globalSubscription = null,
            this._scrolledCount = 0,
            this.scrollContainers = new Map,
            this._document = n
        }
        return t.prototype.register = function(t) {
            var e = this;
            this.scrollContainers.has(t) || this.scrollContainers.set(t, t.elementScrolled().subscribe((function() {
                return e._scrolled.next(t)
            }
            )))
        }
        ,
        t.prototype.deregister = function(t) {
            var e = this.scrollContainers.get(t);
            e && (e.unsubscribe(),
            this.scrollContainers.delete(t))
        }
        ,
        t.prototype.scrolled = function(t) {
            var e = this;
            return void 0 === t && (t = 20),
            this._platform.isBrowser ? new s.a((function(n) {
                e._globalSubscription || e._addGlobalListener();
                var i = t > 0 ? e._scrolled.pipe(Object(m.a)(t)).subscribe(n) : e._scrolled.subscribe(n);
                return e._scrolledCount++,
                function() {
                    i.unsubscribe(),
                    e._scrolledCount--,
                    e._scrolledCount || e._removeGlobalListener()
                }
            }
            )) : Object(a.a)()
        }
        ,
        t.prototype.ngOnDestroy = function() {
            var t = this;
            this._removeGlobalListener(),
            this.scrollContainers.forEach((function(e, n) {
                return t.deregister(n)
            }
            )),
            this._scrolled.complete()
        }
        ,
        t.prototype.ancestorScrolled = function(t, e) {
            var n = this.getAncestorScrollContainers(t);
            return this.scrolled(e).pipe(Object(g.a)((function(t) {
                return !t || n.indexOf(t) > -1
            }
            )))
        }
        ,
        t.prototype.getAncestorScrollContainers = function(t) {
            var e = this
              , n = [];
            return this.scrollContainers.forEach((function(i, r) {
                e._scrollableContainsElement(r, t) && n.push(r)
            }
            )),
            n
        }
        ,
        t.prototype._getDocument = function() {
            return this._document || document
        }
        ,
        t.prototype._getWindow = function() {
            return this._getDocument().defaultView || window
        }
        ,
        t.prototype._scrollableContainsElement = function(t, e) {
            var n = e.nativeElement
              , i = t.getElementRef().nativeElement;
            do {
                if (n == i)
                    return !0
            } while (n = n.parentElement);
            return !1
        }
        ,
        t.prototype._addGlobalListener = function() {
            var t = this;
            this._globalSubscription = this._ngZone.runOutsideAngular((function() {
                var e = t._getWindow();
                return Object(c.a)(e.document, "scroll").subscribe((function() {
                    return t._scrolled.next()
                }
                ))
            }
            ))
        }
        ,
        t.prototype._removeGlobalListener = function() {
            this._globalSubscription && (this._globalSubscription.unsubscribe(),
            this._globalSubscription = null)
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: r.NgZone
            }, {
                type: x.a
            }, {
                type: void 0,
                decorators: [{
                    type: r.Optional
                }, {
                    type: r.Inject,
                    args: [M.DOCUMENT]
                }]
            }]
        }
        ,
        t.ɵprov = Object(r["ɵɵdefineInjectable"])({
            factory: function() {
                return new t(Object(r["ɵɵinject"])(r.NgZone),Object(r["ɵɵinject"])(x.a),Object(r["ɵɵinject"])(M.DOCUMENT, 8))
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)(r["ɵɵinject"](r.NgZone),r["ɵɵinject"](x.a),r["ɵɵinject"](M.DOCUMENT, 8))
        }
        ,
        t
    }()
      , R = function() {
        function t(t, e, n, i) {
            var r = this;
            this.elementRef = t,
            this.scrollDispatcher = e,
            this.ngZone = n,
            this.dir = i,
            this._destroyed = new o.a,
            this._elementScrolled = new s.a((function(t) {
                return r.ngZone.runOutsideAngular((function() {
                    return Object(c.a)(r.elementRef.nativeElement, "scroll").pipe(Object(v.a)(r._destroyed)).subscribe(t)
                }
                ))
            }
            ))
        }
        return t.prototype.ngOnInit = function() {
            this.scrollDispatcher.register(this)
        }
        ,
        t.prototype.ngOnDestroy = function() {
            this.scrollDispatcher.deregister(this),
            this._destroyed.next(),
            this._destroyed.complete()
        }
        ,
        t.prototype.elementScrolled = function() {
            return this._elementScrolled
        }
        ,
        t.prototype.getElementRef = function() {
            return this.elementRef
        }
        ,
        t.prototype.scrollTo = function(t) {
            var e = this.elementRef.nativeElement
              , n = this.dir && "rtl" == this.dir.value;
            null == t.left && (t.left = n ? t.end : t.start),
            null == t.right && (t.right = n ? t.start : t.end),
            null != t.bottom && (t.top = e.scrollHeight - e.clientHeight - t.bottom),
            n && 0 != Object(x.d)() ? (null != t.left && (t.right = e.scrollWidth - e.clientWidth - t.left),
            2 == Object(x.d)() ? t.left = t.right : 1 == Object(x.d)() && (t.left = t.right ? -t.right : t.right)) : null != t.right && (t.left = e.scrollWidth - e.clientWidth - t.right),
            this._applyScrollToOptions(t)
        }
        ,
        t.prototype._applyScrollToOptions = function(t) {
            var e = this.elementRef.nativeElement;
            Object(x.g)() ? e.scrollTo(t) : (null != t.top && (e.scrollTop = t.top),
            null != t.left && (e.scrollLeft = t.left))
        }
        ,
        t.prototype.measureScrollOffset = function(t) {
            var e = this.elementRef.nativeElement;
            if ("top" == t)
                return e.scrollTop;
            if ("bottom" == t)
                return e.scrollHeight - e.clientHeight - e.scrollTop;
            var n = this.dir && "rtl" == this.dir.value;
            return "start" == t ? t = n ? "right" : "left" : "end" == t && (t = n ? "left" : "right"),
            n && 2 == Object(x.d)() ? "left" == t ? e.scrollWidth - e.clientWidth - e.scrollLeft : e.scrollLeft : n && 1 == Object(x.d)() ? "left" == t ? e.scrollLeft + e.scrollWidth - e.clientWidth : -e.scrollLeft : "left" == t ? e.scrollLeft : e.scrollWidth - e.clientWidth - e.scrollLeft
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: r.ElementRef
            }, {
                type: D
            }, {
                type: r.NgZone
            }, {
                type: E.Directionality,
                decorators: [{
                    type: r.Optional
                }]
            }]
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.ElementRef),r["ɵɵdirectiveInject"](D),r["ɵɵdirectiveInject"](r.NgZone),r["ɵɵdirectiveInject"](E.Directionality, 8))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "cdk-scrollable", ""], ["", "cdkScrollable", ""]]
        }),
        t
    }()
      , L = function() {
        function t(t, e, n) {
            var i = this;
            this._platform = t,
            this._document = n,
            e.runOutsideAngular((function() {
                var e = i._getWindow();
                i._change = t.isBrowser ? Object(l.a)(Object(c.a)(e, "resize"), Object(c.a)(e, "orientationchange")) : Object(a.a)(),
                i._invalidateCache = i.change().subscribe((function() {
                    return i._updateViewportSize()
                }
                ))
            }
            ))
        }
        return t.prototype.ngOnDestroy = function() {
            this._invalidateCache.unsubscribe()
        }
        ,
        t.prototype.getViewportSize = function() {
            this._viewportSize || this._updateViewportSize();
            var t = {
                width: this._viewportSize.width,
                height: this._viewportSize.height
            };
            return this._platform.isBrowser || (this._viewportSize = null),
            t
        }
        ,
        t.prototype.getViewportRect = function() {
            var t = this.getViewportScrollPosition()
              , e = this.getViewportSize()
              , n = e.width
              , i = e.height;
            return {
                top: t.top,
                left: t.left,
                bottom: t.top + i,
                right: t.left + n,
                height: i,
                width: n
            }
        }
        ,
        t.prototype.getViewportScrollPosition = function() {
            if (!this._platform.isBrowser)
                return {
                    top: 0,
                    left: 0
                };
            var t = this._getDocument()
              , e = this._getWindow()
              , n = t.documentElement
              , i = n.getBoundingClientRect();
            return {
                top: -i.top || t.body.scrollTop || e.scrollY || n.scrollTop || 0,
                left: -i.left || t.body.scrollLeft || e.scrollX || n.scrollLeft || 0
            }
        }
        ,
        t.prototype.change = function(t) {
            return void 0 === t && (t = 20),
            t > 0 ? this._change.pipe(Object(m.a)(t)) : this._change
        }
        ,
        t.prototype._getDocument = function() {
            return this._document || document
        }
        ,
        t.prototype._getWindow = function() {
            return this._getDocument().defaultView || window
        }
        ,
        t.prototype._updateViewportSize = function() {
            var t = this._getWindow();
            this._viewportSize = this._platform.isBrowser ? {
                width: t.innerWidth,
                height: t.innerHeight
            } : {
                width: 0,
                height: 0
            }
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: x.a
            }, {
                type: r.NgZone
            }, {
                type: void 0,
                decorators: [{
                    type: r.Optional
                }, {
                    type: r.Inject,
                    args: [M.DOCUMENT]
                }]
            }]
        }
        ,
        t.ɵprov = Object(r["ɵɵdefineInjectable"])({
            factory: function() {
                return new t(Object(r["ɵɵinject"])(x.a),Object(r["ɵɵinject"])(r.NgZone),Object(r["ɵɵinject"])(M.DOCUMENT, 8))
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)(r["ɵɵinject"](x.a),r["ɵɵinject"](r.NgZone),r["ɵɵinject"](M.DOCUMENT, 8))
        }
        ,
        t
    }();
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var N = "undefined" != typeof requestAnimationFrame ? u.b : d.b
      , j = function(t) {
        function e(e, n, i, r, a, c, l) {
            var u = t.call(this, e, c, i, a) || this;
            if (u.elementRef = e,
            u._changeDetectorRef = n,
            u._scrollStrategy = r,
            u._detachedSubject = new o.a,
            u._renderedRangeSubject = new o.a,
            u._orientation = "vertical",
            u.scrolledIndexChange = new s.a((function(t) {
                return u._scrollStrategy.scrolledIndexChange.subscribe((function(e) {
                    return Promise.resolve().then((function() {
                        return u.ngZone.run((function() {
                            return t.next(e)
                        }
                        ))
                    }
                    ))
                }
                ))
            }
            )),
            u.renderedRangeStream = u._renderedRangeSubject.asObservable(),
            u._totalContentSize = 0,
            u._totalContentWidth = "",
            u._totalContentHeight = "",
            u._renderedRange = {
                start: 0,
                end: 0
            },
            u._dataLength = 0,
            u._viewportSize = 0,
            u._renderedContentOffset = 0,
            u._renderedContentOffsetNeedsRewrite = !1,
            u._isChangeDetectionPending = !1,
            u._runAfterChangeDetection = [],
            u._viewportChanges = p.a.EMPTY,
            !r)
                throw Error('Error: cdk-virtual-scroll-viewport requires the "itemSize" property to be set.');
            return l && (u._viewportChanges = l.change().subscribe((function() {
                u.checkViewportSize()
            }
            ))),
            u
        }
        return Object(C.c)(e, t),
        Object.defineProperty(e.prototype, "orientation", {
            get: function() {
                return this._orientation
            },
            set: function(t) {
                this._orientation !== t && (this._orientation = t,
                this._calculateSpacerSize())
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.ngOnInit = function() {
            var e = this;
            t.prototype.ngOnInit.call(this),
            this.ngZone.runOutsideAngular((function() {
                return Promise.resolve().then((function() {
                    e._measureViewportSize(),
                    e._scrollStrategy.attach(e),
                    e.elementScrolled().pipe(Object(y.a)(null), Object(m.a)(0, N)).subscribe((function() {
                        return e._scrollStrategy.onContentScrolled()
                    }
                    )),
                    e._markChangeDetectionNeeded()
                }
                ))
            }
            ))
        }
        ,
        e.prototype.ngOnDestroy = function() {
            this.detach(),
            this._scrollStrategy.detach(),
            this._renderedRangeSubject.complete(),
            this._detachedSubject.complete(),
            this._viewportChanges.unsubscribe(),
            t.prototype.ngOnDestroy.call(this)
        }
        ,
        e.prototype.attach = function(t) {
            var e = this;
            if (this._forOf)
                throw Error("CdkVirtualScrollViewport is already attached.");
            this.ngZone.runOutsideAngular((function() {
                e._forOf = t,
                e._forOf.dataStream.pipe(Object(v.a)(e._detachedSubject)).subscribe((function(t) {
                    var n = t.length;
                    n !== e._dataLength && (e._dataLength = n,
                    e._scrollStrategy.onDataLengthChanged()),
                    e._doChangeDetection()
                }
                ))
            }
            ))
        }
        ,
        e.prototype.detach = function() {
            this._forOf = null,
            this._detachedSubject.next()
        }
        ,
        e.prototype.getDataLength = function() {
            return this._dataLength
        }
        ,
        e.prototype.getViewportSize = function() {
            return this._viewportSize
        }
        ,
        e.prototype.getRenderedRange = function() {
            return this._renderedRange
        }
        ,
        e.prototype.setTotalContentSize = function(t) {
            this._totalContentSize !== t && (this._totalContentSize = t,
            this._calculateSpacerSize(),
            this._markChangeDetectionNeeded())
        }
        ,
        e.prototype.setRenderedRange = function(t) {
            var e, n, i = this;
            e = this._renderedRange,
            n = t,
            (e.start != n.start || e.end != n.end) && (this._renderedRangeSubject.next(this._renderedRange = t),
            this._markChangeDetectionNeeded((function() {
                return i._scrollStrategy.onContentRendered()
            }
            )))
        }
        ,
        e.prototype.getOffsetToRenderedContentStart = function() {
            return this._renderedContentOffsetNeedsRewrite ? null : this._renderedContentOffset
        }
        ,
        e.prototype.setRenderedContentOffset = function(t, e) {
            var n = this;
            void 0 === e && (e = "to-start");
            var i = this.dir && "rtl" == this.dir.value
              , r = "horizontal" == this.orientation
              , o = r ? "X" : "Y"
              , a = "translate" + o + "(" + Number((r && i ? -1 : 1) * t) + "px)";
            this._renderedContentOffset = t,
            "to-end" === e && (a += " translate" + o + "(-100%)",
            this._renderedContentOffsetNeedsRewrite = !0),
            this._renderedContentTransform != a && (this._renderedContentTransform = a,
            this._markChangeDetectionNeeded((function() {
                n._renderedContentOffsetNeedsRewrite ? (n._renderedContentOffset -= n.measureRenderedContentSize(),
                n._renderedContentOffsetNeedsRewrite = !1,
                n.setRenderedContentOffset(n._renderedContentOffset)) : n._scrollStrategy.onRenderedOffsetChanged()
            }
            )))
        }
        ,
        e.prototype.scrollToOffset = function(t, e) {
            void 0 === e && (e = "auto");
            var n = {
                behavior: e
            };
            "horizontal" === this.orientation ? n.start = t : n.top = t,
            this.scrollTo(n)
        }
        ,
        e.prototype.scrollToIndex = function(t, e) {
            void 0 === e && (e = "auto"),
            this._scrollStrategy.scrollToIndex(t, e)
        }
        ,
        e.prototype.measureScrollOffset = function(e) {
            return e ? t.prototype.measureScrollOffset.call(this, e) : t.prototype.measureScrollOffset.call(this, "horizontal" === this.orientation ? "start" : "top")
        }
        ,
        e.prototype.measureRenderedContentSize = function() {
            var t = this._contentWrapper.nativeElement;
            return "horizontal" === this.orientation ? t.offsetWidth : t.offsetHeight
        }
        ,
        e.prototype.measureRangeSize = function(t) {
            return this._forOf ? this._forOf.measureRangeSize(t, this.orientation) : 0
        }
        ,
        e.prototype.checkViewportSize = function() {
            this._measureViewportSize(),
            this._scrollStrategy.onDataLengthChanged()
        }
        ,
        e.prototype._measureViewportSize = function() {
            var t = this.elementRef.nativeElement;
            this._viewportSize = "horizontal" === this.orientation ? t.clientWidth : t.clientHeight
        }
        ,
        e.prototype._markChangeDetectionNeeded = function(t) {
            var e = this;
            t && this._runAfterChangeDetection.push(t),
            this._isChangeDetectionPending || (this._isChangeDetectionPending = !0,
            this.ngZone.runOutsideAngular((function() {
                return Promise.resolve().then((function() {
                    e._doChangeDetection()
                }
                ))
            }
            )))
        }
        ,
        e.prototype._doChangeDetection = function() {
            var t, e, n = this;
            this._isChangeDetectionPending = !1,
            this._contentWrapper.nativeElement.style.transform = this._renderedContentTransform,
            this.ngZone.run((function() {
                return n._changeDetectorRef.markForCheck()
            }
            ));
            var i = this._runAfterChangeDetection;
            this._runAfterChangeDetection = [];
            try {
                for (var r = Object(C.j)(i), o = r.next(); !o.done; o = r.next()) {
                    (0,
                    o.value)()
                }
            } catch (e) {
                t = {
                    error: e
                }
            } finally {
                try {
                    o && !o.done && (e = r.return) && e.call(r)
                } finally {
                    if (t)
                        throw t.error
                }
            }
        }
        ,
        e.prototype._calculateSpacerSize = function() {
            this._totalContentHeight = "horizontal" === this.orientation ? "" : this._totalContentSize + "px",
            this._totalContentWidth = "horizontal" === this.orientation ? this._totalContentSize + "px" : ""
        }
        ,
        e.ctorParameters = function() {
            return [{
                type: r.ElementRef
            }, {
                type: r.ChangeDetectorRef
            }, {
                type: r.NgZone
            }, {
                type: void 0,
                decorators: [{
                    type: r.Optional
                }, {
                    type: r.Inject,
                    args: [_]
                }]
            }, {
                type: E.Directionality,
                decorators: [{
                    type: r.Optional
                }]
            }, {
                type: D
            }, {
                type: L,
                decorators: [{
                    type: r.Optional
                }]
            }]
        }
        ,
        e.propDecorators = {
            orientation: [{
                type: r.Input
            }],
            scrolledIndexChange: [{
                type: r.Output
            }],
            _contentWrapper: [{
                type: r.ViewChild,
                args: ["contentWrapper", {
                    static: !0
                }]
            }]
        },
        e.ɵfac = function(t) {
            return new (t || e)(r["ɵɵdirectiveInject"](r.ElementRef),r["ɵɵdirectiveInject"](r.ChangeDetectorRef),r["ɵɵdirectiveInject"](r.NgZone),r["ɵɵdirectiveInject"](_, 8),r["ɵɵdirectiveInject"](E.Directionality, 8),r["ɵɵdirectiveInject"](D),r["ɵɵdirectiveInject"](L, 8))
        }
        ,
        e.ɵcmp = r["ɵɵdefineComponent"]({
            type: e,
            selectors: [["cdk-virtual-scroll-viewport"]],
            viewQuery: function(t, e) {
                var n;
                (1 & t && r["ɵɵstaticViewQuery"](T, !0),
                2 & t) && (r["ɵɵqueryRefresh"](n = r["ɵɵloadQuery"]()) && (e._contentWrapper = n.first))
            },
            hostAttrs: [1, "cdk-virtual-scroll-viewport"],
            hostVars: 4,
            hostBindings: function(t, e) {
                2 & t && r["ɵɵclassProp"]("cdk-virtual-scroll-orientation-horizontal", "horizontal" === e.orientation)("cdk-virtual-scroll-orientation-vertical", "horizontal" !== e.orientation)
            },
            inputs: {
                orientation: "orientation"
            },
            outputs: {
                scrolledIndexChange: "scrolledIndexChange"
            },
            features: [r["ɵɵProvidersFeature"]([{
                provide: R,
                useExisting: e
            }]), r["ɵɵInheritDefinitionFeature"]],
            ngContentSelectors: O,
            decls: 4,
            vars: 4,
            consts: [[1, "cdk-virtual-scroll-content-wrapper"], ["contentWrapper", ""], [1, "cdk-virtual-scroll-spacer"]],
            template: function(t, e) {
                1 & t && (r["ɵɵprojectionDef"](),
                r["ɵɵelementStart"](0, "div", 0, 1),
                r["ɵɵprojection"](2),
                r["ɵɵelementEnd"](),
                r["ɵɵelement"](3, "div", 2)),
                2 & t && (r["ɵɵadvance"](3),
                r["ɵɵstyleProp"]("width", e._totalContentWidth)("height", e._totalContentHeight))
            },
            styles: ["cdk-virtual-scroll-viewport{display:block;position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0}[dir=rtl] .cdk-virtual-scroll-spacer{right:0;left:auto;transform-origin:100% 0}\n"],
            encapsulation: 2,
            changeDetection: 0
        }),
        e
    }(R);
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function V(t, e) {
        var n = e;
        if (!n.getBoundingClientRect)
            return 0;
        var i = n.getBoundingClientRect();
        return "horizontal" == t ? i.width : i.height
    }
    var F = function() {
        function t(t, e, n, i, r) {
            var a = this;
            this._viewContainerRef = t,
            this._template = e,
            this._differs = n,
            this._viewport = i,
            this.viewChange = new o.a,
            this._dataSourceChanges = new o.a,
            this.cdkVirtualForTemplateCacheSize = 20,
            this.dataStream = this._dataSourceChanges.pipe(Object(y.a)(null), Object(b.a)(), Object(w.a)((function(t) {
                var e = Object(C.f)(t, 2)
                  , n = e[0]
                  , i = e[1];
                return a._changeDataSource(n, i)
            }
            )), Object(S.a)(1)),
            this._differ = null,
            this._templateCache = [],
            this._needsUpdate = !1,
            this._destroyed = new o.a,
            this.dataStream.subscribe((function(t) {
                a._data = t,
                a._onRenderedDataChange()
            }
            )),
            this._viewport.renderedRangeStream.pipe(Object(v.a)(this._destroyed)).subscribe((function(t) {
                a._renderedRange = t,
                r.run((function() {
                    return a.viewChange.next(a._renderedRange)
                }
                )),
                a._onRenderedDataChange()
            }
            )),
            this._viewport.attach(this)
        }
        return Object.defineProperty(t.prototype, "cdkVirtualForOf", {
            get: function() {
                return this._cdkVirtualForOf
            },
            set: function(t) {
                this._cdkVirtualForOf = t,
                Object(A.e)(t) ? this._dataSourceChanges.next(t) : this._dataSourceChanges.next(new A.a(Object(h.a)(t) ? t : Array.prototype.slice.call(t || [])))
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "cdkVirtualForTrackBy", {
            get: function() {
                return this._cdkVirtualForTrackBy
            },
            set: function(t) {
                var e = this;
                this._needsUpdate = !0,
                this._cdkVirtualForTrackBy = t ? function(n, i) {
                    return t(n + (e._renderedRange ? e._renderedRange.start : 0), i)
                }
                : void 0
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "cdkVirtualForTemplate", {
            set: function(t) {
                t && (this._needsUpdate = !0,
                this._template = t)
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.measureRangeSize = function(t, e) {
            if (t.start >= t.end)
                return 0;
            if (t.start < this._renderedRange.start || t.end > this._renderedRange.end)
                throw Error("Error: attempted to measure an item that isn't rendered.");
            for (var n = t.start - this._renderedRange.start, i = 0, r = t.end - t.start; r--; )
                for (var o = this._viewContainerRef.get(r + n), a = o ? o.rootNodes.length : 0; a--; )
                    i += V(e, o.rootNodes[a]);
            return i
        }
        ,
        t.prototype.ngDoCheck = function() {
            if (this._differ && this._needsUpdate) {
                var t = this._differ.diff(this._renderedItems);
                t ? this._applyChanges(t) : this._updateContext(),
                this._needsUpdate = !1
            }
        }
        ,
        t.prototype.ngOnDestroy = function() {
            var t, e;
            this._viewport.detach(),
            this._dataSourceChanges.next(),
            this._dataSourceChanges.complete(),
            this.viewChange.complete(),
            this._destroyed.next(),
            this._destroyed.complete();
            try {
                for (var n = Object(C.j)(this._templateCache), i = n.next(); !i.done; i = n.next()) {
                    i.value.destroy()
                }
            } catch (e) {
                t = {
                    error: e
                }
            } finally {
                try {
                    i && !i.done && (e = n.return) && e.call(n)
                } finally {
                    if (t)
                        throw t.error
                }
            }
        }
        ,
        t.prototype._onRenderedDataChange = function() {
            this._renderedRange && (this._renderedItems = this._data.slice(this._renderedRange.start, this._renderedRange.end),
            this._differ || (this._differ = this._differs.find(this._renderedItems).create(this.cdkVirtualForTrackBy)),
            this._needsUpdate = !0)
        }
        ,
        t.prototype._changeDataSource = function(t, e) {
            return t && t.disconnect(this),
            this._needsUpdate = !0,
            e ? e.connect(this) : Object(a.a)()
        }
        ,
        t.prototype._updateContext = function() {
            for (var t = this._data.length, e = this._viewContainerRef.length; e--; ) {
                var n = this._viewContainerRef.get(e);
                n.context.index = this._renderedRange.start + e,
                n.context.count = t,
                this._updateComputedContextProperties(n.context),
                n.detectChanges()
            }
        }
        ,
        t.prototype._applyChanges = function(t) {
            var e = this;
            t.forEachOperation((function(t, n, i) {
                if (null == t.previousIndex)
                    (r = e._insertViewForNewItem(i)).context.$implicit = t.item;
                else if (null == i)
                    e._cacheView(e._detachView(n));
                else {
                    var r = e._viewContainerRef.get(n);
                    e._viewContainerRef.move(r, i),
                    r.context.$implicit = t.item
                }
            }
            )),
            t.forEachIdentityChange((function(t) {
                e._viewContainerRef.get(t.currentIndex).context.$implicit = t.item
            }
            ));
            for (var n = this._data.length, i = this._viewContainerRef.length; i--; ) {
                var r = this._viewContainerRef.get(i);
                r.context.index = this._renderedRange.start + i,
                r.context.count = n,
                this._updateComputedContextProperties(r.context)
            }
        }
        ,
        t.prototype._cacheView = function(t) {
            if (this._templateCache.length < this.cdkVirtualForTemplateCacheSize)
                this._templateCache.push(t);
            else {
                var e = this._viewContainerRef.indexOf(t);
                -1 === e ? t.destroy() : this._viewContainerRef.remove(e)
            }
        }
        ,
        t.prototype._insertViewForNewItem = function(t) {
            return this._insertViewFromCache(t) || this._createEmbeddedViewAt(t)
        }
        ,
        t.prototype._updateComputedContextProperties = function(t) {
            t.first = 0 === t.index,
            t.last = t.index === t.count - 1,
            t.even = t.index % 2 == 0,
            t.odd = !t.even
        }
        ,
        t.prototype._createEmbeddedViewAt = function(t) {
            return this._viewContainerRef.createEmbeddedView(this._template, {
                $implicit: null,
                cdkVirtualForOf: this._cdkVirtualForOf,
                index: -1,
                count: -1,
                first: !1,
                last: !1,
                odd: !1,
                even: !1
            }, t)
        }
        ,
        t.prototype._insertViewFromCache = function(t) {
            var e = this._templateCache.pop();
            return e && this._viewContainerRef.insert(e, t),
            e || null
        }
        ,
        t.prototype._detachView = function(t) {
            return this._viewContainerRef.detach(t)
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: r.ViewContainerRef
            }, {
                type: r.TemplateRef
            }, {
                type: r.IterableDiffers
            }, {
                type: j,
                decorators: [{
                    type: r.SkipSelf
                }]
            }, {
                type: r.NgZone
            }]
        }
        ,
        t.propDecorators = {
            cdkVirtualForOf: [{
                type: r.Input
            }],
            cdkVirtualForTrackBy: [{
                type: r.Input
            }],
            cdkVirtualForTemplate: [{
                type: r.Input
            }],
            cdkVirtualForTemplateCacheSize: [{
                type: r.Input
            }]
        },
        t.ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.ViewContainerRef),r["ɵɵdirectiveInject"](r.TemplateRef),r["ɵɵdirectiveInject"](r.IterableDiffers),r["ɵɵdirectiveInject"](j, 4),r["ɵɵdirectiveInject"](r.NgZone))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "cdkVirtualFor", "", "cdkVirtualForOf", ""]],
            inputs: {
                cdkVirtualForTemplateCacheSize: "cdkVirtualForTemplateCacheSize",
                cdkVirtualForOf: "cdkVirtualForOf",
                cdkVirtualForTrackBy: "cdkVirtualForTrackBy",
                cdkVirtualForTemplate: "cdkVirtualForTemplate"
            }
        }),
        t
    }()
      , U = function() {
        function t() {}
        return t.ɵmod = r["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = r["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            }
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && r["ɵɵsetNgModuleScope"](t, {
            declarations: [R],
            exports: [R]
        }),
        t
    }()
      , B = function() {
        function t() {}
        return t.ɵmod = r["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = r["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            },
            imports: [[E.BidiModule, x.b, U], E.BidiModule, U]
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && r["ɵɵsetNgModuleScope"](t, {
            declarations: function() {
                return [k, F, j]
            },
            imports: function() {
                return [E.BidiModule, x.b, U]
            },
            exports: function() {
                return [E.BidiModule, U, k, F, j]
            }
        }),
        t
    }();
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.DEFAULT_VIEW = "defaultCamera",
        t.TOP_VIEW = "TVCamera",
        t.EAST_WEST_VIEW = "SVCamera1",
        t.NORTH_SOUTH_VIEW = "SVCamera2"
    }(e.SplitViewportName || (e.SplitViewportName = {})),
    function(t) {
        t[t.FULLSCREEN = 0] = "FULLSCREEN",
        t[t.FOUR_VIEWPORTS = 1] = "FOUR_VIEWPORTS",
        t[t.TWO_VIEWPORTS = 2] = "TWO_VIEWPORTS"
    }(e.SplitViewportMode || (e.SplitViewportMode = {}))
}
, function(t, e, n) {
    var i = n(87);
    t.exports = function(t) {
        return Object(i(t))
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(374);
    n(374);
    var r = n(526)
      , o = n(6)
      , a = n(0)
      , s = n(0)
      , c = n(374)
      , l = function() {
        function t(t) {
            this.LicenseInfoRepository = t,
            this._licenseFetched = !1,
            this.initialized = this.initialize()
        }
        return Object.defineProperty(t.prototype, "isLicenseValid", {
            get: function() {
                return this.license && this.license.licenseValid
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "licenseFetched", {
            get: function() {
                return this._licenseFetched
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.initialize = function(t) {
            var e = this;
            return void 0 === t && (t = !1),
            !t && this._licenseFetched ? Promise.resolve(this.license) : this.LicenseInfoRepository.getLicense(t).then((function() {
                return e.license = e.LicenseInfoRepository.data[0],
                e.daysUntilExpire = e.getDaysUntilExpire(),
                e._licenseFetched = !0,
                e.license
            }
            )).catch((function(t) {
                return e.license = e.LicenseInfoRepository.create(),
                e._licenseFetched = !1,
                Promise.reject(t)
            }
            ))
        }
        ,
        t.prototype.isFeatureEnabled = function(t) {
            return this.isLicenseValid && this.license.features[t].enabled
        }
        ,
        t.prototype.isExpirationPeriod = function() {
            return !!this.isLicenseValid && (this.daysUntilExpire > 0 && this.daysUntilExpire <= t.EXPIRATION_PERIOD_DAYS)
        }
        ,
        t.prototype.saveLicense = function(t) {
            var e = this;
            return this.LicenseInfoRepository.saveLicense(t).then((function() {
                return e._licenseFetched = !0,
                e.license = e.LicenseInfoRepository.data[0]
            }
            ))
        }
        ,
        t.prototype.isLicenseExpired = function() {
            return this._licenseFetched && this.license.isLicenseExpired
        }
        ,
        t.prototype.isLicenseAreaExceeded = function() {
            return this._licenseFetched && this.license.isLicenseAreaExceeded
        }
        ,
        t.prototype.isLicenseSignatureInvalid = function() {
            return this._licenseFetched && this.license.isLicenseSignatureInvalid
        }
        ,
        t.prototype.isLicenseAreaAvailable = function() {
            return this._licenseFetched && void 0 !== this.license.area
        }
        ,
        t.prototype.isLicenseValidFromAvailable = function() {
            return this._licenseFetched && void 0 !== this.license.validFrom
        }
        ,
        t.prototype.isLicenseValidToAvailable = function() {
            return this._licenseFetched && void 0 !== this.license.validTo
        }
        ,
        t.prototype.isLicenseRegisteredUsersExceeded = function() {
            return this._licenseFetched && this.license.isLicenseRegisteredUsersExceeded
        }
        ,
        t.prototype.isLicenseRegisteredUsersAvailable = function() {
            return this._licenseFetched && void 0 !== this.license.maxUsersWithGroups && this.license.maxUsersWithGroups > 0
        }
        ,
        t.prototype.isLicenseRegisteredUsersReached = function() {
            return !!this.isLicenseRegisteredUsersAvailable() && this.license.currentUsersWithGroups >= this.license.maxUsersWithGroups
        }
        ,
        t.prototype.isLicenseMaxLocationsExceeded = function() {
            return this._licenseFetched && this.license.isLicenseMaxLocationsExceeded
        }
        ,
        t.prototype.isLicenseMaxLocationsAvailable = function() {
            return this._licenseFetched && void 0 !== this.license.maxLocations
        }
        ,
        t.prototype.getDaysUntilExpire = function() {
            return this.license.licenseValid && this.license.validTo ? r.DateUtilities.differenceInDays(this.license.validTo, new Date) : 0
        }
        ,
        t.EXPIRATION_PERIOD_DAYS = 14,
        t.ɵfac = function(e) {
            return new (e || t)(s.ɵɵinject(c.LicenseInfoRepository))
        }
        ,
        t.ɵprov = s.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.LicenseService = l,
    s.ɵsetClassMetadata(l, [{
        type: a.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: c.LicenseInfoRepository
        }]
    }
    ), null),
    i.module("IVWebApp").service("LicenseService", o.downgradeInjectable(l))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.BUILDING = "BUILDING",
        t.FLOOR = "FLOOR",
        t.ROOM = "ROOM",
        t.FREE_SPACE_NAVIGATION = "FREE_SPACE_NAVIGATION",
        t.CUSTOM = "CUSTOM"
    }(e.SiteModelType || (e.SiteModelType = {}))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return i
    }
    ));
    var i = function() {
        return Array.isArray || function(t) {
            return t && "number" == typeof t.length
        }
    }()
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(7)
      , a = n(198);
    !function(t) {
        t.CAN_CREATE_DATASETS = "can_create_datasets",
        t.CAN_CREATE_BUNDLES = "can_create_bundles",
        t.CAN_CREATE_POLYGONS = "can_create_polygons",
        t.CAN_CREATE_POI_GROUPS = "can_create_poi_groups",
        t.CAN_CREATE_POIS = "can_create_pois",
        t.CAN_CREATE_USER_GROUPS = "can_create_user_groups",
        t.CAN_MAKE_PUBLIC = "can_make_public",
        t.CAN_EDIT_SITE_MODEL_ATTRIBUTES = "can_edit_site_model_attributes",
        t.CAN_VIEW_SITE_MODEL_ATTRIBUTES = "can_view_site_model_attributes",
        t.CAN_CROP_AND_DOWNLOAD_POINT_CLOUD = "can_crop_and_download_point_cloud",
        t.CAN_USE_MEASUREMENT_TOOL = "can_use_measurement_tool",
        t.CAN_SAVE_MEASUREMENTS = "can_save_measurements",
        t.CAN_EXPORT_POI_AUDIT_RECORDS = "can_export_poi_audit_records"
    }(e.GroupAttributes || (e.GroupAttributes = {}));
    var s = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.attributes = [],
            e.childGroups = [],
            e
        }
        return r(e, t),
        e.prototype.copy = function(e, n) {
            return t.prototype.fill.call(this, e),
            this.name = e.name,
            this.childGroups = o.cloneDeep(e.childGroups),
            this.attributes = o.clone(e.attributes),
            this
        }
        ,
        e.prototype.fillFromData = function(n) {
            t.prototype.fillFromData.call(this, n),
            this.name = n.name,
            this.attributes = n.attributes;
            for (var i = 0, r = n.child_groups; i < r.length; i++) {
                var o = r[i]
                  , a = new e(this.injectables);
                a.fillFromData(o),
                this.childGroups.push(a)
            }
        }
        ,
        e.prototype.toData = function() {
            var t = {};
            this.fillDto(t),
            t.name = this.name,
            t.attributes = this.attributes,
            t.child_groups = [];
            for (var e = 0, n = this.childGroups; e < n.length; e++) {
                var i = {};
                n[e].fillDto(i),
                t.child_groups.push(i)
            }
            return t
        }
        ,
        e
    }(a.SecureRepositoryObject);
    e.GroupEntity = s
}
, function(t, e) {
    var n = {}.hasOwnProperty;
    t.exports = function(t, e) {
        return n.call(t, e)
    }
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        n.d(e, "a", (function() {
            return C
        }
        )),
        n.d(e, "b", (function() {
            return Ht
        }
        )),
        n.d(e, "c", (function() {
            return vt
        }
        )),
        n.d(e, "d", (function() {
            return re
        }
        )),
        n.d(e, "e", (function() {
            return E
        }
        )),
        n.d(e, "f", (function() {
            return ae
        }
        )),
        n.d(e, "g", (function() {
            return yt
        }
        )),
        n.d(e, "h", (function() {
            return se
        }
        ));
        var i = n(1)
          , r = n(30)
          , o = n(0);
        function a() {
            return void 0 !== t && "[object process]" === {}.toString.call(t)
        }
        function s(t) {
            switch (t.length) {
            case 0:
                return new r.NoopAnimationPlayer;
            case 1:
                return t[0];
            default:
                return new r["ɵAnimationGroupPlayer"](t)
            }
        }
        function c(t, e, n, i, o, a) {
            void 0 === o && (o = {}),
            void 0 === a && (a = {});
            var s = []
              , c = []
              , l = -1
              , u = null;
            if (i.forEach((function(t) {
                var n = t.offset
                  , i = n == l
                  , d = i && u || {};
                Object.keys(t).forEach((function(n) {
                    var i = n
                      , c = t[n];
                    if ("offset" !== n)
                        switch (i = e.normalizePropertyName(i, s),
                        c) {
                        case r["ɵPRE_STYLE"]:
                            c = o[n];
                            break;
                        case r.AUTO_STYLE:
                            c = a[n];
                            break;
                        default:
                            c = e.normalizeStyleValue(n, i, c, s)
                        }
                    d[i] = c
                }
                )),
                i || c.push(d),
                u = d,
                l = n
            }
            )),
            s.length) {
                throw new Error("Unable to animate due to the following errors:\n - " + s.join("\n - "))
            }
            return c
        }
        function l(t, e, n, i) {
            switch (e) {
            case "start":
                t.onStart((function() {
                    return i(n && u(n, "start", t))
                }
                ));
                break;
            case "done":
                t.onDone((function() {
                    return i(n && u(n, "done", t))
                }
                ));
                break;
            case "destroy":
                t.onDestroy((function() {
                    return i(n && u(n, "destroy", t))
                }
                ))
            }
        }
        function u(t, e, n) {
            var i = n.totalTime
              , r = !!n.disabled
              , o = d(t.element, t.triggerName, t.fromState, t.toState, e || t.phaseName, null == i ? t.totalTime : i, r)
              , a = t._data;
            return null != a && (o._data = a),
            o
        }
        function d(t, e, n, i, r, o, a) {
            return void 0 === r && (r = ""),
            void 0 === o && (o = 0),
            {
                element: t,
                triggerName: e,
                fromState: n,
                toState: i,
                phaseName: r,
                totalTime: o,
                disabled: !!a
            }
        }
        function p(t, e, n) {
            var i;
            return t instanceof Map ? (i = t.get(e)) || t.set(e, i = n) : (i = t[e]) || (i = t[e] = n),
            i
        }
        function h(t) {
            var e = t.indexOf(":");
            return [t.substring(1, e), t.substr(e + 1)]
        }
        var f = function(t, e) {
            return !1
        }
          , m = function(t, e) {
            return !1
        }
          , g = function(t, e, n) {
            return []
        };
        "undefined" != typeof Element && (f = function(t, e) {
            return t.contains(e)
        }
        ,
        m = function() {
            if (Element.prototype.matches)
                return function(t, e) {
                    return t.matches(e)
                }
                ;
            var t = Element.prototype
              , e = t.matchesSelector || t.mozMatchesSelector || t.msMatchesSelector || t.oMatchesSelector || t.webkitMatchesSelector;
            return e ? function(t, n) {
                return e.apply(t, [n])
            }
            : m
        }(),
        g = function(t, e, n) {
            var r = [];
            if (n)
                r.push.apply(r, Object(i.h)(t.querySelectorAll(e)));
            else {
                var o = t.querySelector(e);
                o && r.push(o)
            }
            return r
        }
        );
        var v = null
          , y = !1;
        function b(t) {
            v || (v = function() {
                if ("undefined" != typeof document)
                    return document.body;
                return null
            }() || {},
            y = !!v.style && "WebkitAppearance"in v.style);
            var e = !0;
            v.style && !function(t) {
                return "ebkit" == t.substring(1, 6)
            }(t) && (!(e = t in v.style) && y && (e = "Webkit" + t.charAt(0).toUpperCase() + t.substr(1)in v.style));
            return e
        }
        var w = m
          , S = f
          , x = g;
        function M(t) {
            var e = {};
            return Object.keys(t).forEach((function(n) {
                var i = n.replace(/([a-z])([A-Z])/g, "$1-$2");
                e[i] = t[n]
            }
            )),
            e
        }
        var E = function() {
            function t() {}
            return t.prototype.validateStyleProperty = function(t) {
                return b(t)
            }
            ,
            t.prototype.matchesElement = function(t, e) {
                return w(t, e)
            }
            ,
            t.prototype.containsElement = function(t, e) {
                return S(t, e)
            }
            ,
            t.prototype.query = function(t, e, n) {
                return x(t, e, n)
            }
            ,
            t.prototype.computeStyle = function(t, e, n) {
                return n || ""
            }
            ,
            t.prototype.animate = function(t, e, n, i, o, a, s) {
                return void 0 === a && (a = []),
                new r.NoopAnimationPlayer(n,i)
            }
            ,
            t.ɵfac = function(e) {
                return new (e || t)
            }
            ,
            t.ɵprov = o["ɵɵdefineInjectable"]({
                token: t,
                factory: function(e) {
                    return t.ɵfac(e)
                }
            }),
            t
        }()
          , C = function() {
            function t() {}
            return t.NOOP = new E,
            t
        }();
        function A(t) {
            if ("number" == typeof t)
                return t;
            var e = t.match(/^(-?[\.\d]+)(m?s)/);
            return !e || e.length < 2 ? 0 : T(parseFloat(e[1]), e[2])
        }
        function T(t, e) {
            switch (e) {
            case "s":
                return 1e3 * t;
            default:
                return t
            }
        }
        function O(t, e, n) {
            return t.hasOwnProperty("duration") ? t : function(t, e, n) {
                var i, r = 0, o = "";
                if ("string" == typeof t) {
                    var a = t.match(/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i);
                    if (null === a)
                        return e.push('The provided timing value "' + t + '" is invalid.'),
                        {
                            duration: 0,
                            delay: 0,
                            easing: ""
                        };
                    i = T(parseFloat(a[1]), a[2]);
                    var s = a[3];
                    null != s && (r = T(parseFloat(s), a[4]));
                    var c = a[5];
                    c && (o = c)
                } else
                    i = t;
                if (!n) {
                    var l = !1
                      , u = e.length;
                    i < 0 && (e.push("Duration values below 0 are not allowed for this animation step."),
                    l = !0),
                    r < 0 && (e.push("Delay values below 0 are not allowed for this animation step."),
                    l = !0),
                    l && e.splice(u, 0, 'The provided timing value "' + t + '" is invalid.')
                }
                return {
                    duration: i,
                    delay: r,
                    easing: o
                }
            }(t, e, n)
        }
        function _(t, e) {
            return void 0 === e && (e = {}),
            Object.keys(t).forEach((function(n) {
                e[n] = t[n]
            }
            )),
            e
        }
        function P(t) {
            var e = {};
            return Array.isArray(t) ? t.forEach((function(t) {
                return I(t, !1, e)
            }
            )) : I(t, !1, e),
            e
        }
        function I(t, e, n) {
            if (void 0 === n && (n = {}),
            e)
                for (var i in t)
                    n[i] = t[i];
            else
                _(t, n);
            return n
        }
        function k(t, e, n) {
            return n ? e + ":" + n + ";" : ""
        }
        function D(t) {
            for (var e = "", n = 0; n < t.style.length; n++) {
                e += k(0, i = t.style.item(n), t.style.getPropertyValue(i))
            }
            for (var i in t.style) {
                if (t.style.hasOwnProperty(i) && !i.startsWith("_"))
                    e += k(0, i.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase(), t.style[i])
            }
            t.setAttribute("style", e)
        }
        function R(t, e, n) {
            t.style && (Object.keys(e).forEach((function(i) {
                var r = z(i);
                n && !n.hasOwnProperty(i) && (n[i] = t.style[r]),
                t.style[r] = e[i]
            }
            )),
            a() && D(t))
        }
        function L(t, e) {
            t.style && (Object.keys(e).forEach((function(e) {
                var n = z(e);
                t.style[n] = ""
            }
            )),
            a() && D(t))
        }
        function N(t) {
            return Array.isArray(t) ? 1 == t.length ? t[0] : Object(r.sequence)(t) : t
        }
        var j = new RegExp("{{\\s*(.+?)\\s*}}","g");
        function V(t) {
            var e = [];
            if ("string" == typeof t) {
                for (var n = void 0; n = j.exec(t); )
                    e.push(n[1]);
                j.lastIndex = 0
            }
            return e
        }
        function F(t, e, n) {
            var i = t.toString()
              , r = i.replace(j, (function(t, i) {
                var r = e[i];
                return e.hasOwnProperty(i) || (n.push("Please provide a value for the animation param " + i),
                r = ""),
                r.toString()
            }
            ));
            return r == i ? t : r
        }
        function U(t) {
            for (var e = [], n = t.next(); !n.done; )
                e.push(n.value),
                n = t.next();
            return e
        }
        var B = /-+([a-z0-9])/g;
        function z(t) {
            return t.replace(B, (function() {
                for (var t = [], e = 0; e < arguments.length; e++)
                    t[e] = arguments[e];
                return t[1].toUpperCase()
            }
            ))
        }
        function G(t, e) {
            return 0 === t || 0 === e
        }
        function H(t, e, n) {
            var i = Object.keys(n);
            if (i.length && e.length) {
                var r = e[0]
                  , o = [];
                if (i.forEach((function(t) {
                    r.hasOwnProperty(t) || o.push(t),
                    r[t] = n[t]
                }
                )),
                o.length)
                    for (var a = function() {
                        var n = e[s];
                        o.forEach((function(e) {
                            n[e] = q(t, e)
                        }
                        ))
                    }, s = 1; s < e.length; s++)
                        a()
            }
            return e
        }
        function W(t, e, n) {
            switch (e.type) {
            case 7:
                return t.visitTrigger(e, n);
            case 0:
                return t.visitState(e, n);
            case 1:
                return t.visitTransition(e, n);
            case 2:
                return t.visitSequence(e, n);
            case 3:
                return t.visitGroup(e, n);
            case 4:
                return t.visitAnimate(e, n);
            case 5:
                return t.visitKeyframes(e, n);
            case 6:
                return t.visitStyle(e, n);
            case 8:
                return t.visitReference(e, n);
            case 9:
                return t.visitAnimateChild(e, n);
            case 10:
                return t.visitAnimateRef(e, n);
            case 11:
                return t.visitQuery(e, n);
            case 12:
                return t.visitStagger(e, n);
            default:
                throw new Error("Unable to resolve animation metadata node #" + e.type)
            }
        }
        function q(t, e) {
            return window.getComputedStyle(t)[e]
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function X(t, e) {
            var n = [];
            return "string" == typeof t ? t.split(/\s*,\s*/).forEach((function(t) {
                return function(t, e, n) {
                    if (":" == t[0]) {
                        var i = function(t, e) {
                            switch (t) {
                            case ":enter":
                                return "void => *";
                            case ":leave":
                                return "* => void";
                            case ":increment":
                                return function(t, e) {
                                    return parseFloat(e) > parseFloat(t)
                                }
                                ;
                            case ":decrement":
                                return function(t, e) {
                                    return parseFloat(e) < parseFloat(t)
                                }
                                ;
                            default:
                                return e.push('The transition alias value "' + t + '" is not supported'),
                                "* => *"
                            }
                        }(t, n);
                        if ("function" == typeof i)
                            return void e.push(i);
                        t = i
                    }
                    var r = t.match(/^(\*|[-\w]+)\s*(<?[=-]>)\s*(\*|[-\w]+)$/);
                    if (null == r || r.length < 4)
                        return n.push('The provided transition expression "' + t + '" is not supported'),
                        e;
                    var o = r[1]
                      , a = r[2]
                      , s = r[3];
                    e.push(Z(o, s));
                    var c = "*" == o && "*" == s;
                    "<" != a[0] || c || e.push(Z(s, o))
                }(t, n, e)
            }
            )) : n.push(t),
            n
        }
        var Y = new Set(["true", "1"])
          , K = new Set(["false", "0"]);
        function Z(t, e) {
            var n = Y.has(t) || K.has(t)
              , i = Y.has(e) || K.has(e);
            return function(r, o) {
                var a = "*" == t || t == r
                  , s = "*" == e || e == o;
                return !a && n && "boolean" == typeof r && (a = r ? Y.has(t) : K.has(t)),
                !s && i && "boolean" == typeof o && (s = o ? Y.has(e) : K.has(e)),
                a && s
            }
        }
        var J = new RegExp("s*:selfs*,?","g");
        function Q(t, e, n) {
            return new $(t).build(e, n)
        }
        var $ = function() {
            function t(t) {
                this._driver = t
            }
            return t.prototype.build = function(t, e) {
                var n = new tt(e);
                return this._resetContextStyleTimingState(n),
                W(this, N(t), n)
            }
            ,
            t.prototype._resetContextStyleTimingState = function(t) {
                t.currentQuerySelector = "",
                t.collectedStyles = {},
                t.collectedStyles[""] = {},
                t.currentTime = 0
            }
            ,
            t.prototype.visitTrigger = function(t, e) {
                var n = this
                  , i = e.queryCount = 0
                  , r = e.depCount = 0
                  , o = []
                  , a = [];
                return "@" == t.name.charAt(0) && e.errors.push("animation triggers cannot be prefixed with an `@` sign (e.g. trigger('@foo', [...]))"),
                t.definitions.forEach((function(t) {
                    if (n._resetContextStyleTimingState(e),
                    0 == t.type) {
                        var s = t
                          , c = s.name;
                        c.toString().split(/\s*,\s*/).forEach((function(t) {
                            s.name = t,
                            o.push(n.visitState(s, e))
                        }
                        )),
                        s.name = c
                    } else if (1 == t.type) {
                        var l = n.visitTransition(t, e);
                        i += l.queryCount,
                        r += l.depCount,
                        a.push(l)
                    } else
                        e.errors.push("only state() and transition() definitions can sit inside of a trigger()")
                }
                )),
                {
                    type: 7,
                    name: t.name,
                    states: o,
                    transitions: a,
                    queryCount: i,
                    depCount: r,
                    options: null
                }
            }
            ,
            t.prototype.visitState = function(t, e) {
                var n = this.visitStyle(t.styles, e)
                  , i = t.options && t.options.params || null;
                if (n.containsDynamicStyles) {
                    var r = new Set
                      , o = i || {};
                    if (n.styles.forEach((function(t) {
                        if (et(t)) {
                            var e = t;
                            Object.keys(e).forEach((function(t) {
                                V(e[t]).forEach((function(t) {
                                    o.hasOwnProperty(t) || r.add(t)
                                }
                                ))
                            }
                            ))
                        }
                    }
                    )),
                    r.size) {
                        var a = U(r.values());
                        e.errors.push('state("' + t.name + '", ...) must define default values for all the following style substitutions: ' + a.join(", "))
                    }
                }
                return {
                    type: 0,
                    name: t.name,
                    style: n,
                    options: i ? {
                        params: i
                    } : null
                }
            }
            ,
            t.prototype.visitTransition = function(t, e) {
                e.queryCount = 0,
                e.depCount = 0;
                var n = W(this, N(t.animation), e);
                return {
                    type: 1,
                    matchers: X(t.expr, e.errors),
                    animation: n,
                    queryCount: e.queryCount,
                    depCount: e.depCount,
                    options: nt(t.options)
                }
            }
            ,
            t.prototype.visitSequence = function(t, e) {
                var n = this;
                return {
                    type: 2,
                    steps: t.steps.map((function(t) {
                        return W(n, t, e)
                    }
                    )),
                    options: nt(t.options)
                }
            }
            ,
            t.prototype.visitGroup = function(t, e) {
                var n = this
                  , i = e.currentTime
                  , r = 0
                  , o = t.steps.map((function(t) {
                    e.currentTime = i;
                    var o = W(n, t, e);
                    return r = Math.max(r, e.currentTime),
                    o
                }
                ));
                return e.currentTime = r,
                {
                    type: 3,
                    steps: o,
                    options: nt(t.options)
                }
            }
            ,
            t.prototype.visitAnimate = function(t, e) {
                var n, i = function(t, e) {
                    var n = null;
                    if (t.hasOwnProperty("duration"))
                        n = t;
                    else if ("number" == typeof t) {
                        return it(O(t, e).duration, 0, "")
                    }
                    var i = t;
                    if (i.split(/\s+/).some((function(t) {
                        return "{" == t.charAt(0) && "{" == t.charAt(1)
                    }
                    ))) {
                        var r = it(0, 0, "");
                        return r.dynamic = !0,
                        r.strValue = i,
                        r
                    }
                    return it((n = n || O(i, e)).duration, n.delay, n.easing)
                }(t.timings, e.errors);
                e.currentAnimateTimings = i;
                var o = t.styles ? t.styles : Object(r.style)({});
                if (5 == o.type)
                    n = this.visitKeyframes(o, e);
                else {
                    var a = t.styles
                      , s = !1;
                    if (!a) {
                        s = !0;
                        var c = {};
                        i.easing && (c.easing = i.easing),
                        a = Object(r.style)(c)
                    }
                    e.currentTime += i.duration + i.delay;
                    var l = this.visitStyle(a, e);
                    l.isEmptyStep = s,
                    n = l
                }
                return e.currentAnimateTimings = null,
                {
                    type: 4,
                    timings: i,
                    style: n,
                    options: null
                }
            }
            ,
            t.prototype.visitStyle = function(t, e) {
                var n = this._makeStyleAst(t, e);
                return this._validateStyleAst(n, e),
                n
            }
            ,
            t.prototype._makeStyleAst = function(t, e) {
                var n = [];
                Array.isArray(t.styles) ? t.styles.forEach((function(t) {
                    "string" == typeof t ? t == r.AUTO_STYLE ? n.push(t) : e.errors.push("The provided style string value " + t + " is not allowed.") : n.push(t)
                }
                )) : n.push(t.styles);
                var i = !1
                  , o = null;
                return n.forEach((function(t) {
                    if (et(t)) {
                        var e = t
                          , n = e.easing;
                        if (n && (o = n,
                        delete e.easing),
                        !i)
                            for (var r in e) {
                                if (e[r].toString().indexOf("{{") >= 0) {
                                    i = !0;
                                    break
                                }
                            }
                    }
                }
                )),
                {
                    type: 6,
                    styles: n,
                    easing: o,
                    offset: t.offset,
                    containsDynamicStyles: i,
                    options: null
                }
            }
            ,
            t.prototype._validateStyleAst = function(t, e) {
                var n = this
                  , i = e.currentAnimateTimings
                  , r = e.currentTime
                  , o = e.currentTime;
                i && o > 0 && (o -= i.duration + i.delay),
                t.styles.forEach((function(t) {
                    "string" != typeof t && Object.keys(t).forEach((function(i) {
                        if (n._driver.validateStyleProperty(i)) {
                            var a, s, c, l, u, d = e.collectedStyles[e.currentQuerySelector], p = d[i], h = !0;
                            p && (o != r && o >= p.startTime && r <= p.endTime && (e.errors.push('The CSS property "' + i + '" that exists between the times of "' + p.startTime + 'ms" and "' + p.endTime + 'ms" is also being animated in a parallel animation between the times of "' + o + 'ms" and "' + r + 'ms"'),
                            h = !1),
                            o = p.startTime),
                            h && (d[i] = {
                                startTime: o,
                                endTime: r
                            }),
                            e.options && (a = t[i],
                            s = e.options,
                            c = e.errors,
                            l = s.params || {},
                            (u = V(a)).length && u.forEach((function(t) {
                                l.hasOwnProperty(t) || c.push("Unable to resolve the local animation param " + t + " in the given list of values")
                            }
                            )))
                        } else
                            e.errors.push('The provided animation property "' + i + '" is not a supported CSS property for animations')
                    }
                    ))
                }
                ))
            }
            ,
            t.prototype.visitKeyframes = function(t, e) {
                var n = this
                  , i = {
                    type: 5,
                    styles: [],
                    options: null
                };
                if (!e.currentAnimateTimings)
                    return e.errors.push("keyframes() must be placed inside of a call to animate()"),
                    i;
                var r = 0
                  , o = []
                  , a = !1
                  , s = !1
                  , c = 0
                  , l = t.steps.map((function(t) {
                    var i = n._makeStyleAst(t, e)
                      , l = null != i.offset ? i.offset : function(t) {
                        if ("string" == typeof t)
                            return null;
                        var e = null;
                        if (Array.isArray(t))
                            t.forEach((function(t) {
                                if (et(t) && t.hasOwnProperty("offset")) {
                                    var n = t;
                                    e = parseFloat(n.offset),
                                    delete n.offset
                                }
                            }
                            ));
                        else if (et(t) && t.hasOwnProperty("offset")) {
                            var n = t;
                            e = parseFloat(n.offset),
                            delete n.offset
                        }
                        return e
                    }(i.styles)
                      , u = 0;
                    return null != l && (r++,
                    u = i.offset = l),
                    s = s || u < 0 || u > 1,
                    a = a || u < c,
                    c = u,
                    o.push(u),
                    i
                }
                ));
                s && e.errors.push("Please ensure that all keyframe offsets are between 0 and 1"),
                a && e.errors.push("Please ensure that all keyframe offsets are in order");
                var u = t.steps.length
                  , d = 0;
                r > 0 && r < u ? e.errors.push("Not all style() steps within the declared keyframes() contain offsets") : 0 == r && (d = 1 / (u - 1));
                var p = u - 1
                  , h = e.currentTime
                  , f = e.currentAnimateTimings
                  , m = f.duration;
                return l.forEach((function(t, r) {
                    var a = d > 0 ? r == p ? 1 : d * r : o[r]
                      , s = a * m;
                    e.currentTime = h + f.delay + s,
                    f.duration = s,
                    n._validateStyleAst(t, e),
                    t.offset = a,
                    i.styles.push(t)
                }
                )),
                i
            }
            ,
            t.prototype.visitReference = function(t, e) {
                return {
                    type: 8,
                    animation: W(this, N(t.animation), e),
                    options: nt(t.options)
                }
            }
            ,
            t.prototype.visitAnimateChild = function(t, e) {
                return e.depCount++,
                {
                    type: 9,
                    options: nt(t.options)
                }
            }
            ,
            t.prototype.visitAnimateRef = function(t, e) {
                return {
                    type: 10,
                    animation: this.visitReference(t.animation, e),
                    options: nt(t.options)
                }
            }
            ,
            t.prototype.visitQuery = function(t, e) {
                var n = e.currentQuerySelector
                  , r = t.options || {};
                e.queryCount++,
                e.currentQuery = t;
                var o = Object(i.f)(function(t) {
                    var e = !!t.split(/\s*,\s*/).find((function(t) {
                        return ":self" == t
                    }
                    ));
                    e && (t = t.replace(J, ""));
                    return [t = t.replace(/@\*/g, ".ng-trigger").replace(/@\w+/g, (function(t) {
                        return ".ng-trigger-" + t.substr(1)
                    }
                    )).replace(/:animating/g, ".ng-animating"), e]
                }(t.selector), 2)
                  , a = o[0]
                  , s = o[1];
                e.currentQuerySelector = n.length ? n + " " + a : a,
                p(e.collectedStyles, e.currentQuerySelector, {});
                var c = W(this, N(t.animation), e);
                return e.currentQuery = null,
                e.currentQuerySelector = n,
                {
                    type: 11,
                    selector: a,
                    limit: r.limit || 0,
                    optional: !!r.optional,
                    includeSelf: s,
                    animation: c,
                    originalSelector: t.selector,
                    options: nt(t.options)
                }
            }
            ,
            t.prototype.visitStagger = function(t, e) {
                e.currentQuery || e.errors.push("stagger() can only be used inside of query()");
                var n = "full" === t.timings ? {
                    duration: 0,
                    delay: 0,
                    easing: "full"
                } : O(t.timings, e.errors, !0);
                return {
                    type: 12,
                    animation: W(this, N(t.animation), e),
                    timings: n,
                    options: null
                }
            }
            ,
            t
        }();
        var tt = function(t) {
            this.errors = t,
            this.queryCount = 0,
            this.depCount = 0,
            this.currentTransition = null,
            this.currentQuery = null,
            this.currentQuerySelector = null,
            this.currentAnimateTimings = null,
            this.currentTime = 0,
            this.collectedStyles = {},
            this.options = null
        };
        function et(t) {
            return !Array.isArray(t) && "object" == typeof t
        }
        function nt(t) {
            var e;
            return t ? (t = _(t)).params && (t.params = (e = t.params) ? _(e) : null) : t = {},
            t
        }
        function it(t, e, n) {
            return {
                duration: t,
                delay: e,
                easing: n
            }
        }
        function rt(t, e, n, i, r, o, a, s) {
            return void 0 === a && (a = null),
            void 0 === s && (s = !1),
            {
                type: 1,
                element: t,
                keyframes: e,
                preStyleProps: n,
                postStyleProps: i,
                duration: r,
                delay: o,
                totalTime: r + o,
                easing: a,
                subTimeline: s
            }
        }
        var ot = function() {
            function t() {
                this._map = new Map
            }
            return t.prototype.consume = function(t) {
                var e = this._map.get(t);
                return e ? this._map.delete(t) : e = [],
                e
            }
            ,
            t.prototype.append = function(t, e) {
                var n = this._map.get(t);
                n || this._map.set(t, n = []),
                n.push.apply(n, Object(i.h)(e))
            }
            ,
            t.prototype.has = function(t) {
                return this._map.has(t)
            }
            ,
            t.prototype.clear = function() {
                this._map.clear()
            }
            ,
            t
        }()
          , at = new RegExp(":enter","g")
          , st = new RegExp(":leave","g");
        function ct(t, e, n, i, r, o, a, s, c, l) {
            return void 0 === o && (o = {}),
            void 0 === a && (a = {}),
            void 0 === l && (l = []),
            (new lt).buildKeyframes(t, e, n, i, r, o, a, s, c, l)
        }
        var lt = function() {
            function t() {}
            return t.prototype.buildKeyframes = function(t, e, n, i, r, o, a, s, c, l) {
                void 0 === l && (l = []),
                c = c || new ot;
                var u = new dt(t,e,c,i,r,l,[]);
                u.options = s,
                u.currentTimeline.setStyles([o], null, u.errors, s),
                W(this, n, u);
                var d = u.timelines.filter((function(t) {
                    return t.containsAnimation()
                }
                ));
                if (d.length && Object.keys(a).length) {
                    var p = d[d.length - 1];
                    p.allowOnlyTimelineStyles() || p.setStyles([a], null, u.errors, s)
                }
                return d.length ? d.map((function(t) {
                    return t.buildKeyframes()
                }
                )) : [rt(e, [], [], [], 0, 0, "", !1)]
            }
            ,
            t.prototype.visitTrigger = function(t, e) {}
            ,
            t.prototype.visitState = function(t, e) {}
            ,
            t.prototype.visitTransition = function(t, e) {}
            ,
            t.prototype.visitAnimateChild = function(t, e) {
                var n = e.subInstructions.consume(e.element);
                if (n) {
                    var i = e.createSubContext(t.options)
                      , r = e.currentTimeline.currentTime
                      , o = this._visitSubInstructions(n, i, i.options);
                    r != o && e.transformIntoNewTimeline(o)
                }
                e.previousNode = t
            }
            ,
            t.prototype.visitAnimateRef = function(t, e) {
                var n = e.createSubContext(t.options);
                n.transformIntoNewTimeline(),
                this.visitReference(t.animation, n),
                e.transformIntoNewTimeline(n.currentTimeline.currentTime),
                e.previousNode = t
            }
            ,
            t.prototype._visitSubInstructions = function(t, e, n) {
                var i = e.currentTimeline.currentTime
                  , r = null != n.duration ? A(n.duration) : null
                  , o = null != n.delay ? A(n.delay) : null;
                return 0 !== r && t.forEach((function(t) {
                    var n = e.appendInstructionToTimeline(t, r, o);
                    i = Math.max(i, n.duration + n.delay)
                }
                )),
                i
            }
            ,
            t.prototype.visitReference = function(t, e) {
                e.updateOptions(t.options, !0),
                W(this, t.animation, e),
                e.previousNode = t
            }
            ,
            t.prototype.visitSequence = function(t, e) {
                var n = this
                  , i = e.subContextCount
                  , r = e
                  , o = t.options;
                if (o && (o.params || o.delay) && ((r = e.createSubContext(o)).transformIntoNewTimeline(),
                null != o.delay)) {
                    6 == r.previousNode.type && (r.currentTimeline.snapshotCurrentStyles(),
                    r.previousNode = ut);
                    var a = A(o.delay);
                    r.delayNextStep(a)
                }
                t.steps.length && (t.steps.forEach((function(t) {
                    return W(n, t, r)
                }
                )),
                r.currentTimeline.applyStylesToKeyframe(),
                r.subContextCount > i && r.transformIntoNewTimeline()),
                e.previousNode = t
            }
            ,
            t.prototype.visitGroup = function(t, e) {
                var n = this
                  , i = []
                  , r = e.currentTimeline.currentTime
                  , o = t.options && t.options.delay ? A(t.options.delay) : 0;
                t.steps.forEach((function(a) {
                    var s = e.createSubContext(t.options);
                    o && s.delayNextStep(o),
                    W(n, a, s),
                    r = Math.max(r, s.currentTimeline.currentTime),
                    i.push(s.currentTimeline)
                }
                )),
                i.forEach((function(t) {
                    return e.currentTimeline.mergeTimelineCollectedStyles(t)
                }
                )),
                e.transformIntoNewTimeline(r),
                e.previousNode = t
            }
            ,
            t.prototype._visitTiming = function(t, e) {
                if (t.dynamic) {
                    var n = t.strValue;
                    return O(e.params ? F(n, e.params, e.errors) : n, e.errors)
                }
                return {
                    duration: t.duration,
                    delay: t.delay,
                    easing: t.easing
                }
            }
            ,
            t.prototype.visitAnimate = function(t, e) {
                var n = e.currentAnimateTimings = this._visitTiming(t.timings, e)
                  , i = e.currentTimeline;
                n.delay && (e.incrementTime(n.delay),
                i.snapshotCurrentStyles());
                var r = t.style;
                5 == r.type ? this.visitKeyframes(r, e) : (e.incrementTime(n.duration),
                this.visitStyle(r, e),
                i.applyStylesToKeyframe()),
                e.currentAnimateTimings = null,
                e.previousNode = t
            }
            ,
            t.prototype.visitStyle = function(t, e) {
                var n = e.currentTimeline
                  , i = e.currentAnimateTimings;
                !i && n.getCurrentStyleProperties().length && n.forwardFrame();
                var r = i && i.easing || t.easing;
                t.isEmptyStep ? n.applyEmptyStep(r) : n.setStyles(t.styles, r, e.errors, e.options),
                e.previousNode = t
            }
            ,
            t.prototype.visitKeyframes = function(t, e) {
                var n = e.currentAnimateTimings
                  , i = e.currentTimeline.duration
                  , r = n.duration
                  , o = e.createSubContext().currentTimeline;
                o.easing = n.easing,
                t.styles.forEach((function(t) {
                    var n = t.offset || 0;
                    o.forwardTime(n * r),
                    o.setStyles(t.styles, t.easing, e.errors, e.options),
                    o.applyStylesToKeyframe()
                }
                )),
                e.currentTimeline.mergeTimelineCollectedStyles(o),
                e.transformIntoNewTimeline(i + r),
                e.previousNode = t
            }
            ,
            t.prototype.visitQuery = function(t, e) {
                var n = this
                  , i = e.currentTimeline.currentTime
                  , r = t.options || {}
                  , o = r.delay ? A(r.delay) : 0;
                o && (6 === e.previousNode.type || 0 == i && e.currentTimeline.getCurrentStyleProperties().length) && (e.currentTimeline.snapshotCurrentStyles(),
                e.previousNode = ut);
                var a = i
                  , s = e.invokeQuery(t.selector, t.originalSelector, t.limit, t.includeSelf, !!r.optional, e.errors);
                e.currentQueryTotal = s.length;
                var c = null;
                s.forEach((function(i, r) {
                    e.currentQueryIndex = r;
                    var s = e.createSubContext(t.options, i);
                    o && s.delayNextStep(o),
                    i === e.element && (c = s.currentTimeline),
                    W(n, t.animation, s),
                    s.currentTimeline.applyStylesToKeyframe();
                    var l = s.currentTimeline.currentTime;
                    a = Math.max(a, l)
                }
                )),
                e.currentQueryIndex = 0,
                e.currentQueryTotal = 0,
                e.transformIntoNewTimeline(a),
                c && (e.currentTimeline.mergeTimelineCollectedStyles(c),
                e.currentTimeline.snapshotCurrentStyles()),
                e.previousNode = t
            }
            ,
            t.prototype.visitStagger = function(t, e) {
                var n = e.parentContext
                  , i = e.currentTimeline
                  , r = t.timings
                  , o = Math.abs(r.duration)
                  , a = o * (e.currentQueryTotal - 1)
                  , s = o * e.currentQueryIndex;
                switch (r.duration < 0 ? "reverse" : r.easing) {
                case "reverse":
                    s = a - s;
                    break;
                case "full":
                    s = n.currentStaggerTime
                }
                var c = e.currentTimeline;
                s && c.delayNextStep(s);
                var l = c.currentTime;
                W(this, t.animation, e),
                e.previousNode = t,
                n.currentStaggerTime = i.currentTime - l + (i.startTime - n.currentTimeline.startTime)
            }
            ,
            t
        }()
          , ut = {}
          , dt = function() {
            function t(t, e, n, i, r, o, a, s) {
                this._driver = t,
                this.element = e,
                this.subInstructions = n,
                this._enterClassName = i,
                this._leaveClassName = r,
                this.errors = o,
                this.timelines = a,
                this.parentContext = null,
                this.currentAnimateTimings = null,
                this.previousNode = ut,
                this.subContextCount = 0,
                this.options = {},
                this.currentQueryIndex = 0,
                this.currentQueryTotal = 0,
                this.currentStaggerTime = 0,
                this.currentTimeline = s || new pt(this._driver,e,0),
                a.push(this.currentTimeline)
            }
            return Object.defineProperty(t.prototype, "params", {
                get: function() {
                    return this.options.params
                },
                enumerable: !0,
                configurable: !0
            }),
            t.prototype.updateOptions = function(t, e) {
                var n = this;
                if (t) {
                    var i = t
                      , r = this.options;
                    null != i.duration && (r.duration = A(i.duration)),
                    null != i.delay && (r.delay = A(i.delay));
                    var o = i.params;
                    if (o) {
                        var a = r.params;
                        a || (a = this.options.params = {}),
                        Object.keys(o).forEach((function(t) {
                            e && a.hasOwnProperty(t) || (a[t] = F(o[t], a, n.errors))
                        }
                        ))
                    }
                }
            }
            ,
            t.prototype._copyOptions = function() {
                var t = {};
                if (this.options) {
                    var e = this.options.params;
                    if (e) {
                        var n = t.params = {};
                        Object.keys(e).forEach((function(t) {
                            n[t] = e[t]
                        }
                        ))
                    }
                }
                return t
            }
            ,
            t.prototype.createSubContext = function(e, n, i) {
                void 0 === e && (e = null);
                var r = n || this.element
                  , o = new t(this._driver,r,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(r, i || 0));
                return o.previousNode = this.previousNode,
                o.currentAnimateTimings = this.currentAnimateTimings,
                o.options = this._copyOptions(),
                o.updateOptions(e),
                o.currentQueryIndex = this.currentQueryIndex,
                o.currentQueryTotal = this.currentQueryTotal,
                o.parentContext = this,
                this.subContextCount++,
                o
            }
            ,
            t.prototype.transformIntoNewTimeline = function(t) {
                return this.previousNode = ut,
                this.currentTimeline = this.currentTimeline.fork(this.element, t),
                this.timelines.push(this.currentTimeline),
                this.currentTimeline
            }
            ,
            t.prototype.appendInstructionToTimeline = function(t, e, n) {
                var i = {
                    duration: null != e ? e : t.duration,
                    delay: this.currentTimeline.currentTime + (null != n ? n : 0) + t.delay,
                    easing: ""
                }
                  , r = new ht(this._driver,t.element,t.keyframes,t.preStyleProps,t.postStyleProps,i,t.stretchStartingKeyframe);
                return this.timelines.push(r),
                i
            }
            ,
            t.prototype.incrementTime = function(t) {
                this.currentTimeline.forwardTime(this.currentTimeline.duration + t)
            }
            ,
            t.prototype.delayNextStep = function(t) {
                t > 0 && this.currentTimeline.delayNextStep(t)
            }
            ,
            t.prototype.invokeQuery = function(t, e, n, r, o, a) {
                var s = [];
                if (r && s.push(this.element),
                t.length > 0) {
                    t = (t = t.replace(at, "." + this._enterClassName)).replace(st, "." + this._leaveClassName);
                    var c = 1 != n
                      , l = this._driver.query(this.element, t, c);
                    0 !== n && (l = n < 0 ? l.slice(l.length + n, l.length) : l.slice(0, n)),
                    s.push.apply(s, Object(i.h)(l))
                }
                return o || 0 != s.length || a.push('`query("' + e + '")` returned zero elements. (Use `query("' + e + '", { optional: true })` if you wish to allow this.)'),
                s
            }
            ,
            t
        }()
          , pt = function() {
            function t(t, e, n, i) {
                this._driver = t,
                this.element = e,
                this.startTime = n,
                this._elementTimelineStylesLookup = i,
                this.duration = 0,
                this._previousKeyframe = {},
                this._currentKeyframe = {},
                this._keyframes = new Map,
                this._styleSummary = {},
                this._pendingStyles = {},
                this._backFill = {},
                this._currentEmptyStepKeyframe = null,
                this._elementTimelineStylesLookup || (this._elementTimelineStylesLookup = new Map),
                this._localTimelineStyles = Object.create(this._backFill, {}),
                this._globalTimelineStyles = this._elementTimelineStylesLookup.get(e),
                this._globalTimelineStyles || (this._globalTimelineStyles = this._localTimelineStyles,
                this._elementTimelineStylesLookup.set(e, this._localTimelineStyles)),
                this._loadKeyframe()
            }
            return t.prototype.containsAnimation = function() {
                switch (this._keyframes.size) {
                case 0:
                    return !1;
                case 1:
                    return this.getCurrentStyleProperties().length > 0;
                default:
                    return !0
                }
            }
            ,
            t.prototype.getCurrentStyleProperties = function() {
                return Object.keys(this._currentKeyframe)
            }
            ,
            Object.defineProperty(t.prototype, "currentTime", {
                get: function() {
                    return this.startTime + this.duration
                },
                enumerable: !0,
                configurable: !0
            }),
            t.prototype.delayNextStep = function(t) {
                var e = 1 == this._keyframes.size && Object.keys(this._pendingStyles).length;
                this.duration || e ? (this.forwardTime(this.currentTime + t),
                e && this.snapshotCurrentStyles()) : this.startTime += t
            }
            ,
            t.prototype.fork = function(e, n) {
                return this.applyStylesToKeyframe(),
                new t(this._driver,e,n || this.currentTime,this._elementTimelineStylesLookup)
            }
            ,
            t.prototype._loadKeyframe = function() {
                this._currentKeyframe && (this._previousKeyframe = this._currentKeyframe),
                this._currentKeyframe = this._keyframes.get(this.duration),
                this._currentKeyframe || (this._currentKeyframe = Object.create(this._backFill, {}),
                this._keyframes.set(this.duration, this._currentKeyframe))
            }
            ,
            t.prototype.forwardFrame = function() {
                this.duration += 1,
                this._loadKeyframe()
            }
            ,
            t.prototype.forwardTime = function(t) {
                this.applyStylesToKeyframe(),
                this.duration = t,
                this._loadKeyframe()
            }
            ,
            t.prototype._updateStyle = function(t, e) {
                this._localTimelineStyles[t] = e,
                this._globalTimelineStyles[t] = e,
                this._styleSummary[t] = {
                    time: this.currentTime,
                    value: e
                }
            }
            ,
            t.prototype.allowOnlyTimelineStyles = function() {
                return this._currentEmptyStepKeyframe !== this._currentKeyframe
            }
            ,
            t.prototype.applyEmptyStep = function(t) {
                var e = this;
                t && (this._previousKeyframe.easing = t),
                Object.keys(this._globalTimelineStyles).forEach((function(t) {
                    e._backFill[t] = e._globalTimelineStyles[t] || r.AUTO_STYLE,
                    e._currentKeyframe[t] = r.AUTO_STYLE
                }
                )),
                this._currentEmptyStepKeyframe = this._currentKeyframe
            }
            ,
            t.prototype.setStyles = function(t, e, n, i) {
                var o = this;
                e && (this._previousKeyframe.easing = e);
                var a = i && i.params || {}
                  , s = function(t, e) {
                    var n, i = {};
                    return t.forEach((function(t) {
                        "*" === t ? (n = n || Object.keys(e)).forEach((function(t) {
                            i[t] = r.AUTO_STYLE
                        }
                        )) : I(t, !1, i)
                    }
                    )),
                    i
                }(t, this._globalTimelineStyles);
                Object.keys(s).forEach((function(t) {
                    var e = F(s[t], a, n);
                    o._pendingStyles[t] = e,
                    o._localTimelineStyles.hasOwnProperty(t) || (o._backFill[t] = o._globalTimelineStyles.hasOwnProperty(t) ? o._globalTimelineStyles[t] : r.AUTO_STYLE),
                    o._updateStyle(t, e)
                }
                ))
            }
            ,
            t.prototype.applyStylesToKeyframe = function() {
                var t = this
                  , e = this._pendingStyles
                  , n = Object.keys(e);
                0 != n.length && (this._pendingStyles = {},
                n.forEach((function(n) {
                    var i = e[n];
                    t._currentKeyframe[n] = i
                }
                )),
                Object.keys(this._localTimelineStyles).forEach((function(e) {
                    t._currentKeyframe.hasOwnProperty(e) || (t._currentKeyframe[e] = t._localTimelineStyles[e])
                }
                )))
            }
            ,
            t.prototype.snapshotCurrentStyles = function() {
                var t = this;
                Object.keys(this._localTimelineStyles).forEach((function(e) {
                    var n = t._localTimelineStyles[e];
                    t._pendingStyles[e] = n,
                    t._updateStyle(e, n)
                }
                ))
            }
            ,
            t.prototype.getFinalKeyframe = function() {
                return this._keyframes.get(this.duration)
            }
            ,
            Object.defineProperty(t.prototype, "properties", {
                get: function() {
                    var t = [];
                    for (var e in this._currentKeyframe)
                        t.push(e);
                    return t
                },
                enumerable: !0,
                configurable: !0
            }),
            t.prototype.mergeTimelineCollectedStyles = function(t) {
                var e = this;
                Object.keys(t._styleSummary).forEach((function(n) {
                    var i = e._styleSummary[n]
                      , r = t._styleSummary[n];
                    (!i || r.time > i.time) && e._updateStyle(n, r.value)
                }
                ))
            }
            ,
            t.prototype.buildKeyframes = function() {
                var t = this;
                this.applyStylesToKeyframe();
                var e = new Set
                  , n = new Set
                  , i = 1 === this._keyframes.size && 0 === this.duration
                  , o = [];
                this._keyframes.forEach((function(a, s) {
                    var c = I(a, !0);
                    Object.keys(c).forEach((function(t) {
                        var i = c[t];
                        i == r["ɵPRE_STYLE"] ? e.add(t) : i == r.AUTO_STYLE && n.add(t)
                    }
                    )),
                    i || (c.offset = s / t.duration),
                    o.push(c)
                }
                ));
                var a = e.size ? U(e.values()) : []
                  , s = n.size ? U(n.values()) : [];
                if (i) {
                    var c = o[0]
                      , l = _(c);
                    c.offset = 0,
                    l.offset = 1,
                    o = [c, l]
                }
                return rt(this.element, o, a, s, this.duration, this.startTime, this.easing, !1)
            }
            ,
            t
        }()
          , ht = function(t) {
            function e(e, n, i, r, o, a, s) {
                void 0 === s && (s = !1);
                var c = t.call(this, e, n, a.delay) || this;
                return c.element = n,
                c.keyframes = i,
                c.preStyleProps = r,
                c.postStyleProps = o,
                c._stretchStartingKeyframe = s,
                c.timings = {
                    duration: a.duration,
                    delay: a.delay,
                    easing: a.easing
                },
                c
            }
            return Object(i.c)(e, t),
            e.prototype.containsAnimation = function() {
                return this.keyframes.length > 1
            }
            ,
            e.prototype.buildKeyframes = function() {
                var t = this.keyframes
                  , e = this.timings
                  , n = e.delay
                  , i = e.duration
                  , r = e.easing;
                if (this._stretchStartingKeyframe && n) {
                    var o = []
                      , a = i + n
                      , s = n / a
                      , c = I(t[0], !1);
                    c.offset = 0,
                    o.push(c);
                    var l = I(t[0], !1);
                    l.offset = ft(s),
                    o.push(l);
                    for (var u = t.length - 1, d = 1; d <= u; d++) {
                        var p = I(t[d], !1)
                          , h = n + p.offset * i;
                        p.offset = ft(h / a),
                        o.push(p)
                    }
                    i = a,
                    n = 0,
                    r = "",
                    t = o
                }
                return rt(this.element, t, this.preStyleProps, this.postStyleProps, i, n, r, !0)
            }
            ,
            e
        }(pt);
        function ft(t, e) {
            void 0 === e && (e = 3);
            var n = Math.pow(10, e - 1);
            return Math.round(t * n) / n
        }
        !function() {
            function t(t, e) {
                this._driver = t;
                var n = []
                  , i = Q(t, e, n);
                if (n.length) {
                    var r = "animation validation failed:\n" + n.join("\n");
                    throw new Error(r)
                }
                this._animationAst = i
            }
            t.prototype.buildTimelines = function(t, e, n, i, r) {
                var o = Array.isArray(e) ? P(e) : e
                  , a = Array.isArray(n) ? P(n) : n
                  , s = [];
                r = r || new ot;
                var c = ct(this._driver, t, this._animationAst, "ng-enter", "ng-leave", o, a, i, r, s);
                if (s.length) {
                    var l = "animation building failed:\n" + s.join("\n");
                    throw new Error(l)
                }
                return c
            }
        }();
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var mt, gt, vt = function() {}, yt = (function() {
            function t() {}
            t.prototype.normalizePropertyName = function(t, e) {
                return t
            }
            ,
            t.prototype.normalizeStyleValue = function(t, e, n, i) {
                return n
            }
        }(),
        function(t) {
            function e() {
                return null !== t && t.apply(this, arguments) || this
            }
            return Object(i.c)(e, t),
            e.prototype.normalizePropertyName = function(t, e) {
                return z(t)
            }
            ,
            e.prototype.normalizeStyleValue = function(t, e, n, i) {
                var r = ""
                  , o = n.toString().trim();
                if (bt[e] && 0 !== n && "0" !== n)
                    if ("number" == typeof n)
                        r = "px";
                    else {
                        var a = n.match(/^[+-]?[\d\.]+([a-z]*)$/);
                        a && 0 == a[1].length && i.push("Please provide a CSS unit value for " + t + ":" + n)
                    }
                return o + r
            }
            ,
            e
        }(vt)), bt = (mt = "width,height,minWidth,minHeight,maxWidth,maxHeight,left,top,bottom,right,fontSize,outlineWidth,outlineOffset,paddingTop,paddingLeft,paddingBottom,paddingRight,marginTop,marginLeft,marginBottom,marginRight,borderRadius,borderWidth,borderTopWidth,borderLeftWidth,borderRightWidth,borderBottomWidth,textIndent,perspective".split(","),
        gt = {},
        mt.forEach((function(t) {
            return gt[t] = !0
        }
        )),
        gt);
        function wt(t, e, n, i, r, o, a, s, c, l, u, d, p) {
            return {
                type: 0,
                element: t,
                triggerName: e,
                isRemovalTransition: r,
                fromState: n,
                fromStyles: o,
                toState: i,
                toStyles: a,
                timelines: s,
                queriedElements: c,
                preStyleProps: l,
                postStyleProps: u,
                totalTime: d,
                errors: p
            }
        }
        var St = {}
          , xt = function() {
            function t(t, e, n) {
                this._triggerName = t,
                this.ast = e,
                this._stateStyles = n
            }
            return t.prototype.match = function(t, e, n, i) {
                return function(t, e, n, i, r) {
                    return t.some((function(t) {
                        return t(e, n, i, r)
                    }
                    ))
                }(this.ast.matchers, t, e, n, i)
            }
            ,
            t.prototype.buildStyles = function(t, e, n) {
                var i = this._stateStyles["*"]
                  , r = this._stateStyles[t]
                  , o = i ? i.buildStyles(e, n) : {};
                return r ? r.buildStyles(e, n) : o
            }
            ,
            t.prototype.build = function(t, e, n, r, o, a, s, c, l, u) {
                var d = []
                  , h = this.ast.options && this.ast.options.params || St
                  , f = s && s.params || St
                  , m = this.buildStyles(n, f, d)
                  , g = c && c.params || St
                  , v = this.buildStyles(r, g, d)
                  , y = new Set
                  , b = new Map
                  , w = new Map
                  , S = "void" === r
                  , x = {
                    params: Object(i.a)(Object(i.a)({}, h), g)
                }
                  , M = u ? [] : ct(t, e, this.ast.animation, o, a, m, v, x, l, d)
                  , E = 0;
                if (M.forEach((function(t) {
                    E = Math.max(t.duration + t.delay, E)
                }
                )),
                d.length)
                    return wt(e, this._triggerName, n, r, S, m, v, [], [], b, w, E, d);
                M.forEach((function(t) {
                    var n = t.element
                      , i = p(b, n, {});
                    t.preStyleProps.forEach((function(t) {
                        return i[t] = !0
                    }
                    ));
                    var r = p(w, n, {});
                    t.postStyleProps.forEach((function(t) {
                        return r[t] = !0
                    }
                    )),
                    n !== e && y.add(n)
                }
                ));
                var C = U(y.values());
                return wt(e, this._triggerName, n, r, S, m, v, M, C, b, w, E)
            }
            ,
            t
        }();
        var Mt = function() {
            function t(t, e) {
                this.styles = t,
                this.defaultParams = e
            }
            return t.prototype.buildStyles = function(t, e) {
                var n = {}
                  , i = _(this.defaultParams);
                return Object.keys(t).forEach((function(e) {
                    var n = t[e];
                    null != n && (i[e] = n)
                }
                )),
                this.styles.styles.forEach((function(t) {
                    if ("string" != typeof t) {
                        var r = t;
                        Object.keys(r).forEach((function(t) {
                            var o = r[t];
                            o.length > 1 && (o = F(o, i, e)),
                            n[t] = o
                        }
                        ))
                    }
                }
                )),
                n
            }
            ,
            t
        }();
        var Et = function() {
            function t(t, e) {
                var n, i, r = this;
                this.name = t,
                this.ast = e,
                this.transitionFactories = [],
                this.states = {},
                e.states.forEach((function(t) {
                    var e = t.options && t.options.params || {};
                    r.states[t.name] = new Mt(t.style,e)
                }
                )),
                Ct(this.states, "true", "1"),
                Ct(this.states, "false", "0"),
                e.transitions.forEach((function(e) {
                    r.transitionFactories.push(new xt(t,e,r.states))
                }
                )),
                this.fallbackTransition = (n = t,
                i = this.states,
                new xt(n,{
                    type: 1,
                    animation: {
                        type: 2,
                        steps: [],
                        options: null
                    },
                    matchers: [function(t, e) {
                        return !0
                    }
                    ],
                    options: null,
                    queryCount: 0,
                    depCount: 0
                },i))
            }
            return Object.defineProperty(t.prototype, "containsQueries", {
                get: function() {
                    return this.ast.queryCount > 0
                },
                enumerable: !0,
                configurable: !0
            }),
            t.prototype.matchTransition = function(t, e, n, i) {
                return this.transitionFactories.find((function(r) {
                    return r.match(t, e, n, i)
                }
                )) || null
            }
            ,
            t.prototype.matchStyles = function(t, e, n) {
                return this.fallbackTransition.buildStyles(t, e, n)
            }
            ,
            t
        }();
        function Ct(t, e, n) {
            t.hasOwnProperty(e) ? t.hasOwnProperty(n) || (t[n] = t[e]) : t.hasOwnProperty(n) && (t[e] = t[n])
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var At = new ot
          , Tt = function() {
            function t(t, e, n) {
                this.bodyNode = t,
                this._driver = e,
                this._normalizer = n,
                this._animations = {},
                this._playersById = {},
                this.players = []
            }
            return t.prototype.register = function(t, e) {
                var n = []
                  , i = Q(this._driver, e, n);
                if (n.length)
                    throw new Error("Unable to build the animation due to the following errors: " + n.join("\n"));
                this._animations[t] = i
            }
            ,
            t.prototype._buildPlayer = function(t, e, n) {
                var i = t.element
                  , r = c(this._driver, this._normalizer, 0, t.keyframes, e, n);
                return this._driver.animate(i, r, t.duration, t.delay, t.easing, [], !0)
            }
            ,
            t.prototype.create = function(t, e, n) {
                var i = this;
                void 0 === n && (n = {});
                var o, a = [], c = this._animations[t], l = new Map;
                if (c ? (o = ct(this._driver, e, c, "ng-enter", "ng-leave", {}, {}, n, At, a)).forEach((function(t) {
                    var e = p(l, t.element, {});
                    t.postStyleProps.forEach((function(t) {
                        return e[t] = null
                    }
                    ))
                }
                )) : (a.push("The requested animation doesn't exist or has already been destroyed"),
                o = []),
                a.length)
                    throw new Error("Unable to create the animation due to the following errors: " + a.join("\n"));
                l.forEach((function(t, e) {
                    Object.keys(t).forEach((function(n) {
                        t[n] = i._driver.computeStyle(e, n, r.AUTO_STYLE)
                    }
                    ))
                }
                ));
                var u = s(o.map((function(t) {
                    var e = l.get(t.element);
                    return i._buildPlayer(t, {}, e)
                }
                )));
                return this._playersById[t] = u,
                u.onDestroy((function() {
                    return i.destroy(t)
                }
                )),
                this.players.push(u),
                u
            }
            ,
            t.prototype.destroy = function(t) {
                var e = this._getPlayer(t);
                e.destroy(),
                delete this._playersById[t];
                var n = this.players.indexOf(e);
                n >= 0 && this.players.splice(n, 1)
            }
            ,
            t.prototype._getPlayer = function(t) {
                var e = this._playersById[t];
                if (!e)
                    throw new Error("Unable to find the timeline player referenced by " + t);
                return e
            }
            ,
            t.prototype.listen = function(t, e, n, i) {
                var r = d(e, "", "", "");
                return l(this._getPlayer(t), n, r, i),
                function() {}
            }
            ,
            t.prototype.command = function(t, e, n, i) {
                if ("register" != n)
                    if ("create" != n) {
                        var r = this._getPlayer(t);
                        switch (n) {
                        case "play":
                            r.play();
                            break;
                        case "pause":
                            r.pause();
                            break;
                        case "reset":
                            r.reset();
                            break;
                        case "restart":
                            r.restart();
                            break;
                        case "finish":
                            r.finish();
                            break;
                        case "init":
                            r.init();
                            break;
                        case "setPosition":
                            r.setPosition(parseFloat(i[0]));
                            break;
                        case "destroy":
                            this.destroy(t)
                        }
                    } else {
                        var o = i[0] || {};
                        this.create(t, e, o)
                    }
                else
                    this.register(t, i[0])
            }
            ,
            t
        }()
          , Ot = []
          , _t = {
            namespaceId: "",
            setForRemoval: !1,
            setForMove: !1,
            hasAnimation: !1,
            removedBeforeQueried: !1
        }
          , Pt = {
            namespaceId: "",
            setForMove: !1,
            setForRemoval: !1,
            hasAnimation: !1,
            removedBeforeQueried: !0
        }
          , It = function() {
            function t(t, e) {
                void 0 === e && (e = ""),
                this.namespaceId = e;
                var n = t && t.hasOwnProperty("value")
                  , i = n ? t.value : t;
                if (this.value = function(t) {
                    return null != t ? t : null
                }(i),
                n) {
                    var r = _(t);
                    delete r.value,
                    this.options = r
                } else
                    this.options = {};
                this.options.params || (this.options.params = {})
            }
            return Object.defineProperty(t.prototype, "params", {
                get: function() {
                    return this.options.params
                },
                enumerable: !0,
                configurable: !0
            }),
            t.prototype.absorbOptions = function(t) {
                var e = t.params;
                if (e) {
                    var n = this.options.params;
                    Object.keys(e).forEach((function(t) {
                        null == n[t] && (n[t] = e[t])
                    }
                    ))
                }
            }
            ,
            t
        }()
          , kt = new It("void")
          , Dt = function() {
            function t(t, e, n) {
                this.id = t,
                this.hostElement = e,
                this._engine = n,
                this.players = [],
                this._triggers = {},
                this._queue = [],
                this._elementListeners = new Map,
                this._hostClassName = "ng-tns-" + t,
                Ut(e, this._hostClassName)
            }
            return t.prototype.listen = function(t, e, n, i) {
                var r, o = this;
                if (!this._triggers.hasOwnProperty(e))
                    throw new Error('Unable to listen on the animation trigger event "' + n + '" because the animation trigger "' + e + "\" doesn't exist!");
                if (null == n || 0 == n.length)
                    throw new Error('Unable to listen on the animation trigger "' + e + '" because the provided event is undefined!');
                if ("start" != (r = n) && "done" != r)
                    throw new Error('The provided animation trigger event "' + n + '" for the animation trigger "' + e + '" is not supported!');
                var a = p(this._elementListeners, t, [])
                  , s = {
                    name: e,
                    phase: n,
                    callback: i
                };
                a.push(s);
                var c = p(this._engine.statesByElement, t, {});
                return c.hasOwnProperty(e) || (Ut(t, "ng-trigger"),
                Ut(t, "ng-trigger-" + e),
                c[e] = kt),
                function() {
                    o._engine.afterFlush((function() {
                        var t = a.indexOf(s);
                        t >= 0 && a.splice(t, 1),
                        o._triggers[e] || delete c[e]
                    }
                    ))
                }
            }
            ,
            t.prototype.register = function(t, e) {
                return !this._triggers[t] && (this._triggers[t] = e,
                !0)
            }
            ,
            t.prototype._getTrigger = function(t) {
                var e = this._triggers[t];
                if (!e)
                    throw new Error('The provided animation trigger "' + t + '" has not been registered!');
                return e
            }
            ,
            t.prototype.trigger = function(t, e, n, i) {
                var r = this;
                void 0 === i && (i = !0);
                var o = this._getTrigger(e)
                  , a = new Lt(this.id,e,t)
                  , s = this._engine.statesByElement.get(t);
                s || (Ut(t, "ng-trigger"),
                Ut(t, "ng-trigger-" + e),
                this._engine.statesByElement.set(t, s = {}));
                var c = s[e]
                  , l = new It(n,this.id);
                if (!(n && n.hasOwnProperty("value")) && c && l.absorbOptions(c.options),
                s[e] = l,
                c || (c = kt),
                "void" === l.value || c.value !== l.value) {
                    var u = p(this._engine.playersByElement, t, []);
                    u.forEach((function(t) {
                        t.namespaceId == r.id && t.triggerName == e && t.queued && t.destroy()
                    }
                    ));
                    var d = o.matchTransition(c.value, l.value, t, l.params)
                      , h = !1;
                    if (!d) {
                        if (!i)
                            return;
                        d = o.fallbackTransition,
                        h = !0
                    }
                    return this._engine.totalQueuedPlayers++,
                    this._queue.push({
                        element: t,
                        triggerName: e,
                        transition: d,
                        fromState: c,
                        toState: l,
                        player: a,
                        isFallbackTransition: h
                    }),
                    h || (Ut(t, "ng-animate-queued"),
                    a.onStart((function() {
                        Bt(t, "ng-animate-queued")
                    }
                    ))),
                    a.onDone((function() {
                        var e = r.players.indexOf(a);
                        e >= 0 && r.players.splice(e, 1);
                        var n = r._engine.playersByElement.get(t);
                        if (n) {
                            var i = n.indexOf(a);
                            i >= 0 && n.splice(i, 1)
                        }
                    }
                    )),
                    this.players.push(a),
                    u.push(a),
                    a
                }
                if (!function(t, e) {
                    var n = Object.keys(t)
                      , i = Object.keys(e);
                    if (n.length != i.length)
                        return !1;
                    for (var r = 0; r < n.length; r++) {
                        var o = n[r];
                        if (!e.hasOwnProperty(o) || t[o] !== e[o])
                            return !1
                    }
                    return !0
                }(c.params, l.params)) {
                    var f = []
                      , m = o.matchStyles(c.value, c.params, f)
                      , g = o.matchStyles(l.value, l.params, f);
                    f.length ? this._engine.reportError(f) : this._engine.afterFlush((function() {
                        L(t, m),
                        R(t, g)
                    }
                    ))
                }
            }
            ,
            t.prototype.deregister = function(t) {
                var e = this;
                delete this._triggers[t],
                this._engine.statesByElement.forEach((function(e, n) {
                    delete e[t]
                }
                )),
                this._elementListeners.forEach((function(n, i) {
                    e._elementListeners.set(i, n.filter((function(e) {
                        return e.name != t
                    }
                    )))
                }
                ))
            }
            ,
            t.prototype.clearElementCache = function(t) {
                this._engine.statesByElement.delete(t),
                this._elementListeners.delete(t);
                var e = this._engine.playersByElement.get(t);
                e && (e.forEach((function(t) {
                    return t.destroy()
                }
                )),
                this._engine.playersByElement.delete(t))
            }
            ,
            t.prototype._signalRemovalForInnerTriggers = function(t, e) {
                var n = this
                  , i = this._engine.driver.query(t, ".ng-trigger", !0);
                i.forEach((function(t) {
                    if (!t.__ng_removed) {
                        var i = n._engine.fetchNamespacesByElement(t);
                        i.size ? i.forEach((function(n) {
                            return n.triggerLeaveAnimation(t, e, !1, !0)
                        }
                        )) : n.clearElementCache(t)
                    }
                }
                )),
                this._engine.afterFlushAnimationsDone((function() {
                    return i.forEach((function(t) {
                        return n.clearElementCache(t)
                    }
                    ))
                }
                ))
            }
            ,
            t.prototype.triggerLeaveAnimation = function(t, e, n, i) {
                var r = this
                  , o = this._engine.statesByElement.get(t);
                if (o) {
                    var a = [];
                    if (Object.keys(o).forEach((function(e) {
                        if (r._triggers[e]) {
                            var n = r.trigger(t, e, "void", i);
                            n && a.push(n)
                        }
                    }
                    )),
                    a.length)
                        return this._engine.markElementAsRemoved(this.id, t, !0, e),
                        n && s(a).onDone((function() {
                            return r._engine.processLeaveNode(t)
                        }
                        )),
                        !0
                }
                return !1
            }
            ,
            t.prototype.prepareLeaveAnimationListeners = function(t) {
                var e = this
                  , n = this._elementListeners.get(t);
                if (n) {
                    var i = new Set;
                    n.forEach((function(n) {
                        var r = n.name;
                        if (!i.has(r)) {
                            i.add(r);
                            var o = e._triggers[r].fallbackTransition
                              , a = e._engine.statesByElement.get(t)[r] || kt
                              , s = new It("void")
                              , c = new Lt(e.id,r,t);
                            e._engine.totalQueuedPlayers++,
                            e._queue.push({
                                element: t,
                                triggerName: r,
                                transition: o,
                                fromState: a,
                                toState: s,
                                player: c,
                                isFallbackTransition: !0
                            })
                        }
                    }
                    ))
                }
            }
            ,
            t.prototype.removeNode = function(t, e) {
                var n = this
                  , i = this._engine;
                if (t.childElementCount && this._signalRemovalForInnerTriggers(t, e),
                !this.triggerLeaveAnimation(t, e, !0)) {
                    var r = !1;
                    if (i.totalAnimations) {
                        var o = i.players.length ? i.playersByQueriedElement.get(t) : [];
                        if (o && o.length)
                            r = !0;
                        else
                            for (var a = t; a = a.parentNode; ) {
                                if (i.statesByElement.get(a)) {
                                    r = !0;
                                    break
                                }
                            }
                    }
                    if (this.prepareLeaveAnimationListeners(t),
                    r)
                        i.markElementAsRemoved(this.id, t, !1, e);
                    else {
                        var s = t.__ng_removed;
                        s && s !== _t || (i.afterFlush((function() {
                            return n.clearElementCache(t)
                        }
                        )),
                        i.destroyInnerAnimations(t),
                        i._onRemovalComplete(t, e))
                    }
                }
            }
            ,
            t.prototype.insertNode = function(t, e) {
                Ut(t, this._hostClassName)
            }
            ,
            t.prototype.drainQueuedTransitions = function(t) {
                var e = this
                  , n = [];
                return this._queue.forEach((function(i) {
                    var r = i.player;
                    if (!r.destroyed) {
                        var o = i.element
                          , a = e._elementListeners.get(o);
                        a && a.forEach((function(e) {
                            if (e.name == i.triggerName) {
                                var n = d(o, i.triggerName, i.fromState.value, i.toState.value);
                                n._data = t,
                                l(i.player, e.phase, n, e.callback)
                            }
                        }
                        )),
                        r.markedForDestroy ? e._engine.afterFlush((function() {
                            r.destroy()
                        }
                        )) : n.push(i)
                    }
                }
                )),
                this._queue = [],
                n.sort((function(t, n) {
                    var i = t.transition.ast.depCount
                      , r = n.transition.ast.depCount;
                    return 0 == i || 0 == r ? i - r : e._engine.driver.containsElement(t.element, n.element) ? 1 : -1
                }
                ))
            }
            ,
            t.prototype.destroy = function(t) {
                this.players.forEach((function(t) {
                    return t.destroy()
                }
                )),
                this._signalRemovalForInnerTriggers(this.hostElement, t)
            }
            ,
            t.prototype.elementContainsData = function(t) {
                var e = !1;
                return this._elementListeners.has(t) && (e = !0),
                e = !!this._queue.find((function(e) {
                    return e.element === t
                }
                )) || e
            }
            ,
            t
        }()
          , Rt = function() {
            function t(t, e, n) {
                this.bodyNode = t,
                this.driver = e,
                this._normalizer = n,
                this.players = [],
                this.newHostElements = new Map,
                this.playersByElement = new Map,
                this.playersByQueriedElement = new Map,
                this.statesByElement = new Map,
                this.disabledNodes = new Set,
                this.totalAnimations = 0,
                this.totalQueuedPlayers = 0,
                this._namespaceLookup = {},
                this._namespaceList = [],
                this._flushFns = [],
                this._whenQuietFns = [],
                this.namespacesByHostElement = new Map,
                this.collectedEnterElements = [],
                this.collectedLeaveElements = [],
                this.onRemovalComplete = function(t, e) {}
            }
            return t.prototype._onRemovalComplete = function(t, e) {
                this.onRemovalComplete(t, e)
            }
            ,
            Object.defineProperty(t.prototype, "queuedPlayers", {
                get: function() {
                    var t = [];
                    return this._namespaceList.forEach((function(e) {
                        e.players.forEach((function(e) {
                            e.queued && t.push(e)
                        }
                        ))
                    }
                    )),
                    t
                },
                enumerable: !0,
                configurable: !0
            }),
            t.prototype.createNamespace = function(t, e) {
                var n = new Dt(t,e,this);
                return e.parentNode ? this._balanceNamespaceList(n, e) : (this.newHostElements.set(e, n),
                this.collectEnterElement(e)),
                this._namespaceLookup[t] = n
            }
            ,
            t.prototype._balanceNamespaceList = function(t, e) {
                var n = this._namespaceList.length - 1;
                if (n >= 0) {
                    for (var i = !1, r = n; r >= 0; r--) {
                        var o = this._namespaceList[r];
                        if (this.driver.containsElement(o.hostElement, e)) {
                            this._namespaceList.splice(r + 1, 0, t),
                            i = !0;
                            break
                        }
                    }
                    i || this._namespaceList.splice(0, 0, t)
                } else
                    this._namespaceList.push(t);
                return this.namespacesByHostElement.set(e, t),
                t
            }
            ,
            t.prototype.register = function(t, e) {
                var n = this._namespaceLookup[t];
                return n || (n = this.createNamespace(t, e)),
                n
            }
            ,
            t.prototype.registerTrigger = function(t, e, n) {
                var i = this._namespaceLookup[t];
                i && i.register(e, n) && this.totalAnimations++
            }
            ,
            t.prototype.destroy = function(t, e) {
                var n = this;
                if (t) {
                    var i = this._fetchNamespace(t);
                    this.afterFlush((function() {
                        n.namespacesByHostElement.delete(i.hostElement),
                        delete n._namespaceLookup[t];
                        var e = n._namespaceList.indexOf(i);
                        e >= 0 && n._namespaceList.splice(e, 1)
                    }
                    )),
                    this.afterFlushAnimationsDone((function() {
                        return i.destroy(e)
                    }
                    ))
                }
            }
            ,
            t.prototype._fetchNamespace = function(t) {
                return this._namespaceLookup[t]
            }
            ,
            t.prototype.fetchNamespacesByElement = function(t) {
                var e = new Set
                  , n = this.statesByElement.get(t);
                if (n)
                    for (var i = Object.keys(n), r = 0; r < i.length; r++) {
                        var o = n[i[r]].namespaceId;
                        if (o) {
                            var a = this._fetchNamespace(o);
                            a && e.add(a)
                        }
                    }
                return e
            }
            ,
            t.prototype.trigger = function(t, e, n, i) {
                if (Nt(e)) {
                    var r = this._fetchNamespace(t);
                    if (r)
                        return r.trigger(e, n, i),
                        !0
                }
                return !1
            }
            ,
            t.prototype.insertNode = function(t, e, n, i) {
                if (Nt(e)) {
                    var r = e.__ng_removed;
                    if (r && r.setForRemoval) {
                        r.setForRemoval = !1,
                        r.setForMove = !0;
                        var o = this.collectedLeaveElements.indexOf(e);
                        o >= 0 && this.collectedLeaveElements.splice(o, 1)
                    }
                    if (t) {
                        var a = this._fetchNamespace(t);
                        a && a.insertNode(e, n)
                    }
                    i && this.collectEnterElement(e)
                }
            }
            ,
            t.prototype.collectEnterElement = function(t) {
                this.collectedEnterElements.push(t)
            }
            ,
            t.prototype.markElementAsDisabled = function(t, e) {
                e ? this.disabledNodes.has(t) || (this.disabledNodes.add(t),
                Ut(t, "ng-animate-disabled")) : this.disabledNodes.has(t) && (this.disabledNodes.delete(t),
                Bt(t, "ng-animate-disabled"))
            }
            ,
            t.prototype.removeNode = function(t, e, n, i) {
                if (Nt(e)) {
                    var r = t ? this._fetchNamespace(t) : null;
                    if (r ? r.removeNode(e, i) : this.markElementAsRemoved(t, e, !1, i),
                    n) {
                        var o = this.namespacesByHostElement.get(e);
                        o && o.id !== t && o.removeNode(e, i)
                    }
                } else
                    this._onRemovalComplete(e, i)
            }
            ,
            t.prototype.markElementAsRemoved = function(t, e, n, i) {
                this.collectedLeaveElements.push(e),
                e.__ng_removed = {
                    namespaceId: t,
                    setForRemoval: i,
                    hasAnimation: n,
                    removedBeforeQueried: !1
                }
            }
            ,
            t.prototype.listen = function(t, e, n, i, r) {
                return Nt(e) ? this._fetchNamespace(t).listen(e, n, i, r) : function() {}
            }
            ,
            t.prototype._buildInstruction = function(t, e, n, i, r) {
                return t.transition.build(this.driver, t.element, t.fromState.value, t.toState.value, n, i, t.fromState.options, t.toState.options, e, r)
            }
            ,
            t.prototype.destroyInnerAnimations = function(t) {
                var e = this
                  , n = this.driver.query(t, ".ng-trigger", !0);
                n.forEach((function(t) {
                    return e.destroyActiveAnimationsForElement(t)
                }
                )),
                0 != this.playersByQueriedElement.size && (n = this.driver.query(t, ".ng-animating", !0)).forEach((function(t) {
                    return e.finishActiveQueriedAnimationOnElement(t)
                }
                ))
            }
            ,
            t.prototype.destroyActiveAnimationsForElement = function(t) {
                var e = this.playersByElement.get(t);
                e && e.forEach((function(t) {
                    t.queued ? t.markedForDestroy = !0 : t.destroy()
                }
                ))
            }
            ,
            t.prototype.finishActiveQueriedAnimationOnElement = function(t) {
                var e = this.playersByQueriedElement.get(t);
                e && e.forEach((function(t) {
                    return t.finish()
                }
                ))
            }
            ,
            t.prototype.whenRenderingDone = function() {
                var t = this;
                return new Promise((function(e) {
                    if (t.players.length)
                        return s(t.players).onDone((function() {
                            return e()
                        }
                        ));
                    e()
                }
                ))
            }
            ,
            t.prototype.processLeaveNode = function(t) {
                var e = this
                  , n = t.__ng_removed;
                if (n && n.setForRemoval) {
                    if (t.__ng_removed = _t,
                    n.namespaceId) {
                        this.destroyInnerAnimations(t);
                        var i = this._fetchNamespace(n.namespaceId);
                        i && i.clearElementCache(t)
                    }
                    this._onRemovalComplete(t, n.setForRemoval)
                }
                this.driver.matchesElement(t, ".ng-animate-disabled") && this.markElementAsDisabled(t, !1),
                this.driver.query(t, ".ng-animate-disabled", !0).forEach((function(t) {
                    e.markElementAsDisabled(t, !1)
                }
                ))
            }
            ,
            t.prototype.flush = function(t) {
                var e = this;
                void 0 === t && (t = -1);
                var n = [];
                if (this.newHostElements.size && (this.newHostElements.forEach((function(t, n) {
                    return e._balanceNamespaceList(t, n)
                }
                )),
                this.newHostElements.clear()),
                this.totalAnimations && this.collectedEnterElements.length)
                    for (var i = 0; i < this.collectedEnterElements.length; i++) {
                        Ut(this.collectedEnterElements[i], "ng-star-inserted")
                    }
                if (this._namespaceList.length && (this.totalQueuedPlayers || this.collectedLeaveElements.length)) {
                    var r = [];
                    try {
                        n = this._flushAnimations(r, t)
                    } finally {
                        for (i = 0; i < r.length; i++)
                            r[i]()
                    }
                } else
                    for (i = 0; i < this.collectedLeaveElements.length; i++) {
                        var o = this.collectedLeaveElements[i];
                        this.processLeaveNode(o)
                    }
                if (this.totalQueuedPlayers = 0,
                this.collectedEnterElements.length = 0,
                this.collectedLeaveElements.length = 0,
                this._flushFns.forEach((function(t) {
                    return t()
                }
                )),
                this._flushFns = [],
                this._whenQuietFns.length) {
                    var a = this._whenQuietFns;
                    this._whenQuietFns = [],
                    n.length ? s(n).onDone((function() {
                        a.forEach((function(t) {
                            return t()
                        }
                        ))
                    }
                    )) : a.forEach((function(t) {
                        return t()
                    }
                    ))
                }
            }
            ,
            t.prototype.reportError = function(t) {
                throw new Error("Unable to process animations due to the following failed trigger transitions\n " + t.join("\n"))
            }
            ,
            t.prototype._flushAnimations = function(t, e) {
                var n = this
                  , o = new ot
                  , a = []
                  , c = new Map
                  , l = []
                  , u = new Map
                  , d = new Map
                  , h = new Map
                  , f = new Set;
                this.disabledNodes.forEach((function(t) {
                    f.add(t);
                    for (var e = n.driver.query(t, ".ng-animate-queued", !0), i = 0; i < e.length; i++)
                        f.add(e[i])
                }
                ));
                var m = this.bodyNode
                  , g = Array.from(this.statesByElement.keys())
                  , v = Ft(g, this.collectedEnterElements)
                  , y = new Map
                  , b = 0;
                v.forEach((function(t, e) {
                    var n = "ng-enter" + b++;
                    y.set(e, n),
                    t.forEach((function(t) {
                        return Ut(t, n)
                    }
                    ))
                }
                ));
                for (var w = [], S = new Set, x = new Set, M = 0; M < this.collectedLeaveElements.length; M++) {
                    (z = (B = this.collectedLeaveElements[M]).__ng_removed) && z.setForRemoval && (w.push(B),
                    S.add(B),
                    z.hasAnimation ? this.driver.query(B, ".ng-star-inserted", !0).forEach((function(t) {
                        return S.add(t)
                    }
                    )) : x.add(B))
                }
                var E = new Map
                  , C = Ft(g, Array.from(S));
                C.forEach((function(t, e) {
                    var n = "ng-leave" + b++;
                    E.set(e, n),
                    t.forEach((function(t) {
                        return Ut(t, n)
                    }
                    ))
                }
                )),
                t.push((function() {
                    v.forEach((function(t, e) {
                        var n = y.get(e);
                        t.forEach((function(t) {
                            return Bt(t, n)
                        }
                        ))
                    }
                    )),
                    C.forEach((function(t, e) {
                        var n = E.get(e);
                        t.forEach((function(t) {
                            return Bt(t, n)
                        }
                        ))
                    }
                    )),
                    w.forEach((function(t) {
                        n.processLeaveNode(t)
                    }
                    ))
                }
                ));
                for (var A = [], T = [], O = this._namespaceList.length - 1; O >= 0; O--) {
                    this._namespaceList[O].drainQueuedTransitions(e).forEach((function(t) {
                        var e = t.player
                          , i = t.element;
                        if (A.push(e),
                        n.collectedEnterElements.length) {
                            var r = i.__ng_removed;
                            if (r && r.setForMove)
                                return void e.destroy()
                        }
                        var s = !m || !n.driver.containsElement(m, i)
                          , c = E.get(i)
                          , f = y.get(i)
                          , g = n._buildInstruction(t, o, f, c, s);
                        if (g.errors && g.errors.length)
                            T.push(g);
                        else {
                            if (s)
                                return e.onStart((function() {
                                    return L(i, g.fromStyles)
                                }
                                )),
                                e.onDestroy((function() {
                                    return R(i, g.toStyles)
                                }
                                )),
                                void a.push(e);
                            if (t.isFallbackTransition)
                                return e.onStart((function() {
                                    return L(i, g.fromStyles)
                                }
                                )),
                                e.onDestroy((function() {
                                    return R(i, g.toStyles)
                                }
                                )),
                                void a.push(e);
                            g.timelines.forEach((function(t) {
                                return t.stretchStartingKeyframe = !0
                            }
                            )),
                            o.append(i, g.timelines);
                            var v = {
                                instruction: g,
                                player: e,
                                element: i
                            };
                            l.push(v),
                            g.queriedElements.forEach((function(t) {
                                return p(u, t, []).push(e)
                            }
                            )),
                            g.preStyleProps.forEach((function(t, e) {
                                var n = Object.keys(t);
                                if (n.length) {
                                    var i = d.get(e);
                                    i || d.set(e, i = new Set),
                                    n.forEach((function(t) {
                                        return i.add(t)
                                    }
                                    ))
                                }
                            }
                            )),
                            g.postStyleProps.forEach((function(t, e) {
                                var n = Object.keys(t)
                                  , i = h.get(e);
                                i || h.set(e, i = new Set),
                                n.forEach((function(t) {
                                    return i.add(t)
                                }
                                ))
                            }
                            ))
                        }
                    }
                    ))
                }
                if (T.length) {
                    var _ = [];
                    T.forEach((function(t) {
                        _.push("@" + t.triggerName + " has failed due to:\n"),
                        t.errors.forEach((function(t) {
                            return _.push("- " + t + "\n")
                        }
                        ))
                    }
                    )),
                    A.forEach((function(t) {
                        return t.destroy()
                    }
                    )),
                    this.reportError(_)
                }
                var P = new Map
                  , I = new Map;
                l.forEach((function(t) {
                    var e = t.element;
                    o.has(e) && (I.set(e, e),
                    n._beforeAnimationBuild(t.player.namespaceId, t.instruction, P))
                }
                )),
                a.forEach((function(t) {
                    var e = t.element;
                    n._getPreviousPlayers(e, !1, t.namespaceId, t.triggerName, null).forEach((function(t) {
                        p(P, e, []).push(t),
                        t.destroy()
                    }
                    ))
                }
                ));
                var k = w.filter((function(t) {
                    return Gt(t, d, h)
                }
                ))
                  , D = new Map;
                Vt(D, this.driver, x, h, r.AUTO_STYLE).forEach((function(t) {
                    Gt(t, d, h) && k.push(t)
                }
                ));
                var N = new Map;
                v.forEach((function(t, e) {
                    Vt(N, n.driver, new Set(t), d, r["ɵPRE_STYLE"])
                }
                )),
                k.forEach((function(t) {
                    var e = D.get(t)
                      , n = N.get(t);
                    D.set(t, Object(i.a)(Object(i.a)({}, e), n))
                }
                ));
                var j = []
                  , V = []
                  , F = {};
                l.forEach((function(t) {
                    var e = t.element
                      , i = t.player
                      , r = t.instruction;
                    if (o.has(e)) {
                        if (f.has(e))
                            return i.onDestroy((function() {
                                return R(e, r.toStyles)
                            }
                            )),
                            i.disabled = !0,
                            i.overrideTotalTime(r.totalTime),
                            void a.push(i);
                        var l = F;
                        if (I.size > 1) {
                            for (var u = e, d = []; u = u.parentNode; ) {
                                var p = I.get(u);
                                if (p) {
                                    l = p;
                                    break
                                }
                                d.push(u)
                            }
                            d.forEach((function(t) {
                                return I.set(t, l)
                            }
                            ))
                        }
                        var h = n._buildAnimation(i.namespaceId, r, P, c, N, D);
                        if (i.setRealPlayer(h),
                        l === F)
                            j.push(i);
                        else {
                            var m = n.playersByElement.get(l);
                            m && m.length && (i.parentPlayer = s(m)),
                            a.push(i)
                        }
                    } else
                        L(e, r.fromStyles),
                        i.onDestroy((function() {
                            return R(e, r.toStyles)
                        }
                        )),
                        V.push(i),
                        f.has(e) && a.push(i)
                }
                )),
                V.forEach((function(t) {
                    var e = c.get(t.element);
                    if (e && e.length) {
                        var n = s(e);
                        t.setRealPlayer(n)
                    }
                }
                )),
                a.forEach((function(t) {
                    t.parentPlayer ? t.syncPlayerEvents(t.parentPlayer) : t.destroy()
                }
                ));
                for (var U = 0; U < w.length; U++) {
                    var B, z = (B = w[U]).__ng_removed;
                    if (Bt(B, "ng-leave"),
                    !z || !z.hasAnimation) {
                        var G = [];
                        if (u.size) {
                            var H = u.get(B);
                            H && H.length && G.push.apply(G, Object(i.h)(H));
                            for (var W = this.driver.query(B, ".ng-animating", !0), q = 0; q < W.length; q++) {
                                var X = u.get(W[q]);
                                X && X.length && G.push.apply(G, Object(i.h)(X))
                            }
                        }
                        var Y = G.filter((function(t) {
                            return !t.destroyed
                        }
                        ));
                        Y.length ? zt(this, B, Y) : this.processLeaveNode(B)
                    }
                }
                return w.length = 0,
                j.forEach((function(t) {
                    n.players.push(t),
                    t.onDone((function() {
                        t.destroy();
                        var e = n.players.indexOf(t);
                        n.players.splice(e, 1)
                    }
                    )),
                    t.play()
                }
                )),
                j
            }
            ,
            t.prototype.elementContainsData = function(t, e) {
                var n = !1
                  , i = e.__ng_removed;
                return i && i.setForRemoval && (n = !0),
                this.playersByElement.has(e) && (n = !0),
                this.playersByQueriedElement.has(e) && (n = !0),
                this.statesByElement.has(e) && (n = !0),
                this._fetchNamespace(t).elementContainsData(e) || n
            }
            ,
            t.prototype.afterFlush = function(t) {
                this._flushFns.push(t)
            }
            ,
            t.prototype.afterFlushAnimationsDone = function(t) {
                this._whenQuietFns.push(t)
            }
            ,
            t.prototype._getPreviousPlayers = function(t, e, n, i, r) {
                var o = [];
                if (e) {
                    var a = this.playersByQueriedElement.get(t);
                    a && (o = a)
                } else {
                    var s = this.playersByElement.get(t);
                    if (s) {
                        var c = !r || "void" == r;
                        s.forEach((function(t) {
                            t.queued || (c || t.triggerName == i) && o.push(t)
                        }
                        ))
                    }
                }
                return (n || i) && (o = o.filter((function(t) {
                    return (!n || n == t.namespaceId) && (!i || i == t.triggerName)
                }
                ))),
                o
            }
            ,
            t.prototype._beforeAnimationBuild = function(t, e, n) {
                var r, o, a = e.triggerName, s = e.element, c = e.isRemovalTransition ? void 0 : t, l = e.isRemovalTransition ? void 0 : a, u = function(t) {
                    var i = t.element
                      , r = i !== s
                      , o = p(n, i, []);
                    d._getPreviousPlayers(i, r, c, l, e.toState).forEach((function(t) {
                        var e = t.getRealPlayer();
                        e.beforeDestroy && e.beforeDestroy(),
                        t.destroy(),
                        o.push(t)
                    }
                    ))
                }, d = this;
                try {
                    for (var h = Object(i.j)(e.timelines), f = h.next(); !f.done; f = h.next()) {
                        u(f.value)
                    }
                } catch (t) {
                    r = {
                        error: t
                    }
                } finally {
                    try {
                        f && !f.done && (o = h.return) && o.call(h)
                    } finally {
                        if (r)
                            throw r.error
                    }
                }
                L(s, e.fromStyles)
            }
            ,
            t.prototype._buildAnimation = function(t, e, n, i, o, a) {
                var l = this
                  , u = e.triggerName
                  , d = e.element
                  , h = []
                  , f = new Set
                  , m = new Set
                  , g = e.timelines.map((function(e) {
                    var s = e.element;
                    f.add(s);
                    var p = s.__ng_removed;
                    if (p && p.removedBeforeQueried)
                        return new r.NoopAnimationPlayer(e.duration,e.delay);
                    var g, v, y = s !== d, b = (g = (n.get(s) || Ot).map((function(t) {
                        return t.getRealPlayer()
                    }
                    )),
                    v = [],
                    function t(e, n) {
                        for (var i = 0; i < e.length; i++) {
                            var o = e[i];
                            o instanceof r["ɵAnimationGroupPlayer"] ? t(o.players, n) : n.push(o)
                        }
                    }(g, v),
                    v).filter((function(t) {
                        var e = t;
                        return !!e.element && e.element === s
                    }
                    )), w = o.get(s), S = a.get(s), x = c(l.driver, l._normalizer, 0, e.keyframes, w, S), M = l._buildPlayer(e, x, b);
                    if (e.subTimeline && i && m.add(s),
                    y) {
                        var E = new Lt(t,u,s);
                        E.setRealPlayer(M),
                        h.push(E)
                    }
                    return M
                }
                ));
                h.forEach((function(t) {
                    p(l.playersByQueriedElement, t.element, []).push(t),
                    t.onDone((function() {
                        return function(t, e, n) {
                            var i;
                            if (t instanceof Map) {
                                if (i = t.get(e)) {
                                    if (i.length) {
                                        var r = i.indexOf(n);
                                        i.splice(r, 1)
                                    }
                                    0 == i.length && t.delete(e)
                                }
                            } else if (i = t[e]) {
                                if (i.length) {
                                    r = i.indexOf(n);
                                    i.splice(r, 1)
                                }
                                0 == i.length && delete t[e]
                            }
                            return i
                        }(l.playersByQueriedElement, t.element, t)
                    }
                    ))
                }
                )),
                f.forEach((function(t) {
                    return Ut(t, "ng-animating")
                }
                ));
                var v = s(g);
                return v.onDestroy((function() {
                    f.forEach((function(t) {
                        return Bt(t, "ng-animating")
                    }
                    )),
                    R(d, e.toStyles)
                }
                )),
                m.forEach((function(t) {
                    p(i, t, []).push(v)
                }
                )),
                v
            }
            ,
            t.prototype._buildPlayer = function(t, e, n) {
                return e.length > 0 ? this.driver.animate(t.element, e, t.duration, t.delay, t.easing, n) : new r.NoopAnimationPlayer(t.duration,t.delay)
            }
            ,
            t
        }()
          , Lt = function() {
            function t(t, e, n) {
                this.namespaceId = t,
                this.triggerName = e,
                this.element = n,
                this._player = new r.NoopAnimationPlayer,
                this._containsRealPlayer = !1,
                this._queuedCallbacks = {},
                this.destroyed = !1,
                this.markedForDestroy = !1,
                this.disabled = !1,
                this.queued = !0,
                this.totalTime = 0
            }
            return t.prototype.setRealPlayer = function(t) {
                var e = this;
                this._containsRealPlayer || (this._player = t,
                Object.keys(this._queuedCallbacks).forEach((function(n) {
                    e._queuedCallbacks[n].forEach((function(e) {
                        return l(t, n, void 0, e)
                    }
                    ))
                }
                )),
                this._queuedCallbacks = {},
                this._containsRealPlayer = !0,
                this.overrideTotalTime(t.totalTime),
                this.queued = !1)
            }
            ,
            t.prototype.getRealPlayer = function() {
                return this._player
            }
            ,
            t.prototype.overrideTotalTime = function(t) {
                this.totalTime = t
            }
            ,
            t.prototype.syncPlayerEvents = function(t) {
                var e = this
                  , n = this._player;
                n.triggerCallback && t.onStart((function() {
                    return n.triggerCallback("start")
                }
                )),
                t.onDone((function() {
                    return e.finish()
                }
                )),
                t.onDestroy((function() {
                    return e.destroy()
                }
                ))
            }
            ,
            t.prototype._queueEvent = function(t, e) {
                p(this._queuedCallbacks, t, []).push(e)
            }
            ,
            t.prototype.onDone = function(t) {
                this.queued && this._queueEvent("done", t),
                this._player.onDone(t)
            }
            ,
            t.prototype.onStart = function(t) {
                this.queued && this._queueEvent("start", t),
                this._player.onStart(t)
            }
            ,
            t.prototype.onDestroy = function(t) {
                this.queued && this._queueEvent("destroy", t),
                this._player.onDestroy(t)
            }
            ,
            t.prototype.init = function() {
                this._player.init()
            }
            ,
            t.prototype.hasStarted = function() {
                return !this.queued && this._player.hasStarted()
            }
            ,
            t.prototype.play = function() {
                !this.queued && this._player.play()
            }
            ,
            t.prototype.pause = function() {
                !this.queued && this._player.pause()
            }
            ,
            t.prototype.restart = function() {
                !this.queued && this._player.restart()
            }
            ,
            t.prototype.finish = function() {
                this._player.finish()
            }
            ,
            t.prototype.destroy = function() {
                this.destroyed = !0,
                this._player.destroy()
            }
            ,
            t.prototype.reset = function() {
                !this.queued && this._player.reset()
            }
            ,
            t.prototype.setPosition = function(t) {
                this.queued || this._player.setPosition(t)
            }
            ,
            t.prototype.getPosition = function() {
                return this.queued ? 0 : this._player.getPosition()
            }
            ,
            t.prototype.triggerCallback = function(t) {
                var e = this._player;
                e.triggerCallback && e.triggerCallback(t)
            }
            ,
            t
        }();
        function Nt(t) {
            return t && 1 === t.nodeType
        }
        function jt(t, e) {
            var n = t.style.display;
            return t.style.display = null != e ? e : "none",
            n
        }
        function Vt(t, e, n, i, r) {
            var o = [];
            n.forEach((function(t) {
                return o.push(jt(t))
            }
            ));
            var a = [];
            i.forEach((function(n, i) {
                var o = {};
                n.forEach((function(t) {
                    var n = o[t] = e.computeStyle(i, t, r);
                    n && 0 != n.length || (i.__ng_removed = Pt,
                    a.push(i))
                }
                )),
                t.set(i, o)
            }
            ));
            var s = 0;
            return n.forEach((function(t) {
                return jt(t, o[s++])
            }
            )),
            a
        }
        function Ft(t, e) {
            var n = new Map;
            if (t.forEach((function(t) {
                return n.set(t, [])
            }
            )),
            0 == e.length)
                return n;
            var i = new Set(e)
              , r = new Map;
            return e.forEach((function(t) {
                var e = function t(e) {
                    if (!e)
                        return 1;
                    var o = r.get(e);
                    if (o)
                        return o;
                    var a = e.parentNode;
                    return o = n.has(a) ? a : i.has(a) ? 1 : t(a),
                    r.set(e, o),
                    o
                }(t);
                1 !== e && n.get(e).push(t)
            }
            )),
            n
        }
        function Ut(t, e) {
            if (t.classList)
                t.classList.add(e);
            else {
                var n = t.$$classes;
                n || (n = t.$$classes = {}),
                n[e] = !0
            }
        }
        function Bt(t, e) {
            if (t.classList)
                t.classList.remove(e);
            else {
                var n = t.$$classes;
                n && delete n[e]
            }
        }
        function zt(t, e, n) {
            s(n).onDone((function() {
                return t.processLeaveNode(e)
            }
            ))
        }
        function Gt(t, e, n) {
            var i = n.get(t);
            if (!i)
                return !1;
            var r = e.get(t);
            return r ? i.forEach((function(t) {
                return r.add(t)
            }
            )) : e.set(t, i),
            n.delete(t),
            !0
        }
        var Ht = function() {
            function t(t, e, n) {
                var i = this;
                this.bodyNode = t,
                this._driver = e,
                this._triggerCache = {},
                this.onRemovalComplete = function(t, e) {}
                ,
                this._transitionEngine = new Rt(t,e,n),
                this._timelineEngine = new Tt(t,e,n),
                this._transitionEngine.onRemovalComplete = function(t, e) {
                    return i.onRemovalComplete(t, e)
                }
            }
            return t.prototype.registerTrigger = function(t, e, n, i, r) {
                var o = t + "-" + i
                  , a = this._triggerCache[o];
                if (!a) {
                    var s = []
                      , c = Q(this._driver, r, s);
                    if (s.length)
                        throw new Error('The animation trigger "' + i + '" has failed to build due to the following errors:\n - ' + s.join("\n - "));
                    a = function(t, e) {
                        return new Et(t,e)
                    }(i, c),
                    this._triggerCache[o] = a
                }
                this._transitionEngine.registerTrigger(e, i, a)
            }
            ,
            t.prototype.register = function(t, e) {
                this._transitionEngine.register(t, e)
            }
            ,
            t.prototype.destroy = function(t, e) {
                this._transitionEngine.destroy(t, e)
            }
            ,
            t.prototype.onInsert = function(t, e, n, i) {
                this._transitionEngine.insertNode(t, e, n, i)
            }
            ,
            t.prototype.onRemove = function(t, e, n, i) {
                this._transitionEngine.removeNode(t, e, i || !1, n)
            }
            ,
            t.prototype.disableAnimations = function(t, e) {
                this._transitionEngine.markElementAsDisabled(t, e)
            }
            ,
            t.prototype.process = function(t, e, n, r) {
                if ("@" == n.charAt(0)) {
                    var o = Object(i.f)(h(n), 2)
                      , a = o[0]
                      , s = o[1]
                      , c = r;
                    this._timelineEngine.command(a, e, s, c)
                } else
                    this._transitionEngine.trigger(t, e, n, r)
            }
            ,
            t.prototype.listen = function(t, e, n, r, o) {
                if ("@" == n.charAt(0)) {
                    var a = Object(i.f)(h(n), 2)
                      , s = a[0]
                      , c = a[1];
                    return this._timelineEngine.listen(s, e, c, o)
                }
                return this._transitionEngine.listen(t, e, n, r, o)
            }
            ,
            t.prototype.flush = function(t) {
                void 0 === t && (t = -1),
                this._transitionEngine.flush(t)
            }
            ,
            Object.defineProperty(t.prototype, "players", {
                get: function() {
                    return this._transitionEngine.players.concat(this._timelineEngine.players)
                },
                enumerable: !0,
                configurable: !0
            }),
            t.prototype.whenRenderingDone = function() {
                return this._transitionEngine.whenRenderingDone()
            }
            ,
            t
        }();
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        function Wt(t, e) {
            var n = null
              , i = null;
            return Array.isArray(e) && e.length ? (n = Xt(e[0]),
            e.length > 1 && (i = Xt(e[e.length - 1]))) : e && (n = Xt(e)),
            n || i ? new qt(t,n,i) : null
        }
        var qt = function() {
            function t(e, n, i) {
                this._element = e,
                this._startStyles = n,
                this._endStyles = i,
                this._state = 0;
                var r = t.initialStylesByElement.get(e);
                r || t.initialStylesByElement.set(e, r = {}),
                this._initialStyles = r
            }
            return t.prototype.start = function() {
                this._state < 1 && (this._startStyles && R(this._element, this._startStyles, this._initialStyles),
                this._state = 1)
            }
            ,
            t.prototype.finish = function() {
                this.start(),
                this._state < 2 && (R(this._element, this._initialStyles),
                this._endStyles && (R(this._element, this._endStyles),
                this._endStyles = null),
                this._state = 1)
            }
            ,
            t.prototype.destroy = function() {
                this.finish(),
                this._state < 3 && (t.initialStylesByElement.delete(this._element),
                this._startStyles && (L(this._element, this._startStyles),
                this._endStyles = null),
                this._endStyles && (L(this._element, this._endStyles),
                this._endStyles = null),
                R(this._element, this._initialStyles),
                this._state = 3)
            }
            ,
            t.initialStylesByElement = new WeakMap,
            t
        }();
        function Xt(t) {
            for (var e = null, n = Object.keys(t), i = 0; i < n.length; i++) {
                var r = n[i];
                Yt(r) && ((e = e || {})[r] = t[r])
            }
            return e
        }
        function Yt(t) {
            return "display" === t || "position" === t
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        var Kt = function() {
            function t(t, e, n, i, r, o, a) {
                var s = this;
                this._element = t,
                this._name = e,
                this._duration = n,
                this._delay = i,
                this._easing = r,
                this._fillMode = o,
                this._onDoneFn = a,
                this._finished = !1,
                this._destroyed = !1,
                this._startTime = 0,
                this._position = 0,
                this._eventFn = function(t) {
                    return s._handleCallback(t)
                }
            }
            return t.prototype.apply = function() {
                !function(t, e) {
                    var n = ee(t, "").trim()
                      , i = 0;
                    n.length && (i = function(t, e) {
                        for (var n = 0, i = 0; i < t.length; i++) {
                            t.charAt(i) === e && n++
                        }
                        return n
                    }(n, ",") + 1,
                    e = n + ", " + e);
                    te(t, "", e)
                }(this._element, this._duration + "ms " + this._easing + " " + this._delay + "ms 1 normal " + this._fillMode + " " + this._name),
                $t(this._element, this._eventFn, !1),
                this._startTime = Date.now()
            }
            ,
            t.prototype.pause = function() {
                Zt(this._element, this._name, "paused")
            }
            ,
            t.prototype.resume = function() {
                Zt(this._element, this._name, "running")
            }
            ,
            t.prototype.setPosition = function(t) {
                var e = Jt(this._element, this._name);
                this._position = t * this._duration,
                te(this._element, "Delay", "-" + this._position + "ms", e)
            }
            ,
            t.prototype.getPosition = function() {
                return this._position
            }
            ,
            t.prototype._handleCallback = function(t) {
                var e = t._ngTestManualTimestamp || Date.now()
                  , n = 1e3 * parseFloat(t.elapsedTime.toFixed(3));
                t.animationName == this._name && Math.max(e - this._startTime, 0) >= this._delay && n >= this._duration && this.finish()
            }
            ,
            t.prototype.finish = function() {
                this._finished || (this._finished = !0,
                this._onDoneFn(),
                $t(this._element, this._eventFn, !0))
            }
            ,
            t.prototype.destroy = function() {
                this._destroyed || (this._destroyed = !0,
                this.finish(),
                function(t, e) {
                    var n = ee(t, "").split(",")
                      , i = Qt(n, e);
                    if (i >= 0) {
                        n.splice(i, 1);
                        var r = n.join(",");
                        te(t, "", r)
                    }
                }(this._element, this._name))
            }
            ,
            t
        }();
        function Zt(t, e, n) {
            te(t, "PlayState", n, Jt(t, e))
        }
        function Jt(t, e) {
            var n = ee(t, "");
            return n.indexOf(",") > 0 ? Qt(n.split(","), e) : Qt([n], e)
        }
        function Qt(t, e) {
            for (var n = 0; n < t.length; n++)
                if (t[n].indexOf(e) >= 0)
                    return n;
            return -1
        }
        function $t(t, e, n) {
            n ? t.removeEventListener("animationend", e) : t.addEventListener("animationend", e)
        }
        function te(t, e, n, i) {
            var r = "animation" + e;
            if (null != i) {
                var o = t.style[r];
                if (o.length) {
                    var a = o.split(",");
                    a[i] = n,
                    n = a.join(",")
                }
            }
            t.style[r] = n
        }
        function ee(t, e) {
            return t.style["animation" + e]
        }
        var ne = function() {
            function t(t, e, n, i, r, o, a, s) {
                this.element = t,
                this.keyframes = e,
                this.animationName = n,
                this._duration = i,
                this._delay = r,
                this._finalStyles = a,
                this._specialStyles = s,
                this._onDoneFns = [],
                this._onStartFns = [],
                this._onDestroyFns = [],
                this._started = !1,
                this.currentSnapshot = {},
                this._state = 0,
                this.easing = o || "linear",
                this.totalTime = i + r,
                this._buildStyler()
            }
            return t.prototype.onStart = function(t) {
                this._onStartFns.push(t)
            }
            ,
            t.prototype.onDone = function(t) {
                this._onDoneFns.push(t)
            }
            ,
            t.prototype.onDestroy = function(t) {
                this._onDestroyFns.push(t)
            }
            ,
            t.prototype.destroy = function() {
                this.init(),
                this._state >= 4 || (this._state = 4,
                this._styler.destroy(),
                this._flushStartFns(),
                this._flushDoneFns(),
                this._specialStyles && this._specialStyles.destroy(),
                this._onDestroyFns.forEach((function(t) {
                    return t()
                }
                )),
                this._onDestroyFns = [])
            }
            ,
            t.prototype._flushDoneFns = function() {
                this._onDoneFns.forEach((function(t) {
                    return t()
                }
                )),
                this._onDoneFns = []
            }
            ,
            t.prototype._flushStartFns = function() {
                this._onStartFns.forEach((function(t) {
                    return t()
                }
                )),
                this._onStartFns = []
            }
            ,
            t.prototype.finish = function() {
                this.init(),
                this._state >= 3 || (this._state = 3,
                this._styler.finish(),
                this._flushStartFns(),
                this._specialStyles && this._specialStyles.finish(),
                this._flushDoneFns())
            }
            ,
            t.prototype.setPosition = function(t) {
                this._styler.setPosition(t)
            }
            ,
            t.prototype.getPosition = function() {
                return this._styler.getPosition()
            }
            ,
            t.prototype.hasStarted = function() {
                return this._state >= 2
            }
            ,
            t.prototype.init = function() {
                if (!(this._state >= 1)) {
                    this._state = 1;
                    this.element;
                    this._styler.apply(),
                    this._delay && this._styler.pause()
                }
            }
            ,
            t.prototype.play = function() {
                this.init(),
                this.hasStarted() || (this._flushStartFns(),
                this._state = 2,
                this._specialStyles && this._specialStyles.start()),
                this._styler.resume()
            }
            ,
            t.prototype.pause = function() {
                this.init(),
                this._styler.pause()
            }
            ,
            t.prototype.restart = function() {
                this.reset(),
                this.play()
            }
            ,
            t.prototype.reset = function() {
                this._styler.destroy(),
                this._buildStyler(),
                this._styler.apply()
            }
            ,
            t.prototype._buildStyler = function() {
                var t = this;
                this._styler = new Kt(this.element,this.animationName,this._duration,this._delay,this.easing,"forwards",(function() {
                    return t.finish()
                }
                ))
            }
            ,
            t.prototype.triggerCallback = function(t) {
                var e = "start" == t ? this._onStartFns : this._onDoneFns;
                e.forEach((function(t) {
                    return t()
                }
                )),
                e.length = 0
            }
            ,
            t.prototype.beforeDestroy = function() {
                var t = this;
                this.init();
                var e = {};
                if (this.hasStarted()) {
                    var n = this._state >= 3;
                    Object.keys(this._finalStyles).forEach((function(i) {
                        "offset" != i && (e[i] = n ? t._finalStyles[i] : q(t.element, i))
                    }
                    ))
                }
                this.currentSnapshot = e
            }
            ,
            t
        }()
          , ie = function(t) {
            function e(e, n) {
                var i = t.call(this) || this;
                return i.element = e,
                i._startingStyles = {},
                i.__initialized = !1,
                i._styles = M(n),
                i
            }
            return Object(i.c)(e, t),
            e.prototype.init = function() {
                var e = this;
                !this.__initialized && this._startingStyles && (this.__initialized = !0,
                Object.keys(this._styles).forEach((function(t) {
                    e._startingStyles[t] = e.element.style[t]
                }
                )),
                t.prototype.init.call(this))
            }
            ,
            e.prototype.play = function() {
                var e = this;
                this._startingStyles && (this.init(),
                Object.keys(this._styles).forEach((function(t) {
                    return e.element.style.setProperty(t, e._styles[t])
                }
                )),
                t.prototype.play.call(this))
            }
            ,
            e.prototype.destroy = function() {
                var e = this;
                this._startingStyles && (Object.keys(this._startingStyles).forEach((function(t) {
                    var n = e._startingStyles[t];
                    n ? e.element.style.setProperty(t, n) : e.element.style.removeProperty(t)
                }
                )),
                this._startingStyles = null,
                t.prototype.destroy.call(this))
            }
            ,
            e
        }(r.NoopAnimationPlayer)
          , re = function() {
            function t() {
                this._count = 0,
                this._head = document.querySelector("head"),
                this._warningIssued = !1
            }
            return t.prototype.validateStyleProperty = function(t) {
                return b(t)
            }
            ,
            t.prototype.matchesElement = function(t, e) {
                return w(t, e)
            }
            ,
            t.prototype.containsElement = function(t, e) {
                return S(t, e)
            }
            ,
            t.prototype.query = function(t, e, n) {
                return x(t, e, n)
            }
            ,
            t.prototype.computeStyle = function(t, e, n) {
                return window.getComputedStyle(t)[e]
            }
            ,
            t.prototype.buildKeyframeElement = function(t, e, n) {
                n = n.map((function(t) {
                    return M(t)
                }
                ));
                var i = "@keyframes " + e + " {\n"
                  , r = "";
                n.forEach((function(t) {
                    r = " ";
                    var e = parseFloat(t.offset);
                    i += "" + r + 100 * e + "% {\n",
                    r += " ",
                    Object.keys(t).forEach((function(e) {
                        var n = t[e];
                        switch (e) {
                        case "offset":
                            return;
                        case "easing":
                            return void (n && (i += r + "animation-timing-function: " + n + ";\n"));
                        default:
                            return void (i += "" + r + e + ": " + n + ";\n")
                        }
                    }
                    )),
                    i += r + "}\n"
                }
                )),
                i += "}\n";
                var o = document.createElement("style");
                return o.innerHTML = i,
                o
            }
            ,
            t.prototype.animate = function(t, e, n, i, r, o, a) {
                void 0 === o && (o = []),
                a && this._notifyFaultyScrubber();
                var s = o.filter((function(t) {
                    return t instanceof ne
                }
                ))
                  , c = {};
                G(n, i) && s.forEach((function(t) {
                    var e = t.currentSnapshot;
                    Object.keys(e).forEach((function(t) {
                        return c[t] = e[t]
                    }
                    ))
                }
                ));
                var l = function(t) {
                    var e = {};
                    if (t) {
                        (Array.isArray(t) ? t : [t]).forEach((function(t) {
                            Object.keys(t).forEach((function(n) {
                                "offset" != n && "easing" != n && (e[n] = t[n])
                            }
                            ))
                        }
                        ))
                    }
                    return e
                }(e = H(t, e, c));
                if (0 == n)
                    return new ie(t,l);
                var u = "gen_css_kf_" + this._count++
                  , d = this.buildKeyframeElement(t, u, e);
                document.querySelector("head").appendChild(d);
                var p = Wt(t, e)
                  , h = new ne(t,e,u,n,i,r,l,p);
                return h.onDestroy((function() {
                    var t;
                    (t = d).parentNode.removeChild(t)
                }
                )),
                h
            }
            ,
            t.prototype._notifyFaultyScrubber = function() {
                this._warningIssued || (console.warn("@angular/animations: please load the web-animations.js polyfill to allow programmatic access...\n", "  visit http://bit.ly/IWukam to learn more about using the web-animation-js polyfill."),
                this._warningIssued = !0)
            }
            ,
            t
        }();
        var oe = function() {
            function t(t, e, n, i) {
                this.element = t,
                this.keyframes = e,
                this.options = n,
                this._specialStyles = i,
                this._onDoneFns = [],
                this._onStartFns = [],
                this._onDestroyFns = [],
                this._initialized = !1,
                this._finished = !1,
                this._started = !1,
                this._destroyed = !1,
                this.time = 0,
                this.parentPlayer = null,
                this.currentSnapshot = {},
                this._duration = n.duration,
                this._delay = n.delay || 0,
                this.time = this._duration + this._delay
            }
            return t.prototype._onFinish = function() {
                this._finished || (this._finished = !0,
                this._onDoneFns.forEach((function(t) {
                    return t()
                }
                )),
                this._onDoneFns = [])
            }
            ,
            t.prototype.init = function() {
                this._buildPlayer(),
                this._preparePlayerBeforeStart()
            }
            ,
            t.prototype._buildPlayer = function() {
                var t = this;
                if (!this._initialized) {
                    this._initialized = !0;
                    var e = this.keyframes;
                    this.domPlayer = this._triggerWebAnimation(this.element, e, this.options),
                    this._finalKeyframe = e.length ? e[e.length - 1] : {},
                    this.domPlayer.addEventListener("finish", (function() {
                        return t._onFinish()
                    }
                    ))
                }
            }
            ,
            t.prototype._preparePlayerBeforeStart = function() {
                this._delay ? this._resetDomPlayerState() : this.domPlayer.pause()
            }
            ,
            t.prototype._triggerWebAnimation = function(t, e, n) {
                return t.animate(e, n)
            }
            ,
            t.prototype.onStart = function(t) {
                this._onStartFns.push(t)
            }
            ,
            t.prototype.onDone = function(t) {
                this._onDoneFns.push(t)
            }
            ,
            t.prototype.onDestroy = function(t) {
                this._onDestroyFns.push(t)
            }
            ,
            t.prototype.play = function() {
                this._buildPlayer(),
                this.hasStarted() || (this._onStartFns.forEach((function(t) {
                    return t()
                }
                )),
                this._onStartFns = [],
                this._started = !0,
                this._specialStyles && this._specialStyles.start()),
                this.domPlayer.play()
            }
            ,
            t.prototype.pause = function() {
                this.init(),
                this.domPlayer.pause()
            }
            ,
            t.prototype.finish = function() {
                this.init(),
                this._specialStyles && this._specialStyles.finish(),
                this._onFinish(),
                this.domPlayer.finish()
            }
            ,
            t.prototype.reset = function() {
                this._resetDomPlayerState(),
                this._destroyed = !1,
                this._finished = !1,
                this._started = !1
            }
            ,
            t.prototype._resetDomPlayerState = function() {
                this.domPlayer && this.domPlayer.cancel()
            }
            ,
            t.prototype.restart = function() {
                this.reset(),
                this.play()
            }
            ,
            t.prototype.hasStarted = function() {
                return this._started
            }
            ,
            t.prototype.destroy = function() {
                this._destroyed || (this._destroyed = !0,
                this._resetDomPlayerState(),
                this._onFinish(),
                this._specialStyles && this._specialStyles.destroy(),
                this._onDestroyFns.forEach((function(t) {
                    return t()
                }
                )),
                this._onDestroyFns = [])
            }
            ,
            t.prototype.setPosition = function(t) {
                this.domPlayer.currentTime = t * this.time
            }
            ,
            t.prototype.getPosition = function() {
                return this.domPlayer.currentTime / this.time
            }
            ,
            Object.defineProperty(t.prototype, "totalTime", {
                get: function() {
                    return this._delay + this._duration
                },
                enumerable: !0,
                configurable: !0
            }),
            t.prototype.beforeDestroy = function() {
                var t = this
                  , e = {};
                this.hasStarted() && Object.keys(this._finalKeyframe).forEach((function(n) {
                    "offset" != n && (e[n] = t._finished ? t._finalKeyframe[n] : q(t.element, n))
                }
                )),
                this.currentSnapshot = e
            }
            ,
            t.prototype.triggerCallback = function(t) {
                var e = "start" == t ? this._onStartFns : this._onDoneFns;
                e.forEach((function(t) {
                    return t()
                }
                )),
                e.length = 0
            }
            ,
            t
        }()
          , ae = function() {
            function t() {
                this._isNativeImpl = /\{\s*\[native\s+code\]\s*\}/.test(ce().toString()),
                this._cssKeyframesDriver = new re
            }
            return t.prototype.validateStyleProperty = function(t) {
                return b(t)
            }
            ,
            t.prototype.matchesElement = function(t, e) {
                return w(t, e)
            }
            ,
            t.prototype.containsElement = function(t, e) {
                return S(t, e)
            }
            ,
            t.prototype.query = function(t, e, n) {
                return x(t, e, n)
            }
            ,
            t.prototype.computeStyle = function(t, e, n) {
                return window.getComputedStyle(t)[e]
            }
            ,
            t.prototype.overrideWebAnimationsSupport = function(t) {
                this._isNativeImpl = t
            }
            ,
            t.prototype.animate = function(t, e, n, i, r, o, a) {
                if (void 0 === o && (o = []),
                !a && !this._isNativeImpl)
                    return this._cssKeyframesDriver.animate(t, e, n, i, r, o);
                var s = {
                    duration: n,
                    delay: i,
                    fill: 0 == i ? "both" : "forwards"
                };
                r && (s.easing = r);
                var c = {}
                  , l = o.filter((function(t) {
                    return t instanceof oe
                }
                ));
                G(n, i) && l.forEach((function(t) {
                    var e = t.currentSnapshot;
                    Object.keys(e).forEach((function(t) {
                        return c[t] = e[t]
                    }
                    ))
                }
                ));
                var u = Wt(t, e = H(t, e = e.map((function(t) {
                    return I(t, !1)
                }
                )), c));
                return new oe(t,e,s,u)
            }
            ,
            t
        }();
        function se() {
            return "function" == typeof ce()
        }
        function ce() {
            return "undefined" != typeof window && void 0 !== window.document && Element.prototype.animate || {}
        }
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
        /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    }
    ).call(this, n(518))
}
, function(t, e, n) {
    "use strict";
    n.r(e),
    n.d(e, "A", (function() {
        return B
    }
    )),
    n.d(e, "ALT", (function() {
        return u
    }
    )),
    n.d(e, "APOSTROPHE", (function() {
        return ae
    }
    )),
    n.d(e, "AT_SIGN", (function() {
        return U
    }
    )),
    n.d(e, "B", (function() {
        return z
    }
    )),
    n.d(e, "BACKSLASH", (function() {
        return le
    }
    )),
    n.d(e, "BACKSPACE", (function() {
        return r
    }
    )),
    n.d(e, "C", (function() {
        return G
    }
    )),
    n.d(e, "CAPS_LOCK", (function() {
        return p
    }
    )),
    n.d(e, "CLOSE_SQUARE_BRACKET", (function() {
        return ue
    }
    )),
    n.d(e, "COMMA", (function() {
        return ie
    }
    )),
    n.d(e, "CONTEXT_MENU", (function() {
        return gt
    }
    )),
    n.d(e, "CONTROL", (function() {
        return l
    }
    )),
    n.d(e, "D", (function() {
        return H
    }
    )),
    n.d(e, "DASH", (function() {
        return re
    }
    )),
    n.d(e, "DELETE", (function() {
        return A
    }
    )),
    n.d(e, "DOWN_ARROW", (function() {
        return x
    }
    )),
    n.d(e, "E", (function() {
        return W
    }
    )),
    n.d(e, "EIGHT", (function() {
        return L
    }
    )),
    n.d(e, "END", (function() {
        return v
    }
    )),
    n.d(e, "ENTER", (function() {
        return s
    }
    )),
    n.d(e, "EQUALS", (function() {
        return ne
    }
    )),
    n.d(e, "ESCAPE", (function() {
        return h
    }
    )),
    n.d(e, "F", (function() {
        return q
    }
    )),
    n.d(e, "F1", (function() {
        return kt
    }
    )),
    n.d(e, "F10", (function() {
        return Bt
    }
    )),
    n.d(e, "F11", (function() {
        return zt
    }
    )),
    n.d(e, "F12", (function() {
        return Gt
    }
    )),
    n.d(e, "F2", (function() {
        return Dt
    }
    )),
    n.d(e, "F3", (function() {
        return Rt
    }
    )),
    n.d(e, "F4", (function() {
        return Lt
    }
    )),
    n.d(e, "F5", (function() {
        return Nt
    }
    )),
    n.d(e, "F6", (function() {
        return jt
    }
    )),
    n.d(e, "F7", (function() {
        return Vt
    }
    )),
    n.d(e, "F8", (function() {
        return Ft
    }
    )),
    n.d(e, "F9", (function() {
        return Ut
    }
    )),
    n.d(e, "FF_EQUALS", (function() {
        return V
    }
    )),
    n.d(e, "FF_MINUS", (function() {
        return Xt
    }
    )),
    n.d(e, "FF_MUTE", (function() {
        return Jt
    }
    )),
    n.d(e, "FF_SEMICOLON", (function() {
        return j
    }
    )),
    n.d(e, "FF_VOLUME_DOWN", (function() {
        return Qt
    }
    )),
    n.d(e, "FF_VOLUME_UP", (function() {
        return te
    }
    )),
    n.d(e, "FIRST_MEDIA", (function() {
        return qt
    }
    )),
    n.d(e, "FIVE", (function() {
        return k
    }
    )),
    n.d(e, "FOUR", (function() {
        return I
    }
    )),
    n.d(e, "G", (function() {
        return X
    }
    )),
    n.d(e, "H", (function() {
        return Y
    }
    )),
    n.d(e, "HOME", (function() {
        return y
    }
    )),
    n.d(e, "I", (function() {
        return K
    }
    )),
    n.d(e, "INSERT", (function() {
        return C
    }
    )),
    n.d(e, "J", (function() {
        return Z
    }
    )),
    n.d(e, "K", (function() {
        return J
    }
    )),
    n.d(e, "L", (function() {
        return Q
    }
    )),
    n.d(e, "LAST_MEDIA", (function() {
        return $t
    }
    )),
    n.d(e, "LEFT_ARROW", (function() {
        return b
    }
    )),
    n.d(e, "M", (function() {
        return $
    }
    )),
    n.d(e, "MAC_ENTER", (function() {
        return i
    }
    )),
    n.d(e, "MAC_META", (function() {
        return pe
    }
    )),
    n.d(e, "MAC_WK_CMD_LEFT", (function() {
        return ft
    }
    )),
    n.d(e, "MAC_WK_CMD_RIGHT", (function() {
        return mt
    }
    )),
    n.d(e, "META", (function() {
        return ht
    }
    )),
    n.d(e, "MUTE", (function() {
        return Yt
    }
    )),
    n.d(e, "N", (function() {
        return tt
    }
    )),
    n.d(e, "NINE", (function() {
        return N
    }
    )),
    n.d(e, "NUMPAD_DIVIDE", (function() {
        return It
    }
    )),
    n.d(e, "NUMPAD_EIGHT", (function() {
        return Ct
    }
    )),
    n.d(e, "NUMPAD_FIVE", (function() {
        return xt
    }
    )),
    n.d(e, "NUMPAD_FOUR", (function() {
        return St
    }
    )),
    n.d(e, "NUMPAD_MINUS", (function() {
        return _t
    }
    )),
    n.d(e, "NUMPAD_MULTIPLY", (function() {
        return Tt
    }
    )),
    n.d(e, "NUMPAD_NINE", (function() {
        return At
    }
    )),
    n.d(e, "NUMPAD_ONE", (function() {
        return yt
    }
    )),
    n.d(e, "NUMPAD_PERIOD", (function() {
        return Pt
    }
    )),
    n.d(e, "NUMPAD_PLUS", (function() {
        return Ot
    }
    )),
    n.d(e, "NUMPAD_SEVEN", (function() {
        return Et
    }
    )),
    n.d(e, "NUMPAD_SIX", (function() {
        return Mt
    }
    )),
    n.d(e, "NUMPAD_THREE", (function() {
        return wt
    }
    )),
    n.d(e, "NUMPAD_TWO", (function() {
        return bt
    }
    )),
    n.d(e, "NUMPAD_ZERO", (function() {
        return vt
    }
    )),
    n.d(e, "NUM_CENTER", (function() {
        return a
    }
    )),
    n.d(e, "NUM_LOCK", (function() {
        return Ht
    }
    )),
    n.d(e, "O", (function() {
        return et
    }
    )),
    n.d(e, "ONE", (function() {
        return O
    }
    )),
    n.d(e, "OPEN_SQUARE_BRACKET", (function() {
        return ce
    }
    )),
    n.d(e, "P", (function() {
        return nt
    }
    )),
    n.d(e, "PAGE_DOWN", (function() {
        return g
    }
    )),
    n.d(e, "PAGE_UP", (function() {
        return m
    }
    )),
    n.d(e, "PAUSE", (function() {
        return d
    }
    )),
    n.d(e, "PLUS_SIGN", (function() {
        return M
    }
    )),
    n.d(e, "PRINT_SCREEN", (function() {
        return E
    }
    )),
    n.d(e, "Q", (function() {
        return it
    }
    )),
    n.d(e, "QUESTION_MARK", (function() {
        return F
    }
    )),
    n.d(e, "R", (function() {
        return rt
    }
    )),
    n.d(e, "RIGHT_ARROW", (function() {
        return S
    }
    )),
    n.d(e, "S", (function() {
        return ot
    }
    )),
    n.d(e, "SCROLL_LOCK", (function() {
        return Wt
    }
    )),
    n.d(e, "SEMICOLON", (function() {
        return ee
    }
    )),
    n.d(e, "SEVEN", (function() {
        return R
    }
    )),
    n.d(e, "SHIFT", (function() {
        return c
    }
    )),
    n.d(e, "SINGLE_QUOTE", (function() {
        return de
    }
    )),
    n.d(e, "SIX", (function() {
        return D
    }
    )),
    n.d(e, "SLASH", (function() {
        return oe
    }
    )),
    n.d(e, "SPACE", (function() {
        return f
    }
    )),
    n.d(e, "T", (function() {
        return at
    }
    )),
    n.d(e, "TAB", (function() {
        return o
    }
    )),
    n.d(e, "THREE", (function() {
        return P
    }
    )),
    n.d(e, "TILDE", (function() {
        return se
    }
    )),
    n.d(e, "TWO", (function() {
        return _
    }
    )),
    n.d(e, "U", (function() {
        return st
    }
    )),
    n.d(e, "UP_ARROW", (function() {
        return w
    }
    )),
    n.d(e, "V", (function() {
        return ct
    }
    )),
    n.d(e, "VOLUME_DOWN", (function() {
        return Kt
    }
    )),
    n.d(e, "VOLUME_UP", (function() {
        return Zt
    }
    )),
    n.d(e, "W", (function() {
        return lt
    }
    )),
    n.d(e, "X", (function() {
        return ut
    }
    )),
    n.d(e, "Y", (function() {
        return dt
    }
    )),
    n.d(e, "Z", (function() {
        return pt
    }
    )),
    n.d(e, "ZERO", (function() {
        return T
    }
    )),
    n.d(e, "hasModifierKey", (function() {
        return he
    }
    ));
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var i = 3
      , r = 8
      , o = 9
      , a = 12
      , s = 13
      , c = 16
      , l = 17
      , u = 18
      , d = 19
      , p = 20
      , h = 27
      , f = 32
      , m = 33
      , g = 34
      , v = 35
      , y = 36
      , b = 37
      , w = 38
      , S = 39
      , x = 40
      , M = 43
      , E = 44
      , C = 45
      , A = 46
      , T = 48
      , O = 49
      , _ = 50
      , P = 51
      , I = 52
      , k = 53
      , D = 54
      , R = 55
      , L = 56
      , N = 57
      , j = 59
      , V = 61
      , F = 63
      , U = 64
      , B = 65
      , z = 66
      , G = 67
      , H = 68
      , W = 69
      , q = 70
      , X = 71
      , Y = 72
      , K = 73
      , Z = 74
      , J = 75
      , Q = 76
      , $ = 77
      , tt = 78
      , et = 79
      , nt = 80
      , it = 81
      , rt = 82
      , ot = 83
      , at = 84
      , st = 85
      , ct = 86
      , lt = 87
      , ut = 88
      , dt = 89
      , pt = 90
      , ht = 91
      , ft = 91
      , mt = 93
      , gt = 93
      , vt = 96
      , yt = 97
      , bt = 98
      , wt = 99
      , St = 100
      , xt = 101
      , Mt = 102
      , Et = 103
      , Ct = 104
      , At = 105
      , Tt = 106
      , Ot = 107
      , _t = 109
      , Pt = 110
      , It = 111
      , kt = 112
      , Dt = 113
      , Rt = 114
      , Lt = 115
      , Nt = 116
      , jt = 117
      , Vt = 118
      , Ft = 119
      , Ut = 120
      , Bt = 121
      , zt = 122
      , Gt = 123
      , Ht = 144
      , Wt = 145
      , qt = 166
      , Xt = 173
      , Yt = 173
      , Kt = 174
      , Zt = 175
      , Jt = 181
      , Qt = 182
      , $t = 183
      , te = 183
      , ee = 186
      , ne = 187
      , ie = 188
      , re = 189
      , oe = 191
      , ae = 192
      , se = 192
      , ce = 219
      , le = 220
      , ue = 221
      , de = 222
      , pe = 224;
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function he(t) {
        for (var e = [], n = 1; n < arguments.length; n++)
            e[n - 1] = arguments[n];
        return e.length ? e.some((function(e) {
            return t[e]
        }
        )) : t.altKey || t.shiftKey || t.ctrlKey || t.metaKey
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(16)
      , o = n(6)
      , a = n(0)
      , s = n(0)
      , c = function() {
        function t() {
            this.messageReceived = new r.Signal,
            this.message = {
                title: "",
                body: ""
            }
        }
        return t.prototype.showMessage = function(t, e, n) {
            void 0 === n && (n = !1);
            var i = t && e;
            this.message.title = t,
            this.message.body = e,
            this.renderAsPlainText = n,
            i && this.messageReceived.emit()
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵprov = s.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.MessageReportingService = c,
    s.ɵsetClassMetadata(c, [{
        type: a.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return []
    }
    ), null),
    i.module("IVWebApp").service("MessageReportingService", o.downgradeInjectable(c))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return o
    }
    ));
    var i = n(1)
      , r = n(26);
    function o(t, e) {
        return function(n) {
            if ("function" != typeof t)
                throw new TypeError("argument is not a function. Are you looking for `mapTo()`?");
            return n.lift(new a(t,e))
        }
    }
    var a = function() {
        function t(t, e) {
            this.project = t,
            this.thisArg = e
        }
        return t.prototype.call = function(t, e) {
            return e.subscribe(new s(t,this.project,this.thisArg))
        }
        ,
        t
    }()
      , s = function(t) {
        function e(e, n, i) {
            var r = t.call(this, e) || this;
            return r.project = n,
            r.count = 0,
            r.thisArg = i || r,
            r
        }
        return i.c(e, t),
        e.prototype._next = function(t) {
            var e;
            try {
                e = this.project.call(this.thisArg, t, this.count++)
            } catch (t) {
                return void this.destination.error(t)
            }
            this.destination.next(e)
        }
        ,
        e
    }(r.a)
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return J
    }
    )),
    n.d(e, "b", (function() {
        return E
    }
    )),
    n.d(e, "c", (function() {
        return x
    }
    )),
    n.d(e, "d", (function() {
        return G
    }
    )),
    n.d(e, "e", (function() {
        return K
    }
    )),
    n.d(e, "f", (function() {
        return I
    }
    )),
    n.d(e, "g", (function() {
        return C
    }
    )),
    n.d(e, "h", (function() {
        return X
    }
    )),
    n.d(e, "i", (function() {
        return P
    }
    )),
    n.d(e, "j", (function() {
        return Z
    }
    )),
    n.d(e, "k", (function() {
        return z
    }
    )),
    n.d(e, "l", (function() {
        return H
    }
    ));
    var i = n(3)
      , r = n(0)
      , o = n(1)
      , a = n(32)
      , s = n(33)
      , c = n(93)
      , l = n(60)
      , u = n(535)
      , d = n(623)
      , p = n(165)
      , h = n(62)
      , f = n(221)
      , m = n(23)
      , g = n(13)
      , v = n(170);
    function y(t, e) {
        return (t.getAttribute(e) || "").match(/\S+/g) || []
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var b = 0
      , w = new Map
      , S = null
      , x = function() {
        function t(t) {
            this._document = t
        }
        return t.prototype.describe = function(t, e) {
            this._canBeDescribed(t, e) && ("string" != typeof e ? (this._setMessageId(e),
            w.set(e, {
                messageElement: e,
                referenceCount: 0
            })) : w.has(e) || this._createMessageElement(e),
            this._isElementDescribedByMessage(t, e) || this._addMessageReference(t, e))
        }
        ,
        t.prototype.removeDescription = function(t, e) {
            if (this._isElementNode(t)) {
                if (this._isElementDescribedByMessage(t, e) && this._removeMessageReference(t, e),
                "string" == typeof e) {
                    var n = w.get(e);
                    n && 0 === n.referenceCount && this._deleteMessageElement(e)
                }
                S && 0 === S.childNodes.length && this._deleteMessagesContainer()
            }
        }
        ,
        t.prototype.ngOnDestroy = function() {
            for (var t = this._document.querySelectorAll("[cdk-describedby-host]"), e = 0; e < t.length; e++)
                this._removeCdkDescribedByReferenceIds(t[e]),
                t[e].removeAttribute("cdk-describedby-host");
            S && this._deleteMessagesContainer(),
            w.clear()
        }
        ,
        t.prototype._createMessageElement = function(t) {
            var e = this._document.createElement("div");
            this._setMessageId(e),
            e.textContent = t,
            this._createMessagesContainer(),
            S.appendChild(e),
            w.set(t, {
                messageElement: e,
                referenceCount: 0
            })
        }
        ,
        t.prototype._setMessageId = function(t) {
            t.id || (t.id = "cdk-describedby-message-" + b++)
        }
        ,
        t.prototype._deleteMessageElement = function(t) {
            var e = w.get(t)
              , n = e && e.messageElement;
            S && n && S.removeChild(n),
            w.delete(t)
        }
        ,
        t.prototype._createMessagesContainer = function() {
            if (!S) {
                var t = this._document.getElementById("cdk-describedby-message-container");
                t && t.parentNode.removeChild(t),
                (S = this._document.createElement("div")).id = "cdk-describedby-message-container",
                S.setAttribute("aria-hidden", "true"),
                S.style.display = "none",
                this._document.body.appendChild(S)
            }
        }
        ,
        t.prototype._deleteMessagesContainer = function() {
            S && S.parentNode && (S.parentNode.removeChild(S),
            S = null)
        }
        ,
        t.prototype._removeCdkDescribedByReferenceIds = function(t) {
            var e = y(t, "aria-describedby").filter((function(t) {
                return 0 != t.indexOf("cdk-describedby-message")
            }
            ));
            t.setAttribute("aria-describedby", e.join(" "))
        }
        ,
        t.prototype._addMessageReference = function(t, e) {
            var n, i, r, o, a = w.get(e);
            n = t,
            i = "aria-describedby",
            r = a.messageElement.id,
            (o = y(n, i)).some((function(t) {
                return t.trim() == r.trim()
            }
            )) || (o.push(r.trim()),
            n.setAttribute(i, o.join(" "))),
            t.setAttribute("cdk-describedby-host", ""),
            a.referenceCount++
        }
        ,
        t.prototype._removeMessageReference = function(t, e) {
            var n, i, r, o, a = w.get(e);
            a.referenceCount--,
            n = t,
            i = "aria-describedby",
            r = a.messageElement.id,
            (o = y(n, i).filter((function(t) {
                return t != r.trim()
            }
            ))).length ? n.setAttribute(i, o.join(" ")) : n.removeAttribute(i),
            t.removeAttribute("cdk-describedby-host")
        }
        ,
        t.prototype._isElementDescribedByMessage = function(t, e) {
            var n = y(t, "aria-describedby")
              , i = w.get(e)
              , r = i && i.messageElement.id;
            return !!r && -1 != n.indexOf(r)
        }
        ,
        t.prototype._canBeDescribed = function(t, e) {
            if (!this._isElementNode(t))
                return !1;
            if (e && "object" == typeof e)
                return !0;
            var n = null == e ? "" : ("" + e).trim()
              , i = t.getAttribute("aria-label");
            return !!n && (!i || i.trim() !== n)
        }
        ,
        t.prototype._isElementNode = function(t) {
            return t.nodeType === this._document.ELEMENT_NODE
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: void 0,
                decorators: [{
                    type: r.Inject,
                    args: [i.DOCUMENT]
                }]
            }]
        }
        ,
        t.ɵprov = Object(r["ɵɵdefineInjectable"])({
            factory: function() {
                return new t(Object(r["ɵɵinject"])(i.DOCUMENT))
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)(r["ɵɵinject"](i.DOCUMENT))
        }
        ,
        t
    }()
      , M = function() {
        function t(t) {
            var e = this;
            this._items = t,
            this._activeItemIndex = -1,
            this._activeItem = null,
            this._wrap = !1,
            this._letterKeyStream = new a.a,
            this._typeaheadSubscription = s.a.EMPTY,
            this._vertical = !0,
            this._allowedModifierKeys = [],
            this._skipPredicateFn = function(t) {
                return t.disabled
            }
            ,
            this._pressedLetters = [],
            this.tabOut = new a.a,
            this.change = new a.a,
            t instanceof r.QueryList && t.changes.subscribe((function(t) {
                if (e._activeItem) {
                    var n = t.toArray().indexOf(e._activeItem);
                    n > -1 && n !== e._activeItemIndex && (e._activeItemIndex = n)
                }
            }
            ))
        }
        return t.prototype.skipPredicate = function(t) {
            return this._skipPredicateFn = t,
            this
        }
        ,
        t.prototype.withWrap = function(t) {
            return void 0 === t && (t = !0),
            this._wrap = t,
            this
        }
        ,
        t.prototype.withVerticalOrientation = function(t) {
            return void 0 === t && (t = !0),
            this._vertical = t,
            this
        }
        ,
        t.prototype.withHorizontalOrientation = function(t) {
            return this._horizontal = t,
            this
        }
        ,
        t.prototype.withAllowedModifierKeys = function(t) {
            return this._allowedModifierKeys = t,
            this
        }
        ,
        t.prototype.withTypeAhead = function(t) {
            var e = this;
            if (void 0 === t && (t = 200),
            this._items.length && this._items.some((function(t) {
                return "function" != typeof t.getLabel
            }
            )))
                throw Error("ListKeyManager items in typeahead mode must implement the `getLabel` method.");
            return this._typeaheadSubscription.unsubscribe(),
            this._typeaheadSubscription = this._letterKeyStream.pipe(Object(u.a)((function(t) {
                return e._pressedLetters.push(t)
            }
            )), Object(d.a)(t), Object(p.a)((function() {
                return e._pressedLetters.length > 0
            }
            )), Object(h.a)((function() {
                return e._pressedLetters.join("")
            }
            ))).subscribe((function(t) {
                for (var n = e._getItemsArray(), i = 1; i < n.length + 1; i++) {
                    var r = (e._activeItemIndex + i) % n.length
                      , o = n[r];
                    if (!e._skipPredicateFn(o) && 0 === o.getLabel().toUpperCase().trim().indexOf(t)) {
                        e.setActiveItem(r);
                        break
                    }
                }
                e._pressedLetters = []
            }
            )),
            this
        }
        ,
        t.prototype.setActiveItem = function(t) {
            var e = this._activeItemIndex;
            this.updateActiveItem(t),
            this._activeItemIndex !== e && this.change.next(this._activeItemIndex)
        }
        ,
        t.prototype.onKeydown = function(t) {
            var e = this
              , n = t.keyCode
              , i = ["altKey", "ctrlKey", "metaKey", "shiftKey"].every((function(n) {
                return !t[n] || e._allowedModifierKeys.indexOf(n) > -1
            }
            ));
            switch (n) {
            case l.TAB:
                return void this.tabOut.next();
            case l.DOWN_ARROW:
                if (this._vertical && i) {
                    this.setNextItemActive();
                    break
                }
                return;
            case l.UP_ARROW:
                if (this._vertical && i) {
                    this.setPreviousItemActive();
                    break
                }
                return;
            case l.RIGHT_ARROW:
                if (this._horizontal && i) {
                    "rtl" === this._horizontal ? this.setPreviousItemActive() : this.setNextItemActive();
                    break
                }
                return;
            case l.LEFT_ARROW:
                if (this._horizontal && i) {
                    "rtl" === this._horizontal ? this.setNextItemActive() : this.setPreviousItemActive();
                    break
                }
                return;
            default:
                return void ((i || Object(l.hasModifierKey)(t, "shiftKey")) && (t.key && 1 === t.key.length ? this._letterKeyStream.next(t.key.toLocaleUpperCase()) : (n >= l.A && n <= l.Z || n >= l.ZERO && n <= l.NINE) && this._letterKeyStream.next(String.fromCharCode(n))))
            }
            this._pressedLetters = [],
            t.preventDefault()
        }
        ,
        Object.defineProperty(t.prototype, "activeItemIndex", {
            get: function() {
                return this._activeItemIndex
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "activeItem", {
            get: function() {
                return this._activeItem
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.isTyping = function() {
            return this._pressedLetters.length > 0
        }
        ,
        t.prototype.setFirstItemActive = function() {
            this._setActiveItemByIndex(0, 1)
        }
        ,
        t.prototype.setLastItemActive = function() {
            this._setActiveItemByIndex(this._items.length - 1, -1)
        }
        ,
        t.prototype.setNextItemActive = function() {
            this._activeItemIndex < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1)
        }
        ,
        t.prototype.setPreviousItemActive = function() {
            this._activeItemIndex < 0 && this._wrap ? this.setLastItemActive() : this._setActiveItemByDelta(-1)
        }
        ,
        t.prototype.updateActiveItem = function(t) {
            var e = this._getItemsArray()
              , n = "number" == typeof t ? t : e.indexOf(t)
              , i = e[n];
            this._activeItem = null == i ? null : i,
            this._activeItemIndex = n
        }
        ,
        t.prototype._setActiveItemByDelta = function(t) {
            this._wrap ? this._setActiveInWrapMode(t) : this._setActiveInDefaultMode(t)
        }
        ,
        t.prototype._setActiveInWrapMode = function(t) {
            for (var e = this._getItemsArray(), n = 1; n <= e.length; n++) {
                var i = (this._activeItemIndex + t * n + e.length) % e.length
                  , r = e[i];
                if (!this._skipPredicateFn(r))
                    return void this.setActiveItem(i)
            }
        }
        ,
        t.prototype._setActiveInDefaultMode = function(t) {
            this._setActiveItemByIndex(this._activeItemIndex + t, t)
        }
        ,
        t.prototype._setActiveItemByIndex = function(t, e) {
            var n = this._getItemsArray();
            if (n[t]) {
                for (; this._skipPredicateFn(n[t]); )
                    if (!n[t += e])
                        return;
                this.setActiveItem(t)
            }
        }
        ,
        t.prototype._getItemsArray = function() {
            return this._items instanceof r.QueryList ? this._items.toArray() : this._items
        }
        ,
        t
    }()
      , E = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return Object(o.c)(e, t),
        e.prototype.setActiveItem = function(e) {
            this.activeItem && this.activeItem.setInactiveStyles(),
            t.prototype.setActiveItem.call(this, e),
            this.activeItem && this.activeItem.setActiveStyles()
        }
        ,
        e
    }(M)
      , C = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e._origin = "program",
            e
        }
        return Object(o.c)(e, t),
        e.prototype.setFocusOrigin = function(t) {
            return this._origin = t,
            this
        }
        ,
        e.prototype.setActiveItem = function(e) {
            t.prototype.setActiveItem.call(this, e),
            this.activeItem && this.activeItem.focus(this._origin)
        }
        ,
        e
    }(M)
      , A = function() {
        function t(t) {
            this._platform = t
        }
        return t.prototype.isDisabled = function(t) {
            return t.hasAttribute("disabled")
        }
        ,
        t.prototype.isVisible = function(t) {
            return function(t) {
                return !!(t.offsetWidth || t.offsetHeight || "function" == typeof t.getClientRects && t.getClientRects().length)
            }(t) && "visible" === getComputedStyle(t).visibility
        }
        ,
        t.prototype.isTabbable = function(t) {
            if (!this._platform.isBrowser)
                return !1;
            var e, n = function(t) {
                try {
                    return t.frameElement
                } catch (t) {
                    return null
                }
            }((e = t).ownerDocument && e.ownerDocument.defaultView || window);
            if (n) {
                var i = n && n.nodeName.toLowerCase();
                if (-1 === O(n))
                    return !1;
                if ((this._platform.BLINK || this._platform.WEBKIT) && "object" === i)
                    return !1;
                if ((this._platform.BLINK || this._platform.WEBKIT) && !this.isVisible(n))
                    return !1
            }
            var r = t.nodeName.toLowerCase()
              , o = O(t);
            if (t.hasAttribute("contenteditable"))
                return -1 !== o;
            if ("iframe" === r)
                return !1;
            if ("audio" === r) {
                if (!t.hasAttribute("controls"))
                    return !1;
                if (this._platform.BLINK)
                    return !0
            }
            if ("video" === r) {
                if (!t.hasAttribute("controls") && this._platform.TRIDENT)
                    return !1;
                if (this._platform.BLINK || this._platform.FIREFOX)
                    return !0
            }
            return ("object" !== r || !this._platform.BLINK && !this._platform.WEBKIT) && (!(this._platform.WEBKIT && this._platform.IOS && !function(t) {
                var e = t.nodeName.toLowerCase()
                  , n = "input" === e && t.type;
                return "text" === n || "password" === n || "select" === e || "textarea" === e
            }(t)) && t.tabIndex >= 0)
        }
        ,
        t.prototype.isFocusable = function(t) {
            return function(t) {
                if (function(t) {
                    return function(t) {
                        return "input" == t.nodeName.toLowerCase()
                    }(t) && "hidden" == t.type
                }(t))
                    return !1;
                return function(t) {
                    var e = t.nodeName.toLowerCase();
                    return "input" === e || "select" === e || "button" === e || "textarea" === e
                }(t) || function(t) {
                    return function(t) {
                        return "a" == t.nodeName.toLowerCase()
                    }(t) && t.hasAttribute("href")
                }(t) || t.hasAttribute("contenteditable") || T(t)
            }(t) && !this.isDisabled(t) && this.isVisible(t)
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: g.a
            }]
        }
        ,
        t.ɵprov = Object(r["ɵɵdefineInjectable"])({
            factory: function() {
                return new t(Object(r["ɵɵinject"])(g.a))
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)(r["ɵɵinject"](g.a))
        }
        ,
        t
    }();
    function T(t) {
        if (!t.hasAttribute("tabindex") || void 0 === t.tabIndex)
            return !1;
        var e = t.getAttribute("tabindex");
        return "-32768" != e && !(!e || isNaN(parseInt(e, 10)))
    }
    function O(t) {
        if (!T(t))
            return null;
        var e = parseInt(t.getAttribute("tabindex") || "", 10);
        return isNaN(e) ? -1 : e
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var _ = function() {
        function t(t, e, n, i, r) {
            var o = this;
            void 0 === r && (r = !1),
            this._element = t,
            this._checker = e,
            this._ngZone = n,
            this._document = i,
            this._hasAttached = !1,
            this.startAnchorListener = function() {
                return o.focusLastTabbableElement()
            }
            ,
            this.endAnchorListener = function() {
                return o.focusFirstTabbableElement()
            }
            ,
            this._enabled = !0,
            r || this.attachAnchors()
        }
        return Object.defineProperty(t.prototype, "enabled", {
            get: function() {
                return this._enabled
            },
            set: function(t) {
                this._enabled = t,
                this._startAnchor && this._endAnchor && (this._toggleAnchorTabIndex(t, this._startAnchor),
                this._toggleAnchorTabIndex(t, this._endAnchor))
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.destroy = function() {
            var t = this._startAnchor
              , e = this._endAnchor;
            t && (t.removeEventListener("focus", this.startAnchorListener),
            t.parentNode && t.parentNode.removeChild(t)),
            e && (e.removeEventListener("focus", this.endAnchorListener),
            e.parentNode && e.parentNode.removeChild(e)),
            this._startAnchor = this._endAnchor = null
        }
        ,
        t.prototype.attachAnchors = function() {
            var t = this;
            return !!this._hasAttached || (this._ngZone.runOutsideAngular((function() {
                t._startAnchor || (t._startAnchor = t._createAnchor(),
                t._startAnchor.addEventListener("focus", t.startAnchorListener)),
                t._endAnchor || (t._endAnchor = t._createAnchor(),
                t._endAnchor.addEventListener("focus", t.endAnchorListener))
            }
            )),
            this._element.parentNode && (this._element.parentNode.insertBefore(this._startAnchor, this._element),
            this._element.parentNode.insertBefore(this._endAnchor, this._element.nextSibling),
            this._hasAttached = !0),
            this._hasAttached)
        }
        ,
        t.prototype.focusInitialElementWhenReady = function() {
            var t = this;
            return new Promise((function(e) {
                t._executeOnStable((function() {
                    return e(t.focusInitialElement())
                }
                ))
            }
            ))
        }
        ,
        t.prototype.focusFirstTabbableElementWhenReady = function() {
            var t = this;
            return new Promise((function(e) {
                t._executeOnStable((function() {
                    return e(t.focusFirstTabbableElement())
                }
                ))
            }
            ))
        }
        ,
        t.prototype.focusLastTabbableElementWhenReady = function() {
            var t = this;
            return new Promise((function(e) {
                t._executeOnStable((function() {
                    return e(t.focusLastTabbableElement())
                }
                ))
            }
            ))
        }
        ,
        t.prototype._getRegionBoundary = function(t) {
            for (var e = this._element.querySelectorAll("[cdk-focus-region-" + t + "], [cdkFocusRegion" + t + "], [cdk-focus-" + t + "]"), n = 0; n < e.length; n++)
                e[n].hasAttribute("cdk-focus-" + t) ? console.warn("Found use of deprecated attribute 'cdk-focus-" + t + "', use 'cdkFocusRegion" + t + "' instead. The deprecated attribute will be removed in 8.0.0.", e[n]) : e[n].hasAttribute("cdk-focus-region-" + t) && console.warn("Found use of deprecated attribute 'cdk-focus-region-" + t + "', use 'cdkFocusRegion" + t + "' instead. The deprecated attribute will be removed in 8.0.0.", e[n]);
            return "start" == t ? e.length ? e[0] : this._getFirstTabbableElement(this._element) : e.length ? e[e.length - 1] : this._getLastTabbableElement(this._element)
        }
        ,
        t.prototype.focusInitialElement = function() {
            var t = this._element.querySelector("[cdk-focus-initial], [cdkFocusInitial]");
            return t ? (t.hasAttribute("cdk-focus-initial") && console.warn("Found use of deprecated attribute 'cdk-focus-initial', use 'cdkFocusInitial' instead. The deprecated attribute will be removed in 8.0.0", t),
            Object(r.isDevMode)() && !this._checker.isFocusable(t) && console.warn("Element matching '[cdkFocusInitial]' is not focusable.", t),
            t.focus(),
            !0) : this.focusFirstTabbableElement()
        }
        ,
        t.prototype.focusFirstTabbableElement = function() {
            var t = this._getRegionBoundary("start");
            return t && t.focus(),
            !!t
        }
        ,
        t.prototype.focusLastTabbableElement = function() {
            var t = this._getRegionBoundary("end");
            return t && t.focus(),
            !!t
        }
        ,
        t.prototype.hasAttached = function() {
            return this._hasAttached
        }
        ,
        t.prototype._getFirstTabbableElement = function(t) {
            if (this._checker.isFocusable(t) && this._checker.isTabbable(t))
                return t;
            for (var e = t.children || t.childNodes, n = 0; n < e.length; n++) {
                var i = e[n].nodeType === this._document.ELEMENT_NODE ? this._getFirstTabbableElement(e[n]) : null;
                if (i)
                    return i
            }
            return null
        }
        ,
        t.prototype._getLastTabbableElement = function(t) {
            if (this._checker.isFocusable(t) && this._checker.isTabbable(t))
                return t;
            for (var e = t.children || t.childNodes, n = e.length - 1; n >= 0; n--) {
                var i = e[n].nodeType === this._document.ELEMENT_NODE ? this._getLastTabbableElement(e[n]) : null;
                if (i)
                    return i
            }
            return null
        }
        ,
        t.prototype._createAnchor = function() {
            var t = this._document.createElement("div");
            return this._toggleAnchorTabIndex(this._enabled, t),
            t.classList.add("cdk-visually-hidden"),
            t.classList.add("cdk-focus-trap-anchor"),
            t.setAttribute("aria-hidden", "true"),
            t
        }
        ,
        t.prototype._toggleAnchorTabIndex = function(t, e) {
            t ? e.setAttribute("tabindex", "0") : e.removeAttribute("tabindex")
        }
        ,
        t.prototype.toggleAnchors = function(t) {
            this._startAnchor && this._endAnchor && (this._toggleAnchorTabIndex(t, this._startAnchor),
            this._toggleAnchorTabIndex(t, this._endAnchor))
        }
        ,
        t.prototype._executeOnStable = function(t) {
            this._ngZone.isStable ? t() : this._ngZone.onStable.asObservable().pipe(Object(f.a)(1)).subscribe(t)
        }
        ,
        t
    }()
      , P = function() {
        function t(t, e, n) {
            this._checker = t,
            this._ngZone = e,
            this._document = n
        }
        return t.prototype.create = function(t, e) {
            return void 0 === e && (e = !1),
            new _(t,this._checker,this._ngZone,this._document,e)
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: A
            }, {
                type: r.NgZone
            }, {
                type: void 0,
                decorators: [{
                    type: r.Inject,
                    args: [i.DOCUMENT]
                }]
            }]
        }
        ,
        t.ɵprov = Object(r["ɵɵdefineInjectable"])({
            factory: function() {
                return new t(Object(r["ɵɵinject"])(A),Object(r["ɵɵinject"])(r.NgZone),Object(r["ɵɵinject"])(i.DOCUMENT))
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)(r["ɵɵinject"](A),r["ɵɵinject"](r.NgZone),r["ɵɵinject"](i.DOCUMENT))
        }
        ,
        t
    }()
      , I = function() {
        function t(t, e, n) {
            this._elementRef = t,
            this._focusTrapFactory = e,
            this._previouslyFocusedElement = null,
            this._document = n,
            this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, !0)
        }
        return Object.defineProperty(t.prototype, "enabled", {
            get: function() {
                return this.focusTrap.enabled
            },
            set: function(t) {
                this.focusTrap.enabled = Object(m.c)(t)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "autoCapture", {
            get: function() {
                return this._autoCapture
            },
            set: function(t) {
                this._autoCapture = Object(m.c)(t)
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.ngOnDestroy = function() {
            this.focusTrap.destroy(),
            this._previouslyFocusedElement && (this._previouslyFocusedElement.focus(),
            this._previouslyFocusedElement = null)
        }
        ,
        t.prototype.ngAfterContentInit = function() {
            this.focusTrap.attachAnchors(),
            this.autoCapture && (this._previouslyFocusedElement = this._document.activeElement,
            this.focusTrap.focusInitialElementWhenReady())
        }
        ,
        t.prototype.ngDoCheck = function() {
            this.focusTrap.hasAttached() || this.focusTrap.attachAnchors()
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: r.ElementRef
            }, {
                type: P
            }, {
                type: void 0,
                decorators: [{
                    type: r.Inject,
                    args: [i.DOCUMENT]
                }]
            }]
        }
        ,
        t.propDecorators = {
            enabled: [{
                type: r.Input,
                args: ["cdkTrapFocus"]
            }],
            autoCapture: [{
                type: r.Input,
                args: ["cdkTrapFocusAutoCapture"]
            }]
        },
        t.ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.ElementRef),r["ɵɵdirectiveInject"](P),r["ɵɵdirectiveInject"](i.DOCUMENT))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "cdkTrapFocus", ""]],
            inputs: {
                enabled: ["cdkTrapFocus", "enabled"],
                autoCapture: ["cdkTrapFocusAutoCapture", "autoCapture"]
            },
            exportAs: ["cdkTrapFocus"]
        }),
        t
    }()
      , k = function(t) {
        function e(e, n, i, r, o, a, s) {
            var c = t.call(this, e, n, i, r, s.defer) || this;
            return c._focusTrapManager = o,
            c._inertStrategy = a,
            c._focusTrapManager.register(c),
            c
        }
        return Object(o.c)(e, t),
        Object.defineProperty(e.prototype, "enabled", {
            get: function() {
                return this._enabled
            },
            set: function(t) {
                this._enabled = t,
                this._enabled ? this._focusTrapManager.register(this) : this._focusTrapManager.deregister(this)
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.destroy = function() {
            this._focusTrapManager.deregister(this),
            t.prototype.destroy.call(this)
        }
        ,
        e.prototype._enable = function() {
            this._inertStrategy.preventFocus(this),
            this.toggleAnchors(!0)
        }
        ,
        e.prototype._disable = function() {
            this._inertStrategy.allowFocus(this),
            this.toggleAnchors(!1)
        }
        ,
        e
    }(_);
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function D(t, e) {
        if (!(t instanceof Node))
            return null;
        for (var n = t; null != n && !(n instanceof Element); )
            n = n.parentNode;
        return n && (R ? n.closest(e) : function(t, e) {
            var n = t;
            for (; null != n && !(n instanceof Element && L(n, e)); )
                n = n.parentNode;
            return n || null
        }(n, e))
    }
    var R = "undefined" != typeof Element && !!Element.prototype.closest;
    function L(t, e) {
        return t.matches ? t.matches(e) : t.msMatchesSelector(e)
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var N = function() {
        function t() {
            this._listener = null
        }
        return t.prototype.preventFocus = function(t) {
            var e = this;
            this._listener && t._document.removeEventListener("focus", this._listener, !0),
            this._listener = function(n) {
                return e._trapFocus(t, n)
            }
            ,
            t._ngZone.runOutsideAngular((function() {
                t._document.addEventListener("focus", e._listener, !0)
            }
            ))
        }
        ,
        t.prototype.allowFocus = function(t) {
            this._listener && (t._document.removeEventListener("focus", this._listener, !0),
            this._listener = null)
        }
        ,
        t.prototype._trapFocus = function(t, e) {
            var n = e.target
              , i = t._element;
            i.contains(n) || null !== D(n, "div.cdk-overlay-pane") || setTimeout((function() {
                t.enabled && !i.contains(t._document.activeElement) && t.focusFirstTabbableElement()
            }
            ))
        }
        ,
        t
    }()
      , j = function() {
        this.defer = !1
    }
      , V = new r.InjectionToken("FOCUS_TRAP_INERT_STRATEGY")
      , F = function() {
        function t() {
            this._focusTrapStack = []
        }
        return t.prototype.register = function(t) {
            this._focusTrapStack = this._focusTrapStack.filter((function(e) {
                return e !== t
            }
            ));
            var e = this._focusTrapStack;
            e.length && e[e.length - 1]._disable(),
            e.push(t),
            t._enable()
        }
        ,
        t.prototype.deregister = function(t) {
            t._disable();
            var e = this._focusTrapStack
              , n = e.indexOf(t);
            -1 !== n && (e.splice(n, 1),
            e.length && e[e.length - 1]._enable())
        }
        ,
        t.ɵprov = Object(r["ɵɵdefineInjectable"])({
            factory: function() {
                return new t
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t
    }()
      , U = (function() {
        function t(t, e, n, i, r) {
            this._checker = t,
            this._ngZone = e,
            this._focusTrapManager = n,
            this._document = i,
            this._inertStrategy = r || new N
        }
        t.prototype.create = function(t, e) {
            var n;
            return void 0 === e && (e = new j),
            "boolean" == typeof e ? (n = new j).defer = e : n = e,
            new k(t,this._checker,this._ngZone,this._document,this._focusTrapManager,this._inertStrategy,n)
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: A
            }, {
                type: r.NgZone
            }, {
                type: F
            }, {
                type: void 0,
                decorators: [{
                    type: r.Inject,
                    args: [i.DOCUMENT]
                }]
            }, {
                type: void 0,
                decorators: [{
                    type: r.Optional
                }, {
                    type: r.Inject,
                    args: [V]
                }]
            }]
        }
        ,
        t.ɵprov = Object(r["ɵɵdefineInjectable"])({
            factory: function() {
                return new t(Object(r["ɵɵinject"])(A),Object(r["ɵɵinject"])(r.NgZone),Object(r["ɵɵinject"])(F),Object(r["ɵɵinject"])(i.DOCUMENT),Object(r["ɵɵinject"])(V, 8))
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)(r["ɵɵinject"](A),r["ɵɵinject"](r.NgZone),r["ɵɵinject"](F),r["ɵɵinject"](i.DOCUMENT),r["ɵɵinject"](V, 8))
        }
    }(),
    new r.InjectionToken("liveAnnouncerElement",{
        providedIn: "root",
        factory: function() {
            return null
        }
    }));
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var B = new r.InjectionToken("LIVE_ANNOUNCER_DEFAULT_OPTIONS")
      , z = function() {
        function t(t, e, n, i) {
            this._ngZone = e,
            this._defaultOptions = i,
            this._document = n,
            this._liveElement = t || this._createLiveElement()
        }
        return t.prototype.announce = function(t) {
            for (var e, n = this, i = [], r = 1; r < arguments.length; r++)
                i[r - 1] = arguments[r];
            var a, s, c = this._defaultOptions;
            return 1 === i.length && "number" == typeof i[0] ? s = i[0] : (a = (e = Object(o.f)(i, 2))[0],
            s = e[1]),
            this.clear(),
            clearTimeout(this._previousTimeout),
            a || (a = c && c.politeness ? c.politeness : "polite"),
            null == s && c && (s = c.duration),
            this._liveElement.setAttribute("aria-live", a),
            this._ngZone.runOutsideAngular((function() {
                return new Promise((function(e) {
                    clearTimeout(n._previousTimeout),
                    n._previousTimeout = setTimeout((function() {
                        n._liveElement.textContent = t,
                        e(),
                        "number" == typeof s && (n._previousTimeout = setTimeout((function() {
                            return n.clear()
                        }
                        ), s))
                    }
                    ), 100)
                }
                ))
            }
            ))
        }
        ,
        t.prototype.clear = function() {
            this._liveElement && (this._liveElement.textContent = "")
        }
        ,
        t.prototype.ngOnDestroy = function() {
            clearTimeout(this._previousTimeout),
            this._liveElement && this._liveElement.parentNode && (this._liveElement.parentNode.removeChild(this._liveElement),
            this._liveElement = null)
        }
        ,
        t.prototype._createLiveElement = function() {
            for (var t = this._document.getElementsByClassName("cdk-live-announcer-element"), e = this._document.createElement("div"), n = 0; n < t.length; n++)
                t[n].parentNode.removeChild(t[n]);
            return e.classList.add("cdk-live-announcer-element"),
            e.classList.add("cdk-visually-hidden"),
            e.setAttribute("aria-atomic", "true"),
            e.setAttribute("aria-live", "polite"),
            this._document.body.appendChild(e),
            e
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: void 0,
                decorators: [{
                    type: r.Optional
                }, {
                    type: r.Inject,
                    args: [U]
                }]
            }, {
                type: r.NgZone
            }, {
                type: void 0,
                decorators: [{
                    type: r.Inject,
                    args: [i.DOCUMENT]
                }]
            }, {
                type: void 0,
                decorators: [{
                    type: r.Optional
                }, {
                    type: r.Inject,
                    args: [B]
                }]
            }]
        }
        ,
        t.ɵprov = Object(r["ɵɵdefineInjectable"])({
            factory: function() {
                return new t(Object(r["ɵɵinject"])(U, 8),Object(r["ɵɵinject"])(r.NgZone),Object(r["ɵɵinject"])(i.DOCUMENT),Object(r["ɵɵinject"])(B, 8))
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)(r["ɵɵinject"](U, 8),r["ɵɵinject"](r.NgZone),r["ɵɵinject"](i.DOCUMENT),r["ɵɵinject"](B, 8))
        }
        ,
        t
    }()
      , G = function() {
        function t(t, e, n, i) {
            this._elementRef = t,
            this._liveAnnouncer = e,
            this._contentObserver = n,
            this._ngZone = i,
            this._politeness = "off"
        }
        return Object.defineProperty(t.prototype, "politeness", {
            get: function() {
                return this._politeness
            },
            set: function(t) {
                var e = this;
                this._politeness = "polite" === t || "assertive" === t ? t : "off",
                "off" === this._politeness ? this._subscription && (this._subscription.unsubscribe(),
                this._subscription = null) : this._subscription || (this._subscription = this._ngZone.runOutsideAngular((function() {
                    return e._contentObserver.observe(e._elementRef).subscribe((function() {
                        var t = e._elementRef.nativeElement.textContent;
                        t !== e._previousAnnouncedText && (e._liveAnnouncer.announce(t, e._politeness),
                        e._previousAnnouncedText = t)
                    }
                    ))
                }
                )))
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.ngOnDestroy = function() {
            this._subscription && this._subscription.unsubscribe()
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: r.ElementRef
            }, {
                type: z
            }, {
                type: v.b
            }, {
                type: r.NgZone
            }]
        }
        ,
        t.propDecorators = {
            politeness: [{
                type: r.Input,
                args: ["cdkAriaLive"]
            }]
        },
        t.ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.ElementRef),r["ɵɵdirectiveInject"](z),r["ɵɵdirectiveInject"](v.b),r["ɵɵdirectiveInject"](r.NgZone))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "cdkAriaLive", ""]],
            inputs: {
                politeness: ["cdkAriaLive", "politeness"]
            },
            exportAs: ["cdkAriaLive"]
        }),
        t
    }();
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function H(t) {
        return 0 === t.buttons
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var W = new r.InjectionToken("cdk-focus-monitor-default-options")
      , q = Object(g.f)({
        passive: !0,
        capture: !0
    })
      , X = function() {
        function t(t, e, n, i) {
            var r = this;
            this._ngZone = t,
            this._platform = e,
            this._origin = null,
            this._windowFocused = !1,
            this._elementInfo = new Map,
            this._monitoredElementCount = 0,
            this._rootNodeFocusListenerCount = new Map,
            this._documentKeydownListener = function() {
                r._lastTouchTarget = null,
                r._setOriginForCurrentEventQueue("keyboard")
            }
            ,
            this._documentMousedownListener = function(t) {
                if (!r._lastTouchTarget) {
                    var e = H(t) ? "keyboard" : "mouse";
                    r._setOriginForCurrentEventQueue(e)
                }
            }
            ,
            this._documentTouchstartListener = function(t) {
                null != r._touchTimeoutId && clearTimeout(r._touchTimeoutId),
                r._lastTouchTarget = Y(t),
                r._touchTimeoutId = setTimeout((function() {
                    return r._lastTouchTarget = null
                }
                ), 650)
            }
            ,
            this._windowFocusListener = function() {
                r._windowFocused = !0,
                r._windowFocusTimeoutId = setTimeout((function() {
                    return r._windowFocused = !1
                }
                ))
            }
            ,
            this._rootNodeFocusAndBlurListener = function(t) {
                for (var e = Y(t), n = "focus" === t.type ? r._onFocus : r._onBlur, i = e; i; i = i.parentElement)
                    n.call(r, t, i)
            }
            ,
            this._document = n,
            this._detectionMode = (null == i ? void 0 : i.detectionMode) || 0
        }
        return t.prototype.monitor = function(t, e) {
            if (void 0 === e && (e = !1),
            !this._platform.isBrowser)
                return Object(c.a)(null);
            var n = Object(m.e)(t)
              , i = Object(g.c)(n) || this._getDocument();
            if (this._elementInfo.has(n)) {
                var r = this._elementInfo.get(n);
                return r.checkChildren = e,
                r.subject.asObservable()
            }
            var o = {
                checkChildren: e,
                subject: new a.a,
                rootNode: i
            };
            return this._elementInfo.set(n, o),
            this._registerGlobalListeners(o),
            o.subject.asObservable()
        }
        ,
        t.prototype.stopMonitoring = function(t) {
            var e = Object(m.e)(t)
              , n = this._elementInfo.get(e);
            n && (n.subject.complete(),
            this._setClasses(e),
            this._elementInfo.delete(e),
            this._removeGlobalListeners(n))
        }
        ,
        t.prototype.focusVia = function(t, e, n) {
            var i = Object(m.e)(t);
            this._setOriginForCurrentEventQueue(e),
            "function" == typeof i.focus && i.focus(n)
        }
        ,
        t.prototype.ngOnDestroy = function() {
            var t = this;
            this._elementInfo.forEach((function(e, n) {
                return t.stopMonitoring(n)
            }
            ))
        }
        ,
        t.prototype._getDocument = function() {
            return this._document || document
        }
        ,
        t.prototype._getWindow = function() {
            return this._getDocument().defaultView || window
        }
        ,
        t.prototype._toggleClass = function(t, e, n) {
            n ? t.classList.add(e) : t.classList.remove(e)
        }
        ,
        t.prototype._getFocusOrigin = function(t) {
            return this._origin ? this._origin : this._windowFocused && this._lastFocusOrigin ? this._lastFocusOrigin : this._wasCausedByTouch(t) ? "touch" : "program"
        }
        ,
        t.prototype._setClasses = function(t, e) {
            this._toggleClass(t, "cdk-focused", !!e),
            this._toggleClass(t, "cdk-touch-focused", "touch" === e),
            this._toggleClass(t, "cdk-keyboard-focused", "keyboard" === e),
            this._toggleClass(t, "cdk-mouse-focused", "mouse" === e),
            this._toggleClass(t, "cdk-program-focused", "program" === e)
        }
        ,
        t.prototype._setOriginForCurrentEventQueue = function(t) {
            var e = this;
            this._ngZone.runOutsideAngular((function() {
                e._origin = t,
                0 === e._detectionMode && (e._originTimeoutId = setTimeout((function() {
                    return e._origin = null
                }
                ), 1))
            }
            ))
        }
        ,
        t.prototype._wasCausedByTouch = function(t) {
            var e = Y(t);
            return this._lastTouchTarget instanceof Node && e instanceof Node && (e === this._lastTouchTarget || e.contains(this._lastTouchTarget))
        }
        ,
        t.prototype._onFocus = function(t, e) {
            var n = this._elementInfo.get(e);
            if (n && (n.checkChildren || e === Y(t))) {
                var i = this._getFocusOrigin(t);
                this._setClasses(e, i),
                this._emitOrigin(n.subject, i),
                this._lastFocusOrigin = i
            }
        }
        ,
        t.prototype._onBlur = function(t, e) {
            var n = this._elementInfo.get(e);
            !n || n.checkChildren && t.relatedTarget instanceof Node && e.contains(t.relatedTarget) || (this._setClasses(e),
            this._emitOrigin(n.subject, null))
        }
        ,
        t.prototype._emitOrigin = function(t, e) {
            this._ngZone.run((function() {
                return t.next(e)
            }
            ))
        }
        ,
        t.prototype._registerGlobalListeners = function(t) {
            var e = this;
            if (this._platform.isBrowser) {
                var n = t.rootNode
                  , i = this._rootNodeFocusListenerCount.get(n) || 0;
                i || this._ngZone.runOutsideAngular((function() {
                    n.addEventListener("focus", e._rootNodeFocusAndBlurListener, q),
                    n.addEventListener("blur", e._rootNodeFocusAndBlurListener, q)
                }
                )),
                this._rootNodeFocusListenerCount.set(n, i + 1),
                1 == ++this._monitoredElementCount && this._ngZone.runOutsideAngular((function() {
                    var t = e._getDocument()
                      , n = e._getWindow();
                    t.addEventListener("keydown", e._documentKeydownListener, q),
                    t.addEventListener("mousedown", e._documentMousedownListener, q),
                    t.addEventListener("touchstart", e._documentTouchstartListener, q),
                    n.addEventListener("focus", e._windowFocusListener)
                }
                ))
            }
        }
        ,
        t.prototype._removeGlobalListeners = function(t) {
            var e = t.rootNode;
            if (this._rootNodeFocusListenerCount.has(e)) {
                var n = this._rootNodeFocusListenerCount.get(e);
                n > 1 ? this._rootNodeFocusListenerCount.set(e, n - 1) : (e.removeEventListener("focus", this._rootNodeFocusAndBlurListener, q),
                e.removeEventListener("blur", this._rootNodeFocusAndBlurListener, q),
                this._rootNodeFocusListenerCount.delete(e))
            }
            if (!--this._monitoredElementCount) {
                var i = this._getDocument()
                  , r = this._getWindow();
                i.removeEventListener("keydown", this._documentKeydownListener, q),
                i.removeEventListener("mousedown", this._documentMousedownListener, q),
                i.removeEventListener("touchstart", this._documentTouchstartListener, q),
                r.removeEventListener("focus", this._windowFocusListener),
                clearTimeout(this._windowFocusTimeoutId),
                clearTimeout(this._touchTimeoutId),
                clearTimeout(this._originTimeoutId)
            }
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: r.NgZone
            }, {
                type: g.a
            }, {
                type: void 0,
                decorators: [{
                    type: r.Optional
                }, {
                    type: r.Inject,
                    args: [i.DOCUMENT]
                }]
            }, {
                type: void 0,
                decorators: [{
                    type: r.Optional
                }, {
                    type: r.Inject,
                    args: [W]
                }]
            }]
        }
        ,
        t.ɵprov = Object(r["ɵɵdefineInjectable"])({
            factory: function() {
                return new t(Object(r["ɵɵinject"])(r.NgZone),Object(r["ɵɵinject"])(g.a),Object(r["ɵɵinject"])(i.DOCUMENT, 8),Object(r["ɵɵinject"])(W, 8))
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)(r["ɵɵinject"](r.NgZone),r["ɵɵinject"](g.a),r["ɵɵinject"](i.DOCUMENT, 8),r["ɵɵinject"](W, 8))
        }
        ,
        t
    }();
    function Y(t) {
        return t.composedPath ? t.composedPath()[0] : t.target
    }
    var K = function() {
        function t(t, e) {
            var n = this;
            this._elementRef = t,
            this._focusMonitor = e,
            this.cdkFocusChange = new r.EventEmitter,
            this._monitorSubscription = this._focusMonitor.monitor(this._elementRef, this._elementRef.nativeElement.hasAttribute("cdkMonitorSubtreeFocus")).subscribe((function(t) {
                return n.cdkFocusChange.emit(t)
            }
            ))
        }
        return t.prototype.ngOnDestroy = function() {
            this._focusMonitor.stopMonitoring(this._elementRef),
            this._monitorSubscription.unsubscribe()
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: r.ElementRef
            }, {
                type: X
            }]
        }
        ,
        t.propDecorators = {
            cdkFocusChange: [{
                type: r.Output
            }]
        },
        t.ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.ElementRef),r["ɵɵdirectiveInject"](X))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "cdkMonitorElementFocus", ""], ["", "cdkMonitorSubtreeFocus", ""]],
            outputs: {
                cdkFocusChange: "cdkFocusChange"
            }
        }),
        t
    }()
      , Z = function() {
        function t(t, e) {
            this._platform = t,
            this._document = e
        }
        return t.prototype.getHighContrastMode = function() {
            if (!this._platform.isBrowser)
                return 0;
            var t = this._document.createElement("div");
            t.style.backgroundColor = "rgb(1,2,3)",
            t.style.position = "absolute",
            this._document.body.appendChild(t);
            var e = this._document.defaultView || window
              , n = e && e.getComputedStyle ? e.getComputedStyle(t) : null
              , i = (n && n.backgroundColor || "").replace(/ /g, "");
            switch (this._document.body.removeChild(t),
            i) {
            case "rgb(0,0,0)":
                return 2;
            case "rgb(255,255,255)":
                return 1
            }
            return 0
        }
        ,
        t.prototype._applyBodyHighContrastModeCssClasses = function() {
            if (this._platform.isBrowser && this._document.body) {
                var t = this._document.body.classList;
                t.remove("cdk-high-contrast-active"),
                t.remove("cdk-high-contrast-black-on-white"),
                t.remove("cdk-high-contrast-white-on-black");
                var e = this.getHighContrastMode();
                1 === e ? (t.add("cdk-high-contrast-active"),
                t.add("cdk-high-contrast-black-on-white")) : 2 === e && (t.add("cdk-high-contrast-active"),
                t.add("cdk-high-contrast-white-on-black"))
            }
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: g.a
            }, {
                type: void 0,
                decorators: [{
                    type: r.Inject,
                    args: [i.DOCUMENT]
                }]
            }]
        }
        ,
        t.ɵprov = Object(r["ɵɵdefineInjectable"])({
            factory: function() {
                return new t(Object(r["ɵɵinject"])(g.a),Object(r["ɵɵinject"])(i.DOCUMENT))
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)(r["ɵɵinject"](g.a),r["ɵɵinject"](i.DOCUMENT))
        }
        ,
        t
    }()
      , J = function() {
        function t(t) {
            t._applyBodyHighContrastModeCssClasses()
        }
        return t.ctorParameters = function() {
            return [{
                type: Z
            }]
        }
        ,
        t.ɵmod = r["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = r["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)(r["ɵɵinject"](Z))
            },
            imports: [[g.b, v.c]]
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && r["ɵɵsetNgModuleScope"](t, {
            declarations: function() {
                return [G, I, K]
            },
            imports: function() {
                return [g.b, v.c]
            },
            exports: function() {
                return [G, I, K]
            }
        }),
        t
    }();
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    n(256);
    var i = n(256)
      , r = function() {
        function t(e) {
            this.data = {},
            this.data = {},
            this.data[t.nameKey] = e
        }
        return t.prototype.submit = function() {
            i.GoogleTagManagerService.track(this.data)
        }
        ,
        t.prototype.withData = function(t, e) {
            return this.data[t] = e,
            this
        }
        ,
        t.prototype.withCountData = function(t) {
            return this.data[t] && "number" == typeof this.data[t] ? this.data[t]++ : this.data[t] = 1,
            this
        }
        ,
        Object.defineProperty(t.prototype, "eventData", {
            get: function() {
                return this.data
            },
            enumerable: !0,
            configurable: !0
        }),
        t.nameKey = "event",
        t
    }();
    e.TrackingEvent = r
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(20);
    n(54);
    var o = n(16)
      , a = n(25)
      , s = n(0)
      , c = n(6)
      , l = (n(15),
    n(54),
    n(73),
    n(8))
      , u = (n(21),
    n(222))
      , d = (n(120),
    n(0))
      , p = n(15)
      , h = n(54)
      , f = n(73)
      , m = n(21)
      , g = n(120)
      , v = function() {
        function t(t, e, n, i, r, a) {
            this.ConfigService = t,
            this.LicenseService = e,
            this.UrlService = n,
            this.TrackingService = i,
            this.PointCloudMenuService = r,
            this.FeatureFlagsService = a,
            this.onShowPanoramasChanged = new o.Signal,
            this.onShowMeshesChanged = new o.Signal,
            this.onShowLocationMarkersChanged = new o.Signal,
            this.onShowNavGraphChanged = new o.Signal,
            this.config = {
                vectorMapEditorEnabled: !1,
                enableMultiMeasurement: !1,
                showPanoramas: !0,
                showMeshes: !1,
                showNavGraph: !1,
                showLocationMarkers: !0,
                showPointCloudOptionEnabled: !0,
                showPointCloudAutomaticActivationOptionEnabled: !0,
                showPanoramasOptionEnabled: !0,
                showMeshesOptionEnabled: !0,
                showSecondaryViewOptionEnabled: !0,
                showLocationMarkersOptionEnabled: !0
            },
            this.activate(),
            this.registerEventCallbacks()
        }
        return t.prototype.showPanoramas = function(t, e) {
            void 0 === e && (e = !1),
            this.config.showPanoramas !== t && (e || this.TrackingService.trackRenderingModeChanged(u.RenderingMode.Panorama, t),
            this.config.showPanoramas = t,
            this.onShowPanoramasChanged.emit(t, e))
        }
        ,
        t.prototype.showMeshes = function(t) {
            this.config.showMeshes = t,
            this.onShowMeshesChanged.emit(t)
        }
        ,
        t.prototype.showLocationMarkers = function(t) {
            this.config.showLocationMarkers !== t && (this.config.showLocationMarkers = t,
            this.onShowLocationMarkersChanged.emit(t))
        }
        ,
        t.prototype.showNavGraph = function(t) {
            this.config.showNavGraph !== t && (this.config.showNavGraph = t,
            this.onShowNavGraphChanged.emit(t))
        }
        ,
        t.prototype.registerEventCallbacks = function() {
            var t = this;
            this.PointCloudMenuService.configShowPanosInPerspectiveChanged.connect((function(e) {
                return t.showPanoramas(e)
            }
            )),
            this.PointCloudMenuService.configShowPointCloudChanged.connect((function() {
                return t.showMeshes(!1)
            }
            )),
            this.onShowPanoramasChanged.connect((function() {
                return t.showMeshes(!1)
            }
            )),
            this.onShowMeshesChanged.connect((function(e) {
                e && (t.showPanoramas(!1),
                t.PointCloudMenuService.showPointClouds(!1))
            }
            ))
        }
        ,
        t.prototype.activate = function() {
            var t = this;
            Promise.all([this.ConfigService.initialized, this.LicenseService.initialized]).then((function() {
                t.initConfig(),
                r.invalidateAngular()
            }
            )).catch(l.handleWarning)
        }
        ,
        t.prototype.initConfig = function() {
            this.config.showPanoramas = "true" !== this.UrlService.getParamFromUrl(this.ConfigService.getAliasByName(a.Configs.LAYERS_POINTCLOUD_VISIBLE)) && this.ConfigService.getBoolean(a.Configs.LAYERS_PANORAMAS_VISIBLE, this.config.showPanoramas),
            this.config.showLocationMarkers = this.ConfigService.getBoolean(a.Configs.LAYERS_LOCATIONS_VISIBLE, this.config.showLocationMarkers)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(d.ɵɵinject(p.ConfigService),d.ɵɵinject(h.LicenseService),d.ɵɵinject(f.UrlService),d.ɵɵinject(m.TrackingService),d.ɵɵinject("PointCloudMenuService"),d.ɵɵinject(g.FeatureFlagsService))
        }
        ,
        t.ɵprov = d.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.ViewMenuService = v,
    d.ɵsetClassMetadata(v, [{
        type: s.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: p.ConfigService
        }, {
            type: h.LicenseService
        }, {
            type: f.UrlService
        }, {
            type: m.TrackingService
        }, {
            type: void 0,
            decorators: [{
                type: s.Inject,
                args: ["PointCloudMenuService"]
            }]
        }, {
            type: g.FeatureFlagsService
        }]
    }
    ), null),
    i.module("IVWebApp").service("ViewMenuService", c.downgradeInjectable(v))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(380)
      , o = n(4)
      , a = n(531)
      , s = n(533)
      , c = n(382)
      , l = n(7)
      , u = n(1047)
      , d = n(1048)
      , p = n(16)
      , h = n(381)
      , f = n(532)
      , m = n(144)
      , g = n(6)
      , v = n(0)
      , y = n(0)
      , b = function() {
        function t() {
            this.EPSG_4326 = "EPSG:4326",
            this.NAVVIS_PREFIX = "NAVVIS",
            this.NAVVIS_LOCAL = this.NAVVIS_PREFIX + ":LOCAL",
            this.crsGlobal = new r.ReferenceSystem(!0,this.EPSG_4326,"WGS 84"),
            this.onBeforeLocalReferenceSystemChange = new p.Signal,
            this.onAfterLocalReferenceSystemChange = new p.Signal,
            this.NAVVIS_TMERC = this.NAVVIS_PREFIX + ":TMERC",
            this.crsCache = {},
            this.transformMap = new Map,
            this.geodeticTransforms = [],
            this.localReferenceSystemReadyDefer = new m.Deferred,
            this.localReferenceSystemReady = this.localReferenceSystemReadyDefer.promise
        }
        return t.prototype.registerReferenceSystem = function(t) {
            if (t.name in this.crsCache)
                throw new h.DuplicateReferenceSystemException('Reference system "' + t.name + '" is already registered');
            this.crsCache[t.name] = t
        }
        ,
        t.prototype.unregisterReferenceSystem = function(t) {
            delete this.crsCache[t.name]
        }
        ,
        t.prototype.getReferenceSystem = function(t) {
            if (t in this.crsCache)
                return this.crsCache[t];
            if (t.startsWith("EPSG:")) {
                if (!f.proj4Factory.defs(t))
                    throw new h.ReferenceSystemNotFoundException('Proj.4 cannot find reference system "' + t + '"');
                var e = new r.ReferenceSystem(!0,t);
                return this.registerReferenceSystem(e),
                e
            }
            throw new h.ReferenceSystemNotFoundException('Cannot find reference system "' + t + '"')
        }
        ,
        Object.defineProperty(t.prototype, "referenceSystems", {
            get: function() {
                return l.values(this.crsCache)
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.registerTransform = function(t) {
            if (t.source.geodetic && t.target.geodetic)
                throw new h.RedundantTransformException("Purely geodetic transform is redundant");
            var e = this.transformMap.get(t.source);
            if (e && e.some((function(e) {
                return e.target === t.target
            }
            )))
                throw new h.DuplicateTransformException('A transform between "' + t.source.name + '" and "' + t.target.name + '" already exists');
            t.source.geodetic || this.addToTransformMap(t.source, t),
            t.target.geodetic || this.addToTransformMap(t.target, t),
            (t.source.geodetic || t.target.geodetic) && this.geodeticTransforms.push(t)
        }
        ,
        t.prototype.unregisterTransform = function(t) {
            t.source.geodetic || this.deleteFromTransformMap(t.source, t),
            t.target.geodetic || this.deleteFromTransformMap(t.target, t),
            (t.source.geodetic || t.target.geodetic) && (this.geodeticTransforms = this.geodeticTransforms.filter((function(e) {
                return e !== t
            }
            )))
        }
        ,
        t.prototype.addToTransformMap = function(t, e) {
            var n = this.transformMap.get(t);
            n || (n = [],
            this.transformMap.set(t, n)),
            n.push(e)
        }
        ,
        t.prototype.deleteFromTransformMap = function(t, e) {
            var n = this.transformMap.get(t);
            n && ((n = n.filter((function(t) {
                return t !== e
            }
            ))).length > 0 ? this.transformMap.set(t, n) : this.transformMap.delete(t))
        }
        ,
        t.prototype.getTransform = function(t, e) {
            return t === e ? new u.IdentityTransform(t) : t.geodetic && e.geodetic ? new a.GeodeticTransform(t,e) : t.name === this.NAVVIS_LOCAL && e.name === this.EPSG_4326 ? this._localToGlobal : t.name === this.EPSG_4326 && e.name === this.NAVVIS_LOCAL ? this._globalToLocal : this.findTransform(t, e)
        }
        ,
        t.prototype.findTransform = function(t, e) {
            var n, i = [];
            for (this.expandNode(t, i); i.length > 0; ) {
                var r = i.shift();
                if (e.geodetic && r.target.geodetic || r.target === e) {
                    n = r;
                    break
                }
                this.expandNode(r.target, i, r)
            }
            if (!n)
                throw new h.TransformNotFoundException('Transform from "' + t.name + '" to "' + e.name + '" not found');
            return n.createGeodeticTransforms(t, e),
            n.getTransformationChain()
        }
        ,
        t.prototype.expandNode = function(t, e, n) {
            var i = t.geodetic ? this.geodeticTransforms : this.transformMap.get(t);
            if (i)
                for (var r = 0, o = i; r < o.length; r++) {
                    var a = o[r]
                      , s = t.geodetic && a.target.geodetic || t === a.target ? a.getInverse() : a;
                    n && n.contains(s.target) || e.push(new d.CandidateChain(s,n))
                }
        }
        ,
        t.prototype.setLocalCoordinateSystem = function(t, e) {
            var n = "+proj=tmerc +ellps=WGS84 +lon_0=" + t.x.toPrecision(15) + " +lat_0=" + t.y.toPrecision(15)
              , i = new r.ReferenceSystem(!1,this.NAVVIS_LOCAL,"Local working coordinate system")
              , l = new r.ReferenceSystem(!0,this.NAVVIS_TMERC,"Transverse Mercator around local origin",n)
              , u = new o.Matrix4;
            e && u.makeRotationFromQuaternion(e),
            u.setPosition(new o.Vector3(0,0,t.z));
            var d = new s.TransformChain([new c.AffineTransform(i,l,u), new a.GeodeticTransform(l,this.crsGlobal)])
              , p = d.getInverse();
            this.setLocalCoordinateSystemState({
                crsLocal: i,
                globalToLocal: p,
                localToGlobal: d
            }),
            this.localReferenceSystemReadyDefer.resolve()
        }
        ,
        t.prototype.setLocalCoordinateSystemState = function(t) {
            this.unsetLocalCoordinateSystem(),
            this._crsLocal = t.crsLocal,
            this._globalToLocal = t.globalToLocal,
            this._localToGlobal = t.localToGlobal,
            this.registerReferenceSystem(t.crsLocal),
            this.registerTransform(t.localToGlobal),
            this.onAfterLocalReferenceSystemChange.emit()
        }
        ,
        t.prototype.getLocalCoordinateSystemState = function() {
            return {
                crsLocal: this._crsLocal,
                globalToLocal: this._globalToLocal,
                localToGlobal: this._localToGlobal
            }
        }
        ,
        t.prototype.unsetLocalCoordinateSystem = function() {
            this._localToGlobal && (this.onBeforeLocalReferenceSystemChange.emit(),
            this.unregisterReferenceSystem(this._crsLocal),
            this.unregisterTransform(this._localToGlobal),
            this._localToGlobal = void 0,
            this._globalToLocal = void 0)
        }
        ,
        t.prototype.haveLocalCoordinateSystem = function() {
            return void 0 !== this._localToGlobal
        }
        ,
        Object.defineProperty(t.prototype, "crsLocal", {
            get: function() {
                return this._crsLocal
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "localToGlobal", {
            get: function() {
                return this._localToGlobal
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "globalToLocal", {
            get: function() {
                return this._globalToLocal
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.getTemporaryTransform = function(t, e) {
            var n = "+proj=tmerc +ellps=WGS84 +lon_0=" + t + " +lat_0=" + e
              , i = new r.ReferenceSystem(!0,"temp",void 0,n);
            return new a.GeodeticTransform(this.crsGlobal,i)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵprov = y.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.TransformService = b,
    y.ɵsetClassMetadata(b, [{
        type: v.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return []
    }
    ), null),
    i.module("IVWebApp").service("TransformService", g.downgradeInjectable(b))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(4)
      , r = n(108)
      , o = n(157)
      , a = new i.Frustum
      , s = new i.Matrix4
      , c = new i.Vector3
      , l = new i.Vector3;
    function u(t, e, n) {
        void 0 === n && (n = .01);
        for (var i = e.clone().sub(t), r = i.length(), o = Math.floor(r / n), a = o * n, s = r / n - o != 0, c = i.clone().clampLength(0, a).multiplyScalar(1 / o), l = [], u = 0; u <= o; u++)
            l.push(t.clone().add(c.clone().multiplyScalar(u)));
        return s && l.push(e),
        l
    }
    e.setMeshScreenSize = function(t, e, n, o, u) {
        var d = t.getCamera()
          , p = t.getWidth()
          , h = function(t, e, n, i) {
            (n && e > 1 || i && e < 1) && (e = 1),
            t.scale.set(e * t.scale.x / t.scale.y, e, e * t.scale.z / t.scale.y)
        };
        if (e instanceof Array || (e = [e]),
        d instanceof i.PerspectiveCamera) {
            a.setFromProjectionMatrix(s.multiplyMatrices(d.projectionMatrix, d.matrixWorldInverse));
            for (var f = 0, m = e; f < m.length; f++) {
                if ((b = m[f]).updateMatrix(),
                b.updateMatrixWorld(!1),
                a.intersectsObject(b))
                    if (c.set(0, 0, 0).applyMatrix4(b.matrixWorld),
                    l.copy(c).project(d),
                    isFinite(l.x))
                        l.x += n / p,
                        l.unproject(d),
                        h(b, l.distanceTo(c) / b.geometry.boundingSphere.radius, o, u)
            }
        } else {
            if (!(d instanceof i.OrthographicCamera))
                throw new r.IVFrontendException("Unsupported camera type");
            for (var g = d.right - d.left, v = 0, y = e; v < y.length; v++) {
                var b;
                (b = y[v]).geometry.boundingSphere || b.geometry.computeBoundingSphere(),
                h(b, n / 2 / p * g / b.geometry.boundingSphere.radius, o, u)
            }
        }
    }
    ,
    e.drawRect = function(t, e, n, i, r, o, a, s) {
        void 0 === a && (a = !0),
        void 0 === s && (s = !1),
        t.beginPath(),
        t.moveTo(e + o, n),
        t.lineTo(e + i - o, n),
        t.quadraticCurveTo(e + i, n, e + i, n + o),
        t.lineTo(e + i, n + r - o),
        t.quadraticCurveTo(e + i, n + r, e + i - o, n + r),
        t.lineTo(e + o, n + r),
        t.quadraticCurveTo(e, n + r, e, n + r - o),
        t.lineTo(e, n + o),
        t.quadraticCurveTo(e, n, e + o, n),
        t.closePath(),
        a && t.fill(),
        s && t.stroke()
    }
    ,
    e.dataURItoBlob = function(t) {
        for (var e = atob(t.split(",")[1]), n = t.split(",")[0].split(":")[1].split(";")[0], i = new ArrayBuffer(e.length), r = new Uint8Array(i), o = 0; o < e.length; ++o)
            r[o] = e.charCodeAt(o);
        var a = new DataView(i);
        return new Blob([a],{
            type: n
        })
    }
    ,
    e.nearestPow2 = function(t, e) {
        var n = Math.pow(2, Math.round(Math.log(t) / Math.log(2)));
        return "floor" === e && n > t ? n >>= 1 : "ceiling" === e && n < t && (n <<= 1),
        n
    }
    ,
    e.getMeasuredVertices = u,
    e.createMeasuredLine = function(t, e, n) {
        void 0 === n && (n = .01);
        var r = new i.Geometry;
        return r.vertices = u(t, e, n),
        r
    }
    ,
    e.removeChildrenOfObject3D = function(t) {
        for (var e = 0, n = t.children; e < n.length; e++) {
            var r = n[e];
            r instanceof i.Mesh && (r.material instanceof i.MeshBasicMaterial && r.material.map.dispose(),
            o.disposeMeshMaterial(r),
            r.geometry.dispose())
        }
        t.children.length = 0
    }
    ;
    e.calcCamParamsToFitBoxIntoScreen = function(t, e, n, r, o, a, s) {
        void 0 === r && (r = 25),
        void 0 === o && (o = 25),
        void 0 === a && (a = 25),
        void 0 === s && (s = 25);
        var c = Math.abs(t.max.x - t.min.x)
          , l = Math.abs(t.max.y - t.min.y)
          , u = e - (a + s)
          , d = n - (o + r)
          , p = Math.max(c, l) / Math.min(u, d)
          , h = t.getCenter(new i.Vector3);
        return h.y -= (o - r) / 2 * p,
        h.x -= (a - s) / 2 * p,
        {
            position: h,
            resolution: p
        }
    }
    ;
    var d = function() {};
    e.PanningCameraParameters = d
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t[t.NO = 0] = "NO",
        t[t.YES = 1] = "YES",
        t[t.INVALID = 2] = "INVALID"
    }(e.NavGraphEditingConstantsEdgeExists || (e.NavGraphEditingConstantsEdgeExists = {})),
    function(t) {
        t[t.CURRENT = 0] = "CURRENT",
        t[t.PREVIOUS = 1] = "PREVIOUS",
        t[t.NOT_SELECTED = -1] = "NOT_SELECTED"
    }(e.NavGraphEditingConstantsSelectedNode || (e.NavGraphEditingConstantsSelectedNode = {})),
    function(t) {
        t.EDGE = "edge",
        t.NODE = "node",
        t.SPLIT = "split",
        t.PATH = "path"
    }(e.NavGraphEditingConstantsType || (e.NavGraphEditingConstantsType = {})),
    function(t) {
        t[t.GREEN = 49152] = "GREEN",
        t[t.LIGHT_LIGHT_BLUE = 15132415] = "LIGHT_LIGHT_BLUE",
        t[t.LIGHT_BLUE = 8421631] = "LIGHT_BLUE",
        t[t.DARK_BLUE = 255] = "DARK_BLUE",
        t[t.RED = 16711680] = "RED"
    }(e.NavGraphEditingConstantsNodeColors || (e.NavGraphEditingConstantsNodeColors = {})),
    function(t) {
        t[t.NODE_EDITING = 0] = "NODE_EDITING",
        t[t.PATH_DRAWING = 1] = "PATH_DRAWING"
    }(e.NavGraphEditingConstantsModes || (e.NavGraphEditingConstantsModes = {})),
    e.DEFAULT_CAMERA_HEIGHT = 1.9
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return d
    }
    )),
    n.d(e, "b", (function() {
        return h
    }
    )),
    n.d(e, "c", (function() {
        return m
    }
    )),
    n.d(e, "d", (function() {
        return c
    }
    )),
    n.d(e, "e", (function() {
        return p
    }
    )),
    n.d(e, "f", (function() {
        return g
    }
    )),
    n.d(e, "g", (function() {
        return v
    }
    )),
    n.d(e, "h", (function() {
        return l
    }
    ));
    var i = n(1)
      , r = n(0)
      , o = n(3);
    function a() {
        throw Error("Host already has a portal attached")
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var s = function() {
        function t() {}
        return t.prototype.attach = function(t) {
            return null == t && function() {
                throw Error("Attempting to attach a portal to a null PortalOutlet")
            }(),
            t.hasAttached() && a(),
            this._attachedHost = t,
            t.attach(this)
        }
        ,
        t.prototype.detach = function() {
            var t = this._attachedHost;
            null == t ? function() {
                throw Error("Attempting to detach a portal that is not attached to a host")
            }() : (this._attachedHost = null,
            t.detach())
        }
        ,
        Object.defineProperty(t.prototype, "isAttached", {
            get: function() {
                return null != this._attachedHost
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.setAttachedHost = function(t) {
            this._attachedHost = t
        }
        ,
        t
    }()
      , c = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this) || this;
            return o.component = e,
            o.viewContainerRef = n,
            o.injector = i,
            o.componentFactoryResolver = r,
            o
        }
        return Object(i.c)(e, t),
        e
    }(s)
      , l = function(t) {
        function e(e, n, i) {
            var r = t.call(this) || this;
            return r.templateRef = e,
            r.viewContainerRef = n,
            r.context = i,
            r
        }
        return Object(i.c)(e, t),
        Object.defineProperty(e.prototype, "origin", {
            get: function() {
                return this.templateRef.elementRef
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.attach = function(e, n) {
            return void 0 === n && (n = this.context),
            this.context = n,
            t.prototype.attach.call(this, e)
        }
        ,
        e.prototype.detach = function() {
            return this.context = void 0,
            t.prototype.detach.call(this)
        }
        ,
        e
    }(s)
      , u = function(t) {
        function e(e) {
            var n = t.call(this) || this;
            return n.element = e instanceof r.ElementRef ? e.nativeElement : e,
            n
        }
        return Object(i.c)(e, t),
        e
    }(s)
      , d = function() {
        function t() {
            this._isDisposed = !1,
            this.attachDomPortal = null
        }
        return t.prototype.hasAttached = function() {
            return !!this._attachedPortal
        }
        ,
        t.prototype.attach = function(t) {
            return t || /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
            function() {
                throw Error("Must provide a portal to attach")
            }(),
            this.hasAttached() && a(),
            this._isDisposed && function() {
                throw Error("This PortalOutlet has already been disposed")
            }(),
            t instanceof c ? (this._attachedPortal = t,
            this.attachComponentPortal(t)) : t instanceof l ? (this._attachedPortal = t,
            this.attachTemplatePortal(t)) : this.attachDomPortal && t instanceof u ? (this._attachedPortal = t,
            this.attachDomPortal(t)) : void function() {
                throw Error("Attempting to attach an unknown Portal type. BasePortalOutlet accepts either a ComponentPortal or a TemplatePortal.")
            }()
        }
        ,
        t.prototype.detach = function() {
            this._attachedPortal && (this._attachedPortal.setAttachedHost(null),
            this._attachedPortal = null),
            this._invokeDisposeFn()
        }
        ,
        t.prototype.dispose = function() {
            this.hasAttached() && this.detach(),
            this._invokeDisposeFn(),
            this._isDisposed = !0
        }
        ,
        t.prototype.setDisposeFn = function(t) {
            this._disposeFn = t
        }
        ,
        t.prototype._invokeDisposeFn = function() {
            this._disposeFn && (this._disposeFn(),
            this._disposeFn = null)
        }
        ,
        t
    }()
      , p = (function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        Object(i.c)(e, t)
    }(d),
    function(t) {
        function e(e, n, i, r, o) {
            var a = t.call(this) || this;
            return a.outletElement = e,
            a._componentFactoryResolver = n,
            a._appRef = i,
            a._defaultInjector = r,
            a.attachDomPortal = function(e) {
                if (!a._document)
                    throw Error("Cannot attach DOM portal without _document constructor parameter");
                var n = e.element;
                if (!n.parentNode)
                    throw Error("DOM portal content must be attached to a parent node.");
                var i = a._document.createComment("dom-portal");
                n.parentNode.insertBefore(i, n),
                a.outletElement.appendChild(n),
                t.prototype.setDisposeFn.call(a, (function() {
                    i.parentNode && i.parentNode.replaceChild(n, i)
                }
                ))
            }
            ,
            a._document = o,
            a
        }
        return Object(i.c)(e, t),
        e.prototype.attachComponentPortal = function(t) {
            var e, n = this, i = (t.componentFactoryResolver || this._componentFactoryResolver).resolveComponentFactory(t.component);
            return t.viewContainerRef ? (e = t.viewContainerRef.createComponent(i, t.viewContainerRef.length, t.injector || t.viewContainerRef.injector),
            this.setDisposeFn((function() {
                return e.destroy()
            }
            ))) : (e = i.create(t.injector || this._defaultInjector),
            this._appRef.attachView(e.hostView),
            this.setDisposeFn((function() {
                n._appRef.detachView(e.hostView),
                e.destroy()
            }
            ))),
            this.outletElement.appendChild(this._getComponentRootNode(e)),
            e
        }
        ,
        e.prototype.attachTemplatePortal = function(t) {
            var e = this
              , n = t.viewContainerRef
              , i = n.createEmbeddedView(t.templateRef, t.context);
            return i.detectChanges(),
            i.rootNodes.forEach((function(t) {
                return e.outletElement.appendChild(t)
            }
            )),
            this.setDisposeFn((function() {
                var t = n.indexOf(i);
                -1 !== t && n.remove(t)
            }
            )),
            i
        }
        ,
        e.prototype.dispose = function() {
            t.prototype.dispose.call(this),
            null != this.outletElement.parentNode && this.outletElement.parentNode.removeChild(this.outletElement)
        }
        ,
        e.prototype._getComponentRootNode = function(t) {
            return t.hostView.rootNodes[0]
        }
        ,
        e
    }(d))
      , h = (function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        Object(i.c)(e, t)
    }(p),
    function(t) {
        function e(e, n) {
            return t.call(this, e, n) || this
        }
        return Object(i.c)(e, t),
        e.ctorParameters = function() {
            return [{
                type: r.TemplateRef
            }, {
                type: r.ViewContainerRef
            }]
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(r["ɵɵdirectiveInject"](r.TemplateRef),r["ɵɵdirectiveInject"](r.ViewContainerRef))
        }
        ,
        e.ɵdir = r["ɵɵdefineDirective"]({
            type: e,
            selectors: [["", "cdkPortal", ""]],
            exportAs: ["cdkPortal"],
            features: [r["ɵɵInheritDefinitionFeature"]]
        }),
        e
    }(l))
      , f = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        Object(i.c)(e, t),
        e.ɵfac = function(t) {
            return n(t || e)
        }
        ,
        e.ɵdir = r["ɵɵdefineDirective"]({
            type: e,
            selectors: [["", "cdk-portal", ""], ["", "portal", ""]],
            exportAs: ["cdkPortal"],
            features: [r["ɵɵProvidersFeature"]([{
                provide: h,
                useExisting: e
            }]), r["ɵɵInheritDefinitionFeature"]]
        });
        var n = r["ɵɵgetInheritedFactory"](e);
        return e
    }(h)
      , m = function(t) {
        function e(e, n, i) {
            var o = t.call(this) || this;
            return o._componentFactoryResolver = e,
            o._viewContainerRef = n,
            o._isInitialized = !1,
            o.attached = new r.EventEmitter,
            o.attachDomPortal = function(e) {
                if (!o._document)
                    throw Error("Cannot attach DOM portal without _document constructor parameter");
                var n = e.element;
                if (!n.parentNode)
                    throw Error("DOM portal content must be attached to a parent node.");
                var i = o._document.createComment("dom-portal");
                e.setAttachedHost(o),
                n.parentNode.insertBefore(i, n),
                o._getRootNode().appendChild(n),
                t.prototype.setDisposeFn.call(o, (function() {
                    i.parentNode && i.parentNode.replaceChild(n, i)
                }
                ))
            }
            ,
            o._document = i,
            o
        }
        return Object(i.c)(e, t),
        Object.defineProperty(e.prototype, "portal", {
            get: function() {
                return this._attachedPortal
            },
            set: function(e) {
                (!this.hasAttached() || e || this._isInitialized) && (this.hasAttached() && t.prototype.detach.call(this),
                e && t.prototype.attach.call(this, e),
                this._attachedPortal = e)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "attachedRef", {
            get: function() {
                return this._attachedRef
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.ngOnInit = function() {
            this._isInitialized = !0
        }
        ,
        e.prototype.ngOnDestroy = function() {
            t.prototype.dispose.call(this),
            this._attachedPortal = null,
            this._attachedRef = null
        }
        ,
        e.prototype.attachComponentPortal = function(e) {
            e.setAttachedHost(this);
            var n = null != e.viewContainerRef ? e.viewContainerRef : this._viewContainerRef
              , i = (e.componentFactoryResolver || this._componentFactoryResolver).resolveComponentFactory(e.component)
              , r = n.createComponent(i, n.length, e.injector || n.injector);
            return n !== this._viewContainerRef && this._getRootNode().appendChild(r.hostView.rootNodes[0]),
            t.prototype.setDisposeFn.call(this, (function() {
                return r.destroy()
            }
            )),
            this._attachedPortal = e,
            this._attachedRef = r,
            this.attached.emit(r),
            r
        }
        ,
        e.prototype.attachTemplatePortal = function(e) {
            var n = this;
            e.setAttachedHost(this);
            var i = this._viewContainerRef.createEmbeddedView(e.templateRef, e.context);
            return t.prototype.setDisposeFn.call(this, (function() {
                return n._viewContainerRef.clear()
            }
            )),
            this._attachedPortal = e,
            this._attachedRef = i,
            this.attached.emit(i),
            i
        }
        ,
        e.prototype._getRootNode = function() {
            var t = this._viewContainerRef.element.nativeElement;
            return t.nodeType === t.ELEMENT_NODE ? t : t.parentNode
        }
        ,
        e.ctorParameters = function() {
            return [{
                type: r.ComponentFactoryResolver
            }, {
                type: r.ViewContainerRef
            }, {
                type: void 0,
                decorators: [{
                    type: r.Inject,
                    args: [o.DOCUMENT]
                }]
            }]
        }
        ,
        e.propDecorators = {
            attached: [{
                type: r.Output
            }]
        },
        e.ɵfac = function(t) {
            return new (t || e)(r["ɵɵdirectiveInject"](r.ComponentFactoryResolver),r["ɵɵdirectiveInject"](r.ViewContainerRef),r["ɵɵdirectiveInject"](o.DOCUMENT))
        }
        ,
        e.ɵdir = r["ɵɵdefineDirective"]({
            type: e,
            selectors: [["", "cdkPortalOutlet", ""]],
            inputs: {
                portal: ["cdkPortalOutlet", "portal"]
            },
            outputs: {
                attached: "attached"
            },
            exportAs: ["cdkPortalOutlet"],
            features: [r["ɵɵInheritDefinitionFeature"]]
        }),
        e
    }(d)
      , g = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        Object(i.c)(e, t),
        e.ɵfac = function(t) {
            return n(t || e)
        }
        ,
        e.ɵdir = r["ɵɵdefineDirective"]({
            type: e,
            selectors: [["", "cdkPortalHost", ""], ["", "portalHost", ""]],
            inputs: {
                portal: ["cdkPortalHost", "portal"]
            },
            exportAs: ["cdkPortalHost"],
            features: [r["ɵɵProvidersFeature"]([{
                provide: m,
                useExisting: e
            }]), r["ɵɵInheritDefinitionFeature"]]
        });
        var n = r["ɵɵgetInheritedFactory"](e);
        return e
    }(m)
      , v = function() {
        function t() {}
        return t.ɵmod = r["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = r["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            }
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && r["ɵɵsetNgModuleScope"](t, {
            declarations: [h, m, f, g],
            exports: [h, m, f, g]
        }),
        t
    }();
    !function() {
        function t(t, e) {
            this._parentInjector = t,
            this._customTokens = e
        }
        t.prototype.get = function(t, e) {
            var n = this._customTokens.get(t);
            return void 0 !== n ? n : this._parentInjector.get(t, e)
        }
    }()
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(7)
      , r = n(16);
    n(9);
    var o = n(20)
      , a = n(523)
      , s = n(144)
      , c = n(8)
      , l = function() {
        function t(t, e) {
            this.DomainType = t,
            this.RestService = e,
            this.data = [],
            this.dataMap = {},
            this.entityCreated = new r.Signal,
            this.entityRemoved = new r.Signal,
            this.entityChanged = new r.Signal,
            this.injectables = {},
            this.requestCache = {},
            this.initDefer = new s.Deferred,
            this.initialized = this.initDefer.promise
        }
        return t.prototype.findAll = function(t, e) {
            var n = this;
            if (void 0 === t && (t = !1),
            void 0 === e && (e = !0),
            t || !this.cached) {
                var i = !!this.cached;
                this.cached = this._findAll({}, e).then((function(t) {
                    return n.updateData(t),
                    n.data
                }
                )),
                i || this.cached.then((function() {
                    return n.initDefer.resolve()
                }
                )).catch((function(t) {
                    c.handleWarning(t),
                    n.initDefer.reject()
                }
                ))
            }
            return this.cached
        }
        ,
        t.prototype.find = function(t, e) {
            var n = this;
            return void 0 === e && (e = !0),
            this._findAll(t, e).then((function(t) {
                return n.cacheEntities(t)
            }
            ))
        }
        ,
        t.prototype.findOne = function(t, e, n) {
            var i = this;
            return void 0 === e && (e = !1),
            void 0 === n && (n = !0),
            e || !this.dataMap[t] ? this._findOne(t, {}, n).then((function(e) {
                return i.cacheEntities([e]),
                i.dataMap[t]
            }
            )) : Promise.resolve(this.dataMap[t])
        }
        ,
        t.prototype.filter = function(t, e, n) {
            var i = this;
            void 0 === e && (e = !0),
            void 0 === n && (n = !1);
            var r = t.toData()
              , o = JSON.stringify(r)
              , a = this.requestCache[o];
            return a ? Promise.resolve(a) : this._filter(r, e, n).then((function(t) {
                var e = i.cacheEntities(t);
                return i.requestCache[o] = e,
                e
            }
            ))
        }
        ,
        t.prototype.count = function(t, e) {
            void 0 === t && (t = new a.RestFilter),
            void 0 === e && (e = !0);
            var n = t.toData();
            return this._count(n, e)
        }
        ,
        t.prototype.create = function(t) {
            if (!this.DomainType)
                throw new Error("Please override the create method. DomainType has not been provided in the constructor, thus you most likely need to inspect the dto parameter to understand which domain object should be created");
            return new this.DomainType(this.injectables,this.entityChanged)
        }
        ,
        t.prototype.createFromData = function(t) {
            var e = this.create(t);
            return e.fillFromData(t),
            e
        }
        ,
        t.prototype.save = function(t, e) {
            var n = this;
            void 0 === e && (e = !0);
            var r = t instanceof Array ? t : [t]
              , o = i.groupBy(r, (function(t) {
                return void 0 !== t.id ? "update" : "create"
            }
            ))
              , a = [];
            return o.hasOwnProperty("create") && o.create.length > 0 && a.push(this._save(o.create, e)),
            o.hasOwnProperty("update") && o.update.length > 0 && a.push(this._update(o.update, e)),
            Promise.all(a).then((function(t) {
                return n.resetRequestCache(),
                n.cacheEntities(i.flatten(t))
            }
            ))
        }
        ,
        t.prototype.remove = function(t, e) {
            var n = this;
            return void 0 === e && (e = !0),
            this._remove(t, e).then((function() {
                return n.resetRequestCache(),
                n.removeLocal(t)
            }
            ))
        }
        ,
        t.prototype.removeAll = function(t) {
            var e = this;
            return void 0 === t && (t = !0),
            this._removeAll(t).then((function() {
                return e.resetCache()
            }
            ))
        }
        ,
        t.prototype.removeLocal = function() {
            for (var t = [], e = 0; e < arguments.length; e++)
                t[e] = arguments[e];
            for (var n = 0, i = t; n < i.length; n++) {
                var r = i[n];
                this.deleteObjectFromDataMap(r)
            }
            this.synchronizeWithMap();
            for (var o = 0, a = t; o < a.length; o++) {
                r = a[o];
                this.entityRemoved.emit(r, !1)
            }
        }
        ,
        t.prototype.resetCache = function() {
            this.updateData([]),
            this.cached = void 0,
            this.resetRequestCache()
        }
        ,
        t.prototype.resetRequestCache = function() {
            this.requestCache = {}
        }
        ,
        t.prototype.updateData = function(t) {
            for (var e = 0, n = i.differenceBy(this.data, t, "id"); e < n.length; e++) {
                var r = n[e];
                this.deleteObjectFromDataMap(r),
                this.entityRemoved.emit(r, !1)
            }
            return this.cacheEntities(t)
        }
        ,
        t.prototype.cacheEntities = function(t) {
            for (var e = [], n = 0, i = t; n < i.length; n++) {
                var r = i[n];
                this.cacheEntity(r, e)
            }
            return this.synchronizeWithMap(),
            this.emitCreatedEvent(e),
            e
        }
        ,
        t.prototype.cacheEntity = function(t, e) {
            var n = this.dataMap[t.id];
            return n ? (this.entityRemoved.emit(n, !0),
            n.copy(t, !0),
            e.push(n),
            n) : (this.dataMap[t.id] = t,
            e.push(t),
            t)
        }
        ,
        t.prototype.emitCreatedEvent = function(t) {
            if (t.length) {
                this.entityCreated.emit(t);
                for (var e = 0, n = t; e < n.length; e++) {
                    n[e].onCreate()
                }
            }
        }
        ,
        t.prototype.synchronizeWithMap = function() {
            o.replaceArray(this.data, i.values(this.dataMap))
        }
        ,
        t.prototype.deleteObjectFromDataMap = function(t) {
            delete this.dataMap[t.id]
        }
        ,
        t.prototype._findAll = function(t, e) {
            var n = this;
            return void 0 === t && (t = {}),
            void 0 === e && (e = !0),
            this.RestService.getApi(this.path, t, void 0, e).then((function(t) {
                return n.transformResponse(t)
            }
            ))
        }
        ,
        t.prototype._filter = function(t, e, n) {
            var i = this;
            return (n ? this.RestService.postApi(this.path + "/filter", t, void 0, e) : this.RestService.getApi(this.path + "/filter", t, void 0, e)).then((function(t) {
                return i.transformResponse(t)
            }
            ))
        }
        ,
        t.prototype._count = function(t, e) {
            return this.RestService.getApi(this.path + "/count", t, void 0, e).then((function(t) {
                return t.count
            }
            ))
        }
        ,
        t.prototype._findOne = function(t, e, n) {
            var i = this;
            return void 0 === e && (e = {}),
            void 0 === n && (n = !0),
            this.RestService.getApi(this.path + "/" + t, e, void 0, n).then((function(t) {
                return i.createFromData(t)
            }
            ))
        }
        ,
        t.prototype._save = function(t, e) {
            var n = this;
            return this.RestService.postApi(this.path, this.transformRequest(t), void 0, e).then((function(t) {
                return n.transformResponse(t)
            }
            ))
        }
        ,
        t.prototype._update = function(t, e) {
            var n = this;
            return this.RestService.putApi(this.path, this.transformRequest(t), void 0, e).then((function(t) {
                return n.transformResponse(t)
            }
            ))
        }
        ,
        t.prototype._remove = function(t, e) {
            return this.RestService.deleteApi(this.path + "/" + t.id, void 0, e)
        }
        ,
        t.prototype._removeAll = function(t) {
            return this.RestService.deleteApi(this.path, void 0, t)
        }
        ,
        t.prototype.transformResponse = function(t) {
            var e = this;
            return t.map((function(t) {
                return e.createFromData(t)
            }
            ))
        }
        ,
        t.prototype.transformRequest = function(t) {
            return t.map((function(t) {
                return t.toData()
            }
            ))
        }
        ,
        t.prototype.mapToRepositoryEntities = function(t) {
            var e = this;
            return t.map((function(t) {
                return e.dataMap[t.id]
            }
            ))
        }
        ,
        t
    }();
    e.RestRepository = l
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return r
    }
    )),
    n.d(e, "b", (function() {
        return o
    }
    ));
    var i = n(12)
      , r = new i.a((function(t) {
        return t.complete()
    }
    ));
    function o(t) {
        return t ? function(t) {
            return new i.a((function(e) {
                return t.schedule((function() {
                    return e.complete()
                }
                ))
            }
            ))
        }(t) : r
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(187),
    n(6))
      , o = n(0)
      , a = n(0)
      , s = n(187)
      , c = function() {
        function t(t) {
            this.StorageService = t,
            this.TOKEN_HEADER = "X-Authorization",
            this.TOKEN_QUERY_PARAM = "token",
            this.TOKEN_KEY = "JWT",
            this._parsedJWT = void 0,
            this.TOKEN_VALUE_PREFIX_HEADER = "Bearer",
            this.parseJwt()
        }
        return t.prototype.saveJwt = function(t) {
            this.StorageService.set(this.TOKEN_KEY, t),
            this.parseJwt()
        }
        ,
        t.prototype.getJwt = function() {
            return this.StorageService.get(this.TOKEN_KEY)
        }
        ,
        t.prototype.setJwtHeaderOnConfig = function(t) {
            this.getJwt() && this.isNotExpired() && (t[this.TOKEN_HEADER] = this.getJwtHeaderValue())
        }
        ,
        t.prototype.getJwtHeaderValue = function() {
            return this.TOKEN_VALUE_PREFIX_HEADER + " " + this.getJwt()
        }
        ,
        t.prototype.setJwtHeaderOnXHR = function(t) {
            this.getJwt() && this.isNotExpired() && t.setRequestHeader(this.TOKEN_HEADER, this.getJwtHeaderValue())
        }
        ,
        t.prototype.getJwtUrlParamKey = function() {
            return this.TOKEN_HEADER.toLowerCase().replace("-", "_")
        }
        ,
        t.prototype.eraseJwt = function() {
            this.StorageService.remove(this.TOKEN_KEY),
            this._parsedJWT = void 0
        }
        ,
        t.prototype.parseJwt = function() {
            if (this.getJwt()) {
                var t = this.getJwt().split(".")[1].replace("-", "+").replace("_", "/");
                this._parsedJWT = JSON.parse(window.atob(t))
            }
        }
        ,
        Object.defineProperty(t.prototype, "parsedJWT", {
            get: function() {
                return this._parsedJWT
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.isNotExpired = function() {
            return this._parsedJWT && this._parsedJWT.exp > Date.now() / 1e3
        }
        ,
        t.prototype.renewIn = function() {
            if (this._parsedJWT) {
                var t = (this._parsedJWT.exp - this._parsedJWT.iat) / 2;
                return 1e3 * (this._parsedJWT.exp - (Date.now() / 1e3 + t))
            }
        }
        ,
        t.prototype.setJwtOnUrl = function(t) {
            var e = this.getJwt();
            e && (this.isNotExpired() ? t.searchParams.set(this.getJwtUrlParamKey(), e) : this.eraseJwt())
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(a.ɵɵinject(s.StorageService))
        }
        ,
        t.ɵprov = a.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.JWTTokenService = c,
    a.ɵsetClassMetadata(c, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: s.StorageService
        }]
    }
    ), null),
    function(t) {
        t.AUTH = "AUTH"
    }(e.JWTType || (e.JWTType = {})),
    function(t) {
        t.LOCAL = "LOCAL",
        t.OIDC = "OIDC",
        t.PREAUTH = "PREAUTH"
    }(e.UserProvider || (e.UserProvider = {})),
    i.module("IVWebApp").service("JWTTokenService", r.downgradeInjectable(c))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(20)
      , o = (n(50),
    n(14),
    n(15),
    n(25))
      , a = (n(24),
    n(265),
    n(39),
    n(17),
    n(8))
      , s = (n(86),
    n(6))
      , c = n(0)
      , l = n(261)
      , u = n(557)
      , d = n(152)
      , p = n(641)
      , h = n(558)
      , f = n(0)
      , m = n(15)
      , g = n(50)
      , v = n(14)
      , y = n(24)
      , b = n(265)
      , w = n(39)
      , S = n(17)
      , x = n(86)
      , M = function() {
        function t(t, e, n, i, r, s, c, l, u, d, p, h, f, m) {
            var g = this;
            this.$location = t,
            this.IV = e,
            this.PointCloudMenuService = n,
            this.ConfigService = i,
            this.LanguageService = r,
            this.GeoTransformationService = s,
            this.$rootScope = c,
            this.ModeService = l,
            this.gettextCatalog = u,
            this.AboutService = d,
            this.PoiService = p,
            this.ViewService = h,
            this.InstanceInformationService = f,
            this.isHtml5Mode = m,
            this.isUrlChangedByIV = !1,
            this.longitudeParam = this.ConfigService.getAliasByName(o.Configs.CORE_INIT_LON),
            this.latitudeParam = this.ConfigService.getAliasByName(o.Configs.CORE_INIT_LAT),
            this.$rootScope.$on("$locationChangeStart", (function(t, e) {
                return g.handleLocationChangeStartEvent(t, e)
            }
            )),
            this.PointCloudMenuService.configShowPointCloudChanged.connect((function() {
                return g.updateUrl()
            }
            )),
            this.PoiService.onPoiClose.connect((function() {
                return g.removeEntity()
            }
            )),
            this.initialized = this.AboutService.initialized.then((function() {
                return g.InstanceInformationService.getInformation()
            }
            )).then((function(t) {
                var e = t.isCloudInstance ? "cloud" : "indoorviewer"
                  , n = g.extractVersion()
                  , i = n || "current";
                g.documentationBaseUrl = null;//"https://docs.navvis.com/" + e + "/" + i + "/en/html"
            }
            )).catch(a.handleWarning)
        }
        return t.prototype.extractVersion = function() {
            var t = this.AboutService.version.version;
            if (t) {
                var e = t.split(".");
                if (!(e.length < 2))
                    return "v" + e[0] + "." + e[1]
            }
        }
        ,
        t.prototype.handleLocationChangeStartEvent = function(t, e) {
            !this.isUrlChangedByIV && this.userLocationChangeCallback && (this.userLocationChangeCallback(),
            !this.ModeService.isDatasetAlignmentMode() && !this.ModeService.isSiteModelEditorMode() || -1 !== e.indexOf(this.getProtocolBaseUrl()) || window.confirm(this.gettextCatalog.getString("Do you want to navigate away from the current page?")) || t.preventDefault()),
            this.isUrlChangedByIV = !1
        }
        ,
        t.prototype.getDocumentationLink = function(t) {
            return t ? this.documentationBaseUrl + "/" + t : this.documentationBaseUrl
        }
        ,
        t.prototype.updateUrl = function(t, e) {
            if (this.preventChange)
                this.preventChange = !1;
            else {
                var n = this.$location.search()
                  , i = this.PointCloudMenuService.isCloudVisible();
                this.updatePointCloudParam(n, i),
                this.updateLocationParam(n, i, t),
                this.updateDirectionAndFovParam(n),
                this.isUrlChangedByIV = !0,
                e && this.$location.replace(),
                this.$location.search(n),
                r.invalidateAngular()
            }
        }
        ,
        t.prototype.getProtocolBaseUrl = function() {
            var t = this.IV.base_url;
            return t.startsWith("//") ? this.$location.protocol() + ":" + t : t
        }
        ,
        t.prototype.getUrlHost = function() {
            return this.$location.host()
        }
        ,
        t.prototype.setUserLocationChangeCallback = function(t) {
            this.userLocationChangeCallback = t
        }
        ,
        t.prototype.preventNextChange = function() {
            this.preventChange = !0
        }
        ,
        t.prototype.removeEntity = function() {
            var e = this.$location.search();
            if (e.poi || e.sme) {
                t.resetLocationParameter(e);
                var n = this.ViewService.mainView.getImage();
                n && (e.image = n.id),
                this.$location.search(e),
                this.isUrlChangedByIV = !0,
                r.invalidateAngular()
            }
        }
        ,
        t.prototype.removeParamFromUrl = function(t) {
            this.isUrlChangedByIV = !0;
            var e = this.$location.search();
            delete e[t],
            this.$location.search(e)
        }
        ,
        t.prototype.generateSocialNetworkShareUrl = function(t, e) {
            switch (t) {
            case "facebook":
                return "https://www.facebook.com/sharer/sharer.php?u=" + e;
            case "linkedin":
                return "https://www.linkedin.com/shareArticle?url=" + e;
            case "xing":
                return "https://www.xing.com/spi/shares/new?url=" + e;
            case "tumblr":
                return "https://www.tumblr.com/share/link?url=" + e;
            case "pinterest":
                return "https://pinterest.com/pin/create/button/?url=" + e;
            case "twitter":
                return "https://twitter.com/intent/tweet" + ("?url=" + encodeURIComponent(e) + "&dnt=true&hashtags=Fdage,4dkankan&lang=" + this.LanguageService.dataLanguage);
            default:
                return "www.4dkankan.com"
            }
        }
        ,
        t.prototype.resetRouteParameters = function() {
            this.isUrlChangedByIV = !0;
            var t = this.$location.search();
            delete t["route.start"],
            delete t["route.end"],
            this.$location.search(t)
        }
        ,
        t.prototype.generateUrl = function() {
            for (var t = [], e = 0; e < arguments.length; e++)
                t[e] = arguments[e];
            var n = this.removeParamsFromUrl(this.$location.absUrl());
            t.length && (n += this.isHtml5Mode ? "?" : "#?");
            for (var i = 0; i < t.length; i += 2)
                n += t[i] + "=" + t[i + 1],
                i !== t.length - 2 && (n += "&");
            return n
        }
        ,
        t.prototype.generateShareUrl = function() {
            return this.isPanoramaView() ? this.generatePanoramaViewUrl() : this.generatePointCloudViewUrl()
        }
        ,
        t.prototype.removeParamsFromUrl = function(t) {
            return t.split(this.isHtml5Mode ? "?" : "#")[0]
        }
        ,
        t.prototype.addRouteParameters = function(e, n) {
            this.isUrlChangedByIV = !0;
            var i = this.$location.search();
            i["route.start"] = t.convertPoiEntityToUrlReference(e),
            i["route.end"] = t.convertPoiEntityToUrlReference(n),
            this.$location.search(i)
        }
        ,
        t.prototype.getParamFromUrl = function(t) {
            return this.$location.search()[t]
        }
        ,
        t.prototype.generateMeasurementsURL = function(t) {
            var e = this.encodeMeasurementInBase64Url(t)
              , n = new URL(d.getBaseUrl());
            return n.searchParams.append("mpts", e),
            t[0].getPointOfView() && t[0].getPointOfView().imageId && n.searchParams.append("image", t[0].getPointOfView().imageId.toString()),
            new p.MeasurementUrl(t.length,n.toString())
        }
        ,
        t.prototype.encodeMeasurementInBase64Url = function(t) {
            var e = u.MeasurementsBinarySerializer.exportMeasurementsToByteStream(t.map((function(t) {
                return t.toMeasurementBinaryDto()
            }
            )));
            return h.default(e)
        }
        ,
        t.prototype.updateDirectionAndFovParam = function(e) {
            this.ViewService.mainView.cameraController instanceof l.OrbitCameraController || (e[this.longitudeParam] = this.ViewService.mainView.getViewDir().lon.toFixed(t.MAX_VIEW_DIR_PRECISION),
            e[this.latitudeParam] = this.ViewService.mainView.getViewDir().lat.toFixed(t.MAX_VIEW_DIR_PRECISION),
            e.fov = this.ViewService.mainView.getFov().toFixed(1))
        }
        ,
        t.prototype.updateLocationParam = function(e, n, i) {
            var r = this;
            i && i.poi && !n ? (t.resetLocationParameter(e),
            e.poi = i.poi) : i && i.sme && !n ? (t.resetLocationParameter(e),
            e.sme = i.sme) : i && i.image && !n ? (t.resetLocationParameter(e),
            e.image = i.image) : this.ViewService.mainView.getImage() && !n ? (t.resetLocationParameter(e),
            e.image = this.ViewService.mainView.getImage().id.toString()) : this.GeoTransformationService.initialized.then((function() {
                var n = r.GeoTransformationService.vectorToGlobal(r.ViewService.mainView.getCamera().position)
                  , i = n.x.toFixed(t.MAX_LAT_LON_PRECISION)
                  , o = n.y.toFixed(t.MAX_LAT_LON_PRECISION)
                  , a = n.z.toFixed(t.MAX_HEIGHT_PRECISION);
                t.isGeoLocationValid(Number(i), Number(o)) && (t.resetLocationParameter(e),
                e.lon = i,
                e.lat = o,
                e.z = a),
                r.$location.search(e)
            }
            )).catch((function() {}
            ))
        }
        ,
        t.prototype.updatePointCloudParam = function(t, e) {
            e ? t[this.ConfigService.getAliasByName(o.Configs.LAYERS_POINTCLOUD_VISIBLE)] = "true" : delete t.pc
        }
        ,
        t.isGeoLocationValid = function(t, e) {
            return isFinite(t) && isFinite(e)
        }
        ,
        t.resetLocationParameter = function(t) {
            delete t.image,
            delete t.poi,
            delete t.sme,
            delete t.lon,
            delete t.lat,
            delete t.z
        }
        ,
        t.convertPoiEntityToUrlReference = function(t) {
            return t.isLocationAsPoi ? t.globalLocation.toArray().toString() : t.id.toString();
        }
        ,
        t.prototype.generatePointCloudViewUrl = function() {
            var e;
            try {
                e = this.GeoTransformationService.vectorToGlobal(this.ViewService.mainView.getCamera().position)
            } catch (t) {
                return this.removeParamsFromUrl(this.$location.absUrl())
            }
            return this.generateUrl(this.ConfigService.getAliasByName(o.Configs.LAYERS_POINTCLOUD_VISIBLE), "true", "lon", e.x.toFixed(t.MAX_LAT_LON_PRECISION), "lat", e.y.toFixed(t.MAX_LAT_LON_PRECISION), "z", e.z.toFixed(t.MAX_HEIGHT_PRECISION), this.longitudeParam, this.ViewService.mainView.getViewDir().lon.toFixed(t.MAX_VIEW_DIR_PRECISION), this.latitudeParam, this.ViewService.mainView.getViewDir().lat.toFixed(t.MAX_VIEW_DIR_PRECISION), "fov", this.ViewService.mainView.getFov().toFixed(1))
        }
        ,
        t.prototype.generatePanoramaViewUrl = function() {
            return this.generateUrl("image", this.ViewService.mainView.getImage().id.toString(), this.longitudeParam, this.ViewService.mainView.getViewDir().lon.toFixed(t.MAX_VIEW_DIR_PRECISION), this.latitudeParam, this.ViewService.mainView.getViewDir().lat.toFixed(t.MAX_VIEW_DIR_PRECISION), "fov", this.ViewService.mainView.getFov().toFixed(1))
        }
        ,
        t.prototype.isPanoramaView = function() {
            return this.ViewService.mainView.getImage() && !this.PointCloudMenuService.isCloudVisible()
        }
        ,
        t.MAX_LAT_LON_PRECISION = 8,
        t.MAX_HEIGHT_PRECISION = 3,
        t.MAX_VIEW_DIR_PRECISION = 2,
        t.ɵfac = function(e) {
            return new (e || t)(f.ɵɵinject("$location"),f.ɵɵinject("IV"),f.ɵɵinject("PointCloudMenuService"),f.ɵɵinject(m.ConfigService),f.ɵɵinject(g.LanguageService),f.ɵɵinject(v.GeoTransformationService),f.ɵɵinject("$rootScope"),f.ɵɵinject(y.ModeService),f.ɵɵinject("gettextCatalog"),f.ɵɵinject(b.AboutService),f.ɵɵinject(w.PoiService),f.ɵɵinject(S.ViewService),f.ɵɵinject(x.InstanceInformationService),f.ɵɵinject("isHtml5Mode"))
        }
        ,
        t.ɵprov = f.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.UrlService = M,
    f.ɵsetClassMetadata(M, [{
        type: c.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: void 0,
            decorators: [{
                type: c.Inject,
                args: ["$location"]
            }]
        }, {
            type: void 0,
            decorators: [{
                type: c.Inject,
                args: ["IV"]
            }]
        }, {
            type: void 0,
            decorators: [{
                type: c.Inject,
                args: ["PointCloudMenuService"]
            }]
        }, {
            type: m.ConfigService
        }, {
            type: g.LanguageService
        }, {
            type: v.GeoTransformationService
        }, {
            type: void 0,
            decorators: [{
                type: c.Inject,
                args: ["$rootScope"]
            }]
        }, {
            type: y.ModeService
        }, {
            type: void 0,
            decorators: [{
                type: c.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: b.AboutService
        }, {
            type: w.PoiService
        }, {
            type: S.ViewService
        }, {
            type: x.InstanceInformationService
        }, {
            type: void 0,
            decorators: [{
                type: c.Inject,
                args: ["isHtml5Mode"]
            }]
        }]
    }
    ), null),
    i.module("IVWebApp").service("UrlService", s.downgradeInjectable(M))
}
, function(t, e, n) {
    var i = n(172)
      , r = n(234)
      , o = n(53)
      , a = n(44)
      , s = n(235)
      , c = [].push
      , l = function(t) {
        var e = 1 == t
          , n = 2 == t
          , l = 3 == t
          , u = 4 == t
          , d = 6 == t
          , p = 5 == t || d;
        return function(h, f, m, g) {
            for (var v, y, b = o(h), w = r(b), S = i(f, m, 3), x = a(w.length), M = 0, E = g || s, C = e ? E(h, x) : n ? E(h, 0) : void 0; x > M; M++)
                if ((p || M in w) && (y = S(v = w[M], M, b),
                t))
                    if (e)
                        C[M] = y;
                    else if (y)
                        switch (t) {
                        case 3:
                            return !0;
                        case 5:
                            return v;
                        case 6:
                            return M;
                        case 2:
                            c.call(C, v)
                        }
                    else if (u)
                        return !1;
            return d ? -1 : l || u ? u : C
        }
    };
    t.exports = {
        forEach: l(0),
        map: l(1),
        filter: l(2),
        some: l(3),
        every: l(4),
        find: l(5),
        findIndex: l(6)
    }
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(70)
      , s = (n(9),
    n(1060))
      , c = (n(27),
    n(6))
      , l = n(0)
      , u = n(0)
      , d = n(9)
      , p = n(27)
      , h = function(t) {
        function e(e, n) {
            var i = t.call(this, s.BundleEntity, e) || this;
            return i.RestService = e,
            i.UserService = n,
            i.path = "bundles",
            i
        }
        return r(e, t),
        e.prototype.create = function() {
            var e = t.prototype.create.call(this);
            return e.fillCurrentUsersGroups(this.UserService),
            e
        }
        ,
        e.prototype.findCachedBySerial = function(t) {
            return this.data.find((function(e) {
                return e.serial === t
            }
            ))
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(u.ɵɵinject(d.RestService),u.ɵɵinject(p.UserService))
        }
        ,
        e.ɵprov = u.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(a.RestRepository);
    e.BundleRepository = h,
    u.ɵsetClassMetadata(h, [{
        type: l.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: d.RestService
        }, {
            type: p.UserService
        }]
    }
    ), null),
    o.module("IVWebApp").service("BundleRepository", c.downgradeInjectable(h))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return a
    }
    ));
    var i = n(12)
      , r = n(209)
      , o = n(334);
    function a(t, e) {
        return e ? Object(o.a)(t, e) : t instanceof i.a ? t : new i.a(Object(r.a)(t))
    }
}
, function(t, e, n) {
    "use strict";
    function i(t) {
        return t && "function" == typeof t.schedule
    }
    n.d(e, "a", (function() {
        return i
    }
    ))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return a
    }
    ));
    var i = n(176)
      , r = n(209)
      , o = n(12);
    function a(t, e, n, a, s) {
        if (void 0 === s && (s = new i.a(t,n,a)),
        !s.closed)
            return e instanceof o.a ? e.subscribe(s) : Object(r.a)(e)(s)
    }
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return r
    }
    ));
    var i = n(1)
      , r = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return i.c(e, t),
        e.prototype.notifyNext = function(t, e, n, i, r) {
            this.destination.next(e)
        }
        ,
        e.prototype.notifyError = function(t, e) {
            this.destination.error(t)
        }
        ,
        e.prototype.notifyComplete = function(t) {
            this.destination.complete()
        }
        ,
        e
    }(n(26).a)
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(395)
      , a = function() {};
    e.SceneLayerFactory = a;
    var s = function(t) {
        function e(e, n, i) {
            var r = t.call(this, e, n, i) || this;
            return r.view = e,
            r
        }
        return r(e, t),
        e.prototype.setViewportEventMask = function(t) {
            void 0 !== this.params.viewportEventMask && (this.params.viewportEventMask = t)
        }
        ,
        e
    }(o.AbstractSceneLayer);
    e.SceneLayer = s
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t[t.USER = 0] = "USER",
        t[t.DATASETS = 1] = "DATASETS",
        t[t.VIEW = 2] = "VIEW",
        t[t.POI_TYPES = 3] = "POI_TYPES",
        t[t.EDITOR_MODES = 4] = "EDITOR_MODES",
        t[t.EDITOR_MODES_EXPLORE = 5] = "EDITOR_MODES_EXPLORE",
        t[t.EDITOR_MODES_GEO_REG = 6] = "EDITOR_MODES_GEO_REG",
        t[t.EDITOR_MODES_ALIGNMENT = 7] = "EDITOR_MODES_ALIGNMENT",
        t[t.EDITOR_MODES_SITE_MODEL = 8] = "EDITOR_MODES_SITE_MODEL",
        t[t.EDITOR_MODES_NAV_GRAPH = 9] = "EDITOR_MODES_NAV_GRAPH",
        t[t.EDITOR_MODES_VECTOR_MAP = 10] = "EDITOR_MODES_VECTOR_MAP",
        t[t.EDITOR_MODES_MEASUREMENTS = 11] = "EDITOR_MODES_MEASUREMENTS",
        t[t.EDITOR_MODES_DOWNLOAD_POINT_CLOUD = 12] = "EDITOR_MODES_DOWNLOAD_POINT_CLOUD",
        t[t.MEASUREMENTS = 13] = "MEASUREMENTS",
        t[t.SHARE = 14] = "SHARE",
        t[t.CLOUD_PROCESSING = 15] = "CLOUD_PROCESSING",
        t[t.CLOUD_PROCESSING_UPLOADED_DATA = 16] = "CLOUD_PROCESSING_UPLOADED_DATA",
        t[t.CLOUD_PROCESSING_PROCESSING_TASKS = 17] = "CLOUD_PROCESSING_PROCESSING_TASKS",
        t[t.CLOUD_PROCESSING_PROCESSED_DATA = 18] = "CLOUD_PROCESSING_PROCESSED_DATA",
        t[t.SETTINGS = 19] = "SETTINGS",
        t[t.SETTINGS_CONFIG = 20] = "SETTINGS_CONFIG",
        t[t.SETTINGS_SUBSCRIPTION = 21] = "SETTINGS_SUBSCRIPTION",
        t[t.SETTINGS_AUTHENTICATION = 22] = "SETTINGS_AUTHENTICATION",
        t[t.SETTINGS_USERS = 23] = "SETTINGS_USERS",
        t[t.SETTINGS_GROUPS = 24] = "SETTINGS_GROUPS",
        t[t.SETTINGS_AUDIT = 25] = "SETTINGS_AUDIT",
        t[t.SETTINGS_DATASET_MANAGEMENT = 26] = "SETTINGS_DATASET_MANAGEMENT",
        t[t.SETTINGS_HIDDEN_IMAGES = 27] = "SETTINGS_HIDDEN_IMAGES",
        t[t.SETTINGS_THEME = 28] = "SETTINGS_THEME",
        t[t.DEVELOPER = 29] = "DEVELOPER"
    }(e.SidebarMenuItemsKey || (e.SidebarMenuItemsKey = {}))
}
, function(t, e, n) {
    var i = n(43)
      , r = n(288)
      , o = n(173)
      , a = n(109)
      , s = n(134)
      , c = n(58)
      , l = n(459)
      , u = Object.getOwnPropertyDescriptor;
    e.f = i ? u : function(t, e) {
        if (t = a(t),
        e = s(e, !0),
        l)
            try {
                return u(t, e)
            } catch (t) {}
        if (c(t, e))
            return o(!r.f.call(t, e), t[e])
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(22);
    n(22);
    var r = n(157)
      , o = n(21)
      , a = n(4)
      , s = (n(39),
    n(377))
      , c = (n(14),
    n(15),
    n(38),
    n(25))
      , l = n(55)
      , u = n(16)
      , d = n(316)
      , p = n(8)
      , h = n(6)
      , f = n(0)
      , m = (n(17),
    n(261))
      , g = n(0)
      , v = n(22)
      , y = n(39)
      , b = n(21)
      , w = n(14)
      , S = n(38)
      , x = n(15)
      , M = n(17)
      , E = function() {
        function t(t, e, n, i, r, o, a, s) {
            this.SiteModelRepository = t,
            this.IV = e,
            this.PoiService = n,
            this.TrackingService = i,
            this.GeoTransformationService = r,
            this.SidebarMenuService = o,
            this.ConfigService = a,
            this.ViewService = s,
            this.onSelect = new u.Signal
        }
        return t.prototype.selectModel = function(t, e) {
            t && (this.selectedModel = t,
            this.PoiService.isRoutePickingPhase() ? this.routeToEntity(t) : this.ConfigService.getBoolean(c.Configs.UI_POI_PANEL_VISIBLE, !0) && this.SidebarMenuService.closeMenu(),
            e && this.IV.moveToSiteModelEntity(t, !1).catch(p.handleWarning),
            o.TrackingService.trackSiteModelDetailsViewed(),
            this.onSelect.emit(t, !1, !1))
        }
        ,
        t.prototype.selectPreviousModel = function() {
            this.selectModel(this.previouslySelectedModel)
        }
        ,
        t.prototype.resetPreviouslySelectedModel = function() {
            this.previouslySelectedModel = void 0
        }
        ,
        t.prototype.deselectModel = function() {
            this.selectedModel = void 0
        }
        ,
        t.prototype.routeToEntity = function(t, e) {
            void 0 === e && (e = d.RoutePoint.START),
            this.PoiService.enterRouteMode();
            var n = this.PoiService.getLocationAsPoi(t.globalCenter, !0);
            n.title = t.label,
            n.isSiteModelAsPoi = !0,
            this.TrackingService.trackRouteInitiation(n),
            e === d.RoutePoint.START ? this.PoiService.routeStart = n : this.PoiService.routeEnd = n,
            this.deselectModel()
        }
        ,
        t.prototype.getEntityOfType = function(t, e) {
            var n = this.SiteModelRepository.dataMap[t];
            if (n) {
                if (n.type === e)
                    return n;
                var i = n.parent ? n.parent.id : void 0;
                return this.getEntityOfType(i, e)
            }
        }
        ,
        t.prototype.getCurrentMainViewFloor = function() {
            var t = this.ViewService.mainView.getImage()
              , e = this.ViewService.mainView
              , n = e.cameraController instanceof m.OrbitCameraController ? e.cameraController.target : e.getCamera().position;
            if (t && t.siteModelEntity && t.isAtPosition(n)) {
                var i = t.siteModelEntity.getEntityOfType(l.SiteModelType.FLOOR);
                if (i)
                    return Promise.resolve(i)
            }
            return this.getCurrentFloorByPosition(n)
        }
        ,
        t.prototype.getCurrentFloorByPosition = function(e) {
            var n = this;
            return this.SiteModelRepository.findWithin(e, l.SiteModelType.FLOOR).then((function(i) {
                return i.length > 0 ? i[0] : n.SiteModelRepository.findClosestByTypeAndDistance2D(l.SiteModelType.FLOOR, e, t.MAX_FLOOR_DIST)
            }
            ))
        }
        ,
        t.prototype.getBuildingsInView = function(t) {
            var e = new a.Vector2(t.position.x,t.position.y)
              , n = new a.Vector2(t.left,t.bottom).add(e)
              , i = new a.Vector2(t.right,t.bottom).add(e)
              , r = new a.Vector2(t.left,t.top).add(e)
              , o = new a.Vector2(t.right,t.top).add(e)
              , c = new s.LocalPolygon(this.GeoTransformationService);
            return c.boundary = [n, i, o, r, n],
            this.SiteModelRepository.findWithinPolygon(c, l.SiteModelType.BUILDING)
        }
        ,
        t.prototype.getFloorsInView = function(t) {
            return this.getBuildingsInView(t).then((function(t) {
                for (var e = [], n = 0, i = t; n < i.length; n++) {
                    i[n].getChildrenOfType(l.SiteModelType.FLOOR, e)
                }
                return e
            }
            ))
        }
        ,
        t.prototype.getFloorsOfContainingBuilding = function(t, e) {
            void 0 === e && (e = []);
            var n = t.getEntityOfType(l.SiteModelType.BUILDING);
            return n && n.getChildrenOfType(l.SiteModelType.FLOOR, e),
            e
        }
        ,
        t.prototype.pointInEntity = function(t, e) {
            return r.pointInPolygon(t, e.getPath())
        }
        ,
        t.prototype.getSiteModelData = function(t) {
            var e = {};
            if (t) {
                var n = this.getEntityOfType(t.id, l.SiteModelType.BUILDING);
                n && (e.building = n);
                var i = this.getEntityOfType(t.id, l.SiteModelType.FLOOR);
                i && (e.floor = i);
                var r = this.getEntityOfType(t.id, l.SiteModelType.ROOM);
                r && (e.room = r);
                var o = this.getEntityOfType(t.id, l.SiteModelType.CUSTOM);
                o && (e.custom = o)
            }
            return e
        }
        ,
        t.MAX_FLOOR_DIST = 50,
        t.ɵfac = function(e) {
            return new (e || t)(g.ɵɵinject(v.SiteModelRepository),g.ɵɵinject("IV"),g.ɵɵinject(y.PoiService),g.ɵɵinject(b.TrackingService),g.ɵɵinject(w.GeoTransformationService),g.ɵɵinject(S.SidebarMenuService),g.ɵɵinject(x.ConfigService),g.ɵɵinject(M.ViewService))
        }
        ,
        t.ɵprov = g.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.SiteModelService = E,
    g.ɵsetClassMetadata(E, [{
        type: f.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: v.SiteModelRepository
        }, {
            type: void 0,
            decorators: [{
                type: f.Inject,
                args: ["IV"]
            }]
        }, {
            type: y.PoiService
        }, {
            type: b.TrackingService
        }, {
            type: w.GeoTransformationService
        }, {
            type: S.SidebarMenuService
        }, {
            type: x.ConfigService
        }, {
            type: M.ViewService
        }]
    }
    ), null),
    i.module("IVWebApp").service("SiteModelService", h.downgradeInjectable(E))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return r
    }
    ));
    var i = !1
      , r = {
        Promise: void 0,
        set useDeprecatedSynchronousErrorHandling(t) {
            t && (new Error).stack;
            i = t
        },
        get useDeprecatedSynchronousErrorHandling() {
            return i
        }
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i, r, o = n(1066), a = n(1080), s = n(540), c = n(1083), l = n(542), u = n(1086), d = n(1088), p = n(543);
    !function(t) {
        t.AREA_FREE_MEASUREMENT = "AREA_FREE_MEASUREMENT",
        t.AREA_HORIZONTAL_MEASUREMENT = "AREA_HORIZONTAL_MEASUREMENT",
        t.AREA_VERTICAL_MEASUREMENT = "AREA_VERTICAL_MEASUREMENT",
        t.RECTANGLE_HORIZONTAL_MEASUREMENT = "RECTANGLE_HORIZONTAL_MEASUREMENT",
        t.RECTANGLE_VERTICAL_MEASUREMENT = "RECTANGLE_VERTICAL_MEASUREMENT",
        t.DISTANCE_FREE_MEASUREMENT = "DISTANCE_FREE_MEASUREMENT",
        t.DISTANCE_HORIZONTAL_MEASUREMENT = "DISTANCE_HORIZONTAL_MEASUREMENT",
        t.DISTANCE_VERTICAL_MEASUREMENT = "DISTANCE_VERTICAL_MEASUREMENT",
        t.MAGNIFIER = "MAGNIFIER"
    }(i = e.Tool || (e.Tool = {})),
    function(t) {
        t.MEASUREMENT_TOOL_SELECTION = "MEASUREMENT_TOOL_SELECTION",
        t.KEYBOARD_SHORTCUT = "KEYBOARD_SHORTCUT"
    }(e.EventSource || (e.EventSource = {})),
    function(t) {
        t[t.DISTANCE = 1] = "DISTANCE",
        t[t.AREA = 2] = "AREA"
    }(r = e.ToolType || (e.ToolType = {}));
    var h = function() {
        function t(t, e, n, i, r, o) {
            this.id = t,
            this.tool = e,
            this.type = n,
            this.vertical = i,
            this.initializer = r,
            this.iconSrc = o
        }
        return t.of = function(e) {
            return t.SPECS_MAP.get(e)
        }
        ,
        t.getForId = function(e) {
            return t.SPECS_ID_MAP.get(e)
        }
        ,
        t.SPECS = [new t(0,i.AREA_FREE_MEASUREMENT,r.AREA,!1,o.FreeAreaMeasurementObject3D,n(1091)), new t(1,i.AREA_HORIZONTAL_MEASUREMENT,r.AREA,!1,a.HorizontalAreaMeasurementObject3D,n(1092)), new t(2,i.AREA_VERTICAL_MEASUREMENT,r.AREA,!0,s.VerticalAreaMeasurementObject3D,n(1093)), new t(3,i.RECTANGLE_HORIZONTAL_MEASUREMENT,r.AREA,!1,c.HorizontalRectangleMeasurementObject3D,n(1094)), new t(4,i.RECTANGLE_VERTICAL_MEASUREMENT,r.AREA,!0,l.VerticalRectangleMeasurementObject3D,n(1095)), new t(5,i.DISTANCE_FREE_MEASUREMENT,r.DISTANCE,!1,u.FreeDistanceMeasurementObject3D,n(1096)), new t(6,i.DISTANCE_HORIZONTAL_MEASUREMENT,r.DISTANCE,!1,d.HorizontalDistanceMeasurementObject3D,n(1097)), new t(7,i.DISTANCE_VERTICAL_MEASUREMENT,r.DISTANCE,!0,p.VerticalDistanceMeasurementObject3D,n(1098))],
        t.SPECS_MAP = t.SPECS.reduce((function(t, e) {
            return t.set(e.tool, e)
        }
        ), new Map),
        t.SPECS_ID_MAP = t.SPECS.reduce((function(t, e) {
            return t.set(e.id, e)
        }
        ), new Map),
        t
    }();
    e.ToolSpec = h;
    var f = function() {
        function t() {
            for (var t = this, e = [], n = 0; n < arguments.length; n++)
                e[n] = arguments[n];
            this.tools = new Map,
            this._first = e[0],
            e.forEach((function(n, i) {
                return t.tools.set(n, e[i + 1] || e[0])
            }
            ))
        }
        return t.prototype.next = function(t) {
            var e = this.tools.get(t);
            return e || this.first
        }
        ,
        Object.defineProperty(t.prototype, "first", {
            get: function() {
                return this._first
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.contains = function(t) {
            return !!this.tools.get(t)
        }
        ,
        t.Distance = new t(i.DISTANCE_FREE_MEASUREMENT,i.DISTANCE_HORIZONTAL_MEASUREMENT,i.DISTANCE_VERTICAL_MEASUREMENT),
        t.Area = new t(i.AREA_FREE_MEASUREMENT,i.AREA_HORIZONTAL_MEASUREMENT,i.AREA_VERTICAL_MEASUREMENT),
        t.Rectangle = new t(i.RECTANGLE_HORIZONTAL_MEASUREMENT,i.RECTANGLE_VERTICAL_MEASUREMENT),
        t
    }();
    e.ToolGroup = f
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(1035)
      , o = (n(9),
    n(251),
    n(25))
      , a = n(6)
      , s = n(0)
      , c = n(0)
      , l = n(9)
      , u = n(251)
      , d = function() {
        function t(t, e) {
            var n = this;
            this.RestService = t,
            e.entityChanged.connect((function(t) {
                return n.invalidateOnConfigChanged(t)
            }
            )),
            e.entityCreated.connect((function(t) {
                return n.invalidateOnConfigChanged.apply(n, t)
            }
            )),
            e.entityRemoved.connect((function(t) {
                return n.invalidateOnConfigChanged(t)
            }
            ))
        }
        return t.prototype.getInformation = function() {
            return this.fetch()
        }
        ,
        t.prototype.resetCache = function() {
            this.cachedInstanceInformationEntity = void 0
        }
        ,
        t.prototype.fetch = function() {
            return this.cachedInstanceInformationEntity || (this.cachedInstanceInformationEntity = this.RestService.getApi("information", {}).then((function(t) {
                var e = new r.InstanceInformationEntity;
                return e.fillFromData(t),
                e
            }
            ))),
            this.cachedInstanceInformationEntity
        }
        ,
        t.prototype.invalidateOnConfigChanged = function() {
            for (var t = [], e = 0; e < arguments.length; e++)
                t[e] = arguments[e];
            for (var n = 0, i = t; n < i.length; n++) {
                var r = i[n];
                r.name === o.Configs.PRIVATE_MODE_ENABLED && this.resetCache()
            }
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(c.ɵɵinject(l.RestService),c.ɵɵinject(u.ConfigRepository))
        }
        ,
        t.ɵprov = c.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.InstanceInformationService = d,
    c.ɵsetClassMetadata(d, [{
        type: s.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: l.RestService
        }, {
            type: u.ConfigRepository
        }]
    }
    ), null),
    i.module("IVWebApp").service("InstanceInformationService", a.downgradeInjectable(d))
}
, function(t, e) {
    t.exports = function(t) {
        if (null == t)
            throw TypeError("Can't call method on " + t);
        return t
    }
}
, function(t, e, n) {
    var i = n(43)
      , r = n(48)
      , o = n(173);
    t.exports = i ? function(t, e, n) {
        return r.f(t, e, o(1, n))
    }
    : function(t, e, n) {
        return t[e] = n,
        t
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(20)
      , r = function() {
        function t() {
            this.isInProgress = !1
        }
        return t.prototype.wrap = function(t) {
            return this.handleWrap(t)
        }
        ,
        t.prototype.wrapPromises = function(t) {
            return this.handleWrap(Promise.all(t))
        }
        ,
        t.prototype.handleWrap = function(t) {
            var e = this;
            return this.isInProgress = !0,
            t.then((function(t) {
                return e.isInProgress = !1,
                i.invalidateAngular(),
                t
            }
            )).catch((function(t) {
                return e.isInProgress = !1,
                i.invalidateAngular(),
                Promise.reject(t)
            }
            ))
        }
        ,
        t
    }();
    e.PromiseProgressWrapper = r
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = (n(9),
    n(1132))
      , s = (n(22),
    n(310))
      , c = n(135)
      , l = (n(14),
    n(136))
      , u = n(6)
      , d = n(0)
      , p = n(0)
      , h = n(9)
      , f = n(14)
      , m = n(22)
      , g = function(t) {
        function e(e, n, i) {
            var r = t.call(this, a.ImageEntity, e, n, i) || this;
            return r.path = "images",
            c.EntityRelationMapper.manyToOne(r, "siteModelEntity", "siteModelEntityId", i),
            r
        }
        return r(e, t),
        e.prototype.createFilterBuilder = function() {
            return new l.ImageRestFilterBuilder
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(p.ɵɵinject(h.RestService),p.ɵɵinject(f.GeoTransformationService),p.ɵɵinject(m.SiteModelRepository))
        }
        ,
        e.ɵprov = p.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(s.SiteModelBoundRestRepository);
    e.ImageRepository = g,
    p.ɵsetClassMetadata(g, [{
        type: d.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: h.RestService
        }, {
            type: f.GeoTransformationService
        }, {
            type: m.SiteModelRepository
        }]
    }
    ), null),
    o.module("IVWebApp").service("ImageRepository", u.downgradeInjectable(g))
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , r = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(20)
      , a = n(2)
      , s = (n(139),
    n(14),
    n(4))
      , c = n(1197)
      , l = n(1198)
      , u = n(16)
      , d = n(6)
      , p = n(0)
      , h = (n(17),
    n(0))
      , f = n(14)
      , m = n(139)
      , g = n(17)
      , v = function() {
        function t(t, e, n) {
            this.GeoTransformationService = t,
            this.RaycastService = e,
            this.ViewService = n,
            this.isCursorSet = !1,
            this.cursorChanged = new u.Signal,
            this.cursorStyleChanged = new u.Signal
        }
        return t.prototype.updateCursor = function(t) {
            this.cursorPos = t.position.clone(),
            this.cursorNormal = t.normal.clone(),
            t.normal.length() || (t.normal = (new s.Vector3).subVectors(this.ViewService.mainView.getCamera().position, t.position).normalize()),
            this.cursorOri = new s.Quaternion,
            this.cursorOri.setFromUnitVectors(new s.Vector3(1,0,0), t.normal),
            this.cursorPosGlobal = this.GeoTransformationService.vectorToGlobal(t.position),
            this.cursorOriGlobal = this.cursorOri,
            this.cursorPosDataset = t.datasetPosition ? t.datasetPosition.clone() : void 0,
            this.cursorNormalDataset = t.datasetNormal ? t.datasetNormal.clone() : void 0,
            t.dataset && !t.datasetNormal.length() && (t.datasetNormal = t.dataset.local2datasetdir(t.normal)),
            this.cursorOriDataset = new s.Quaternion,
            t.datasetNormal && (this.cursorOriDataset.setFromUnitVectors(new s.Vector3(1,0,0), t.datasetNormal),
            this.cursorDataset = t.dataset),
            this.isCursorSet = !0,
            o.invalidateAngular(),
            this.cursorChanged.emit()
        }
        ,
        t.prototype.getCursorData = function() {
            var t;
            return this.isCursorSet && (t = new c.CursorData(new l.Point(this.cursorPosGlobal),this.cursorPos.clone(),this.cursorOri.clone(),this.cursorOriDataset ? this.cursorOriDataset.clone() : void 0,this.cursorPosDataset ? this.cursorPosDataset.clone() : void 0,this.cursorDataset ? this.cursorDataset.id : void 0)),
            t
        }
        ,
        t.prototype.copyCursorPose = function(t) {
            t.globalLocation = this.cursorPosGlobal.clone(),
            t.location = this.cursorPos.clone(),
            t.orientation = this.cursorOri.clone(),
            t.datasetLocation = this.cursorPosDataset.clone(),
            t.datasetOrientation = this.cursorOriDataset.clone(),
            t.dataset = this.cursorDataset
        }
        ,
        t.prototype.setCursorStyle = function(t) {
            this.cursorStyle = t,
            this.cursorStyleChanged.emit()
        }
        ,
        t.prototype.isPlaneLocked = function() {
            return void 0 !== this.planeLock
        }
        ,
        t.prototype.getRaycastedCoordinates = function(t, e, n) {
            return i(this, void 0, void 0, (function() {
                var i;
                return r(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        return this.isPlaneLocked() ? (i = {
                            position: e,
                            normal: this.planeLock.normal
                        },
                        [3, 3]) : [3, 1];
                    case 1:
                        return [4, this.RaycastService.getCoordinates(t, e.clone(), !0, n)];
                    case 2:
                        i = r.sent(),
                        r.label = 3;
                    case 3:
                        return i && this.updateCursor(i),
                        [2, i]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.unprojectScreenCoordinateWithPlane = function(t, e) {
            var n = t.unprojectScreenCoordinates(e.x, e.y);
            if (!this.isPlaneLocked())
                return n;
            var i = t.getViewport(e.x, e.y)
              , r = new s.Vector3;
            return i.camera instanceof s.OrthographicCamera ? i.camera.getWorldDirection(r).negate() : r.copy(i.camera.position.clone().sub(n)),
            new s.Ray(n.clone(),r).intersectPlane(this.planeLock, n)
        }
        ,
        t.prototype.getCoordinatesForScreenPosition = function(t, e) {
            return i(this, void 0, void 0, (function() {
                var n, i;
                return r(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        return n = this.unprojectScreenCoordinateWithPlane(t, e),
                        [4, this.getRaycastedCoordinates(t, n.clone(), e)];
                    case 1:
                        return [2, (i = r.sent()) ? i.position : this.cursorPos]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(h.ɵɵinject(f.GeoTransformationService),h.ɵɵinject(m.RaycastService),h.ɵɵinject(g.ViewService))
        }
        ,
        t.ɵprov = h.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.CursorService = v,
    h.ɵsetClassMetadata(v, [{
        type: p.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: f.GeoTransformationService
        }, {
            type: m.RaycastService
        }, {
            type: g.ViewService
        }]
    }
    ), null),
    a.module("IVWebApp").service("CursorService", d.downgradeInjectable(v))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.ROUTING = "routing",
        t.ANALYST = "analyst",
        t.JAVASCRIPT_API = "api",
        t.USER_MANAGEMENT = "user_management"
    }(e.LicenseFeatureType || (e.LicenseFeatureType = {}))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return a
    }
    ));
    var i = n(77)
      , r = n(149)
      , o = n(226);
    function a() {
        for (var t = [], e = 0; e < arguments.length; e++)
            t[e] = arguments[e];
        var n = t[t.length - 1];
        return Object(i.a)(n) ? (t.pop(),
        Object(o.a)(t, n)) : Object(r.a)(t)
    }
}
, function(t, e, n) {
    t.exports = n.p + "0d60cd9825c0ac526a93c9180d38ad65.tail-spin.svg"
}
, function(t, e, n) {
    "use strict";
    n.r(e),
    n.d(e, "ANIMATION_MODULE_TYPE", (function() {
        return w
    }
    )),
    n.d(e, "BrowserAnimationsModule", (function() {
        return E
    }
    )),
    n.d(e, "NoopAnimationsModule", (function() {
        return C
    }
    )),
    n.d(e, "ɵAnimationRenderer", (function() {
        return m
    }
    )),
    n.d(e, "ɵAnimationRendererFactory", (function() {
        return h
    }
    )),
    n.d(e, "ɵBrowserAnimationBuilder", (function() {
        return l
    }
    )),
    n.d(e, "ɵBrowserAnimationFactory", (function() {
        return u
    }
    )),
    n.d(e, "ɵInjectableAnimationEngine", (function() {
        return g
    }
    )),
    n.d(e, "ɵangular_packages_platform_browser_animations_animations_a", (function() {
        return v
    }
    )),
    n.d(e, "ɵangular_packages_platform_browser_animations_animations_b", (function() {
        return y
    }
    )),
    n.d(e, "ɵangular_packages_platform_browser_animations_animations_c", (function() {
        return b
    }
    )),
    n.d(e, "ɵangular_packages_platform_browser_animations_animations_d", (function() {
        return x
    }
    )),
    n.d(e, "ɵangular_packages_platform_browser_animations_animations_e", (function() {
        return M
    }
    )),
    n.d(e, "ɵangular_packages_platform_browser_animations_animations_f", (function() {
        return f
    }
    ));
    var i = n(1)
      , r = n(0)
      , o = n(125)
      , a = n(30)
      , s = n(59)
      , c = n(3)
      , l = function(t) {
        function e(e, n) {
            var i = t.call(this) || this;
            i._nextAnimationId = 0;
            var o = {
                id: "0",
                encapsulation: r.ViewEncapsulation.None,
                styles: [],
                data: {
                    animation: []
                }
            };
            return i._renderer = e.createRenderer(n.body, o),
            i
        }
        return Object(i.c)(e, t),
        e.prototype.build = function(t) {
            var e = this._nextAnimationId.toString();
            this._nextAnimationId++;
            var n = Array.isArray(t) ? Object(a.sequence)(t) : t;
            return p(this._renderer, null, e, "register", [n]),
            new u(e,this._renderer)
        }
        ,
        (e = Object(i.b)([Object(i.e)(1, Object(r.Inject)(c.DOCUMENT)), Object(i.d)("design:paramtypes", [r.RendererFactory2, Object])], e)).ɵfac = function(t) {
            return new (t || e)(r["ɵɵinject"](r.RendererFactory2),r["ɵɵinject"](c.DOCUMENT))
        }
        ,
        e.ɵprov = r["ɵɵdefineInjectable"]({
            token: e,
            factory: function(t) {
                return e.ɵfac(t)
            }
        }),
        e
    }(a.AnimationBuilder)
      , u = function(t) {
        function e(e, n) {
            var i = t.call(this) || this;
            return i._id = e,
            i._renderer = n,
            i
        }
        return Object(i.c)(e, t),
        e.prototype.create = function(t, e) {
            return new d(this._id,t,e || {},this._renderer)
        }
        ,
        e
    }(a.AnimationFactory)
      , d = function() {
        function t(t, e, n, i) {
            this.id = t,
            this.element = e,
            this._renderer = i,
            this.parentPlayer = null,
            this._started = !1,
            this.totalTime = 0,
            this._command("create", n)
        }
        return t.prototype._listen = function(t, e) {
            return this._renderer.listen(this.element, "@@" + this.id + ":" + t, e)
        }
        ,
        t.prototype._command = function(t) {
            for (var e = [], n = 1; n < arguments.length; n++)
                e[n - 1] = arguments[n];
            return p(this._renderer, this.element, this.id, t, e)
        }
        ,
        t.prototype.onDone = function(t) {
            this._listen("done", t)
        }
        ,
        t.prototype.onStart = function(t) {
            this._listen("start", t)
        }
        ,
        t.prototype.onDestroy = function(t) {
            this._listen("destroy", t)
        }
        ,
        t.prototype.init = function() {
            this._command("init")
        }
        ,
        t.prototype.hasStarted = function() {
            return this._started
        }
        ,
        t.prototype.play = function() {
            this._command("play"),
            this._started = !0
        }
        ,
        t.prototype.pause = function() {
            this._command("pause")
        }
        ,
        t.prototype.restart = function() {
            this._command("restart")
        }
        ,
        t.prototype.finish = function() {
            this._command("finish")
        }
        ,
        t.prototype.destroy = function() {
            this._command("destroy")
        }
        ,
        t.prototype.reset = function() {
            this._command("reset")
        }
        ,
        t.prototype.setPosition = function(t) {
            this._command("setPosition", t)
        }
        ,
        t.prototype.getPosition = function() {
            return 0
        }
        ,
        t
    }();
    function p(t, e, n, i, r) {
        return t.setProperty(e, "@@" + n + ":" + i, r)
    }
    var h = function() {
        function t(t, e, n) {
            this.delegate = t,
            this.engine = e,
            this._zone = n,
            this._currentId = 0,
            this._microtaskId = 1,
            this._animationCallbacksBuffer = [],
            this._rendererCache = new Map,
            this._cdRecurDepth = 0,
            this.promise = Promise.resolve(0),
            e.onRemovalComplete = function(t, e) {
                e && e.parentNode(t) && e.removeChild(t.parentNode, t)
            }
        }
        return t.prototype.createRenderer = function(t, e) {
            var n = this
              , i = this.delegate.createRenderer(t, e);
            if (!(t && e && e.data && e.data.animation)) {
                var r = this._rendererCache.get(i);
                return r || (r = new f("",i,this.engine),
                this._rendererCache.set(i, r)),
                r
            }
            var o = e.id
              , a = e.id + "-" + this._currentId;
            this._currentId++,
            this.engine.register(a, t);
            var s = function(e) {
                Array.isArray(e) ? e.forEach(s) : n.engine.registerTrigger(o, a, t, e.name, e)
            };
            return e.data.animation.forEach(s),
            new m(this,a,i,this.engine)
        }
        ,
        t.prototype.begin = function() {
            this._cdRecurDepth++,
            this.delegate.begin && this.delegate.begin()
        }
        ,
        t.prototype._scheduleCountTask = function() {
            var t = this;
            this.promise.then((function() {
                t._microtaskId++
            }
            ))
        }
        ,
        t.prototype.scheduleListenerCallback = function(t, e, n) {
            var r = this;
            t >= 0 && t < this._microtaskId ? this._zone.run((function() {
                return e(n)
            }
            )) : (0 == this._animationCallbacksBuffer.length && Promise.resolve(null).then((function() {
                r._zone.run((function() {
                    r._animationCallbacksBuffer.forEach((function(t) {
                        var e = Object(i.f)(t, 2);
                        (0,
                        e[0])(e[1])
                    }
                    )),
                    r._animationCallbacksBuffer = []
                }
                ))
            }
            )),
            this._animationCallbacksBuffer.push([e, n]))
        }
        ,
        t.prototype.end = function() {
            var t = this;
            this._cdRecurDepth--,
            0 == this._cdRecurDepth && this._zone.runOutsideAngular((function() {
                t._scheduleCountTask(),
                t.engine.flush(t._microtaskId)
            }
            )),
            this.delegate.end && this.delegate.end()
        }
        ,
        t.prototype.whenRenderingDone = function() {
            return this.engine.whenRenderingDone()
        }
        ,
        (t = Object(i.b)([Object(i.d)("design:paramtypes", [r.RendererFactory2, s.b, r.NgZone])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵinject"](r.RendererFactory2),r["ɵɵinject"](s.b),r["ɵɵinject"](r.NgZone))
        }
        ,
        t.ɵprov = r["ɵɵdefineInjectable"]({
            token: t,
            factory: function(e) {
                return t.ɵfac(e)
            }
        }),
        t
    }()
      , f = function() {
        function t(t, e, n) {
            this.namespaceId = t,
            this.delegate = e,
            this.engine = n,
            this.destroyNode = this.delegate.destroyNode ? function(t) {
                return e.destroyNode(t)
            }
            : null
        }
        return Object.defineProperty(t.prototype, "data", {
            get: function() {
                return this.delegate.data
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.destroy = function() {
            this.engine.destroy(this.namespaceId, this.delegate),
            this.delegate.destroy()
        }
        ,
        t.prototype.createElement = function(t, e) {
            return this.delegate.createElement(t, e)
        }
        ,
        t.prototype.createComment = function(t) {
            return this.delegate.createComment(t)
        }
        ,
        t.prototype.createText = function(t) {
            return this.delegate.createText(t)
        }
        ,
        t.prototype.appendChild = function(t, e) {
            this.delegate.appendChild(t, e),
            this.engine.onInsert(this.namespaceId, e, t, !1)
        }
        ,
        t.prototype.insertBefore = function(t, e, n) {
            this.delegate.insertBefore(t, e, n),
            this.engine.onInsert(this.namespaceId, e, t, !0)
        }
        ,
        t.prototype.removeChild = function(t, e, n) {
            this.engine.onRemove(this.namespaceId, e, this.delegate, n)
        }
        ,
        t.prototype.selectRootElement = function(t, e) {
            return this.delegate.selectRootElement(t, e)
        }
        ,
        t.prototype.parentNode = function(t) {
            return this.delegate.parentNode(t)
        }
        ,
        t.prototype.nextSibling = function(t) {
            return this.delegate.nextSibling(t)
        }
        ,
        t.prototype.setAttribute = function(t, e, n, i) {
            this.delegate.setAttribute(t, e, n, i)
        }
        ,
        t.prototype.removeAttribute = function(t, e, n) {
            this.delegate.removeAttribute(t, e, n)
        }
        ,
        t.prototype.addClass = function(t, e) {
            this.delegate.addClass(t, e)
        }
        ,
        t.prototype.removeClass = function(t, e) {
            this.delegate.removeClass(t, e)
        }
        ,
        t.prototype.setStyle = function(t, e, n, i) {
            this.delegate.setStyle(t, e, n, i)
        }
        ,
        t.prototype.removeStyle = function(t, e, n) {
            this.delegate.removeStyle(t, e, n)
        }
        ,
        t.prototype.setProperty = function(t, e, n) {
            "@" == e.charAt(0) && "@.disabled" == e ? this.disableAnimations(t, !!n) : this.delegate.setProperty(t, e, n)
        }
        ,
        t.prototype.setValue = function(t, e) {
            this.delegate.setValue(t, e)
        }
        ,
        t.prototype.listen = function(t, e, n) {
            return this.delegate.listen(t, e, n)
        }
        ,
        t.prototype.disableAnimations = function(t, e) {
            this.engine.disableAnimations(t, e)
        }
        ,
        t
    }()
      , m = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, n, i, r) || this;
            return o.factory = e,
            o.namespaceId = n,
            o
        }
        return Object(i.c)(e, t),
        e.prototype.setProperty = function(t, e, n) {
            "@" == e.charAt(0) ? "." == e.charAt(1) && "@.disabled" == e ? (n = void 0 === n || !!n,
            this.disableAnimations(t, n)) : this.engine.process(this.namespaceId, t, e.substr(1), n) : this.delegate.setProperty(t, e, n)
        }
        ,
        e.prototype.listen = function(t, e, n) {
            var r, o = this;
            if ("@" == e.charAt(0)) {
                var a = function(t) {
                    switch (t) {
                    case "body":
                        return document.body;
                    case "document":
                        return document;
                    case "window":
                        return window;
                    default:
                        return t
                    }
                }(t)
                  , s = e.substr(1)
                  , c = "";
                return "@" != s.charAt(0) && (s = (r = Object(i.f)(function(t) {
                    var e = t.indexOf(".")
                      , n = t.substring(0, e)
                      , i = t.substr(e + 1);
                    return [n, i]
                }/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
                (s), 2))[0],
                c = r[1]),
                this.engine.listen(this.namespaceId, a, s, c, (function(t) {
                    var e = t._data || -1;
                    o.factory.scheduleListenerCallback(e, n, t)
                }
                ))
            }
            return this.delegate.listen(t, e, n)
        }
        ,
        e
    }(f);
    var g = function(t) {
        function e(e, n, i) {
            return t.call(this, e.body, n, i) || this
        }
        return Object(i.c)(e, t),
        (e = Object(i.b)([Object(i.e)(0, Object(r.Inject)(c.DOCUMENT)), Object(i.d)("design:paramtypes", [Object, s.a, s.c])], e)).ɵfac = function(t) {
            return new (t || e)(r["ɵɵinject"](c.DOCUMENT),r["ɵɵinject"](s.a),r["ɵɵinject"](s.c))
        }
        ,
        e.ɵprov = r["ɵɵdefineInjectable"]({
            token: e,
            factory: function(t) {
                return e.ɵfac(t)
            }
        }),
        e
    }(s.b);
    function v() {
        return Object(s.h)() ? new s.f : new s.d
    }
    function y() {
        return new s.g
    }
    function b(t, e, n) {
        return new h(t,e,n)
    }
    var w = new r.InjectionToken("AnimationModuleType")
      , S = [{
        provide: a.AnimationBuilder,
        useClass: l
    }, {
        provide: s.c,
        useFactory: y
    }, {
        provide: s.b,
        useClass: g
    }, {
        provide: r.RendererFactory2,
        useFactory: b,
        deps: [o["ɵDomRendererFactory2"], s.b, r.NgZone]
    }]
      , x = Object(i.h)([{
        provide: s.a,
        useFactory: v
    }, {
        provide: w,
        useValue: "BrowserAnimations"
    }], S)
      , M = Object(i.h)([{
        provide: s.a,
        useClass: s.e
    }, {
        provide: w,
        useValue: "NoopAnimations"
    }], S)
      , E = function() {
        function t() {}
        return t.ɵmod = r["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = r["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            },
            providers: x,
            imports: [o.BrowserModule]
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && r["ɵɵsetNgModuleScope"](t, {
            exports: function() {
                return [o.BrowserModule]
            }
        }),
        t
    }()
      , C = function() {
        function t() {}
        return t.ɵmod = r["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = r["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            },
            providers: M,
            imports: [o.BrowserModule]
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && r["ɵɵsetNgModuleScope"](t, {
            exports: function() {
                return [o.BrowserModule]
            }
        }),
        t
    }()
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(108)
      , r = n(4)
      , o = function() {
        function t() {}
        return t.fromArray = function(t) {
            if (t) {
                if (t.length < 2 || t.length > 3)
                    throw new i.IVFrontendException("Wrong number of ordinates for a point!");
                return 3 === t.length ? (new r.Vector3).fromArray(t) : (new r.Vector2).fromArray(t)
            }
        }
        ,
        t.fromArray3 = function(t) {
            if (t) {
                if (3 !== t.length)
                    throw new i.IVFrontendException("Wrong number of ordinates for a point!");
                return (new r.Vector3).fromArray(t)
            }
        }
        ,
        t.fromArray2 = function(t) {
            if (t) {
                if (2 !== t.length)
                    throw new i.IVFrontendException("Wrong number of ordinates for a point!");
                return (new r.Vector2).fromArray(t)
            }
        }
        ,
        t.toArray = function(t) {
            if (t)
                return t.toArray()
        }
        ,
        t.toString = function(t) {
            return t.x.toFixed(8) + "," + t.y.toFixed(8) + "," + t.z.toFixed(3)
        }
        ,
        t
    }();
    e.VectorFactory = o
}
, function(t, e, n) {
    var i = n(43)
      , r = n(18)
      , o = n(58)
      , a = Object.defineProperty
      , s = {}
      , c = function(t) {
        throw t
    };
    t.exports = function(t, e) {
        if (o(s, t))
            return s[t];
        e || (e = {});
        var n = [][t]
          , l = !!o(e, "ACCESSORS") && e.ACCESSORS
          , u = o(e, 0) ? e[0] : c
          , d = o(e, 1) ? e[1] : void 0;
        return s[t] = !!n && !r((function() {
            if (l && !i)
                return !0;
            var t = {
                length: -1
            };
            l ? a(t, 1, {
                enumerable: !0,
                get: c
            }) : t[1] = 1,
            n.call(t, u, d)
        }
        ))
    }
}
, function(t, e, n) {
    var i = n(34)
      , r = n(88)
      , o = n(58)
      , a = n(350)
      , s = n(464)
      , c = n(110)
      , l = c.get
      , u = c.enforce
      , d = String(String).split("String");
    (t.exports = function(t, e, n, s) {
        var c = !!s && !!s.unsafe
          , l = !!s && !!s.enumerable
          , p = !!s && !!s.noTargetGet;
        "function" == typeof n && ("string" != typeof e || o(n, "name") || r(n, "name", e),
        u(n).source = d.join("string" == typeof e ? e : "")),
        t !== i ? (c ? !p && t[e] && (l = !0) : delete t[e],
        l ? t[e] = n : r(t, e, n)) : l ? t[e] = n : a(e, n)
    }
    )(Function.prototype, "toString", (function() {
        return "function" == typeof this && l(this).source || s(this)
    }
    ))
}
, function(t, e, n) {
    var i = n(58)
      , r = n(53)
      , o = n(287)
      , a = n(359)
      , s = o("IE_PROTO")
      , c = Object.prototype;
    t.exports = a ? Object.getPrototypeOf : function(t) {
        return t = r(t),
        i(t, s) ? t[s] : "function" == typeof t.constructor && t instanceof t.constructor ? t.constructor.prototype : t instanceof Object ? c : null
    }
}
, function(t, e, n) {
    var i = n(286)
      , r = n(58)
      , o = n(496)
      , a = n(48).f;
    t.exports = function(t) {
        var e = i.Symbol || (i.Symbol = {});
        r(e, t) || a(e, t, {
            value: o.f(t)
        })
    }
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(210)
      , a = n(4)
      , s = n(1008);
    e.ANISOTROPIC_LEVEL = 4;
    var c = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.crossOrigin = void 0,
            e
        }
        return r(e, t),
        e.prototype.load = function(t, e, n, i) {
            t = o.makeUrlAbsolute(t);
            var r = new a.Texture
              , s = new a.ImageLoader(this.manager);
            return s.setCrossOrigin(this.crossOrigin),
            s.setPath(this.path),
            s.load(t, (function(t) {
                r.image = t,
                r.needsUpdate = !0,
                e(r)
            }
            ), n, i),
            r
        }
        ,
        e.prototype.loadPromise = function(t, e) {
            var n = this;
            return new Promise((function(i, r) {
                var o = n.load(t, i, void 0, r);
                e && e(o)
            }
            ))
        }
        ,
        e
    }(a.TextureLoader)
      , l = function() {
        function t() {
            this.loader = new s.OBJLoader
        }
        return t.prototype.load = function(t, e) {
            var n = this;
            return new Promise((function(i, r) {
                return n.loader.load(o.makeUrlAbsolute(t), i, e, r)
            }
            ))
        }
        ,
        t
    }()
      , u = new c
      , d = new l;
    e.setCrossOrigin = function(t) {
        u.crossOrigin = t
    }
    ,
    e.getTextureLoader = function() {
		u.crossOrigin = "anonymous";
        return u
    }
    ,
    e.getObjLoader = function() {
        return d
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t(t, e) {
            this.injectables = t,
            this.$changeSignal = e,
            this.resolveInjectables()
        }
        return t.prototype.resolveInjectables = function() {}
        ,
        t.prototype.fill = function(t, e) {
            void 0 === e && (e = !1),
            this.id = e ? void 0 : t.id
        }
        ,
        t.prototype.fillFromData = function(t) {
            this.id = t.id
        }
        ,
        t.prototype.fillDto = function(t) {
            t.id = this.id
        }
        ,
        t.prototype.invalidate = function() {
            this.$changeSignal && this.$changeSignal.emit(this)
        }
        ,
        t.prototype.onCreate = function() {}
        ,
        t
    }();
    e.RepositoryObject = i
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = (n(9),
    n(309))
      , s = (n(22),
    n(310))
      , c = (n(27),
    n(135))
      , l = (n(31),
    n(123),
    n(50),
    n(14),
    n(136))
      , u = n(6)
      , d = n(0)
      , p = (n(231),
    n(0))
      , h = n(50)
      , f = n(27)
      , m = n(14)
      , g = n(22)
      , v = n(9)
      , y = n(31)
      , b = n(123)
      , w = n(231)
      , S = function(t) {
        function e(e, n, i, r, o, s, l, u) {
            var d = t.call(this, a.PoiEntity, o, i, r) || this;
            return d.LanguageService = e,
            d.UserService = n,
            d.path = "pois",
            d.DEFAULT_EXPORT_FILE_NAME = "poi_hierarchy",
            d.injectables.LanguageService = e,
            d.injectables.ContentService = u,
            c.EntityRelationMapper.manyToOne(d, "dataset", "datasetId", s),
            c.EntityRelationMapper.manyToOne(d, "poiType", "poiTypeId", l, !0),
            c.EntityRelationMapper.manyToOne(d, "siteModelEntity", "siteModelEntityId", r),
            d
        }
        return r(e, t),
        e.prototype.create = function() {
            var e = t.prototype.create.call(this);
            return e.geoRegistered = !0,
            e.readOnly = !1,
            e.idRoutable = !1,
            e.referenceMarker = !1,
            e.importance = .5,
            e.visibilityCheck = !0,
            e.fillCurrentUsersGroups(this.UserService),
            e
        }
        ,
        e.prototype.createReadOnly = function(t, e, n, i) {
            var r, o = this.create();
            e ? (o.globalLocation = t.clone(),
            o.computeLocalCoordinatesFromGlobal()) : (o.location = t.clone(),
            o.computeCoordinatesFromDataset());
            var a = this.LanguageService.getCurrentLanguage();
            return o.titles = ((r = {})[a] = n,
            r),
            o.icon = i,
            o.readOnly = !0,
            o.isLocationAsPoi = !0,
            o.visibilityCheck = !1,
            o.canDisplayNameInScene = !1,
            o.canBeHighlightedInScene = !1,
            o
        }
        ,
        e.prototype.exportCsv = function(t, e, n) {
            n || (n = this.DEFAULT_EXPORT_FILE_NAME),
            this.RestService.directDownload(this.path + "/export/csv", {
                delimiter: t,
                locale: e
            }, n)
        }
        ,
        e.prototype.exportJson = function(t) {
            t || (t = this.DEFAULT_EXPORT_FILE_NAME),
            this.RestService.directDownload(this.path + "/export/json", {}, t)
        }
        ,
        e.prototype.importCsv = function(t, e, n, i, r, o) {
            var a = new FormData;
            return a.append("file", t),
            a.append("delimiter", e),
            a.append("locale", n),
            a.append("group_read", i.toString()),
            a.append("group_write", r.toString()),
            a.append("id_mode", o),
            this.RestService.postApi(this.path + "/import/csv", a, {
                headers: {
                    "Content-Type": void 0
                }
            }, !1)
        }
        ,
        e.prototype.importJson = function(t, e, n, i) {
            var r = new FormData;
            return r.append("file", t),
            r.append("group_read", e.toString()),
            r.append("group_write", n.toString()),
            r.append("id_mode", i),
            this.RestService.postApi(this.path + "/import/json", r, {
                headers: {
                    "Content-Type": void 0
                }
            }, !1)
        }
        ,
        e.prototype.filter = function(e, n) {
            return void 0 === n && (n = !0),
            t.prototype.filter.call(this, e, n, !0)
        }
        ,
        e.prototype.createFilterBuilder = function() {
            return new l.PoiRestFilterBuilder
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(p.ɵɵinject(h.LanguageService),p.ɵɵinject(f.UserService),p.ɵɵinject(m.GeoTransformationService),p.ɵɵinject(g.SiteModelRepository),p.ɵɵinject(v.RestService),p.ɵɵinject(y.DatasetRepository),p.ɵɵinject(b.PoiTypeRepository),p.ɵɵinject(w.ContentService))
        }
        ,
        e.ɵprov = p.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(s.SiteModelBoundRestRepository);
    e.PoiRepository = S,
    p.ɵsetClassMetadata(S, [{
        type: d.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: h.LanguageService
        }, {
            type: f.UserService
        }, {
            type: m.GeoTransformationService
        }, {
            type: g.SiteModelRepository
        }, {
            type: v.RestService
        }, {
            type: y.DatasetRepository
        }, {
            type: b.PoiTypeRepository
        }, {
            type: w.ContentService
        }]
    }
    ), null),
    o.module("IVWebApp").service("PoiRepository", u.downgradeInjectable(S))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(1140)
      , o = n(4);
    n(400);
    n(400);
    var a = n(401);
    n(401);
    n(14);
    var s = n(319)
      , c = (n(106),
    n(7))
      , l = n(16)
      , u = (n(41),
    n(1188))
      , d = (n(36),
    n(6))
      , p = n(0)
      , h = n(309)
      , f = (n(39),
    n(103),
    n(73),
    n(17),
    n(0))
      , m = n(400)
      , g = n(401)
      , v = n(14)
      , y = n(17)
      , b = n(106)
      , w = n(41)
      , S = n(39)
      , x = n(103)
      , M = n(73)
      , E = n(36);
    !function(t) {
        t.START = "start",
        t.END = "end"
    }(e.RoutePoint || (e.RoutePoint = {}));
    var C = function() {
        function t(t, e, n, i, r, o, a, s, c, d, p, h) {
            var f = this;
            this.gettext = t,
            this.gettextCatalog = e,
            this.RouteRestService = n,
            this.InstructionService = i,
            this.GeoTransformationService = r,
            this.ViewService = o,
            this.ProgressReportService = a,
            this.ErrorService = s,
            this.PoiService = c,
            this.PoiRepository = d,
            this.UrlService = p,
            this.onRouteChanged = new l.Signal,
            this.onRoutePlanned = new l.Signal,
            this.onRouteInstructionMouseOver = new l.Signal,
            this.onRouteInstructionMouseOut = new l.Signal,
            this.onRouteInstructionClick = new l.Signal,
            this.GeoTransformationService.offsetChanged.connect((function() {
                return f.refreshLastRoute()
            }
            )),
            this.errorHandler = this.ErrorService.createDefaultWrapper(),
            this.routeExceptionDetector = new u.ServerRoutingExceptionDetector(this.gettextCatalog),
            h.onAuthenticationChanged.connect((function() {
                return f.clearStoredRoute()
            }
            ))
        }
        return t.prototype.route = function(t, e, n) {
            var i = this;
            return void 0 === n && (n = !0),
            Promise.all([this.getPoi(t), this.getPoi(e)]).then((function(t) {
                return i.PoiService.routeStart = t[0],
                i.PoiService.routeEnd = t[1],
                i.PoiService.enterRouteMode(),
                i.UrlService.addRouteParameters(i.PoiService.routeStart, i.PoiService.routeEnd),
                i.findRoute(i.PoiService.routeStart.globalLocation, i.PoiService.routeEnd.globalLocation)
            }
            )).then((function(t) {
                if (i.PoiService.wasRouteFound = t.instructions.length > 0,
                i.PoiService.poisChanged.emit(),
                i.PoiService.wasRouteFound) {
                    var e = Promise.resolve();
                    return n && (e = t.instructions[0].moveToInstruction()),
                    e.then((function() {
                        return t
                    }
                    ))
                }
                return Promise.reject("No route found.")
            }
            ))
        }
        ,
        t.prototype.getPoi = function(t) {
            return t instanceof h.PoiEntity ? Promise.resolve(t) : Promise.resolve(this.PoiService.getLocationAsPoi(t, !0))
        }
        ,
        t.prototype.findRoute = function(t, e) {
            var n = this;
            if (this.clearStoredRoute(!1),
            t.equals(e)) {
                var i = new r.RouteData;
                return i.message = this.gettextCatalog.getString("Start and destination are the same", void 0, "Route status message"),
                this.storeLastRoute(i, !0),
                Promise.reject(void 0)
            }
            return this.wrapRoutePromise(this.RouteRestService.getRoute(t, e, !1).then((function(t) {
                return n.processRoute(t, !0)
            }
            )))
        }
        ,
        t.prototype.getRoute = function(t, e) {
            var n = this;
            return t.equals(e) ? Promise.reject("Source and destination are the same.") : this.RouteRestService.getRoute(t, e, !1).then((function(t) {
                return 0 === t.length ? Promise.reject("No route found.") : t
            }
            )).then((function(t) {
                return n.processRoute(t, !0)
            }
            ))
        }
        ,
        t.prototype.clearStoredRoute = function(t) {
            void 0 === t && (t = !1),
            this.storeLastRoute(void 0, t)
        }
        ,
        t.prototype.clear = function() {
            this.clearStoredRoute(!0),
            this.PoiService.unhighlightPois([this.PoiService.routeStart, this.PoiService.routeEnd]),
            this.PoiService.exitRouteMode(),
            this.PoiService.clearRouting(),
            this.UrlService.resetRouteParameters()
        }
        ,
        t.prototype.refreshLastRoute = function() {
            if (this.lastRoute)
                return this.lastRoute = this.processRoute(this.lastRoute.elements, !0),
                this.lastRoute
        }
        ,
        t.prototype.storeCurrentView = function() {
            this.storedImage = this.ViewService.mainView.getImage(),
            this.storedViewDir = {
                lon: this.ViewService.mainView.getViewDir().lon,
                lat: this.ViewService.mainView.getViewDir().lat
            }
        }
        ,
        t.prototype.hasStoredView = function() {
            return !!this.storedImage && !!this.storedViewDir
        }
        ,
        t.prototype.getStoredImage = function() {
            return this.storedImage
        }
        ,
        t.prototype.getStoredViewDir = function() {
            return this.storedViewDir
        }
        ,
        t.prototype.processRoute = function(t, e) {
            var n = new r.RouteData;
            return t && t.length ? (e && (s.sanitizeRoute(t),
            n.instructions = this.InstructionService.generate(t),
            n.routeLength = a.InstructionService.calculateRouteLength(n.instructions)),
            n.elements = t,
            this.calculateBoundingBox(n),
            n) : n
        }
        ,
        t.prototype.wrapRoutePromise = function(t) {
            var e = this
              , n = this.ProgressReportService.addTask(this.gettextCatalog.getString("Routing..."), 1, !1, !0, !0);
            return this.errorHandler.wrap(this.routingFinally(t.catch((function(t) {
                if (!e.routeExceptionDetector.applies(t))
                    return Promise.reject(t);
                var n = new r.RouteData;
                return n.message = e.routeExceptionDetector.report(),
                e.storeLastRoute(n),
                Promise.reject(e.routeExceptionDetector.getExceptionMessage(t))
            }
            )), n))
        }
        ,
        t.prototype.routingFinally = function(t, e) {
            var n = this;
            return t.then((function(t) {
                return t.available || t.message || (t.message = n.gettextCatalog.getString("No route found", void 0, "Route status message")),
                n.storeLastRoute(t),
                e.itemDone(),
                t
            }
            )).catch((function(t) {
                return e.itemDone(),
                Promise.reject(t)
            }
            ))
        }
        ,
        t.prototype.storeLastRoute = function(t, e) {
            void 0 === e && (e = !0),
            this.lastRoute = t,
            e && (this.onRoutePlanned.emit(this.lastRoute),
            this.onRouteChanged.emit(this.lastRoute))
        }
        ,
        t.prototype.calculateBoundingBox = function(t) {
            if (t.available) {
                var e = new o.Box3
                  , n = c.map(t.instructions, (function(t) {
                    return t.position
                }
                ));
                n = this.GeoTransformationService.vectorArrayToLocal(n),
                e.setFromPoints(n),
                t.boundingBox = e
            }
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(f.ɵɵinject("gettext"),f.ɵɵinject("gettextCatalog"),f.ɵɵinject(m.RouteRestService),f.ɵɵinject(g.InstructionService),f.ɵɵinject(v.GeoTransformationService),f.ɵɵinject(y.ViewService),f.ɵɵinject(b.ProgressReportService),f.ɵɵinject(w.ErrorService),f.ɵɵinject(S.PoiService),f.ɵɵinject(x.PoiRepository),f.ɵɵinject(M.UrlService),f.ɵɵinject(E.AuthenticationService))
        }
        ,
        t.ɵprov = f.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.RouteService = C,
    f.ɵsetClassMetadata(C, [{
        type: p.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: void 0,
            decorators: [{
                type: p.Inject,
                args: ["gettext"]
            }]
        }, {
            type: void 0,
            decorators: [{
                type: p.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: m.RouteRestService
        }, {
            type: g.InstructionService
        }, {
            type: v.GeoTransformationService
        }, {
            type: y.ViewService
        }, {
            type: b.ProgressReportService
        }, {
            type: w.ErrorService
        }, {
            type: S.PoiService
        }, {
            type: x.PoiRepository
        }, {
            type: M.UrlService
        }, {
            type: E.AuthenticationService
        }]
    }
    ), null),
    i.module("IVWebApp").service("RouteService", d.downgradeInjectable(C))
}
, function(t, e, n) {
    "use strict";
    var i;
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t[t.Map = 0] = "Map",
        t[t.Perspective = 1] = "Perspective"
    }(i = e.SceneViewMode || (e.SceneViewMode = {})),
    e.nextSceneViewMode = function(t) {
        return t === i.Map ? i.Perspective : i.Map
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(20)
      , o = n(640)
      , a = n(7)
      , s = n(6)
      , c = n(0)
      , l = n(8)
      , u = n(0)
      , d = function() {
        function t(t) {
            this.$timeout = t,
            this.lastId = 0,
            this.tasks = []
        }
        return t.prototype.getTasks = function() {
            return this.tasks
        }
        ,
        t.prototype.addTask = function(t, e, n, i, a, s, c) {
            var l = this;
            void 0 === n && (n = !1),
            void 0 === i && (i = !1),
            void 0 === a && (a = !1),
            void 0 === s && (s = !1),
            void 0 === c && (c = 0);
            var u = ++this.lastId
              , d = new o.ProgressReportTask(u,t,e,n,i,a,s,this.removeTaskWithDelay.bind(this));
            return d.startAnimationTimeout = this.$timeout((function() {
                l.visible = !0,
                l.tasks.push(d),
                n && !l.modal && (l.modal = !0),
                s && !l.transparent && (l.transparent = !0),
                r.invalidateAngular()
            }
            ), c),
            d
        }
        ,
        t.prototype.removeTaskWithDelay = function(t) {
            var e = this;
            this.$timeout.cancel(t.startAnimationTimeout) || (this.$timeout((function() {
                return e.removeTask(t)
            }
            ), 1e3).catch(l.handleWarning),
            r.invalidateAngular())
        }
        ,
        t.prototype.removeTask = function(t) {
            var e = this.findIndexOfTask(t.taskId);
            t && (this.tasks.splice(e, 1),
            0 === Object.keys(this.tasks).length && (this.visible = !1),
            t.modal && this.recheckModal(),
            t.transparent && (this.transparent = a.some(this.tasks, (function(t) {
                return t.transparent
            }
            ))))
        }
        ,
        t.prototype.findIndexOfTask = function(t) {
            for (var e = 0; e < this.tasks.length; e++)
                if (this.tasks[e].taskId === t)
                    return e;
            return -1
        }
        ,
        t.prototype.recheckModal = function() {
            for (var t = !1, e = 0, n = this.tasks; e < n.length; e++) {
                if (n[e].modal) {
                    t = !0;
                    break
                }
            }
            this.modal = t
        }
        ,
        t.prototype.numOfTasks = function() {
            return Object.keys(this.tasks).length
        }
        ,
        t.prototype.isCompactOnly = function() {
            for (var t = 0, e = this.tasks; t < e.length; t++) {
                if (!e[t].compact)
                    return !1
            }
            return !0
        }
        ,
        t.prototype.numOfItems = function() {
            return this.numItems(void 0, "numItems")
        }
        ,
        t.prototype.numOfDoneItems = function() {
            return this.numItems(void 0, "doneItems")
        }
        ,
        t.prototype.numItems = function(t, e) {
            if (!t)
                return this.sumProperty(e);
            var n = this.findIndexOfTask(t);
            return void 0 !== this.tasks[n] ? "numItems" === e ? this.tasks[n].numItems : "doneItems" === e ? this.tasks[n].doneItems : void 0 : void 0
        }
        ,
        t.prototype.sumProperty = function(t) {
            for (var e = 0, n = 0, i = this.tasks; n < i.length; n++) {
                var r = i[n]
                  , o = this.findIndexOfTask(r.taskId);
                "numItems" === t ? e += this.tasks[o].numItems : "doneItems" === t && (e += this.tasks[o].doneItems)
            }
            return e
        }
        ,
        t.prototype.isModal = function() {
            return this.modal
        }
        ,
        t.prototype.isVisible = function() {
            return this.visible
        }
        ,
        t.prototype.isTransparent = function() {
            return this.transparent
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(u.ɵɵinject("$timeout"))
        }
        ,
        t.ɵprov = u.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.ProgressReportService = d,
    u.ɵsetClassMetadata(d, [{
        type: c.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: void 0,
            decorators: [{
                type: c.Inject,
                args: ["$timeout"]
            }]
        }]
    }
    ), null),
    i.module("IVWebApp").service("ProgressReportService", s.downgradeInjectable(d))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    e.promiseFinally = function(t, e) {
        return t.then((function(t) {
            return e(),
            t
        }
        )).catch((function(t) {
            return e(),
            Promise.reject(t)
        }
        ))
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function(t) {
        this.message = t
    };
    e.IVFrontendException = i
}
, function(t, e, n) {
    var i = n(234)
      , r = n(87);
    t.exports = function(t) {
        return i(r(t))
    }
}
, function(t, e, n) {
    var i, r, o, a = n(463), s = n(34), c = n(42), l = n(88), u = n(58), d = n(287), p = n(239), h = s.WeakMap;
    if (a) {
        var f = new h
          , m = f.get
          , g = f.has
          , v = f.set;
        i = function(t, e) {
            return v.call(f, t, e),
            e
        }
        ,
        r = function(t) {
            return m.call(f, t) || {}
        }
        ,
        o = function(t) {
            return g.call(f, t)
        }
    } else {
        var y = d("state");
        p[y] = !0,
        i = function(t, e) {
            return l(t, y, e),
            e
        }
        ,
        r = function(t) {
            return u(t, y) ? t[y] : {}
        }
        ,
        o = function(t) {
            return u(t, y)
        }
    }
    t.exports = {
        set: i,
        get: r,
        has: o,
        enforce: function(t) {
            return o(t) ? r(t) : i(t, {})
        },
        getterFor: function(t) {
            return function(e) {
                var n;
                if (!c(e) || (n = r(e)).type !== t)
                    throw TypeError("Incompatible receiver, " + t + " required");
                return n
            }
        }
    }
}
, function(t, e, n) {
    var i = n(87)
      , r = /"/g;
    t.exports = function(t, e, n, o) {
        var a = String(i(t))
          , s = "<" + e;
        return "" !== n && (s += " " + n + '="' + String(o).replace(r, "&quot;") + '"'),
        s + ">" + a + "</" + e + ">"
    }
}
, function(t, e, n) {
    var i = n(18);
    t.exports = function(t) {
        return i((function() {
            var e = ""[t]('"');
            return e !== e.toLowerCase() || e.split('"').length > 3
        }
        ))
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.ENTER_BUILDING = "walk_inside",
        t.EXIT_BUILDING = "walk_outside",
        t.ENTER_ELEVATOR_UP = "enter_elevator_up",
        t.ENTER_ELEVATOR_DOWN = "enter_elevator_down",
        t.EXIT_ELEVATOR = "exit_elevator",
        t.ENTER_STAIRS_UP = "enter_stairs_up",
        t.ENTER_STAIRS_DOWN = "enter_stairs_down",
        t.EXIT_STAIRS = "exit_stairs",
        t.CHANGE_FLOOR_UP = "change_floor_up",
        t.CHANGE_FLOOR_DOWN = "change_floor_down",
        t.START = "start",
        t.END = "end",
        t.EDGE = "edge",
        t.SOURCE_PROJECTION = "source_projection_to_navgraph",
        t.DESTINATION_PROJECTION = "destination_projection_to_navgraph"
    }(e.InstructionType || (e.InstructionType = {}))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(605),
    n(57))
      , o = n(21)
      , a = (n(36),
    n(0))
      , s = n(6)
      , c = n(8)
      , l = n(0)
      , u = n(605)
      , d = n(36)
      , p = function() {
        function t(t, e, n) {
            var i = this;
            this.gettextCatalog = t,
            this.GroupRepository = e,
            this.AuthenticationService = n,
            this.groupsTreeData = void 0,
            this.groupsArrayData = void 0,
            this.AuthenticationService.initialized.then((function(t) {
                return i.getGroupsAsTree(t.primaryGroups)
            }
            )).catch(c.handleWarning),
            this.AuthenticationService.onAuthenticationChanged.connect((function(t) {
                return i.getGroupsAsTree(t.primaryGroups)
            }
            ))
        }
        return t.prototype.getGroupsAsTree = function(t) {
            var e = this;
            return this.GroupRepository.findByGroupIds(t).then((function(t) {
                return e.setGroups(t),
                t
            }
            ))
        }
        ,
        t.prototype.getGroupsAsArray = function() {
            return this.groupsArrayData
        }
        ,
        t.prototype.clearGroups = function() {
            this.groupsTreeData = void 0,
            this.groupsArrayData = void 0
        }
        ,
        t.prototype.createGroupsArray = function(t) {
            var e = this
              , n = [];
            return i.forEach(t.sort(this.sortGroups), (function(t) {
                n.push(t),
                n = n.concat(e.createGroupsArray(t.childGroups))
            }
            )),
            n
        }
        ,
        t.prototype.addGroup = function(t, e, n, i) {
            var r = this
              , a = this.GroupRepository.create();
            return a.name = t,
            a.attributes = i,
            a.security.groupRead = e,
            a.security.groupWrite = n,
            this.GroupRepository.save(a).then((function(t) {
                o.TrackingService.trackGroupAdded();
                var e = t[0];
                return r.addGroupSuccess(e),
                e
            }
            ))
        }
        ,
        t.prototype.updateGroup = function(t, e, n) {
            var i = this
              , r = this.GroupRepository.create();
            return r.id = t,
            r.name = e,
            r.attributes = n,
            this.GroupRepository.save(r).then((function(e) {
                var n = e[0];
                return i.updateGroupSuccess(t, n),
                n
            }
            ))
        }
        ,
        t.prototype.removeGroup = function(t) {
            var e = this;
            return this.GroupRepository.remove(t).then((function(t) {
                return e.removeGroupSuccess(),
                t
            }
            ))
        }
        ,
        t.prototype.getGroupAttributesNames = function() {
            var t;
            return (t = {})[r.GroupAttributes.CAN_CREATE_BUNDLES] = this.gettextCatalog.getString("Create bundles"),
            t[r.GroupAttributes.CAN_CREATE_DATASETS] = this.gettextCatalog.getString("Create datasets"),
            t[r.GroupAttributes.CAN_CREATE_POI_GROUPS] = this.gettextCatalog.getString("Create POI categories"),
            t[r.GroupAttributes.CAN_CREATE_POIS] = this.gettextCatalog.getString("Create POIs"),
            t[r.GroupAttributes.CAN_CREATE_POLYGONS] = this.gettextCatalog.getString("Create vector maps"),
            t[r.GroupAttributes.CAN_CREATE_USER_GROUPS] = this.gettextCatalog.getString("Create user groups"),
            t[r.GroupAttributes.CAN_MAKE_PUBLIC] = this.gettextCatalog.getString("Make content public"),
            t[r.GroupAttributes.CAN_VIEW_SITE_MODEL_ATTRIBUTES] = this.gettextCatalog.getString("View site model attributes"),
            t[r.GroupAttributes.CAN_EDIT_SITE_MODEL_ATTRIBUTES] = this.gettextCatalog.getString("Edit site model attributes"),
            t[r.GroupAttributes.CAN_CROP_AND_DOWNLOAD_POINT_CLOUD] = this.gettextCatalog.getString("Crop and download point cloud"),
            t[r.GroupAttributes.CAN_USE_MEASUREMENT_TOOL] = this.gettextCatalog.getString("Use measurement tool"),
            t[r.GroupAttributes.CAN_SAVE_MEASUREMENTS] = this.gettextCatalog.getString("Save measurements"),
            t[r.GroupAttributes.CAN_EXPORT_POI_AUDIT_RECORDS] = this.gettextCatalog.getString("Export POI audit records"),
            t
        }
        ,
        t.prototype.setGroups = function(t) {
            this.groupsTreeData = t,
            this.groupsArrayData = this.createGroupsArray(t)
        }
        ,
        t.prototype.getGroupParent = function(t) {
            return this.groupsArrayData[this.getGroupIndex(t.security.groupWrite, this.groupsArrayData)]
        }
        ,
        t.prototype.sortGroups = function(e, n) {
            return e.id === t.publicGroupId ? -1 : e.name.localeCompare(n.name)
        }
        ,
        t.prototype.addGroupSuccess = function(t) {
            this.getGroupParent(t).childGroups.push(t),
            this.setGroups(this.groupsTreeData)
        }
        ,
        t.prototype.updateGroupSuccess = function(t, e) {
            var n = this
              , i = this.getGroupIndex(t, this.groupsTreeData);
            i > -1 ? this.groupsTreeData[i] = e : this.groupsArrayData.forEach((function(i) {
                var r = n.getGroupIndex(t, i.childGroups);
                r > -1 && (i.childGroups[r] = e)
            }
            )),
            this.setGroups(this.groupsTreeData)
        }
        ,
        t.prototype.removeGroupSuccess = function() {
            var t = this;
            this.groupsArrayData.forEach((function(e) {
                var n = t.getGroupIndex(e.id, e.childGroups);
                n > -1 && e.childGroups.splice(n, 1)
            }
            )),
            this.setGroups(this.groupsTreeData)
        }
        ,
        t.prototype.getGroupIndex = function(t, e) {
            return e.findIndex((function(e) {
                return e.id === t
            }
            ))
        }
        ,
        t.publicGroupId = 0,
        t.adminGroupId = 1,
        t.ɵfac = function(e) {
            return new (e || t)(l.ɵɵinject("gettextCatalog"),l.ɵɵinject(u.GroupRepository),l.ɵɵinject(d.AuthenticationService))
        }
        ,
        t.ɵprov = l.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.GroupService = p,
    l.ɵsetClassMetadata(p, [{
        type: a.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: void 0,
            decorators: [{
                type: a.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: u.GroupRepository
        }, {
            type: d.AuthenticationService
        }]
    }
    ), null),
    i.module("IVWebApp").service("GroupService", s.downgradeInjectable(p))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return Y
    }
    )),
    n.d(e, "b", (function() {
        return X
    }
    )),
    n.d(e, "c", (function() {
        return H
    }
    )),
    n.d(e, "d", (function() {
        return A
    }
    )),
    n.d(e, "e", (function() {
        return R
    }
    )),
    n.d(e, "f", (function() {
        return Z
    }
    ));
    var i = n(1)
      , r = n(51)
      , o = n(0)
      , a = n(13)
      , s = n(37)
      , c = n(3)
      , l = n(23)
      , u = n(69)
      , d = n(32)
      , p = n(33)
      , h = n(12)
      , f = n(279)
      , m = n(221)
      , g = n(341)
      , v = n(60)
      , y = function() {
        function t(t, e) {
            this._viewportRuler = t,
            this._previousHTMLStyles = {
                top: "",
                left: ""
            },
            this._isEnabled = !1,
            this._document = e
        }
        return t.prototype.attach = function() {}
        ,
        t.prototype.enable = function() {
            if (this._canBeEnabled()) {
                var t = this._document.documentElement;
                this._previousScrollPosition = this._viewportRuler.getViewportScrollPosition(),
                this._previousHTMLStyles.left = t.style.left || "",
                this._previousHTMLStyles.top = t.style.top || "",
                t.style.left = Object(l.d)(-this._previousScrollPosition.left),
                t.style.top = Object(l.d)(-this._previousScrollPosition.top),
                t.classList.add("cdk-global-scrollblock"),
                this._isEnabled = !0
            }
        }
        ,
        t.prototype.disable = function() {
            if (this._isEnabled) {
                var t = this._document.documentElement
                  , e = this._document.body
                  , n = t.style
                  , i = e.style
                  , r = n.scrollBehavior || ""
                  , o = i.scrollBehavior || "";
                this._isEnabled = !1,
                n.left = this._previousHTMLStyles.left,
                n.top = this._previousHTMLStyles.top,
                t.classList.remove("cdk-global-scrollblock"),
                n.scrollBehavior = i.scrollBehavior = "auto",
                window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top),
                n.scrollBehavior = r,
                i.scrollBehavior = o
            }
        }
        ,
        t.prototype._canBeEnabled = function() {
            if (this._document.documentElement.classList.contains("cdk-global-scrollblock") || this._isEnabled)
                return !1;
            var t = this._document.body
              , e = this._viewportRuler.getViewportSize();
            return t.scrollHeight > e.height || t.scrollWidth > e.width
        }
        ,
        t
    }();
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function b() {
        return Error("Scroll strategy has already been attached.")
    }
    var w = function() {
        function t(t, e, n, i) {
            var r = this;
            this._scrollDispatcher = t,
            this._ngZone = e,
            this._viewportRuler = n,
            this._config = i,
            this._scrollSubscription = null,
            this._detach = function() {
                r.disable(),
                r._overlayRef.hasAttached() && r._ngZone.run((function() {
                    return r._overlayRef.detach()
                }
                ))
            }
        }
        return t.prototype.attach = function(t) {
            if (this._overlayRef)
                throw b();
            this._overlayRef = t
        }
        ,
        t.prototype.enable = function() {
            var t = this;
            if (!this._scrollSubscription) {
                var e = this._scrollDispatcher.scrolled(0);
                this._config && this._config.threshold && this._config.threshold > 1 ? (this._initialScrollPosition = this._viewportRuler.getViewportScrollPosition().top,
                this._scrollSubscription = e.subscribe((function() {
                    var e = t._viewportRuler.getViewportScrollPosition().top;
                    Math.abs(e - t._initialScrollPosition) > t._config.threshold ? t._detach() : t._overlayRef.updatePosition()
                }
                ))) : this._scrollSubscription = e.subscribe(this._detach)
            }
        }
        ,
        t.prototype.disable = function() {
            this._scrollSubscription && (this._scrollSubscription.unsubscribe(),
            this._scrollSubscription = null)
        }
        ,
        t.prototype.detach = function() {
            this.disable(),
            this._overlayRef = null
        }
        ,
        t
    }()
      , S = function() {
        function t() {}
        return t.prototype.enable = function() {}
        ,
        t.prototype.disable = function() {}
        ,
        t.prototype.attach = function() {}
        ,
        t
    }();
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function x(t, e) {
        return e.some((function(e) {
            var n = t.bottom < e.top
              , i = t.top > e.bottom
              , r = t.right < e.left
              , o = t.left > e.right;
            return n || i || r || o
        }
        ))
    }
    function M(t, e) {
        return e.some((function(e) {
            var n = t.top < e.top
              , i = t.bottom > e.bottom
              , r = t.left < e.left
              , o = t.right > e.right;
            return n || i || r || o
        }
        ))
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var E = function() {
        function t(t, e, n, i) {
            this._scrollDispatcher = t,
            this._viewportRuler = e,
            this._ngZone = n,
            this._config = i,
            this._scrollSubscription = null
        }
        return t.prototype.attach = function(t) {
            if (this._overlayRef)
                throw b();
            this._overlayRef = t
        }
        ,
        t.prototype.enable = function() {
            var t = this;
            if (!this._scrollSubscription) {
                var e = this._config ? this._config.scrollThrottle : 0;
                this._scrollSubscription = this._scrollDispatcher.scrolled(e).subscribe((function() {
                    if (t._overlayRef.updatePosition(),
                    t._config && t._config.autoClose) {
                        var e = t._overlayRef.overlayElement.getBoundingClientRect()
                          , n = t._viewportRuler.getViewportSize()
                          , i = n.width
                          , r = n.height;
                        x(e, [{
                            width: i,
                            height: r,
                            bottom: r,
                            right: i,
                            top: 0,
                            left: 0
                        }]) && (t.disable(),
                        t._ngZone.run((function() {
                            return t._overlayRef.detach()
                        }
                        )))
                    }
                }
                ))
            }
        }
        ,
        t.prototype.disable = function() {
            this._scrollSubscription && (this._scrollSubscription.unsubscribe(),
            this._scrollSubscription = null)
        }
        ,
        t.prototype.detach = function() {
            this.disable(),
            this._overlayRef = null
        }
        ,
        t
    }()
      , C = function() {
        function t(t, e, n, i) {
            var r = this;
            this._scrollDispatcher = t,
            this._viewportRuler = e,
            this._ngZone = n,
            this.noop = function() {
                return new S
            }
            ,
            this.close = function(t) {
                return new w(r._scrollDispatcher,r._ngZone,r._viewportRuler,t)
            }
            ,
            this.block = function() {
                return new y(r._viewportRuler,r._document)
            }
            ,
            this.reposition = function(t) {
                return new E(r._scrollDispatcher,r._viewportRuler,r._ngZone,t)
            }
            ,
            this._document = i
        }
        return t.ctorParameters = function() {
            return [{
                type: r.b
            }, {
                type: r.d
            }, {
                type: o.NgZone
            }, {
                type: void 0,
                decorators: [{
                    type: o.Inject,
                    args: [c.DOCUMENT]
                }]
            }]
        }
        ,
        t.ɵprov = Object(o["ɵɵdefineInjectable"])({
            factory: function() {
                return new t(Object(o["ɵɵinject"])(r.b),Object(o["ɵɵinject"])(r.d),Object(o["ɵɵinject"])(o.NgZone),Object(o["ɵɵinject"])(c.DOCUMENT))
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)(o["ɵɵinject"](r.b),o["ɵɵinject"](r.d),o["ɵɵinject"](o.NgZone),o["ɵɵinject"](c.DOCUMENT))
        }
        ,
        t
    }()
      , A = function(t) {
        var e, n;
        if (this.scrollStrategy = new S,
        this.panelClass = "",
        this.hasBackdrop = !1,
        this.backdropClass = "cdk-overlay-dark-backdrop",
        this.disposeOnNavigation = !1,
        t) {
            var r = Object.keys(t);
            try {
                for (var o = Object(i.j)(r), a = o.next(); !a.done; a = o.next()) {
                    var s = a.value;
                    void 0 !== t[s] && (this[s] = t[s])
                }
            } catch (t) {
                e = {
                    error: t
                }
            } finally {
                try {
                    a && !a.done && (n = o.return) && n.call(o)
                } finally {
                    if (e)
                        throw e.error
                }
            }
        }
    }
      , T = function(t, e, n, i, r) {
        this.offsetX = n,
        this.offsetY = i,
        this.panelClass = r,
        this.originX = t.originX,
        this.originY = t.originY,
        this.overlayX = e.overlayX,
        this.overlayY = e.overlayY
    }
      , O = function() {}
      , _ = function() {
        function t(t, e) {
            this.connectionPair = t,
            this.scrollableViewProperties = e
        }
        return t.ctorParameters = function() {
            return [{
                type: T
            }, {
                type: O,
                decorators: [{
                    type: o.Optional
                }]
            }]
        }
        ,
        t
    }();
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function P(t, e) {
        if ("top" !== e && "bottom" !== e && "center" !== e)
            throw Error("ConnectedPosition: Invalid " + t + ' "' + e + '". Expected "top", "bottom" or "center".')
    }
    function I(t, e) {
        if ("start" !== e && "end" !== e && "center" !== e)
            throw Error("ConnectedPosition: Invalid " + t + ' "' + e + '". Expected "start", "end" or "center".')
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var k = function() {
        function t(t) {
            var e = this;
            this._attachedOverlays = [],
            this._keydownListener = function(t) {
                for (var n = e._attachedOverlays, i = n.length - 1; i > -1; i--)
                    if (n[i]._keydownEventSubscriptions > 0) {
                        n[i]._keydownEvents.next(t);
                        break
                    }
            }
            ,
            this._document = t
        }
        return t.prototype.ngOnDestroy = function() {
            this._detach()
        }
        ,
        t.prototype.add = function(t) {
            this.remove(t),
            this._isAttached || (this._document.body.addEventListener("keydown", this._keydownListener),
            this._isAttached = !0),
            this._attachedOverlays.push(t)
        }
        ,
        t.prototype.remove = function(t) {
            var e = this._attachedOverlays.indexOf(t);
            e > -1 && this._attachedOverlays.splice(e, 1),
            0 === this._attachedOverlays.length && this._detach()
        }
        ,
        t.prototype._detach = function() {
            this._isAttached && (this._document.body.removeEventListener("keydown", this._keydownListener),
            this._isAttached = !1)
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: void 0,
                decorators: [{
                    type: o.Inject,
                    args: [c.DOCUMENT]
                }]
            }]
        }
        ,
        t.ɵprov = Object(o["ɵɵdefineInjectable"])({
            factory: function() {
                return new t(Object(o["ɵɵinject"])(c.DOCUMENT))
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)(o["ɵɵinject"](c.DOCUMENT))
        }
        ,
        t
    }();
    new o.Optional,
    new o.SkipSelf,
    c.DOCUMENT;
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var D = !("undefined" == typeof window || !window || !window.__karma__ && !window.jasmine)
      , R = function() {
        function t(t, e) {
            this._platform = e,
            this._document = t
        }
        return t.prototype.ngOnDestroy = function() {
            var t = this._containerElement;
            t && t.parentNode && t.parentNode.removeChild(t)
        }
        ,
        t.prototype.getContainerElement = function() {
            return this._containerElement || this._createContainer(),
            this._containerElement
        }
        ,
        t.prototype._createContainer = function() {
            var t = this._platform ? this._platform.isBrowser : "undefined" != typeof window;
            if (t || D)
                for (var e = this._document.querySelectorAll('.cdk-overlay-container[platform="server"], .cdk-overlay-container[platform="test"]'), n = 0; n < e.length; n++)
                    e[n].parentNode.removeChild(e[n]);
            var i = this._document.createElement("div");
            i.classList.add("cdk-overlay-container"),
            D ? i.setAttribute("platform", "test") : t || i.setAttribute("platform", "server"),
            this._document.body.appendChild(i),
            this._containerElement = i
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: void 0,
                decorators: [{
                    type: o.Inject,
                    args: [c.DOCUMENT]
                }]
            }, {
                type: a.a
            }]
        }
        ,
        t.ɵprov = Object(o["ɵɵdefineInjectable"])({
            factory: function() {
                return new t(Object(o["ɵɵinject"])(c.DOCUMENT),Object(o["ɵɵinject"])(a.a))
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)(o["ɵɵinject"](c.DOCUMENT),o["ɵɵinject"](a.a))
        }
        ,
        t
    }();
    new o.Optional,
    new o.SkipSelf,
    c.DOCUMENT;
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var L = function() {
        function t(t, e, n, i, r, o, a, s) {
            var c = this;
            this._portalOutlet = t,
            this._host = e,
            this._pane = n,
            this._config = i,
            this._ngZone = r,
            this._keyboardDispatcher = o,
            this._document = a,
            this._location = s,
            this._backdropElement = null,
            this._backdropClick = new d.a,
            this._attachments = new d.a,
            this._detachments = new d.a,
            this._locationChanges = p.a.EMPTY,
            this._backdropClickHandler = function(t) {
                return c._backdropClick.next(t)
            }
            ,
            this._keydownEventsObservable = new h.a((function(t) {
                var e = c._keydownEvents.subscribe(t);
                return c._keydownEventSubscriptions++,
                function() {
                    e.unsubscribe(),
                    c._keydownEventSubscriptions--
                }
            }
            )),
            this._keydownEvents = new d.a,
            this._keydownEventSubscriptions = 0,
            i.scrollStrategy && (this._scrollStrategy = i.scrollStrategy,
            this._scrollStrategy.attach(this)),
            this._positionStrategy = i.positionStrategy
        }
        return Object.defineProperty(t.prototype, "overlayElement", {
            get: function() {
                return this._pane
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "backdropElement", {
            get: function() {
                return this._backdropElement
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "hostElement", {
            get: function() {
                return this._host
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.attach = function(t) {
            var e = this
              , n = this._portalOutlet.attach(t);
            return !this._host.parentElement && this._previousHostParent && this._previousHostParent.appendChild(this._host),
            this._positionStrategy && this._positionStrategy.attach(this),
            this._updateStackingOrder(),
            this._updateElementSize(),
            this._updateElementDirection(),
            this._scrollStrategy && this._scrollStrategy.enable(),
            this._ngZone.onStable.asObservable().pipe(Object(m.a)(1)).subscribe((function() {
                e.hasAttached() && e.updatePosition()
            }
            )),
            this._togglePointerEvents(!0),
            this._config.hasBackdrop && this._attachBackdrop(),
            this._config.panelClass && this._toggleClasses(this._pane, this._config.panelClass, !0),
            this._attachments.next(),
            this._keyboardDispatcher.add(this),
            this._config.disposeOnNavigation && this._location && (this._locationChanges = this._location.subscribe((function() {
                return e.dispose()
            }
            ))),
            n
        }
        ,
        t.prototype.detach = function() {
            if (this.hasAttached()) {
                this.detachBackdrop(),
                this._togglePointerEvents(!1),
                this._positionStrategy && this._positionStrategy.detach && this._positionStrategy.detach(),
                this._scrollStrategy && this._scrollStrategy.disable();
                var t = this._portalOutlet.detach();
                return this._detachments.next(),
                this._keyboardDispatcher.remove(this),
                this._detachContentWhenStable(),
                this._locationChanges.unsubscribe(),
                t
            }
        }
        ,
        t.prototype.dispose = function() {
            var t = this.hasAttached();
            this._positionStrategy && this._positionStrategy.dispose(),
            this._disposeScrollStrategy(),
            this.detachBackdrop(),
            this._locationChanges.unsubscribe(),
            this._keyboardDispatcher.remove(this),
            this._portalOutlet.dispose(),
            this._attachments.complete(),
            this._backdropClick.complete(),
            this._keydownEvents.complete(),
            this._host && this._host.parentNode && (this._host.parentNode.removeChild(this._host),
            this._host = null),
            this._previousHostParent = this._pane = null,
            t && this._detachments.next(),
            this._detachments.complete()
        }
        ,
        t.prototype.hasAttached = function() {
            return this._portalOutlet.hasAttached()
        }
        ,
        t.prototype.backdropClick = function() {
            return this._backdropClick.asObservable()
        }
        ,
        t.prototype.attachments = function() {
            return this._attachments.asObservable()
        }
        ,
        t.prototype.detachments = function() {
            return this._detachments.asObservable()
        }
        ,
        t.prototype.keydownEvents = function() {
            return this._keydownEventsObservable
        }
        ,
        t.prototype.getConfig = function() {
            return this._config
        }
        ,
        t.prototype.updatePosition = function() {
            this._positionStrategy && this._positionStrategy.apply()
        }
        ,
        t.prototype.updatePositionStrategy = function(t) {
            t !== this._positionStrategy && (this._positionStrategy && this._positionStrategy.dispose(),
            this._positionStrategy = t,
            this.hasAttached() && (t.attach(this),
            this.updatePosition()))
        }
        ,
        t.prototype.updateSize = function(t) {
            this._config = Object(i.a)(Object(i.a)({}, this._config), t),
            this._updateElementSize()
        }
        ,
        t.prototype.setDirection = function(t) {
            this._config = Object(i.a)(Object(i.a)({}, this._config), {
                direction: t
            }),
            this._updateElementDirection()
        }
        ,
        t.prototype.addPanelClass = function(t) {
            this._pane && this._toggleClasses(this._pane, t, !0)
        }
        ,
        t.prototype.removePanelClass = function(t) {
            this._pane && this._toggleClasses(this._pane, t, !1)
        }
        ,
        t.prototype.getDirection = function() {
            var t = this._config.direction;
            return t ? "string" == typeof t ? t : t.value : "ltr"
        }
        ,
        t.prototype.updateScrollStrategy = function(t) {
            t !== this._scrollStrategy && (this._disposeScrollStrategy(),
            this._scrollStrategy = t,
            this.hasAttached() && (t.attach(this),
            t.enable()))
        }
        ,
        t.prototype._updateElementDirection = function() {
            this._host.setAttribute("dir", this.getDirection())
        }
        ,
        t.prototype._updateElementSize = function() {
            if (this._pane) {
                var t = this._pane.style;
                t.width = Object(l.d)(this._config.width),
                t.height = Object(l.d)(this._config.height),
                t.minWidth = Object(l.d)(this._config.minWidth),
                t.minHeight = Object(l.d)(this._config.minHeight),
                t.maxWidth = Object(l.d)(this._config.maxWidth),
                t.maxHeight = Object(l.d)(this._config.maxHeight)
            }
        }
        ,
        t.prototype._togglePointerEvents = function(t) {
            this._pane.style.pointerEvents = t ? "auto" : "none"
        }
        ,
        t.prototype._attachBackdrop = function() {
            var t = this;
            this._backdropElement = this._document.createElement("div"),
            this._backdropElement.classList.add("cdk-overlay-backdrop"),
            this._config.backdropClass && this._toggleClasses(this._backdropElement, this._config.backdropClass, !0),
            this._host.parentElement.insertBefore(this._backdropElement, this._host),
            this._backdropElement.addEventListener("click", this._backdropClickHandler),
            "undefined" != typeof requestAnimationFrame ? this._ngZone.runOutsideAngular((function() {
                requestAnimationFrame((function() {
                    t._backdropElement && t._backdropElement.classList.add("cdk-overlay-backdrop-showing")
                }
                ))
            }
            )) : this._backdropElement.classList.add("cdk-overlay-backdrop-showing")
        }
        ,
        t.prototype._updateStackingOrder = function() {
            this._host.nextSibling && this._host.parentNode.appendChild(this._host)
        }
        ,
        t.prototype.detachBackdrop = function() {
            var t = this
              , e = this._backdropElement;
            if (e) {
                var n, i = function() {
                    e && (e.removeEventListener("click", t._backdropClickHandler),
                    e.removeEventListener("transitionend", i),
                    e.parentNode && e.parentNode.removeChild(e)),
                    t._backdropElement == e && (t._backdropElement = null),
                    t._config.backdropClass && t._toggleClasses(e, t._config.backdropClass, !1),
                    clearTimeout(n)
                };
                e.classList.remove("cdk-overlay-backdrop-showing"),
                this._ngZone.runOutsideAngular((function() {
                    e.addEventListener("transitionend", i)
                }
                )),
                e.style.pointerEvents = "none",
                n = this._ngZone.runOutsideAngular((function() {
                    return setTimeout(i, 500)
                }
                ))
            }
        }
        ,
        t.prototype._toggleClasses = function(t, e, n) {
            var i = t.classList;
            Object(l.b)(e).forEach((function(t) {
                t && (n ? i.add(t) : i.remove(t))
            }
            ))
        }
        ,
        t.prototype._detachContentWhenStable = function() {
            var t = this;
            this._ngZone.runOutsideAngular((function() {
                var e = t._ngZone.onStable.asObservable().pipe(Object(g.a)(Object(f.a)(t._attachments, t._detachments))).subscribe((function() {
                    t._pane && t._host && 0 !== t._pane.children.length || (t._pane && t._config.panelClass && t._toggleClasses(t._pane, t._config.panelClass, !1),
                    t._host && t._host.parentElement && (t._previousHostParent = t._host.parentElement,
                    t._previousHostParent.removeChild(t._host)),
                    e.unsubscribe())
                }
                ))
            }
            ))
        }
        ,
        t.prototype._disposeScrollStrategy = function() {
            var t = this._scrollStrategy;
            t && (t.disable(),
            t.detach && t.detach())
        }
        ,
        t
    }()
      , N = /([A-Za-z%]+)$/
      , j = function() {
        function t(t, e, n, i, r) {
            this._viewportRuler = e,
            this._document = n,
            this._platform = i,
            this._overlayContainer = r,
            this._lastBoundingBoxSize = {
                width: 0,
                height: 0
            },
            this._isPushed = !1,
            this._canPush = !0,
            this._growAfterOpen = !1,
            this._hasFlexibleDimensions = !0,
            this._positionLocked = !1,
            this._viewportMargin = 0,
            this._scrollables = [],
            this._preferredPositions = [],
            this._positionChanges = new d.a,
            this._resizeSubscription = p.a.EMPTY,
            this._offsetX = 0,
            this._offsetY = 0,
            this._appliedPanelClasses = [],
            this.positionChanges = this._positionChanges.asObservable(),
            this.setOrigin(t)
        }
        return Object.defineProperty(t.prototype, "positions", {
            get: function() {
                return this._preferredPositions
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.attach = function(t) {
            var e = this;
            if (this._overlayRef && t !== this._overlayRef)
                throw Error("This position strategy is already attached to an overlay");
            this._validatePositions(),
            t.hostElement.classList.add("cdk-overlay-connected-position-bounding-box"),
            this._overlayRef = t,
            this._boundingBox = t.hostElement,
            this._pane = t.overlayElement,
            this._isDisposed = !1,
            this._isInitialRender = !0,
            this._lastPosition = null,
            this._resizeSubscription.unsubscribe(),
            this._resizeSubscription = this._viewportRuler.change().subscribe((function() {
                e._isInitialRender = !0,
                e.apply()
            }
            ))
        }
        ,
        t.prototype.apply = function() {
            var t, e, n, r;
            if (!this._isDisposed && this._platform.isBrowser)
                if (!this._isInitialRender && this._positionLocked && this._lastPosition)
                    this.reapplyLastPosition();
                else {
                    this._clearPanelClasses(),
                    this._resetOverlayElementStyles(),
                    this._resetBoundingBoxStyles(),
                    this._viewportRect = this._getNarrowedViewportRect(),
                    this._originRect = this._getOriginRect(),
                    this._overlayRect = this._pane.getBoundingClientRect();
                    var o, a = this._originRect, s = this._overlayRect, c = this._viewportRect, l = [];
                    try {
                        for (var u = Object(i.j)(this._preferredPositions), d = u.next(); !d.done; d = u.next()) {
                            var p = d.value
                              , h = this._getOriginPoint(a, p)
                              , f = this._getOverlayPoint(h, s, p)
                              , m = this._getOverlayFit(f, s, c, p);
                            if (m.isCompletelyWithinViewport)
                                return this._isPushed = !1,
                                void this._applyPosition(p, h);
                            this._canFitWithFlexibleDimensions(m, f, c) ? l.push({
                                position: p,
                                origin: h,
                                overlayRect: s,
                                boundingBoxRect: this._calculateBoundingBoxRect(h, p)
                            }) : (!o || o.overlayFit.visibleArea < m.visibleArea) && (o = {
                                overlayFit: m,
                                overlayPoint: f,
                                originPoint: h,
                                position: p,
                                overlayRect: s
                            })
                        }
                    } catch (e) {
                        t = {
                            error: e
                        }
                    } finally {
                        try {
                            d && !d.done && (e = u.return) && e.call(u)
                        } finally {
                            if (t)
                                throw t.error
                        }
                    }
                    if (l.length) {
                        var g = null
                          , v = -1;
                        try {
                            for (var y = Object(i.j)(l), b = y.next(); !b.done; b = y.next()) {
                                var w = b.value
                                  , S = w.boundingBoxRect.width * w.boundingBoxRect.height * (w.position.weight || 1);
                                S > v && (v = S,
                                g = w)
                            }
                        } catch (t) {
                            n = {
                                error: t
                            }
                        } finally {
                            try {
                                b && !b.done && (r = y.return) && r.call(y)
                            } finally {
                                if (n)
                                    throw n.error
                            }
                        }
                        return this._isPushed = !1,
                        void this._applyPosition(g.position, g.origin)
                    }
                    if (this._canPush)
                        return this._isPushed = !0,
                        void this._applyPosition(o.position, o.originPoint);
                    this._applyPosition(o.position, o.originPoint)
                }
        }
        ,
        t.prototype.detach = function() {
            this._clearPanelClasses(),
            this._lastPosition = null,
            this._previousPushAmount = null,
            this._resizeSubscription.unsubscribe()
        }
        ,
        t.prototype.dispose = function() {
            this._isDisposed || (this._boundingBox && V(this._boundingBox.style, {
                top: "",
                left: "",
                right: "",
                bottom: "",
                height: "",
                width: "",
                alignItems: "",
                justifyContent: ""
            }),
            this._pane && this._resetOverlayElementStyles(),
            this._overlayRef && this._overlayRef.hostElement.classList.remove("cdk-overlay-connected-position-bounding-box"),
            this.detach(),
            this._positionChanges.complete(),
            this._overlayRef = this._boundingBox = null,
            this._isDisposed = !0)
        }
        ,
        t.prototype.reapplyLastPosition = function() {
            if (!this._isDisposed && (!this._platform || this._platform.isBrowser)) {
                this._originRect = this._getOriginRect(),
                this._overlayRect = this._pane.getBoundingClientRect(),
                this._viewportRect = this._getNarrowedViewportRect();
                var t = this._lastPosition || this._preferredPositions[0]
                  , e = this._getOriginPoint(this._originRect, t);
                this._applyPosition(t, e)
            }
        }
        ,
        t.prototype.withScrollableContainers = function(t) {
            return this._scrollables = t,
            this
        }
        ,
        t.prototype.withPositions = function(t) {
            return this._preferredPositions = t,
            -1 === t.indexOf(this._lastPosition) && (this._lastPosition = null),
            this._validatePositions(),
            this
        }
        ,
        t.prototype.withViewportMargin = function(t) {
            return this._viewportMargin = t,
            this
        }
        ,
        t.prototype.withFlexibleDimensions = function(t) {
            return void 0 === t && (t = !0),
            this._hasFlexibleDimensions = t,
            this
        }
        ,
        t.prototype.withGrowAfterOpen = function(t) {
            return void 0 === t && (t = !0),
            this._growAfterOpen = t,
            this
        }
        ,
        t.prototype.withPush = function(t) {
            return void 0 === t && (t = !0),
            this._canPush = t,
            this
        }
        ,
        t.prototype.withLockedPosition = function(t) {
            return void 0 === t && (t = !0),
            this._positionLocked = t,
            this
        }
        ,
        t.prototype.setOrigin = function(t) {
            return this._origin = t,
            this
        }
        ,
        t.prototype.withDefaultOffsetX = function(t) {
            return this._offsetX = t,
            this
        }
        ,
        t.prototype.withDefaultOffsetY = function(t) {
            return this._offsetY = t,
            this
        }
        ,
        t.prototype.withTransformOriginOn = function(t) {
            return this._transformOriginSelector = t,
            this
        }
        ,
        t.prototype._getOriginPoint = function(t, e) {
            var n;
            if ("center" == e.originX)
                n = t.left + t.width / 2;
            else {
                var i = this._isRtl() ? t.right : t.left
                  , r = this._isRtl() ? t.left : t.right;
                n = "start" == e.originX ? i : r
            }
            return {
                x: n,
                y: "center" == e.originY ? t.top + t.height / 2 : "top" == e.originY ? t.top : t.bottom
            }
        }
        ,
        t.prototype._getOverlayPoint = function(t, e, n) {
            var i, r;
            return i = "center" == n.overlayX ? -e.width / 2 : "start" === n.overlayX ? this._isRtl() ? -e.width : 0 : this._isRtl() ? 0 : -e.width,
            r = "center" == n.overlayY ? -e.height / 2 : "top" == n.overlayY ? 0 : -e.height,
            {
                x: t.x + i,
                y: t.y + r
            }
        }
        ,
        t.prototype._getOverlayFit = function(t, e, n, i) {
            var r = t.x
              , o = t.y
              , a = this._getOffset(i, "x")
              , s = this._getOffset(i, "y");
            a && (r += a),
            s && (o += s);
            var c = 0 - r
              , l = r + e.width - n.width
              , u = 0 - o
              , d = o + e.height - n.height
              , p = this._subtractOverflows(e.width, c, l)
              , h = this._subtractOverflows(e.height, u, d)
              , f = p * h;
            return {
                visibleArea: f,
                isCompletelyWithinViewport: e.width * e.height === f,
                fitsInViewportVertically: h === e.height,
                fitsInViewportHorizontally: p == e.width
            }
        }
        ,
        t.prototype._canFitWithFlexibleDimensions = function(t, e, n) {
            if (this._hasFlexibleDimensions) {
                var i = n.bottom - e.y
                  , r = n.right - e.x
                  , o = F(this._overlayRef.getConfig().minHeight)
                  , a = F(this._overlayRef.getConfig().minWidth)
                  , s = t.fitsInViewportVertically || null != o && o <= i
                  , c = t.fitsInViewportHorizontally || null != a && a <= r;
                return s && c
            }
            return !1
        }
        ,
        t.prototype._pushOverlayOnScreen = function(t, e, n) {
            if (this._previousPushAmount && this._positionLocked)
                return {
                    x: t.x + this._previousPushAmount.x,
                    y: t.y + this._previousPushAmount.y
                };
            var i = this._viewportRect
              , r = Math.max(t.x + e.width - i.right, 0)
              , o = Math.max(t.y + e.height - i.bottom, 0)
              , a = Math.max(i.top - n.top - t.y, 0)
              , s = Math.max(i.left - n.left - t.x, 0)
              , c = 0
              , l = 0;
            return c = e.width <= i.width ? s || -r : t.x < this._viewportMargin ? i.left - n.left - t.x : 0,
            l = e.height <= i.height ? a || -o : t.y < this._viewportMargin ? i.top - n.top - t.y : 0,
            this._previousPushAmount = {
                x: c,
                y: l
            },
            {
                x: t.x + c,
                y: t.y + l
            }
        }
        ,
        t.prototype._applyPosition = function(t, e) {
            if (this._setTransformOrigin(t),
            this._setOverlayElementStyles(e, t),
            this._setBoundingBoxStyles(e, t),
            t.panelClass && this._addPanelClasses(t.panelClass),
            this._lastPosition = t,
            this._positionChanges.observers.length) {
                var n = this._getScrollVisibility()
                  , i = new _(t,n);
                this._positionChanges.next(i)
            }
            this._isInitialRender = !1
        }
        ,
        t.prototype._setTransformOrigin = function(t) {
            if (this._transformOriginSelector) {
                var e, n = this._boundingBox.querySelectorAll(this._transformOriginSelector), i = t.overlayY;
                e = "center" === t.overlayX ? "center" : this._isRtl() ? "start" === t.overlayX ? "right" : "left" : "start" === t.overlayX ? "left" : "right";
                for (var r = 0; r < n.length; r++)
                    n[r].style.transformOrigin = e + " " + i
            }
        }
        ,
        t.prototype._calculateBoundingBoxRect = function(t, e) {
            var n, i, r, o = this._viewportRect, a = this._isRtl();
            if ("top" === e.overlayY)
                i = t.y,
                n = o.height - i + this._viewportMargin;
            else if ("bottom" === e.overlayY)
                r = o.height - t.y + 2 * this._viewportMargin,
                n = o.height - r + this._viewportMargin;
            else {
                var s = Math.min(o.bottom - t.y + o.top, t.y)
                  , c = this._lastBoundingBoxSize.height;
                n = 2 * s,
                i = t.y - s,
                n > c && !this._isInitialRender && !this._growAfterOpen && (i = t.y - c / 2)
            }
            var l, u, d, p = "start" === e.overlayX && !a || "end" === e.overlayX && a;
            if ("end" === e.overlayX && !a || "start" === e.overlayX && a)
                d = o.width - t.x + this._viewportMargin,
                l = t.x - this._viewportMargin;
            else if (p)
                u = t.x,
                l = o.right - t.x;
            else {
                s = Math.min(o.right - t.x + o.left, t.x);
                var h = this._lastBoundingBoxSize.width;
                l = 2 * s,
                u = t.x - s,
                l > h && !this._isInitialRender && !this._growAfterOpen && (u = t.x - h / 2)
            }
            return {
                top: i,
                left: u,
                bottom: r,
                right: d,
                width: l,
                height: n
            }
        }
        ,
        t.prototype._setBoundingBoxStyles = function(t, e) {
            var n = this._calculateBoundingBoxRect(t, e);
            this._isInitialRender || this._growAfterOpen || (n.height = Math.min(n.height, this._lastBoundingBoxSize.height),
            n.width = Math.min(n.width, this._lastBoundingBoxSize.width));
            var i = {};
            if (this._hasExactPosition())
                i.top = i.left = "0",
                i.bottom = i.right = i.maxHeight = i.maxWidth = "",
                i.width = i.height = "100%";
            else {
                var r = this._overlayRef.getConfig().maxHeight
                  , o = this._overlayRef.getConfig().maxWidth;
                i.height = Object(l.d)(n.height),
                i.top = Object(l.d)(n.top),
                i.bottom = Object(l.d)(n.bottom),
                i.width = Object(l.d)(n.width),
                i.left = Object(l.d)(n.left),
                i.right = Object(l.d)(n.right),
                "center" === e.overlayX ? i.alignItems = "center" : i.alignItems = "end" === e.overlayX ? "flex-end" : "flex-start",
                "center" === e.overlayY ? i.justifyContent = "center" : i.justifyContent = "bottom" === e.overlayY ? "flex-end" : "flex-start",
                r && (i.maxHeight = Object(l.d)(r)),
                o && (i.maxWidth = Object(l.d)(o))
            }
            this._lastBoundingBoxSize = n,
            V(this._boundingBox.style, i)
        }
        ,
        t.prototype._resetBoundingBoxStyles = function() {
            V(this._boundingBox.style, {
                top: "0",
                left: "0",
                right: "0",
                bottom: "0",
                height: "",
                width: "",
                alignItems: "",
                justifyContent: ""
            })
        }
        ,
        t.prototype._resetOverlayElementStyles = function() {
            V(this._pane.style, {
                top: "",
                left: "",
                bottom: "",
                right: "",
                position: "",
                transform: ""
            })
        }
        ,
        t.prototype._setOverlayElementStyles = function(t, e) {
            var n = {}
              , i = this._hasExactPosition()
              , r = this._hasFlexibleDimensions
              , o = this._overlayRef.getConfig();
            if (i) {
                var a = this._viewportRuler.getViewportScrollPosition();
                V(n, this._getExactOverlayY(e, t, a)),
                V(n, this._getExactOverlayX(e, t, a))
            } else
                n.position = "static";
            var s = ""
              , c = this._getOffset(e, "x")
              , u = this._getOffset(e, "y");
            c && (s += "translateX(" + c + "px) "),
            u && (s += "translateY(" + u + "px)"),
            n.transform = s.trim(),
            o.maxHeight && (i ? n.maxHeight = Object(l.d)(o.maxHeight) : r && (n.maxHeight = "")),
            o.maxWidth && (i ? n.maxWidth = Object(l.d)(o.maxWidth) : r && (n.maxWidth = "")),
            V(this._pane.style, n)
        }
        ,
        t.prototype._getExactOverlayY = function(t, e, n) {
            var i = {
                top: "",
                bottom: ""
            }
              , r = this._getOverlayPoint(e, this._overlayRect, t);
            this._isPushed && (r = this._pushOverlayOnScreen(r, this._overlayRect, n));
            var o = this._overlayContainer.getContainerElement().getBoundingClientRect().top;
            if (r.y -= o,
            "bottom" === t.overlayY) {
                var a = this._document.documentElement.clientHeight;
                i.bottom = a - (r.y + this._overlayRect.height) + "px"
            } else
                i.top = Object(l.d)(r.y);
            return i
        }
        ,
        t.prototype._getExactOverlayX = function(t, e, n) {
            var i = {
                left: "",
                right: ""
            }
              , r = this._getOverlayPoint(e, this._overlayRect, t);
            if (this._isPushed && (r = this._pushOverlayOnScreen(r, this._overlayRect, n)),
            "right" === (this._isRtl() ? "end" === t.overlayX ? "left" : "right" : "end" === t.overlayX ? "right" : "left")) {
                var o = this._document.documentElement.clientWidth;
                i.right = o - (r.x + this._overlayRect.width) + "px"
            } else
                i.left = Object(l.d)(r.x);
            return i
        }
        ,
        t.prototype._getScrollVisibility = function() {
            var t = this._getOriginRect()
              , e = this._pane.getBoundingClientRect()
              , n = this._scrollables.map((function(t) {
                return t.getElementRef().nativeElement.getBoundingClientRect()
            }
            ));
            return {
                isOriginClipped: M(t, n),
                isOriginOutsideView: x(t, n),
                isOverlayClipped: M(e, n),
                isOverlayOutsideView: x(e, n)
            }
        }
        ,
        t.prototype._subtractOverflows = function(t) {
            for (var e = [], n = 1; n < arguments.length; n++)
                e[n - 1] = arguments[n];
            return e.reduce((function(t, e) {
                return t - Math.max(e, 0)
            }
            ), t)
        }
        ,
        t.prototype._getNarrowedViewportRect = function() {
            var t = this._document.documentElement.clientWidth
              , e = this._document.documentElement.clientHeight
              , n = this._viewportRuler.getViewportScrollPosition();
            return {
                top: n.top + this._viewportMargin,
                left: n.left + this._viewportMargin,
                right: n.left + t - this._viewportMargin,
                bottom: n.top + e - this._viewportMargin,
                width: t - 2 * this._viewportMargin,
                height: e - 2 * this._viewportMargin
            }
        }
        ,
        t.prototype._isRtl = function() {
            return "rtl" === this._overlayRef.getDirection()
        }
        ,
        t.prototype._hasExactPosition = function() {
            return !this._hasFlexibleDimensions || this._isPushed
        }
        ,
        t.prototype._getOffset = function(t, e) {
            return "x" === e ? null == t.offsetX ? this._offsetX : t.offsetX : null == t.offsetY ? this._offsetY : t.offsetY
        }
        ,
        t.prototype._validatePositions = function() {
            if (!this._preferredPositions.length)
                throw Error("FlexibleConnectedPositionStrategy: At least one position is required.");
            this._preferredPositions.forEach((function(t) {
                I("originX", t.originX),
                P("originY", t.originY),
                I("overlayX", t.overlayX),
                P("overlayY", t.overlayY)
            }
            ))
        }
        ,
        t.prototype._addPanelClasses = function(t) {
            var e = this;
            this._pane && Object(l.b)(t).forEach((function(t) {
                "" !== t && -1 === e._appliedPanelClasses.indexOf(t) && (e._appliedPanelClasses.push(t),
                e._pane.classList.add(t))
            }
            ))
        }
        ,
        t.prototype._clearPanelClasses = function() {
            var t = this;
            this._pane && (this._appliedPanelClasses.forEach((function(e) {
                t._pane.classList.remove(e)
            }
            )),
            this._appliedPanelClasses = [])
        }
        ,
        t.prototype._getOriginRect = function() {
            var t = this._origin;
            if (t instanceof o.ElementRef)
                return t.nativeElement.getBoundingClientRect();
            if (t instanceof Element)
                return t.getBoundingClientRect();
            var e = t.width || 0
              , n = t.height || 0;
            return {
                top: t.y,
                bottom: t.y + n,
                left: t.x,
                right: t.x + e,
                height: n,
                width: e
            }
        }
        ,
        t
    }();
    function V(t, e) {
        for (var n in e)
            e.hasOwnProperty(n) && (t[n] = e[n]);
        return t
    }
    function F(t) {
        if ("number" != typeof t && null != t) {
            var e = Object(i.f)(t.split(N), 2)
              , n = e[0]
              , r = e[1];
            return r && "px" !== r ? null : parseFloat(n)
        }
        return t || null
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var U = function() {
        function t(t, e, n, i, r, o, a) {
            this._preferredPositions = [],
            this._positionStrategy = new j(n,i,r,o,a).withFlexibleDimensions(!1).withPush(!1).withViewportMargin(0),
            this.withFallbackPosition(t, e)
        }
        return Object.defineProperty(t.prototype, "_isRtl", {
            get: function() {
                return "rtl" === this._overlayRef.getDirection()
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "onPositionChange", {
            get: function() {
                return this._positionStrategy.positionChanges
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "positions", {
            get: function() {
                return this._preferredPositions
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.attach = function(t) {
            this._overlayRef = t,
            this._positionStrategy.attach(t),
            this._direction && (t.setDirection(this._direction),
            this._direction = null)
        }
        ,
        t.prototype.dispose = function() {
            this._positionStrategy.dispose()
        }
        ,
        t.prototype.detach = function() {
            this._positionStrategy.detach()
        }
        ,
        t.prototype.apply = function() {
            this._positionStrategy.apply()
        }
        ,
        t.prototype.recalculateLastPosition = function() {
            this._positionStrategy.reapplyLastPosition()
        }
        ,
        t.prototype.withScrollableContainers = function(t) {
            this._positionStrategy.withScrollableContainers(t)
        }
        ,
        t.prototype.withFallbackPosition = function(t, e, n, i) {
            var r = new T(t,e,n,i);
            return this._preferredPositions.push(r),
            this._positionStrategy.withPositions(this._preferredPositions),
            this
        }
        ,
        t.prototype.withDirection = function(t) {
            return this._overlayRef ? this._overlayRef.setDirection(t) : this._direction = t,
            this
        }
        ,
        t.prototype.withOffsetX = function(t) {
            return this._positionStrategy.withDefaultOffsetX(t),
            this
        }
        ,
        t.prototype.withOffsetY = function(t) {
            return this._positionStrategy.withDefaultOffsetY(t),
            this
        }
        ,
        t.prototype.withLockedPosition = function(t) {
            return this._positionStrategy.withLockedPosition(t),
            this
        }
        ,
        t.prototype.withPositions = function(t) {
            return this._preferredPositions = t.slice(),
            this._positionStrategy.withPositions(this._preferredPositions),
            this
        }
        ,
        t.prototype.setOrigin = function(t) {
            return this._positionStrategy.setOrigin(t),
            this
        }
        ,
        t
    }()
      , B = function() {
        function t() {
            this._cssPosition = "static",
            this._topOffset = "",
            this._bottomOffset = "",
            this._leftOffset = "",
            this._rightOffset = "",
            this._alignItems = "",
            this._justifyContent = "",
            this._width = "",
            this._height = ""
        }
        return t.prototype.attach = function(t) {
            var e = t.getConfig();
            this._overlayRef = t,
            this._width && !e.width && t.updateSize({
                width: this._width
            }),
            this._height && !e.height && t.updateSize({
                height: this._height
            }),
            t.hostElement.classList.add("cdk-global-overlay-wrapper"),
            this._isDisposed = !1
        }
        ,
        t.prototype.top = function(t) {
            return void 0 === t && (t = ""),
            this._bottomOffset = "",
            this._topOffset = t,
            this._alignItems = "flex-start",
            this
        }
        ,
        t.prototype.left = function(t) {
            return void 0 === t && (t = ""),
            this._rightOffset = "",
            this._leftOffset = t,
            this._justifyContent = "flex-start",
            this
        }
        ,
        t.prototype.bottom = function(t) {
            return void 0 === t && (t = ""),
            this._topOffset = "",
            this._bottomOffset = t,
            this._alignItems = "flex-end",
            this
        }
        ,
        t.prototype.right = function(t) {
            return void 0 === t && (t = ""),
            this._leftOffset = "",
            this._rightOffset = t,
            this._justifyContent = "flex-end",
            this
        }
        ,
        t.prototype.width = function(t) {
            return void 0 === t && (t = ""),
            this._overlayRef ? this._overlayRef.updateSize({
                width: t
            }) : this._width = t,
            this
        }
        ,
        t.prototype.height = function(t) {
            return void 0 === t && (t = ""),
            this._overlayRef ? this._overlayRef.updateSize({
                height: t
            }) : this._height = t,
            this
        }
        ,
        t.prototype.centerHorizontally = function(t) {
            return void 0 === t && (t = ""),
            this.left(t),
            this._justifyContent = "center",
            this
        }
        ,
        t.prototype.centerVertically = function(t) {
            return void 0 === t && (t = ""),
            this.top(t),
            this._alignItems = "center",
            this
        }
        ,
        t.prototype.apply = function() {
            if (this._overlayRef && this._overlayRef.hasAttached()) {
                var t = this._overlayRef.overlayElement.style
                  , e = this._overlayRef.hostElement.style
                  , n = this._overlayRef.getConfig()
                  , i = n.width
                  , r = n.height
                  , o = n.maxWidth
                  , a = n.maxHeight
                  , s = !("100%" !== i && "100vw" !== i || o && "100%" !== o && "100vw" !== o)
                  , c = !("100%" !== r && "100vh" !== r || a && "100%" !== a && "100vh" !== a);
                t.position = this._cssPosition,
                t.marginLeft = s ? "0" : this._leftOffset,
                t.marginTop = c ? "0" : this._topOffset,
                t.marginBottom = this._bottomOffset,
                t.marginRight = this._rightOffset,
                s ? e.justifyContent = "flex-start" : "center" === this._justifyContent ? e.justifyContent = "center" : "rtl" === this._overlayRef.getConfig().direction ? "flex-start" === this._justifyContent ? e.justifyContent = "flex-end" : "flex-end" === this._justifyContent && (e.justifyContent = "flex-start") : e.justifyContent = this._justifyContent,
                e.alignItems = c ? "flex-start" : this._alignItems
            }
        }
        ,
        t.prototype.dispose = function() {
            if (!this._isDisposed && this._overlayRef) {
                var t = this._overlayRef.overlayElement.style
                  , e = this._overlayRef.hostElement
                  , n = e.style;
                e.classList.remove("cdk-global-overlay-wrapper"),
                n.justifyContent = n.alignItems = t.marginTop = t.marginBottom = t.marginLeft = t.marginRight = t.position = "",
                this._overlayRef = null,
                this._isDisposed = !0
            }
        }
        ,
        t
    }()
      , z = function() {
        function t(t, e, n, i) {
            this._viewportRuler = t,
            this._document = e,
            this._platform = n,
            this._overlayContainer = i
        }
        return t.prototype.global = function() {
            return new B
        }
        ,
        t.prototype.connectedTo = function(t, e, n) {
            return new U(e,n,t,this._viewportRuler,this._document,this._platform,this._overlayContainer)
        }
        ,
        t.prototype.flexibleConnectedTo = function(t) {
            return new j(t,this._viewportRuler,this._document,this._platform,this._overlayContainer)
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: r.d
            }, {
                type: void 0,
                decorators: [{
                    type: o.Inject,
                    args: [c.DOCUMENT]
                }]
            }, {
                type: a.a
            }, {
                type: R
            }]
        }
        ,
        t.ɵprov = Object(o["ɵɵdefineInjectable"])({
            factory: function() {
                return new t(Object(o["ɵɵinject"])(r.d),Object(o["ɵɵinject"])(c.DOCUMENT),Object(o["ɵɵinject"])(a.a),Object(o["ɵɵinject"])(R))
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)(o["ɵɵinject"](r.d),o["ɵɵinject"](c.DOCUMENT),o["ɵɵinject"](a.a),o["ɵɵinject"](R))
        }
        ,
        t
    }()
      , G = 0
      , H = function() {
        function t(t, e, n, i, r, o, a, s, c, l) {
            this.scrollStrategies = t,
            this._overlayContainer = e,
            this._componentFactoryResolver = n,
            this._positionBuilder = i,
            this._keyboardDispatcher = r,
            this._injector = o,
            this._ngZone = a,
            this._document = s,
            this._directionality = c,
            this._location = l
        }
        return t.prototype.create = function(t) {
            var e = this._createHostElement()
              , n = this._createPaneElement(e)
              , i = this._createPortalOutlet(n)
              , r = new A(t);
            return r.direction = r.direction || this._directionality.value,
            new L(i,e,n,r,this._ngZone,this._keyboardDispatcher,this._document,this._location)
        }
        ,
        t.prototype.position = function() {
            return this._positionBuilder
        }
        ,
        t.prototype._createPaneElement = function(t) {
            var e = this._document.createElement("div");
            return e.id = "cdk-overlay-" + G++,
            e.classList.add("cdk-overlay-pane"),
            t.appendChild(e),
            e
        }
        ,
        t.prototype._createHostElement = function() {
            var t = this._document.createElement("div");
            return this._overlayContainer.getContainerElement().appendChild(t),
            t
        }
        ,
        t.prototype._createPortalOutlet = function(t) {
            return this._appRef || (this._appRef = this._injector.get(o.ApplicationRef)),
            new u.e(t,this._componentFactoryResolver,this._appRef,this._injector,this._document)
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: C
            }, {
                type: R
            }, {
                type: o.ComponentFactoryResolver
            }, {
                type: z
            }, {
                type: k
            }, {
                type: o.Injector
            }, {
                type: o.NgZone
            }, {
                type: void 0,
                decorators: [{
                    type: o.Inject,
                    args: [c.DOCUMENT]
                }]
            }, {
                type: s.Directionality
            }, {
                type: c.Location,
                decorators: [{
                    type: o.Optional
                }]
            }]
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(o["ɵɵinject"](C),o["ɵɵinject"](R),o["ɵɵinject"](o.ComponentFactoryResolver),o["ɵɵinject"](z),o["ɵɵinject"](k),o["ɵɵinject"](o.Injector),o["ɵɵinject"](o.NgZone),o["ɵɵinject"](c.DOCUMENT),o["ɵɵinject"](s.Directionality),o["ɵɵinject"](c.Location, 8))
        }
        ,
        t.ɵprov = o["ɵɵdefineInjectable"]({
            token: t,
            factory: function(e) {
                return t.ɵfac(e)
            }
        }),
        t
    }()
      , W = [{
        originX: "start",
        originY: "bottom",
        overlayX: "start",
        overlayY: "top"
    }, {
        originX: "start",
        originY: "top",
        overlayX: "start",
        overlayY: "bottom"
    }, {
        originX: "end",
        originY: "top",
        overlayX: "end",
        overlayY: "bottom"
    }, {
        originX: "end",
        originY: "bottom",
        overlayX: "end",
        overlayY: "top"
    }]
      , q = new o.InjectionToken("cdk-connected-overlay-scroll-strategy");
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var X = function() {
        function t(t) {
            this.elementRef = t
        }
        return t.ctorParameters = function() {
            return [{
                type: o.ElementRef
            }]
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(o["ɵɵdirectiveInject"](o.ElementRef))
        }
        ,
        t.ɵdir = o["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "cdk-overlay-origin", ""], ["", "overlay-origin", ""], ["", "cdkOverlayOrigin", ""]],
            exportAs: ["cdkOverlayOrigin"]
        }),
        t
    }()
      , Y = function() {
        function t(t, e, n, i, r) {
            this._overlay = t,
            this._dir = r,
            this._hasBackdrop = !1,
            this._lockPosition = !1,
            this._growAfterOpen = !1,
            this._flexibleDimensions = !1,
            this._push = !1,
            this._backdropSubscription = p.a.EMPTY,
            this.viewportMargin = 0,
            this.open = !1,
            this.backdropClick = new o.EventEmitter,
            this.positionChange = new o.EventEmitter,
            this.attach = new o.EventEmitter,
            this.detach = new o.EventEmitter,
            this.overlayKeydown = new o.EventEmitter,
            this._templatePortal = new u.h(e,n),
            this._scrollStrategyFactory = i,
            this.scrollStrategy = this._scrollStrategyFactory()
        }
        return Object.defineProperty(t.prototype, "offsetX", {
            get: function() {
                return this._offsetX
            },
            set: function(t) {
                this._offsetX = t,
                this._position && this._updatePositionStrategy(this._position)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "offsetY", {
            get: function() {
                return this._offsetY
            },
            set: function(t) {
                this._offsetY = t,
                this._position && this._updatePositionStrategy(this._position)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "hasBackdrop", {
            get: function() {
                return this._hasBackdrop
            },
            set: function(t) {
                this._hasBackdrop = Object(l.c)(t)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "lockPosition", {
            get: function() {
                return this._lockPosition
            },
            set: function(t) {
                this._lockPosition = Object(l.c)(t)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "flexibleDimensions", {
            get: function() {
                return this._flexibleDimensions
            },
            set: function(t) {
                this._flexibleDimensions = Object(l.c)(t)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "growAfterOpen", {
            get: function() {
                return this._growAfterOpen
            },
            set: function(t) {
                this._growAfterOpen = Object(l.c)(t)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "push", {
            get: function() {
                return this._push
            },
            set: function(t) {
                this._push = Object(l.c)(t)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "overlayRef", {
            get: function() {
                return this._overlayRef
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "dir", {
            get: function() {
                return this._dir ? this._dir.value : "ltr"
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.ngOnDestroy = function() {
            this._overlayRef && this._overlayRef.dispose(),
            this._backdropSubscription.unsubscribe()
        }
        ,
        t.prototype.ngOnChanges = function(t) {
            this._position && (this._updatePositionStrategy(this._position),
            this._overlayRef.updateSize({
                width: this.width,
                minWidth: this.minWidth,
                height: this.height,
                minHeight: this.minHeight
            }),
            t.origin && this.open && this._position.apply()),
            t.open && (this.open ? this._attachOverlay() : this._detachOverlay())
        }
        ,
        t.prototype._createOverlay = function() {
            var t = this;
            this.positions && this.positions.length || (this.positions = W),
            this._overlayRef = this._overlay.create(this._buildConfig()),
            this._overlayRef.keydownEvents().subscribe((function(e) {
                t.overlayKeydown.next(e),
                e.keyCode !== v.ESCAPE || Object(v.hasModifierKey)(e) || (e.preventDefault(),
                t._detachOverlay())
            }
            ))
        }
        ,
        t.prototype._buildConfig = function() {
            var t = this._position = this.positionStrategy || this._createPositionStrategy()
              , e = new A({
                direction: this._dir,
                positionStrategy: t,
                scrollStrategy: this.scrollStrategy,
                hasBackdrop: this.hasBackdrop
            });
            return (this.width || 0 === this.width) && (e.width = this.width),
            (this.height || 0 === this.height) && (e.height = this.height),
            (this.minWidth || 0 === this.minWidth) && (e.minWidth = this.minWidth),
            (this.minHeight || 0 === this.minHeight) && (e.minHeight = this.minHeight),
            this.backdropClass && (e.backdropClass = this.backdropClass),
            this.panelClass && (e.panelClass = this.panelClass),
            e
        }
        ,
        t.prototype._updatePositionStrategy = function(t) {
            var e = this
              , n = this.positions.map((function(t) {
                return {
                    originX: t.originX,
                    originY: t.originY,
                    overlayX: t.overlayX,
                    overlayY: t.overlayY,
                    offsetX: t.offsetX || e.offsetX,
                    offsetY: t.offsetY || e.offsetY,
                    panelClass: t.panelClass || void 0
                }
            }
            ));
            return t.setOrigin(this.origin.elementRef).withPositions(n).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector)
        }
        ,
        t.prototype._createPositionStrategy = function() {
            var t = this
              , e = this._overlay.position().flexibleConnectedTo(this.origin.elementRef);
            return this._updatePositionStrategy(e),
            e.positionChanges.subscribe((function(e) {
                return t.positionChange.emit(e)
            }
            )),
            e
        }
        ,
        t.prototype._attachOverlay = function() {
            var t = this;
            this._overlayRef ? this._overlayRef.getConfig().hasBackdrop = this.hasBackdrop : this._createOverlay(),
            this._overlayRef.hasAttached() || (this._overlayRef.attach(this._templatePortal),
            this.attach.emit()),
            this.hasBackdrop ? this._backdropSubscription = this._overlayRef.backdropClick().subscribe((function(e) {
                t.backdropClick.emit(e)
            }
            )) : this._backdropSubscription.unsubscribe()
        }
        ,
        t.prototype._detachOverlay = function() {
            this._overlayRef && (this._overlayRef.detach(),
            this.detach.emit()),
            this._backdropSubscription.unsubscribe()
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: H
            }, {
                type: o.TemplateRef
            }, {
                type: o.ViewContainerRef
            }, {
                type: void 0,
                decorators: [{
                    type: o.Inject,
                    args: [q]
                }]
            }, {
                type: s.Directionality,
                decorators: [{
                    type: o.Optional
                }]
            }]
        }
        ,
        t.propDecorators = {
            origin: [{
                type: o.Input,
                args: ["cdkConnectedOverlayOrigin"]
            }],
            positions: [{
                type: o.Input,
                args: ["cdkConnectedOverlayPositions"]
            }],
            positionStrategy: [{
                type: o.Input,
                args: ["cdkConnectedOverlayPositionStrategy"]
            }],
            offsetX: [{
                type: o.Input,
                args: ["cdkConnectedOverlayOffsetX"]
            }],
            offsetY: [{
                type: o.Input,
                args: ["cdkConnectedOverlayOffsetY"]
            }],
            width: [{
                type: o.Input,
                args: ["cdkConnectedOverlayWidth"]
            }],
            height: [{
                type: o.Input,
                args: ["cdkConnectedOverlayHeight"]
            }],
            minWidth: [{
                type: o.Input,
                args: ["cdkConnectedOverlayMinWidth"]
            }],
            minHeight: [{
                type: o.Input,
                args: ["cdkConnectedOverlayMinHeight"]
            }],
            backdropClass: [{
                type: o.Input,
                args: ["cdkConnectedOverlayBackdropClass"]
            }],
            panelClass: [{
                type: o.Input,
                args: ["cdkConnectedOverlayPanelClass"]
            }],
            viewportMargin: [{
                type: o.Input,
                args: ["cdkConnectedOverlayViewportMargin"]
            }],
            scrollStrategy: [{
                type: o.Input,
                args: ["cdkConnectedOverlayScrollStrategy"]
            }],
            open: [{
                type: o.Input,
                args: ["cdkConnectedOverlayOpen"]
            }],
            transformOriginSelector: [{
                type: o.Input,
                args: ["cdkConnectedOverlayTransformOriginOn"]
            }],
            hasBackdrop: [{
                type: o.Input,
                args: ["cdkConnectedOverlayHasBackdrop"]
            }],
            lockPosition: [{
                type: o.Input,
                args: ["cdkConnectedOverlayLockPosition"]
            }],
            flexibleDimensions: [{
                type: o.Input,
                args: ["cdkConnectedOverlayFlexibleDimensions"]
            }],
            growAfterOpen: [{
                type: o.Input,
                args: ["cdkConnectedOverlayGrowAfterOpen"]
            }],
            push: [{
                type: o.Input,
                args: ["cdkConnectedOverlayPush"]
            }],
            backdropClick: [{
                type: o.Output
            }],
            positionChange: [{
                type: o.Output
            }],
            attach: [{
                type: o.Output
            }],
            detach: [{
                type: o.Output
            }],
            overlayKeydown: [{
                type: o.Output
            }]
        },
        t.ɵfac = function(e) {
            return new (e || t)(o["ɵɵdirectiveInject"](H),o["ɵɵdirectiveInject"](o.TemplateRef),o["ɵɵdirectiveInject"](o.ViewContainerRef),o["ɵɵdirectiveInject"](q),o["ɵɵdirectiveInject"](s.Directionality, 8))
        }
        ,
        t.ɵdir = o["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "cdk-connected-overlay", ""], ["", "connected-overlay", ""], ["", "cdkConnectedOverlay", ""]],
            inputs: {
                viewportMargin: ["cdkConnectedOverlayViewportMargin", "viewportMargin"],
                open: ["cdkConnectedOverlayOpen", "open"],
                scrollStrategy: ["cdkConnectedOverlayScrollStrategy", "scrollStrategy"],
                offsetX: ["cdkConnectedOverlayOffsetX", "offsetX"],
                offsetY: ["cdkConnectedOverlayOffsetY", "offsetY"],
                hasBackdrop: ["cdkConnectedOverlayHasBackdrop", "hasBackdrop"],
                lockPosition: ["cdkConnectedOverlayLockPosition", "lockPosition"],
                flexibleDimensions: ["cdkConnectedOverlayFlexibleDimensions", "flexibleDimensions"],
                growAfterOpen: ["cdkConnectedOverlayGrowAfterOpen", "growAfterOpen"],
                push: ["cdkConnectedOverlayPush", "push"],
                positions: ["cdkConnectedOverlayPositions", "positions"],
                origin: ["cdkConnectedOverlayOrigin", "origin"],
                positionStrategy: ["cdkConnectedOverlayPositionStrategy", "positionStrategy"],
                width: ["cdkConnectedOverlayWidth", "width"],
                height: ["cdkConnectedOverlayHeight", "height"],
                minWidth: ["cdkConnectedOverlayMinWidth", "minWidth"],
                minHeight: ["cdkConnectedOverlayMinHeight", "minHeight"],
                backdropClass: ["cdkConnectedOverlayBackdropClass", "backdropClass"],
                panelClass: ["cdkConnectedOverlayPanelClass", "panelClass"],
                transformOriginSelector: ["cdkConnectedOverlayTransformOriginOn", "transformOriginSelector"]
            },
            outputs: {
                backdropClick: "backdropClick",
                positionChange: "positionChange",
                attach: "attach",
                detach: "detach",
                overlayKeydown: "overlayKeydown"
            },
            exportAs: ["cdkConnectedOverlay"],
            features: [o["ɵɵNgOnChangesFeature"]]
        }),
        t
    }();
    var K = {
        provide: q,
        deps: [H],
        useFactory: function(t) {
            return function() {
                return t.scrollStrategies.reposition()
            }
        }
    }
      , Z = function() {
        function t() {}
        return t.ɵmod = o["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = o["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            },
            providers: [H, K],
            imports: [[s.BidiModule, u.g, r.c], r.c]
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && o["ɵɵsetNgModuleScope"](t, {
            declarations: function() {
                return [Y, X]
            },
            imports: function() {
                return [s.BidiModule, u.g, r.c]
            },
            exports: function() {
                return [Y, X, r.c]
            }
        }),
        t
    }();
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    !function(t) {
        function e(e, n) {
            return t.call(this, e, n) || this
        }
        Object(i.c)(e, t),
        e.prototype.ngOnDestroy = function() {
            t.prototype.ngOnDestroy.call(this),
            this._fullScreenEventName && this._fullScreenListener && this._document.removeEventListener(this._fullScreenEventName, this._fullScreenListener)
        }
        ,
        e.prototype._createContainer = function() {
            var e = this;
            t.prototype._createContainer.call(this),
            this._adjustParentForFullscreenChange(),
            this._addFullscreenChangeListener((function() {
                return e._adjustParentForFullscreenChange()
            }
            ))
        }
        ,
        e.prototype._adjustParentForFullscreenChange = function() {
            this._containerElement && (this.getFullscreenElement() || this._document.body).appendChild(this._containerElement)
        }
        ,
        e.prototype._addFullscreenChangeListener = function(t) {
            var e = this._getEventName();
            e && (this._fullScreenListener && this._document.removeEventListener(e, this._fullScreenListener),
            this._document.addEventListener(e, t),
            this._fullScreenListener = t)
        }
        ,
        e.prototype._getEventName = function() {
            if (!this._fullScreenEventName) {
                var t = this._document;
                t.fullscreenEnabled ? this._fullScreenEventName = "fullscreenchange" : t.webkitFullscreenEnabled ? this._fullScreenEventName = "webkitfullscreenchange" : t.mozFullScreenEnabled ? this._fullScreenEventName = "mozfullscreenchange" : t.msFullscreenEnabled && (this._fullScreenEventName = "MSFullscreenChange")
            }
            return this._fullScreenEventName
        }
        ,
        e.prototype.getFullscreenElement = function() {
            var t = this._document;
            return t.fullscreenElement || t.webkitFullscreenElement || t.mozFullScreenElement || t.msFullscreenElement || null
        }
        ,
        e.ctorParameters = function() {
            return [{
                type: void 0,
                decorators: [{
                    type: o.Inject,
                    args: [c.DOCUMENT]
                }]
            }, {
                type: a.a
            }]
        }
        ,
        e.ɵprov = Object(o["ɵɵdefineInjectable"])({
            factory: function() {
                return new e(Object(o["ɵɵinject"])(c.DOCUMENT),Object(o["ɵɵinject"])(a.a))
            },
            token: e,
            providedIn: "root"
        }),
        e.ɵfac = function(t) {
            return new (t || e)(o["ɵɵinject"](c.DOCUMENT),o["ɵɵinject"](a.a))
        }
    }(R)
}
, function(t, e, n) {
    "use strict";
    function i() {
        return "function" == typeof Symbol && Symbol.iterator ? Symbol.iterator : "@@iterator"
    }
    n.d(e, "a", (function() {
        return r
    }
    ));
    var r = i()
}
, function(t, e, n) {
    "use strict";
    function i() {}
    n.d(e, "a", (function() {
        return i
    }
    ))
}
, function(t, e, n) {
    "use strict";
    n.r(e),
    function(t) {
        n.d(e, "CheckState", (function() {
            return p
        }
        )),
        n.d(e, "GroupsTree", (function() {
            return h
        }
        ));
        var i = n(2)
          , r = n(57)
          , o = n(114);
        function a(t, e) {
            var n;
            if ("undefined" == typeof Symbol || null == t[Symbol.iterator]) {
                if (Array.isArray(t) || (n = function(t, e) {
                    if (!t)
                        return;
                    if ("string" == typeof t)
                        return s(t, e);
                    var n = Object.prototype.toString.call(t).slice(8, -1);
                    "Object" === n && t.constructor && (n = t.constructor.name);
                    if ("Map" === n || "Set" === n)
                        return Array.from(t);
                    if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                        return s(t, e)
                }(t)) || e && t && "number" == typeof t.length) {
                    n && (t = n);
                    var i = 0
                      , r = function() {};
                    return {
                        s: r,
                        n: function() {
                            return i >= t.length ? {
                                done: !0
                            } : {
                                done: !1,
                                value: t[i++]
                            }
                        },
                        e: function(t) {
                            throw t
                        },
                        f: r
                    }
                }
                throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
            }
            var o, a = !0, c = !1;
            return {
                s: function() {
                    n = t[Symbol.iterator]()
                },
                n: function() {
                    var t = n.next();
                    return a = t.done,
                    t
                },
                e: function(t) {
                    c = !0,
                    o = t
                },
                f: function() {
                    try {
                        a || null == n.return || n.return()
                    } finally {
                        if (c)
                            throw o
                    }
                }
            }
        }
        function s(t, e) {
            (null == e || e > t.length) && (e = t.length);
            for (var n = 0, i = new Array(e); n < e; n++)
                i[n] = t[n];
            return i
        }
        var c = "Normal"
          , l = "InEdit"
          , u = "InAdding"
          , d = "Added"
          , p = {
            CHECKED: "Checked",
            SEMI_CHECKED: "SemiChecked",
            UNCHECKED: "Unchecked"
        };
        function h(e, n, s) {
            this.initGroup = w,
            this.hoverGroup = S,
            this.hoverGroups = function(t, e) {
                Object(i.forEach)(t, (function(t) {
                    S(t, e)
                }
                ))
            }
            ,
            this.mouseLeaveGroup = function(t) {
                S(t, !1)
            }
            ,
            this.isGroupHovered = function(t) {
                return t.state.hover
            }
            ,
            this.toggleGroupExpanded = function(t) {
                E(t) ? x(t, !1) : x(t, !0)
            }
            ,
            this.expandGroup = x,
            this.expandGroups = M,
            this.isGroupExpanded = E,
            this.revealGroup = function(t, e) {
                M(U(t, e), !0)
            }
            ,
            this.toggleGroupSelection = function(t) {
                A() ? C(t, !1) : C(t, !0)
            }
            ,
            this.selectGroup = C,
            this.selectGroups = function(t, e) {
                Object(i.forEach)(t, (function(t) {
                    C(t, e)
                }
                ))
            }
            ,
            this.isGroupSelected = A,
            this.getSelectedGroup = function() {
                return f
            }
            ,
            this.canAddGroup = function() {
                return f && f.id !== o.GroupService.publicGroupId
            }
            ,
            this.toggleGroupChecked = function(t, e) {
                O(t) || P(t) ? T(t, p.UNCHECKED) : T(t, e)
            }
            ,
            this.checkGroup = T,
            this.checkGroups = function(t, e) {
                Object(i.forEach)(t, (function(t) {
                    T(t, e)
                }
                ))
            }
            ,
            this.isGroupChecked = O,
            this.isGroupSemiChecked = P,
            this.getGroupCheckState = I,
            this.isGroupInAddingState = function(t) {
                return D(t) === u
            }
            ,
            this.isGroupInAddedState = function(t) {
                return D(t) === d
            }
            ,
            this.isGroupInEditState = k,
            this.getGroupState = D,
            this.enableGroup = R,
            this.enableGroups = function(t, e) {
                Object(i.forEach)(t, (function(t) {
                    R(t, e)
                }
                ))
            }
            ,
            this.isGroupEnabled = L,
            this.isGroupExcluded = function(t) {
                return t.state.excluded
            }
            ,
            this.getConfig = function(t) {
                return h[t]
            }
            ,
            this.addGroupInAddingState = function(t, e) {
                W(e),
                x(t, !0);
                var n = function(t) {
                    var e = new r.GroupEntity;
                    return e.name = "",
                    w(e, t),
                    e
                }(t);
                n.state.general = u,
                t.childGroups.unshift(n)
            }
            ,
            this.acceptAddingGroup = function(t, e) {
                var n = V(t, e);
                return n.state.general = d,
                n
            }
            ,
            this.cancelAddingGroup = N,
            this.goToGroupNormalState = function(t) {
                t.state.general = c
            }
            ,
            this.goToGroupEditState = function(t, e) {
                W(e),
                t.previous_name = t.name,
                t.state.general = l
            }
            ,
            this.goToGroupAddedState = function(t) {
                t.state.general = d
            }
            ,
            this.cancelUpdatingGroupName = j,
            this.updateGroupAttributesString = H,
            this.setGroups = function(t) {
                b(s = t)
            }
            ,
            this.getGroupById = function(t, e) {
                return e.filter((function(e) {
                    return e.id == t
                }
                ))[0]
            }
            ,
            this.getGroupByLocalId = V,
            this.getGroupWithAncestors = F,
            this.getGroupAncestors = U,
            this.getGroupWithDescendants = B,
            this.getGroupDescendants = z,
            this.getParentGroup = G,
            this.getGroupsIds = function(t) {
                return t.map((function(t) {
                    return t.id
                }
                ))
            }
            ,
            this.sameGroupsIds = function(t, e) {
                return 0 === _.difference(t, e).length && 0 === _.difference(e, t).length
            }
            ,
            this.discardPublicGroup = function(t) {
                return t.filter((function(t) {
                    return !!t && t !== o.GroupService.publicGroupId && null !== t
                }
                ))
            }
            ;
            s = s || [];
            var h = {
                showChecks: (n = n || {}).showChecks || !1,
                selectable: n.selectable || !1,
                showAttributes: n.showAttributes || !1,
                excludeGroupId: isFinite(n.excludeGroupId) ? n.excludeGroupId : void 0
            }
              , f = void 0
              , m = n.attributeNames || {}
              , g = n.allAttributesText || ""
              , v = n.noAttributesText || ""
              , y = 0;
            function b(t) {
                var n = e.createGroupsArray(t);
                Object(i.forEach)(n, w),
                function(t) {
                    var e = t.map((function(t) {
                        return t.local_id
                    }
                    ));
                    y = Math.max.apply(null, e) + 1
                }(n)
            }
            function w(t, e) {
                t.local_id = t.id || y++,
                t.state = {
                    enabled: !0,
                    hover: !1,
                    expanded: !1,
                    check: p.UNCHECKED,
                    selected: !1,
                    general: c,
                    excluded: void 0 !== t.id && t.id === h.excludeGroupId
                },
                e && void 0 !== e.local_id && (t.parent = e),
                Object(i.forEach)(t.childGroups, (function(e) {
                    e.parent = t
                }
                )),
                H(t),
                function(t) {
                    t.toggleAttribute = function(t) {
                        this.setAttribute(t, !this.isAttributeEnabled(t))
                    }
                    ,
                    t.setAttribute = function(t, e) {
                        e && !this.isAttributeEnabled(t) ? this.attributes.push(t) : !e && this.isAttributeEnabled(t) && this.attributes.splice(this.attributes.indexOf(t), 1)
                    }
                    ,
                    t.isAttributeEnabled = function(t) {
                        return this.attributes.indexOf(t) > -1
                    }
                }(t)
            }
            function S(t, e) {
                t.state.hover = e
            }
            function x(t, e) {
                L(t) && (t.state.expanded = e)
            }
            function M(t, e) {
                Object(i.forEach)(t, (function(t) {
                    x(t, e)
                }
                ))
            }
            function E(t) {
                return t.state.expanded
            }
            function C(e, n) {
                h.selectable && L(e) && (e.state.selected = n,
                f = n ? e : void 0,
                t(".group-attributes.open > button").trigger("click"))
            }
            function A(t) {
                return t.state.selected
            }
            function T(t, e) {
                L(t) && (t.state.check = e)
            }
            function O(t) {
                return I(t) === p.CHECKED
            }
            function P(t) {
                return I(t) === p.SEMI_CHECKED
            }
            function I(t) {
                return t.state.check
            }
            function k(t) {
                return D(t) === l
            }
            function D(t) {
                return t.state.general
            }
            function R(t, e) {
                t.state.enabled = e
            }
            function L(t) {
                return t.state.enabled
            }
            function N(t, e) {
                for (var n = V(t, e), i = G(n, e), r = 0; r < i.childGroups.length; ++r)
                    if (i.childGroups[r].local_id == n.local_id) {
                        i.childGroups.splice(r, 1);
                        break
                    }
            }
            function j(t, e) {
                var n = V(t, e);
                k(n) && (n.name = n.previous_name,
                n.state.general = c)
            }
            function V(t, e) {
                return e.filter((function(e) {
                    return e.local_id == t
                }
                ))[0]
            }
            function F(t, e) {
                var n = U(t, e);
                return n.unshift(t),
                n
            }
            function U(t, e) {
                var n = []
                  , i = G(t, e);
                return i && (n = n.concat(F(i, e))),
                n
            }
            function B(t) {
                var e = z(t);
                return e.unshift(t),
                e
            }
            function z(t) {
                var e = [];
                return Object(i.forEach)(t.childGroups, (function(t) {
                    e = e.concat(B(t))
                }
                )),
                e
            }
            function G(t, e) {
                return e.filter((function(e) {
                    return !!t.parent && e.local_id === t.parent.local_id
                }
                ))[0]
            }
            function H(t) {
                t.attributes_string = function(t) {
                    var e, n = [], i = a(t.attributes);
                    try {
                        for (i.s(); !(e = i.n()).done; ) {
                            var r = e.value;
                            n.push(m[r])
                        }
                    } catch (t) {
                        i.e(t)
                    } finally {
                        i.f()
                    }
                    return 0 === n.length ? v : n.length == Object.keys(m).length ? g : n.join(", ")
                }(t)
            }
            function W(t) {
                Object(i.forEach)(t, (function(e) {
                    D(e) === u && N(e.local_id, t),
                    k(e) && j(e.local_id, t)
                }
                ))
            }
            b(s)
        }
    }
    .call(this, n(19))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "b", (function() {
        return r
    }
    )),
    n.d(e, "a", (function() {
        return o
    }
    ));
    var i = n(151)
      , r = new (n(150).a)(i.a)
      , o = r
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , r = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(0)
      , a = (n(9),
    n(232))
      , s = n(2)
      , c = n(6)
      , l = n(0)
      , u = n(9)
      , d = function() {
        function t(t) {
            var e = this;
            this.featureFlags = void 0,
            this.initialized = t.getApi("features", {}).then((function(t) {
                e.featureFlags = new a.FeatureFlagResponse(t)
            }
            )).catch((function(t) {
                console.warn("Feature flags failed to load due to:", t)
            }
            ))
        }
        return t.prototype.isEnabled = function(t) {
            return i(this, void 0, void 0, (function() {
                return r(this, (function(e) {
                    switch (e.label) {
                    case 0:
                        return [4, this.initialized];
                    case 1:
                        return e.sent(),
                        this.featureFlags && this.featureFlags.isEnabled(t) ? [2] : [2, Promise.reject("The feature " + a.FeatureFlag[t] + " is disabled.")]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.getAllEnabledFeatures = function() {
            return i(this, void 0, void 0, (function() {
                var t, e, n, i;
                return r(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        return [4, this.initialized];
                    case 1:
                        for (r.sent(),
                        t = [],
                        e = 0,
                        n = Object.values(a.FeatureFlag); e < n.length; e++)
                            i = n[e],
                            this.featureFlags.isEnabled(i) && t.push(i.toString());
                        return [2, t]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(l.ɵɵinject(u.RestService))
        }
        ,
        t.ɵprov = l.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.FeatureFlagsService = d,
    l.ɵsetClassMetadata(d, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: u.RestService
        }]
    }
    ), null),
    s.module("IVWebApp").service("FeatureFlagsService", c.downgradeInjectable(d))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(0)
      , r = n(398)
      , o = n(399)
      , a = (n(17),
    n(8))
      , s = n(16)
      , c = n(4)
      , l = n(0)
      , u = n(17)
      , d = function() {
        function t(t) {
            var e = this;
            this.ViewService = t,
            this.updatePointCloudsForMagnification = new s.Signal,
            this.magnificationModeChanged = new s.Signal,
            this.raycastingCamera = new c.PerspectiveCamera,
            this._isEnabled = !1,
            this.ViewService.mainViewDeferred.promise.then((function() {
                var t = e.ViewService.mainView;
                e.magnificationViewport = new r.Viewport(t.divContainer,new o.ViewportInfo("MagnificationCamera","Magnification View",16711680))
            }
            )).catch(a.handleWarning)
        }
        return Object.defineProperty(t.prototype, "isEnabled", {
            get: function() {
                return this._isEnabled
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.updateRayCastingCameraFrustumAndPosition = function() {
            var t = this.ViewService.mainView.getDefaultViewport().getCamera()
              , e = this.magnificationViewport.getCamera();
            if (!(t instanceof c.PerspectiveCamera && e instanceof c.PerspectiveCamera))
                throw new Error("Incorrect Magnification Service Usage");
            this.raycastingCamera = this.raycastingCamera.copy(t),
            this.raycastingCamera.far = this.magnificationViewport.getCamera().position.distanceTo(t.position) + this.magnificationViewport.getCamera().far,
            this.raycastingCamera.updateProjectionMatrix()
        }
        ,
        t.prototype.toggleMagnification = function() {
            this._isEnabled ? this.disableMagnification() : this.enableMagnification()
        }
        ,
        t.prototype.disableMagnification = function() {
            this._isEnabled = !1,
            this.magnificationModeChanged.emit(this._isEnabled)
        }
        ,
        t.prototype.enableMagnification = function() {
            this._isEnabled = !0,
            this.ViewService.mainView.loadPointCloudModule().catch(a.handleWarning),
            this.magnificationModeChanged.emit(this._isEnabled)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(l.ɵɵinject(u.ViewService))
        }
        ,
        t.ɵprov = l.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.MagnificationService = d,
    l.ɵsetClassMetadata(d, [{
        type: i.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: u.ViewService
        }]
    }
    ), null)
}
, function(t, e) {
    var n = Math.ceil
      , i = Math.floor;
    t.exports = function(t) {
        return isNaN(t = +t) ? 0 : (t > 0 ? i : n)(t)
    }
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(70)
      , s = (n(9),
    n(1040))
      , c = (n(27),
    n(6))
      , l = n(0)
      , u = n(0)
      , d = n(9)
      , p = n(27)
      , h = function(t) {
        function e(e, n) {
            var i = t.call(this, s.PoiTypeEntity, e) || this;
            return i.RestService = e,
            i.UserService = n,
            i.path = "poi_types",
            i
        }
        return r(e, t),
        e.prototype.create = function() {
            return t.prototype.create.call(this)
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(u.ɵɵinject(d.RestService),u.ɵɵinject(p.UserService))
        }
        ,
        e.ɵprov = u.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(a.RestRepository);
    e.PoiTypeRepository = h,
    u.ɵsetClassMetadata(h, [{
        type: l.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: d.RestService
        }, {
            type: p.UserService
        }]
    }
    ), null),
    o.module("IVWebApp").service("PoiTypeRepository", c.downgradeInjectable(h))
}
, function(t, e, n) {
    (function(n) {
        var i, r = function() {
            this._tweens = {},
            this._tweensAddedDuringUpdate = {}
        };
        r.prototype = {
            getAll: function() {
                return Object.keys(this._tweens).map(function(t) {
                    return this._tweens[t]
                }
                .bind(this))
            },
            removeAll: function() {
                this._tweens = {}
            },
            add: function(t) {
                this._tweens[t.getId()] = t,
                this._tweensAddedDuringUpdate[t.getId()] = t
            },
            remove: function(t) {
                delete this._tweens[t.getId()],
                delete this._tweensAddedDuringUpdate[t.getId()]
            },
            update: function(t, e) {
                var n = Object.keys(this._tweens);
                if (0 === n.length)
                    return !1;
                for (t = void 0 !== t ? t : a.now(); n.length > 0; ) {
                    this._tweensAddedDuringUpdate = {};
                    for (var i = 0; i < n.length; i++) {
                        var r = this._tweens[n[i]];
                        r && !1 === r.update(t) && (r._isPlaying = !1,
                        e || delete this._tweens[n[i]])
                    }
                    n = Object.keys(this._tweensAddedDuringUpdate)
                }
                return !0
            }
        };
        var o, a = new r;
        a.Group = r,
        a._nextId = 0,
        a.nextId = function() {
            return a._nextId++
        }
        ,
        "undefined" == typeof self && void 0 !== n && n.hrtime ? a.now = function() {
            var t = n.hrtime();
            return 1e3 * t[0] + t[1] / 1e6
        }
        : "undefined" != typeof self && void 0 !== self.performance && void 0 !== self.performance.now ? a.now = self.performance.now.bind(self.performance) : void 0 !== Date.now ? a.now = Date.now : a.now = function() {
            return (new Date).getTime()
        }
        ,
        a.Tween = function(t, e) {
            this._object = t,
            this._valuesStart = {},
            this._valuesEnd = {},
            this._valuesStartRepeat = {},
            this._duration = 1e3,
            this._repeat = 0,
            this._repeatDelayTime = void 0,
            this._yoyo = !1,
            this._isPlaying = !1,
            this._reversed = !1,
            this._delayTime = 0,
            this._startTime = null,
            this._easingFunction = a.Easing.Linear.None,
            this._interpolationFunction = a.Interpolation.Linear,
            this._chainedTweens = [],
            this._onStartCallback = null,
            this._onStartCallbackFired = !1,
            this._onUpdateCallback = null,
            this._onRepeatCallback = null,
            this._onCompleteCallback = null,
            this._onStopCallback = null,
            this._group = e || a,
            this._id = a.nextId()
        }
        ,
        a.Tween.prototype = {
            getId: function() {
                return this._id
            },
            isPlaying: function() {
                return this._isPlaying
            },
            to: function(t, e) {
                return this._valuesEnd = Object.create(t),
                void 0 !== e && (this._duration = e),
                this
            },
            duration: function(t) {
                return this._duration = t,
                this
            },
            start: function(t) {
                for (var e in this._group.add(this),
                this._isPlaying = !0,
                this._onStartCallbackFired = !1,
                this._startTime = void 0 !== t ? "string" == typeof t ? a.now() + parseFloat(t) : t : a.now(),
                this._startTime += this._delayTime,
                this._valuesEnd) {
                    if (this._valuesEnd[e]instanceof Array) {
                        if (0 === this._valuesEnd[e].length)
                            continue;
                        this._valuesEnd[e] = [this._object[e]].concat(this._valuesEnd[e])
                    }
                    void 0 !== this._object[e] && (this._valuesStart[e] = this._object[e],
                    this._valuesStart[e]instanceof Array == !1 && (this._valuesStart[e] *= 1),
                    this._valuesStartRepeat[e] = this._valuesStart[e] || 0)
                }
                return this
            },
            stop: function() {
                return this._isPlaying ? (this._group.remove(this),
                this._isPlaying = !1,
                null !== this._onStopCallback && this._onStopCallback(this._object),
                this.stopChainedTweens(),
                this) : this
            },
            end: function() {
                return this.update(1 / 0),
                this
            },
            stopChainedTweens: function() {
                for (var t = 0, e = this._chainedTweens.length; t < e; t++)
                    this._chainedTweens[t].stop()
            },
            group: function(t) {
                return this._group = t,
                this
            },
            delay: function(t) {
                return this._delayTime = t,
                this
            },
            repeat: function(t) {
                return this._repeat = t,
                this
            },
            repeatDelay: function(t) {
                return this._repeatDelayTime = t,
                this
            },
            yoyo: function(t) {
                return this._yoyo = t,
                this
            },
            easing: function(t) {
                return this._easingFunction = t,
                this
            },
            interpolation: function(t) {
                return this._interpolationFunction = t,
                this
            },
            chain: function() {
                return this._chainedTweens = arguments,
                this
            },
            onStart: function(t) {
                return this._onStartCallback = t,
                this
            },
            onUpdate: function(t) {
                return this._onUpdateCallback = t,
                this
            },
            onRepeat: function(t) {
                return this._onRepeatCallback = t,
                this
            },
            onComplete: function(t) {
                return this._onCompleteCallback = t,
                this
            },
            onStop: function(t) {
                return this._onStopCallback = t,
                this
            },
            update: function(t) {
                var e, n, i;
                if (t < this._startTime)
                    return !0;
                for (e in !1 === this._onStartCallbackFired && (null !== this._onStartCallback && this._onStartCallback(this._object),
                this._onStartCallbackFired = !0),
                n = (t - this._startTime) / this._duration,
                n = 0 === this._duration || n > 1 ? 1 : n,
                i = this._easingFunction(n),
                this._valuesEnd)
                    if (void 0 !== this._valuesStart[e]) {
                        var r = this._valuesStart[e] || 0
                          , o = this._valuesEnd[e];
                        o instanceof Array ? this._object[e] = this._interpolationFunction(o, i) : ("string" == typeof o && (o = "+" === o.charAt(0) || "-" === o.charAt(0) ? r + parseFloat(o) : parseFloat(o)),
                        "number" == typeof o && (this._object[e] = r + (o - r) * i))
                    }
                if (null !== this._onUpdateCallback && this._onUpdateCallback(this._object, n),
                1 === n) {
                    if (this._repeat > 0) {
                        for (e in isFinite(this._repeat) && this._repeat--,
                        this._valuesStartRepeat) {
                            if ("string" == typeof this._valuesEnd[e] && (this._valuesStartRepeat[e] = this._valuesStartRepeat[e] + parseFloat(this._valuesEnd[e])),
                            this._yoyo) {
                                var a = this._valuesStartRepeat[e];
                                this._valuesStartRepeat[e] = this._valuesEnd[e],
                                this._valuesEnd[e] = a
                            }
                            this._valuesStart[e] = this._valuesStartRepeat[e]
                        }
                        return this._yoyo && (this._reversed = !this._reversed),
                        void 0 !== this._repeatDelayTime ? this._startTime = t + this._repeatDelayTime : this._startTime = t + this._delayTime,
                        null !== this._onRepeatCallback && this._onRepeatCallback(this._object),
                        !0
                    }
                    null !== this._onCompleteCallback && this._onCompleteCallback(this._object);
                    for (var s = 0, c = this._chainedTweens.length; s < c; s++)
                        this._chainedTweens[s].start(this._startTime + this._duration);
                    return !1
                }
                return !0
            }
        },
        a.Easing = {
            Linear: {
                None: function(t) {
                    return t
                }
            },
            Quadratic: {
                In: function(t) {
                    return t * t
                },
                Out: function(t) {
                    return t * (2 - t)
                },
                InOut: function(t) {
                    return (t *= 2) < 1 ? .5 * t * t : -.5 * (--t * (t - 2) - 1)
                }
            },
            Cubic: {
                In: function(t) {
                    return t * t * t
                },
                Out: function(t) {
                    return --t * t * t + 1
                },
                InOut: function(t) {
                    return (t *= 2) < 1 ? .5 * t * t * t : .5 * ((t -= 2) * t * t + 2)
                }
            },
            Quartic: {
                In: function(t) {
                    return t * t * t * t
                },
                Out: function(t) {
                    return 1 - --t * t * t * t
                },
                InOut: function(t) {
                    return (t *= 2) < 1 ? .5 * t * t * t * t : -.5 * ((t -= 2) * t * t * t - 2)
                }
            },
            Quintic: {
                In: function(t) {
                    return t * t * t * t * t
                },
                Out: function(t) {
                    return --t * t * t * t * t + 1
                },
                InOut: function(t) {
                    return (t *= 2) < 1 ? .5 * t * t * t * t * t : .5 * ((t -= 2) * t * t * t * t + 2)
                }
            },
            Sinusoidal: {
                In: function(t) {
                    return 1 - Math.cos(t * Math.PI / 2)
                },
                Out: function(t) {
                    return Math.sin(t * Math.PI / 2)
                },
                InOut: function(t) {
                    return .5 * (1 - Math.cos(Math.PI * t))
                }
            },
            Exponential: {
                In: function(t) {
                    return 0 === t ? 0 : Math.pow(1024, t - 1)
                },
                Out: function(t) {
                    return 1 === t ? 1 : 1 - Math.pow(2, -10 * t)
                },
                InOut: function(t) {
                    return 0 === t ? 0 : 1 === t ? 1 : (t *= 2) < 1 ? .5 * Math.pow(1024, t - 1) : .5 * (2 - Math.pow(2, -10 * (t - 1)))
                }
            },
            Circular: {
                In: function(t) {
                    return 1 - Math.sqrt(1 - t * t)
                },
                Out: function(t) {
                    return Math.sqrt(1 - --t * t)
                },
                InOut: function(t) {
                    return (t *= 2) < 1 ? -.5 * (Math.sqrt(1 - t * t) - 1) : .5 * (Math.sqrt(1 - (t -= 2) * t) + 1)
                }
            },
            Elastic: {
                In: function(t) {
                    return 0 === t ? 0 : 1 === t ? 1 : -Math.pow(2, 10 * (t - 1)) * Math.sin(5 * (t - 1.1) * Math.PI)
                },
                Out: function(t) {
                    return 0 === t ? 0 : 1 === t ? 1 : Math.pow(2, -10 * t) * Math.sin(5 * (t - .1) * Math.PI) + 1
                },
                InOut: function(t) {
                    return 0 === t ? 0 : 1 === t ? 1 : (t *= 2) < 1 ? -.5 * Math.pow(2, 10 * (t - 1)) * Math.sin(5 * (t - 1.1) * Math.PI) : .5 * Math.pow(2, -10 * (t - 1)) * Math.sin(5 * (t - 1.1) * Math.PI) + 1
                }
            },
            Back: {
                In: function(t) {
                    var e = 1.70158;
                    return t * t * ((e + 1) * t - e)
                },
                Out: function(t) {
                    var e = 1.70158;
                    return --t * t * ((e + 1) * t + e) + 1
                },
                InOut: function(t) {
                    var e = 2.5949095;
                    return (t *= 2) < 1 ? t * t * ((e + 1) * t - e) * .5 : .5 * ((t -= 2) * t * ((e + 1) * t + e) + 2)
                }
            },
            Bounce: {
                In: function(t) {
                    return 1 - a.Easing.Bounce.Out(1 - t)
                },
                Out: function(t) {
                    return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375
                },
                InOut: function(t) {
                    return t < .5 ? .5 * a.Easing.Bounce.In(2 * t) : .5 * a.Easing.Bounce.Out(2 * t - 1) + .5
                }
            }
        },
        a.Interpolation = {
            Linear: function(t, e) {
                var n = t.length - 1
                  , i = n * e
                  , r = Math.floor(i)
                  , o = a.Interpolation.Utils.Linear;
                return e < 0 ? o(t[0], t[1], i) : e > 1 ? o(t[n], t[n - 1], n - i) : o(t[r], t[r + 1 > n ? n : r + 1], i - r)
            },
            Bezier: function(t, e) {
                for (var n = 0, i = t.length - 1, r = Math.pow, o = a.Interpolation.Utils.Bernstein, s = 0; s <= i; s++)
                    n += r(1 - e, i - s) * r(e, s) * t[s] * o(i, s);
                return n
            },
            CatmullRom: function(t, e) {
                var n = t.length - 1
                  , i = n * e
                  , r = Math.floor(i)
                  , o = a.Interpolation.Utils.CatmullRom;
                return t[0] === t[n] ? (e < 0 && (r = Math.floor(i = n * (1 + e))),
                o(t[(r - 1 + n) % n], t[r], t[(r + 1) % n], t[(r + 2) % n], i - r)) : e < 0 ? t[0] - (o(t[0], t[0], t[1], t[1], -i) - t[0]) : e > 1 ? t[n] - (o(t[n], t[n], t[n - 1], t[n - 1], i - n) - t[n]) : o(t[r ? r - 1 : 0], t[r], t[n < r + 1 ? n : r + 1], t[n < r + 2 ? n : r + 2], i - r)
            },
            Utils: {
                Linear: function(t, e, n) {
                    return (e - t) * n + t
                },
                Bernstein: function(t, e) {
                    var n = a.Interpolation.Utils.Factorial;
                    return n(t) / n(e) / n(t - e)
                },
                Factorial: (o = [1],
                function(t) {
                    var e = 1;
                    if (o[t])
                        return o[t];
                    for (var n = t; n > 1; n--)
                        e *= n;
                    return o[t] = e,
                    e
                }
                ),
                CatmullRom: function(t, e, n, i, r) {
                    var o = .5 * (n - t)
                      , a = .5 * (i - e)
                      , s = r * r;
                    return (2 * e - 2 * n + o + a) * (r * s) + (-3 * e + 3 * n - 2 * o - a) * s + o * r + e
                }
            }
        },
        void 0 === (i = function() {
            return a
        }
        .apply(e, [])) || (t.exports = i)
    }
    ).call(this, n(518))
}
, function(t, e, n) {
    "use strict";
    n.r(e),
    n.d(e, "BrowserModule", (function() {
        return ft
    }
    )),
    n.d(e, "BrowserTransferStateModule", (function() {
        return Ot
    }
    )),
    n.d(e, "By", (function() {
        return _t
    }
    )),
    n.d(e, "DomSanitizer", (function() {
        return nt
    }
    )),
    n.d(e, "EVENT_MANAGER_PLUGINS", (function() {
        return S
    }
    )),
    n.d(e, "EventManager", (function() {
        return x
    }
    )),
    n.d(e, "HAMMER_GESTURE_CONFIG", (function() {
        return G
    }
    )),
    n.d(e, "HAMMER_LOADER", (function() {
        return H
    }
    )),
    n.d(e, "HammerGestureConfig", (function() {
        return W
    }
    )),
    n.d(e, "HammerModule", (function() {
        return Z
    }
    )),
    n.d(e, "Meta", (function() {
        return gt
    }
    )),
    n.d(e, "Title", (function() {
        return yt
    }
    )),
    n.d(e, "TransferState", (function() {
        return At
    }
    )),
    n.d(e, "VERSION", (function() {
        return Pt
    }
    )),
    n.d(e, "disableDebugTools", (function() {
        return Mt
    }
    )),
    n.d(e, "enableDebugTools", (function() {
        return xt
    }
    )),
    n.d(e, "makeStateKey", (function() {
        return Ct
    }
    )),
    n.d(e, "platformBrowser", (function() {
        return pt
    }
    )),
    n.d(e, "ɵBROWSER_SANITIZATION_PROVIDERS", (function() {
        return dt
    }
    )),
    n.d(e, "ɵBROWSER_SANITIZATION_PROVIDERS__POST_R3__", (function() {
        return ut
    }
    )),
    n.d(e, "ɵBrowserDomAdapter", (function() {
        return c
    }
    )),
    n.d(e, "ɵBrowserGetTestability", (function() {
        return h
    }
    )),
    n.d(e, "ɵDomEventsPlugin", (function() {
        return B
    }
    )),
    n.d(e, "ɵDomRendererFactory2", (function() {
        return L
    }
    )),
    n.d(e, "ɵDomSanitizerImpl", (function() {
        return rt
    }
    )),
    n.d(e, "ɵDomSharedStylesHost", (function() {
        return C
    }
    )),
    n.d(e, "ɵELEMENT_PROBE_PROVIDERS", (function() {
        return w
    }
    )),
    n.d(e, "ɵELEMENT_PROBE_PROVIDERS__POST_R3__", (function() {
        return y
    }
    )),
    n.d(e, "ɵHAMMER_PROVIDERS__POST_R3__", (function() {
        return X
    }
    )),
    n.d(e, "ɵHammerGesturesPlugin", (function() {
        return q
    }
    )),
    n.d(e, "ɵINTERNAL_BROWSER_PLATFORM_PROVIDERS", (function() {
        return lt
    }
    )),
    n.d(e, "ɵKeyEventsPlugin", (function() {
        return et
    }
    )),
    n.d(e, "ɵNAMESPACE_URIS", (function() {
        return A
    }
    )),
    n.d(e, "ɵSharedStylesHost", (function() {
        return E
    }
    )),
    n.d(e, "ɵTRANSITION_ID", (function() {
        return u
    }
    )),
    n.d(e, "ɵangular_packages_platform_browser_platform_browser_a", (function() {
        return at
    }
    )),
    n.d(e, "ɵangular_packages_platform_browser_platform_browser_b", (function() {
        return st
    }
    )),
    n.d(e, "ɵangular_packages_platform_browser_platform_browser_c", (function() {
        return ht
    }
    )),
    n.d(e, "ɵangular_packages_platform_browser_platform_browser_d", (function() {
        return mt
    }
    )),
    n.d(e, "ɵangular_packages_platform_browser_platform_browser_e", (function() {
        return vt
    }
    )),
    n.d(e, "ɵangular_packages_platform_browser_platform_browser_f", (function() {
        return Tt
    }
    )),
    n.d(e, "ɵangular_packages_platform_browser_platform_browser_g", (function() {
        return M
    }
    )),
    n.d(e, "ɵangular_packages_platform_browser_platform_browser_h", (function() {
        return Y
    }
    )),
    n.d(e, "ɵangular_packages_platform_browser_platform_browser_i", (function() {
        return K
    }
    )),
    n.d(e, "ɵangular_packages_platform_browser_platform_browser_j", (function() {
        return it
    }
    )),
    n.d(e, "ɵangular_packages_platform_browser_platform_browser_k", (function() {
        return d
    }
    )),
    n.d(e, "ɵangular_packages_platform_browser_platform_browser_l", (function() {
        return p
    }
    )),
    n.d(e, "ɵangular_packages_platform_browser_platform_browser_m", (function() {
        return v
    }
    )),
    n.d(e, "ɵangular_packages_platform_browser_platform_browser_n", (function() {
        return b
    }
    )),
    n.d(e, "ɵangular_packages_platform_browser_platform_browser_o", (function() {
        return s
    }
    )),
    n.d(e, "ɵescapeHtml", (function() {
        return Et
    }
    )),
    n.d(e, "ɵflattenStyles", (function() {
        return D
    }
    )),
    n.d(e, "ɵinitDomAdapter", (function() {
        return ot
    }
    )),
    n.d(e, "ɵshimContentAttribute", (function() {
        return I
    }
    )),
    n.d(e, "ɵshimHostAttribute", (function() {
        return k
    }
    ));
    var i = n(1)
      , r = n(3)
      , o = n(0);
    n.d(e, "ɵgetDOM", (function() {
        return r["ɵgetDOM"]
    }
    ));
    /**
 * @license Angular v9.1.9
 * (c) 2010-2020 Google LLC. https://angular.io/
 * License: MIT
 */
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var a, s = function(t) {
        function e() {
            return t.call(this) || this
        }
        return Object(i.c)(e, t),
        e.prototype.supportsDOMEvents = function() {
            return !0
        }
        ,
        e
    }(r["ɵDomAdapter"]), c = (function() {
        if (o["ɵglobal"].Node)
            o["ɵglobal"].Node.prototype.contains
    }(),
    function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return Object(i.c)(e, t),
        e.makeCurrent = function() {
            Object(r["ɵsetRootDomAdapter"])(new e)
        }
        ,
        e.prototype.getProperty = function(t, e) {
            return t[e]
        }
        ,
        e.prototype.log = function(t) {
            window.console && window.console.log && window.console.log(t)
        }
        ,
        e.prototype.logGroup = function(t) {
            window.console && window.console.group && window.console.group(t)
        }
        ,
        e.prototype.logGroupEnd = function() {
            window.console && window.console.groupEnd && window.console.groupEnd()
        }
        ,
        e.prototype.onAndCancel = function(t, e, n) {
            return t.addEventListener(e, n, !1),
            function() {
                t.removeEventListener(e, n, !1)
            }
        }
        ,
        e.prototype.dispatchEvent = function(t, e) {
            t.dispatchEvent(e)
        }
        ,
        e.prototype.remove = function(t) {
            return t.parentNode && t.parentNode.removeChild(t),
            t
        }
        ,
        e.prototype.getValue = function(t) {
            return t.value
        }
        ,
        e.prototype.createElement = function(t, e) {
            return (e = e || this.getDefaultDocument()).createElement(t)
        }
        ,
        e.prototype.createHtmlDocument = function() {
            return document.implementation.createHTMLDocument("fakeTitle")
        }
        ,
        e.prototype.getDefaultDocument = function() {
            return document
        }
        ,
        e.prototype.isElementNode = function(t) {
            return t.nodeType === Node.ELEMENT_NODE
        }
        ,
        e.prototype.isShadowRoot = function(t) {
            return t instanceof DocumentFragment
        }
        ,
        e.prototype.getGlobalEventTarget = function(t, e) {
            return "window" === e ? window : "document" === e ? t : "body" === e ? t.body : null
        }
        ,
        e.prototype.getHistory = function() {
            return window.history
        }
        ,
        e.prototype.getLocation = function() {
            return window.location
        }
        ,
        e.prototype.getBaseHref = function(t) {
            var e = function() {
                if (!l && !(l = document.querySelector("base")))
                    return null;
                return l.getAttribute("href")
            }();
            return null == e ? null : function(t) {
                a || (a = document.createElement("a"));
                return a.setAttribute("href", t),
                "/" === a.pathname.charAt(0) ? a.pathname : "/" + a.pathname
            }/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
            (e)
        }
        ,
        e.prototype.resetBaseElement = function() {
            l = null
        }
        ,
        e.prototype.getUserAgent = function() {
            return window.navigator.userAgent
        }
        ,
        e.prototype.performanceNow = function() {
            return window.performance && window.performance.now ? window.performance.now() : (new Date).getTime()
        }
        ,
        e.prototype.supportsCookies = function() {
            return !0
        }
        ,
        e.prototype.getCookie = function(t) {
            return Object(r["ɵparseCookieValue"])(document.cookie, t)
        }
        ,
        e
    }(s)), l = null;
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var u = new o.InjectionToken("TRANSITION_ID");
    function d(t, e, n) {
        return function() {
            n.get(o.ApplicationInitStatus).donePromise.then((function() {
                var n = Object(r["ɵgetDOM"])();
                Array.prototype.slice.apply(e.querySelectorAll("style[ng-transition]")).filter((function(e) {
                    return e.getAttribute("ng-transition") === t
                }
                )).forEach((function(t) {
                    return n.remove(t)
                }
                ))
            }
            ))
        }
    }
    var p = [{
        provide: o.APP_INITIALIZER,
        useFactory: d,
        deps: [u, r.DOCUMENT, o.Injector],
        multi: !0
    }]
      , h = function() {
        function t() {}
        return t.init = function() {
            Object(o.setTestabilityGetter)(new t)
        }
        ,
        t.prototype.addToWindow = function(t) {
            o["ɵglobal"].getAngularTestability = function(e, n) {
                void 0 === n && (n = !0);
                var i = t.findTestabilityInTree(e, n);
                if (null == i)
                    throw new Error("Could not find testability for element.");
                return i
            }
            ,
            o["ɵglobal"].getAllAngularTestabilities = function() {
                return t.getAllTestabilities()
            }
            ,
            o["ɵglobal"].getAllAngularRootElements = function() {
                return t.getAllRootElements()
            }
            ;
            o["ɵglobal"].frameworkStabilizers || (o["ɵglobal"].frameworkStabilizers = []),
            o["ɵglobal"].frameworkStabilizers.push((function(t) {
                var e = o["ɵglobal"].getAllAngularTestabilities()
                  , n = e.length
                  , i = !1
                  , r = function(e) {
                    i = i || e,
                    0 == --n && t(i)
                };
                e.forEach((function(t) {
                    t.whenStable(r)
                }
                ))
            }
            ))
        }
        ,
        t.prototype.findTestabilityInTree = function(t, e, n) {
            if (null == e)
                return null;
            var i = t.getTestability(e);
            return null != i ? i : n ? Object(r["ɵgetDOM"])().isShadowRoot(e) ? this.findTestabilityInTree(t, e.host, !0) : this.findTestabilityInTree(t, e.parentElement, !0) : null
        }
        ,
        t
    }();
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function f(t, e) {
        "undefined" != typeof COMPILED && COMPILED || ((o["ɵglobal"].ng = o["ɵglobal"].ng || {})[t] = e)
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var m = {
        ApplicationRef: o.ApplicationRef,
        NgZone: o.NgZone
    };
    function g(t) {
        return Object(o["ɵgetDebugNodeR2"])(t)
    }
    function v(t) {
        return f("probe", g),
        f("coreTokens", Object(i.a)(Object(i.a)({}, m), (t || []).reduce((function(t, e) {
            return t[e.name] = e.token,
            t
        }
        ), {}))),
        function() {
            return g
        }
    }
    var y = []
      , b = [{
        provide: o.APP_INITIALIZER,
        useFactory: v,
        deps: [[o.NgProbeToken, new o.Optional]],
        multi: !0
    }]
      , w = y
      , S = new o.InjectionToken("EventManagerPlugins")
      , x = function() {
        function t(t, e) {
            var n = this;
            this._zone = e,
            this._eventNameToPlugin = new Map,
            t.forEach((function(t) {
                return t.manager = n
            }
            )),
            this._plugins = t.slice().reverse()
        }
        return t.prototype.addEventListener = function(t, e, n) {
            return this._findPluginFor(e).addEventListener(t, e, n)
        }
        ,
        t.prototype.addGlobalEventListener = function(t, e, n) {
            return this._findPluginFor(e).addGlobalEventListener(t, e, n)
        }
        ,
        t.prototype.getZone = function() {
            return this._zone
        }
        ,
        t.prototype._findPluginFor = function(t) {
            var e = this._eventNameToPlugin.get(t);
            if (e)
                return e;
            for (var n = this._plugins, i = 0; i < n.length; i++) {
                var r = n[i];
                if (r.supports(t))
                    return this._eventNameToPlugin.set(t, r),
                    r
            }
            throw new Error("No event manager plugin found for event " + t)
        }
        ,
        (t = Object(i.b)([Object(i.e)(0, Object(o.Inject)(S)), Object(i.d)("design:paramtypes", [Array, o.NgZone])], t)).ɵfac = function(e) {
            return new (e || t)(o["ɵɵinject"](S),o["ɵɵinject"](o.NgZone))
        }
        ,
        t.ɵprov = o["ɵɵdefineInjectable"]({
            token: t,
            factory: function(e) {
                return t.ɵfac(e)
            }
        }),
        t
    }()
      , M = function() {
        function t(t) {
            this._doc = t
        }
        return t.prototype.addGlobalEventListener = function(t, e, n) {
            var i = Object(r["ɵgetDOM"])().getGlobalEventTarget(this._doc, t);
            if (!i)
                throw new Error("Unsupported event target " + i + " for event " + e);
            return this.addEventListener(i, e, n)
        }
        ,
        t
    }()
      , E = function() {
        function t() {
            this._stylesSet = new Set
        }
        return t.prototype.addStyles = function(t) {
            var e = this
              , n = new Set;
            t.forEach((function(t) {
                e._stylesSet.has(t) || (e._stylesSet.add(t),
                n.add(t))
            }
            )),
            this.onStylesAdded(n)
        }
        ,
        t.prototype.onStylesAdded = function(t) {}
        ,
        t.prototype.getAllStyles = function() {
            return Array.from(this._stylesSet)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵprov = o["ɵɵdefineInjectable"]({
            token: t,
            factory: function(e) {
                return t.ɵfac(e)
            }
        }),
        t
    }()
      , C = function(t) {
        function e(e) {
            var n = t.call(this) || this;
            return n._doc = e,
            n._hostNodes = new Set,
            n._styleNodes = new Set,
            n._hostNodes.add(e.head),
            n
        }
        return Object(i.c)(e, t),
        e.prototype._addStylesToHost = function(t, e) {
            var n = this;
            t.forEach((function(t) {
                var i = n._doc.createElement("style");
                i.textContent = t,
                n._styleNodes.add(e.appendChild(i))
            }
            ))
        }
        ,
        e.prototype.addHost = function(t) {
            this._addStylesToHost(this._stylesSet, t),
            this._hostNodes.add(t)
        }
        ,
        e.prototype.removeHost = function(t) {
            this._hostNodes.delete(t)
        }
        ,
        e.prototype.onStylesAdded = function(t) {
            var e = this;
            this._hostNodes.forEach((function(n) {
                return e._addStylesToHost(t, n)
            }
            ))
        }
        ,
        e.prototype.ngOnDestroy = function() {
            this._styleNodes.forEach((function(t) {
                return Object(r["ɵgetDOM"])().remove(t)
            }
            ))
        }
        ,
        (e = Object(i.b)([Object(i.e)(0, Object(o.Inject)(r.DOCUMENT)), Object(i.d)("design:paramtypes", [Object])], e)).ɵfac = function(t) {
            return new (t || e)(o["ɵɵinject"](r.DOCUMENT))
        }
        ,
        e.ɵprov = o["ɵɵdefineInjectable"]({
            token: e,
            factory: function(t) {
                return e.ɵfac(t)
            }
        }),
        e
    }(E)
      , A = {
        svg: "http://www.w3.org/2000/svg",
        xhtml: "http://www.w3.org/1999/xhtml",
        xlink: "http://www.w3.org/1999/xlink",
        xml: "http://www.w3.org/XML/1998/namespace",
        xmlns: "http://www.w3.org/2000/xmlns/"
    }
      , T = /%COMP%/g
      , O = "undefined" == typeof ngDevMode || !!ngDevMode
      , _ = "_nghost-%COMP%"
      , P = "_ngcontent-%COMP%";
    function I(t) {
        return P.replace(T, t)
    }
    function k(t) {
        return _.replace(T, t)
    }
    function D(t, e, n) {
        for (var i = 0; i < e.length; i++) {
            var r = e[i];
            Array.isArray(r) ? D(t, r, n) : (r = r.replace(T, t),
            n.push(r))
        }
        return n
    }
    function R(t) {
        return function(e) {
            if ("__ngUnwrap__" === e)
                return t;
            !1 === t(e) && (e.preventDefault(),
            e.returnValue = !1)
        }
    }
    var L = function() {
        function t(t, e, n) {
            this.eventManager = t,
            this.sharedStylesHost = e,
            this.appId = n,
            this.rendererByCompId = new Map,
            this.defaultRenderer = new N(t)
        }
        return t.prototype.createRenderer = function(t, e) {
            if (!t || !e)
                return this.defaultRenderer;
            switch (e.encapsulation) {
            case o.ViewEncapsulation.Emulated:
                var n = this.rendererByCompId.get(e.id);
                return n || (n = new F(this.eventManager,this.sharedStylesHost,e,this.appId),
                this.rendererByCompId.set(e.id, n)),
                n.applyToHost(t),
                n;
            case o.ViewEncapsulation.Native:
            case o.ViewEncapsulation.ShadowDom:
                return new U(this.eventManager,this.sharedStylesHost,t,e);
            default:
                if (!this.rendererByCompId.has(e.id)) {
                    var i = D(e.id, e.styles, []);
                    this.sharedStylesHost.addStyles(i),
                    this.rendererByCompId.set(e.id, this.defaultRenderer)
                }
                return this.defaultRenderer
            }
        }
        ,
        t.prototype.begin = function() {}
        ,
        t.prototype.end = function() {}
        ,
        (t = Object(i.b)([Object(i.e)(2, Object(o.Inject)(o.APP_ID)), Object(i.d)("design:paramtypes", [x, C, String])], t)).ɵfac = function(e) {
            return new (e || t)(o["ɵɵinject"](x),o["ɵɵinject"](C),o["ɵɵinject"](o.APP_ID))
        }
        ,
        t.ɵprov = o["ɵɵdefineInjectable"]({
            token: t,
            factory: function(e) {
                return t.ɵfac(e)
            }
        }),
        t
    }()
      , N = function() {
        function t(t) {
            this.eventManager = t,
            this.data = Object.create(null)
        }
        return t.prototype.destroy = function() {}
        ,
        t.prototype.createElement = function(t, e) {
            return e ? document.createElementNS(A[e] || e, t) : document.createElement(t)
        }
        ,
        t.prototype.createComment = function(t) {
            return document.createComment(t)
        }
        ,
        t.prototype.createText = function(t) {
            return document.createTextNode(t)
        }
        ,
        t.prototype.appendChild = function(t, e) {
            t.appendChild(e)
        }
        ,
        t.prototype.insertBefore = function(t, e, n) {
            t && t.insertBefore(e, n)
        }
        ,
        t.prototype.removeChild = function(t, e) {
            t && t.removeChild(e)
        }
        ,
        t.prototype.selectRootElement = function(t, e) {
            var n = "string" == typeof t ? document.querySelector(t) : t;
            if (!n)
                throw new Error('The selector "' + t + '" did not match any elements');
            return e || (n.textContent = ""),
            n
        }
        ,
        t.prototype.parentNode = function(t) {
            return t.parentNode
        }
        ,
        t.prototype.nextSibling = function(t) {
            return t.nextSibling
        }
        ,
        t.prototype.setAttribute = function(t, e, n, i) {
            if (i) {
                e = i + ":" + e;
                var r = A[i];
                r ? t.setAttributeNS(r, e, n) : t.setAttribute(e, n)
            } else
                t.setAttribute(e, n)
        }
        ,
        t.prototype.removeAttribute = function(t, e, n) {
            if (n) {
                var i = A[n];
                i ? t.removeAttributeNS(i, e) : t.removeAttribute(n + ":" + e)
            } else
                t.removeAttribute(e)
        }
        ,
        t.prototype.addClass = function(t, e) {
            t.classList.add(e)
        }
        ,
        t.prototype.removeClass = function(t, e) {
            t.classList.remove(e)
        }
        ,
        t.prototype.setStyle = function(t, e, n, i) {
            i & o.RendererStyleFlags2.DashCase ? t.style.setProperty(e, n, i & o.RendererStyleFlags2.Important ? "important" : "") : t.style[e] = n
        }
        ,
        t.prototype.removeStyle = function(t, e, n) {
            n & o.RendererStyleFlags2.DashCase ? t.style.removeProperty(e) : t.style[e] = ""
        }
        ,
        t.prototype.setProperty = function(t, e, n) {
            O && V(e, "property"),
            t[e] = n
        }
        ,
        t.prototype.setValue = function(t, e) {
            t.nodeValue = e
        }
        ,
        t.prototype.listen = function(t, e, n) {
            return O && V(e, "listener"),
            "string" == typeof t ? this.eventManager.addGlobalEventListener(t, e, R(n)) : this.eventManager.addEventListener(t, e, R(n))
        }
        ,
        t
    }()
      , j = "@".charCodeAt(0);
    function V(t, e) {
        if (t.charCodeAt(0) === j)
            throw new Error("Found the synthetic " + e + " " + t + '. Please include either "BrowserAnimationsModule" or "NoopAnimationsModule" in your application.')
    }
    var F = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e) || this;
            o.component = i;
            var a = D(r + "-" + i.id, i.styles, []);
            return n.addStyles(a),
            o.contentAttr = I(r + "-" + i.id),
            o.hostAttr = k(r + "-" + i.id),
            o
        }
        return Object(i.c)(e, t),
        e.prototype.applyToHost = function(e) {
            t.prototype.setAttribute.call(this, e, this.hostAttr, "")
        }
        ,
        e.prototype.createElement = function(e, n) {
            var i = t.prototype.createElement.call(this, e, n);
            return t.prototype.setAttribute.call(this, i, this.contentAttr, ""),
            i
        }
        ,
        e
    }(N)
      , U = function(t) {
        function e(e, n, i, r) {
            var a = t.call(this, e) || this;
            a.sharedStylesHost = n,
            a.hostEl = i,
            a.component = r,
            r.encapsulation === o.ViewEncapsulation.ShadowDom ? a.shadowRoot = i.attachShadow({
                mode: "open"
            }) : a.shadowRoot = i.createShadowRoot(),
            a.sharedStylesHost.addHost(a.shadowRoot);
            for (var s = D(r.id, r.styles, []), c = 0; c < s.length; c++) {
                var l = document.createElement("style");
                l.textContent = s[c],
                a.shadowRoot.appendChild(l)
            }
            return a
        }
        return Object(i.c)(e, t),
        e.prototype.nodeOrShadowRoot = function(t) {
            return t === this.hostEl ? this.shadowRoot : t
        }
        ,
        e.prototype.destroy = function() {
            this.sharedStylesHost.removeHost(this.shadowRoot)
        }
        ,
        e.prototype.appendChild = function(e, n) {
            return t.prototype.appendChild.call(this, this.nodeOrShadowRoot(e), n)
        }
        ,
        e.prototype.insertBefore = function(e, n, i) {
            return t.prototype.insertBefore.call(this, this.nodeOrShadowRoot(e), n, i)
        }
        ,
        e.prototype.removeChild = function(e, n) {
            return t.prototype.removeChild.call(this, this.nodeOrShadowRoot(e), n)
        }
        ,
        e.prototype.parentNode = function(e) {
            return this.nodeOrShadowRoot(t.prototype.parentNode.call(this, this.nodeOrShadowRoot(e)))
        }
        ,
        e
    }(N)
      , B = function(t) {
        function e(e) {
            return t.call(this, e) || this
        }
        return Object(i.c)(e, t),
        e.prototype.supports = function(t) {
            return !0
        }
        ,
        e.prototype.addEventListener = function(t, e, n) {
            var i = this;
            return t.addEventListener(e, n, !1),
            function() {
                return i.removeEventListener(t, e, n)
            }
        }
        ,
        e.prototype.removeEventListener = function(t, e, n) {
            return t.removeEventListener(e, n)
        }
        ,
        (e = Object(i.b)([Object(i.e)(0, Object(o.Inject)(r.DOCUMENT)), Object(i.d)("design:paramtypes", [Object])], e)).ɵfac = function(t) {
            return new (t || e)(o["ɵɵinject"](r.DOCUMENT))
        }
        ,
        e.ɵprov = o["ɵɵdefineInjectable"]({
            token: e,
            factory: function(t) {
                return e.ɵfac(t)
            }
        }),
        e
    }(M)
      , z = {
        pan: !0,
        panstart: !0,
        panmove: !0,
        panend: !0,
        pancancel: !0,
        panleft: !0,
        panright: !0,
        panup: !0,
        pandown: !0,
        pinch: !0,
        pinchstart: !0,
        pinchmove: !0,
        pinchend: !0,
        pinchcancel: !0,
        pinchin: !0,
        pinchout: !0,
        press: !0,
        pressup: !0,
        rotate: !0,
        rotatestart: !0,
        rotatemove: !0,
        rotateend: !0,
        rotatecancel: !0,
        swipe: !0,
        swipeleft: !0,
        swiperight: !0,
        swipeup: !0,
        swipedown: !0,
        tap: !0
    }
      , G = new o.InjectionToken("HammerGestureConfig")
      , H = new o.InjectionToken("HammerLoader")
      , W = function() {
        function t() {
            this.events = [],
            this.overrides = {}
        }
        return t.prototype.buildHammer = function(t) {
            var e = new Hammer(t,this.options);
            for (var n in e.get("pinch").set({
                enable: !0
            }),
            e.get("rotate").set({
                enable: !0
            }),
            this.overrides)
                e.get(n).set(this.overrides[n]);
            return e
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵprov = o["ɵɵdefineInjectable"]({
            token: t,
            factory: function(e) {
                return t.ɵfac(e)
            }
        }),
        t
    }()
      , q = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e) || this;
            return o._config = n,
            o.console = i,
            o.loader = r,
            o
        }
        return Object(i.c)(e, t),
        e.prototype.supports = function(t) {
            return !(!z.hasOwnProperty(t.toLowerCase()) && !this.isCustomEvent(t)) && (!(!window.Hammer && !this.loader) || (this.console.warn('The "' + t + '" event cannot be bound because Hammer.JS is not loaded and no custom loader has been specified.'),
            !1))
        }
        ,
        e.prototype.addEventListener = function(t, e, n) {
            var i = this
              , r = this.manager.getZone();
            if (e = e.toLowerCase(),
            !window.Hammer && this.loader) {
                var o = !1
                  , a = function() {
                    o = !0
                };
                return this.loader().then((function() {
                    if (!window.Hammer)
                        return i.console.warn("The custom HAMMER_LOADER completed, but Hammer.JS is not present."),
                        void (a = function() {}
                        );
                    o || (a = i.addEventListener(t, e, n))
                }
                )).catch((function() {
                    i.console.warn('The "' + e + '" event cannot be bound because the custom Hammer.JS loader failed.'),
                    a = function() {}
                }
                )),
                function() {
                    a()
                }
            }
            return r.runOutsideAngular((function() {
                var o = i._config.buildHammer(t)
                  , a = function(t) {
                    r.runGuarded((function() {
                        n(t)
                    }
                    ))
                };
                return o.on(e, a),
                function() {
                    o.off(e, a),
                    "function" == typeof o.destroy && o.destroy()
                }
            }
            ))
        }
        ,
        e.prototype.isCustomEvent = function(t) {
            return this._config.events.indexOf(t) > -1
        }
        ,
        (e = Object(i.b)([Object(i.e)(0, Object(o.Inject)(r.DOCUMENT)), Object(i.e)(1, Object(o.Inject)(G)), Object(i.e)(3, Object(o.Optional)()), Object(i.e)(3, Object(o.Inject)(H)), Object(i.d)("design:paramtypes", [Object, W, o["ɵConsole"], Object])], e)).ɵfac = function(t) {
            return new (t || e)(o["ɵɵinject"](r.DOCUMENT),o["ɵɵinject"](G),o["ɵɵinject"](o["ɵConsole"]),o["ɵɵinject"](H, 8))
        }
        ,
        e.ɵprov = o["ɵɵdefineInjectable"]({
            token: e,
            factory: function(t) {
                return e.ɵfac(t)
            }
        }),
        e
    }(M)
      , X = []
      , Y = [{
        provide: S,
        useClass: q,
        multi: !0,
        deps: [r.DOCUMENT, G, o["ɵConsole"], [new o.Optional, H]]
    }, {
        provide: G,
        useClass: W,
        deps: []
    }]
      , K = X
      , Z = function() {
        function t() {}
        return t.ɵmod = o["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = o["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            },
            providers: Y
        }),
        t
    }()
      , J = ["alt", "control", "meta", "shift"]
      , Q = {
        "\b": "Backspace",
        "\t": "Tab",
        "": "Delete",
        "": "Escape",
        Del: "Delete",
        Esc: "Escape",
        Left: "ArrowLeft",
        Right: "ArrowRight",
        Up: "ArrowUp",
        Down: "ArrowDown",
        Menu: "ContextMenu",
        Scroll: "ScrollLock",
        Win: "OS"
    }
      , $ = {
        A: "1",
        B: "2",
        C: "3",
        D: "4",
        E: "5",
        F: "6",
        G: "7",
        H: "8",
        I: "9",
        J: "*",
        K: "+",
        M: "-",
        N: ".",
        O: "/",
        "`": "0",
        "": "NumLock"
    }
      , tt = {
        alt: function(t) {
            return t.altKey
        },
        control: function(t) {
            return t.ctrlKey
        },
        meta: function(t) {
            return t.metaKey
        },
        shift: function(t) {
            return t.shiftKey
        }
    }
      , et = function(t) {
        function e(e) {
            return t.call(this, e) || this
        }
        var n;
        return Object(i.c)(e, t),
        n = e,
        e.prototype.supports = function(t) {
            return null != n.parseEventName(t)
        }
        ,
        e.prototype.addEventListener = function(t, e, i) {
            var o = n.parseEventName(e)
              , a = n.eventCallback(o.fullKey, i, this.manager.getZone());
            return this.manager.getZone().runOutsideAngular((function() {
                return Object(r["ɵgetDOM"])().onAndCancel(t, o.domEventName, a)
            }
            ))
        }
        ,
        e.parseEventName = function(t) {
            var e = t.toLowerCase().split(".")
              , i = e.shift();
            if (0 === e.length || "keydown" !== i && "keyup" !== i)
                return null;
            var r = n._normalizeKey(e.pop())
              , o = "";
            if (J.forEach((function(t) {
                var n = e.indexOf(t);
                n > -1 && (e.splice(n, 1),
                o += t + ".")
            }
            )),
            o += r,
            0 != e.length || 0 === r.length)
                return null;
            var a = {};
            return a.domEventName = i,
            a.fullKey = o,
            a
        }
        ,
        e.getEventFullKey = function(t) {
            var e = ""
              , n = function(t) {
                var e = t.key;
                if (null == e) {
                    if (null == (e = t.keyIdentifier))
                        return "Unidentified";
                    e.startsWith("U+") && (e = String.fromCharCode(parseInt(e.substring(2), 16)),
                    3 === t.location && $.hasOwnProperty(e) && (e = $[e]))
                }
                return Q[e] || e
            }(t);
            return " " === (n = n.toLowerCase()) ? n = "space" : "." === n && (n = "dot"),
            J.forEach((function(i) {
                i != n && ((0,
                tt[i])(t) && (e += i + "."))
            }
            )),
            e += n
        }
        ,
        e.eventCallback = function(t, e, i) {
            return function(r) {
                n.getEventFullKey(r) === t && i.runGuarded((function() {
                    return e(r)
                }
                ))
            }
        }
        ,
        e._normalizeKey = function(t) {
            switch (t) {
            case "esc":
                return "escape";
            default:
                return t
            }
        }
        ,
        (e = n = Object(i.b)([Object(i.e)(0, Object(o.Inject)(r.DOCUMENT)), Object(i.d)("design:paramtypes", [Object])], e)).ɵfac = function(t) {
            return new (t || e)(o["ɵɵinject"](r.DOCUMENT))
        }
        ,
        e.ɵprov = o["ɵɵdefineInjectable"]({
            token: e,
            factory: function(t) {
                return e.ɵfac(t)
            }
        }),
        e
    }(M);
    var nt = function() {
        function t() {}
        return t.ɵprov = Object(o["ɵɵdefineInjectable"])({
            factory: function() {
                return Object(o["ɵɵinject"])(rt)
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t
    }();
    function it(t) {
        return new rt(t.get(r.DOCUMENT))
    }
    var rt = function(t) {
        function e(e) {
            var n = t.call(this) || this;
            return n._doc = e,
            n
        }
        return Object(i.c)(e, t),
        e.prototype.sanitize = function(t, e) {
            if (null == e)
                return null;
            switch (t) {
            case o.SecurityContext.NONE:
                return e;
            case o.SecurityContext.HTML:
                return Object(o["ɵallowSanitizationBypassAndThrow"])(e, "HTML") ? Object(o["ɵunwrapSafeValue"])(e) : Object(o["ɵ_sanitizeHtml"])(this._doc, String(e));
            case o.SecurityContext.STYLE:
                return Object(o["ɵallowSanitizationBypassAndThrow"])(e, "Style") ? Object(o["ɵunwrapSafeValue"])(e) : Object(o["ɵ_sanitizeStyle"])(e);
            case o.SecurityContext.SCRIPT:
                if (Object(o["ɵallowSanitizationBypassAndThrow"])(e, "Script"))
                    return Object(o["ɵunwrapSafeValue"])(e);
                throw new Error("unsafe value used in a script context");
            case o.SecurityContext.URL:
                Object(o["ɵgetSanitizationBypassType"])(e);
                return Object(o["ɵallowSanitizationBypassAndThrow"])(e, "URL") ? Object(o["ɵunwrapSafeValue"])(e) : Object(o["ɵ_sanitizeUrl"])(String(e));
            case o.SecurityContext.RESOURCE_URL:
                if (Object(o["ɵallowSanitizationBypassAndThrow"])(e, "ResourceURL"))
                    return Object(o["ɵunwrapSafeValue"])(e);
                throw new Error("unsafe value used in a resource URL context (see http://g.co/ng/security#xss)");
            default:
                throw new Error("Unexpected SecurityContext " + t + " (see http://g.co/ng/security#xss)")
            }
        }
        ,
        e.prototype.bypassSecurityTrustHtml = function(t) {
            return Object(o["ɵbypassSanitizationTrustHtml"])(t)
        }
        ,
        e.prototype.bypassSecurityTrustStyle = function(t) {
            return Object(o["ɵbypassSanitizationTrustStyle"])(t)
        }
        ,
        e.prototype.bypassSecurityTrustScript = function(t) {
            return Object(o["ɵbypassSanitizationTrustScript"])(t)
        }
        ,
        e.prototype.bypassSecurityTrustUrl = function(t) {
            return Object(o["ɵbypassSanitizationTrustUrl"])(t)
        }
        ,
        e.prototype.bypassSecurityTrustResourceUrl = function(t) {
            return Object(o["ɵbypassSanitizationTrustResourceUrl"])(t)
        }
        ,
        e.ɵprov = Object(o["ɵɵdefineInjectable"])({
            factory: function() {
                return it(Object(o["ɵɵinject"])(o.INJECTOR))
            },
            token: e,
            providedIn: "root"
        }),
        (e = Object(i.b)([Object(i.e)(0, Object(o.Inject)(r.DOCUMENT)), Object(i.d)("design:paramtypes", [Object])], e)).ɵfac = function(t) {
            return new (t || e)(o["ɵɵinject"](r.DOCUMENT))
        }
        ,
        e
    }(nt);
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function ot() {
        c.makeCurrent(),
        h.init()
    }
    function at() {
        return new o.ErrorHandler
    }
    function st() {
        return Object(o["ɵsetDocument"])(document),
        document
    }
    var ct = r["ɵPLATFORM_BROWSER_ID"]
      , lt = [{
        provide: o.PLATFORM_ID,
        useValue: ct
    }, {
        provide: o.PLATFORM_INITIALIZER,
        useValue: ot,
        multi: !0
    }, {
        provide: r.DOCUMENT,
        useFactory: st,
        deps: []
    }]
      , ut = (o.Sanitizer,
    r.DOCUMENT,
    [])
      , dt = ut
      , pt = Object(o.createPlatformFactory)(o.platformCore, "browser", lt)
      , ht = [dt, {
        provide: o["ɵINJECTOR_SCOPE"],
        useValue: "root"
    }, {
        provide: o.ErrorHandler,
        useFactory: at,
        deps: []
    }, {
        provide: S,
        useClass: B,
        multi: !0,
        deps: [r.DOCUMENT, o.NgZone, o.PLATFORM_ID]
    }, {
        provide: S,
        useClass: et,
        multi: !0,
        deps: [r.DOCUMENT]
    }, K, {
        provide: L,
        useClass: L,
        deps: [x, C, o.APP_ID]
    }, {
        provide: o.RendererFactory2,
        useExisting: L
    }, {
        provide: E,
        useExisting: C
    }, {
        provide: C,
        useClass: C,
        deps: [r.DOCUMENT]
    }, {
        provide: o.Testability,
        useClass: o.Testability,
        deps: [o.NgZone]
    }, {
        provide: x,
        useClass: x,
        deps: [S, o.NgZone]
    }, w]
      , ft = function() {
        function t(t) {
            if (t)
                throw new Error("BrowserModule has already been loaded. If you need access to common directives such as NgIf and NgFor from a lazy loaded module, import CommonModule instead.")
        }
        var e;
        return e = t,
        t.withServerTransition = function(t) {
            return {
                ngModule: e,
                providers: [{
                    provide: o.APP_ID,
                    useValue: t.appId
                }, {
                    provide: u,
                    useExisting: o.APP_ID
                }, p]
            }
        }
        ,
        (t = e = Object(i.b)([Object(i.e)(0, Object(o.Optional)()), Object(i.e)(0, Object(o.SkipSelf)()), Object(i.e)(0, Object(o.Inject)(e)), Object(i.d)("design:paramtypes", [Object])], t)).ɵmod = o["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = o["ɵɵdefineInjector"]({
            factory: function(n) {
                return new (n || t)(o["ɵɵinject"](e, 12))
            },
            providers: ht,
            imports: [r.CommonModule, o.ApplicationModule]
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && o["ɵɵsetNgModuleScope"](t, {
            exports: function() {
                return [r.CommonModule, o.ApplicationModule]
            }
        }),
        t
    }();
    function mt() {
        return new gt(Object(o["ɵɵinject"])(r.DOCUMENT))
    }
    var gt = function() {
        function t(t) {
            this._doc = t,
            this._dom = Object(r["ɵgetDOM"])()
        }
        return t.prototype.addTag = function(t, e) {
            return void 0 === e && (e = !1),
            t ? this._getOrCreateElement(t, e) : null
        }
        ,
        t.prototype.addTags = function(t, e) {
            var n = this;
            return void 0 === e && (e = !1),
            t ? t.reduce((function(t, i) {
                return i && t.push(n._getOrCreateElement(i, e)),
                t
            }
            ), []) : []
        }
        ,
        t.prototype.getTag = function(t) {
            return t && this._doc.querySelector("meta[" + t + "]") || null
        }
        ,
        t.prototype.getTags = function(t) {
            if (!t)
                return [];
            var e = this._doc.querySelectorAll("meta[" + t + "]");
            return e ? [].slice.call(e) : []
        }
        ,
        t.prototype.updateTag = function(t, e) {
            if (!t)
                return null;
            e = e || this._parseSelector(t);
            var n = this.getTag(e);
            return n ? this._setMetaElementAttributes(t, n) : this._getOrCreateElement(t, !0)
        }
        ,
        t.prototype.removeTag = function(t) {
            this.removeTagElement(this.getTag(t))
        }
        ,
        t.prototype.removeTagElement = function(t) {
            t && this._dom.remove(t)
        }
        ,
        t.prototype._getOrCreateElement = function(t, e) {
            if (void 0 === e && (e = !1),
            !e) {
                var n = this._parseSelector(t)
                  , i = this.getTag(n);
                if (i && this._containsAttributes(t, i))
                    return i
            }
            var r = this._dom.createElement("meta");
            return this._setMetaElementAttributes(t, r),
            this._doc.getElementsByTagName("head")[0].appendChild(r),
            r
        }
        ,
        t.prototype._setMetaElementAttributes = function(t, e) {
            return Object.keys(t).forEach((function(n) {
                return e.setAttribute(n, t[n])
            }
            )),
            e
        }
        ,
        t.prototype._parseSelector = function(t) {
            var e = t.name ? "name" : "property";
            return e + '="' + t[e] + '"'
        }
        ,
        t.prototype._containsAttributes = function(t, e) {
            return Object.keys(t).every((function(n) {
                return e.getAttribute(n) === t[n]
            }
            ))
        }
        ,
        t.ɵprov = Object(o["ɵɵdefineInjectable"])({
            factory: mt,
            token: t,
            providedIn: "root"
        }),
        (t = Object(i.b)([Object(i.e)(0, Object(o.Inject)(r.DOCUMENT)), Object(i.d)("design:paramtypes", [Object])], t)).ɵfac = function(e) {
            return new (e || t)(o["ɵɵinject"](r.DOCUMENT))
        }
        ,
        t
    }();
    function vt() {
        return new yt(Object(o["ɵɵinject"])(r.DOCUMENT))
    }
    var yt = function() {
        function t(t) {
            this._doc = t
        }
        return t.prototype.getTitle = function() {
            return this._doc.title
        }
        ,
        t.prototype.setTitle = function(t) {
            this._doc.title = t || ""
        }
        ,
        t.ɵprov = Object(o["ɵɵdefineInjectable"])({
            factory: vt,
            token: t,
            providedIn: "root"
        }),
        (t = Object(i.b)([Object(i.e)(0, Object(o.Inject)(r.DOCUMENT)), Object(i.d)("design:paramtypes", [Object])], t)).ɵfac = function(e) {
            return new (e || t)(o["ɵɵinject"](r.DOCUMENT))
        }
        ,
        t
    }()
      , bt = "undefined" != typeof window && window || {}
      , wt = function(t, e) {
        this.msPerTick = t,
        this.numTicks = e
    }
      , St = function() {
        function t(t) {
            this.appRef = t.injector.get(o.ApplicationRef)
        }
        return t.prototype.timeChangeDetection = function(t) {
            var e = t && t.record
              , n = null != bt.console.profile;
            e && n && bt.console.profile("Change Detection");
            for (var i = Object(r["ɵgetDOM"])().performanceNow(), o = 0; o < 5 || Object(r["ɵgetDOM"])().performanceNow() - i < 500; )
                this.appRef.tick(),
                o++;
            var a = Object(r["ɵgetDOM"])().performanceNow();
            e && n && bt.console.profileEnd("Change Detection");
            var s = (a - i) / o;
            return bt.console.log("ran " + o + " change detection cycles"),
            bt.console.log(s.toFixed(2) + " ms per check"),
            new wt(s,o)
        }
        ,
        t
    }();
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function xt(t) {
        return f("profiler", new St(t)),
        t
    }
    function Mt() {
        f("profiler", null)
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function Et(t) {
        var e = {
            "&": "&a;",
            '"': "&q;",
            "'": "&s;",
            "<": "&l;",
            ">": "&g;"
        };
        return t.replace(/[&"'<>]/g, (function(t) {
            return e[t]
        }
        ))
    }
    function Ct(t) {
        return t
    }
    var At = function() {
        function t() {
            this.store = {},
            this.onSerializeCallbacks = {}
        }
        var e;
        return e = t,
        t.init = function(t) {
            var n = new e;
            return n.store = t,
            n
        }
        ,
        t.prototype.get = function(t, e) {
            return void 0 !== this.store[t] ? this.store[t] : e
        }
        ,
        t.prototype.set = function(t, e) {
            this.store[t] = e
        }
        ,
        t.prototype.remove = function(t) {
            delete this.store[t]
        }
        ,
        t.prototype.hasKey = function(t) {
            return this.store.hasOwnProperty(t)
        }
        ,
        t.prototype.onSerialize = function(t, e) {
            this.onSerializeCallbacks[t] = e
        }
        ,
        t.prototype.toJson = function() {
            for (var t in this.onSerializeCallbacks)
                if (this.onSerializeCallbacks.hasOwnProperty(t))
                    try {
                        this.store[t] = this.onSerializeCallbacks[t]()
                    } catch (t) {
                        console.warn("Exception in onSerialize callback: ", t)
                    }
            return JSON.stringify(this.store)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵprov = o["ɵɵdefineInjectable"]({
            token: t,
            factory: function(e) {
                return t.ɵfac(e)
            }
        }),
        t
    }();
    function Tt(t, e) {
        var n, i, r = t.getElementById(e + "-state"), o = {};
        if (r && r.textContent)
            try {
                o = JSON.parse((n = r.textContent,
                i = {
                    "&a;": "&",
                    "&q;": '"',
                    "&s;": "'",
                    "&l;": "<",
                    "&g;": ">"
                },
                n.replace(/&[^;]+;/g, (function(t) {
                    return i[t]
                }
                ))))
            } catch (t) {
                console.warn("Exception while restoring TransferState for app " + e, t)
            }
        return At.init(o)
    }
    var Ot = function() {
        function t() {}
        return t.ɵmod = o["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = o["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            },
            providers: [{
                provide: At,
                useFactory: Tt,
                deps: [r.DOCUMENT, o.APP_ID]
            }]
        }),
        t
    }()
      , _t = function() {
        function t() {}
        return t.all = function() {
            return function() {
                return !0
            }
        }
        ,
        t.css = function(t) {
            return function(e) {
                return null != e.nativeElement && function(t, e) {
                    if (Object(r["ɵgetDOM"])().isElementNode(t))
                        return t.matches && t.matches(e) || t.msMatchesSelector && t.msMatchesSelector(e) || t.webkitMatchesSelector && t.webkitMatchesSelector(e);
                    return !1
                }/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
                /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
                (e.nativeElement, t)
            }
        }
        ,
        t.directive = function(t) {
            return function(e) {
                return -1 !== e.providerTokens.indexOf(t)
            }
        }
        ,
        t
    }();
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var Pt = new o.Version("9.1.9");
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return i
    }
    ));
    var i = function() {
        return "function" == typeof Symbol && Symbol.observable || "@@observable"
    }()
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return i
    }
    ));
    var i = function() {
        function t() {
            return Error.call(this),
            this.message = "object unsubscribed",
            this.name = "ObjectUnsubscribedError",
            this
        }
        return t.prototype = Object.create(Error.prototype),
        t
    }()
}
, function(t, e, n) {
    var i;
    /*! Hammer.JS - v1.1.3 - 2014-05-20
 * http://eightmedia.github.io/hammer.js
 *
 * Copyright (c) 2014 Jorik Tangelder <j.tangelder@gmail.com>;
 * Licensed under the MIT license */
    !function(r, o) {
        "use strict";
        var a = function t(e, n) {
            return new t.Instance(e,n || {})
        };
        a.VERSION = "1.1.3",
        a.defaults = {
            behavior: {
                userSelect: "none",
                touchAction: "pan-y",
                touchCallout: "none",
                contentZooming: "none",
                userDrag: "none",
                tapHighlightColor: "rgba(0,0,0,0)"
            }
        },
        a.DOCUMENT = document,
        a.HAS_POINTEREVENTS = navigator.pointerEnabled || navigator.msPointerEnabled,
        a.HAS_TOUCHEVENTS = "ontouchstart"in r,
        a.IS_MOBILE = /mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),
        a.NO_MOUSEEVENTS = a.HAS_TOUCHEVENTS && a.IS_MOBILE || a.HAS_POINTEREVENTS,
        a.CALCULATE_INTERVAL = 25;
        var s = {}
          , c = a.DIRECTION_DOWN = "down"
          , l = a.DIRECTION_LEFT = "left"
          , u = a.DIRECTION_UP = "up"
          , d = a.DIRECTION_RIGHT = "right"
          , p = a.POINTER_MOUSE = "mouse"
          , h = a.POINTER_TOUCH = "touch"
          , f = a.POINTER_PEN = "pen"
          , m = a.EVENT_START = "start"
          , g = a.EVENT_MOVE = "move"
          , v = a.EVENT_END = "end"
          , y = a.EVENT_RELEASE = "release"
          , b = a.EVENT_TOUCH = "touch";
        a.READY = !1,
        a.plugins = a.plugins || {},
        a.gestures = a.gestures || {};
        var w, S, x = a.utils = {
            extend: function(t, e, n) {
                for (var i in e)
                    !e.hasOwnProperty(i) || void 0 !== t[i] && n || (t[i] = e[i]);
                return t
            },
            on: function(t, e, n) {
                t.addEventListener(e, n, !1)
            },
            off: function(t, e, n) {
                t.removeEventListener(e, n, !1)
            },
            each: function(t, e, n) {
                var i, r;
                if ("forEach"in t)
                    t.forEach(e, n);
                else if (void 0 !== t.length) {
                    for (i = 0,
                    r = t.length; i < r; i++)
                        if (!1 === e.call(n, t[i], i, t))
                            return
                } else
                    for (i in t)
                        if (t.hasOwnProperty(i) && !1 === e.call(n, t[i], i, t))
                            return
            },
            inStr: function(t, e) {
                return t.indexOf(e) > -1
            },
            inArray: function(t, e) {
                if (t.indexOf) {
                    var n = t.indexOf(e);
                    return -1 !== n && n
                }
                for (var i = 0, r = t.length; i < r; i++)
                    if (t[i] === e)
                        return i;
                return !1
            },
            toArray: function(t) {
                return Array.prototype.slice.call(t, 0)
            },
            hasParent: function(t, e) {
                for (; t; ) {
                    if (t == e)
                        return !0;
                    t = t.parentNode
                }
                return !1
            },
            getCenter: function(t) {
                var e = []
                  , n = []
                  , i = []
                  , r = []
                  , o = Math.min
                  , a = Math.max;
                return 1 === t.length ? {
                    pageX: t[0].pageX,
                    pageY: t[0].pageY,
                    clientX: t[0].clientX,
                    clientY: t[0].clientY
                } : (x.each(t, (function(t) {
                    e.push(t.pageX),
                    n.push(t.pageY),
                    i.push(t.clientX),
                    r.push(t.clientY)
                }
                )),
                {
                    pageX: (o.apply(Math, e) + a.apply(Math, e)) / 2,
                    pageY: (o.apply(Math, n) + a.apply(Math, n)) / 2,
                    clientX: (o.apply(Math, i) + a.apply(Math, i)) / 2,
                    clientY: (o.apply(Math, r) + a.apply(Math, r)) / 2
                })
            },
            getVelocity: function(t, e, n) {
                return {
                    x: Math.abs(e / t) || 0,
                    y: Math.abs(n / t) || 0
                }
            },
            getAngle: function(t, e) {
                var n = e.clientX - t.clientX
                  , i = e.clientY - t.clientY;
                return 180 * Math.atan2(i, n) / Math.PI
            },
            getDirection: function(t, e) {
                return Math.abs(t.clientX - e.clientX) >= Math.abs(t.clientY - e.clientY) ? t.clientX - e.clientX > 0 ? l : d : t.clientY - e.clientY > 0 ? u : c
            },
            getDistance: function(t, e) {
                var n = e.clientX - t.clientX
                  , i = e.clientY - t.clientY;
                return Math.sqrt(n * n + i * i)
            },
            getScale: function(t, e) {
                return t.length >= 2 && e.length >= 2 ? this.getDistance(e[0], e[1]) / this.getDistance(t[0], t[1]) : 1
            },
            getRotation: function(t, e) {
                return t.length >= 2 && e.length >= 2 ? this.getAngle(e[1], e[0]) - this.getAngle(t[1], t[0]) : 0
            },
            isVertical: function(t) {
                return t == u || t == c
            },
            setPrefixedCss: function(t, e, n, i) {
                var r = ["", "Webkit", "Moz", "O", "ms"];
                e = x.toCamelCase(e);
                for (var o = 0; o < r.length; o++) {
                    var a = e;
                    if (r[o] && (a = r[o] + a.slice(0, 1).toUpperCase() + a.slice(1)),
                    a in t.style) {
                        t.style[a] = (null == i || i) && n || "";
                        break
                    }
                }
            },
            toggleBehavior: function(t, e, n) {
                if (e && t && t.style) {
                    x.each(e, (function(e, i) {
                        x.setPrefixedCss(t, i, e, n)
                    }
                    ));
                    var i = n && function() {
                        return !1
                    }
                    ;
                    "none" == e.userSelect && (t.onselectstart = i),
                    "none" == e.userDrag && (t.ondragstart = i)
                }
            },
            toCamelCase: function(t) {
                return t.replace(/[_-]([a-z])/g, (function(t) {
                    return t[1].toUpperCase()
                }
                ))
            }
        }, M = a.event = {
            preventMouseEvents: !1,
            started: !1,
            shouldDetect: !1,
            on: function(t, e, n, i) {
                var r = e.split(" ");
                x.each(r, (function(e) {
                    x.on(t, e, n),
                    i && i(e)
                }
                ))
            },
            off: function(t, e, n, i) {
                var r = e.split(" ");
                x.each(r, (function(e) {
                    x.off(t, e, n),
                    i && i(e)
                }
                ))
            },
            onTouch: function(t, e, n) {
                var i = this
                  , r = function(r) {
                    var o, s = r.type.toLowerCase(), c = a.HAS_POINTEREVENTS, l = x.inStr(s, "mouse");
                    l && i.preventMouseEvents || (l && e == m && 0 === r.button ? (i.preventMouseEvents = !1,
                    i.shouldDetect = !0) : c && e == m ? i.shouldDetect = 1 === r.buttons || E.matchType(h, r) : l || e != m || (i.preventMouseEvents = !0,
                    i.shouldDetect = !0),
                    c && e != v && E.updatePointer(e, r),
                    i.shouldDetect && (o = i.doDetect.call(i, r, e, t, n)),
                    o == v && (i.preventMouseEvents = !1,
                    i.shouldDetect = !1,
                    E.reset()),
                    c && e == v && E.updatePointer(e, r))
                };
                return this.on(t, s[e], r),
                r
            },
            doDetect: function(t, e, n, i) {
                var r = this.getTouchList(t, e)
                  , o = r.length
                  , a = e
                  , s = r.trigger
                  , c = o;
                e == m ? s = b : e == v && (s = y,
                c = r.length - (t.changedTouches ? t.changedTouches.length : 1)),
                c > 0 && this.started && (a = g),
                this.started = !0;
                var l = this.collectEventData(n, a, r, t);
                return e != v && i.call(C, l),
                s && (l.changedLength = c,
                l.eventType = s,
                i.call(C, l),
                l.eventType = a,
                delete l.changedLength),
                a == v && (i.call(C, l),
                this.started = !1),
                a
            },
            determineEventTypes: function() {
                var t;
                return t = a.HAS_POINTEREVENTS ? r.PointerEvent ? ["pointerdown", "pointermove", "pointerup pointercancel lostpointercapture"] : ["MSPointerDown", "MSPointerMove", "MSPointerUp MSPointerCancel MSLostPointerCapture"] : a.NO_MOUSEEVENTS ? ["touchstart", "touchmove", "touchend touchcancel"] : ["touchstart mousedown", "touchmove mousemove", "touchend touchcancel mouseup"],
                s[m] = t[0],
                s[g] = t[1],
                s[v] = t[2],
                s
            },
            getTouchList: function(t, e) {
                if (a.HAS_POINTEREVENTS)
                    return E.getTouchList();
                if (t.touches) {
                    if (e == g)
                        return t.touches;
                    var n = []
                      , i = [].concat(x.toArray(t.touches), x.toArray(t.changedTouches))
                      , r = [];
                    return x.each(i, (function(t) {
                        !1 === x.inArray(n, t.identifier) && r.push(t),
                        n.push(t.identifier)
                    }
                    )),
                    r
                }
                return t.identifier = 1,
                [t]
            },
            collectEventData: function(t, e, n, i) {
                var r = h;
                return x.inStr(i.type, "mouse") || E.matchType(p, i) ? r = p : E.matchType(f, i) && (r = f),
                {
                    center: x.getCenter(n),
                    timeStamp: Date.now(),
                    target: i.target,
                    touches: n,
                    eventType: e,
                    pointerType: r,
                    srcEvent: i,
                    preventDefault: function() {
                        var t = this.srcEvent;
                        t.preventManipulation && t.preventManipulation(),
                        t.preventDefault && t.preventDefault()
                    },
                    stopPropagation: function() {
                        this.srcEvent.stopPropagation()
                    },
                    stopDetect: function() {
                        return C.stopDetect()
                    }
                }
            }
        }, E = a.PointerEvent = {
            pointers: {},
            getTouchList: function() {
                var t = [];
                return x.each(this.pointers, (function(e) {
                    t.push(e)
                }
                )),
                t
            },
            updatePointer: function(t, e) {
                t == v || t != v && 1 !== e.buttons ? delete this.pointers[e.pointerId] : (e.identifier = e.pointerId,
                this.pointers[e.pointerId] = e)
            },
            matchType: function(t, e) {
                if (!e.pointerType)
                    return !1;
                var n = e.pointerType
                  , i = {};
                return i[p] = n === (e.MSPOINTER_TYPE_MOUSE || p),
                i[h] = n === (e.MSPOINTER_TYPE_TOUCH || h),
                i[f] = n === (e.MSPOINTER_TYPE_PEN || f),
                i[t]
            },
            reset: function() {
                this.pointers = {}
            }
        }, C = a.detection = {
            gestures: [],
            current: null,
            previous: null,
            stopped: !1,
            startDetect: function(t, e) {
                this.current || (this.stopped = !1,
                this.current = {
                    inst: t,
                    startEvent: x.extend({}, e),
                    lastEvent: !1,
                    lastCalcEvent: !1,
                    futureCalcEvent: !1,
                    lastCalcData: {},
                    name: ""
                },
                this.detect(e))
            },
            detect: function(t) {
                if (this.current && !this.stopped) {
                    t = this.extendEventData(t);
                    var e = this.current.inst
                      , n = e.options;
                    return x.each(this.gestures, (function(i) {
                        !this.stopped && e.enabled && n[i.name] && i.handler.call(i, t, e)
                    }
                    ), this),
                    this.current && (this.current.lastEvent = t),
                    t.eventType == v && this.stopDetect(),
                    t
                }
            },
            stopDetect: function() {
                this.previous = x.extend({}, this.current),
                this.current = null,
                this.stopped = !0
            },
            getCalculatedData: function(t, e, n, i, r) {
                var o = this.current
                  , s = !1
                  , c = o.lastCalcEvent
                  , l = o.lastCalcData;
                c && t.timeStamp - c.timeStamp > a.CALCULATE_INTERVAL && (e = c.center,
                n = t.timeStamp - c.timeStamp,
                i = t.center.clientX - c.center.clientX,
                r = t.center.clientY - c.center.clientY,
                s = !0),
                t.eventType != b && t.eventType != y || (o.futureCalcEvent = t),
                o.lastCalcEvent && !s || (l.velocity = x.getVelocity(n, i, r),
                l.angle = x.getAngle(e, t.center),
                l.direction = x.getDirection(e, t.center),
                o.lastCalcEvent = o.futureCalcEvent || t,
                o.futureCalcEvent = t),
                t.velocityX = l.velocity.x,
                t.velocityY = l.velocity.y,
                t.interimAngle = l.angle,
                t.interimDirection = l.direction
            },
            extendEventData: function(t) {
                var e = this.current
                  , n = e.startEvent
                  , i = e.lastEvent || n;
                t.eventType != b && t.eventType != y || (n.touches = [],
                x.each(t.touches, (function(t) {
                    n.touches.push({
                        clientX: t.clientX,
                        clientY: t.clientY
                    })
                }
                )));
                var r = t.timeStamp - n.timeStamp
                  , o = t.center.clientX - n.center.clientX
                  , a = t.center.clientY - n.center.clientY;
                return this.getCalculatedData(t, i.center, r, o, a),
                x.extend(t, {
                    startEvent: n,
                    deltaTime: r,
                    deltaX: o,
                    deltaY: a,
                    distance: x.getDistance(n.center, t.center),
                    angle: x.getAngle(n.center, t.center),
                    direction: x.getDirection(n.center, t.center),
                    scale: x.getScale(n.touches, t.touches),
                    rotation: x.getRotation(n.touches, t.touches)
                }),
                t
            },
            register: function(t) {
                var e = t.defaults || {};
                return void 0 === e[t.name] && (e[t.name] = !0),
                x.extend(a.defaults, e, !0),
                t.index = t.index || 1e3,
                this.gestures.push(t),
                this.gestures.sort((function(t, e) {
                    return t.index < e.index ? -1 : t.index > e.index ? 1 : 0
                }
                )),
                this.gestures
            }
        };
        (a.Instance = function(t, e) {
            var n = this;
            a.READY || (M.determineEventTypes(),
            x.each(a.gestures, (function(t) {
                C.register(t)
            }
            )),
            M.onTouch(a.DOCUMENT, g, C.detect),
            M.onTouch(a.DOCUMENT, v, C.detect),
            a.READY = !0),
            this.element = t,
            this.enabled = !0,
            x.each(e, (function(t, n) {
                delete e[n],
                e[x.toCamelCase(n)] = t
            }
            )),
            this.options = x.extend(x.extend({}, a.defaults), e || {}),
            this.options.behavior && x.toggleBehavior(this.element, this.options.behavior, !0),
            this.eventStartHandler = M.onTouch(t, m, (function(t) {
                n.enabled && t.eventType == m ? C.startDetect(n, t) : t.eventType == b && C.detect(t)
            }
            )),
            this.eventHandlers = []
        }
        ).prototype = {
            on: function(t, e) {
                var n = this;
                return M.on(n.element, t, e, (function(t) {
                    n.eventHandlers.push({
                        gesture: t,
                        handler: e
                    })
                }
                )),
                n
            },
            off: function(t, e) {
                var n = this;
                return M.off(n.element, t, e, (function(t) {
                    var i = x.inArray({
                        gesture: t,
                        handler: e
                    });
                    !1 !== i && n.eventHandlers.splice(i, 1)
                }
                )),
                n
            },
            trigger: function(t, e) {
                e || (e = {});
                var n = a.DOCUMENT.createEvent("Event");
                n.initEvent(t, !0, !0),
                n.gesture = e;
                var i = this.element;
                return x.hasParent(e.target, i) && (i = e.target),
                i.dispatchEvent(n),
                this
            },
            enable: function(t) {
                return this.enabled = t,
                this
            },
            dispose: function() {
                var t, e;
                for (x.toggleBehavior(this.element, this.options.behavior, !1),
                t = -1; e = this.eventHandlers[++t]; )
                    x.off(this.element, e.gesture, e.handler);
                return this.eventHandlers = [],
                M.off(this.element, s[m], this.eventStartHandler),
                null
            }
        },
        function(t) {
            var e = !1;
            a.gestures.Drag = {
                name: t,
                index: 50,
                handler: function(n, i) {
                    var r = C.current;
                    if (!(i.options.dragMaxTouches > 0 && n.touches.length > i.options.dragMaxTouches))
                        switch (n.eventType) {
                        case m:
                            e = !1;
                            break;
                        case g:
                            if (n.distance < i.options.dragMinDistance && r.name != t)
                                return;
                            var o = r.startEvent.center;
                            if (r.name != t && (r.name = t,
                            i.options.dragDistanceCorrection && n.distance > 0)) {
                                var a = Math.abs(i.options.dragMinDistance / n.distance);
                                o.pageX += n.deltaX * a,
                                o.pageY += n.deltaY * a,
                                o.clientX += n.deltaX * a,
                                o.clientY += n.deltaY * a,
                                n = C.extendEventData(n)
                            }
                            (r.lastEvent.dragLockToAxis || i.options.dragLockToAxis && i.options.dragLockMinDistance <= n.distance) && (n.dragLockToAxis = !0);
                            var s = r.lastEvent.direction;
                            n.dragLockToAxis && s !== n.direction && (x.isVertical(s) ? n.direction = n.deltaY < 0 ? u : c : n.direction = n.deltaX < 0 ? l : d),
                            e || (i.trigger(t + "start", n),
                            e = !0),
                            i.trigger(t, n),
                            i.trigger(t + n.direction, n);
                            var p = x.isVertical(n.direction);
                            (i.options.dragBlockVertical && p || i.options.dragBlockHorizontal && !p) && n.preventDefault();
                            break;
                        case y:
                            e && n.changedLength <= i.options.dragMaxTouches && (i.trigger(t + "end", n),
                            e = !1);
                            break;
                        case v:
                            e = !1
                        }
                },
                defaults: {
                    dragMinDistance: 10,
                    dragDistanceCorrection: !0,
                    dragMaxTouches: 1,
                    dragBlockHorizontal: !1,
                    dragBlockVertical: !1,
                    dragLockToAxis: !1,
                    dragLockMinDistance: 25
                }
            }
        }("drag"),
        a.gestures.Gesture = {
            name: "gesture",
            index: 1337,
            handler: function(t, e) {
                e.trigger(this.name, t)
            }
        },
        a.gestures.Hold = {
            name: "hold",
            index: 10,
            defaults: {
                holdTimeout: 500,
                holdThreshold: 2
            },
            handler: function(t, e) {
                var n = e.options
                  , i = C.current;
                switch (t.eventType) {
                case m:
                    clearTimeout(w),
                    i.name = "hold",
                    w = setTimeout((function() {
                        i && "hold" == i.name && e.trigger("hold", t)
                    }
                    ), n.holdTimeout);
                    break;
                case g:
                    t.distance > n.holdThreshold && clearTimeout(w);
                    break;
                case y:
                    clearTimeout(w)
                }
            }
        },
        a.gestures.Release = {
            name: "release",
            index: 1 / 0,
            handler: function(t, e) {
                t.eventType == y && e.trigger(this.name, t)
            }
        },
        a.gestures.Swipe = {
            name: "swipe",
            index: 40,
            defaults: {
                swipeMinTouches: 1,
                swipeMaxTouches: 1,
                swipeVelocityX: .6,
                swipeVelocityY: .6
            },
            handler: function(t, e) {
                if (t.eventType == y) {
                    var n = t.touches.length
                      , i = e.options;
                    if (n < i.swipeMinTouches || n > i.swipeMaxTouches)
                        return;
                    (t.velocityX > i.swipeVelocityX || t.velocityY > i.swipeVelocityY) && (e.trigger(this.name, t),
                    e.trigger(this.name + t.direction, t))
                }
            }
        },
        S = !1,
        a.gestures.Tap = {
            name: "tap",
            index: 100,
            handler: function(t, e) {
                var n, i, r = e.options, o = C.current, a = C.previous;
                switch (t.eventType) {
                case m:
                    S = !1;
                    break;
                case g:
                    S = S || t.distance > r.tapMaxDistance;
                    break;
                case v:
                    !x.inStr(t.srcEvent.type, "cancel") && t.deltaTime < r.tapMaxTime && !S && (n = a && a.lastEvent && t.timeStamp - a.lastEvent.timeStamp,
                    i = !1,
                    a && "tap" == a.name && n && n < r.doubleTapInterval && t.distance < r.doubleTapDistance && (e.trigger("doubletap", t),
                    i = !0),
                    i && !r.tapAlways || (o.name = "tap",
                    e.trigger(o.name, t)))
                }
            },
            defaults: {
                tapMaxTime: 250,
                tapMaxDistance: 10,
                tapAlways: !0,
                doubleTapDistance: 20,
                doubleTapInterval: 300
            }
        },
        a.gestures.Touch = {
            name: "touch",
            index: -1 / 0,
            defaults: {
                preventDefault: !1,
                preventMouse: !1
            },
            handler: function(t, e) {
                e.options.preventMouse && t.pointerType == p ? t.stopDetect() : (e.options.preventDefault && t.preventDefault(),
                t.eventType == b && e.trigger("touch", t))
            }
        },
        function(t) {
            var e = !1;
            a.gestures.Transform = {
                name: t,
                index: 45,
                defaults: {
                    transformMinScale: .01,
                    transformMinRotation: 1
                },
                handler: function(n, i) {
                    switch (n.eventType) {
                    case m:
                        e = !1;
                        break;
                    case g:
                        if (n.touches.length < 2)
                            return;
                        var r = Math.abs(1 - n.scale)
                          , o = Math.abs(n.rotation);
                        if (r < i.options.transformMinScale && o < i.options.transformMinRotation)
                            return;
                        C.current.name = t,
                        e || (i.trigger(t + "start", n),
                        e = !0),
                        i.trigger(t, n),
                        o > i.options.transformMinRotation && i.trigger("rotate", n),
                        r > i.options.transformMinScale && (i.trigger("pinch", n),
                        i.trigger("pinch" + (n.scale < 1 ? "in" : "out"), n));
                        break;
                    case y:
                        e && n.changedLength < 2 && (i.trigger(t + "end", n),
                        e = !1)
                    }
                }
            }
        }("transform"),
        void 0 === (i = function() {
            return a
        }
        .call(e, n, e, t)) || (t.exports = i)
    }(window)
}
, function(t, e, n) {
    "use strict";
    n.r(e),
    n.d(e, "Observable", (function() {
        return i.a
    }
    )),
    n.d(e, "ConnectableObservable", (function() {
        return r.a
    }
    )),
    n.d(e, "GroupedObservable", (function() {
        return o.a
    }
    )),
    n.d(e, "observable", (function() {
        return a.a
    }
    )),
    n.d(e, "Subject", (function() {
        return s.a
    }
    )),
    n.d(e, "BehaviorSubject", (function() {
        return c.a
    }
    )),
    n.d(e, "ReplaySubject", (function() {
        return l.a
    }
    )),
    n.d(e, "AsyncSubject", (function() {
        return u.a
    }
    )),
    n.d(e, "asap", (function() {
        return d.a
    }
    )),
    n.d(e, "asapScheduler", (function() {
        return d.b
    }
    )),
    n.d(e, "async", (function() {
        return p.a
    }
    )),
    n.d(e, "asyncScheduler", (function() {
        return p.b
    }
    )),
    n.d(e, "queue", (function() {
        return h.a
    }
    )),
    n.d(e, "queueScheduler", (function() {
        return h.b
    }
    )),
    n.d(e, "animationFrame", (function() {
        return f.a
    }
    )),
    n.d(e, "animationFrameScheduler", (function() {
        return f.b
    }
    )),
    n.d(e, "VirtualTimeScheduler", (function() {
        return v
    }
    )),
    n.d(e, "VirtualAction", (function() {
        return y
    }
    )),
    n.d(e, "Scheduler", (function() {
        return b.a
    }
    )),
    n.d(e, "Subscription", (function() {
        return w.a
    }
    )),
    n.d(e, "Subscriber", (function() {
        return S.a
    }
    )),
    n.d(e, "Notification", (function() {
        return x.a
    }
    )),
    n.d(e, "NotificationKind", (function() {
        return x.b
    }
    )),
    n.d(e, "pipe", (function() {
        return M.a
    }
    )),
    n.d(e, "noop", (function() {
        return E.a
    }
    )),
    n.d(e, "identity", (function() {
        return C.a
    }
    )),
    n.d(e, "isObservable", (function() {
        return A.a
    }
    )),
    n.d(e, "ArgumentOutOfRangeError", (function() {
        return T.a
    }
    )),
    n.d(e, "EmptyError", (function() {
        return O.a
    }
    )),
    n.d(e, "ObjectUnsubscribedError", (function() {
        return _.a
    }
    )),
    n.d(e, "UnsubscriptionError", (function() {
        return P.a
    }
    )),
    n.d(e, "TimeoutError", (function() {
        return I.a
    }
    )),
    n.d(e, "bindCallback", (function() {
        return N
    }
    )),
    n.d(e, "bindNodeCallback", (function() {
        return F
    }
    )),
    n.d(e, "combineLatest", (function() {
        return G.b
    }
    )),
    n.d(e, "concat", (function() {
        return H.a
    }
    )),
    n.d(e, "defer", (function() {
        return W.a
    }
    )),
    n.d(e, "empty", (function() {
        return q.b
    }
    )),
    n.d(e, "forkJoin", (function() {
        return X.a
    }
    )),
    n.d(e, "from", (function() {
        return Y.a
    }
    )),
    n.d(e, "fromEvent", (function() {
        return K.a
    }
    )),
    n.d(e, "fromEventPattern", (function() {
        return J
    }
    )),
    n.d(e, "generate", (function() {
        return Q
    }
    )),
    n.d(e, "iif", (function() {
        return tt
    }
    )),
    n.d(e, "interval", (function() {
        return nt
    }
    )),
    n.d(e, "merge", (function() {
        return rt.a
    }
    )),
    n.d(e, "never", (function() {
        return at
    }
    )),
    n.d(e, "of", (function() {
        return st.a
    }
    )),
    n.d(e, "onErrorResumeNext", (function() {
        return ct
    }
    )),
    n.d(e, "pairs", (function() {
        return lt
    }
    )),
    n.d(e, "partition", (function() {
        return ft
    }
    )),
    n.d(e, "race", (function() {
        return mt.a
    }
    )),
    n.d(e, "range", (function() {
        return gt
    }
    )),
    n.d(e, "throwError", (function() {
        return yt.a
    }
    )),
    n.d(e, "timer", (function() {
        return bt.a
    }
    )),
    n.d(e, "using", (function() {
        return wt
    }
    )),
    n.d(e, "zip", (function() {
        return St.b
    }
    )),
    n.d(e, "scheduled", (function() {
        return xt.a
    }
    )),
    n.d(e, "EMPTY", (function() {
        return q.a
    }
    )),
    n.d(e, "NEVER", (function() {
        return ot
    }
    )),
    n.d(e, "config", (function() {
        return Mt.a
    }
    ));
    var i = n(12)
      , r = n(332)
      , o = n(444)
      , a = n(126)
      , s = n(32)
      , c = n(373)
      , l = n(305)
      , u = n(186)
      , d = n(331)
      , p = n(119)
      , h = n(277)
      , f = n(335)
      , m = n(1)
      , g = n(151)
      , v = function(t) {
        function e(e, n) {
            void 0 === e && (e = y),
            void 0 === n && (n = Number.POSITIVE_INFINITY);
            var i = t.call(this, e, (function() {
                return i.frame
            }
            )) || this;
            return i.maxFrames = n,
            i.frame = 0,
            i.index = -1,
            i
        }
        return m.c(e, t),
        e.prototype.flush = function() {
            for (var t, e, n = this.actions, i = this.maxFrames; (e = n[0]) && e.delay <= i && (n.shift(),
            this.frame = e.delay,
            !(t = e.execute(e.state, e.delay))); )
                ;
            if (t) {
                for (; e = n.shift(); )
                    e.unsubscribe();
                throw t
            }
        }
        ,
        e.frameTimeFactor = 10,
        e
    }(n(150).a)
      , y = function(t) {
        function e(e, n, i) {
            void 0 === i && (i = e.index += 1);
            var r = t.call(this, e, n) || this;
            return r.scheduler = e,
            r.work = n,
            r.index = i,
            r.active = !0,
            r.index = e.index = i,
            r
        }
        return m.c(e, t),
        e.prototype.schedule = function(n, i) {
            if (void 0 === i && (i = 0),
            !this.id)
                return t.prototype.schedule.call(this, n, i);
            this.active = !1;
            var r = new e(this.scheduler,this.work);
            return this.add(r),
            r.schedule(n, i)
        }
        ,
        e.prototype.requestAsyncId = function(t, n, i) {
            void 0 === i && (i = 0),
            this.delay = t.frame + i;
            var r = t.actions;
            return r.push(this),
            r.sort(e.sortActions),
            !0
        }
        ,
        e.prototype.recycleAsyncId = function(t, e, n) {
            void 0 === n && (n = 0)
        }
        ,
        e.prototype._execute = function(e, n) {
            if (!0 === this.active)
                return t.prototype._execute.call(this, e, n)
        }
        ,
        e.sortActions = function(t, e) {
            return t.delay === e.delay ? t.index === e.index ? 0 : t.index > e.index ? 1 : -1 : t.delay > e.delay ? 1 : -1
        }
        ,
        e
    }(g.a)
      , b = n(278)
      , w = n(33)
      , S = n(26)
      , x = n(206)
      , M = n(282)
      , E = n(117)
      , C = n(156)
      , A = n(338)
      , T = n(280)
      , O = n(441)
      , _ = n(127)
      , P = n(208)
      , I = n(449)
      , k = n(62)
      , D = n(225)
      , R = n(56)
      , L = n(77);
    function N(t, e, n) {
        if (e) {
            if (!Object(L.a)(e))
                return function() {
                    for (var i = [], r = 0; r < arguments.length; r++)
                        i[r] = arguments[r];
                    return N(t, n).apply(void 0, i).pipe(Object(k.a)((function(t) {
                        return Object(R.a)(t) ? e.apply(void 0, t) : e(t)
                    }
                    )))
                }
                ;
            n = e
        }
        return function() {
            for (var e = [], r = 0; r < arguments.length; r++)
                e[r] = arguments[r];
            var o, a = this, s = {
                context: a,
                subject: o,
                callbackFunc: t,
                scheduler: n
            };
            return new i.a((function(i) {
                if (n) {
                    var r = {
                        args: e,
                        subscriber: i,
                        params: s
                    };
                    return n.schedule(j, 0, r)
                }
                if (!o) {
                    o = new u.a;
                    try {
                        t.apply(a, e.concat([function() {
                            for (var t = [], e = 0; e < arguments.length; e++)
                                t[e] = arguments[e];
                            o.next(t.length <= 1 ? t[0] : t),
                            o.complete()
                        }
                        ]))
                    } catch (t) {
                        Object(D.a)(o) ? o.error(t) : console.warn(t)
                    }
                }
                return o.subscribe(i)
            }
            ))
        }
    }
    function j(t) {
        var e = this
          , n = t.args
          , i = t.subscriber
          , r = t.params
          , o = r.callbackFunc
          , a = r.context
          , s = r.scheduler
          , c = r.subject;
        if (!c) {
            c = r.subject = new u.a;
            try {
                o.apply(a, n.concat([function() {
                    for (var t = [], n = 0; n < arguments.length; n++)
                        t[n] = arguments[n];
                    var i = t.length <= 1 ? t[0] : t;
                    e.add(s.schedule(V, 0, {
                        value: i,
                        subject: c
                    }))
                }
                ]))
            } catch (t) {
                c.error(t)
            }
        }
        this.add(c.subscribe(i))
    }
    function V(t) {
        var e = t.value
          , n = t.subject;
        n.next(e),
        n.complete()
    }
    function F(t, e, n) {
        if (e) {
            if (!Object(L.a)(e))
                return function() {
                    for (var i = [], r = 0; r < arguments.length; r++)
                        i[r] = arguments[r];
                    return F(t, n).apply(void 0, i).pipe(Object(k.a)((function(t) {
                        return Object(R.a)(t) ? e.apply(void 0, t) : e(t)
                    }
                    )))
                }
                ;
            n = e
        }
        return function() {
            for (var e = [], r = 0; r < arguments.length; r++)
                e[r] = arguments[r];
            var o = {
                subject: void 0,
                args: e,
                callbackFunc: t,
                scheduler: n,
                context: this
            };
            return new i.a((function(i) {
                var r = o.context
                  , a = o.subject;
                if (n)
                    return n.schedule(U, 0, {
                        params: o,
                        subscriber: i,
                        context: r
                    });
                if (!a) {
                    a = o.subject = new u.a;
                    try {
                        t.apply(r, e.concat([function() {
                            for (var t = [], e = 0; e < arguments.length; e++)
                                t[e] = arguments[e];
                            var n = t.shift();
                            n ? a.error(n) : (a.next(t.length <= 1 ? t[0] : t),
                            a.complete())
                        }
                        ]))
                    } catch (t) {
                        Object(D.a)(a) ? a.error(t) : console.warn(t)
                    }
                }
                return a.subscribe(i)
            }
            ))
        }
    }
    function U(t) {
        var e = this
          , n = t.params
          , i = t.subscriber
          , r = t.context
          , o = n.callbackFunc
          , a = n.args
          , s = n.scheduler
          , c = n.subject;
        if (!c) {
            c = n.subject = new u.a;
            try {
                o.apply(r, a.concat([function() {
                    for (var t = [], n = 0; n < arguments.length; n++)
                        t[n] = arguments[n];
                    var i = t.shift();
                    if (i)
                        e.add(s.schedule(z, 0, {
                            err: i,
                            subject: c
                        }));
                    else {
                        var r = t.length <= 1 ? t[0] : t;
                        e.add(s.schedule(B, 0, {
                            value: r,
                            subject: c
                        }))
                    }
                }
                ]))
            } catch (t) {
                this.add(s.schedule(z, 0, {
                    err: t,
                    subject: c
                }))
            }
        }
        this.add(c.subscribe(i))
    }
    function B(t) {
        var e = t.value
          , n = t.subject;
        n.next(e),
        n.complete()
    }
    function z(t) {
        var e = t.err;
        t.subject.error(e)
    }
    var G = n(346)
      , H = n(250)
      , W = n(274)
      , q = n(71)
      , X = n(228)
      , Y = n(76)
      , K = n(229)
      , Z = n(142);
    function J(t, e, n) {
        return n ? J(t, e).pipe(Object(k.a)((function(t) {
            return Object(R.a)(t) ? n.apply(void 0, t) : n(t)
        }
        ))) : new i.a((function(n) {
            var i, r = function() {
                for (var t = [], e = 0; e < arguments.length; e++)
                    t[e] = arguments[e];
                return n.next(1 === t.length ? t[0] : t)
            };
            try {
                i = t(r)
            } catch (t) {
                return void n.error(t)
            }
            if (Object(Z.a)(e))
                return function() {
                    return e(r, i)
                }
        }
        ))
    }
    function Q(t, e, n, r, o) {
        var a, s;
        if (1 == arguments.length) {
            var c = t;
            s = c.initialState,
            e = c.condition,
            n = c.iterate,
            a = c.resultSelector || C.a,
            o = c.scheduler
        } else
            void 0 === r || Object(L.a)(r) ? (s = t,
            a = C.a,
            o = r) : (s = t,
            a = r);
        return new i.a((function(t) {
            var i = s;
            if (o)
                return o.schedule($, 0, {
                    subscriber: t,
                    iterate: n,
                    condition: e,
                    resultSelector: a,
                    state: i
                });
            for (; ; ) {
                if (e) {
                    var r = void 0;
                    try {
                        r = e(i)
                    } catch (e) {
                        return void t.error(e)
                    }
                    if (!r) {
                        t.complete();
                        break
                    }
                }
                var c = void 0;
                try {
                    c = a(i)
                } catch (e) {
                    return void t.error(e)
                }
                if (t.next(c),
                t.closed)
                    break;
                try {
                    i = n(i)
                } catch (e) {
                    return void t.error(e)
                }
            }
        }
        ))
    }
    function $(t) {
        var e = t.subscriber
          , n = t.condition;
        if (!e.closed) {
            if (t.needIterate)
                try {
                    t.state = t.iterate(t.state)
                } catch (t) {
                    return void e.error(t)
                }
            else
                t.needIterate = !0;
            if (n) {
                var i = void 0;
                try {
                    i = n(t.state)
                } catch (t) {
                    return void e.error(t)
                }
                if (!i)
                    return void e.complete();
                if (e.closed)
                    return
            }
            var r;
            try {
                r = t.resultSelector(t.state)
            } catch (t) {
                return void e.error(t)
            }
            if (!e.closed && (e.next(r),
            !e.closed))
                return this.schedule(t)
        }
    }
    function tt(t, e, n) {
        return void 0 === e && (e = q.a),
        void 0 === n && (n = q.a),
        Object(W.a)((function() {
            return t() ? e : n
        }
        ))
    }
    var et = n(275);
    function nt(t, e) {
        return void 0 === t && (t = 0),
        void 0 === e && (e = p.a),
        (!Object(et.a)(t) || t < 0) && (t = 0),
        e && "function" == typeof e.schedule || (e = p.a),
        new i.a((function(n) {
            return n.add(e.schedule(it, t, {
                subscriber: n,
                counter: 0,
                period: t
            })),
            n
        }
        ))
    }
    function it(t) {
        var e = t.subscriber
          , n = t.counter
          , i = t.period;
        e.next(n),
        this.schedule({
            subscriber: e,
            counter: n + 1,
            period: i
        }, i)
    }
    var rt = n(279)
      , ot = new i.a(E.a);
    function at() {
        return ot
    }
    var st = n(93);
    function ct() {
        for (var t = [], e = 0; e < arguments.length; e++)
            t[e] = arguments[e];
        if (0 === t.length)
            return q.a;
        var n = t[0]
          , r = t.slice(1);
        return 1 === t.length && Object(R.a)(n) ? ct.apply(void 0, n) : new i.a((function(t) {
            var e = function() {
                return t.add(ct.apply(void 0, r).subscribe(t))
            };
            return Object(Y.a)(n).subscribe({
                next: function(e) {
                    t.next(e)
                },
                error: e,
                complete: e
            })
        }
        ))
    }
    function lt(t, e) {
        return e ? new i.a((function(n) {
            var i = Object.keys(t)
              , r = new w.a;
            return r.add(e.schedule(ut, 0, {
                keys: i,
                index: 0,
                subscriber: n,
                subscription: r,
                obj: t
            })),
            r
        }
        )) : new i.a((function(e) {
            for (var n = Object.keys(t), i = 0; i < n.length && !e.closed; i++) {
                var r = n[i];
                t.hasOwnProperty(r) && e.next([r, t[r]])
            }
            e.complete()
        }
        ))
    }
    function ut(t) {
        var e = t.keys
          , n = t.index
          , i = t.subscriber
          , r = t.subscription
          , o = t.obj;
        if (!i.closed)
            if (n < e.length) {
                var a = e[n];
                i.next([a, o[a]]),
                r.add(this.schedule({
                    keys: e,
                    index: n + 1,
                    subscriber: i,
                    subscription: r,
                    obj: o
                }))
            } else
                i.complete()
    }
    var dt = n(514)
      , pt = n(209)
      , ht = n(165);
    function ft(t, e, n) {
        return [Object(ht.a)(e, n)(new i.a(Object(pt.a)(t))), Object(ht.a)(Object(dt.a)(e, n))(new i.a(Object(pt.a)(t)))]
    }
    var mt = n(451);
    function gt(t, e, n) {
        return void 0 === t && (t = 0),
        new i.a((function(i) {
            void 0 === e && (e = t,
            t = 0);
            var r = 0
              , o = t;
            if (n)
                return n.schedule(vt, 0, {
                    index: r,
                    count: e,
                    start: t,
                    subscriber: i
                });
            for (; ; ) {
                if (r++ >= e) {
                    i.complete();
                    break
                }
                if (i.next(o++),
                i.closed)
                    break
            }
        }
        ))
    }
    function vt(t) {
        var e = t.start
          , n = t.index
          , i = t.count
          , r = t.subscriber;
        n >= i ? r.complete() : (r.next(e),
        r.closed || (t.index = n + 1,
        t.start = e + 1,
        this.schedule(t)))
    }
    var yt = n(306)
      , bt = n(333);
    function wt(t, e) {
        return new i.a((function(n) {
            var i, r;
            try {
                i = t()
            } catch (t) {
                return void n.error(t)
            }
            try {
                r = e(i)
            } catch (t) {
                return void n.error(t)
            }
            var o = (r ? Object(Y.a)(r) : q.a).subscribe(n);
            return function() {
                o.unsubscribe(),
                i && i.unsubscribe()
            }
        }
        ))
    }
    var St = n(445)
      , xt = n(334)
      , Mt = n(84)
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(7)
      , o = (n(259),
    n(153))
      , a = n(6)
      , s = n(0)
      , c = n(0)
      , l = n(259)
      , u = function() {
        function t(t) {
            var e = this;
            this.UnitService = t,
            this.scopedConvert = function(t, n, i, r, o) {
                return void 0 === i && (i = 2),
                void 0 === r && (r = void 0),
                void 0 === o && (o = void 0),
                e.convert(t, n, i, r, o)
            }
        }
        return t.prototype.convert = function(e, n, i, r, o, a) {
            if (void 0 === i && (i = 2),
            void 0 === r && (r = void 0),
            void 0 === o && (o = void 0),
            void 0 === a && (a = !1),
            !e)
                return "";
            var s = t.getMostRelevantMeasurement(n, r || this.UnitService.currentSystem, e, o);
            return t.getFormattedMeasurementString(s[0], s[1], i, a)
        }
        ,
        t.getFormattedMeasurementString = function(t, e, n, i) {
            return i && e.name === o.UnitsOfMeasurement.FOOT[0] ? this.formatImperialDistance(t * this.FEET_TO_INCHES_FACTOR) : i && e.name === o.UnitsOfMeasurement.INCH[0] ? this.formatImperialDistance(t) : t.toLocaleString(void 0, {
                minimumFractionDigits: n,
                maximumFractionDigits: n
            }) + " " + e.symbol
        }
        ,
        t.formatImperialDistance = function(e) {
            var n = Math.round(8 * e)
              , i = Math.floor(n / 8)
              , r = Math.floor(i / t.FEET_TO_INCHES_FACTOR)
              , o = i - r * t.FEET_TO_INCHES_FACTOR
              , a = this.EIGHTHS_SYMBOLS[n % 8]
              , s = 0 === o && "" !== a ? "" : o;
            return "" !== s && "" !== a && (a = " " + a),
            0 !== r ? r + "' " + s + a + '"' : "" + s + a + '"'
        }
        ,
        t.getMostRelevantMeasurement = function(t, e, n, i) {
            void 0 === i && (i = 0);
            var a = r.values(o.UnitsOfMeasurement.getUnitsOfMeasurementByDomainAndSystem(t, e))
              , s = r.filter(a, (function(t) {
                return t.factor >= i
            }
            ))
              , c = r.reduce(s, (function(t, e) {
                return e.fromBase(n) < t.fromBase(n) && e.fromBase(n) >= 1 ? e : t
            }
            ));
            return c ? [c.fromBase(n), c] : void 0
        }
        ,
        t.FEET_TO_INCHES_FACTOR = 12,
        t.EIGHTHS_SYMBOLS = ["", "⅛", "¼", "⅜", "½", "⅝", "¾", "⅞"],
        t.ɵfac = function(e) {
            return new (e || t)(c.ɵɵinject(l.UnitService))
        }
        ,
        t.ɵprov = c.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.UoMService = u,
    c.ɵsetClassMetadata(u, [{
        type: s.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: l.UnitService
        }]
    }
    ), null),
    i.module("IVWebApp").service("UoMService", a.downgradeInjectable(u))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(16)
      , o = n(6)
      , a = n(0)
      , s = n(347)
      , c = n(0)
      , l = function() {
        function t() {
            this.isMenuHidden = !0,
            this.isCollapsed = !1,
            this.title = void 0,
            this.template = void 0,
            this.switchToNormal = new r.Signal
        }
        return t.prototype.openMenu = function(t, e, n, i) {
            return void 0 === i && (i = !1),
            !!this.isMenuHidden && (this.title = t,
            this.template = e,
            this.afterClose = n && n.afterClose ? function() {
                return n.afterClose()
            }
            : void 0,
            this.beforeClose = n && n.beforeClose ? function() {
                return n.beforeClose()
            }
            : void 0,
            this.isCloseDisabled = n && n.isCloseDisabled ? function() {
                return n.isCloseDisabled()
            }
            : void 0,
            this.isMenuHidden = void 0 === e,
            this.hasCollapsedTemplate = i,
            (new s.ToolbarVisibilityChangedEvent).visible(!0).withToolbar(t).submit(),
            !0)
        }
        ,
        t.prototype.closeMenu = function(t) {
            var e = this;
            void 0 === t && (t = !0);
            var n = Promise.resolve();
            return void 0 !== this.beforeClose && (n = this.beforeClose()),
            n.then((function() {
                e.isMenuHidden = !0,
                e.afterClose && e.afterClose(),
                t && e.switchToNormal.emit()
            }
            ))
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵprov = c.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.ToolboxMenuService = l,
    c.ɵsetClassMetadata(l, [{
        type: a.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], null, null),
    i.module("IVWebApp").service("ToolboxMenuService", o.downgradeInjectable(l))
}
, function(t, e) {
    t.exports = function(t) {
        if ("function" != typeof t)
            throw TypeError(String(t) + " is not a function");
        return t
    }
}
, function(t, e) {
    var n = {}.toString;
    t.exports = function(t) {
        return n.call(t).slice(8, -1)
    }
}
, function(t, e, n) {
    var i = n(42);
    t.exports = function(t, e) {
        if (!i(t))
            return t;
        var n, r;
        if (e && "function" == typeof (n = t.toString) && !i(r = n.call(t)))
            return r;
        if ("function" == typeof (n = t.valueOf) && !i(r = n.call(t)))
            return r;
        if (!e && "function" == typeof (n = t.toString) && !i(r = n.call(t)))
            return r;
        throw TypeError("Can't convert object to primitive value")
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(7)
      , r = function() {
        function t(t, e, n, i, r) {
            var o = this;
            this.many = t,
            this.manyField = e,
            this.manyFieldId = n,
            this.one = i,
            this.cascadeDelete = r,
            t.entityCreated.connect((function(t) {
                return o.manyEntityCreated(t)
            }
            )),
            i.entityCreated.connect((function(t) {
                return o.oneEntityCreated(t)
            }
            )),
            i.entityRemoved.connect((function(t, e) {
                return o.oneEntityRemoved(t, e)
            }
            ))
        }
        return t.prototype.manyEntityCreated = function(t) {
            for (var e = 0, n = t; e < n.length; e++) {
                var i = n[e];
                i[this.manyField] = this.one.dataMap[i[this.manyFieldId]]
            }
        }
        ,
        t.prototype.oneEntityCreated = function(t) {
            for (var e = 0, n = t; e < n.length; e++)
                for (var i = n[e], r = 0, o = this.many.data; r < o.length; r++) {
                    var a = o[r];
                    a[this.manyFieldId] === i.id && (a[this.manyField] = i)
                }
        }
        ,
        t.prototype.oneEntityRemoved = function(t, e) {
            for (var n, i = [], r = 0, o = this.many.data; r < o.length; r++) {
                var a = o[r];
                a[this.manyField] && a[this.manyField].id === t.id && (!e && this.cascadeDelete ? i.push(a) : a[this.manyField] = void 0)
            }
            (n = this.many).removeLocal.apply(n, i)
        }
        ,
        t
    }()
      , o = function() {
        function t(t, e, n, i) {
            var r = this;
            this.one = t,
            this.oneField = e,
            this.many = n,
            this.manyFieldId = i,
            t.entityCreated.connect((function(t) {
                return r.oneEntityCreated(t)
            }
            )),
            n.entityCreated.connect((function(t) {
                return r.manyEntityCreated(t)
            }
            )),
            n.entityRemoved.connect((function(t, e) {
                return r.manyEntityRemoved(t, e)
            }
            ))
        }
        return t.prototype.oneEntityCreated = function(t) {
            for (var e = 0, n = t; e < n.length; e++) {
                var i = n[e];
                i[this.oneField + "_set"] && 0 !== i[this.oneField].length || (i[this.oneField + "_set"] = {});
                for (var r = 0, o = this.many.data; r < o.length; r++) {
                    var a = o[r];
                    a[this.manyFieldId] !== i.id || a.id in i[this.oneField + "_set"] || (i[this.oneField].push(a),
                    i[this.oneField + "_set"][a.id] = !0)
                }
            }
        }
        ,
        t.prototype.manyEntityCreated = function(t) {
            for (var e = 0, n = t; e < n.length; e++) {
                var i = n[e]
                  , r = this.one.dataMap[i[this.manyFieldId]];
                r && (r[this.oneField + "_set"] && 0 !== r[this.oneField].length || (r[this.oneField + "_set"] = {}),
                i.id in r[this.oneField + "_set"] || (r[this.oneField].push(i),
                r[this.oneField + "_set"][i.id] = !0))
            }
        }
        ,
        t.prototype.manyEntityRemoved = function(t, e) {
            for (var n = 0, r = this.one.data; n < r.length; n++) {
                var o = r[n];
                if (o.id === t[this.manyFieldId]) {
                    var a = i.findIndex(o[this.oneField], ["id", t.id]);
                    a >= 0 && (o[this.oneField].splice(a, 1),
                    delete o[this.oneField + "_set"][t.id]);
                    break
                }
            }
        }
        ,
        t
    }()
      , a = function() {
        function t(t, e, n, i) {
            var r = this;
            this.targetRepository = t,
            this.targetField = e,
            this.sourceIdsField = n,
            this.sourceRepository = i,
            t.entityCreated.connect((function(t) {
                return r.updateMapping(t)
            }
            )),
            i.entityCreated.connect((function() {
                return r.updateMapping()
            }
            )),
            i.entityRemoved.connect((function(t) {
                return r.removeSourceEntity(t)
            }
            ))
        }
        return t.prototype.updateMapping = function(t) {
            if (void 0 === t && (t = i.values(this.targetRepository.dataMap)),
            0 !== this.sourceRepository.data.length)
                for (var e = 0, n = t; e < n.length; e++) {
                    var r = n[e];
                    this.prepareTargetArray(r),
                    this.assignSourceEntitiesFromIds(r)
                }
        }
        ,
        t.prototype.prepareTargetArray = function(t) {
            void 0 === t[this.targetField] && (t[this.targetField] = []),
            t[this.targetField].length = 0
        }
        ,
        t.prototype.assignSourceEntitiesFromIds = function(t) {
            for (var e = 0, n = t[this.sourceIdsField]; e < n.length; e++) {
                var i = n[e]
                  , r = this.sourceRepository.dataMap[i];
                void 0 !== r ? t[this.targetField].push(r) : console.warn("Can not find source entity for", i)
            }
        }
        ,
        t.prototype.removeSourceEntity = function(t) {
            for (var e = 0, n = i.values(this.targetRepository.dataMap); e < n.length; e++) {
                var r = n[e];
                i.remove(r[this.targetField], (function(e) {
                    return t === e
                }
                )),
                i.remove(r[this.sourceIdsField], (function(e) {
                    return t.id === e
                }
                ))
            }
        }
        ,
        t
    }()
      , s = function() {
        function t() {}
        return t.manyToOne = function(t, e, n, i, o) {
            return void 0 === o && (o = !1),
            new r(t,e,n,i,o)
        }
        ,
        t.oneToMany = function(t, e, n, i) {
            return new o(t,e,n,i)
        }
        ,
        t.manyToMany = function(t, e, n, i) {
            return new a(t,e,n,i)
        }
        ,
        t
    }();
    e.EntityRelationMapper = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(523)
      , a = function() {
        function t() {}
        return t.prototype.build = function() {
            return this.filter
        }
        ,
        t.prototype.offset = function(t) {
            if (this.filter.offset)
                throw new Error("offset method can only be called once");
            return this.filter.offset = t,
            this.getInstance()
        }
        ,
        t.prototype.step = function(t) {
            if (this.filter.step)
                throw new Error("step method can only be called once");
            return this.filter.step = t,
            this.getInstance()
        }
        ,
        t.prototype.limit = function(t) {
            if (this.filter.limit)
                throw new Error("limit method can only be called once");
            return this.filter.limit = t,
            this.getInstance()
        }
        ,
        t.prototype.sortBy = function(t) {
            if (this.filter.sortBy)
                throw new Error("sortBy method can only be called once");
            return this.filter.sortBy = t,
            this.getInstance()
        }
        ,
        t.prototype.sortOrder = function(t) {
            if (this.filter.sortOrder)
                throw new Error("sortOrder method can only be called once");
            return this.filter.sortOrder = t,
            this.getInstance()
        }
        ,
        t.prototype.siteModel = function(t) {
            var e;
            if (!t)
                return this.getInstance();
            var n = t.map((function(t) {
                return t ? t.id : ""
            }
            ));
            return this.filter.siteModelEntityIds ? (e = this.filter.siteModelEntityIds).push.apply(e, n) : this.filter.siteModelEntityIds = n,
            this.getInstance()
        }
        ,
        t.prototype.boundingBox = function(e, n, i, r) {
            if (this.filter.lonMin)
                throw new Error("boundingBox method can only be called once");
            return this.filter.lonMin = parseFloat(e.toFixed(t.FRACTION_DIGITS)),
            this.filter.lonMax = parseFloat(i.toFixed(t.FRACTION_DIGITS)),
            this.filter.latMin = parseFloat(n.toFixed(t.FRACTION_DIGITS)),
            this.filter.latMax = parseFloat(r.toFixed(t.FRACTION_DIGITS)),
            this.getInstance()
        }
        ,
        t.prototype.dataset = function(t) {
            if (this.filter.datasetIds)
                throw new Error("dataset method can only be called once");
            return t && (this.filter.datasetIds = t.map((function(t) {
                return t.id
            }
            ))),
            this.getInstance()
        }
        ,
        t.prototype.location = function(e) {
            if (this.filter.lon)
                throw new Error("location method can only be called once");
            var n = e.toArray();
            return this.filter.lon = parseFloat(n[0].toFixed(t.FRACTION_DIGITS)),
            this.filter.lat = parseFloat(n[1].toFixed(t.FRACTION_DIGITS)),
            n.length > 2 && (this.filter.z = parseFloat(n[2].toFixed(t.FRACTION_DIGITS))),
            this.getInstance()
        }
        ,
        t.prototype.radius = function(t) {
            if (this.filter.radius)
                throw new Error("radius method can only be called once");
            return this.filter.radius = t,
            this.getInstance()
        }
        ,
        t.FRACTION_DIGITS = 15,
        t
    }();
    e.RestFilterBuilder = a;
    var s = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.filter = new o.PoiRestFilter,
            e
        }
        return r(e, t),
        e.prototype.poiType = function(t) {
            if (this.filter.poiTypeIds)
                throw new Error("poiType method can only be called once");
            return t && (this.filter.poiTypeIds = t.map((function(t) {
                return t.id
            }
            ))),
            this.getInstance()
        }
        ,
        e.prototype.poiTypeGroup = function(t) {
            if (this.filter.poiTypeGroupIds)
                throw new Error("poiTypeGroup method can only be called once");
            return t && (this.filter.poiTypeGroupIds = t.map((function(t) {
                return t.id
            }
            ))),
            this.getInstance()
        }
        ,
        e.prototype.getInstance = function() {
            return this
        }
        ,
        e
    }(a);
    e.PoiRestFilterBuilder = s;
    var c = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.filter = new o.ImageRestFilter,
            e
        }
        return r(e, t),
        e.prototype.hidden = function(t) {
            if (this.filter.hidden)
                throw new Error("hidden method can only be called once");
            return this.filter.hidden = t,
            this.getInstance()
        }
        ,
        e.prototype.spacing = function(t) {
            if (this.filter.spacing)
                throw new Error("spacing method can only be called once");
            return this.filter.spacing = t,
            this.getInstance()
        }
        ,
        e.prototype.getInstance = function() {
            return this
        }
        ,
        e
    }(a);
    e.ImageRestFilterBuilder = c
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    ), o = this && this.__assign || function() {
        return (o = Object.assign || function(t) {
            for (var e, n = 1, i = arguments.length; n < i; n++)
                for (var r in e = arguments[n])
                    Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]);
            return t
        }
        ).apply(this, arguments)
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var a = n(4)
      , s = n(257)
      , c = n(67)
      , l = n(157)
      , u = n(386)
      , d = n(101)
      , p = n(1067)
      , h = n(311)
      , f = n(210)
      , m = n(1070)
      , g = n(539)
      , v = n(312)
      , y = n(8)
      , b = n(387)
      , w = function(t) {
        function e() {
            var n = t.call(this) || this;
            return n.padding = {
                top: 0,
                left: e.PLANE_SPRITE_SPACING + e.ICON_SIZE_PX + e.PLANE_SPRITE_SPACING,
                right: e.PLANE_SPRITE_SPACING,
                bottom: 0
            },
            n.noIconLabelPadding = o(o({}, n.padding), {
                left: e.PLANE_SPRITE_SPACING
            }),
            n.deltaElementsFontColor = "rgba(0,0,0,1)",
            n.freshlyCreated = void 0,
            n.createIcon(),
            n.saveButtonTexture = d.getTextureLoader().load(e.saveIconPath, (function() {}
            )),
            n.deleteButtonTexture = d.getTextureLoader().load(e.deleteIconPath, (function() {}
            )),
            n.hideButtonTexture = d.getTextureLoader().load(e.hideIconPath, (function() {}
            )),
            n.getIcon().onload = function() {
                var t;
                return (null === (t = n.textSprite) || void 0 === t ? void 0 : t.spriteObject) && n.textSprite.updateSpriteTexture()
            }
            ,
            n
        }
        return r(e, t),
        e.createLine = function(t, n) {
            var i = c.createMeasuredLine(t, n, 1)
              , r = l.createMeshLine(i, e.LINE_MATERIAL);
            return r.renderOrder = h.RenderOrder.DEFAULT,
            r.userData.is2D = !0,
            r.name = "line",
            r.onBeforeRender = v.createOnBeforeRenderFunc(),
            r
        }
        ,
        e.createDottedLine = function(t, n, i) {
            void 0 === i && (i = e.dottedLineMaterial);
            var r = c.createMeasuredLine(t, n, 1)
              , o = l.createMeshLine(r, i);
            return o.renderOrder = h.RenderOrder.DEFAULT,
            o.name = "dotted line",
            o
        }
        ,
        e.createCircle = function(t, e, n) {
            void 0 === t && (t = void 0),
            void 0 === e && (e = this.CIRCLE_MATERIAL),
            void 0 === n && (n = this.innerCircleGeometry);
            var i = new a.Mesh(n,e);
            return t && i.position.copy(t),
            i.renderOrder = h.RenderOrder.DEFAULT,
            i.userData.is2D = !0,
            i.name = "circle",
            i.onBeforeRender = v.createOnBeforeRenderFunc(),
            i
        }
        ,
        e.createCompoundCircle = function(t) {
            var n = e.createCircle(void 0, e.COMPOUND_CIRCLE_MATERIAL, e.clickableCircleGeometry);
            n.name = "compound circle";
            var i = e.createCircle(t);
            return i.add(n),
            i.renderOrder = h.RenderOrder.DEFAULT,
            i
        }
        ,
        e.createSpriteIcon = function(t) {
            var e = new Image
              , n = d.getTextureLoader().crossOrigin;
            return n && (e.crossOrigin = n),
            e.src = f.makeUrlAbsolute(t),
            e.onerror = function() {
                console.error("Failed to load the measurement sprite icon.")
            }
            ,
            e
        }
        ,
        e.prototype.markNotFresh = function() {
            this.freshlyCreated = !1
        }
        ,
        e.prototype.dragObjectStart = function(t) {
            this.freshlyCreated = !1,
            this.draggedPoint = {
                object: t,
                initialPosition: t.position.clone()
            }
        }
        ,
        e.prototype.dragObjectEnd = function(t) {
            this.draggedPoint = void 0
        }
        ,
        e.prototype.dragObjectCancel = function() {
            this.draggedPoint && (this.dragObject(this.draggedPoint.object, this.draggedPoint.initialPosition),
            this.draggedPoint = void 0)
        }
        ,
        e.prototype.getPointOfView = function() {
            return this.pov
        }
        ,
        e.prototype.setPointOfView = function(t) {
            this.pov = t
        }
        ,
        e.prototype.updateMeshScaleForViewport = function(t) {
            this.updateTextSpriteForViewport(t),
            t.camera instanceof a.OrthographicCamera ? (e.LINE_MATERIAL.lineWidth = e.ORTHO_LINE_WIDTH,
            e.LINE_MATERIAL.needsUpdate = !0,
            e.LINE_HIGHLIGHT_MATERIAL.lineWidth = e.ORTHO_LINE_WIDTH,
            e.LINE_HIGHLIGHT_MATERIAL.needsUpdate = !0,
            e.dottedLineMaterial.lineWidth = e.ORTHO_LINE_WIDTH,
            e.dottedLineMaterial.needsUpdate = !0) : (e.LINE_MATERIAL.lineWidth = e.PERSPECTIVE_LINE_WIDTH,
            e.LINE_MATERIAL.needsUpdate = !0,
            e.LINE_HIGHLIGHT_MATERIAL.lineWidth = e.PERSPECTIVE_LINE_WIDTH,
            e.LINE_HIGHLIGHT_MATERIAL.needsUpdate = !0,
            e.dottedLineMaterial.lineWidth = e.PERSPECTIVE_LINE_WIDTH,
            e.dottedLineMaterial.needsUpdate = !0)
        }
        ,
        e.prototype.setUpMouseListeners = function(t) {
            var e = this;
            if (!(this.onHover && this.onPointHover && this.onPointDragStart && this.onPointDrag && this.onPointDragEnd))
                throw new Error("Corresponding callback haven't been set!");
            this.getHoverableObjects().forEach((function(t) {
                t.onMouseOver = e.onHover,
                t.onMouseOut = e.onHover
            }
            )),
            this.getPoints().forEach((function(n) {
                n.onMouseOver = function(t, i) {
                    n.renderOrder = h.RenderOrder.HIGHLIGHT,
                    e.isInteractionWithPointsAllowed(i) && (document.body.style.cursor = b.MouseCursorStyle.POINTER),
                    e.flipMeshMaterialsRecursively(n, !0)
                }
                ,
                n.onMouseOut = function() {
                    n.renderOrder = h.RenderOrder.DEFAULT,
                    document.body.style.cursor = b.MouseCursorStyle.DEFAULT,
                    e.flipMeshMaterialsRecursively(n, !1)
                }
                ,
                n.onDragStart = function(i, r) {
                    return e.setHovered(!1),
                    e.onPointDragStart(t, n, i, r)
                }
                ,
                n.onDrag = function(i, r) {
                    e.onPointDrag(t, n, i, r)
                }
                ,
                n.onDragEnd = function() {
                    e.setHovered(!1),
                    e.onPointDragEnd(t, n),
                    e.setUpMouseListeners(t)
                }
            }
            )),
            this.textSprite.spriteObject.onDoubleClick = function() {
                return !0
            }
            ,
            this.textSprite.spriteObject.onMouseOver = function(t, n) {
                e.labelHoverViewport = n,
                e.onHover(),
                document.body.style.cursor = b.MouseCursorStyle.POINTER
            }
            ,
            this.textSprite.spriteObject.onMouseOut = function() {
                e.labelHoverViewport = void 0,
                e.textSprite && e.textSprite.removeButtons(),
                e.onHover(),
                document.body.style.cursor = b.MouseCursorStyle.DEFAULT
            }
        }
        ,
        e.prototype.cleanUpMouseListeners = function() {
            this.children.forEach((function(t) {
                t.onMouseOver = void 0,
                t.onMouseOut = void 0,
                t.onClick = void 0
            }
            ))
        }
        ,
        e.prototype.setUpPointsMouseListeners = function() {
            var t = this;
            if (!this.onPointHover || !this.onPointClick)
                throw new Error("Corresponding callbacks haven't been set!");
            this.getPoints().forEach((function(n) {
                n.onMouseOver = function() {
                    n.material = e.CIRCLE_HIGHLIGHT_MATERIAL,
                    n.renderOrder = h.RenderOrder.HIGHLIGHT,
                    t.onPointHover(!0, n)
                }
                ,
                n.onMouseOut = function() {
                    n.material = e.CIRCLE_MATERIAL,
                    n.renderOrder = h.RenderOrder.DEFAULT,
                    t.onPointHover(!1)
                }
                ,
                n.onClick = function(e) {
                    return n.renderOrder = h.RenderOrder.DEFAULT,
                    t.onPointClick(n.position, e),
                    !0
                }
            }
            ))
        }
        ,
        e.prototype.setHovered = function(t) {
            var n = this;
            this.children.forEach((function(e) {
                e.renderOrder = t ? h.RenderOrder.HIGHLIGHT : h.RenderOrder.DEFAULT,
                n.flipMeshMaterialsRecursively(e, t)
            }
            )),
            this.textSprite.backgroundProperties = t ? e.backgroundHighlightProperties : e.backgroundProperties,
            this.textSprite.spriteObject.renderOrder = t ? h.RenderOrder.ON_TOP : h.RenderOrder.ABOVE,
            this.textSprite.updateSpriteTexture(),
            this.updateTextSpriteMaterial(),
            this.textSprite.spriteObject.material.disableDepthTesting = t
        }
        ,
        e.prototype.setMouseEventCallbacks = function(t, e, n, i, r, o) {
            this.onPointHover = t,
            this.onPointClick = e,
            this.onPointDragStart = n,
            this.onPointDrag = i,
            this.onPointDragEnd = r,
            this.onHover = o
        }
        ,
        e.prototype.createTextSprite = function(t, n, i, r, s, c, l, d) {
            void 0 === r && (r = e.MEASUREMENT_MATERIAL_TRANSPARENT_COLOR),
            void 0 === s && (s = u.MEASUREMENT_MATERIAL_COLOR_HEX),
            void 0 === c && (c = e.fontProperties.color),
            void 0 === l && (l = this.padding),
            void 0 === d && (d = h.RenderOrder.ABOVE);
            var f = new p.EditablePlaneSprite(n)
              , m = t;
            f.fontProperties = o(o({}, e.fontProperties), {
                color: c
            }),
            f.backgroundProperties = {
                color: r
            },
            f.borderProperties = o(o({}, e.borderProperties), {
                color: s
            }),
            f.padding = l,
            f.iconProperties = e.iconParameters,
            f.buttonWidth = e.ICON_SIZE_PX,
            f.buttonSpacing = e.PLANE_SPRITE_SPACING,
            f.fontSizeFactor = 1.4;
            var g = f.createSpriteObject()
              , v = g.material
              , y = f.visibleSize.x / f.visibleSize.y;
            g.scale.set(1 * y, 1, 1);
            var b = new a.Vector3(m.x,m.y,m.z);
            return g.position.copy(b),
            v.opacity = 1,
            g.renderOrder = d,
            g.userData.is2D = !0,
            i && f.setSpriteIconTextureFromImage(i),
            f
        }
        ,
        e.prototype.updateTextSpriteMaterial = function() {
            var t = this.textSprite.spriteObject;
            if (t) {
                var n = !1;
                t.material instanceof g.MeasurementMaterial && (n = t.material.disableDepthTesting);
                var i = new g.MeasurementMaterial({
                    color: u.MEASUREMENT_MATERIAL_COLOR,
                    obscuredColor: u.OBSCURED_MEASUREMENT_MATERIAL_COLOR,
                    opacity: 1,
                    obscuredOpacity: e.OBSCURED_MEASUREMENT_MATERIAL_OPACITY,
                    occlusionDistance: e.LABEL_OCCLUSION_DISTANCE,
                    clipDistance: e.CLIP_DISTANCE,
                    map: t.material.map
                });
                i.disableDepthTesting = n,
                t.material = i,
                t.onBeforeRender = v.createOnBeforeRenderFunc()
            }
        }
        ,
        e.prototype.removeTextSprite = function() {
            this.textSprite && this.textSprite.removeSpriteObject()
        }
        ,
        e.prototype.removeMeshes = function() {
            for (var t = this, e = [], n = 0; n < arguments.length; n++)
                e[n] = arguments[n];
            e.forEach((function(e) {
                e && (t.remove(e),
                e.geometry.dispose())
            }
            ))
        }
        ,
        e.prototype.removeLabels = function() {
            for (var t = [], e = 0; e < arguments.length; e++)
                t[e] = arguments[e];
            t && t.forEach((function(t) {
                t && t.removeSpriteObject()
            }
            ))
        }
        ,
        e.prototype.isInteractionWithPointsAllowed = function(t) {
            return !0
        }
        ,
        e.prototype.updateTextSpriteForViewport = function(t) {
            var e = this;
            if (this.textSprite) {
                if (this.labelHoverViewport && this.labelHoverViewport.name === t.name) {
                    var n = [{
                        iconTexture: this.hideButtonTexture,
                        onClick: function() {
                            return e.hidingInProgress || (e.hidingInProgress = !0,
                            e.onHideButtonClicked().then((function() {
                                return e.hidingInProgress = !1
                            }
                            )).catch(y.handleWarning)),
                            !0
                        }
                    }, {
                        iconTexture: this.deleteButtonTexture,
                        onClick: function() {
                            return e.deletingInProgress || (e.deletingInProgress = !0,
                            e.onDeleteButtonClicked().then((function() {
                                return e.deletingInProgress = !1
                            }
                            )).catch(y.handleWarning)),
                            !0
                        }
                    }];
                    this.canUserSaveMeasurements() && !this.measurement.isSaved() && n.push({
                        iconTexture: this.saveButtonTexture,
                        onClick: function() {
                            return e.savingInProgress || (e.savingInProgress = !0,
                            e.onSaveButtonClicked().then((function() {
                                return e.savingInProgress = !1
                            }
                            )).catch(y.handleWarning)),
                            !0
                        }
                    }),
                    this.textSprite.setButtons(n)
                } else
                    this.labelHoverViewport && this.labelHoverViewport.name !== t.name && this.textSprite.removeButtons();
                this.textSprite.updateSpriteObject(t)
            }
        }
        ,
        e.prototype.flipMeshMaterialsRecursively = function(t, n) {
            var i = this;
            n && t.material === e.CIRCLE_MATERIAL ? t.material = e.CIRCLE_HIGHLIGHT_MATERIAL : n || t.material !== e.CIRCLE_HIGHLIGHT_MATERIAL ? n && t.material === e.LINE_MATERIAL ? t.material = e.LINE_HIGHLIGHT_MATERIAL : n || t.material !== e.LINE_HIGHLIGHT_MATERIAL ? t.children.forEach((function(t) {
                return i.flipMeshMaterialsRecursively(t, n)
            }
            )) : t.material = e.LINE_MATERIAL : t.material = e.CIRCLE_MATERIAL
        }
        ,
        e.ICON_SIZE_PX = 20,
        e.fontProperties = {
            face: "Open Sans",
            size: 20,
            modifier: "bold",
            color: "rgba(255,255,255,1)",
            strokeWidth: 0,
            strokeColor: "rgba(0,0,0,1)"
        },
        e.COMPOUND_CIRCLE_MATERIAL = new a.MeshBasicMaterial({
            depthTest: !1,
            depthWrite: !1,
            transparent: !0,
            opacity: 0
        }),
        e.dottedLineMaterial = new s.MeshLineMaterial({
            color: u.GUIDE_LINE_COLOR,
            transparent: !0,
            depthTest: !1,
            lineWidth: .01,
            opacity: 1,
            sizeAttenuation: 1,
            depthWrite: !1,
            dashArray: .05,
            dashOffset: 0,
            dashRatio: .2
        }),
        e.borderProperties = {
            width: 2,
            color: u.MEASUREMENT_MATERIAL_COLOR_HEX,
            cornerRadius: 0
        },
        e.OBSCURED_MEASUREMENT_MATERIAL_OPACITY = .6,
        e.OCCLUSION_DISTANCE = -.1,
        e.LABEL_OCCLUSION_DISTANCE = -1,
        e.CLIP_DISTANCE = -4,
        e.LINE_MATERIAL = new m.MeasurementLineMaterial({
            color: u.MEASUREMENT_MATERIAL_COLOR,
            transparent: !0,
            dashArray: .02,
            depthTest: !1,
            lineWidth: .01,
            opacity: 1,
            sizeAttenuation: 1,
            depthWrite: !1
        },{
            dashColor: u.OBSCURED_MEASUREMENT_MATERIAL_COLOR,
            dashOpacity: e.OBSCURED_MEASUREMENT_MATERIAL_OPACITY,
            occlusionDistance: e.OCCLUSION_DISTANCE,
            clipDistance: e.CLIP_DISTANCE
        }),
        e.CIRCLE_MATERIAL = new g.MeasurementMaterial({
            color: u.MEASUREMENT_MATERIAL_COLOR,
            obscuredColor: u.OBSCURED_MEASUREMENT_MATERIAL_COLOR,
            opacity: 1,
            obscuredOpacity: e.OBSCURED_MEASUREMENT_MATERIAL_OPACITY,
            occlusionDistance: e.OCCLUSION_DISTANCE,
            clipDistance: e.CLIP_DISTANCE
        }),
        e.hideIconPath = n(1075),
        e.deleteIconPath = n(1076),
        e.saveIconPath = n(1077),
        e.MEASUREMENT_MATERIAL_TRANSPARENT_COLOR = "rgba(51,153,200,0.6)",
        e.LINE_HIGHLIGHT_MATERIAL = new s.MeshLineMaterial({
            color: u.MEASUREMENT_HIGHLIGHT_MATERIAL_COLOR,
            transparent: !0,
            depthTest: !1,
            lineWidth: .01,
            opacity: 1,
            sizeAttenuation: 1,
            depthWrite: !1
        }),
        e.CIRCLE_HIGHLIGHT_MATERIAL = new a.MeshBasicMaterial({
            color: u.MEASUREMENT_HIGHLIGHT_MATERIAL_COLOR,
            depthTest: !1,
            depthWrite: !1,
            transparent: !0
        }),
        e.ORIENTATION_HEIGHT_DIFFERENCE = 1,
        e.ORTHO_LINE_WIDTH = .002,
        e.PERSPECTIVE_LINE_WIDTH = .01,
        e.POINT_PIXEL_SIZE = 10,
        e.PLANE_SPRITE_SPACING = 6,
        e.iconParameters = {
            position: new a.Vector2(e.PLANE_SPRITE_SPACING,e.PLANE_SPRITE_SPACING - 1),
            size: new a.Vector2(e.ICON_SIZE_PX,e.ICON_SIZE_PX)
        },
        e.backgroundProperties = {
            color: e.MEASUREMENT_MATERIAL_TRANSPARENT_COLOR
        },
        e.backgroundHighlightProperties = {
            color: u.MEASUREMENT_HIGHLIGHT_MATERIAL_COLOR_HEX
        },
        e.VISIBLE_CIRCLE_RADIUS = .025,
        e.innerCircleGeometry = new a.CircleGeometry(e.VISIBLE_CIRCLE_RADIUS,32),
        e.CIRCLE_MARGIN_MULTIPLIER = 3,
        e.clickableCircleGeometry = new a.CircleGeometry(e.VISIBLE_CIRCLE_RADIUS * e.CIRCLE_MARGIN_MULTIPLIER,32),
        e
    }(a.Object3D);
    e.MeasurementObject3D = w
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , r = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(4)
      , a = n(7)
      , s = n(101)
      , c = n(319)
      , l = n(67)
      , u = n(20)
      , d = function() {
        function t(t, e, n, i) {
            this.globalPosition = e,
            this.floor = n,
            this.poi = i,
            this.views = new Set,
            this.IV = t.IV,
            this.FloorChangerService = t.FloorChangerService,
            this.gettextCatalog = t.gettextCatalog,
            this.ImageService = t.ImageService,
            this.PoiService = t.PoiService,
            this.localPosition = t.GeoTransformationService.vectorToLocal(this.globalPosition)
        }
        return t.prototype.build = function() {
            this.icons = this.buildIcons(),
            this.text = this.buildText(),
            this.buildMaterials()
        }
        ,
        t.prototype.render = function(t, e, n, i) {
            if (this.views.add(t),
            n) {
                var r = t.getCamera().position;
                !c.isPositionInSight(r, this.localPosition) || this.floor && !this.FloorChangerService.isInCurrentFloors(this.floor) || (this.drawBottomMarker(e),
                this.drawVerticalDottedLine(t, e),
                this.drawPanoramaIcon(e))
            } else
                this.drawMapIcon(e, i)
        }
        ,
        t.prototype.selectCorrectIcon = function(e) {
            var n = e * t.ICON_SIZE_FACTOR;
            return this.FloorChangerService.isInCurrentFloors(this.getFloor()) ? c.createIcon(this.mapMaterialActiveFloor, this.localPosition, n) : c.createIcon(this.mapMaterialInactiveFloor, this.localPosition, n)
        }
        ,
        t.prototype.onBeforeRender = function(t) {
            var e = t.getCamera().quaternion;
            void 0 !== this.panoramaIcon && this.panoramaIcon.quaternion.copy(e),
            void 0 !== this.mapIcon && this.mapIcon.quaternion.copy(e),
            this.scalePanoramaIcon(t)
        }
        ,
        t.prototype.moveToInstruction = function() {
            return i(this, void 0, void 0, (function() {
                var e, n, i;
                return r(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        return this.isInstructionOnPoi() ? (this.PoiService.highlightPois([this.poi]),
                        [2, this.PoiService.goToPoi(this.poi)]) : (e = this.localPosition.clone(),
                        [4, u.optionalCollect(this.ImageService.getClosestImageOnFloor(e, t.SITE_MODEL_BOUND_RADIUS), this.ImageService.getClosestImage(e))]);
                    case 1:
                        return (n = r.sent()).length > 0 ? (i = t.getViewDirection(e, n[0]),
                        [2, this.IV.moveToImage(n[0], i)]) : [2, this.IV.moveToGeoLocation(e, !0, void 0, void 0, void 0, void 0, void 0)]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.getViewDirection = function(e, n) {
            e.z += t.SPECIAL_ICON_PANORAMA_HEIGHT;
            var i = e.z - n.location.z;
            return i = Math.min(1, i),
            i = Math.max(-1, i),
            {
                lon: Math.atan2(e.y - n.location.y, e.x - n.location.x),
                lat: Math.asin(i)
            }
        }
        ,
        Object.defineProperty(t.prototype, "position", {
            get: function() {
                return this.globalPosition
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.getFloor = function() {
            return this.floor
        }
        ,
        t.prototype.scalePanoramaIcon = function(e) {
            if (this.panoramaIcon) {
                var n = e.getDefaultViewport().getHeight() * t.PANORAMA_ICON_MAX_VIEWPORT_PERCENTAGE;
                l.setMeshScreenSize(e.getDefaultViewport(), this.panoramaIcon, n, !0)
            }
        }
        ,
        t.prototype.drawBottomMarker = function(t) {
            var e = c.createIcon(this.bottomMarkerMaterial, this.localPosition);
            t.add(e)
        }
        ,
        t.prototype.drawVerticalDottedLine = function(t, e) {
            this.isInstructionOnPoi() ? this.connectBottomMarkerToPoiSprite(t, e) : this.connectBottomMarkerToPanoramaIcon(t, e)
        }
        ,
        t.prototype.connectBottomMarkerToPanoramaIcon = function(e, n) {
            for (var i = 1; i < t.NUMBER_OF_VERTICAL_DOTS; i++) {
                var r = c.createIcon(this.dotMaterial, this.localPosition);
                r.scale.setScalar(1 / 16),
                r.position.z += .2 * i,
                r.lookAt(e.getCamera().position),
                n.add(r)
            }
        }
        ,
        t.prototype.connectBottomMarkerToPoiSprite = function(t, e) {
            for (var n = this.poi.location.distanceTo(this.localPosition), i = 1 / (Math.floor(n / .2) - 1), r = 0, o = a.range(i, 1, i); r < o.length; r++) {
                var s = o[r]
                  , l = this.localPosition.clone().lerp(this.poi.location, s)
                  , u = c.createIcon(this.dotMaterial, l);
                u.scale.setScalar(1 / 16),
                u.lookAt(t.getCamera().position),
                e.add(u)
            }
        }
        ,
        t.prototype.drawPanoramaIcon = function(e) {
            this.isInstructionOnPoi() || (this.panoramaIcon = c.createIcon(this.panoramaMaterial, this.localPosition),
            this.panoramaIcon.position.z += t.SPECIAL_ICON_PANORAMA_HEIGHT,
            e.add(this.panoramaIcon))
        }
        ,
        t.prototype.drawMapIcon = function(t, e) {
            this.mapIcon = this.selectCorrectIcon(e),
            this.mapIcon.position.z += .1,
            t.add(this.mapIcon)
        }
        ,
        t.prototype.isInstructionOnPoi = function() {
            return this.poi && !this.poi.isLocationAsPoi
        }
        ,
        t.prototype.buildMaterials = function() {
            var t = this
              , e = s.getTextureLoader()
              , i = e.load(n(1142), (function() {
                return t.invalidateScenes()
            }
            ));
            i.anisotropy = s.ANISOTROPIC_LEVEL,
            this.bottomMarkerMaterial = new o.MeshBasicMaterial({
                map: i,
                transparent: !0,
                depthTest: !1,
                opacity: 1,
                side: o.DoubleSide
            }),
            this.dotMaterial = new o.MeshBasicMaterial({
                map: e.load(n(1143), (function() {
                    return t.invalidateScenes()
                }
                )),
                transparent: !0,
                depthTest: !1,
                opacity: 1
            }),
            this.mapMaterialActiveFloor = new o.MeshBasicMaterial({
                map: e.load(this.icons.map, (function() {
                    return t.invalidateScenes()
                }
                )),
                transparent: !0,
                opacity: 1
            }),
            this.mapMaterialInactiveFloor = new o.MeshBasicMaterial({
                map: e.load(this.icons.map, (function() {
                    return t.invalidateScenes()
                }
                )),
                transparent: !0,
                opacity: 1.5 * c.INACTIVE_FLOOR_ICON_OPACITY
            }),
            this.panoramaMaterial = new o.MeshBasicMaterial({
                map: e.load(this.icons.panorama, (function() {
                    return t.invalidateScenes()
                }
                )),
                transparent: !0,
                depthTest: !1,
                opacity: 1
            })
        }
        ,
        t.prototype.invalidateScenes = function() {
            this.views.forEach((function(t) {
                return t.invalidateScene()
            }
            ))
        }
        ,
        t.SITE_MODEL_BOUND_RADIUS = 10,
        t.SPECIAL_ICON_PANORAMA_HEIGHT = 1.4,
        t.NUMBER_OF_VERTICAL_DOTS = 7,
        t.PANORAMA_ICON_MAX_VIEWPORT_PERCENTAGE = .25,
        t.ICON_SIZE_FACTOR = 2,
        t
    }();
    e.SpecialInstruction = d
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , r = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    n(41);
    var o, a = n(2), s = (n(9),
    n(7)), c = (n(14),
    n(4)), l = n(559), u = (n(31),
    n(6)), d = n(0), p = (n(121),
    n(0)), h = n(41), f = n(31), m = n(14), g = n(9), v = n(121);
    !function(t) {
        t[t.NORMAL = 0] = "NORMAL",
        t[t.MAGNIFICATION = 1] = "MAGNIFICATION"
    }(o || (o = {}));
    var y = function() {
        function t(t, e, n, i, r, a, s) {
            var c = this;
            this.ErrorService = t,
            this.DatasetRepository = e,
            this.GeoTransformationService = n,
            this.PointCloudMenuService = i,
            this.gettextCatalog = r,
            this.RestService = a,
            this.MagnificationService = s,
            this.raycastMode = o.NORMAL,
            this.POTREE_PICK_FAIL_TOLERANCE = 10,
            this.errorHandler = this.ErrorService.newOnceWrapper().report().network().generic(this.gettextCatalog.getString("An error occurred when retrieving the cursor location.")).build(),
            this.MagnificationService.magnificationModeChanged.connect((function(t) {
                c.raycastMode = t ? o.MAGNIFICATION : o.NORMAL
            }
            ))
        }
        return t.prototype.getCoordinates = function(t, e, n, a) {
            return i(this, void 0, void 0, (function() {
                var i, s, c, l;
                return r(this, (function(r) {
                    return this.raycastMode !== o.MAGNIFICATION || this.PointCloudMenuService.isCloudVisible() ? (l = this.doDepthImagePicking(t, e)) ? [2, l] : [2, this.doPointCloudPicking(t, e, n, void 0, void 0, a)] : (i = this.MagnificationService.raycastingCamera,
                    s = this.MagnificationService.magnificationViewport,
                    (c = this.doPointCloudPicking(t, e, n, i, s, a)) ? (this.potreePickFailCounter = 0,
                    [2, c]) : this.potreePickFailCounter < this.POTREE_PICK_FAIL_TOLERANCE ? (this.potreePickFailCounter++,
                    [2, void 0]) : [2, this.doDepthImagePicking(t, e)])
                }
                ))
            }
            ))
        }
        ,
        t.prototype.doPointCloudPicking = function(t, e, n, i, r, o) {
            var a = n ? this.DatasetRepository.data : this.getDatasetsToRaycast(t.getCamera(), e);
            return this.potreePicker(t, e, a, i, r, o)
        }
        ,
        t.prototype.doDepthImagePicking = function(t, e) {
            if (!this.PointCloudMenuService.isCloudVisible() && t.getImage()) {
                var n = t.getImage().dataset;
                if (n && n.hasDepthImages)
                    return this.depthImagePicker(t, e)
            }
        }
        ,
        t.prototype.checkDepthPickable = function(t) {
            if (this.PointCloudMenuService.isCloudVisible())
                return !1;
            var e = t.getImage();
            return e && e.dataset && e.dataset.hasDepthImages
        }
        ,
        t.prototype.raycastEntitiesDepth = function(t, e) {
            for (var n = this, i = t.getCamera(), r = t.getImage().dataset, o = [], a = function(e) {
                o.push(s.depthImagePicker(t, e.location.clone()).then((function(t) {
                    return n.pickResultToRaycastResponse(t, e, r)
                }
                )).catch((function() {}
                )))
            }, s = this, c = 0, l = e; c < l.length; c++) {
                a(l[c])
            }
            return Promise.all(o).then((function(t) {
                return n.reducePickResponses(t, i.position)
            }
            ))
        }
        ,
        t.prototype.reducePickResponses = function(t, e) {
            var n = {};
            t = s.filter(t, s.identity);
            for (var i = s.groupBy(t, (function(t) {
                return t.customId
            }
            )), r = 0, o = s.keys(i); r < o.length; r++) {
                var a = o[r];
                n[Number(a)] = this.getClosestPoint(i[a], e)
            }
            return n
        }
        ,
        t.prototype.pickResultToRaycastResponse = function(t, e, n) {
            return t ? {
                customId: e.id,
                position: t.position,
                normal: t.normal,
                dataset: n
            } : void 0
        }
        ,
        t.prototype.getDatasetsToRaycast = function(t, e) {
            return this.lastCameraPosition && t.position.equals(this.lastCameraPosition) || (this.lastDatasetsByCameraPosition = this.getDatasetsContainingPoint(t.position),
            this.lastCameraPosition = t.position.clone()),
            s.union(this.lastDatasetsByCameraPosition, this.getDatasetsContainingPoint(e))
        }
        ,
        t.prototype.getDatasetsContainingPoint = function(t) {
            return s.filter(this.DatasetRepository.data, (function(e) {
                return e.withinBoundingBox(t)
            }
            ))
        }
        ,
        t.prototype.potreePicker = function(e, n, i, r, o, a) {
            var s = this;
            if ((i = i.filter((function(t) {
                return s.checkClientSidePickable(t)
            }
            ))).length) {
                for (var l = a || e.getLastMousePosition(), u = e.getViewport(l.x, l.y), d = (r = r || u.getCamera())instanceof c.PerspectiveCamera, p = [], h = 0, f = i; h < f.length; h++) {
                    var m = f[h].pointCloudSceneNode
                      , g = m.pointCloudObject;
                    o = o || u;
                    var v = m.getVisibleNodes(o);
                    v && (g.visibleNodes = v),
                    g.material = d ? g.perspectiveMaterial : g.orthographicMaterial,
                    p.push(g)
                }
                var y = e.divContainer.getCurrentHeight()
                  , b = {
                    pixelPosition: new c.Vector3(l.x,y - l.y,0),
                    onBeforePickRender: t.getOnBeforePickRender(e, u)
                }
                  , w = new c.Ray(r.position);
                w.direction.copy(n).sub(r.position),
                w.direction.normalize();
                var S = p[0].Potree.pick(p, e.renderer, r, w, b);
                if (S) {
                    var x = i.find((function(t) {
                        return S.pointCloud === t.pointCloudSceneNode.pointCloudObject
                    }
                    ));
                    if (x)
                        return {
                            position: S.position,
                            normal: S.normal,
                            dataset: x,
                            datasetPosition: x.local2dataset(S.position.clone()),
                            datasetNormal: x.local2datasetdir(S.normal.clone())
                        };
                    console.error("Cannot find dataset for picked point")
                }
            }
        }
        ,
        t.getOnBeforePickRender = function(t, e) {
            var n = t.divContainer.getCurrentWidth()
              , i = t.divContainer.getCurrentHeight()
              , r = Math.floor(n * e.left)
              , o = Math.floor(i * e.bottom)
              , a = Math.floor(n * e.width)
              , s = Math.floor(i * e.height);
            return function(t, e) {
                e.viewport.set(r, o, a, s),
                e.scissor.set(r, o, a, s),
                e.scissorTest = !0
            }
        }
        ,
        t.prototype.depthImagePicker = function(t, e) {
            t.raycaster.set(t.getCamera().position, e.sub(t.getCamera().position).normalize());
            for (var n = function(t) {
                var e = t.object;
                return e.userData.depthImagePromise ? {
                    value: e.userData.depthImagePromise.then((function(n) {
                        var i = e.userData.image
                          , r = new c.Vector3
                          , o = new c.Vector3;
                        return l.DepthImageSampler.sample(n, t, i.location, r, o) ? {
                            position: r,
                            normal: o,
                            dataset: i.dataset,
                            datasetPosition: i.dataset.local2dataset(r.clone()),
                            datasetNormal: i.dataset.local2datasetdir(o.clone())
                        } : Promise.reject("No valid sample found")
                    }
                    ))
                } : "continue"
            }, i = 0, r = t.raycaster.intersectObjects(t.underlayScene.children, !0, void 0, !1); i < r.length; i++) {
                var o = n(r[i]);
                if ("object" == typeof o)
                    return o.value
            }
            return Promise.reject("No panorama found")
        }
        ,
        t.prototype.checkClientSidePickable = function(t) {
            return t.pointCloudSceneNode && t.pointCloudSceneNode.visible && void 0 !== t.pointCloudSceneNode.pointCloudObject
        }
        ,
        t.prototype.getClosestPoint = function(t, e) {
            var n, i = Number.POSITIVE_INFINITY;
            return t.forEach((function(t) {
                t && t.position && e.distanceTo(t.position) < i && (i = e.distanceTo(t.position),
                n = t)
            }
            )),
            n
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(p.ɵɵinject(h.ErrorService),p.ɵɵinject(f.DatasetRepository),p.ɵɵinject(m.GeoTransformationService),p.ɵɵinject("PointCloudMenuService"),p.ɵɵinject("gettextCatalog"),p.ɵɵinject(g.RestService),p.ɵɵinject(v.MagnificationService))
        }
        ,
        t.ɵprov = p.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.RaycastService = y,
    p.ɵsetClassMetadata(y, [{
        type: d.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: h.ErrorService
        }, {
            type: f.DatasetRepository
        }, {
            type: m.GeoTransformationService
        }, {
            type: void 0,
            decorators: [{
                type: d.Inject,
                args: ["PointCloudMenuService"]
            }]
        }, {
            type: void 0,
            decorators: [{
                type: d.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: g.RestService
        }, {
            type: v.MagnificationService
        }]
    }
    ), null),
    a.module("IVWebApp").service("RaycastService", u.downgradeInjectable(y))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(6)
      , o = n(0)
      , a = n(16)
      , s = n(4)
      , c = (n(28),
    n(17),
    n(81))
      , l = n(8)
      , u = (n(38),
    n(322))
      , d = n(261)
      , p = n(105)
      , h = n(55)
      , f = (n(22),
    n(7))
      , m = n(107)
      , g = (n(21),
    n(65),
    n(0))
      , v = n(28)
      , y = n(17)
      , b = n(38)
      , w = n(65)
      , S = n(22)
      , x = n(21)
      , M = function() {
        function t(t, e, n, i, r, o, s) {
            var c = this;
            this.FloorChangerService = t,
            this.ViewService = e,
            this.SidebarMenuService = n,
            this.ViewMenuService = i,
            this.SiteModelRepository = r,
            this.PointCloudMenuService = o,
            this.TrackingService = s,
            this.onVolumeChangeEnd = new a.Signal,
            this.onVolumeChange = new a.Signal,
            this.positionAdjustmentInProgress = !1,
            this.FloorChangerService.onFloorChange.connect((function(t) {
                return c.updateVolumeForFloors(t.currentFloors)
            }
            )),
            this.onVolumeChangeEnd.connect((function() {
                c.updateVolumeForFloors(c.FloorChangerService.currentFloors),
                c.has3dVolumeBeenModified = !0
            }
            ))
        }
        return t.prototype.enterDownloadPointCloudMode = function(t) {
            this.startingPosition = t;
            var e = this.SidebarMenuService.getItem(c.SidebarMenuItemsKey.EDITOR_MODES_DOWNLOAD_POINT_CLOUD);
            this.SidebarMenuService.goToItem(e).catch(l.handleWarning)
        }
        ,
        t.prototype.switchToMap = function() {
            this.isMapViewMode() || this.has3dVolumeBeenModified || (this.hideVolumeLayerOnMap(),
            this.toggleViewMode(p.SceneViewMode.Map))
        }
        ,
        t.prototype.switchToPerspective = function() {
            this.isMapViewMode() && (this.showVolumeLayerOnMap(),
            this.has3dVolumeBeenModified = !1,
            this.toggleViewMode(p.SceneViewMode.Perspective))
        }
        ,
        t.prototype.toggleViewMode = function(t) {
            var e = this
              , n = this.ViewService.getCurrentMainViewMode()
              , i = t === p.SceneViewMode.Map ? this.ViewService.mainView.getVolumeClippingLayer().volume.position : void 0;
            this.ViewService.showSecondaryView = t === p.SceneViewMode.Perspective,
            this.ViewService.mainView.switchViewMode(t, !1, i).then((function() {
                return e.TrackingService.trackPointCloudDownloadViewModeChanged(n, t)
            }
            )).catch(l.handleWarning),
            this.disableOptionsFromViewMenu(t)
        }
        ,
        t.prototype.isViewModeSwitchDisabled = function() {
            return !this.isMapViewMode() && this.has3dVolumeBeenModified
        }
        ,
        t.prototype.isMapViewMode = function() {
            return this.ViewService.getCurrentMainViewMode() === p.SceneViewMode.Map
        }
        ,
        t.prototype.disableOptionsFromViewMenu = function(t) {
            this.ViewMenuService.config.showPanoramasOptionEnabled = !1,
            this.ViewMenuService.config.showLocationMarkersOptionEnabled = !1,
            this.ViewMenuService.config.showPointCloudAutomaticActivationOptionEnabled = !1,
            this.ViewMenuService.config.showPointCloudOptionEnabled = t === p.SceneViewMode.Map,
            this.ViewMenuService.config.showSecondaryViewOptionEnabled = t === p.SceneViewMode.Perspective
        }
        ,
        t.prototype.restoreOptionsFromViewMenu = function() {
            this.ViewMenuService.config.showPointCloudAutomaticActivationOptionEnabled = !0,
            this.ViewMenuService.config.showPanoramasOptionEnabled = !0,
            this.ViewMenuService.config.showSecondaryViewOptionEnabled = !0,
            this.ViewMenuService.config.showLocationMarkersOptionEnabled = !0,
            this.ViewMenuService.config.showPointCloudOptionEnabled = !0
        }
        ,
        t.prototype.showVolumeLayerOnMap = function() {
            this.ViewService.mapView.getVolumeClippingMapLayer().visible = !0;
            var t = this.ViewService.mainView.getVolumeClippingLayer().volume;
            this.onVolumeChange.emit(t)
        }
        ,
        t.prototype.hideVolumeLayerOnMap = function() {
            this.ViewService.mapView.getVolumeClippingMapLayer().visible = !1
        }
        ,
        t.prototype.addCubeAndStartClippingPointCloud = function(t) {
            var e = this
              , n = this.ViewService.mainView.getVolumeClippingLayer();
            return n.resetCube(),
            this.adjustVolumeToPosition(t).then((function() {
                n.addClipBoxToPointCloud(),
                n.visible = !0,
                e.rotateOrbitCamera()
            }
            ))
        }
        ,
        t.prototype.getCubeStartingPosition = function() {
            return this.startingPosition ? this.startingPosition : this.ViewService.mainView.getCamera().position
        }
        ,
        t.prototype.resetStartingPosition = function() {
            this.startingPosition = void 0
        }
        ,
        t.prototype.rotateOrbitCamera = function() {
            this.ViewService.mainView.cameraController instanceof d.OrbitCameraController && (this.ViewService.mainView.cameraController.orientation.azimuth = -Math.PI / 4)
        }
        ,
        t.prototype.adjustVolumeToPosition = function(t) {
            var e = this;
            this.positionAdjustmentInProgress = !0;
            var n = this.ViewService.mainView.getVolumeClippingLayer();
            return m.promiseFinally(this.SiteModelRepository.findWithin(t, h.SiteModelType.FLOOR).then((function(i) {
                var r = i[0];
                r ? e.adjustToFloorAndPosition(r, t) : n.setVolumePositionAndScale(t)
            }
            )), (function() {
                return e.positionAdjustmentInProgress = !1
            }
            ))
        }
        ,
        t.prototype.updateVolumeForFloors = function(t) {
            var e = this;
            if (t && this.ViewService.mainView.isPointCloudModuleLoaded() && this.ViewService.mainView.viewMode === p.SceneViewMode.Map) {
                var n = this.ViewService.mainView.getVolumeClippingLayer();
                if (n.visible) {
                    var i = n.volume.position;
                    this.SiteModelRepository.findWithin(new s.Vector2(i.x,i.y), h.SiteModelType.FLOOR).then((function(n) {
                        if (!e.positionAdjustmentInProgress) {
                            var r = f.intersectionWith(n, t)[0];
                            r && e.adjustToFloorAndPosition(r, i)
                        }
                    }
                    )).catch(l.handleWarning)
                }
            }
        }
        ,
        t.prototype.adjustToFloorAndPosition = function(t, e) {
            var n = this.ViewService.mainView.getVolumeClippingLayer()
              , i = t.zMin
              , r = t.zMax
              , o = Math.abs(r - i)
              , a = r - o / 2
              , c = new s.Vector3(e.x,e.y,a)
              , l = n.volume.getObjectByName(u.ClipVolume.BOX_NAME).scale
              , d = new s.Vector3(l.x,l.y,o);
            n.setVolumePositionAndScale(c, d)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(g.ɵɵinject(v.FloorChangerService),g.ɵɵinject(y.ViewService),g.ɵɵinject(b.SidebarMenuService),g.ɵɵinject(w.ViewMenuService),g.ɵɵinject(S.SiteModelRepository),g.ɵɵinject("PointCloudMenuService"),g.ɵɵinject(x.TrackingService))
        }
        ,
        t.ɵprov = g.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.DownloadPointCloudService = M,
    g.ɵsetClassMetadata(M, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: v.FloorChangerService
        }, {
            type: y.ViewService
        }, {
            type: b.SidebarMenuService
        }, {
            type: w.ViewMenuService
        }, {
            type: S.SiteModelRepository
        }, {
            type: void 0,
            decorators: [{
                type: o.Inject,
                args: ["PointCloudMenuService"]
            }]
        }, {
            type: x.TrackingService
        }]
    }
    ), null),
    i.module("IVWebApp").service("DownloadPointCloudService", r.downgradeInjectable(M))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function(t, e, n) {
        void 0 === t && (t = ""),
        void 0 === e && (e = ""),
        void 0 === n && (n = ""),
        this.className = t,
        this.ligature = e,
        this.path = n
    };
    e.IconInfo = i
}
, function(t, e, n) {
    "use strict";
    function i(t) {
        return "function" == typeof t
    }
    n.d(e, "a", (function() {
        return i
    }
    ))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.AUTO_ACTIVATION = "autoActivation",
        t.BRIGHTNESS = "brightness",
        t.HUE_OFFSET = "hueOffset",
        t.HUE_SCALE = "hueScale",
        t.MAX_DEPTH = "maxDepth",
        t.MAX_DIST = "maxDist",
        t.OPACITY = "opacity",
        t.SHOW_POINT_CLOUD = "showPointCloud",
        t.SHOW_PANOS_IN_PERSPECTIVE = "showPanosInPerspective",
        t.Z_BUFFERING = "zBuffering"
    }(e.PointCloudConfig || (e.PointCloudConfig = {}))
}
, function(t, e, n) {
    "use strict";
    var i = function() {
        function t() {
            var t = this;
            this.resolve = function(e) {
                t._resolve(e)
            }
            ,
            this.reject = function(e) {
                t._reject(e)
            }
            ,
            this._promise = new Promise((function(e, n) {
                t._resolve = e,
                t._reject = n
            }
            ))
        }
        return Object.defineProperty(t.prototype, "promise", {
            get: function() {
                return this._promise
            },
            enumerable: !0,
            configurable: !0
        }),
        t
    }();
    e.Deferred = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t(t) {
            this.gettextCatalog = t
        }
        return t.prototype.getExceptionShortName = function(t) {
            if (t.data && t.data.exception)
                return t.data.exception.split(".").reverse()[0]
        }
        ,
        t.prototype.getExceptionMessage = function(t) {
            if (t.data && t.data.exception)
                return t.data.msg
        }
        ,
        t.prototype.report = function() {
            return this.currentErrorMessage
        }
        ,
        t
    }();
    e.ServerExceptionClassDetector = i
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    ), o = this && this.__spreadArrays || function() {
        for (var t = 0, e = 0, n = arguments.length; e < n; e++)
            t += arguments[e].length;
        var i = Array(t)
          , r = 0;
        for (e = 0; e < n; e++)
            for (var o = arguments[e], a = 0, s = o.length; a < s; a++,
            r++)
                i[r] = o[a];
        return i
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var a = n(137)
      , s = n(4)
      , c = n(67)
      , l = n(52)
      , u = n(258)
      , d = n(1078)
      , p = n(311)
      , h = n(539)
      , f = n(386)
      , m = n(312)
      , g = n(153)
      , v = n(387)
      , y = function(t) {
        function e(e, n, i, r) {
            void 0 === r && (r = !1);
            var o = t.call(this) || this;
            return o.UoMService = n,
            o.onFinishCreation = i,
            o.gridEnabled = r,
            o.points = [],
            o.edgeLabels = [],
            o.completionMechanismNeeded = !0,
            o.lines = [],
            o.dragInvalid = !1,
            e instanceof s.Vector3 ? o.addPoint(e) : (o.completionMechanismNeeded = o.completionMechanismNeeded && e.length < 3,
            e.forEach((function(t) {
                return o.addPoint(t)
            }
            )),
            o.removeMeshes(o.filling),
            o.removeTextSprite(),
            o.isPolygonValid(e) && (o.lines.push(o.addLine(o.points[o.points.length - 1].position, o.points[0].position)),
            o.createAreaFromPoints(),
            o.finishCreation()),
            o.addEdgeLabels(),
            o.freshlyCreated = !0),
            o
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "numberOfPoints", {
            get: function() {
                return this.points.length
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "firstPoint", {
            get: function() {
                return this.points[0]
            },
            enumerable: !0,
            configurable: !0
        }),
        e.canCompletePolygon = function(t) {
            return this.checkLineIntersection(t, 0)
        }
        ,
        e.checkLineIntersection = function(t, e) {
            for (var n = u.rotateToHorizontalPlane(t).points, i = 0 === e ? n.length - 1 : e - 1, r = n[i], o = n[e], a = 0; a < n.length; a++) {
                var s = 0 === a ? n.length - 1 : a - 1;
                if (s !== e && s !== i && a !== e && a !== i && u.doLinesIntersect(r, o, n[s], n[a]))
                    return !1
            }
            return !0
        }
        ,
        e.prototype.markNotFresh = function() {
            t.prototype.markNotFresh.call(this),
            this.removeEdgeLabels()
        }
        ,
        e.prototype.setMouseEventCallbacks = function(e, n, i, r, o, a) {
            t.prototype.setMouseEventCallbacks.call(this, e, n, i, r, o, a),
            this.setUpCompletionPointListener()
        }
        ,
        e.prototype.getPointsPositions = function() {
            return this.points.map((function(t) {
                return t.position.clone()
            }
            ))
        }
        ,
        e.prototype.dispose = function() {
            this.lines.forEach((function(t) {
                return t.geometry.dispose()
            }
            )),
            this.filling && this.filling.geometry.dispose(),
            this.textSprite && this.textSprite.removeSpriteObject(),
            this.edgeLabels.forEach((function(t) {
                return t.removeSpriteObject()
            }
            ))
        }
        ,
        e.prototype.updateOrientationForViewport = function(t) {
            var n = t.name === l.SplitViewportName.TOP_VIEW ? void 0 : t.camera.position;
            this.points.forEach((function(t) {
                return t.lookAt(n || new s.Vector3(t.position.x,t.position.y,t.position.z + e.ORIENTATION_HEIGHT_DIFFERENCE))
            }
            ))
        }
        ,
        e.prototype.updateMeshScaleForViewport = function(e) {
            c.setMeshScreenSize(e, this.points, a.MeasurementObject3D.POINT_PIXEL_SIZE, !1, e.name !== l.SplitViewportName.TOP_VIEW),
            t.prototype.updateMeshScaleForViewport.call(this, e);
            var n = e.name === l.SplitViewportName.DEFAULT_VIEW;
            this.edgeLabels.forEach((function(t) {
                return t.spriteObject.visible = n
            }
            )),
            n && this.edgeLabels.forEach((function(t) {
                return t.updateSpriteObject(e)
            }
            ))
        }
        ,
        e.prototype.addPoint = function(t, e) {
            var n = this.calculateCirclePosition(t);
            this.isNewPointValid(n) && (this.points.length > 0 && this.lines.push(this.addLine(this.points[this.points.length - 1].position, n)),
            this.removeMeshes(this.helpLine, this.projectionLine, this.filling),
            this.removeTextSprite(),
            this.points.push(this.addCircle(n)),
            this.canCreatePlane() && !this.plane && (this.createPlane(),
            this.gridEnabled && this.showGrid()),
            this.isPolygon() && this.createAreaFromPoints(),
            this.setUpCompletionMechanism(),
            e && (this.pov = e))
        }
        ,
        e.prototype.putPointer = function(t) {
            if (this.cursorPosition = this.focusedPoint ? this.focusedPoint.position : t,
            0 !== this.points.length) {
                this.removeMeshes(this.helpLine, this.projectionLine, this.filling),
                this.removeTextSprite(),
                document.body.style.cursor = document.body.style.cursor === v.MouseCursorStyle.CROSSHAIR ? v.MouseCursorStyle.CROSSHAIR : v.MouseCursorStyle.AUTO;
                var e = this.calculateCirclePosition(t);
                this.addProjectionLine(e, t),
                this.points.length > 1 && (this.focusedPoint || this.isNewPointValid(e) ? (this.addFilling(e),
                this.addTextSprite(e)) : document.body.style.cursor = v.MouseCursorStyle.NOT_ALLOWED);
                var n = this.points[this.points.length - 1];
                this.helpLine = a.MeasurementObject3D.createLine(n.position, e),
                this.add(this.helpLine),
                this.addEdgeLabels(void 0, e)
            }
        }
        ,
        e.prototype.dragObjectStart = function(e) {
            t.prototype.dragObjectStart.call(this, e),
            this.dragInvalid = !1
        }
        ,
        e.prototype.dragObject = function(t, n) {
            var i = this.calculateCirclePosition(n)
              , r = -1
              , o = this.points.map((function(e, n) {
                return e === t ? (r = n,
                i.clone()) : e.position.clone()
            }
            ));
            if (-1 === r)
                throw new Error("Drag is not possible - drag object doesn't correspond to any point of the measurement");
            return this.dragInvalid = !e.checkLineIntersection(o, (r + 1) % o.length) || !e.checkLineIntersection(o, r),
            !this.dragInvalid && (t.position.copy(i),
            this.recreateAreaWithLinesFromPoints(),
            this.removeMeshes(this.projectionLine),
            this.addProjectionLine(i, n),
            this.addEdgeLabels(),
            !0)
        }
        ,
        e.prototype.dragObjectEnd = function(e) {
            this.dragInvalid && this.dragObject(e, this.draggedPoint.initialPosition),
            this.removeMeshes(this.projectionLine),
            t.prototype.dragObjectEnd.call(this, e)
        }
        ,
        e.prototype.undoPoint = function() {
            return !this.isPolygon() || (this.removeMeshes(this.points.pop(), this.lines.pop()),
            this.canCreatePlane() || (this.plane = void 0,
            this.hideGrid()),
            this.putPointer(this.cursorPosition),
            !1)
        }
        ,
        e.prototype.getCenterLocation = function() {
            var t = this.getPointsPositions()
              , e = u.rotateToHorizontalPlane(t)
              , n = this.points[0].position.clone().applyQuaternion(e.quaternion).z
              , i = u.getPolygonCentroid(e.points);
            return new s.Vector3(i.x,i.y,n).applyQuaternion(e.quaternion.inverse())
        }
        ,
        e.prototype.setUpMouseListeners = function(e) {
            t.prototype.setUpMouseListeners.call(this, e)
        }
        ,
        e.prototype.setHovered = function(n) {
            this.children.forEach((function(t) {
                n && t.material === e.AREA_MATERIAL ? t.material = e.AREA_HIGHLIGHT_MATERIAL : n || t.material !== e.AREA_HIGHLIGHT_MATERIAL || (t.material = e.AREA_MATERIAL)
            }
            )),
            n ? this.addEdgeLabels() : this.removeEdgeLabels(),
            t.prototype.setHovered.call(this, n),
            this.edgeLabels.forEach((function(t) {
                return t.spriteObject.renderOrder = n ? p.RenderOrder.ABOVE_HIGHLIGHT : p.RenderOrder.BETWEEN
            }
            ))
        }
        ,
        e.prototype.recreateAreaWithLinesFromPoints = function() {
            this.removeMeshes.apply(this, o(this.lines, [this.filling])),
            this.removeTextSprite(),
            this.createLinesBetweenPoints(),
            this.createAreaFromPoints()
        }
        ,
        e.prototype.getHoverableObjects = function() {
            return this.lines
        }
        ,
        e.prototype.getPoints = function() {
            return this.points
        }
        ,
        e.prototype.getMeasurementText = function() {
            return this.UoMService.convert(this.getValue(), g.MeasurementDomain.AREA)
        }
        ,
        e.prototype.getValue = function() {
            var t = u.rotateToHorizontalPlane(this.getPointsPositions()).points;
            return Math.abs(s.ShapeUtils.area(t))
        }
        ,
        e.prototype.calculateCirclePosition = function(t) {
            var e = t.clone();
            return this.plane && this.plane.projectPoint(t, e),
            e
        }
        ,
        e.prototype.finishCreation = function() {
            if (e.canCompletePolygon(this.getPointsPositions()) && this.onFinishCreation) {
                var t = this.points[0].position;
                return this.removeMeshes(this.helpLine, this.projectionLine, this.points[0]),
                this.lines.push(this.addLine(this.points[this.points.length - 1].position, this.points[0].position)),
                this.points[0] = a.MeasurementObject3D.createCircle(t),
                this.add(this.points[0]),
                this.hideGrid(),
                this.onFinishCreation(this),
                !0
            }
            return !1
        }
        ,
        e.prototype.addLine = function(t, e) {
            var n = a.MeasurementObject3D.createLine(t, e);
            return this.add(n),
            n
        }
        ,
        e.prototype.addCircle = function(t) {
            var e = a.MeasurementObject3D.createCircle(t);
            return this.add(e),
            e
        }
        ,
        e.prototype.addProjectionLine = function(t, e) {
            t.equals(e) || (this.projectionLine = a.MeasurementObject3D.createDottedLine(t, e),
            this.add(this.projectionLine))
        }
        ,
        e.prototype.addTextSprite = function() {
            for (var t = [], n = 0; n < arguments.length; n++)
                t[n] = arguments[n];
            var i = this.getPointsPositions();
            if (t && i.push.apply(i, t.map((function(t) {
                return t.clone()
            }
            ))),
            e.canCompletePolygon(i)) {
                var r = u.rotateToHorizontalPlane(i)
                  , o = r.points
                  , a = (new s.Vector3).copy(this.points[0].position).applyQuaternion(r.quaternion).z
                  , c = u.getPolygonCentroid(o)
                  , l = new s.Vector3(c.x,c.y,a).applyQuaternion(r.quaternion.inverse())
                  , d = Math.abs(s.ShapeUtils.area(o));
                this.textSprite = this.createTextSprite(l, this.UoMService.convert(d, g.MeasurementDomain.AREA), this.getIcon()),
                this.updateTextSpriteMaterial(),
                this.add(this.textSprite.spriteObject)
            }
        }
        ,
        e.prototype.addFilling = function() {
            for (var t = [], n = 0; n < arguments.length; n++)
                t[n] = arguments[n];
            var i = this.getPointsPositions();
            if (t && i.push.apply(i, t.map((function(t) {
                return t.clone()
            }
            ))),
            e.canCompletePolygon(i)) {
                var r = i[0].clone()
                  , o = u.rotateToHorizontalPlane(i.map((function(t) {
                    return t.sub(r)
                }
                )));
                this.filling && this.filling.geometry && this.filling.geometry.dispose();
                var a = new s.ShapeGeometry(new s.Shape(o.points));
                this.filling = new s.Mesh(a,e.AREA_MATERIAL),
                this.filling.onBeforeRender = m.createOnBeforeRenderFunc(),
                this.filling.position.add(r),
                this.filling.quaternion.copy(o.quaternion.inverse()),
                this.filling.renderOrder = e.FILLING_RENDER_ORDER,
                this.filling.userData.is2D = !0,
                this.add(this.filling)
            }
        }
        ,
        e.prototype.isPoint = function(t) {
            return this.points.some((function(e) {
                return e === t
            }
            ))
        }
        ,
        e.prototype.addEdgeLabels = function(t) {
            void 0 === t && (t = this.points.length);
            for (var e = [], n = 1; n < arguments.length; n++)
                e[n - 1] = arguments[n];
            if (!this.freshlyCreated) {
                this.removeEdgeLabels();
                var i = this.getPointsPositions();
                i.push.apply(i, e);
                for (var r = 0; r < t; r++) {
                    var o = i[r]
                      , a = i[(r + 1 + i.length) % i.length]
                      , s = u.getMidpoint(o, a)
                      , c = this.UoMService.convert(o.distanceTo(a), g.MeasurementDomain.DISTANCE, 2, void 0, .1, !0)
                      , l = this.createTextSprite(s, c, void 0, f.GUIDE_LINE_COLOR_HEX, f.GUIDE_LINE_COLOR_HEX, this.deltaElementsFontColor, this.noIconLabelPadding, p.RenderOrder.BETWEEN);
                    this.edgeLabels.push(l),
                    this.add(l.spriteObject)
                }
            }
        }
        ,
        e.prototype.removeEdgeLabels = function() {
            this.freshlyCreated || (this.removeLabels.apply(this, this.edgeLabels),
            this.removeMeshes.apply(this, this.edgeLabels.map((function(t) {
                return t.spriteObject
            }
            ))),
            this.edgeLabels.length = 0)
        }
        ,
        e.prototype.createAreaFromPoints = function() {
            this.addFilling(),
            this.addTextSprite()
        }
        ,
        e.prototype.createLinesBetweenPoints = function() {
            this.lines = [];
            for (var t = 0; t < this.points.length; ++t)
                this.lines.push(this.addLine(this.points[t].position, this.points[(t + 1) % this.points.length].position))
        }
        ,
        e.prototype.setUpCompletionPointListener = function() {
            var t = this;
            this.completionPointMouseInListener = function() {
                return t.onMouseOverStartPoint(t.points[0])
            }
            ,
            this.completionPointMouseOutListener = function() {
                return t.onMouseOutStartPoint(t.points[0])
            }
        }
        ,
        e.prototype.isPolygon = function() {
            return this.points.length > 2
        }
        ,
        e.prototype.isNewPointValid = function(t) {
            return this.points.length < 2 || this.isPolygonValid(o(this.getPointsPositions(), [t]))
        }
        ,
        e.prototype.isPolygonValid = function(t) {
            return !(t.length < 3) && e.checkLineIntersection(t, t.length - 1)
        }
        ,
        e.prototype.setUpCompletionMechanism = function() {
            var t = this;
            if (this.completionMechanismNeeded && 3 === this.points.length) {
                var e = this.points[0].position;
                this.removeMeshes(this.points[0]),
                this.points[0] = a.MeasurementObject3D.createCompoundCircle(e),
                this.add(this.points[0]);
                var n = this.points[0].children[0];
                n.renderOrder = p.RenderOrder.ABOVE_DEFAULT,
                n.onClick = function() {
                    return t.finishCreation()
                }
                ,
                n.onMouseOver = this.completionPointMouseInListener,
                n.onMouseOut = this.completionPointMouseOutListener
            }
        }
        ,
        e.prototype.onMouseOverStartPoint = function(t) {
            this.focusedPoint = t,
            this.isPolygon() && e.canCompletePolygon(this.getPointsPositions()) && (document.body.style.cursor = v.MouseCursorStyle.CROSSHAIR,
            t.material = e.CIRCLE_HIGHLIGHT_MATERIAL,
            t.renderOrder = p.RenderOrder.ON_TOP,
            this.onPointHover(!0, t))
        }
        ,
        e.prototype.onMouseOutStartPoint = function(t) {
            document.body.style.cursor = v.MouseCursorStyle.DEFAULT,
            t.material = e.CIRCLE_MATERIAL,
            t.renderOrder = p.RenderOrder.DEFAULT,
            this.focusedPoint = void 0,
            this.onPointHover(!1)
        }
        ,
        e.prototype.showGrid = function() {
            this.grid || (this.grid = new d.MeasurementGridObject3D(this.plane.normal,this.points.map((function(t) {
                return t.position
            }
            ))),
            this.add(this.grid))
        }
        ,
        e.prototype.hideGrid = function() {
            this.grid && (this.remove(this.grid),
            this.grid = void 0)
        }
        ,
        e.Z_NORMAL = new s.Vector3(0,0,1),
        e.AREA_MATERIAL = new h.MeasurementMaterial({
            color: f.MEASUREMENT_MATERIAL_COLOR,
            obscuredColor: f.OBSCURED_MEASUREMENT_MATERIAL_COLOR,
            opacity: .3,
            obscuredOpacity: .3,
            occlusionDistance: a.MeasurementObject3D.OCCLUSION_DISTANCE,
            clipDistance: a.MeasurementObject3D.CLIP_DISTANCE
        }),
        e.AREA_HIGHLIGHT_MATERIAL = new s.MeshBasicMaterial({
            color: f.MEASUREMENT_HIGHLIGHT_MATERIAL_COLOR,
            opacity: .3,
            transparent: !0,
            side: s.DoubleSide,
            wireframe: !1,
            depthTest: !1,
            depthWrite: !1
        }),
        e.FILLING_RENDER_ORDER = 1.9,
        e
    }(a.MeasurementObject3D);
    e.AreaMeasurementObject3D = y
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t[t.USER = 0] = "USER",
        t[t.DATASETS = 5] = "DATASETS",
        t[t.VIEW = 10] = "VIEW",
        t[t.POI_TYPES = 15] = "POI_TYPES",
        t[t.EDITOR_MODES = 20] = "EDITOR_MODES",
        t[t.EDITOR_MODES_EXPLORE = 0] = "EDITOR_MODES_EXPLORE",
        t[t.EDITOR_MODES_GEO_REG = 5] = "EDITOR_MODES_GEO_REG",
        t[t.EDITOR_MODES_ALIGNMENT = 10] = "EDITOR_MODES_ALIGNMENT",
        t[t.EDITOR_MODES_SITE_MODEL = 15] = "EDITOR_MODES_SITE_MODEL",
        t[t.EDITOR_MODES_NAV_GRAPH = 20] = "EDITOR_MODES_NAV_GRAPH",
        t[t.EDITOR_MODES_VECTOR_MAP = 25] = "EDITOR_MODES_VECTOR_MAP",
        t[t.EDITOR_MODES_MEASUREMENTS = 30] = "EDITOR_MODES_MEASUREMENTS",
        t[t.EDITOR_MODES_DOWNLOAD_POINT_CLOUD = 32] = "EDITOR_MODES_DOWNLOAD_POINT_CLOUD",
        t[t.MEASUREMENTS = 21] = "MEASUREMENTS",
        t[t.SHARE = 25] = "SHARE",
        t[t.CLOUD_PROCESSING = 26] = "CLOUD_PROCESSING",
        t[t.CLOUD_PROCESSING_UPLOADED_DATA = 0] = "CLOUD_PROCESSING_UPLOADED_DATA",
        t[t.CLOUD_PROCESSING_PROCESSING_TASKS = 1] = "CLOUD_PROCESSING_PROCESSING_TASKS",
        t[t.CLOUD_PROCESSING_PROCESSED_DATA = 2] = "CLOUD_PROCESSING_PROCESSED_DATA",
        t[t.SETTINGS = 30] = "SETTINGS",
        t[t.SETTINGS_CONFIG = 0] = "SETTINGS_CONFIG",
        t[t.SETTINGS_INSTANCE_KEY = 5] = "SETTINGS_INSTANCE_KEY",
        t[t.SETTINGS_AUTH = 7] = "SETTINGS_AUTH",
        t[t.SETTINGS_USERS = 10] = "SETTINGS_USERS",
        t[t.SETTINGS_GROUPS = 15] = "SETTINGS_GROUPS",
        t[t.SETTINGS_AUDIT = 17] = "SETTINGS_AUDIT",
        t[t.SETTINGS_DATASET_MANAGEMENT = 20] = "SETTINGS_DATASET_MANAGEMENT",
        t[t.SETTINGS_HIDDEN_IMAGES = 25] = "SETTINGS_HIDDEN_IMAGES",
        t[t.SETTINGS_THEME_PANEL = 28] = "SETTINGS_THEME_PANEL",
        t[t.DEVELOPER = 40] = "DEVELOPER"
    }(e.SidebarMenuItemsOrder || (e.SidebarMenuItemsOrder = {}))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(1416)
      , r = n(108)
      , o = function() {
        function t() {
            this.items = [],
            this.isFullscreen = !1,
            this.compileTemplate = !0,
            this.isVisible = function() {
                return !0
            }
            ,
            this.isPreviewIconVisible = function() {
                return !0
            }
        }
        return t.prototype.setKey = function(t) {
            return this.key = t,
            this
        }
        ,
        t.prototype.setTitle = function(t) {
            return this.title = t,
            this
        }
        ,
        t.prototype.setIcon = function(t) {
            return this.icon = t,
            this
        }
        ,
        t.prototype.setIsVisible = function(t) {
            return this.isVisible = t,
            this
        }
        ,
        t.prototype.setTemplate = function(t) {
            return this.template = t,
            this
        }
        ,
        t.prototype.setClassCallback = function(t) {
            return this.getClass = t,
            this
        }
        ,
        t.prototype.setOrder = function(t) {
            return this.order = t,
            this
        }
        ,
        t.prototype.setOnExit = function(t) {
            return this.onExit = t,
            this
        }
        ,
        t.prototype.setOnClick = function(t) {
            return this.onClick = t,
            this
        }
        ,
        t.prototype.setIsPreviewIconVisible = function(t) {
            return this.isPreviewIconVisible = t,
            this
        }
        ,
        t.prototype.setItems = function(t) {
            return this.items = t,
            this
        }
        ,
        t.prototype.setIsFullscreen = function(t) {
            return this.isFullscreen = t,
            this
        }
        ,
        t.prototype.setCompileTemplate = function(t) {
            return this.compileTemplate = t,
            this
        }
        ,
        t.prototype.build = function() {
            if (void 0 === this.title || void 0 === this.icon || void 0 === this.key)
                throw new r.IVFrontendException("Missing required field (title, icon, or key)");
            if (void 0 === this.template && void 0 === this.onClick && 0 === this.items.length)
                throw new r.IVFrontendException("Missing required content (template, on click action, or child items)");
            return new i.SidebarMenuItem(this.key,this.title,this.icon,this.isVisible,this.template,this.getClass,this.order,this.onExit,this.onClick,this.isPreviewIconVisible,this.items,this.isFullscreen,this.compileTemplate)
        }
        ,
        t
    }();
    e.SidebarMenuItemBuilder = o
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return a
    }
    ));
    var i = n(12)
      , r = n(337)
      , o = n(226);
    function a(t, e) {
        return e ? Object(o.a)(t, e) : new i.a(Object(r.a)(t))
    }
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return o
    }
    ));
    var i = n(1)
      , r = n(278)
      , o = function(t) {
        function e(n, i) {
            void 0 === i && (i = r.a.now);
            var o = t.call(this, n, (function() {
                return e.delegate && e.delegate !== o ? e.delegate.now() : i()
            }
            )) || this;
            return o.actions = [],
            o.active = !1,
            o.scheduled = void 0,
            o
        }
        return i.c(e, t),
        e.prototype.schedule = function(n, i, r) {
            return void 0 === i && (i = 0),
            e.delegate && e.delegate !== this ? e.delegate.schedule(n, i, r) : t.prototype.schedule.call(this, n, i, r)
        }
        ,
        e.prototype.flush = function(t) {
            var e = this.actions;
            if (this.active)
                e.push(t);
            else {
                var n;
                this.active = !0;
                do {
                    if (n = t.execute(t.state, t.delay))
                        break
                } while (t = e.shift());
                if (this.active = !1,
                n) {
                    for (; t = e.shift(); )
                        t.unsubscribe();
                    throw n
                }
            }
        }
        ,
        e
    }(r.a)
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return r
    }
    ));
    var i = n(1)
      , r = function(t) {
        function e(e, n) {
            var i = t.call(this, e, n) || this;
            return i.scheduler = e,
            i.work = n,
            i.pending = !1,
            i
        }
        return i.c(e, t),
        e.prototype.schedule = function(t, e) {
            if (void 0 === e && (e = 0),
            this.closed)
                return this;
            this.state = t;
            var n = this.id
              , i = this.scheduler;
            return null != n && (this.id = this.recycleAsyncId(i, n, e)),
            this.pending = !0,
            this.delay = e,
            this.id = this.id || this.requestAsyncId(i, this.id, e),
            this
        }
        ,
        e.prototype.requestAsyncId = function(t, e, n) {
            return void 0 === n && (n = 0),
            setInterval(t.flush.bind(t, this), n)
        }
        ,
        e.prototype.recycleAsyncId = function(t, e, n) {
            if (void 0 === n && (n = 0),
            null !== n && this.delay === n && !1 === this.pending)
                return e;
            clearInterval(e)
        }
        ,
        e.prototype.execute = function(t, e) {
            if (this.closed)
                return new Error("executing a cancelled action");
            this.pending = !1;
            var n = this._execute(t, e);
            if (n)
                return n;
            !1 === this.pending && null != this.id && (this.id = this.recycleAsyncId(this.scheduler, this.id, null))
        }
        ,
        e.prototype._execute = function(t, e) {
            var n = !1
              , i = void 0;
            try {
                this.work(t)
            } catch (t) {
                n = !0,
                i = !!t && t || new Error(t)
            }
            if (n)
                return this.unsubscribe(),
                i
        }
        ,
        e.prototype._unsubscribe = function() {
            var t = this.id
              , e = this.scheduler
              , n = e.actions
              , i = n.indexOf(this);
            this.work = null,
            this.state = null,
            this.pending = !1,
            this.scheduler = null,
            -1 !== i && n.splice(i, 1),
            null != t && (this.id = this.recycleAsyncId(e, t, null)),
            this.delay = null
        }
        ,
        e
    }(function(t) {
        function e(e, n) {
            return t.call(this) || this
        }
        return i.c(e, t),
        e.prototype.schedule = function(t, e) {
            return void 0 === e && (e = 0),
            this
        }
        ,
        e
    }(n(33).a))
}
, function(t, e, n) {
    "use strict";
    var i;
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    e.getBaseUrl = function(t, e) {
        if (void 0 === e && (e = !1),
        !e && i)
            return i;
        t = t || window.location.href;
        var n = document.querySelector('script[src$="IndoorViewerAPI.js"]')
          , r = document.querySelector('script[src$="scripts/IndoorViewer.all.min.js"]')
          , o = n || r
          , a = n ? "IndoorViewerAPI.js" : "scripts/IndoorViewer.all.min.js"
          , s = new URL(t);
        if (o && a) {
            var c = o.getAttribute("src")
              , l = (s = new URL(c,s)).pathname;
            s.pathname = l.substring(0, l.indexOf(a))
        }
        return i = (i = (i = s.origin + s.pathname).replace("context.html", "")).endsWith("/") ? i : i + "/"
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(108)
      , r = function() {
        function t(t, e, n, i) {
            this.name = t,
            this.symbol = e,
            this.base = n,
            this.factor = i
        }
        return t.prototype.toBase = function(t) {
            return t * this.factor
        }
        ,
        t.prototype.fromBase = function(t) {
            return t / this.factor
        }
        ,
        t
    }();
    e.UnitOfMeasurement = r;
    var o = function t(e) {
        this.gettext = e,
        t.METRIC = this.gettext("metric", void 0, "measurement system"),
        t.IMPERIAL = this.gettext("imperial", void 0, "measurement system")
    };
    e.UoMSystem = o;
    var a = function() {
        function t() {}
        return t.DISTANCE = "DISTANCE",
        t.AREA = "AREA",
        t.VOLUME = "VOLUME",
        t.DATA = "DATA",
        t
    }();
    e.MeasurementDomain = a;
    var s = function() {
        function t() {}
        return t.init = function() {
            var e, n, i, a, s, c, l, u, d, p, h, f = new r(t.METER[0],t.METER[1],void 0,1), m = new r(t.SQUAREMETER[0],t.SQUAREMETER[1],void 0,1), g = new r(t.CUBICMETER[0],t.CUBICMETER[1],void 0,1), v = new r(t.BYTE[0],t.BYTE[1],void 0,1);
            t.DISTANCE = ((e = {})[o.METRIC] = ((n = {})[t.MILLIMETER[0]] = new r(t.MILLIMETER[0],t.MILLIMETER[1],f,.001),
            n[t.CENTIMETER[0]] = new r(t.CENTIMETER[0],t.CENTIMETER[1],f,.01),
            n[t.METER[0]] = f,
            n[t.KILOMETER[0]] = new r(t.KILOMETER[0],t.KILOMETER[1],f,1e3),
            n),
            e[o.IMPERIAL] = ((i = {})[t.INCH[0]] = new r(t.INCH[0],t.INCH[1],f,.0254),
            i[t.FOOT[0]] = new r(t.FOOT[0],t.FOOT[1],f,.3048),
            i[t.MILE[0]] = new r(t.MILE[0],t.MILE[1],f,1609.344),
            i),
            e),
            t.AREA = ((a = {})[o.METRIC] = ((s = {})[t.SQUAREMETER[0]] = m,
            s),
            a[o.IMPERIAL] = ((c = {})[t.SQUAREFOOT[0]] = new r(t.SQUAREFOOT[0],t.SQUAREFOOT[1],m,.092903),
            c),
            a),
            t.VOLUME = ((l = {})[o.METRIC] = ((u = {})[t.CUBICMETER[0]] = g,
            u),
            l[o.IMPERIAL] = ((d = {})[t.CUBICFOOT[0]] = new r(t.CUBICFOOT[0],t.CUBICFOOT[1],g,.0283168),
            d),
            l);
            var y = ((p = {})[t.BYTE[0]] = v,
            p[t.KILOBYTE[0]] = new r(t.KILOBYTE[0],t.KILOBYTE[1],v,1e3),
            p[t.MEGABYTE[0]] = new r(t.MEGABYTE[0],t.MEGABYTE[1],v,1e6),
            p[t.GIGABYTE[0]] = new r(t.GIGABYTE[0],t.GIGABYTE[1],v,1e9),
            p[t.TERABYTE[0]] = new r(t.TERABYTE[0],t.TERABYTE[1],v,1e12),
            p[t.PETABYTE[0]] = new r(t.PETABYTE[0],t.PETABYTE[1],v,1e15),
            p);
            t.DATA = ((h = {})[o.METRIC] = y,
            h[o.IMPERIAL] = y,
            h)
        }
        ,
        t.getUnitsOfMeasurementByDomain = function(e) {
            switch (e.toUpperCase()) {
            case a.DISTANCE:
                return t.DISTANCE;
            case a.AREA:
                return t.AREA;
            case a.VOLUME:
                return t.VOLUME;
            case a.DATA:
                return t.DATA;
            default:
                throw new i.IVFrontendException(e + " measurement domain is not supported.")
            }
        }
        ,
        t.getUnitsOfMeasurementByDomainAndSystem = function(e, n) {
            var r = t.getUnitsOfMeasurementByDomain(e);
            if (r.hasOwnProperty(n.toLowerCase()))
                return r[n.toLowerCase()];
            throw new i.IVFrontendException(n + " measurement system is not supported.")
        }
        ,
        t.getDefaultUnitByDomainAndSystem = function(e, n) {
            switch (e.toUpperCase()) {
            case a.DISTANCE:
                switch (n.toLowerCase()) {
                case o.METRIC:
                    return t.DISTANCE[o.METRIC][t.METER[0]];
                case o.IMPERIAL:
                    return t.DISTANCE[o.IMPERIAL][t.FOOT[0]];
                default:
                    throw new i.IVFrontendException(n + " measurement system is not supported.")
                }
            case a.AREA:
                switch (n.toLowerCase()) {
                case o.METRIC:
                    return t.AREA[o.METRIC][t.SQUAREMETER[0]];
                case o.IMPERIAL:
                    return t.AREA[o.IMPERIAL][t.SQUAREFOOT[0]];
                default:
                    throw new i.IVFrontendException(n + " measurement system is not supported.")
                }
            case a.VOLUME:
                switch (n.toLowerCase()) {
                case o.METRIC:
                    return t.VOLUME[o.METRIC][t.CUBICMETER[0]];
                case o.IMPERIAL:
                    return t.VOLUME[o.IMPERIAL][t.CUBICFOOT[0]];
                default:
                    throw new i.IVFrontendException(n + " measurement system is not supported.")
                }
            case a.DATA:
                switch (n.toLowerCase()) {
                case o.METRIC:
                    return t.DATA[o.METRIC][t.BYTE[0]];
                case o.IMPERIAL:
                    return t.DATA[o.IMPERIAL][t.BYTE[0]];
                default:
                    throw new i.IVFrontendException(n + " measurement system is not supported.")
                }
            default:
                throw new i.IVFrontendException(e + " measurement domain is not supported.")
            }
        }
        ,
        t.MILLIMETER = ["Millimeter", "mm"],
        t.CENTIMETER = ["Centimeter", "cm"],
        t.METER = ["Meter", "m"],
        t.KILOMETER = ["Kilometer", "km"],
        t.INCH = ["Inch", "in"],
        t.FOOT = ["Foot", "ft"],
        t.MILE = ["Mile", "mi"],
        t.SQUAREMETER = ["SquareMeter", "m²"],
        t.SQUAREFOOT = ["SquareFoot", "ft²"],
        t.CUBICMETER = ["CubicMeter", "m³"],
        t.CUBICFOOT = ["CubicFoot", "ft³"],
        t.BYTE = ["Byte", "B"],
        t.KILOBYTE = ["Kilobyte", "kB"],
        t.MEGABYTE = ["Megabyte", "MB"],
        t.GIGABYTE = ["Gigabyte", "GB"],
        t.TERABYTE = ["Terabyte", "TB"],
        t.PETABYTE = ["Petabyte", "PB"],
        t
    }();
    e.UnitsOfMeasurement = s
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(14)
      , o = n(16)
      , a = n(7)
      , s = (n(24),
    n(8))
      , c = (n(31),
    n(6))
      , l = n(0)
      , u = (n(17),
    n(0))
      , d = n(14)
      , p = n(24)
      , h = n(31)
      , f = n(17)
      , m = function() {
        function t(t, e, n, i) {
            var r = this;
            this.GeoTransformationService = t,
            this.ModeService = e,
            this.DatasetRepository = n,
            this.ViewService = i,
            this.cachedStates = {},
            this.mapDataPresent = {},
            this.transparent = !1,
            this.stateDirty = !1,
            this.selectedDatasets = {},
            this.selectedDatasetsChanged = new o.Signal,
            this.transparencySwitched = new o.Signal,
            this.primaryDatasetSwitched = new o.Signal,
            this.baseLayerSwitched = new o.Signal,
            this.zoomedToDatasets = new o.Signal,
            e.modeChanged.connect((function() {
                return r.initSelection()
            }
            ))
        }
        return t.prototype.select = function(t) {
            this._select(t),
            this.selectedDatasetsChanged.emit(),
            this.updatePrimaryFromSelected()
        }
        ,
        t.prototype.deselect = function(t) {
            this._deselect(t),
            this.selectedDatasetsChanged.emit(),
            this.updatePrimaryFromSelected()
        }
        ,
        t.prototype.selectAll = function(t) {
            for (var e = 0, n = t; e < n.length; e++) {
                var i = n[e];
                this._select(i)
            }
            this.selectedDatasetsChanged.emit(),
            this.updatePrimaryFromSelected()
        }
        ,
        t.prototype.deselectAll = function(t) {
            var e = this;
            if (t)
                for (var n = 0, i = t; n < i.length; n++) {
                    var r = i[n];
                    this._deselect(r)
                }
            else
                a.forEach(this.selectedDatasets, (function(t) {
                    return e._deselect(t)
                }
                ));
            this.selectedDatasetsChanged.emit(),
            this.updatePrimaryFromSelected()
        }
        ,
        t.prototype.toggleSelection = function(t) {
            this.selectedDatasets[t.id] ? this.deselect(t) : this.select(t)
        }
        ,
        t.prototype.isDatasetSelected = function(t) {
            return !!this.selectedDatasets[t.id]
        }
        ,
        t.prototype.areAllDatasetsSelected = function(t) {
            var e = this;
            return a.every(t, (function(t) {
                return e.isDatasetSelected(t)
            }
            ))
        }
        ,
        t.prototype.areNoDatasetsSelected = function(t) {
            var e = this;
            return a.every(t, (function(t) {
                return !e.isDatasetSelected(t)
            }
            ))
        }
        ,
        t.prototype.zoomToDatasets = function(t, e) {
            this.zoomedToDatasets.emit(t, e)
        }
        ,
        t.prototype.setZoomToAllSelected = function(t) {
            var e = a.values(this.selectedDatasets);
            this.zoomToDatasets(e, t)
        }
        ,
        t.prototype.setAsPrimary = function(t) {
            this.primary = t,
            this.primaryDatasetSwitched.emit()
        }
        ,
        t.prototype.toggleTransparency = function() {
            this.transparent = !this.transparent,
            this.transparencySwitched.emit()
        }
        ,
        t.prototype.toggleBaseLayer = function() {
            this.baseLayerSwitched.emit()
        }
        ,
        t.prototype.checkDatasetAndSelection = function(t) {
            var e = this;
            this.GeoTransformationService.checkAndFixOffset(t),
            a.forEach(this.selectedDatasets, (function(t) {
                t.location.length() > r.GeoTransformationService.RELOCATE_LOCAL_SYSTEM_THRESHOLD && (e.deselect(t),
                e.selectedDatasetsChanged.emit())
            }
            ))
        }
        ,
        t.prototype.isNonWritableDatasetSelected = function() {
            return a.some(this.selectedDatasets, (function(t) {
                return !t.canWrite
            }
            ))
        }
        ,
        t.prototype.anythingSelected = function() {
            return a.size(this.selectedDatasets) > 0
        }
        ,
        t.prototype.initSelection = function() {
            var t = this;
            this.currentModeUsesAlignmentService() && this.DatasetRepository.findAll().then((function(e) {
                for (var n = !1, i = 0, r = e; i < r.length; i++) {
                    var o = r[i];
                    o.pointCloudVisible ? (t.select(o),
                    n = !0) : t.deselect(o)
                }
                var a = t.ViewService.mainView.getImage();
                !n && a && t.select(a.dataset),
                t.setZoomToAllSelected(!0)
            }
            )).catch(s.handleWarning)
        }
        ,
        t.prototype._select = function(t) {
            this.checkDatasetAndSelection(t),
            t.pointCloudVisible = !0,
            this.selectedDatasets[t.id] = t
        }
        ,
        t.prototype._deselect = function(t) {
            this.selectedDatasets[t.id] && (delete this.selectedDatasets[t.id],
            t.locked = !0,
            t.pointCloudVisible = !1)
        }
        ,
        t.prototype.updatePrimaryFromSelected = function() {
            var t = !1;
            this.primary && !this.selectedDatasets[this.primary.id] && (this.primary = void 0,
            t = !0),
            !this.primary && a.size(this.selectedDatasets) > 0 && (this.primary = this.selectedDatasets[Object.keys(this.selectedDatasets)[0]],
            t = !0),
            t && this.primaryDatasetSwitched.emit()
        }
        ,
        t.prototype.discardChanges = function() {
            var t = this;
            return this.DatasetRepository.resetCache(),
            this.DatasetRepository.findAll().then((function(e) {
                return t.resetAlignmentReferences(e)
            }
            ))
        }
        ,
        t.prototype.resetAlignmentReferences = function(t) {
            var e;
            this.primary && (e = this.primary.id);
            for (var n = Object.keys(this.selectedDatasets), i = 0, r = t.filter((function(t) {
                return -1 !== n.indexOf(String(t.id))
            }
            )); i < r.length; i++) {
                var o = r[i];
                this.selectedDatasets[o.id] = o,
                o.id === e && (this.primary = o)
            }
            this.stateDirty = !1
        }
        ,
        t.prototype.currentModeUsesAlignmentService = function() {
            return this.ModeService.isSiteModelEditorMode() || this.ModeService.isDatasetAlignmentMode() || this.ModeService.isGeoRegistrationMode()
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(u.ɵɵinject(d.GeoTransformationService),u.ɵɵinject(p.ModeService),u.ɵɵinject(h.DatasetRepository),u.ɵɵinject(f.ViewService))
        }
        ,
        t.ɵprov = u.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.AlignmentService = m,
    u.ɵsetClassMetadata(m, [{
        type: l.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: d.GeoTransformationService
        }, {
            type: p.ModeService
        }, {
            type: h.DatasetRepository
        }, {
            type: f.ViewService
        }]
    }
    ), null),
    i.module("IVWebApp").service("AlignmentService", c.downgradeInjectable(m))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = (n(154),
    n(16));
    n(49),
    n(90),
    n(14),
    n(39),
    n(31),
    n(106),
    n(61);
    n(422);
    n(422),
    n(103),
    n(41);
    var s = n(107)
      , c = n(8)
      , l = n(4)
      , u = n(136)
      , d = n(7)
      , p = n(318)
      , h = n(6)
      , f = n(0)
      , m = (n(66),
    n(0))
      , g = n(154)
      , v = n(49)
      , y = n(90)
      , b = n(14)
      , w = n(66)
      , S = n(39)
      , x = n(31)
      , M = n(106)
      , E = n(61)
      , C = n(422)
      , A = n(103)
      , T = n(41)
      , O = function(t) {
        function e(e, n, i, r, o, s, c, l, u, d, p, h, f) {
            var m = t.call(this) || this;
            return m.AlignmentService = e,
            m.ImageService = n,
            m.ImageRepository = i,
            m.GeoTransformationService = r,
            m.TransformService = o,
            m.PoiService = s,
            m.DatasetRepository = c,
            m.ProgressReportService = l,
            m.MessageReportingService = u,
            m.gettextCatalog = d,
            m.PoseRepository = p,
            m.PoiRepository = h,
            m.ErrorService = f,
            m.datasetAlignmentChanged = new a.Signal,
            m.errorHandler = m.ErrorService.newWrapper().report().exceptions().network().generic(m.gettextCatalog.getString("Error while saving the dataset alignment")).build(),
            m
        }
        return r(e, t),
        e.prototype.isSavingInProgress = function() {
            return this.task && this.task.percentage < 100
        }
        ,
        e.prototype.save = function() {
            var t = this;
            return this.updateDatasets(),
            this.saveAlignment().then((function() {
                t.AlignmentService.stateDirty = !1
            }
            ))
        }
        ,
        e.prototype.updateDatasets = function() {
            var t = this;
            this.DatasetRepository.findAll().then((function(e) {
                for (var n = 0, i = e; n < i.length; n++) {
                    var r = i[n]
                      , o = r.getGlobalState();
                    r.orientation = o.orientation,
                    r.globalLocation = (new l.Vector3).fromArray(o.pos)
                }
                t.GeoTransformationService.updateLocalCoordinates()
            }
            )).catch(c.handleWarning)
        }
        ,
        e.prototype.hasChanges = function() {
            return this.AlignmentService.stateDirty
        }
        ,
        e.prototype.saveAlignment = function() {
            var t = this;
            return this.task = this.ProgressReportService.addTask(this.gettextCatalog.getString("Saving alignment..."), 1, !0, !1, !1),
            this.DatasetRepository.findAll().then((function(e) {
                var n = e.filter((function(t) {
                    return t.security.canWrite
                }
                ));
                t.task.addItems(n.length),
                t.task.itemDone();
                for (var i = t.TransformService.getLocalCoordinateSystemState(), r = Promise.resolve(), o = function(e) {
                    r = r.then((function() {
                        return t.saveDatasetAlignment(e)
                    }
                    ))
                }, a = 0, c = n; a < c.length; a++) {
                    o(c[a])
                }
                return r = s.promiseFinally(r, (function() {
                    return t.TransformService.setLocalCoordinateSystemState(i)
                }
                )),
                t.errorHandler.wrap(r).catch((function(e) {
                    return t.task.setPercentage(100),
                    Promise.reject(e)
                }
                ))
            }
            ))
        }
        ,
        e.prototype.saveDatasetAlignment = function(t) {
            var e = this
              , n = t.getGlobalState();
            return t.orientation = n.orientation,
            t.globalLocation = (new l.Vector3).fromArray(n.pos),
            this.DatasetRepository.save([t]).then((function(t) {
                var n = t[0];
                return e.GeoTransformationService.setOffsetFromGlobal(n.globalLocation),
                Promise.all([e.saveImagesToDB(n), e.savePOIsToDB(n), e.updatePoses(n)]).then((function() {
                    return e.task.itemDone()
                }
                ))
            }
            ))
        }
        ,
        e.prototype.saveImagesToDB = function(t) {
            var e = this;
            return this.updateImageCoordinates(t).then((function(t) {
                return e.ImageRepository.save(t)
            }
            )).then((function() {
                return e.DatasetRepository.findOne(t.id, !0)
            }
            ))
        }
        ,
        e.prototype.savePOIsToDB = function(t) {
            var e = this;
            return this.updatePoiCoordinates(t).then((function(t) {
                return e.PoiRepository.save(t)
            }
            )).then((function() {
                return e.PoiService.poisChanged.emit()
            }
            ))
        }
        ,
        e.prototype.updatePoses = function(t) {
            var e = this;
            return this.task.addItems(1),
            this.PoseRepository.findByDatasetId(t.id).then((function(t) {
                return t.length > 0 ? (t.forEach((function(t) {
                    return t.computeCoordinatesFromDataset()
                }
                )),
                e.PoseRepository.save(t).then((function() {
                    return e.task.itemDone()
                }
                ))) : (e.task.itemDone(),
                Promise.resolve())
            }
            ))
        }
        ,
        e.prototype.translate = function(t, e) {
            var n = this;
            d.forEach(this.AlignmentService.selectedDatasets, (function(e) {
                e.locked || (n.AlignmentService.stateDirty = !0,
                n.applyTranslationToDataset(t, e))
            }
            )),
            this.datasetAlignmentChanged.emit()
        }
        ,
        e.prototype.undoTranslation = function() {
            var t = this;
            d.forEach(this.AlignmentService.cachedStates, (function(e, n) {
                t.AlignmentService.selectedDatasets[n].setState(t.AlignmentService.cachedStates[n]),
                t.updateImageCoordinates(t.AlignmentService.selectedDatasets[n]).catch((function() {}
                ))
            }
            )),
            this.datasetAlignmentChanged.emit(),
            this.AlignmentService.cachedStates = void 0
        }
        ,
        e.prototype.applyTranslationToDataset = function(t, e) {
            var n = e.m2w_;
            n.elements[12] += t.x,
            n.elements[13] += t.y,
            n.elements[14] += t.z,
            e.m2wInv_ = (new l.Matrix4).getInverse(e.m2w_),
            e.updateLocationsFromMatrix(),
            this.updateImageCoordinates(e).catch((function() {}
            )),
            e.updatePose()
        }
        ,
        e.prototype.cacheCurrentState = function() {
            var t = this;
            this.AlignmentService.cachedStates = {},
            d.forEach(this.AlignmentService.selectedDatasets, (function(e) {
                e.locked || (t.AlignmentService.cachedStates[e.id] = e.getState())
            }
            ))
        }
        ,
        e.prototype.rotate = function(t, e) {
            var n = this
              , i = new l.Matrix4;
            i.makeRotationZ(t),
            this.AlignmentService.primary && !this.AlignmentService.primary.locked && (this.AlignmentService.stateDirty = !0,
            this.applyRotationToDataset(t, this.AlignmentService.primary)),
            d.forEach(this.AlignmentService.selectedDatasets, (function(t) {
                t === n.AlignmentService.primary || t.locked || (n.AlignmentService.stateDirty = !0,
                n.rotateDatasetAroundOtherDataset(i, t, n.AlignmentService.primary))
            }
            )),
            this.datasetAlignmentChanged.emit()
        }
        ,
        e.prototype.applyRotationToDataset = function(t, e) {
            if (e.m2w_) {
                var n = e.m2w_
                  , i = Math.atan2(n.elements[1], n.elements[0]) + t
                  , r = Math.cos(i)
                  , o = Math.sin(i);
                n.elements[0] = r,
                n.elements[1] = o,
                n.elements[4] = -o,
                n.elements[5] = r,
                e.m2wInv_ = (new l.Matrix4).getInverse(e.m2w_),
                e.updateLocationsFromMatrix(),
                this.updateImageCoordinates(e).catch((function() {}
                )),
                e.updatePose()
            }
        }
        ,
        e.prototype.rotateDatasetAroundOtherDataset = function(t, e, n) {
            var i = n.m2w_
              , r = new l.Matrix4;
            r.getInverse(i);
            var o = new l.Matrix4
              , a = new l.Matrix4
              , s = new l.Matrix4
              , c = e.m2w_;
            o.multiplyMatrices(r, c),
            a.multiplyMatrices(t, o),
            s.multiplyMatrices(i, a),
            e.m2w_.copy(s),
            e.m2wInv_ = (new l.Matrix4).getInverse(e.m2w_),
            e.updateLocationsFromMatrix(),
            this.updateImageCoordinates(e).catch((function() {}
            )),
            e.updatePose()
        }
        ,
        e.prototype.updateImageCoordinates = function(t) {
            return this.ImageRepository.filter((new u.ImageRestFilterBuilder).dataset([t]).build()).then((function(t) {
                return t.forEach((function(t) {
                    return t.computeCoordinatesFromDataset()
                }
                )),
                t
            }
            ))
        }
        ,
        e.prototype.updatePoiCoordinates = function(t) {
            return this.PoiRepository.filter((new u.PoiRestFilterBuilder).dataset([t]).build()).then((function(t) {
                return t.forEach((function(t) {
                    return t.computeCoordinatesFromDataset()
                }
                )),
                t
            }
            ))
        }
        ,
        e.prototype.discardChanges = function() {
            return this.ImageRepository.resetCache(),
            this.AlignmentService.discardChanges()
        }
        ,
        e.prototype.promptOnUnsavedChanges = function() {
            return t.prototype.promptOnUnsavedChanges.call(this, "#confirmUnsavedDatasetAlignment")
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(m.ɵɵinject(g.AlignmentService),m.ɵɵinject(v.ImageService),m.ɵɵinject(y.ImageRepository),m.ɵɵinject(b.GeoTransformationService),m.ɵɵinject(w.TransformService),m.ɵɵinject(S.PoiService),m.ɵɵinject(x.DatasetRepository),m.ɵɵinject(M.ProgressReportService),m.ɵɵinject(E.MessageReportingService),m.ɵɵinject("gettextCatalog"),m.ɵɵinject(C.PoseRepository),m.ɵɵinject(A.PoiRepository),m.ɵɵinject(T.ErrorService))
        }
        ,
        e.ɵprov = m.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(p.SaveDiscardDialogService);
    e.DatasetAlignmentService = O,
    m.ɵsetClassMetadata(O, [{
        type: f.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: g.AlignmentService
        }, {
            type: v.ImageService
        }, {
            type: y.ImageRepository
        }, {
            type: b.GeoTransformationService
        }, {
            type: w.TransformService
        }, {
            type: S.PoiService
        }, {
            type: x.DatasetRepository
        }, {
            type: M.ProgressReportService
        }, {
            type: E.MessageReportingService
        }, {
            type: void 0,
            decorators: [{
                type: f.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: C.PoseRepository
        }, {
            type: A.PoiRepository
        }, {
            type: T.ErrorService
        }]
    }
    ), null),
    o.module("IVWebApp").service("DatasetAlignmentService", h.downgradeInjectable(O))
}
, function(t, e, n) {
    "use strict";
    function i(t) {
        return t
    }
    n.d(e, "a", (function() {
        return i
    }
    ))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(257)
      , r = n(4);
    e.pointInPolygon = function(t, e) {
        for (var n = e.length, i = !1, r = n - 1, o = 0; o < n; r = o++) {
            var a = e[r]
              , s = e[o]
              , c = s.x - a.x
              , l = s.y - a.y;
            if (Math.abs(l) > 1e-10) {
                if (l < 0 && (a = e[o],
                c = -c,
                s = e[r],
                l = -l),
                t.y < a.y || t.y > s.y)
                    continue;
                if (t.y === a.y) {
                    if (t.x === a.x)
                        return !0
                } else {
                    var u = l * (t.x - a.x) - c * (t.y - a.y);
                    if (0 === u)
                        return !0;
                    if (u < 0)
                        continue;
                    i = !i
                }
            } else {
                if (t.y !== a.y)
                    continue;
                if (s.x <= t.x && t.x <= a.x || a.x <= t.x && t.x <= s.x)
                    return !0
            }
        }
        return i
    }
    ,
    e.generateDataTexture = function(t, e, n) {
        for (var i = t * e, o = new Uint8Array(3 * i), a = Math.floor(255 * n.r), s = Math.floor(255 * n.g), c = Math.floor(255 * n.b), l = 0; l < i; l++)
            o[3 * l] = a,
            o[3 * l + 1] = s,
            o[3 * l + 2] = c;
        var u = new r.DataTexture(o,t,e,r.RGBFormat,void 0,void 0,void 0,void 0,void 0,void 0);
        return u.needsUpdate = !0,
        u
    }
    ,
    e.getAngleBetweenVectors = function(t, e, n) {
        var i = new r.Vector3
          , o = new r.Vector3;
        void 0 !== n && void 0 !== n.x && void 0 !== n.y ? (i.subVectors(t, n),
        o.subVectors(e, n)) : (i = t,
        o = e);
        var a = Math.atan2(i.y, i.x);
        return Math.atan2(o.y, o.x) - a
    }
    ,
    e.createMeshLine = function(t, e) {
        var n = new i.MeshLine;
        n.setGeometry(t);
        var o = new r.Mesh(n.geometry,e);
        return o.raycast = n.raycast,
        o
    }
    ,
    e.disposeMeshMaterial = function(t) {
        if (t.material)
            if (t.material instanceof r.Material)
                t.material.dispose();
            else
                for (var e = 0, n = t.material; e < n.length; e++) {
                    n[e].dispose()
                }
    }
}
, function(t, e) {
    t.exports = !1
}
, function(t, e, n) {
    "use strict";
    var i = n(18);
    t.exports = function(t, e) {
        var n = [][t];
        return !!n && i((function() {
            n.call(null, e || function() {
                throw 1
            }
            , 1)
        }
        ))
    }
}
, function(t, e, n) {
    var i, r = n(29), o = n(353), a = n(354), s = n(239), c = n(462), l = n(351), u = n(287), d = u("IE_PROTO"), p = function() {}, h = function(t) {
        return "<script>" + t + "<\/script>"
    }, f = function() {
        try {
            i = document.domain && new ActiveXObject("htmlfile")
        } catch (t) {}
        var t, e;
        f = i ? function(t) {
            t.write(h("")),
            t.close();
            var e = t.parentWindow.Object;
            return t = null,
            e
        }(i) : ((e = l("iframe")).style.display = "none",
        c.appendChild(e),
        e.src = String("javascript:"),
        (t = e.contentWindow.document).open(),
        t.write(h("document.F=Object")),
        t.close(),
        t.F);
        for (var n = a.length; n--; )
            delete f.prototype[a[n]];
        return f()
    };
    s[d] = !0,
    t.exports = Object.create || function(t, e) {
        var n;
        return null !== t ? (p.prototype = r(t),
        n = new p,
        p.prototype = null,
        n[d] = t) : n = f(),
        void 0 === e ? n : o(n, e)
    }
}
, function(t, e, n) {
    var i = n(286)
      , r = n(34)
      , o = function(t) {
        return "function" == typeof t ? t : void 0
    };
    t.exports = function(t, e) {
        return arguments.length < 2 ? o(i[t]) || o(r[t]) : i[t] && i[t][e] || r[t] && r[t][e]
    }
}
, function(t, e, n) {
    var i = n(48).f
      , r = n(58)
      , o = n(45)("toStringTag");
    t.exports = function(t, e, n) {
        t && !r(t = n ? t : t.prototype, o) && i(t, o, {
            configurable: !0,
            value: e
        })
    }
}
, function(t, e, n) {
    var i = n(490)
      , r = n(492)
      , o = n(284)("metadata")
      , a = o.store || (o.store = new r)
      , s = function(t, e, n) {
        var r = a.get(t);
        if (!r) {
            if (!n)
                return;
            a.set(t, r = new i)
        }
        var o = r.get(e);
        if (!o) {
            if (!n)
                return;
            r.set(e, o = new i)
        }
        return o
    };
    t.exports = {
        store: a,
        getMap: s,
        has: function(t, e, n) {
            var i = s(e, n, !1);
            return void 0 !== i && i.has(t)
        },
        get: function(t, e, n) {
            var i = s(e, n, !1);
            return void 0 === i ? void 0 : i.get(t)
        },
        set: function(t, e, n, i) {
            s(n, i, !0).set(t, e)
        },
        keys: function(t, e) {
            var n = s(t, e, !1)
              , i = [];
            return n && n.forEach((function(t, e) {
                i.push(e)
            }
            )),
            i
        },
        toKey: function(t) {
            return void 0 === t || "symbol" == typeof t ? t : String(t)
        }
    }
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(34)
      , o = n(43)
      , a = n(372)
      , s = n(46)
      , c = n(303)
      , l = n(192)
      , u = n(173)
      , d = n(88)
      , p = n(44)
      , h = n(510)
      , f = n(511)
      , m = n(134)
      , g = n(58)
      , v = n(242)
      , y = n(42)
      , b = n(160)
      , w = n(191)
      , S = n(190).f
      , x = n(512)
      , M = n(74).forEach
      , E = n(246)
      , C = n(48)
      , A = n(82)
      , T = n(110)
      , O = n(293)
      , _ = T.get
      , P = T.set
      , I = C.f
      , k = A.f
      , D = Math.round
      , R = r.RangeError
      , L = c.ArrayBuffer
      , N = c.DataView
      , j = s.NATIVE_ARRAY_BUFFER_VIEWS
      , V = s.TYPED_ARRAY_TAG
      , F = s.TypedArray
      , U = s.TypedArrayPrototype
      , B = s.aTypedArrayConstructor
      , z = s.isTypedArray
      , G = function(t, e) {
        for (var n = 0, i = e.length, r = new (B(t))(i); i > n; )
            r[n] = e[n++];
        return r
    }
      , H = function(t, e) {
        I(t, e, {
            get: function() {
                return _(this)[e]
            }
        })
    }
      , W = function(t) {
        var e;
        return t instanceof L || "ArrayBuffer" == (e = v(t)) || "SharedArrayBuffer" == e
    }
      , q = function(t, e) {
        return z(t) && "symbol" != typeof e && e in t && String(+e) == String(e)
    }
      , X = function(t, e) {
        return q(t, e = m(e, !0)) ? u(2, t[e]) : k(t, e)
    }
      , Y = function(t, e, n) {
        return !(q(t, e = m(e, !0)) && y(n) && g(n, "value")) || g(n, "get") || g(n, "set") || n.configurable || g(n, "writable") && !n.writable || g(n, "enumerable") && !n.enumerable ? I(t, e, n) : (t[e] = n.value,
        t)
    };
    o ? (j || (A.f = X,
    C.f = Y,
    H(U, "buffer"),
    H(U, "byteOffset"),
    H(U, "byteLength"),
    H(U, "length")),
    i({
        target: "Object",
        stat: !0,
        forced: !j
    }, {
        getOwnPropertyDescriptor: X,
        defineProperty: Y
    }),
    t.exports = function(t, e, n) {
        var o = t.match(/\d+$/)[0] / 8
          , s = t + (n ? "Clamped" : "") + "Array"
          , c = "get" + t
          , u = "set" + t
          , m = r[s]
          , g = m
          , v = g && g.prototype
          , C = {}
          , A = function(t, e) {
            I(t, e, {
                get: function() {
                    return function(t, e) {
                        var n = _(t);
                        return n.view[c](e * o + n.byteOffset, !0)
                    }(this, e)
                },
                set: function(t) {
                    return function(t, e, i) {
                        var r = _(t);
                        n && (i = (i = D(i)) < 0 ? 0 : i > 255 ? 255 : 255 & i),
                        r.view[u](e * o + r.byteOffset, i, !0)
                    }(this, e, t)
                },
                enumerable: !0
            })
        };
        j ? a && (g = e((function(t, e, n, i) {
            return l(t, g, s),
            O(y(e) ? W(e) ? void 0 !== i ? new m(e,f(n, o),i) : void 0 !== n ? new m(e,f(n, o)) : new m(e) : z(e) ? G(g, e) : x.call(g, e) : new m(h(e)), t, g)
        }
        )),
        w && w(g, F),
        M(S(m), (function(t) {
            t in g || d(g, t, m[t])
        }
        )),
        g.prototype = v) : (g = e((function(t, e, n, i) {
            l(t, g, s);
            var r, a, c, u = 0, d = 0;
            if (y(e)) {
                if (!W(e))
                    return z(e) ? G(g, e) : x.call(g, e);
                r = e,
                d = f(n, o);
                var m = e.byteLength;
                if (void 0 === i) {
                    if (m % o)
                        throw R("Wrong length");
                    if ((a = m - d) < 0)
                        throw R("Wrong length")
                } else if ((a = p(i) * o) + d > m)
                    throw R("Wrong length");
                c = a / o
            } else
                c = h(e),
                r = new L(a = c * o);
            for (P(t, {
                buffer: r,
                byteOffset: d,
                byteLength: a,
                length: c,
                view: new N(r)
            }); u < c; )
                A(t, u++)
        }
        )),
        w && w(g, F),
        v = g.prototype = b(U)),
        v.constructor !== g && d(v, "constructor", g),
        V && d(v, V, s),
        C[s] = g,
        i({
            global: !0,
            forced: g != m,
            sham: !j
        }, C),
        "BYTES_PER_ELEMENT"in g || d(g, "BYTES_PER_ELEMENT", o),
        "BYTES_PER_ELEMENT"in v || d(v, "BYTES_PER_ELEMENT", o),
        E(s)
    }
    ) : t.exports = function() {}
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return o
    }
    ));
    var i = n(1)
      , r = n(26);
    function o(t, e) {
        return function(n) {
            return n.lift(new a(t,e))
        }
    }
    var a = function() {
        function t(t, e) {
            this.predicate = t,
            this.thisArg = e
        }
        return t.prototype.call = function(t, e) {
            return e.subscribe(new s(t,this.predicate,this.thisArg))
        }
        ,
        t
    }()
      , s = function(t) {
        function e(e, n, i) {
            var r = t.call(this, e) || this;
            return r.predicate = n,
            r.thisArg = i,
            r.count = 0,
            r
        }
        return i.c(e, t),
        e.prototype._next = function(t) {
            var e;
            try {
                e = this.predicate.call(this.thisArg, t, this.count++)
            } catch (t) {
                return void this.destination.error(t)
            }
            e && this.destination.next(t)
        }
        ,
        e
    }(r.a)
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    ), o = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
    , a = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var s = n(2)
      , c = n(548)
      , l = (n(9),
    n(31),
    n(135))
      , u = (n(22),
    n(14),
    n(383))
      , d = (n(75),
    n(6))
      , p = n(0)
      , h = n(0)
      , f = n(9)
      , m = n(14)
      , g = n(31)
      , v = n(22)
      , y = n(75)
      , b = function(t) {
        function e(e, n, i, r, o) {
            var a = t.call(this, c.TiledMapEntity, e, n) || this;
            return a.path = "tiled_maps",
            l.EntityRelationMapper.manyToOne(a, "bundle", "bundleId", o),
            l.EntityRelationMapper.manyToOne(a, "floor", "floorId", r),
            a
        }
        return r(e, t),
        e.prototype.getMapForFloors = function(t) {
            return o(this, void 0, void 0, (function() {
                return a(this, (function(e) {
                    switch (e.label) {
                    case 0:
                        return [4, this.findAll()];
                    case 1:
                        return [2, e.sent().filter((function(e) {
                            return -1 !== t.indexOf(e.floor)
                        }
                        ))]
                    }
                }
                ))
            }
            ))
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(h.ɵɵinject(f.RestService),h.ɵɵinject(m.GeoTransformationService),h.ɵɵinject(g.DatasetRepository),h.ɵɵinject(v.SiteModelRepository),h.ɵɵinject(y.BundleRepository))
        }
        ,
        e.ɵprov = h.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(u.ReferenceSystemAwareRestRepository);
    e.TiledMapRepository = b,
    h.ɵsetClassMetadata(b, [{
        type: p.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: f.RestService
        }, {
            type: m.GeoTransformationService
        }, {
            type: g.DatasetRepository
        }, {
            type: v.SiteModelRepository
        }, {
            type: y.BundleRepository
        }]
    }
    ), null),
    s.module("IVWebApp").service("TiledMapRepository", d.downgradeInjectable(b))
}
, function(t, e, n) {
    "use strict";
    function i(t) {
        setTimeout((function() {
            throw t
        }
        ), 0)
    }
    n.d(e, "a", (function() {
        return i
    }
    ))
}
, function(t, e, n) {
    "use strict";
    n.r(e),
    n.d(e, "translate", (function() {
        return ut
    }
    )),
    n.d(e, "TranslocoService", (function() {
        return dt
    }
    )),
    n.d(e, "TranslocoDirective", (function() {
        return bt
    }
    )),
    n.d(e, "TranslocoPipe", (function() {
        return wt
    }
    )),
    n.d(e, "TranslocoModule", (function() {
        return xt
    }
    )),
    n.d(e, "defaultProviders", (function() {
        return St
    }
    )),
    n.d(e, "TRANSLOCO_LOADER", (function() {
        return x
    }
    )),
    n.d(e, "TRANSLOCO_CONFIG", (function() {
        return W
    }
    )),
    n.d(e, "defaultConfig", (function() {
        return q
    }
    )),
    n.d(e, "provideTranslocoConfig", (function() {
        return X
    }
    )),
    n.d(e, "translocoConfig", (function() {
        return Y
    }
    )),
    n.d(e, "TRANSLOCO_TRANSPILER", (function() {
        return B
    }
    )),
    n.d(e, "DefaultTranspiler", (function() {
        return z
    }
    )),
    n.d(e, "FunctionalTranspiler", (function() {
        return H
    }
    )),
    n.d(e, "getFunctionArgs", (function() {
        return G
    }
    )),
    n.d(e, "TRANSLOCO_SCOPE", (function() {
        return gt
    }
    )),
    n.d(e, "TRANSLOCO_LOADING_TEMPLATE", (function() {
        return mt
    }
    )),
    n.d(e, "TRANSLOCO_LANG", (function() {
        return ft
    }
    )),
    n.d(e, "TestingLoader", (function() {
        return Mt
    }
    )),
    n.d(e, "TranslocoTestingModule", (function() {
        return Et
    }
    )),
    n.d(e, "TemplateHandler", (function() {
        return ht
    }
    )),
    n.d(e, "TRANSLOCO_INTERCEPTOR", (function() {
        return Q
    }
    )),
    n.d(e, "TRANSLOCO_FALLBACK_STRATEGY", (function() {
        return tt
    }
    )),
    n.d(e, "DefaultFallbackStrategy", (function() {
        return et
    }
    )),
    n.d(e, "TRANSLOCO_MISSING_HANDLER", (function() {
        return Z
    }
    )),
    n.d(e, "getBrowserCultureLang", (function() {
        return At
    }
    )),
    n.d(e, "getBrowserLang", (function() {
        return Ct
    }
    )),
    n.d(e, "getPipeValue", (function() {
        return rt
    }
    )),
    n.d(e, "getLangFromScope", (function() {
        return it
    }
    )),
    n.d(e, "getScopeFromLang", (function() {
        return nt
    }
    )),
    n.d(e, "getValue", (function() {
        return M
    }
    )),
    n.d(e, "setValue", (function() {
        return E
    }
    )),
    n.d(e, "size", (function() {
        return C
    }
    )),
    n.d(e, "isEmpty", (function() {
        return A
    }
    )),
    n.d(e, "isFunction", (function() {
        return T
    }
    )),
    n.d(e, "isString", (function() {
        return O
    }
    )),
    n.d(e, "isNumber", (function() {
        return _
    }
    )),
    n.d(e, "isObject", (function() {
        return P
    }
    )),
    n.d(e, "coerceArray", (function() {
        return I
    }
    )),
    n.d(e, "toCamelCase", (function() {
        return k
    }
    )),
    n.d(e, "isBrowser", (function() {
        return D
    }
    )),
    n.d(e, "isNil", (function() {
        return R
    }
    )),
    n.d(e, "isDefined", (function() {
        return L
    }
    )),
    n.d(e, "toNumber", (function() {
        return N
    }
    )),
    n.d(e, "isScopeObject", (function() {
        return j
    }
    )),
    n.d(e, "hasInlineLoader", (function() {
        return V
    }
    )),
    n.d(e, "unflatten", (function() {
        return F
    }
    )),
    n.d(e, "flatten", (function() {
        return U
    }
    )),
    n.d(e, "ɵc", (function() {
        return pt
    }
    )),
    n.d(e, "ɵb", (function() {
        return J
    }
    )),
    n.d(e, "ɵa", (function() {
        return $
    }
    ));
    var i = n(439)
      , r = n.n(i)
      , o = n(221)
      , a = n(62)
      , s = n(636)
      , c = n(535)
      , l = n(637)
      , u = n(536)
      , d = n(276)
      , p = n(1)
      , h = n(0)
      , f = n(93)
      , m = n(76)
      , g = n(32)
      , v = n(373)
      , y = n(228)
      , b = n(346)
      , w = n(71)
      , S = function() {
        function t(t) {
            this.translations = t
        }
        return t.prototype.getTranslation = function(t) {
            return Object(f.a)(this.translations.get(t) || {})
        }
        ,
        t
    }()
      , x = new h.InjectionToken("TRANSLOCO_LOADER");
    function M(t, e) {
        return t && t.hasOwnProperty(e) ? t[e] : e.split(".").reduce((function(t, e) {
            return t && t[e]
        }
        ), t)
    }
    function E(t, e, n) {
        t = Object(p.a)({}, t);
        var i = e.split(".")
          , r = i.length - 1;
        return i.reduce((function(t, e, i) {
            return t[e] = i === r ? n : Array.isArray(t[e]) ? t[e].slice() : Object(p.a)({}, t[e]),
            t && t[e]
        }
        ), t),
        t
    }
    function C(t) {
        return t ? Array.isArray(t) ? t.length : P(t) ? Object.keys(t).length : t ? t.length : 0 : 0
    }
    function A(t) {
        return 0 === C(t)
    }
    function T(t) {
        return "function" == typeof t
    }
    function O(t) {
        return "string" == typeof t
    }
    function _(t) {
        return "number" == typeof t
    }
    function P(t) {
        return t && "object" == typeof t && !Array.isArray(t)
    }
    function I(t) {
        return Array.isArray(t) ? t : [t]
    }
    function k(t) {
        return t.replace(/(?:^\w|[A-Z]|\b\w)/g, (function(t, e) {
            return 0 == e ? t.toLowerCase() : t.toUpperCase()
        }
        )).replace(/\s+|_|-|\//g, "")
    }
    function D() {
        return "undefined" != typeof window
    }
    function R(t) {
        return null == t
    }
    function L(t) {
        return !1 === R(t)
    }
    function N(t) {
        return _(t) ? t : O(t) && !isNaN(Number(t) - parseFloat(t)) ? Number(t) : null
    }
    function j(t) {
        return t && "string" == typeof t.scope
    }
    function V(t) {
        return t && P(t.loader)
    }
    function F(t) {
        return r.a.unflatten(t, {
            safe: !0
        })
    }
    function U(t) {
        return r()(t, {
            safe: !0
        })
    }
    var B = new h.InjectionToken("TRANSLOCO_TRANSPILER")
      , z = function() {
        function t() {}
        return t.prototype.transpile = function(t, e, n) {
            var i = this;
            return void 0 === e && (e = {}),
            O(t) ? t.replace(/{{(.*?)}}/g, (function(t, r) {
                return r = r.trim(),
                L(e[r]) ? e[r] : L(n[r]) ? i.transpile(n[r], e, n) : ""
            }
            )) : (P(t) && e && (t = this.handleObject(t, e, n)),
            t)
        }
        ,
        t.prototype.handleObject = function(t, e, n) {
            var i = this;
            void 0 === e && (e = {});
            var r = t;
            return Object.keys(e).forEach((function(t) {
                var o = M(r, t)
                  , a = M(e, t)
                  , s = i.transpile(o, a, n);
                r = E(r, t, s)
            }
            )),
            r
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵprov = h["ɵɵdefineInjectable"]({
            token: t,
            factory: function(e) {
                return t.ɵfac(e)
            }
        }),
        t
    }();
    function G(t) {
        for (var e = t ? t.split(",") : [], n = [], i = 0; i < e.length; i++) {
            for (var r = e[i].trim(); "\\" === r[r.length - 1]; )
                i++,
                r = r.replace("\\", ",") + e[i];
            n.push(r)
        }
        return n
    }
    var H = function(t) {
        function e(e) {
            var n = t.call(this) || this;
            return n.injector = e,
            n
        }
        return Object(p.c)(e, t),
        e.prototype.transpile = function(e, n, i) {
            var r = this;
            if (void 0 === n && (n = {}),
            O(e)) {
                var o = e.replace(/\[\[\s*(\w+)\((.*)\)\s*]]/g, (function(t, n, i) {
                    try {
                        var o = r.injector.get(n);
                        return o.transpile.apply(o, Object(p.h)(G(i)))
                    } catch (t) {
                        var a = "There is an error in: '" + e + "'. \n                          Check that the you used the right syntax in your translation and that the implementation of " + n + " is correct.";
                        throw t.message.includes("NullInjectorError") && (a = "You are using the '" + n + "' function in your translation but no provider was found!"),
                        new Error(a)
                    }
                }
                ));
                return t.prototype.transpile.call(this, o, n, i)
            }
            return P(e) && n && (e = this.handleObject(e, n, i)),
            e
        }
        ,
        e.ctorParameters = function() {
            return [{
                type: h.Injector
            }]
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(h["ɵɵinject"](h.Injector))
        }
        ,
        e.ɵprov = h["ɵɵdefineInjectable"]({
            token: e,
            factory: function(t) {
                return e.ɵfac(t)
            }
        }),
        e
    }(z)
      , W = new h.InjectionToken("TRANSLOCO_CONFIG",{
        providedIn: "root",
        factory: function() {
            return {}
        }
    })
      , q = {
        defaultLang: "en",
        reRenderOnLangChange: !1,
        prodMode: !1,
        failedRetries: 2,
        availableLangs: [],
        missingHandler: {
            logMissingKey: !0,
            useFallbackTranslation: !1,
            allowEmpty: !1
        },
        flatten: {
            aot: !1
        }
    };
    function X(t) {
        return void 0 === t && (t = q),
        {
            provide: W,
            useValue: Object(p.a)({}, q, t)
        }
    }
    function Y(t) {
        return void 0 === t && (t = q),
        Object(p.a)({}, q, t)
    }
    var K, Z = new h.InjectionToken("TRANSLOCO_MISSING_HANDLER"), J = function() {
        function t() {}
        return t.prototype.handle = function(t, e) {
            if (e.missingHandler.logMissingKey && !e.prodMode) {
                var n = "Missing translation for '" + t + "'";
                console.warn("%c " + n, "font-size: 12px; color: red")
            }
            return t
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵprov = h["ɵɵdefineInjectable"]({
            token: t,
            factory: function(e) {
                return t.ɵfac(e)
            }
        }),
        t
    }(), Q = new h.InjectionToken("TRANSLOCO_INTERCEPTOR"), $ = function() {
        function t() {}
        return t.prototype.preSaveTranslation = function(t, e) {
            return t
        }
        ,
        t.prototype.preSaveTranslationKey = function(t, e, n) {
            return e
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵprov = h["ɵɵdefineInjectable"]({
            token: t,
            factory: function(e) {
                return t.ɵfac(e)
            }
        }),
        t
    }(), tt = new h.InjectionToken("TRANSLOCO_FALLBACK_STRATEGY"), et = function() {
        function t(t) {
            this.userConfig = t
        }
        return t.prototype.getNextLangs = function(t) {
            var e = this.userConfig.fallbackLang;
            if (!e)
                throw new Error("When using the default fallback, a fallback language must be provided in the config!");
            return Array.isArray(e) ? e : [e]
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: void 0,
                decorators: [{
                    type: h.Inject,
                    args: [W]
                }]
            }]
        }
        ,
        t
    }();
    function nt(t) {
        if (!t)
            return "";
        var e = t.split("/");
        return e.pop(),
        e.join("/")
    }
    function it(t) {
        return t ? t.split("/").pop() : ""
    }
    function rt(t, e, n) {
        if (void 0 === n && (n = "|"),
        O(t)) {
            var i = t.split(n)
              , r = i.pop();
            return r === e ? [!0, i.toString()] : [!1, r]
        }
        return [!1, ""]
    }
    function ot(t, e) {
        return !1 === Object(p.f)(rt(e, "static"), 1)[0] && t.config.reRenderOnLangChange
    }
    function at(t) {
        return t ? function(t) {
            return t
        }
        : Object(o.a)(1)
    }
    function st(t, e) {
        return V(t) ? function(t, e) {
            return Object.keys(t).reduce((function(n, i) {
                return n[e + "/" + i] = t[i],
                n
            }
            ), {})
        }(t.loader, e) : null
    }
    function ct(t) {
        return {
            scope: nt(t) || null,
            langName: it(t),
            lang: t
        }
    }
    function lt(t, e, n, i) {
        if (n) {
            if (!1 === T(n[t]))
                throw "You're using an inline loader but didn't provide a loader for " + t;
            return n[t]().then((function(t) {
                return t.default ? t.default : t
            }
            ))
        }
        return e.getTranslation(t, i)
    }
    function ut(t, e, n) {
        return void 0 === e && (e = {}),
        K.translate(t, e, n)
    }
    var dt = function() {
        function t(t, e, n, i, r, o) {
            var a = this;
            this.loader = t,
            this.parser = e,
            this.missingHandler = n,
            this.interceptor = i,
            this.userConfig = r,
            this.fallbackStrategy = o,
            this.translations = new Map,
            this.cache = new Map,
            this.firstFallbackLang = null,
            this.availableLangs = [],
            this.isResolvedMissingOnce = !1,
            this.events = new g.a,
            this.events$ = this.events.asObservable(),
            this.failedCounter = 0,
            this.failedLangs = new Set,
            this.loader || (this.loader = new S(this.translations)),
            K = this,
            this.mergedConfig = function(t, e) {
                return Object(p.a)({}, t, e, {
                    missingHandler: Object(p.a)({}, t.missingHandler, e.missingHandler),
                    flatten: Object(p.a)({}, t.flatten, e.flatten)
                })
            }(q, r),
            this.setAvailableLangs(this.mergedConfig.availableLangs),
            this.setFallbackLangForMissingTranslation(this.mergedConfig),
            this.setDefaultLang(this.mergedConfig.defaultLang),
            this.lang = new v.a(this.getDefaultLang()),
            this.langChanges$ = this.lang.asObservable(),
            this.subscription = this.events$.subscribe((function(t) {
                if ("translationLoadSuccess" === t.type && t.wasFailure) {
                    var e = it(t.payload.lang);
                    a.setActiveLang(e)
                }
            }
            ))
        }
        return Object.defineProperty(t.prototype, "config", {
            get: function() {
                return this.mergedConfig
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.getDefaultLang = function() {
            return this.defaultLang
        }
        ,
        t.prototype.setDefaultLang = function(t) {
            this.defaultLang = t
        }
        ,
        t.prototype.getActiveLang = function() {
            return this.lang.getValue()
        }
        ,
        t.prototype.setActiveLang = function(t) {
            return this.lang.next(t),
            this.parser.onLangChanged && this.parser.onLangChanged(t),
            this
        }
        ,
        t.prototype.setAvailableLangs = function(t) {
            this.availableLangs = t
        }
        ,
        t.prototype.getAvailableLangs = function() {
            return this.availableLangs
        }
        ,
        t.prototype.load = function(t, e) {
            var n, i, r, o, d, p = this;
            if (void 0 === e && (e = {}),
            !1 === this.cache.has(t)) {
                var h = void 0
                  , g = this._isLangScoped(t)
                  , v = g ? nt(t) : null;
                if (this.useFallbackTranslation(t)) {
                    var b = g ? v + "/" + this.firstFallbackLang : this.firstFallbackLang
                      , w = (n = t,
                    i = b,
                    r = this.loader,
                    o = e.inlineLoader,
                    d = {
                        scope: v
                    },
                    [n, i].map((function(t) {
                        var e = lt(t, r, o, d);
                        return Object(m.a)(e).pipe(Object(a.a)((function(e) {
                            return {
                                translation: e,
                                lang: t
                            }
                        }
                        )))
                    }
                    )));
                    h = Object(y.a)(w)
                } else {
                    var S = lt(t, this.loader, e.inlineLoader, {
                        scope: v
                    });
                    h = Object(m.a)(S)
                }
                var x = h.pipe(Object(s.a)(this.config.failedRetries), Object(c.a)((function(e) {
                    Array.isArray(e) ? e.forEach((function(e) {
                        p.handleSuccess(e.lang, e.translation),
                        e.lang !== t && p.cache.set(e.lang, Object(f.a)({}))
                    }
                    )) : p.handleSuccess(t, e)
                }
                )), Object(l.a)((function() {
                    return p.handleFailure(t, e)
                }
                )), Object(u.a)(1));
                this.cache.set(t, x)
            }
            return this.cache.get(t)
        }
        ,
        t.prototype.translate = function(t, e, n) {
            var i = this;
            if (void 0 === e && (e = {}),
            void 0 === n && (n = this.getActiveLang()),
            !t)
                return t;
            var r = this.resolveLangAndScope(n)
              , o = r.scope
              , a = r.resolveLang;
            if (Array.isArray(t))
                return t.map((function(t) {
                    return i.translate(o ? o + "." + t : t, e, a)
                }
                ));
            t = o ? o + "." + t : t;
            var s = this.getTranslation(a)
              , c = s[t];
            return c ? this.parser.transpile(c, e, s) : this._handleMissingKey(t, c, e)
        }
        ,
        t.prototype.selectTranslate = function(t, e, n, i) {
            var r = this;
            void 0 === i && (i = !1);
            var o = null
              , s = function(n, o) {
                return r.load(n, o).pipe(Object(a.a)((function() {
                    return i ? r.translateObject(t, e, n) : r.translate(t, e, n)
                }
                )))
            };
            if (R(n))
                return this.langChanges$.pipe(Object(d.a)((function(t) {
                    return s(t)
                }
                )));
            if (j(n)) {
                var c = n;
                n = c.scope,
                o = st(c, c.scope)
            }
            if (n = n,
            this.isLang(n) || this.isScopeWithLang(n))
                return s(n);
            var l = n;
            return this.langChanges$.pipe(Object(d.a)((function(t) {
                return s(l + "/" + t, {
                    inlineLoader: o
                })
            }
            )))
        }
        ,
        t.prototype.isScopeWithLang = function(t) {
            return this.isLang(it(t))
        }
        ,
        t.prototype.translateObject = function(t, e, n) {
            var i, r, o = this;
            if (void 0 === n && (n = this.getActiveLang()),
            O(t) || Array.isArray(t)) {
                if (Array.isArray(t))
                    return t.map((function(t) {
                        return o.translateObject(c ? c + "." + t : t, e, s)
                    }
                    ));
                var a = this.resolveLangAndScope(n)
                  , s = a.resolveLang
                  , c = a.scope
                  , l = this.getTranslation(s);
                t = c ? c + "." + t : t;
                var u = F(this.getObjectByKey(l, t));
                return A(u) ? this.translate(t, e, n) : this.parser.transpile(u, e, l)
            }
            var d = [];
            try {
                for (var h = Object(p.j)(this.getEntries(t)), f = h.next(); !f.done; f = h.next()) {
                    var m = Object(p.f)(f.value, 2)
                      , g = m[0]
                      , v = m[1];
                    d.push(this.translateObject(g, v, n))
                }
            } catch (t) {
                i = {
                    error: t
                }
            } finally {
                try {
                    f && !f.done && (r = h.return) && r.call(h)
                } finally {
                    if (i)
                        throw i.error
                }
            }
            return d
        }
        ,
        t.prototype.selectTranslateObject = function(t, e, n) {
            var i = this;
            if (O(t) || Array.isArray(t))
                return this.selectTranslate(t, e, n, !0);
            var r = Object(p.f)(this.getEntries(t))
              , o = Object(p.f)(r[0], 2)
              , s = o[0]
              , c = o[1]
              , l = r.slice(1);
            return this.selectTranslateObject(s, c, n).pipe(Object(a.a)((function(t) {
                var e, r, o = [t];
                try {
                    for (var a = Object(p.j)(l), s = a.next(); !s.done; s = a.next()) {
                        var c = Object(p.f)(s.value, 2)
                          , u = c[0]
                          , d = c[1];
                        o.push(i.translateObject(u, d, n))
                    }
                } catch (t) {
                    e = {
                        error: t
                    }
                } finally {
                    try {
                        s && !s.done && (r = a.return) && r.call(a)
                    } finally {
                        if (e)
                            throw e.error
                    }
                }
                return o
            }
            )))
        }
        ,
        t.prototype.getTranslation = function(t) {
            return t ? this.translations.get(t) || {} : this.translations
        }
        ,
        t.prototype.selectTranslation = function(t) {
            var e = this
              , n = t || this.getActiveLang();
            return this.load(n).pipe(Object(a.a)((function() {
                return e.getTranslation(n)
            }
            )))
        }
        ,
        t.prototype.setTranslation = function(t, e, n) {
            var i;
            void 0 === e && (e = this.getActiveLang()),
            void 0 === n && (n = {});
            var r = Object(p.a)({}, {
                merge: !0,
                emitChange: !0
            }, n)
              , o = nt(e)
              , a = t;
            o && (a = U(((i = {})[this.getMappedScope(o)] = t,
            i)));
            var s = o ? it(e) : e
              , c = Object(p.a)({}, r.merge && this.getTranslation(s), a)
              , l = this.mergedConfig.flatten.aot ? c : U(c)
              , u = this.interceptor.preSaveTranslation(l, s);
            this.translations.set(s, u),
            r.emitChange && this.setActiveLang(this.getActiveLang())
        }
        ,
        t.prototype.setTranslationKey = function(t, e, n) {
            var i;
            void 0 === n && (n = this.getActiveLang());
            var r = this.interceptor.preSaveTranslationKey(t, e, n)
              , o = Object(p.a)({}, this.getTranslation(n), ((i = {})[t] = r,
            i));
            this.setTranslation(o, n)
        }
        ,
        t.prototype.setFallbackLangForMissingTranslation = function(t) {
            var e = t.fallbackLang
              , n = Array.isArray(e) ? e[0] : e;
            this.useFallbackTranslation(n) && e && (this.firstFallbackLang = n)
        }
        ,
        t.prototype._handleMissingKey = function(t, e, n) {
            if (this.config.missingHandler.allowEmpty && "" === e)
                return "";
            if (this.useFallbackTranslation() && !this.isResolvedMissingOnce) {
                this.isResolvedMissingOnce = !0;
                var i = this.translate(t, n, this.firstFallbackLang);
                return this.isResolvedMissingOnce = !1,
                i
            }
            return this.missingHandler.handle(t, this.getMissingHandlerData(), n)
        }
        ,
        t.prototype._isLangScoped = function(t) {
            return -1 === this.getAvailableLangsIds().indexOf(t)
        }
        ,
        t.prototype.isLang = function(t) {
            return -1 !== this.getAvailableLangsIds().indexOf(t)
        }
        ,
        t.prototype._loadDependencies = function(t, e) {
            var n = it(t);
            return this._isLangScoped(t) && !this.isLoadedTranslation(n) ? Object(b.b)(this.load(n), this.load(t, {
                inlineLoader: e
            })) : this.load(t, {
                inlineLoader: e
            })
        }
        ,
        t.prototype._completeScopeWithLang = function(t) {
            return this._isLangScoped(t) && !this.isLang(it(t)) ? t + "/" + this.getActiveLang() : t
        }
        ,
        t.prototype._setScopeAlias = function(t, e) {
            this.mergedConfig.scopeMapping || (this.mergedConfig.scopeMapping = {}),
            this.mergedConfig.scopeMapping[t] = e
        }
        ,
        t.prototype.ngOnDestroy = function() {
            this.subscription.unsubscribe()
        }
        ,
        t.prototype.isLoadedTranslation = function(t) {
            return C(this.getTranslation(t))
        }
        ,
        t.prototype.getAvailableLangsIds = function() {
            return O(this.getAvailableLangs()[0]) ? this.getAvailableLangs() : this.getAvailableLangs().map((function(t) {
                return t.id
            }
            ))
        }
        ,
        t.prototype.getMissingHandlerData = function() {
            return Object(p.a)({}, this.config, {
                activeLang: this.getActiveLang(),
                availableLangs: this.availableLangs,
                defaultLang: this.defaultLang
            })
        }
        ,
        t.prototype.useFallbackTranslation = function(t) {
            return this.config.missingHandler.useFallbackTranslation && t !== this.firstFallbackLang
        }
        ,
        t.prototype.handleSuccess = function(t, e) {
            var n = this;
            this.setTranslation(e, t, {
                emitChange: !1
            }),
            this.failedCounter = 0,
            this.events.next({
                wasFailure: !!this.failedLangs.size,
                type: "translationLoadSuccess",
                payload: ct(t)
            }),
            this.failedLangs.forEach((function(t) {
                return n.cache.delete(t)
            }
            )),
            this.failedLangs.clear()
        }
        ,
        t.prototype.handleFailure = function(t, e) {
            var n = t.split("/")
              , i = (e.fallbackLangs || this.fallbackStrategy.getNextLangs(t))[this.failedCounter];
            if (this.failedLangs.add(t),
            this.cache.has(i))
                return this.handleSuccess(i, this.getTranslation(i)),
                w.a;
            var r = i === n[n.length - 1];
            if (!i || r) {
                var o = "Unable to load translation and all the fallback languages";
                throw n.length > 1 && (o += ", did you misspelled the scope name?"),
                new Error(o)
            }
            var a = i;
            return n.length > 1 && (n[n.length - 1] = i,
            a = n.join("/")),
            this.failedCounter++,
            this.events.next({
                type: "translationLoadFailure",
                payload: ct(t)
            }),
            this.load(a)
        }
        ,
        t.prototype.getMappedScope = function(t) {
            var e = this.config.scopeMapping;
            return (void 0 === e ? {} : e)[t] || k(t)
        }
        ,
        t.prototype.resolveLangAndScope = function(t) {
            var e, n = t;
            if (this._isLangScoped(t)) {
                var i = it(t)
                  , r = this.isLang(i);
                n = r ? i : this.getActiveLang(),
                e = this.getMappedScope(r ? nt(t) : t)
            }
            return {
                scope: e,
                resolveLang: n
            }
        }
        ,
        t.prototype.getObjectByKey = function(t, e) {
            var n = {}
              , i = e + ".";
            for (var r in t)
                r.startsWith(i) && (n[r.replace(i, "")] = t[r]);
            return n
        }
        ,
        t.prototype.getEntries = function(t) {
            return t instanceof Map ? t.entries() : Object.entries(t)
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: void 0,
                decorators: [{
                    type: h.Optional
                }, {
                    type: h.Inject,
                    args: [x]
                }]
            }, {
                type: void 0,
                decorators: [{
                    type: h.Inject,
                    args: [B]
                }]
            }, {
                type: void 0,
                decorators: [{
                    type: h.Inject,
                    args: [Z]
                }]
            }, {
                type: void 0,
                decorators: [{
                    type: h.Inject,
                    args: [Q]
                }]
            }, {
                type: void 0,
                decorators: [{
                    type: h.Inject,
                    args: [W]
                }]
            }, {
                type: void 0,
                decorators: [{
                    type: h.Inject,
                    args: [tt]
                }]
            }]
        }
        ,
        t.ngInjectableDef = Object(h.defineInjectable)({
            factory: function() {
                return new t(Object(h.inject)(x, 8),Object(h.inject)(B),Object(h.inject)(Z),Object(h.inject)(Q),Object(h.inject)(W),Object(h.inject)(tt))
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)(h["ɵɵinject"](x, 8),h["ɵɵinject"](B),h["ɵɵinject"](Z),h["ɵɵinject"](Q),h["ɵɵinject"](W),h["ɵɵinject"](tt))
        }
        ,
        t.ɵprov = h["ɵɵdefineInjectable"]({
            token: t,
            factory: function(e) {
                return t.ɵfac(e)
            },
            providedIn: "root"
        }),
        t
    }()
      , pt = function() {
        function t() {}
        return t.propDecorators = {
            html: [{
                type: h.Input
            }]
        },
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵcmp = h["ɵɵdefineComponent"]({
            type: t,
            selectors: [["ng-component"]],
            inputs: {
                html: "html"
            },
            decls: 1,
            vars: 1,
            consts: [[1, "transloco-loader-template", 3, "innerHTML"]],
            template: function(t, e) {
                1 & t && h["ɵɵelement"](0, "div", 0),
                2 & t && h["ɵɵproperty"]("innerHTML", e.html, h["ɵɵsanitizeHtml"])
            },
            encapsulation: 2
        }),
        t
    }()
      , ht = function() {
        function t(t, e) {
            this.view = t,
            this.vcr = e,
            this.injector = this.vcr.injector
        }
        return t.prototype.attachView = function() {
            if (this.view instanceof h.TemplateRef)
                this.vcr.createEmbeddedView(this.view);
            else if (O(this.view)) {
                var t = this.createComponent(pt);
                t.instance.html = this.view,
                t.hostView.detectChanges()
            } else
                this.createComponent(this.view)
        }
        ,
        t.prototype.detachView = function() {
            this.vcr.clear()
        }
        ,
        t.prototype.createComponent = function(t) {
            var e = this.injector.get(h.ComponentFactoryResolver).resolveComponentFactory(t);
            return this.vcr.createComponent(e)
        }
        ,
        t
    }()
      , ft = new h.InjectionToken("TRANSLOCO_LANG")
      , mt = new h.InjectionToken("TRANSLOCO_LOADING_TEMPLATE")
      , gt = new h.InjectionToken("TRANSLOCO_SCOPE")
      , vt = function() {
        function t() {
            this.initialized = !1
        }
        return t.prototype.resolve = function(t) {
            var e = void 0 === t ? {
                inline: void 0,
                provider: void 0,
                active: void 0
            } : t
              , n = e.inline
              , i = e.provider
              , r = e.active
              , o = r;
            if (this.initialized)
                return o = r;
            if (i) {
                var a = Object(p.f)(rt(i, "static"), 2);
                a[0];
                o = a[1]
            }
            if (n) {
                var s = Object(p.f)(rt(n, "static"), 2);
                s[0];
                o = s[1]
            }
            return this.initialized = !0,
            o
        }
        ,
        t.prototype.resolveLangBasedOnScope = function(t) {
            return nt(t) ? it(t) : t
        }
        ,
        t.prototype.resolveLangPath = function(t, e) {
            return e ? e + "/" + t : t
        }
        ,
        t
    }()
      , yt = function() {
        function t(t) {
            this.translocoService = t
        }
        return t.prototype.resolve = function(t) {
            var e = void 0 === t ? {
                inline: void 0,
                provider: void 0
            } : t
              , n = e.inline
              , i = e.provider;
            if (n)
                return n;
            if (i) {
                if (j(i)) {
                    var r = i
                      , o = r.scope
                      , a = r.alias
                      , s = void 0 === a ? k(o) : a;
                    return this.translocoService._setScopeAlias(o, s),
                    o
                }
                return i
            }
        }
        ,
        t
    }()
      , bt = function() {
        function t(t, e, n, i, r, o, a, s) {
            this.translocoService = t,
            this.tpl = e,
            this.providerScope = n,
            this.providerLang = i,
            this.providedLoadingTpl = r,
            this.vcr = o,
            this.cdr = a,
            this.host = s,
            this.translationMemo = {},
            this.params = {},
            this.loaderTplHandler = null,
            this.initialized = !1,
            this.langResolver = new vt,
            this.scopeResolver = new yt(this.translocoService)
        }
        return t.prototype.ngOnInit = function() {
            var t = this
              , e = ot(this.translocoService, this.providerLang || this.inlineLang);
            this.subscription = this.translocoService.langChanges$.pipe(Object(d.a)((function(e) {
                var n = t.langResolver.resolve({
                    inline: t.inlineLang,
                    provider: t.providerLang,
                    active: e
                });
                return Array.isArray(t.providerScope) ? Object(y.a)(t.providerScope.map((function(e) {
                    return t.resolveScope(n, e)
                }
                ))) : t.resolveScope(n, t.providerScope)
            }
            )), at(e)).subscribe((function() {
                t.currentLang = t.langResolver.resolveLangBasedOnScope(t.path),
                null === t.tpl ? t.simpleStrategy() : t.structuralStrategy(t.currentLang, t.inlineRead),
                t.cdr.markForCheck(),
                t.initialized = !0
            }
            ));
            var n = this.getLoadingTpl();
            !this.initialized && n && (this.loaderTplHandler = new ht(n,this.vcr),
            this.loaderTplHandler.attachView())
        }
        ,
        t.prototype.ngOnChanges = function(t) {
            Object.keys(t).some((function(e) {
                return !1 === t[e].firstChange
            }
            )) && this.simpleStrategy()
        }
        ,
        t.prototype.simpleStrategy = function() {
            this.detachLoader(),
            this.host.nativeElement.innerText = this.translocoService.translate(this.key, this.params, this.currentLang)
        }
        ,
        t.prototype.structuralStrategy = function(t, e) {
            this.translationMemo = {},
            this.view ? this.view.context.$implicit = this.getTranslateFn(t, e) : (this.detachLoader(),
            this.view = this.vcr.createEmbeddedView(this.tpl, {
                $implicit: this.getTranslateFn(t, e)
            }))
        }
        ,
        t.prototype.getTranslateFn = function(t, e) {
            var n = this;
            return function(i, r) {
                var o = e ? e + "." + i : i
                  , a = r ? "" + o + JSON.stringify(r) : o;
                return n.translationMemo.hasOwnProperty(a) || (n.translationMemo[a] = {
                    params: r,
                    value: n.translocoService.translate(o, r, t)
                }),
                n.translationMemo[a].value
            }
        }
        ,
        t.prototype.getLoadingTpl = function() {
            return this.inlineTpl || this.providedLoadingTpl
        }
        ,
        t.prototype.ngOnDestroy = function() {
            this.subscription && this.subscription.unsubscribe()
        }
        ,
        t.prototype.detachLoader = function() {
            this.loaderTplHandler && this.loaderTplHandler.detachView()
        }
        ,
        t.prototype.resolveScope = function(t, e) {
            var n = this.scopeResolver.resolve({
                inline: this.inlineScope,
                provider: e
            });
            this.path = this.langResolver.resolveLangPath(t, n);
            var i = st(e, n);
            return this.translocoService._loadDependencies(this.path, i)
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: dt
            }, {
                type: h.TemplateRef,
                decorators: [{
                    type: h.Optional
                }]
            }, {
                type: void 0,
                decorators: [{
                    type: h.Optional
                }, {
                    type: h.Inject,
                    args: [gt]
                }]
            }, {
                type: void 0,
                decorators: [{
                    type: h.Optional
                }, {
                    type: h.Inject,
                    args: [ft]
                }]
            }, {
                type: void 0,
                decorators: [{
                    type: h.Optional
                }, {
                    type: h.Inject,
                    args: [mt]
                }]
            }, {
                type: h.ViewContainerRef
            }, {
                type: h.ChangeDetectorRef
            }, {
                type: h.ElementRef
            }]
        }
        ,
        t.propDecorators = {
            key: [{
                type: h.Input,
                args: ["transloco"]
            }],
            params: [{
                type: h.Input,
                args: ["translocoParams"]
            }],
            inlineScope: [{
                type: h.Input,
                args: ["translocoScope"]
            }],
            inlineRead: [{
                type: h.Input,
                args: ["translocoRead"]
            }],
            inlineLang: [{
                type: h.Input,
                args: ["translocoLang"]
            }],
            inlineTpl: [{
                type: h.Input,
                args: ["translocoLoadingTpl"]
            }]
        },
        t.ɵfac = function(e) {
            return new (e || t)(h["ɵɵdirectiveInject"](dt),h["ɵɵdirectiveInject"](h.TemplateRef, 8),h["ɵɵdirectiveInject"](gt, 8),h["ɵɵdirectiveInject"](ft, 8),h["ɵɵdirectiveInject"](mt, 8),h["ɵɵdirectiveInject"](h.ViewContainerRef),h["ɵɵdirectiveInject"](h.ChangeDetectorRef),h["ɵɵdirectiveInject"](h.ElementRef))
        }
        ,
        t.ɵdir = h["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "transloco", ""]],
            inputs: {
                params: ["translocoParams", "params"],
                key: ["transloco", "key"],
                inlineScope: ["translocoScope", "inlineScope"],
                inlineRead: ["translocoRead", "inlineRead"],
                inlineLang: ["translocoLang", "inlineLang"],
                inlineTpl: ["translocoLoadingTpl", "inlineTpl"]
            },
            features: [h["ɵɵNgOnChangesFeature"]]
        }),
        t
    }()
      , wt = function() {
        function t(t, e, n, i) {
            this.translocoService = t,
            this.providerScope = e,
            this.providerLang = n,
            this.cdr = i,
            this.subscription = null,
            this.lastValue = "",
            this.langResolver = new vt,
            this.scopeResolver = new yt(this.translocoService),
            this.listenToLangChange = ot(this.translocoService, this.providerLang)
        }
        return t.prototype.transform = function(t, e, n) {
            var i = this;
            if (!t)
                return t;
            var r = e ? "" + t + JSON.stringify(e) : t;
            return r === this.lastKey || (this.lastKey = r,
            this.subscription && this.subscription.unsubscribe(),
            this.subscription = this.translocoService.langChanges$.pipe(Object(d.a)((function(t) {
                var e = i.langResolver.resolve({
                    inline: n,
                    provider: i.providerLang,
                    active: t
                });
                return Array.isArray(i.providerScope) ? Object(y.a)(i.providerScope.map((function(t) {
                    return i.resolveScope(e, t)
                }
                ))) : i.resolveScope(e, i.providerScope)
            }
            )), at(this.listenToLangChange)).subscribe((function() {
                return i.updateValue(t, e)
            }
            ))),
            this.lastValue
        }
        ,
        t.prototype.ngOnDestroy = function() {
            this.subscription && this.subscription.unsubscribe()
        }
        ,
        t.prototype.updateValue = function(t, e) {
            var n = this.langResolver.resolveLangBasedOnScope(this.path);
            this.lastValue = this.translocoService.translate(t, e, n),
            this.cdr.markForCheck()
        }
        ,
        t.prototype.resolveScope = function(t, e) {
            var n = this.scopeResolver.resolve({
                inline: void 0,
                provider: e
            });
            this.path = this.langResolver.resolveLangPath(t, n);
            var i = st(e, n);
            return this.translocoService._loadDependencies(this.path, i)
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: dt
            }, {
                type: void 0,
                decorators: [{
                    type: h.Optional
                }, {
                    type: h.Inject,
                    args: [gt]
                }]
            }, {
                type: void 0,
                decorators: [{
                    type: h.Optional
                }, {
                    type: h.Inject,
                    args: [ft]
                }]
            }, {
                type: h.ChangeDetectorRef
            }]
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(h["ɵɵdirectiveInject"](dt),h["ɵɵdirectiveInject"](gt, 8),h["ɵɵdirectiveInject"](ft, 8),h["ɵɵinjectPipeChangeDetectorRef"]())
        }
        ,
        t.ɵpipe = h["ɵɵdefinePipe"]({
            name: "transloco",
            type: t,
            pure: !1
        }),
        t
    }()
      , St = [{
        provide: B,
        useClass: z
    }, {
        provide: Z,
        useClass: J
    }, {
        provide: Q,
        useClass: $
    }, {
        provide: tt,
        useClass: et,
        deps: [W]
    }]
      , xt = function() {
        function t() {}
        return t.ɵmod = h["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = h["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            },
            providers: [St]
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && h["ɵɵsetNgModuleScope"](t, {
            declarations: [bt, wt, pt],
            exports: [bt, wt]
        }),
        t
    }()
      , Mt = function() {
        function t(t) {
            this.langs = t
        }
        return t.prototype.getTranslation = function(t) {
            return Object(f.a)(this.langs[t])
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: void 0,
                decorators: [{
                    type: h.Inject,
                    args: ["translocoLangs"]
                }]
            }]
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(h["ɵɵinject"]("translocoLangs"))
        }
        ,
        t.ɵprov = h["ɵɵdefineInjectable"]({
            token: t,
            factory: function(e) {
                return t.ɵfac(e)
            }
        }),
        t
    }()
      , Et = function() {
        function t() {}
        return t.withLangs = function(e, n) {
            return void 0 === n && (n = {}),
            {
                ngModule: t,
                providers: [{
                    provide: "translocoLangs",
                    useValue: e
                }, {
                    provide: x,
                    useClass: Mt
                }, St, {
                    provide: W,
                    useValue: Y(Object(p.a)({
                        prodMode: !0,
                        missingHandler: {
                            logMissingKey: !1
                        }
                    }, n))
                }]
            }
        }
        ,
        t.ɵmod = h["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = h["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            },
            imports: [xt]
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && h["ɵɵsetNgModuleScope"](t, {
            exports: [xt]
        }),
        t
    }();
    function Ct() {
        var t = At();
        if (!1 !== D() && t)
            return -1 !== t.indexOf("-") && (t = t.split("-")[0]),
            -1 !== t.indexOf("_") && (t = t.split("_")[0]),
            t
    }
    function At() {
        if (!1 !== D()) {
            var t = window.navigator
              , e = t.languages ? t.languages[0] : null;
            return e = e || t.language || t.browserLanguage || t.userLanguage
        }
    }
}
, , function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return u
    }
    )),
    n.d(e, "b", (function() {
        return l
    }
    )),
    n.d(e, "c", (function() {
        return d
    }
    ));
    var i = n(23)
      , r = n(0)
      , o = n(12)
      , a = n(32)
      , s = n(623)
      , c = function() {
        function t() {}
        return t.prototype.create = function(t) {
            return "undefined" == typeof MutationObserver ? null : new MutationObserver(t)
        }
        ,
        t.ɵprov = Object(r["ɵɵdefineInjectable"])({
            factory: function() {
                return new t
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t
    }()
      , l = function() {
        function t(t) {
            this._mutationObserverFactory = t,
            this._observedElements = new Map
        }
        return t.prototype.ngOnDestroy = function() {
            var t = this;
            this._observedElements.forEach((function(e, n) {
                return t._cleanupObserver(n)
            }
            ))
        }
        ,
        t.prototype.observe = function(t) {
            var e = this
              , n = Object(i.e)(t);
            return new o.a((function(t) {
                var i = e._observeElement(n).subscribe(t);
                return function() {
                    i.unsubscribe(),
                    e._unobserveElement(n)
                }
            }
            ))
        }
        ,
        t.prototype._observeElement = function(t) {
            if (this._observedElements.has(t))
                this._observedElements.get(t).count++;
            else {
                var e = new a.a
                  , n = this._mutationObserverFactory.create((function(t) {
                    return e.next(t)
                }
                ));
                n && n.observe(t, {
                    characterData: !0,
                    childList: !0,
                    subtree: !0
                }),
                this._observedElements.set(t, {
                    observer: n,
                    stream: e,
                    count: 1
                })
            }
            return this._observedElements.get(t).stream
        }
        ,
        t.prototype._unobserveElement = function(t) {
            this._observedElements.has(t) && (this._observedElements.get(t).count--,
            this._observedElements.get(t).count || this._cleanupObserver(t))
        }
        ,
        t.prototype._cleanupObserver = function(t) {
            if (this._observedElements.has(t)) {
                var e = this._observedElements.get(t)
                  , n = e.observer
                  , i = e.stream;
                n && n.disconnect(),
                i.complete(),
                this._observedElements.delete(t)
            }
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: c
            }]
        }
        ,
        t.ɵprov = Object(r["ɵɵdefineInjectable"])({
            factory: function() {
                return new t(Object(r["ɵɵinject"])(c))
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)(r["ɵɵinject"](c))
        }
        ,
        t
    }()
      , u = function() {
        function t(t, e, n) {
            this._contentObserver = t,
            this._elementRef = e,
            this._ngZone = n,
            this.event = new r.EventEmitter,
            this._disabled = !1,
            this._currentSubscription = null
        }
        return Object.defineProperty(t.prototype, "disabled", {
            get: function() {
                return this._disabled
            },
            set: function(t) {
                this._disabled = Object(i.c)(t),
                this._disabled ? this._unsubscribe() : this._subscribe()
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "debounce", {
            get: function() {
                return this._debounce
            },
            set: function(t) {
                this._debounce = Object(i.f)(t),
                this._subscribe()
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.ngAfterContentInit = function() {
            this._currentSubscription || this.disabled || this._subscribe()
        }
        ,
        t.prototype.ngOnDestroy = function() {
            this._unsubscribe()
        }
        ,
        t.prototype._subscribe = function() {
            var t = this;
            this._unsubscribe();
            var e = this._contentObserver.observe(this._elementRef);
            this._ngZone.runOutsideAngular((function() {
                t._currentSubscription = (t.debounce ? e.pipe(Object(s.a)(t.debounce)) : e).subscribe(t.event)
            }
            ))
        }
        ,
        t.prototype._unsubscribe = function() {
            this._currentSubscription && this._currentSubscription.unsubscribe()
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: l
            }, {
                type: r.ElementRef
            }, {
                type: r.NgZone
            }]
        }
        ,
        t.propDecorators = {
            event: [{
                type: r.Output,
                args: ["cdkObserveContent"]
            }],
            disabled: [{
                type: r.Input,
                args: ["cdkObserveContentDisabled"]
            }],
            debounce: [{
                type: r.Input
            }]
        },
        t.ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](l),r["ɵɵdirectiveInject"](r.ElementRef),r["ɵɵdirectiveInject"](r.NgZone))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "cdkObserveContent", ""]],
            inputs: {
                disabled: ["cdkObserveContentDisabled", "disabled"],
                debounce: "debounce"
            },
            outputs: {
                event: "cdkObserveContent"
            },
            exportAs: ["cdkObserveContent"]
        }),
        t
    }()
      , d = function() {
        function t() {}
        return t.ɵmod = r["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = r["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            },
            providers: [c]
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && r["ɵɵsetNgModuleScope"](t, {
            declarations: [u],
            exports: [u]
        }),
        t
    }()
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , r = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
      , o = this && this.__spreadArrays || function() {
        for (var t = 0, e = 0, n = arguments.length; e < n; e++)
            t += arguments[e].length;
        var i = Array(t)
          , r = 0;
        for (e = 0; e < n; e++)
            for (var o = arguments[e], a = 0, s = o.length; a < s; a++,
            r++)
                i[r] = o[a];
        return i
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var a = n(2)
      , s = n(6)
      , c = n(0)
      , l = n(4)
      , u = n(575)
      , d = n(16)
      , p = n(85)
      , h = (n(22),
    n(55))
      , f = n(7)
      , m = (n(28),
    n(17),
    n(146))
      , g = n(52)
      , v = n(576)
      , y = (n(65),
    n(66),
    n(217))
      , b = (n(281),
    n(144))
      , w = (n(27),
    n(130),
    n(41),
    n(168))
      , S = (n(121),
    n(21),
    n(1223))
      , x = n(1224)
      , M = (n(90),
    n(31),
    n(8))
      , E = n(253)
      , C = n(557)
      , A = (n(73),
    n(14))
      , T = n(1225)
      , O = n(7)
      , _ = (n(49),
    n(558))
      , P = n(1226)
      , I = n(1227)
      , k = n(0)
      , D = n(22)
      , R = n(28)
      , L = n(65)
      , N = n(17)
      , j = n(66)
      , V = n(281)
      , F = n(27)
      , U = n(41)
      , B = n(121)
      , z = n(90)
      , G = n(21)
      , H = n(31)
      , W = n(49)
      , q = n(130)
      , X = n(73)
      , Y = function() {
        function t(t, e, n, i, r, o, a, s, c, l, u, p, h, f, m, g, v) {
            var y = this;
            this.SiteModelRepository = t,
            this.FloorChangerService = e,
            this.ViewMenuService = n,
            this.ViewService = i,
            this.PointCloudMenuService = r,
            this.TransformService = o,
            this.IV = a,
            this.MeasurementRepository = s,
            this.UserService = c,
            this.ErrorService = l,
            this.MagnificationService = u,
            this.ImageRepository = p,
            this.TrackingService = h,
            this.DatasetRepository = f,
            this.ImageService = m,
            this.UoMService = g,
            this.UrlService = v,
            this.DATASET_INCLUSION_RADIUS_FOR_SCREENSHOT = 10,
            this.MEASUREMENT_LOCATION_SEARCH_RADIUS = .01,
            this.onEmbeddedMeasurementParsed = new d.Signal,
            this.onMeasurementHovered = new d.Signal,
            this.onMeasurementPointClicked = new d.Signal,
            this.onMeasurementPointHovered = new d.Signal,
            this.measurementsUpdated = new d.Signal,
            this.measurementDeleted = new d.Signal,
            this.measurementModeExiting = new d.Signal,
            this.measurementToolSelectionChanged = new d.Signal,
            this.areaMeasurementPoints = [],
            this.measurements = [],
            this.errorHandler = this.ErrorService.createDefaultWrapper(),
            this.onEmbeddedMeasurementParsed.connect((function(t) {
                return y.loadEmbeddedMeasurement(t)
            }
            )),
            this.TransformService.onBeforeLocalReferenceSystemChange.connect((function() {
                y.measurements.forEach((function(t) {
                    return t.onBeforeReferenceSystemChangedEvent()
                }
                )),
                y.updateMeasurementMode(void 0)
            }
            )),
            this.TransformService.onAfterLocalReferenceSystemChange.connect((function() {
                y.measurements.forEach((function(t) {
                    return t.onReferenceSystemChangedEvent()
                }
                )),
                y.measurementsUpdated.emit(!0)
            }
            ))
        }
        return t.prototype.setMeasurementHovered = function(t, e) {
            this.measurements.forEach((function(n) {
                return n.isHovered = e && n === t
            }
            )),
            t.visible && this.onMeasurementHovered.emit()
        }
        ,
        t.prototype.takeScreenshot = function(t) {
            return i(this, void 0, void 0, (function() {
                var e, n, i, o, a, s, c, l, u;
                return r(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        e = [],
                        n = this.ViewService.mainView,
                        i = n.getCurrentViewState(),
                        n.enableScreenshotMode(),
                        o = this.PointCloudMenuService.config.showPointCloud,
                        a = n.renderer.domElement,
                        s = 0,
                        c = t,
                        r.label = 1;
                    case 1:
                        return s < c.length ? (l = c[s],
                        u = (new Date).getTime(),
                        [4, this.prepareViewForScreenshot(l)]) : [3, 4];
                    case 2:
                        r.sent(),
                        e.push({
                            data: a.toDataURL("image/jpeg"),
                            height: a.clientHeight,
                            width: a.clientWidth
                        }),
                        this.trackGtmSingleMeasurementsShareEvent(u),
                        r.label = 3;
                    case 3:
                        return s++,
                        [3, 1];
                    case 4:
                        return o && !this.PointCloudMenuService.config.showPointCloud ? (this.PointCloudMenuService.config.showPointCloud = !0,
                        this.ViewMenuService.config.showPanoramas = !1) : !o && this.PointCloudMenuService.config.showPointCloud && (this.PointCloudMenuService.config.showPointCloud = !1,
                        this.ViewMenuService.config.showPanoramas = !0),
                        o && (i.image = void 0),
                        [4, n.setCurrentViewState(i)];
                    case 5:
                        return r.sent(),
                        n.disableScreenshotMode(),
                        t.forEach((function(t) {
                            return t.object.setHovered(!1)
                        }
                        )),
                        [2, e]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.trackGtmSingleMeasurementsShareEvent = function(t) {
            var e = new P.SingleMeasurementScreenshotRenderingTime
              , n = (((new Date).getTime() - t) / 1e3).toFixed(1);
            e.elapsedTime(n),
            this.setEventUiDetails(e),
            this.setEventViewMode(e),
            this.TrackingService.trackPreDefinedEvent(e)
        }
        ,
        t.prototype.trackGtmAllShareMeasurementsElapsedTimeEvent = function(t) {
            var e = new I.AllMeasurementsScreenshotsRenderingEvent
              , n = (((new Date).getTime() - t) / 1e3).toFixed(1);
            e.elapsedTime(n),
            this.TrackingService.trackPreDefinedEvent(e)
        }
        ,
        t.prototype.setEventViewMode = function(t) {
            this.PointCloudMenuService.config.showPointCloud ? t.fromPointCoud() : t.fromPanorama()
        }
        ,
        t.prototype.setEventUiDetails = function(t) {
            var e = this.ViewService.mainView.getViewportByName(g.SplitViewportName.TOP_VIEW).width;
            1 === e ? t.fullMapUI() : .5 === e && t.splitUI()
        }
        ,
        Object.defineProperty(t.prototype, "unsavedMeasurements", {
            get: function() {
                return this.measurements.filter((function(t) {
                    return !t.isSaved()
                }
                ))
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.lastMeasurementPoint = function() {
            return this.lastDistanceMeasurementPoint ? this.lastDistanceMeasurementPoint : this.areaMeasurementPoints.length > 0 ? this.areaMeasurementPoints[this.areaMeasurementPoints.length - 1] : void 0
        }
        ,
        t.prototype.updateMeasurementMode = function(t, e) {
            void 0 === e && (e = !1),
            this.removeCurrentMeasurement(e),
            this.currentMeasurementMode === t || void 0 === t ? (this.currentMeasurementMode = void 0,
            this.ViewMenuService.showLocationMarkers(!0)) : (this.currentMeasurementMode = t,
            this.ViewMenuService.showLocationMarkers(!1)),
            this.measurementToolSelectionChanged.emit(t)
        }
        ,
        t.prototype.removeCurrentMeasurement = function(t) {
            void 0 === t && (t = !1),
            (this.lastDistanceMeasurementPoint || 0 !== this.areaMeasurementPoints.length) && (t || (this.sessionMetrics.discardMeasurements(),
            this.TrackingService.trackPreDefinedEvent((new S.MeasurementCanceledEvent).withTool(this.currentMeasurementMode).numberOfPoints(Math.max(1, this.areaMeasurementPoints.length)).withMagnifyingGlass(this.MagnificationService.isEnabled))),
            this.lastDistanceMeasurementPoint = void 0,
            this.areaMeasurementPoints = [])
        }
        ,
        t.prototype.addLastMeasurementPoint = function(t, e, n) {
            return i(this, void 0, void 0, (function() {
                var i, o;
                return r(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        return e.name !== g.SplitViewportName.TOP_VIEW || n ? [3, 4] : (o = this.lastMeasurementPoint()) ? ((i = t.clone()).z = o.z,
                        [3, 3]) : [3, 1];
                    case 1:
                        return [4, this.getMeasurementPosition(t)];
                    case 2:
                        i = r.sent(),
                        r.label = 3;
                    case 3:
                        return [3, 5];
                    case 4:
                        i = t,
                        r.label = 5;
                    case 5:
                        return p.ToolSpec.of(this.currentMeasurementMode).type === p.ToolType.AREA ? this.areaMeasurementPoints.push(i) : this.lastDistanceMeasurementPoint = i,
                        [2]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.endMeasurement = function(t, e) {
            var n;
            if (void 0 === e && (e = !0),
            t instanceof m.AreaMeasurementObject3D)
                n = new v.AreaMeasurement({
                    TransformService: this.TransformService,
                    UoMService: this.UoMService
                },t,this.currentMeasurementMode,w.translate("Area"));
            else {
                if (!(t instanceof y.DistanceMeasurementObject3D))
                    throw Error("Unknown measurement type");
                n = new u.DistanceMeasurement({
                    TransformService: this.TransformService,
                    UoMService: this.UoMService
                },t,this.currentMeasurementMode,w.translate("Distance"))
            }
            this.measurements.unshift(n),
            this.measurementsUpdated.emit(!1),
            e && this.TrackingService.trackPreDefinedEvent((new x.MeasurementCompletedEvent).withTool(this.currentMeasurementMode).withSize(n.value).numberOfPoints(n.getPoints().length).withMagnifyingGlass(this.MagnificationService.isEnabled)),
            this.updateMeasurementMode(void 0, !0)
        }
        ,
        t.prototype.deleteMeasurements = function(t) {
            return i(this, void 0, void 0, (function() {
                var e;
                return r(this, (function(n) {
                    switch (n.label) {
                    case 0:
                        return this.deleteLocalMeasurements(t),
                        e = Promise.all(this.createDeletePromisesForSavedMeasurements(t)),
                        [4, this.errorHandler.wrap(e)];
                    case 1:
                        return n.sent(),
                        this.sessionMetrics.discardMeasurements(t.length),
                        this.measurementsUpdated.emit(!1),
                        this.measurementDeleted.emit(),
                        [2]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.prepareViewForScreenshot = function(e) {
            return i(this, void 0, void 0, (function() {
                var n, i, o, a, s;
                return r(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        return n = e.getPointOfView(),
                        i = this.ViewService.mainView,
                        this.measurements.forEach((function(t) {
                            return t.object.visible = t === e
                        }
                        )),
                        e.object.setHovered(!0),
                        n ? [3, 2] : (this.PointCloudMenuService.config.showPointCloud = !1,
                        i.getMapLayer().targetViewport.cameraController.centerOn(e.object.getCenterLocation()),
                        i.setTopViewFullscreen(),
                        i.fitMapToBounds((new l.Box3).setFromPoints(e.getPoints())),
                        [4, i.updateFloorPlansForScreenshot(e.object.getCenterLocation())]);
                    case 1:
                        return r.sent(),
                        [2];
                    case 2:
                        return i.setTopAndPerspectiveSplit(),
                        o = this.TransformService.globalToLocal.transform(n.location.clone()),
                        n.imageId ? [4, this.ImageRepository.findOne(n.imageId, !1)] : [3, 4];
                    case 3:
                        return s = r.sent(),
                        [3, 5];
                    case 4:
                        s = void 0,
                        r.label = 5;
                    case 5:
                        return (a = s) && this.PointCloudMenuService.config.showPointCloud ? (this.PointCloudMenuService.config.showPointCloud = !1,
                        this.ViewMenuService.config.showPanoramas = !0) : a || this.PointCloudMenuService.config.showPointCloud || (this.PointCloudMenuService.config.showPointCloud = !0,
                        this.ViewMenuService.config.showPanoramas = !1),
                        this.PointCloudMenuService.config.showPointCloud && this.enableDatasets(e.getPoints()),
                        [4, i.setCurrentViewState({
                            location: a ? a.location : o,
                            orientation: e.calculateViewOrientation(o),
                            imageId: n.imageId,
                            image: a,
                            fov: t.MAX_FOV,
                            mapBoundingBox: (new l.Box3).setFromPoints(e.getPoints())
                        })];
                    case 6:
                        return r.sent(),
                        [2]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.enableDatasets = function(t) {
            var e = this;
            this.DatasetRepository.data.forEach((function(n) {
                return n.pointCloudVisible = void 0 !== t.find((function(t) {
                    return n.distanceToBoundingBox(t) < e.DATASET_INCLUSION_RADIUS_FOR_SCREENSHOT
                }
                ))
            }
            ))
        }
        ,
        t.prototype.deleteLocalMeasurements = function(t) {
            this.measurements = this.measurements.filter((function(e) {
                return -1 === t.indexOf(e)
            }
            )),
            t.forEach((function(t) {
                return t.disposeObject()
            }
            ))
        }
        ,
        t.prototype.createDeletePromisesForSavedMeasurements = function(t) {
            var e = this;
            return t.filter((function(t) {
                return e.UserService.canSaveMeasurements() && t.id
            }
            )).map((function(t) {
                return e.MeasurementRepository.remove(t)
            }
            ))
        }
        ,
        t.prototype.saveMeasurements = function(t) {
            return i(this, void 0, void 0, (function() {
                var e;
                return r(this, (function(n) {
                    switch (n.label) {
                    case 0:
                        return [4, this.errorHandler.wrap(this.MeasurementRepository.save(t))];
                    case 1:
                        return e = n.sent(),
                        this.updateStaleMeasurements(t, e),
                        this.sessionMetrics.saveMeasurements(e.length),
                        [2]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.updateStaleMeasurements = function(t, e) {
            var n, i;
            if (e) {
                var r = null === (i = t[0]) || void 0 === i ? void 0 : i.selected;
                this.measurements = this.measurements.filter((function(e) {
                    return -1 === t.indexOf(e)
                }
                )),
                e.forEach((function(t) {
                    return t.selected = r
                }
                )),
                (n = this.measurements).push.apply(n, e),
                this.sortMeasurementsByDateDesc(),
                t.forEach((function(t) {
                    return t.disposeObject()
                }
                )),
                this.measurementsUpdated.emit(!1)
            }
        }
        ,
        t.prototype.toggleVisibility = function(t) {
            for (var e = t.filter((function(t) {
                return !0 === t.visible
            }
            )).length, n = 0, i = t; n < i.length; n++) {
                i[n].visible = 0 === e
            }
            this.measurementsUpdated.emit(!1)
        }
        ,
        t.prototype.navigateToMeasurement = function(e) {
            return i(this, void 0, void 0, (function() {
                var n, i, o, a, s, c, l, u, d, p = this;
                return r(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        if (n = e.getPointOfView(),
                        i = e.object.getCenterLocation(),
                        this.ViewService.mainView.mapBoundingBoxPoints = e.getPoints(),
                        i.length() > A.GeoTransformationService.RELOCATE_LOCAL_SYSTEM_THRESHOLD && this.TransformService.setLocalCoordinateSystem(e.getGlobalPoints()[0]),
                        n && (this.PointCloudMenuService.isCloudVisible() || n.imageId))
                            return [3, 2];
                        if (o = Number.MAX_VALUE,
                        a = Number.MIN_VALUE,
                        e.getPoints().map((function(t) {
                            return p.TransformService.localToGlobal.transform(t.clone())
                        }
                        )).forEach((function(t) {
                            a = t.z > a ? t.z : a,
                            o = t.z < o ? t.z : o
                        }
                        )),
                        !(s = O.filter(this.SiteModelRepository.dataMap, (function(t) {
                            return t.type === h.SiteModelType.FLOOR && t.getGlobalZMax() >= o && t.getGlobalZMin() <= a
                        }
                        ))))
                            throw new Error("No floors found to display the measurement!");
                        return [4, this.ImageService.getClosestImage(i, void 0, s)];
                    case 1:
                        return c = r.sent(),
                        l = e.calculateViewOrientation(c.location),
                        [2, this.IV.moveToImage(c, l, void 0, t.MAX_FOV)];
                    case 2:
                        return u = this.TransformService.globalToLocal.transform(n.location.clone()),
                        d = e.calculateViewOrientation(u),
                        n && n.imageId ? [4, this.IV.moveToImageId(n.imageId, d, t.MAX_FOV)] : [3, 4];
                    case 3:
                        return r.sent(),
                        [3, 6];
                    case 4:
                        return n.location ? [4, this.IV.moveToGeoLocation(n.location, !1, d, void 0, t.MAX_FOV, void 0, !0)] : [3, 6];
                    case 5:
                        r.sent(),
                        r.label = 6;
                    case 6:
                        return [2]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.getMeasurementPosition = function(e) {
            return i(this, void 0, void 0, (function() {
                var n, i, o, a;
                return r(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        return [4, this.SiteModelRepository.findWithin(new l.Vector2(e.x,e.y), h.SiteModelType.FLOOR)];
                    case 1:
                        return n = r.sent(),
                        i = f.intersectionWith(n, this.FloorChangerService.currentFloors),
                        (o = i[0]) ? (a = o.zMin + t.DEFAULT_MEASUREMENT_HEIGHT,
                        [2, new l.Vector3(e.x,e.y,a)]) : [2, new l.Vector3(e.x,e.y,this.ViewService.mainView.getDefaultViewport().camera.position.z)]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.loadMeasurementsForCurrentUser = function() {
            return i(this, void 0, void 0, (function() {
                var t;
                return r(this, (function(e) {
                    switch (e.label) {
                    case 0:
                        return t = this,
                        [4, this.MeasurementRepository.findAll()];
                    case 1:
                        return t.measurements = o.apply(void 0, [e.sent()]),
                        this.sortMeasurementsByDateDesc(),
                        this.measurementsUpdated.emit(!1),
                        [2]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.sortMeasurementsByDateDesc = function() {
            this.measurements.sort((function(t, e) {
                return e.createdDate.getTime() - t.createdDate.getTime()
            }
            ))
        }
        ,
        t.prototype.promptOnUnsavedChanges = function() {
            return this.hasUnsavedChanges() && this.UserService.canSaveMeasurements() ? (this.readyToClose = new b.Deferred,
            this.measurementModeExiting.emit(),
            this.readyToClose.promise) : Promise.resolve()
        }
        ,
        t.prototype.hasUnsavedChanges = function() {
            return f.some(this.measurements, (function(t) {
                return !t.isSaved()
            }
            ))
        }
        ,
        t.prototype.loadEmbeddedMeasurement = function(t) {
            var e = this
              , n = _.default.toBuffer(t)
              , i = C.MeasurementsBinarySerializer.importMeasurementsFromByteStream(n);
            0 !== i.length && i.reverse().forEach((function(t, n) {
                e.currentMeasurementMode = t.type;
                var i, r = p.ToolSpec.of(t.type).initializer, o = t.points.map((function(t) {
                    return e.TransformService.globalToLocal.transform(t.clone())
                }
                ));
                switch (p.ToolSpec.of(t.type).type) {
                case p.ToolType.AREA:
                    i = new r(o,e.UoMService);
                    break;
                case p.ToolType.DISTANCE:
                    (i = new r(o[0],e.UoMService)).addPoint(o[1])
                }
                (t.povLocation || t.povImageId) && i.setPointOfView(new E.PointOfView(t.povLocation,void 0,void 0,t.povImageId)),
                e.endMeasurement(i, !1),
                t.name && (e.getLatestMeasurement().name = t.name),
                e.getLatestMeasurement().object.markNotFresh(),
                0 === n && e.navigateToMeasurement(e.getLatestMeasurement()).catch(M.handleWarning)
            }
            ))
        }
        ,
        t.prototype.getLatestMeasurement = function() {
            return this.measurements.length > 0 ? this.measurements[0] : void 0
        }
        ,
        t.prototype.exportMeasurements = function(t) {
            return i(this, void 0, void 0, (function() {
                var e, n, i, o = this;
                return r(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        return [4, Promise.all([this.takeScreenshot(t), this.getReadableMeasurementLocations(t)])];
                    case 1:
                        return e = r.sent(),
                        n = e[0],
                        i = e[1],
                        [2, t.map((function(t, e) {
                            return {
                                screenshot: n[e],
                                measurement: t,
                                url: o.UrlService.generateMeasurementsURL([t]),
                                location: i[e]
                            }
                        }
                        ))]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.getReadableMeasurementLocations = function(t) {
            return i(this, void 0, void 0, (function() {
                var e, n, i, o;
                return r(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        for (e = [],
                        n = 0,
                        i = t; n < i.length; n++)
                            o = i[n],
                            e.push(this.SiteModelRepository.findClosestWithGlobalCoordinates(o.getGlobalPoints()[0], this.MEASUREMENT_LOCATION_SEARCH_RADIUS));
                        return [4, Promise.all(e)];
                    case 1:
                        return [2, r.sent().map((function(t) {
                            var e = t.filter((function(t) {
                                return t.type === h.SiteModelType.BUILDING
                            }
                            ))
                              , n = t.filter((function(t) {
                                return t.type === h.SiteModelType.FLOOR
                            }
                            ))
                              , i = t.filter((function(t) {
                                return t.type === h.SiteModelType.ROOM
                            }
                            ))
                              , r = [];
                            if (r.push.apply(r, i),
                            r.push.apply(r, n),
                            r.push.apply(r, e),
                            0 !== r.length)
                                return new T.SiteModelReadableLocation(r[0])
                        }
                        ))]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.DEFAULT_MEASUREMENT_HEIGHT = 1.5,
        t.MAX_FOV = 150,
        t.ɵfac = function(e) {
            return new (e || t)(k.ɵɵinject(D.SiteModelRepository),k.ɵɵinject(R.FloorChangerService),k.ɵɵinject(L.ViewMenuService),k.ɵɵinject(N.ViewService),k.ɵɵinject("PointCloudMenuService"),k.ɵɵinject(j.TransformService),k.ɵɵinject("IV"),k.ɵɵinject(V.MeasurementRepository),k.ɵɵinject(F.UserService),k.ɵɵinject(U.ErrorService),k.ɵɵinject(B.MagnificationService),k.ɵɵinject(z.ImageRepository),k.ɵɵinject(G.TrackingService),k.ɵɵinject(H.DatasetRepository),k.ɵɵinject(W.ImageService),k.ɵɵinject(q.UoMService),k.ɵɵinject(X.UrlService))
        }
        ,
        t.ɵprov = k.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.MeasurementsService = Y,
    k.ɵsetClassMetadata(Y, [{
        type: c.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: D.SiteModelRepository
        }, {
            type: R.FloorChangerService
        }, {
            type: L.ViewMenuService
        }, {
            type: N.ViewService
        }, {
            type: void 0,
            decorators: [{
                type: c.Inject,
                args: ["PointCloudMenuService"]
            }]
        }, {
            type: j.TransformService
        }, {
            type: void 0,
            decorators: [{
                type: c.Inject,
                args: ["IV"]
            }]
        }, {
            type: V.MeasurementRepository
        }, {
            type: F.UserService
        }, {
            type: U.ErrorService
        }, {
            type: B.MagnificationService
        }, {
            type: z.ImageRepository
        }, {
            type: G.TrackingService
        }, {
            type: H.DatasetRepository
        }, {
            type: W.ImageService
        }, {
            type: q.UoMService
        }, {
            type: X.UrlService
        }]
    }
    ), null),
    a.module("IVWebApp").service("MeasurementsService", s.downgradeInjectable(Y))
}
, function(t, e, n) {
    var i = n(132);
    t.exports = function(t, e, n) {
        if (i(t),
        void 0 === e)
            return t;
        switch (n) {
        case 0:
            return function() {
                return t.call(e)
            }
            ;
        case 1:
            return function(n) {
                return t.call(e, n)
            }
            ;
        case 2:
            return function(n, i) {
                return t.call(e, n, i)
            }
            ;
        case 3:
            return function(n, i, r) {
                return t.call(e, n, i, r)
            }
        }
        return function() {
            return t.apply(e, arguments)
        }
    }
}
, function(t, e) {
    t.exports = function(t, e) {
        return {
            enumerable: !(1 & t),
            configurable: !(2 & t),
            writable: !(4 & t),
            value: e
        }
    }
}
, function(t, e, n) {
    var i = n(45)
      , r = n(160)
      , o = n(48)
      , a = i("unscopables")
      , s = Array.prototype;
    null == s[a] && o.f(s, a, {
        configurable: !0,
        value: r(null)
    }),
    t.exports = function(t) {
        s[a][t] = !0
    }
}
, function(t, e, n) {
    var i = n(122)
      , r = Math.max
      , o = Math.min;
    t.exports = function(t, e) {
        var n = i(t);
        return n < 0 ? r(n + e, 0) : o(n, e)
    }
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return r
    }
    ));
    var i = n(1)
      , r = function(t) {
        function e(e, n, i) {
            var r = t.call(this) || this;
            return r.parent = e,
            r.outerValue = n,
            r.outerIndex = i,
            r.index = 0,
            r
        }
        return i.c(e, t),
        e.prototype._next = function(t) {
            this.parent.notifyNext(this.outerValue, t, this.outerIndex, this.index++, this)
        }
        ,
        e.prototype._error = function(t) {
            this.parent.notifyError(t, this),
            this.unsubscribe()
        }
        ,
        e.prototype._complete = function() {
            this.parent.notifyComplete(this),
            this.unsubscribe()
        }
        ,
        e
    }(n(26).a)
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(7)
      , o = n(16);
    n(196),
    n(123);
    n(196),
    n(123);
    var a = n(135)
      , s = (n(15),
    n(25))
      , c = (n(36),
    n(144))
      , l = n(6)
      , u = n(0)
      , d = n(0)
      , p = n(196)
      , h = n(123)
      , f = n(15)
      , m = n(36)
      , g = function() {
        function t(t, e, n, i) {
            var r = this;
            this.PoiTypeGroupRepository = t,
            this.PoiTypeRepository = e,
            this.ConfigService = n,
            this.AuthenticationService = i,
            this.poiTypesChanged = new o.Signal,
            this.initializeDeferred = new c.Deferred,
            this.initialized = this.initializeDeferred.promise,
            i.onAuthenticationChanged.connect((function() {
                return r.initialize()
            }
            )),
            a.EntityRelationMapper.manyToOne(this.PoiTypeRepository, "poiTypeGroup", "poiTypeGroupId", this.PoiTypeGroupRepository, !0),
            a.EntityRelationMapper.oneToMany(this.PoiTypeGroupRepository, "types", this.PoiTypeRepository, "poiTypeGroupId"),
            this.PoiTypeRepository.entityChanged.connect((function() {
                return r.poiTypesChanged.emit()
            }
            )),
            this.PoiTypeRepository.entityRemoved.connect((function() {
                return r.poiTypesChanged.emit()
            }
            )),
            this.PoiTypeGroupRepository.entityChanged.connect((function() {
                return r.poiTypesChanged.emit()
            }
            )),
            this.PoiTypeGroupRepository.entityRemoved.connect((function() {
                return r.poiTypesChanged.emit()
            }
            ))
        }
        return Object.defineProperty(t.prototype, "types", {
            get: function() {
                return this.PoiTypeRepository.data
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "typeGroups", {
            get: function() {
                return this.PoiTypeGroupRepository.data
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.initialize = function() {
            var t = this;
            if (!this.AuthenticationService.dataAccessible)
                return this.PoiTypeRepository.resetCache(),
                this.PoiTypeGroupRepository.resetCache(),
                void (this.initialized = Promise.resolve());
            this.fetchAndMapData(!0).then((function() {
                return t.initPoiTypesVisibility()
            }
            )).then((function() {
                return t.initializeDeferred.resolve()
            }
            )).catch((function() {
                return t.initializeDeferred.reject()
            }
            ))
        }
        ,
        t.prototype.initPoiTypesVisibility = function() {
            var t = this;
            return this.ConfigService.initialized.then((function() {
                var e = t.ConfigService.getArray(s.Configs.POI_TYPES, !0);
                e ? (t.setPoiTypeVisibility(!1),
                t.setPoiTypeVisibility(!0, e)) : t.setPoiTypeVisibility(!0)
            }
            ))
        }
        ,
        t.prototype.createPoiType = function() {
            return this.PoiTypeRepository.create()
        }
        ,
        t.prototype.createPoiTypeGroup = function() {
            return this.PoiTypeGroupRepository.create()
        }
        ,
        t.prototype.isAnyVisible = function() {
            return r.some(this.types, "selected")
        }
        ,
        t.prototype.isPoiTypeVisible = function(t) {
            var e = this.getTypeById(t);
            return !!e && e.selected
        }
        ,
        t.prototype.setPoiTypeVisibility = function(t, e) {
            for (var n = 0, i = this.types; n < i.length; n++) {
                var r = i[n];
                (!e || e.indexOf(r.id) > -1) && (r.selected = t)
            }
            this.poiTypesChanged.emit()
        }
        ,
        t.prototype.getTypeById = function(t) {
            return this.PoiTypeRepository.dataMap[t.toString()]
        }
        ,
        t.prototype.fetchAndMapData = function(t) {
            var e = this.PoiTypeGroupRepository.findAll(t)
              , n = this.PoiTypeRepository.findAll(t);
            return Promise.all([e, n])
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(d.ɵɵinject(p.PoiTypeGroupRepository),d.ɵɵinject(h.PoiTypeRepository),d.ɵɵinject(f.ConfigService),d.ɵɵinject(m.AuthenticationService))
        }
        ,
        t.ɵprov = d.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.PoiTypeService = g,
    d.ɵsetClassMetadata(g, [{
        type: u.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: p.PoiTypeGroupRepository
        }, {
            type: h.PoiTypeRepository
        }, {
            type: f.ConfigService
        }, {
            type: m.AuthenticationService
        }]
    }
    ), null),
    i.module("IVWebApp").service("PoiTypeService", l.downgradeInjectable(g))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(70)
      , s = (n(9),
    n(1034))
      , c = n(6)
      , l = n(0)
      , u = n(0)
      , d = n(9)
      , p = function(t) {
        function e(e) {
            var n = t.call(this, s.UserEntity, e) || this;
            return n.RestService = e,
            n.path = "users",
            n.reportError = !1,
            n
        }
        return r(e, t),
        e.prototype._save = function(t) {
            throw new Error("unsupported call to UserRepository")
        }
        ,
        e.prototype._update = function(t) {
            throw new Error("unsupported call to UserRepository")
        }
        ,
        e.prototype.saveUser = function(t) {
            var e = this;
            return this.RestService.postApi(this.path, t.toData(), void 0, this.reportError).then((function(t) {
                return e.createFromData(t)
            }
            )).then((function(t) {
                return e.cacheEntities([t])[0]
            }
            ))
        }
        ,
        e.prototype.updateProfile = function(t) {
            var e = this;
            return this._updateProfile(t).then((function(t) {
                return e.cacheEntities([t])[0]
            }
            ))
        }
        ,
        e.prototype.updatePassword = function(t) {
            return this._updatePassword(t)
        }
        ,
        e.prototype.updatePrimaryGroups = function(t) {
            var e = this;
            return this._updatePrimaryGroups(t).then((function(t) {
                return e.cacheEntities([t])[0]
            }
            ))
        }
        ,
        e.prototype.updateLock = function(t) {
            return this._updateLock(t)
        }
        ,
        e.prototype._updateProfile = function(t) {
            var e = this
              , n = this.path + "/" + String(t.id) + "/profile";
            return this.RestService.putApi(n, t.toData(), void 0, this.reportError).then((function(t) {
                return e.createFromData(t)
            }
            ))
        }
        ,
        e.prototype._updatePassword = function(t) {
            var e = this.path + "/" + String(t.id) + "/password";
            return this.RestService.putApi(e, t.toData(), void 0, this.reportError)
        }
        ,
        e.prototype._updatePrimaryGroups = function(t) {
            var e = this
              , n = this.path + "/" + String(t.id) + "/primary_groups";
            return this.RestService.putApi(n, t.primaryGroups, void 0, this.reportError).then((function(t) {
                return e.createFromData(t)
            }
            ))
        }
        ,
        e.prototype._updateLock = function(t) {
            var e = this.path + "/" + String(t.id) + "lock";
            return this.RestService.putApi(e, t.toData(), void 0, this.reportError)
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(u.ɵɵinject(d.RestService))
        }
        ,
        e.ɵprov = u.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(a.RestRepository);
    e.UserRepository = p,
    u.ɵsetClassMetadata(p, [{
        type: l.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: d.RestService
        }]
    }
    ), null),
    o.module("IVWebApp").service("UserRepository", c.downgradeInjectable(p))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.INVALID_GEOMETRY = "INVALID_GEOMETRY",
        t.OVERLAPPING_VOLUMES = "OVERLAPPING_VOLUMES",
        t.INCORRECT_HIERARCHY_TYPE = "INCORRECT_HIERARCHY_TYPE",
        t.FREE_SPACE_NAVIGATION_AREA_WITH_CHILDREN = "FREE_SPACE_NAVIGATION_AREA_WITH_CHILDREN",
        t.CHILD_NOT_CONTAINED_IN_PARENT_ENTITY = "CHILD_NOT_CONTAINED_IN_PARENT_ENTITY",
        t.HEIGHT_NOT_CONTAINED_IN_PARENT = "HEIGHT_NOT_CONTAINED_IN_PARENT"
    }(e.ViolationType || (e.ViolationType = {}));
    var i = function() {
        function t() {}
        return t.prototype.fillFromData = function(t) {
            this.type = t.type
        }
        ,
        t
    }();
    e.SiteModelViolation = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.POI = "POI",
        t.SITE_MODEL = "SITE_MODEL"
    }(e.SearchResultType || (e.SearchResultType = {}))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(83),
    n(20))
      , o = n(7)
      , a = (n(28),
    n(180))
      , s = (n(73),
    n(40))
      , c = (n(15),
    n(25))
      , l = (n(104),
    n(39),
    n(6))
      , u = n(0)
      , d = n(0)
      , p = n(39)
      , h = n(83)
      , f = n(73)
      , m = n(28)
      , g = n(15)
      , v = n(104)
      , y = function() {
        function t(t, e, n, i, r, o, a, s) {
            var c = this;
            this.PoiService = t,
            this.SiteModelService = e,
            this.UrlService = n,
            this.gettextCatalog = i,
            this.FloorChangerService = r,
            this.ConfigService = o,
            this.IV = a,
            this.RouteService = s,
            this.resultsList = {
                show: !1,
                query: "",
                results: void 0,
                selectedResult: void 0,
                allPoiResultsFetched: !1,
                allSiteModelResultsFetched: !1,
                areAllResultsFetched: function() {
                    return this.allPoiResultsFetched && this.allSiteModelResultsFetched
                }
            },
            this.selectedResult = void 0,
            this.PoiService.routeModeChanged.connect((function() {
                return c.hideSearchResultsList()
            }
            )),
            this.RouteService.onRouteChanged.connect((function() {
                return c.hideSearchResultsList()
            }
            ))
        }
        return t.prototype.canDisplayResultDetails = function() {
            return this.isAnyResultSelected() && this.ConfigService.getBoolean(c.Configs.UI_POI_PANEL_VISIBLE, !0)
        }
        ,
        t.prototype.canDisplayResultsList = function() {
            return this.resultsList.show && !this.isAnyResultSelected() && !this.PoiService.isRoutePhase()
        }
        ,
        t.prototype.isSearchBoxVisible = function() {
            return this.ConfigService.getBoolean(c.Configs.UI_SEARCH_VISIBLE, !0)
        }
        ,
        t.prototype.closeResult = function(t, e) {
            e ? e === a.SearchResultType.POI ? this.closePoi() : e === a.SearchResultType.SITE_MODEL && this.closeSiteModel() : (this.closeSiteModel(),
            this.closePoi()),
            t || (this.clearSearchResults(!0),
            this.selectedResult = void 0,
            this.resultsList.selectedResult = void 0)
        }
        ,
        t.prototype.isAnyResultSelected = function() {
            return !!this.PoiService.openedPoi || !!this.SiteModelService.selectedModel
        }
        ,
        t.prototype.startRoute = function() {
            var t = this;
            this.clearSearchResults(),
            this.PoiService.routeStart && this.PoiService.routeEnd && (this.UrlService.addRouteParameters(this.PoiService.routeStart, this.PoiService.routeEnd),
            //this.RouteService.findRoute(this.PoiService.routeStart.globalLocation, this.PoiService.routeEnd.globalLocation).then((function(e) {
            this.RouteService.findRoute(this.PoiService.routeStart.location, this.PoiService.routeEnd.location).then((function(e) {
                t.PoiService.wasRouteFound = e.instructions.length > 0,
                t.PoiService.poisChanged.emit(),
                s.isMobileBrowser() && r.blurActiveElement()
            }
            )).catch((function() {}
            )),
            r.blurActiveElement())
        }
        ,
        t.prototype.routeWithCoordinate = function(t, e) {
            e ? this.PoiService.routeStart = this.PoiService.getLocationAsPoi(t, !1) : this.PoiService.routeEnd = this.PoiService.getLocationAsPoi(t, !1),
            this.PoiService.enterRouteMode(),
            this.PoiService.poisChanged.emit(),
            this.startRoute()
        }
        ,
        t.prototype.hideSearchResultsList = function() {
            this.resultsList.show = !1,
            this.clearResultsListState(),
            this.resultsList.hideResultsListCallback && this.resultsList.hideResultsListCallback()
        }
        ,
        t.prototype.clearResultsListState = function() {
            this.resultsList.query = void 0,
            this.resultsList.results = void 0,
            this.resultsList.allPoiResultsFetched = !1,
            this.resultsList.allSiteModelResultsFetched = !1
        }
        ,
        t.prototype.clearSearchResults = function(t) {
            void 0 === t && (t = !1),
            this.updatePoisToDisplay(),
            this.PoiService.focusedPoi = void 0,
            this.IV.isMovingToPoi() || t || !this.savedFloorName || (this.FloorChangerService.changeFloorByName(this.savedFloorName, !1).catch((function() {}
            )),
            this.savedFloorName = void 0)
        }
        ,
        t.prototype.updatePoisToDisplay = function() {
            if (this.canDisplayResultsList()) {
                var t = o.filter(this.resultsList.results, (function(t) {
                    return t.resultType === a.SearchResultType.POI
                }
                ));
                this.PoiService.poisToDisplay = this.addRoutePointsToArray(o.map(t, (function(t) {
                    return t.fakePoi
                }
                )))
            } else
                this.PoiService.poisToDisplay = void 0
        }
        ,
        t.prototype.addRoutePointsToArray = function(t) {
            var e = [];
            return this.PoiService.routeStart && e.push(this.PoiService.routeStart),
            this.PoiService.routeEnd && e.push(this.PoiService.routeEnd),
            t.concat(e)
        }
        ,
        t.prototype.closePoi = function() {
            this.PoiService.closeAndUnhighlightPoi(),
            this.UrlService.removeEntity()
        }
        ,
        t.prototype.closeSiteModel = function() {
            this.SiteModelService.deselectModel(),
            this.UrlService.removeEntity()
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(d.ɵɵinject(p.PoiService),d.ɵɵinject(h.SiteModelService),d.ɵɵinject(f.UrlService),d.ɵɵinject("gettextCatalog"),d.ɵɵinject(m.FloorChangerService),d.ɵɵinject(g.ConfigService),d.ɵɵinject("IV"),d.ɵɵinject(v.RouteService))
        }
        ,
        t.ɵprov = d.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.SearchService = y,
    d.ɵsetClassMetadata(y, [{
        type: u.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: p.PoiService
        }, {
            type: h.SiteModelService
        }, {
            type: f.UrlService
        }, {
            type: void 0,
            decorators: [{
                type: u.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: m.FloorChangerService
        }, {
            type: g.ConfigService
        }, {
            type: void 0,
            decorators: [{
                type: u.Inject,
                args: ["IV"]
            }]
        }, {
            type: v.RouteService
        }]
    }
    ), null),
    i.module("IVWebApp").service("SearchService", l.downgradeInjectable(y))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(1202)
      , o = (n(75),
    n(268),
    n(407),
    n(14),
    n(106),
    n(16));
    n(75),
    n(268),
    n(407);
    var a = n(6)
      , s = n(0)
      , c = n(0)
      , l = n(14)
      , u = n(268)
      , d = n(407)
      , p = n(75)
      , h = n(106)
      , f = function() {
        function t(t, e, n, i, a, s) {
            this.GeoTransformationService = t,
            this.NodeRepository = e,
            this.EdgeRepository = n,
            this.BundleRepository = i,
            this.ProgressReportService = a,
            this.gettextCatalog = s,
            this.bundles = [],
            this.adjacencyList = new r.NavGraphEditingAdjacencyList,
            this.thresh = 15,
            this.threshZ = 5,
            this.constantsChanged = new o.Signal,
            this.navgraphChanged = new o.Signal,
            this.edgeCreated = new o.Signal,
            this.edgeRemoved = new o.Signal,
            this.nodeCreated = new o.Signal,
            this.nodeRemoved = new o.Signal,
            this.isMovingNodes = !1,
            this.initialized = !1
        }
        return t.prototype.clear = function() {
            this.initialized = !1,
            this.bundles = [],
            this.adjacencyList = new r.NavGraphEditingAdjacencyList
        }
        ,
        t.prototype.fetch = function(t) {
            var e = this;
            if (void 0 === t && (t = !1),
            this.initialized && !t)
                return Promise.resolve();
            var n = this.ProgressReportService.addTask(this.gettextCatalog.getString("Loading navigation graph..."), 2, !1, !0, !0);
            return this.clear(),
            this.GeoTransformationService.initialized.then((function() {
                return e.BundleRepository.findAll(!0)
            }
            )).then((function(t) {
                e.bundles = t,
                e.bundles.length > 0 && e.selectBundle(e.bundles[0].id)
            }
            )).then((function() {
                return e.NodeRepository.findAll(!0)
            }
            )).then((function(t) {
                for (var i = 0, r = t; i < r.length; i++) {
                    var o = r[i];
                    e.adjacencyList.addNode(o)
                }
                n.itemDone()
            }
            )).then((function() {
                return e.EdgeRepository.findAll(!0)
            }
            )).then((function(t) {
                e.adjacencyList.addEdges(t),
                n.itemDone()
            }
            )).then((function() {
                e.initialized = !0
            }
            )).catch((function() {}
            ))
        }
        ,
        t.prototype.selectBundle = function(t) {
            this.currentBundleId = t
        }
        ,
        t.prototype.selectBundleForNode = function(t) {
            var e = this.adjacencyList.getNode(t);
            this.selectBundle(e.bundle.id)
        }
        ,
        t.prototype.getCurrentBundle = function() {
            return this.getBundle(this.currentBundleId)
        }
        ,
        t.prototype.getBundle = function(t) {
            return this.bundles.filter((function(e) {
                return e.id === t
            }
            ))[0]
        }
        ,
        t.prototype.isAnyBundle = function() {
            return this.bundles.length > 0
        }
        ,
        t.prototype.isNavGraphPresent = function() {
            return this.adjacencyList.adjacencyList.size > 0
        }
        ,
        t.prototype.canWriteNode = function(t) {
            return this.adjacencyList.getNode(t).canWrite
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(c.ɵɵinject(l.GeoTransformationService),c.ɵɵinject(u.NodeRepository),c.ɵɵinject(d.EdgeRepository),c.ɵɵinject(p.BundleRepository),c.ɵɵinject(h.ProgressReportService),c.ɵɵinject("gettextCatalog"))
        }
        ,
        t.ɵprov = c.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.NavGraphService = f,
    c.ɵsetClassMetadata(f, [{
        type: s.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: l.GeoTransformationService
        }, {
            type: u.NodeRepository
        }, {
            type: d.EdgeRepository
        }, {
            type: p.BundleRepository
        }, {
            type: h.ProgressReportService
        }, {
            type: void 0,
            decorators: [{
                type: s.Inject,
                args: ["gettextCatalog"]
            }]
        }]
    }
    ), null),
    i.module("IVWebApp").service("NavGraphService", a.downgradeInjectable(f))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e(e) {
            var n = t.call(this) || this;
            return n.resourceType = e,
            n
        }
        return r(e, t),
        e
    }(n(566).EditingOperation);
    e.NavGraphEditingOperation = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(4)
      , a = function(t) {
        function e(e, n, i) {
            var r = t.call(this) || this;
            return r.view = e,
            r.onDragCallback = n,
            r.onDragEndCallback = i,
            r
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "pickObject", {
            get: function() {
                return this._pickObject
            },
            set: function(t) {
                this._pickObject = t,
                this.assignCallbacks()
            },
            enumerable: !0,
            configurable: !0
        }),
        e.isUsedInMapViewMode = function(t) {
            return t.getCamera()instanceof o.OrthographicCamera
        }
        ,
        e.prototype.assignCallbacks = function() {
            var t = this;
            this._pickObject.onMouseOver = function() {
                t.onMouseOver(),
                e.isDragging || t.setMaximumOpacity()
            }
            ,
            this._pickObject.onMouseOut = function() {
                t.onMouseOut(),
                e.isDragging || t.restoreNonHighlightOpacity()
            }
            ,
            this._pickObject.onDrag = function(e, n) {
                t.onDrag(e, n),
                t.onDragCallback()
            }
            ,
            this._pickObject.onDragStart = function(e, n) {
                return t.manageDraggingStartHighlight(),
                t.onDragStart(e, n),
                !0
            }
            ,
            this._pickObject.onDragEnd = function() {
                t.onDragEnd(),
                t.manageDraggingStopHighlight(),
                t.onDragEndCallback()
            }
            ,
            this._pickObject.onDragCancel = function() {
                t.manageDraggingStopHighlight(),
                t.onDragCancel()
            }
        }
        ,
        e.prototype.setMaximumOpacity = function() {
            this.object.material instanceof o.Material && this.objectOutline.material instanceof o.Material && (1 !== this.object.material.opacity || 1 !== this.objectOutline.material.opacity) && (this.object.material.opacity = 1,
            this.objectOutline.material.opacity = 1,
            this.view.invalidateScene())
        }
        ,
        e.prototype.restoreNonHighlightOpacity = function() {
            this.object.material instanceof o.Material && this.objectOutline.material instanceof o.Material && (this.object.material.opacity = e.NON_HIGHLIGHTED_OPACITY,
            this.objectOutline.material.opacity = e.NON_HIGHLIGHTED_OPACITY,
            this.view.invalidateScene())
        }
        ,
        e.prototype.manageDraggingStartHighlight = function() {
            e.isDragging = !0,
            this.setMaximumOpacity()
        }
        ,
        e.prototype.manageDraggingStopHighlight = function() {
            e.isDragging = !1,
            this.restoreNonHighlightOpacity()
        }
        ,
        e.OUTLINE_COLOR = new o.Color(7829367),
        e.NON_HIGHLIGHTED_OPACITY = .7,
        e
    }(o.Object3D);
    e.HighlightableObject3D = a
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var i = n(89)
          , r = function() {
            function e(e, n, r, o) {
                var a = this;
                this.repository = e,
                this.gettextCatalog = n,
                this.promiseProgressWrapper = new i.PromiseProgressWrapper,
                this.domElement = t(r.context.firstElementChild),
                this.domElement.on("show.bs.modal", (function() {
                    return a.onShow()
                }
                )),
                this.domElement.on("hidden.bs.modal", (function() {
                    return a.onHide()
                }
                )),
                this.errorWrapper = o.createDefaultWrapper()
            }
            return e.prototype.onShow = function() {}
            ,
            e.prototype.onHide = function() {
                this.clearError()
            }
            ,
            e.prototype.exitEditor = function() {
                this.domElement.modal("hide")
            }
            ,
            e.prototype.save = function(t) {
                var e = this
                  , n = t || Promise.resolve();
                return this.reportErrorInline(this.promiseProgressWrapper.wrap(n.then((function() {
                    return e.repository.save(e.model, !1).then((function(t) {
                        return e.exitEditor(),
                        t[0]
                    }
                    ))
                }
                ))))
            }
            ,
            e.prototype.isSavingInProgress = function() {
                return this.promiseProgressWrapper.isInProgress
            }
            ,
            e.prototype.cancel = function() {
                this.exitEditor()
            }
            ,
            e.prototype.remove = function() {
                var t = this;
                return this.reportErrorInline(this.repository.remove(this.model, !1).then((function() {
                    return t.exitEditor()
                }
                )))
            }
            ,
            e.prototype.reportErrorInModal = function(t) {
                return this.errorWrapper.wrap(t)
            }
            ,
            e.prototype.reportErrorInline = function(t) {
                var e = this;
                return t.catch((function(t) {
                    return console.log(t),
                    e.error = {
                        text: e.gettextCatalog.getString("Update failed"),
                        status: t.status,
                        statusText: t.statusText && t.statusText.length ? t.statusText : e.gettextCatalog.getString("Network error"),
                        details: t.data ? t.data.msg : ""
                    },
                    Promise.reject(t)
                }
                ))
            }
            ,
            e.prototype.clearError = function() {
                this.error = void 0
            }
            ,
            e
        }();
        e.EntityEditorController = r
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return a
    }
    ));
    var i = n(1)
      , r = n(32)
      , o = n(33)
      , a = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.value = null,
            e.hasNext = !1,
            e.hasCompleted = !1,
            e
        }
        return i.c(e, t),
        e.prototype._subscribe = function(e) {
            return this.hasError ? (e.error(this.thrownError),
            o.a.EMPTY) : this.hasCompleted && this.hasNext ? (e.next(this.value),
            e.complete(),
            o.a.EMPTY) : t.prototype._subscribe.call(this, e)
        }
        ,
        e.prototype.next = function(t) {
            this.hasCompleted || (this.value = t,
            this.hasNext = !0)
        }
        ,
        e.prototype.error = function(e) {
            this.hasCompleted || t.prototype.error.call(this, e)
        }
        ,
        e.prototype.complete = function() {
            this.hasCompleted = !0,
            this.hasNext && t.prototype.next.call(this, this.value),
            t.prototype.complete.call(this)
        }
        ,
        e
    }(r.a)
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(152)
      , o = n(6)
      , a = n(0)
      , s = n(0)
      , c = function() {
        function t(t) {
            this.localStorageService = t,
            this.CONTEXT_PATH = r.getBaseUrl()
        }
        return t.prototype.get = function(t) {
            return this.localStorageService.get(this.makeKey(t))
        }
        ,
        t.prototype.set = function(t, e) {
            return this.localStorageService.set(this.makeKey(t), e)
        }
        ,
        t.prototype.remove = function(t) {
            return this.localStorageService.remove(this.makeKey(t))
        }
        ,
        t.prototype.makeKey = function(t) {
            return this.CONTEXT_PATH + "#" + t
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(s.ɵɵinject("localStorageService"))
        }
        ,
        t.ɵprov = s.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.StorageService = c,
    s.ɵsetClassMetadata(c, [{
        type: a.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: void 0,
            decorators: [{
                type: a.Inject,
                args: ["localStorageService"]
            }]
        }]
    }
    ), null),
    i.module("IVWebApp").service("StorageService", o.downgradeInjectable(c))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    n(9);
    var i = n(2)
      , r = n(327)
      , o = n(6)
      , a = n(0)
      , s = n(0)
      , c = n(9)
      , l = function() {
        function t(t, e) {
            this.RestService = t,
            this.$timeout = e
        }
        return t.prototype.makeJobPromise = function(t) {
            var e = this;
            return t.then((function(t) {
                return e.waitOnJob(t.job_id)
            }
            ))
        }
        ,
        t.prototype.waitOnJob = function(e) {
            var n = this;
            return this.RestService.getApi("jobs/" + e, {}).then((function(e) {
                if (e.busy)
                    return n.$timeout(t.REFRESH_CYCLE).then((function() {
                        return n.waitOnJob(e.job_id)
                    }
                    ));
                var i = new r.Job;
                return i.fillFromData(e),
                i
            }
            ))
        }
        ,
        t.REFRESH_CYCLE = 2e3,
        t.ɵfac = function(e) {
            return new (e || t)(s.ɵɵinject(c.RestService),s.ɵɵinject("$timeout"))
        }
        ,
        t.ɵprov = s.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.JobService = l,
    s.ɵsetClassMetadata(l, [{
        type: a.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: c.RestService
        }, {
            type: void 0,
            decorators: [{
                type: a.Inject,
                args: ["$timeout"]
            }]
        }]
    }
    ), null),
    i.module("IVWebApp").service("JobService", o.downgradeInjectable(l))
}
, function(t, e, n) {
    var i = n(133);
    t.exports = Array.isArray || function(t) {
        return "Array" == i(t)
    }
}
, function(t, e, n) {
    var i = n(461)
      , r = n(354).concat("length", "prototype");
    e.f = Object.getOwnPropertyNames || function(t) {
        return i(t, r)
    }
}
, function(t, e, n) {
    var i = n(29)
      , r = n(467);
    t.exports = Object.setPrototypeOf || ("__proto__"in {} ? function() {
        var t, e = !1, n = {};
        try {
            (t = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set).call(n, []),
            e = n instanceof Array
        } catch (t) {}
        return function(n, o) {
            return i(n),
            r(o),
            e ? t.call(n, o) : n.__proto__ = o,
            n
        }
    }() : void 0)
}
, function(t, e) {
    t.exports = function(t, e, n) {
        if (!(t instanceof e))
            throw TypeError("Incorrect " + (n ? n + " " : "") + "invocation");
        return t
    }
}
, function(t, e, n) {
    "use strict";
    var i = n(134)
      , r = n(48)
      , o = n(173);
    t.exports = function(t, e, n) {
        var a = i(e);
        a in t ? r.f(t, a, o(0, n)) : t[a] = n
    }
}
, function(t, e, n) {
    var i = n(239)
      , r = n(42)
      , o = n(58)
      , a = n(48).f
      , s = n(236)
      , c = n(244)
      , l = s("meta")
      , u = 0
      , d = Object.isExtensible || function() {
        return !0
    }
      , p = function(t) {
        a(t, l, {
            value: {
                objectID: "O" + ++u,
                weakData: {}
            }
        })
    }
      , h = t.exports = {
        REQUIRED: !1,
        fastKey: function(t, e) {
            if (!r(t))
                return "symbol" == typeof t ? t : ("string" == typeof t ? "S" : "P") + t;
            if (!o(t, l)) {
                if (!d(t))
                    return "F";
                if (!e)
                    return "E";
                p(t)
            }
            return t[l].objectID
        },
        getWeakData: function(t, e) {
            if (!o(t, l)) {
                if (!d(t))
                    return !0;
                if (!e)
                    return !1;
                p(t)
            }
            return t[l].weakData
        },
        onFreeze: function(t) {
            return c && h.REQUIRED && d(t) && !o(t, l) && p(t),
            t
        }
    };
    i[l] = !0
}
, function(t, e, n) {
    var i = n(29)
      , r = n(132)
      , o = n(45)("species");
    t.exports = function(t, e) {
        var n, a = i(t).constructor;
        return void 0 === a || null == (n = i(a)[o]) ? e : r(n)
    }
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(70)
      , s = (n(9),
    n(1033))
      , c = (n(27),
    n(6))
      , l = n(0)
      , u = n(0)
      , d = n(9)
      , p = n(27)
      , h = function(t) {
        function e(e, n) {
            var i = t.call(this, s.PoiTypeGroupEntity, e) || this;
            return i.RestService = e,
            i.UserService = n,
            i.path = "poi_type_groups",
            i
        }
        return r(e, t),
        e.prototype.create = function() {
            var e = t.prototype.create.call(this);
            return e.fillCurrentUsersGroups(this.UserService),
            e
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(u.ɵɵinject(d.RestService),u.ɵɵinject(p.UserService))
        }
        ,
        e.ɵprov = u.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(a.RestRepository);
    e.PoiTypeGroupRepository = h,
    u.ɵsetClassMetadata(h, [{
        type: l.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: d.RestService
        }, {
            type: p.UserService
        }]
    }
    ), null),
    o.module("IVWebApp").service("PoiTypeGroupRepository", c.downgradeInjectable(h))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(20)
      , r = n(2);
    function o(t, e) {
        var n = document.createElement("a");
        n.style.display = "none",
        document.body.appendChild(n),
        n.href = t,
        n.download = e || "",
        n.target = "_blank",
        n.click(),
        document.body.removeChild(n)
    }
    !function(t) {
        t.JSON = "json",
        t.CSV = "csv",
        t.LOG = "log",
        t.NVD = "nvd"
    }(e.FileType || (e.FileType = {})),
    e.clickHiddenURL = o,
    e.downloadFile = function(t, e, n, r, a) {
        var s = new Blob([t],{
            type: r
        });
        a && (e += e ? "_" : "",
        e += new Date(Date.now() - 6e4 * (new Date).getTimezoneOffset()).toISOString().substr(0, 10));
        var c = e + "." + n;
        i.invalidateAngular((function() {
            if (navigator.msSaveBlob)
                navigator.msSaveBlob(s, c);
            else {
                var t = (window.URL || window.webkitURL).createObjectURL(s);
                o(t, c),
                i.invalidateAngular((function() {
                    (window.URL || window.webkitURL).revokeObjectURL(t)
                }
                ), 100)
            }
        }
        ))
    }
    ,
    e.processJsonFile = function(t) {
        return new Promise((function(e, n) {
            t || n();
            var i = new FileReader;
            i.readAsText(t),
            i.onload = function() {
                try {
                    var t = i.result;
                    "string" != typeof t ? n(new Error("Unknown file reading result type")) : e(r.fromJson(t))
                } catch (t) {
                    n(t)
                }
            }
        }
        ))
    }
    ,
    e.blobToFile = function(t, e) {
        var n = t;
        return n.lastModifiedDate = new Date,
        n.name = e || "blob2file." + n.type.split("/")[1],
        t
    }
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(102)
      , a = n(524)
      , s = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.security = new a.SecurityInfo,
            e
        }
        return r(e, t),
        e.prototype.fill = function(e) {
            t.prototype.fill.call(this, e),
            this.security = e.security ? new a.SecurityInfo({
                can_write: e.security.canWrite,
                group_read: e.security.groupRead,
                group_write: e.security.groupWrite
            }) : void 0
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.security = e.security ? new a.SecurityInfo(e.security) : void 0
        }
        ,
        e.prototype.fillDto = function(e) {
            t.prototype.fillDto.call(this, e),
            e.security = {
                group_read: this.security.groupRead,
                group_write: this.security.groupWrite
            }
        }
        ,
        e.prototype.fillCurrentUsersGroups = function(t) {
            this.security.groupRead = t.getDefaultGroupRead(),
            this.security.groupWrite = t.getDefaultGroupWrite()
        }
        ,
        Object.defineProperty(e.prototype, "canWrite", {
            get: function() {
                return this.security.canWrite
            },
            enumerable: !0,
            configurable: !0
        }),
        e
    }(o.RepositoryObject);
    e.SecureRepositoryObject = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = (n(83),
    n(20))
      , s = (n(22),
    n(7))
      , c = n(377)
      , l = (n(14),
    n(4))
      , u = (n(9),
    n(55))
      , d = n(16)
      , p = n(318)
      , h = n(89)
      , f = n(6)
      , m = n(0)
      , g = n(0)
      , v = n(83)
      , y = n(14)
      , b = n(22)
      , w = n(9)
      , S = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this) || this;
            return o.SiteModelService = e,
            o.GeoTransformationService = n,
            o.SiteModelRepository = i,
            o.RestService = r,
            o.siteModel = o.SiteModelRepository.data,
            o.snappingEnabled = !0,
            o.isDraggingHeight = !1,
            o.isDragging = !1,
            o.redrawSiteModel = new d.Signal,
            o.showSiteModelErrorsModal = new d.Signal,
            o.savePromiseWrapper = new h.PromiseProgressWrapper,
            o._rectangleSnapping = !1,
            o.drawingMode = !1,
            o.cuttingMode = !1,
            o
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "rectangleSnapping", {
            get: function() {
                return this._rectangleSnapping
            },
            set: function(t) {
                this._rectangleSnapping = t,
                this.redrawSiteModel.emit()
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.addEntity = function(t, n, i) {
            var r = n ? n.children : this.siteModel
              , o = i ? 0 : r.length
              , a = this.SiteModelRepository.create();
            if (void 0 === t && (t = n.type === u.SiteModelType.BUILDING ? u.SiteModelType.FLOOR : n.type === u.SiteModelType.FLOOR ? u.SiteModelType.ROOM : u.SiteModelType.CUSTOM),
            a.type = t,
            a.parent = n,
            a.globalNeedsUpdate = !0,
            this.stateDirty = !0,
            this.nameEntity(a, i),
            r.splice(o, 0, a),
            t === u.SiteModelType.FLOOR)
                if (r.length > 1 && !i) {
                    var s = r[r.length - 2].zMin
                      , c = r[r.length - 2].zMax;
                    r[r.length - 1].zMin = c,
                    r[r.length - 1].zMax = c + Math.abs(c - s),
                    r[r.length - 1].height = Math.abs(c - s)
                } else if (r.length > 1 && i) {
                    var l = r[1].zMin
                      , d = r[1].zMax;
                    r[0].zMin = l - Math.abs(d - l),
                    r[0].zMax = l,
                    r[0].height = Math.abs(d - l)
                } else
                    r[r.length - 1].zMin = 0,
                    r[r.length - 1].zMax = e.DEFAULT_FLOOR_HEIGHT,
                    r[r.length - 1].height = e.DEFAULT_FLOOR_HEIGHT;
            else
                t === u.SiteModelType.CUSTOM || t === u.SiteModelType.ROOM ? (r[r.length - 1].zMin = n.zMin,
                r[r.length - 1].zMax = n.zMax,
                r[r.length - 1].height = n.height,
                this.enableDrawingMode(r[r.length - 1])) : this.enableDrawingMode(r[o]);
            this.selectEntity(r[o])
        }
        ,
        e.prototype.selectEntity = function(t, e) {
            if (this.isCuttingMode())
                this.SiteModelService.onSelect.emit(t, !0, !0);
            else {
                this.lastSelectedEntity && (this.lastSelectedEntity.selected = !1);
                var n = !1;
                this.lastSelectedEntity !== t && (n = !0),
                t.polygon && (t.polygon.boundary.length < 1 || t.polygon.boundary[0] === this.lastTempPoint) ? this.enableDrawingMode(t) : this.enableDrawingMode(),
                t.selected = !0,
                this.lastSelectedEntity = t,
                a.invalidateAngular(),
                e || this.SiteModelService.onSelect.emit(t, !0, n),
                this.redrawSiteModel.emit(!0)
            }
        }
        ,
        e.prototype.deleteEntity = function(t) {
            if (void 0 !== t.id)
                this.SiteModelRepository.removeLocal(t);
            else {
                var e = t.parent ? t.parent.children : this.siteModel;
                e.splice(e.indexOf(t), 1)
            }
            this.isDrawingMode() && this.enableDrawingMode(),
            this.stateDirty = !0,
            a.invalidateAngular(),
            this.redrawSiteModel.emit(!0)
        }
        ,
        e.prototype.selectPoint = function(t, e) {
            this.lastSelectedPoint = e,
            this.lastSelectedPoints = t,
            this.redrawSiteModel.emit()
        }
        ,
        e.prototype.isDrawingMode = function() {
            return this.drawingMode
        }
        ,
        e.prototype.isCuttingMode = function() {
            return this.cuttingMode
        }
        ,
        e.prototype.enableCuttingMode = function(t) {
            t ? (t.inherited && this.unlockEntityToggle(t),
            this.selectEntity(t, !0),
            this.enableDrawingMode(t),
            t.polygon.holes[t.polygon.holes.length] = [],
            this.cuttingMode = !0) : (this.cuttingMode = !1,
            this.enableDrawingMode())
        }
        ,
        e.prototype.addPointToCurrentEntity = function(t, e) {
            var n = this.isCuttingMode() ? this.lastSelectedEntity.polygon.holes[this.lastSelectedEntity.polygon.holes.length - 1] : this.lastSelectedEntity.polygon.boundary;
            n[n.length - 1] && n[n.length - 1] === this.lastTempPoint && n.splice(-1, 1),
            n.length > 2 && t.distanceTo(n[0]) < 1 && (t = o.copy(n[0]),
            e ? this.lastClosingPoint = t : (this.enableCuttingMode(),
            this.selectPoint(this.lastSelectedPoints, t))),
            e && (this.lastTempPoint = t),
            n.push(t),
            this.markAsChanged(this.lastSelectedEntity),
            this.redrawSiteModel.emit()
        }
        ,
        e.prototype.getRectLineGeometries = function() {
            if (this.rectangleSnapping && this.lastSelectedEntity && !this.lastSelectedEntity.inherited)
                if (this.isDrawingMode()) {
                    if ((t = this.isCuttingMode() ? this.lastSelectedEntity.polygon.holes[this.lastSelectedEntity.polygon.holes.length - 1] : this.lastSelectedEntity.polygon.boundary)[t.length - 2] && t[t.length - 3] && t[0] && t[1])
                        return [this.createRectGeometryFromPoints(t[t.length - 2], t[t.length - 3]), this.createRectGeometryFromPoints(t[0], t[1])]
                } else {
                    if (!this.lastSelectedPoints)
                        return;
                    var t = this.lastSelectedPoints
                      , e = this.lastSelectedPoints.indexOf(this.lastSelectedPoint)
                      , n = t.length
                      , i = e + 1 <= n - 1 ? e + 1 : 1
                      , r = void 0;
                    r = e + 2 <= n - 1 ? e + 2 : e + 1 <= n - 1 ? 1 : 2;
                    var o = e - 1 >= 0 ? e - 1 : n - 1
                      , a = e - 2 >= 0 ? e - 2 : n - 2;
                    if (t[o] && t[a] && t[i] && t[r])
                        return [this.createRectGeometryFromPoints(t[o], t[a]), this.createRectGeometryFromPoints(t[i], t[r])]
                }
        }
        ,
        e.prototype.createRectGeometryFromPoints = function(t, e) {
            var n = void 0 === this.lastSelectedEntity.zMin && this.lastSelectedEntity.children[0] ? this.lastSelectedEntity.children[0].zMin : this.lastSelectedEntity.zMin
              , i = new l.Vector3(t.x,t.y,n)
              , r = new l.Vector3(e.x,e.y,n)
              , o = i.clone().sub(r)
              , a = new l.Vector3(0,0,1)
              , s = Math.PI / 2;
            o.applyAxisAngle(a, s).setLength(1e3);
            var c = i.clone().add(o)
              , u = i.clone().sub(o)
              , d = new l.Geometry;
            return d.vertices.push(c, u),
            d
        }
        ,
        e.prototype.removeLastPointFromCurrentEntity = function() {
            var t = this.isCuttingMode() ? this.lastSelectedEntity.polygon.holes[this.lastSelectedEntity.polygon.holes.length - 1] : this.lastSelectedEntity.polygon.boundary;
            this.isDrawingMode() && t[t.length - 2] && t.splice(-2, 1),
            this.markAsChanged(this.lastSelectedEntity),
            this.redrawSiteModel.emit()
        }
        ,
        e.prototype.removeSelectedPoint = function() {
            if (this.lastSelectedPoint && this.lastSelectedPoints) {
                var t = this.lastSelectedPoints.indexOf(this.lastSelectedPoint);
                0 === t || t === this.lastSelectedPoints.length - 1 ? (this.lastSelectedPoints.splice(-1, 1),
                this.lastSelectedPoints.splice(0, 1),
                this.lastSelectedPoints.length > 1 && this.lastSelectedPoints.push(this.lastSelectedPoints[0])) : t > -1 && this.lastSelectedPoints.splice(t, 1),
                this.lastSelectedPoints.length > 3 ? this.selectPoint(this.lastSelectedPoints, this.lastSelectedPoints[t - 1]) : (this.lastSelectedPoints.length = 0,
                this.selectEntity(this.lastSelectedEntity, !0)),
                this.markAsChanged(this.lastSelectedEntity)
            }
            this.redrawSiteModel.emit()
        }
        ,
        e.prototype.unlockEntityToggle = function(t) {
            this.selectEntity(t, !0),
            t.inherited ? (t.polygon = new c.LocalPolygon(this.GeoTransformationService),
            t.polygon.boundary = o.copy(t.parent.getPath()),
            t.polygon.holes = o.copy(t.parent.getHoles())) : t.polygon = void 0,
            this.markAsChanged(t),
            this.redrawSiteModel.emit()
        }
        ,
        e.prototype.updateTop = function(t, n) {
            if (this.markAsChanged(t),
            void 0 !== t.height)
                if (t.height <= e.MIN_FLOOR_HEIGHT)
                    t.height = e.MIN_FLOOR_HEIGHT;
                else {
                    if (t.type === u.SiteModelType.FLOOR && t.parent) {
                        var i = t.parent.children.indexOf(t);
                        if (t.parent.children[i + 1] && t.parent.children[i + 1].zMin <= t.zMax) {
                            if (Math.abs(t.parent.children[i + 1].zMax - t.zMin - t.height) <= e.MIN_FLOOR_HEIGHT)
                                return void (t.parent.children[i + 1].height = e.MIN_FLOOR_HEIGHT);
                            t.parent.children[i + 1].zMin = t.zMin + t.height,
                            this.updateHeight(t.parent.children[i + 1], !1)
                        }
                    }
                    t.zMax = t.zMin + t.height,
                    n && this.redrawSiteModel.emit(!0)
                }
        }
        ,
        e.prototype.updateBottom = function(t, n) {
            if (this.markAsChanged(t),
            void 0 !== t.height)
                if (t.height <= e.MIN_FLOOR_HEIGHT)
                    t.height = e.MIN_FLOOR_HEIGHT;
                else {
                    if (t.type === u.SiteModelType.FLOOR && t.parent) {
                        var i = t.parent.children.indexOf(t);
                        if (t.parent.children[i - 1] && t.parent.children[i - 1].zMax >= t.zMin) {
                            if (Math.abs(t.zMax - t.height - t.parent.children[i - 1].zMin) <= e.MIN_FLOOR_HEIGHT)
                                return void (t.parent.children[i - 1].height = e.MIN_FLOOR_HEIGHT);
                            t.parent.children[i - 1].zMax = t.zMax - t.height,
                            this.updateHeight(t.parent.children[i - 1], !1)
                        }
                    }
                    t.zMin = t.zMax - t.height,
                    n && this.redrawSiteModel.emit(!0)
                }
        }
        ,
        e.prototype.updateHeight = function(t, e) {
            this.markAsChanged(t),
            t.height = Math.floor(100 * (t.zMax - t.zMin)) / 100,
            e && this.redrawSiteModel.emit()
        }
        ,
        e.prototype.checkMinHeight = function(t) {
            return t.zMax - e.MIN_FLOOR_HEIGHT
        }
        ,
        e.prototype.checkMaxHeight = function(t, n) {
            if (t.parent && t.type === u.SiteModelType.FLOOR) {
                var i = t.parent.children.indexOf(t);
                if (!n && t.parent.children[i + 1] && t.parent.children[i + 1].height)
                    return t.parent.children[i + 1].height + t.height - e.MIN_FLOOR_HEIGHT;
                if (n && t.parent.children[i - 1] && t.parent.children[i - 1].height)
                    return t.parent.children[i - 1].height + t.height - e.MIN_FLOOR_HEIGHT
            } else if (t.parent)
                return t.parent.height;
            return 1 / 0
        }
        ,
        e.prototype.useOutlineAsHole = function(t) {
            this.lastSelectedEntity.polygon.holes[this.lastSelectedEntity.polygon.holes.length - 1] = o.copy(t.getPath()),
            this.enableCuttingMode(),
            this.redrawSiteModel.emit()
        }
        ,
        e.prototype.enableDrawingMode = function(t) {
            this.resetTempDrawingProperties(this.siteModel),
            t ? (t.polygon || (t.polygon = new c.LocalPolygon(this.GeoTransformationService)),
            t.drawing = !0,
            this.drawingMode = !0) : (this.drawingMode = !1,
            this.redrawSiteModel.emit(!0))
        }
        ,
        e.prototype.cancelDrawingMode = function() {
            var t = this.isCuttingMode() ? this.lastSelectedEntity.polygon.holes[this.lastSelectedEntity.polygon.holes.length - 1] : this.lastSelectedEntity.polygon.boundary;
            if (t && t.length > 2) {
                var e = o.copy(t[0]);
                e.equals(t[t.length - 1]) || t.push(e)
            } else
                this.isCuttingMode() ? t.length = 0 : this.deleteEntity(this.lastSelectedEntity);
            this.enableCuttingMode()
        }
        ,
        e.prototype.markAsChanged = function(t) {
            t.dimensionsChanged = !0,
            t.globalNeedsUpdate = !0,
            this.stateDirty = !0
        }
        ,
        e.prototype.hasChanges = function() {
            return this.stateDirty
        }
        ,
        e.prototype.resetChangeTracking = function() {
            this.stateDirty = !1
        }
        ,
        e.prototype.discardChanges = function() {
            var t = this;
            return this.SiteModelRepository.resetCache(),
            this.SiteModelRepository.findAll().then((function() {
                t.resetChangeTracking()
            }
            ))
        }
        ,
        e.prototype.promptOnUnsavedChanges = function() {
            return t.prototype.promptOnUnsavedChanges.call(this, "#confirmUnsavedSiteModel")
        }
        ,
        e.prototype.isSaveInProgress = function() {
            return this.savePromiseWrapper.isInProgress
        }
        ,
        e.prototype.resetTempDrawingProperties = function(t) {
            var e = this;
            this.lastClosingPoint = void 0,
            o.forEach(t, (function(t) {
                t.drawing = !1,
                t.children.length && e.resetTempDrawingProperties(t.children)
            }
            ))
        }
        ,
        e.prototype.nameEntity = function(t, e) {
            if (t.type !== u.SiteModelType.FREE_SPACE_NAVIGATION && t.type !== u.SiteModelType.BUILDING)
                if (t.parent) {
                    var n = t.parent.children
                      , i = s.map(s.filter(s.map(n, "name"), (function(t) {
                        return s.isFinite(s.toNumber(t))
                    }
                    )), s.toNumber);
                    if (0 !== i.length) {
                        var r = e ? s.min(i) : s.max(i);
                        t.name = "" + (e ? r - 1 : r + 1)
                    } else
                        t.name = "" + (t.type === u.SiteModelType.FLOOR ? 0 : 1)
                } else
                    console.warn("nameEntity called for an entity with no parents!")
        }
        ,
        e.MIN_FLOOR_HEIGHT = .99,
        e.DEFAULT_FLOOR_HEIGHT = 3,
        e.ɵfac = function(t) {
            return new (t || e)(g.ɵɵinject(v.SiteModelService),g.ɵɵinject(y.GeoTransformationService),g.ɵɵinject(b.SiteModelRepository),g.ɵɵinject(w.RestService))
        }
        ,
        e.ɵprov = g.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(p.SaveDiscardDialogService);
    e.SiteModelEditorService = S,
    g.ɵsetClassMetadata(S, [{
        type: m.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: v.SiteModelService
        }, {
            type: y.GeoTransformationService
        }, {
            type: b.SiteModelRepository
        }, {
            type: w.RestService
        }]
    }
    ), null),
    o.module("IVWebApp").service("SiteModelEditorService", f.downgradeInjectable(S))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(80);
    n(104);
    n(104);
    var s = n(7)
      , c = n(319)
      , l = (n(24),
    n(139),
    n(25))
      , u = (n(15),
    n(54),
    n(181),
    n(40))
      , d = (n(22),
    n(67))
      , p = (n(28),
    n(92))
      , h = n(6)
      , f = n(0)
      , m = n(0)
      , g = n(104)
      , v = n(24)
      , y = n(139)
      , b = n(54)
      , w = n(15)
      , S = n(181)
      , x = n(28)
      , M = n(22)
      , E = function() {
        function t() {}
        return t.PANORAMA = "PANORAMA",
        t.MAP = "MAP",
        t
    }();
    e.RouteViewType = E;
    var C = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e, n, i) || this;
            return o.params = i,
            o.factory = r,
            o.sceneGroup.name = "RouteLayer",
            o.params.distanceThreshold = i.distanceThreshold || 100,
            o.trackSignal(o.factory.RouteService.onRouteChanged).connect((function(t) {
                o.route = t,
                o.renderRoute()
            }
            )),
            o.trackSignal(o.factory.FloorChangerService.onFloorChange).connect((function() {
                return o.renderRoute()
            }
            )),
            o
        }
        return r(e, t),
        e.prototype.onCameraMoveEnd = function(t) {
            this.renderRoute()
        }
        ,
        e.prototype.onBeforeRender = function() {
            if (this.route)
                for (var t = 0, e = this.route.instructions; t < e.length; t++) {
                    e[t].onBeforeRender(this.view)
                }
        }
        ,
        e.prototype.renderRoute = function() {
            this.route && this.route.available && this.factory.ModeService.isNormalMode() ? this.params.visualization === E.MAP ? this.renderRouteInstructions(this.route, !1) : this.params.visualization === E.PANORAMA && this.renderRouteInstructions(this.route, !0) : d.removeChildrenOfObject3D(this.sceneGroup),
            this.view.invalidateScene()
        }
        ,
        e.prototype.renderRouteInstructions = function(t, n) {
            d.removeChildrenOfObject3D(this.sceneGroup);
            var i = c.DEFAULT_ICON_SIZE;
            if (n || (this.metersPerPixel = (this.view.getCamera().right - this.view.getCamera().left) / this.view.getDefaultViewport().getWidth(),
            0 !== (i = s.clamp(e.ICON_SIZE_FACTOR * this.metersPerPixel, 0, e.MAX_ICON_SIZE))))
                for (var r = 0, o = t.instructions; r < o.length; r++) {
                    o[r].render(this.view, this.sceneGroup, n, i)
                }
        }
        ,
        e.prototype.onContextMenu = function(t) {
            var e = this;
            if (!this.factory.LicenseService.isFeatureEnabled(p.LicenseFeatureType.ROUTING) || !this.factory.ConfigService.getBoolean(l.Configs.ROUTING_ENABLED, !1) || 0 === this.factory.SiteModelRepository.data.length || !this.factory.ModeService.isNormalMode() || u.isMobileBrowser())
                return [];
            var n = function(t, n, i) {
                if (e.params.routeEntryHeight) {
                    var r = t.getPositionOnGroundPlane(n.x, n.y, e.params.routeEntryHeight(), t.getDefaultViewport());
                    e.factory.SearchService.routeWithCoordinate(r, i)
                } else {
                    var o = t.unprojectScreenCoordinates(n.x, n.y);
                    e.factory.RaycastService.getCoordinates(t, o, !0).then((function(t) {
                        e.factory.SearchService.routeWithCoordinate(t.position, i)
                    }
                    )).catch((function() {}
                    ))
                }
            };
            return [{
                name: this.factory.gettextCatalog.getString("Route to here"),
                icon: "routeEnd",
                callback: function() {
                    return n(e.view, t, !1)
                }
            }, {
                name: this.factory.gettextCatalog.getString("Route from here"),
                icon: "routeStart",
                callback: function() {
                    return n(e.view, t, !0)
                }
            }]
        }
        ,
        e.ICON_SIZE_FACTOR = 15,
        e.MAX_ICON_SIZE = 9,
        e
    }(a.SceneLayer);
    e.RouteLayer = C;
    var A = function(t) {
        function e(e, n, i, r, o, a, s, c, l) {
            var u = t.call(this) || this;
            return u.RouteService = e,
            u.ModeService = n,
            u.RaycastService = i,
            u.gettextCatalog = r,
            u.LicenseService = o,
            u.ConfigService = a,
            u.SearchService = s,
            u.FloorChangerService = c,
            u.SiteModelRepository = l,
            u
        }
        return r(e, t),
        e.prototype.create = function(t, e, n) {
            return new C(t,e,n,this)
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(m.ɵɵinject(g.RouteService),m.ɵɵinject(v.ModeService),m.ɵɵinject(y.RaycastService),m.ɵɵinject("gettextCatalog"),m.ɵɵinject(b.LicenseService),m.ɵɵinject(w.ConfigService),m.ɵɵinject(S.SearchService),m.ɵɵinject(x.FloorChangerService),m.ɵɵinject(M.SiteModelRepository))
        }
        ,
        e.ɵprov = m.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(a.SceneLayerFactory);
    e.RouteLayerFactory = A,
    m.ɵsetClassMetadata(A, [{
        type: f.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: g.RouteService
        }, {
            type: v.ModeService
        }, {
            type: y.RaycastService
        }, {
            type: void 0,
            decorators: [{
                type: f.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: b.LicenseService
        }, {
            type: w.ConfigService
        }, {
            type: S.SearchService
        }, {
            type: x.FloorChangerService
        }, {
            type: M.SiteModelRepository
        }]
    }
    ), null),
    o.module("IVWebApp").service("RouteLayerFactory", h.downgradeInjectable(A))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(124)
      , s = n(101)
      , c = (n(49),
    n(80))
      , l = (n(90),
    n(4))
      , u = n(136)
      , d = (n(28),
    n(14),
    n(8))
      , p = n(67)
      , h = n(402)
      , f = (n(36),
    n(17),
    n(6))
      , m = n(0)
      , g = (n(65),
    n(403))
      , v = n(0)
      , y = n(49)
      , b = n(65)
      , w = n(90)
      , S = n(28)
      , x = n(14)
      , M = n(17)
      , E = n(36)
      , C = function(t) {
        function e(e, n, i, r, o, a, s, c, u, d, p) {
            var h = t.call(this, e, n, i, r, u, c, p) || this;
            return h.IV = r,
            h.ImageService = o,
            h.ViewMenuService = a,
            h.ImageRepository = s,
            h.FloorChangerService = c,
            h.GeoTransformationService = u,
            h.ViewService = d,
            h.markerMaterials = [],
            h.markersVisible = !1,
            h.initOptionalParams(i),
            h.initLocationMarkerMaterials(e, i),
            h.trackSignal(h.ImageRepository.transformLocationAction).connect((function() {
                return h.updateSafe()
            }
            )),
            h.trackSignal(a.onShowLocationMarkersChanged).connect((function(t) {
                return h.onShowLocationMarkersChange(t)
            }
            )),
            h.geometry = new l.CircleGeometry(.5,i.circleSegments),
            h
        }
        return r(e, t),
        e.prototype.initOptionalParams = function(t) {
            this.params = t,
            this.params.distanceThreshold = this.params.distanceThreshold || 20,
            this.params.circleSegments = this.params.circleSegments || 12,
            this.params.hideMarkersTimeout = this.params.hideMarkersTimeout || 3e3,
            this.params.markerColor = void 0 !== this.params.markerColor ? new l.Color(this.params.markerColor) : new l.Color(16777215),
            this.params.markerOpacity = this.params.markerOpacity || .3,
            this.params.markerHighlightOpacity = this.params.markerHighlightOpacity || .7,
            this.params.markerBlending = void 0 !== this.params.markerBlending ? this.params.markerBlending : l.NormalBlending,
            this.params.isMoveMouseToShowEnabled = this.params.isMoveMouseToShowEnabled || function() {
                return !0
            }
            ,
            this.params.isVisibilityToggleEnabled = this.params.isVisibilityToggleEnabled || function() {
                return !1
            }
            ,
            this.params.isClickToShowEnabled = this.params.isClickToShowEnabled || function() {
                return !0
            }
            ,
            this.params.isSwappingViewsEnabled = this.params.isSwappingViewsEnabled || function() {
                return !1
            }
            ,
            this.params.viewportEventMask = this.params.viewportEventMask || new Map
        }
        ,
        e.prototype.initLocationMarkerMaterials = function(t, e) {
            var n = s.getTextureLoader().load(this.params.locationMarkerPng, (function() {
                return t.invalidateScene()
            }
            ));
            this.locationMarkerMaterial = this.getMarkerMaterial(e.markerColor, 0, n);
            var i = s.getTextureLoader().load(this.params.locationMarkerHighlightPng, (function() {
                return t.invalidateScene()
            }
            ));
            i.anisotropy = s.ANISOTROPIC_LEVEL,
            this.highlightLocationMarkerMaterial = this.getMarkerMaterial(e.markerColor, e.markerHighlightOpacity, i)
        }
        ,
        e.prototype.onShowLocationMarkersChange = function(t) {
            t ? this.updateSafe() : this.clear()
        }
        ,
        e.prototype.onTransitionStart = function(t) {
            t.image || this.clear()
        }
        ,
        e.prototype.onBeforeRender = function() {
            this.isOrthographicCameraSceneReadyToBeUpdated() && (p.setMeshScreenSize(this.getActiveViewport(), this.sceneGroup.children, e.ORTHO_MARKER_SIZE, !1, !0),
            t.prototype.onBeforeRender.call(this, this.getActiveViewport().camera))
        }
        ,
        e.prototype.update = function() {
            var t = this;
            if (!1 === this.ViewMenuService.config.showLocationMarkers)
                return this.clear(),
                void (this.visible = !0);
            this.getImages().then((function(e) {
                t.sceneGroup && (t.clear(),
                t.visible = !0,
                e.forEach((function(e) {
                    return t.sceneGroup.add(t.getLocationMesh(e))
                }
                )),
                t.view.invalidateScene())
            }
            )).catch(d.handleWarning)
        }
        ,
        e.prototype.clear = function() {
            for (this.visible = !1; this.sceneGroup.children.length > 0; )
                this.sceneGroup.remove(this.sceneGroup.children[0]);
            this.view.invalidateScene()
        }
        ,
        e.prototype.onDestroy = function() {
            p.removeChildrenOfObject3D(this.sceneGroup),
            this.geometry && this.geometry.dispose(),
            this.markerMaterials.forEach((function(t) {
                return t.forEach((function(t) {
                    return t.dispose()
                }
                ))
            }
            )),
            this.locationMarkerMaterial.dispose(),
            this.highlightLocationMarkerMaterial.dispose(),
            t.prototype.onDestroy.call(this)
        }
        ,
        e.prototype.getLocationMesh = function(t) {
            var e = this
              , n = new l.Mesh(this.geometry,this.locationMarkerMaterial);
            n.name = "location",
            n.userData = {
                image: t
            };
            n.position.copy(t.floorLocation);
            n.quaternion.copy(t.floorOrientation ? t.floorOrientation : t.orientation);
            n.onClick = function() {
                return e.handleClick(n)
            }
            ,
            n.onMouseOver = function() {
                return e.handleMouseOver(n)
            }
            ,
            n.onMouseOut = function() {
                return e.handleMouseOut(n)
            }
            
            return n
        }
        ,
        e.prototype.handleMouseOut = function(t) {
            t.material = this.locationMarkerMaterial,
            t.quaternion.copy(t.userData.image.floorOrientation ? t.userData.image.floorOrientation : t.userData.image.orientation),
            this.view.invalidateScene()
        }
        ,
        e.prototype.handleMouseOver = function(t) {
            if (this.params.isClickToShowEnabled() && !this.params.isVisibilityToggleEnabled()) {
                t.material = this.highlightLocationMarkerMaterial;
                var e = this.view.getImage() ? this.view.getImage().location : this.getActiveViewport().camera.position
                  , n = (new l.Vector3).subVectors(t.position, e)
                  , i = Math.atan2(n.y, n.x);
                t.rotation.z = i - Math.PI / 2,
                this.view.invalidateScene()
            }
        }
        ,
        e.prototype.handleClick = function(t) {
            return !(!this.params.isClickToShowEnabled() || this.params.isVisibilityToggleEnabled() && !this.markersVisible || !this.params.isVisibilityToggleEnabled() && t.material !== this.highlightLocationMarkerMaterial) && (this.IV.moveToImage(t.userData.image).catch(d.handleWarning),
            this.params.isSwappingViewsEnabled() && this.ViewService.swapViews(),
            !0)
        }
        ,
        e.prototype.getImages = function() {
            var t = this.getActiveViewport().camera
              , e = (new u.ImageRestFilterBuilder).hidden(!1).siteModel(this.FloorChangerService.currentFloors).siteModel([void 0]);
            if (t instanceof l.PerspectiveCamera)
                this.filterPerspective(e, t);
            else if (t instanceof l.OrthographicCamera) {
                if (!this.isOrthographicCameraSceneReadyToBeUpdated())
                    return Promise.reject("Orthographic camera not ready");
                this.filterOrthographic(e, t)
            }
            return this.ImageRepository.filter(e.build())
        }
        ,
        e.prototype.filterPerspective = function(t, e) {
            var n = this.view.getImage()
              , i = !n || n.location.distanceTo(e.position) > this.params.distanceThreshold / 4 ? this.GeoTransformationService.vectorToGlobal(e.position) : n.globalLocation
              , r = new l.Vector2(i.x,i.y);
            t.location(r).radius(this.params.distanceThreshold)
        }
        ,
        e.prototype.filterOrthographic = function(t, n) {
            var i = new l.Vector3(n.left,n.bottom,0)
              , r = n.position.clone();
            r.addScaledVector(i, e.ORTHO_BOUNDS_SCALE),
            r = this.GeoTransformationService.vectorToGlobal(r);
            var o = n.position.clone();
            o.addScaledVector(i, -e.ORTHO_BOUNDS_SCALE),
            o = this.GeoTransformationService.vectorToGlobal(o);
            var a = this.getActiveViewport().screenWidth / (n.right - n.left)
              , s = e.ORTHO_MARKER_SIZE / a * e.ORTHO_SPACING_FACTOR;
            s >= e.ORTHO_MIN_SPACING_THRESHOLD && t.spacing(s),
            t.boundingBox(r.x, r.y, o.x, o.y)
        }
        ,
        e.prototype.getMarkerMaterial = function(t, e, n) {
            var i;
            return this.markerMaterials[t.getHex()] && this.markerMaterials[t.getHex()][e] && (i = this.markerMaterials[t.getHex()][e]),
            i || (this.params.markerBlending === l.SubtractiveBlending && t.setHex(16777215 - t.getHex()),
            i = new l.MeshBasicMaterial({
                color: t.getHex(),
                opacity: e,
                side: l.DoubleSide,
                transparent: !0,
                depthTest: !1,
                depthWrite: !1,
                map: n,
                blending: this.params.markerBlending
            }),
            this.markerMaterials[t.getHex()] || (this.markerMaterials[t.getHex()] = []),
            this.markerMaterials[t.getHex()][e] = i),
            i
        }
        ,
        e.prototype.showMarkers = function() {
            var t = this;
            if (this.markersVisible)
                this.refreshHideTimer();
            else {
                var n = new a.Tween(this.locationMarkerMaterial).to({
                    opacity: this.params.markerOpacity
                }, e.SHOW_HIDE_MARKERS_DURATION).easing(a.Easing.Linear.None.bind(this)).onComplete((function() {
                    t.view.forgetTween(n),
                    t.refreshHideTimer()
                }
                )).start();
                this.view.watchTween(n),
                this.markersVisible = !0
            }
        }
        ,
        e.prototype.hideMarkers = function() {
            var t = this
              , n = new a.Tween(this.locationMarkerMaterial).to({
                opacity: 0
            }, e.SHOW_HIDE_MARKERS_DURATION).easing(a.Easing.Linear.None.bind(this)).onComplete((function() {
                t.view.forgetTween(n),
                t.markersVisible = !1
            }
            )).start();
            this.view.watchTween(n)
        }
        ,
        e.prototype.refreshHideTimer = function() {
            this.params.isVisibilityToggleEnabled() || (this.hideTimer && window.clearTimeout(this.hideTimer),
            this.hideTimer = window.setTimeout(this.hideMarkers.bind(this), this.params.hideMarkersTimeout))
        }
        ,
        e.prototype.onMouseMove = function(t) {
            this.isEventMaskedInViewport(t, g.EventType.MOUSE_MOVE) || this.params.isMoveMouseToShowEnabled() && this.showMarkers()
        }
        ,
        e.prototype.onClick = function(t) {
            return !this.isEventMaskedInViewport(t, g.EventType.CLICK) && (!!this.params.isClickToShowEnabled() && (this.markersVisible ? this.params.isVisibilityToggleEnabled() && this.hideMarkers() : this.showMarkers(),
            !1))
        }
        ,
        e.prototype.isEventMaskedInViewport = function(t, e) {
            var n = this.view.getViewport(t.x, t.y).name;
            return (this.params.viewportEventMask.get(n) || []).some((function(t) {
                return t === e
            }
            ))
        }
        ,
        e.ORTHO_MARKER_SIZE = 12,
        e.ORTHO_MIN_SPACING_THRESHOLD = .75,
        e.ORTHO_SPACING_FACTOR = 1.3,
        e.SHOW_HIDE_MARKERS_DURATION = 300,
        e
    }(h.ScalableSceneLayer);
    e.LocationMarkerLayer = C;
    var A = function(t) {
        function e(e, n, i, r, o, a, s, c) {
            var l = t.call(this) || this;
            return l.IV = e,
            l.ImageService = n,
            l.ViewMenuService = i,
            l.ImageRepository = r,
            l.FloorChangerService = o,
            l.GeoTransformationService = a,
            l.ViewService = s,
            l.AuthenticationService = c,
            l
        }
        return r(e, t),
        e.prototype.create = function(t, e, n) {
            return new C(t,e,n,this.IV,this.ImageService,this.ViewMenuService,this.ImageRepository,this.FloorChangerService,this.GeoTransformationService,this.ViewService,this.AuthenticationService)
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(v.ɵɵinject("IV"),v.ɵɵinject(y.ImageService),v.ɵɵinject(b.ViewMenuService),v.ɵɵinject(w.ImageRepository),v.ɵɵinject(S.FloorChangerService),v.ɵɵinject(x.GeoTransformationService),v.ɵɵinject(M.ViewService),v.ɵɵinject(E.AuthenticationService))
        }
        ,
        e.ɵprov = v.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(c.SceneLayerFactory);
    e.LocationMarkerLayerFactory = A,
    v.ɵsetClassMetadata(A, [{
        type: m.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: void 0,
            decorators: [{
                type: m.Inject,
                args: ["IV"]
            }]
        }, {
            type: y.ImageService
        }, {
            type: b.ViewMenuService
        }, {
            type: w.ImageRepository
        }, {
            type: S.FloorChangerService
        }, {
            type: x.GeoTransformationService
        }, {
            type: M.ViewService
        }, {
            type: E.AuthenticationService
        }]
    }
    ), null),
    o.module("IVWebApp").service("LocationMarkerLayerFactory", f.downgradeInjectable(A))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    n(408);
    n(408);
    n(270);
    n(270),
    n(581),
    n(324);
    var i = n(135)
      , r = n(223)
      , o = n(2)
      , a = (n(31),
    n(16))
      , s = (n(14),
    n(36),
    n(6))
      , c = n(0)
      , l = n(0)
      , u = n(270)
      , d = n(581)
      , p = n(324)
      , h = n(408)
      , f = n(31)
      , m = n(14)
      , g = n(36)
      , v = function() {
        function t(t, e, n, r, o, s, c) {
            this.VectorMapRepository = t,
            this.VectorLayerRepository = e,
            this.VectorEntityRepository = n,
            this.VectorMapCrsRepository = r,
            this.DatasetRepository = o,
            this.GeoTransformationService = s,
            this.AuthenticationService = c,
            this.manualVisibilityChanged = new a.Signal,
            this.vectorMapsFetched = new a.Signal,
            this.vectorLayerRemoveEvent = new a.Signal,
            this.vectorMapRemoveEvent = new a.Signal,
            this.visibilityUpdateEvent = new a.Signal,
            i.EntityRelationMapper.oneToMany(this.VectorMapRepository, "vectorLayers", this.VectorLayerRepository, "vectorMapId"),
            i.EntityRelationMapper.oneToMany(this.VectorLayerRepository, "vectorEntities", this.VectorEntityRepository, "vectorLayerId"),
            i.EntityRelationMapper.manyToOne(this.VectorLayerRepository, "vectorMap", "vectorMapId", this.VectorMapRepository, !0),
            i.EntityRelationMapper.manyToOne(this.VectorEntityRepository, "vectorLayer", "vectorLayerId", this.VectorLayerRepository, !0)
        }
        return t.prototype.fetch = function() {
            var t = this;
            if (this.AuthenticationService.dataAccessible) {
                var e = this.VectorMapRepository.findAll(!0)
                  , n = this.VectorLayerRepository.findAll(!0)
                  , i = this.VectorEntityRepository.findAll(!0);
                this.initialized = Promise.all([e, n, i]).then((function() {}
                ))
            } else
                this.VectorMapRepository.resetCache(),
                this.VectorLayerRepository.resetCache(),
                this.VectorEntityRepository.resetCache(),
                this.initialized = Promise.resolve();
            return this.initialized = this.initialized.then((function() {
                return t.updateStats(),
                t.DatasetRepository.initialized.then((function() {
                    t.GeoTransformationService.isInitialized() || t.GeoTransformationService.initCoordinatesSystem(t.DatasetRepository.data, t.VectorEntityRepository.data),
                    t.vectorMapsFetched.emit()
                }
                ))
            }
            )),
            this.initialized
        }
        ,
        t.prototype.searchCrs = function(e, n) {
            return this.VectorMapCrsRepository.search(e, n).then((function(e) {
                return e.splice(0, t.QUERY_SEARCH_LIMIT)
            }
            ))
        }
        ,
        t.prototype.updateZ = function(t) {
            t.vectorLayers.forEach((function(e) {
                e.zMin = t.zMin,
                e.zMax = t.zMax
            }
            )),
            this.visibilityUpdateEvent.emit()
        }
        ,
        t.prototype.removeVectorMaps = function(t) {
            for (var e = 0, n = t; e < n.length; e++) {
                var i = n[e];
                this.VectorMapRepository.remove(i).catch((function() {}
                )),
                this.vectorMapRemoveEvent.emit(i)
            }
        }
        ,
        t.prototype.removeVectorLayers = function(t) {
            for (var e = 0, n = t; e < n.length; e++) {
                var i = n[e];
                this.VectorLayerRepository.remove(i).catch((function() {}
                )),
                this.vectorLayerRemoveEvent.emit(i)
            }
        }
        ,
        t.prototype.updateVisibility = function(t) {
            this.visibilityUpdateEvent.emit(),
            t ? this.VectorLayerRepository.save(t).catch((function() {}
            )) : this.VectorLayerRepository.data.length > 0 && this.VectorLayerRepository.save(this.VectorLayerRepository.data).catch((function() {}
            ))
        }
        ,
        t.prototype.updateStats = function() {
            for (var t = 0, e = this.VectorLayerRepository.data; t < e.length; t++) {
                var n = e[t];
                n.stats.features = 0,
                n.stats.vertices = 0
            }
            for (var i = 0, o = this.VectorMapRepository.data; i < o.length; i++) {
                var a = o[i];
                a.stats.features = 0,
                a.stats.vertices = 0
            }
            for (var s = 0, c = this.VectorEntityRepository.data; s < c.length; s++) {
                var l = c[s]
                  , u = l.vectorLayer
                  , d = l.vectorLayer.vectorMap;
                if (u.stats.features++,
                d.stats.features++,
                l.type === r.VectorEntityType.POLYGON) {
                    var p = l.vectorEntity;
                    u.stats.vertices += p.boundary.length,
                    d.stats.vertices += p.boundary.length;
                    for (var h = 0, f = p.holes; h < f.length; h++) {
                        var m = f[h];
                        u.stats.vertices += m.length,
                        d.stats.vertices += m.length
                    }
                } else if (l.type === r.VectorEntityType.LINE) {
                    var g = l.vectorEntity;
                    u.stats.vertices += g.coordinates.length,
                    d.stats.vertices += g.coordinates.length
                }
            }
        }
        ,
        t.QUERY_SEARCH_LIMIT = 20,
        t.ɵfac = function(e) {
            return new (e || t)(l.ɵɵinject(u.VectorMapRepository),l.ɵɵinject(d.VectorLayerRepository),l.ɵɵinject(p.VectorEntityRepository),l.ɵɵinject(h.VectorMapCrsRepository),l.ɵɵinject(f.DatasetRepository),l.ɵɵinject(m.GeoTransformationService),l.ɵɵinject(g.AuthenticationService))
        }
        ,
        t.ɵprov = l.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.VectorMapService = v,
    l.ɵsetClassMetadata(v, [{
        type: c.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: u.VectorMapRepository
        }, {
            type: d.VectorLayerRepository
        }, {
            type: p.VectorEntityRepository
        }, {
            type: h.VectorMapCrsRepository
        }, {
            type: f.DatasetRepository
        }, {
            type: m.GeoTransformationService
        }, {
            type: g.AuthenticationService
        }]
    }
    ), null),
    o.module("IVWebApp").service("VectorMapService", s.downgradeInjectable(v))
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , r = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(24);
    n(24);
    n(49);
    var s = n(20)
      , c = (n(131),
    n(39),
    n(181),
    n(155),
    n(272),
    n(154),
    n(52))
      , l = (n(17),
    n(255))
      , u = n(105)
      , d = (n(199),
    n(269),
    n(8))
      , p = n(21)
      , h = n(6)
      , f = n(0)
      , m = n(560)
      , g = (n(28),
    n(140),
    n(171),
    n(65),
    n(582))
      , v = n(403)
      , y = n(264)
      , b = (n(121),
    n(1239))
      , w = n(1240)
      , S = (n(187),
    n(454))
      , x = n(0)
      , M = n(65)
      , E = n(155)
      , C = n(272)
      , A = n(39)
      , T = n(49)
      , O = n(24)
      , _ = n(131)
      , P = n(181)
      , I = n(154)
      , k = n(199)
      , D = n(269)
      , R = n(17)
      , L = n(28)
      , N = n(140)
      , j = n(171)
      , V = n(21)
      , F = n(582)
      , U = n(121)
      , B = n(187)
      , z = function() {
        function t(t, e, n, i, r, o, s, c, l, u, d, h, f, m, g, v, y, b, w, S, x, M) {
            var E = this;
            this.ViewMenuService = t,
            this.PointCloudMenuService = e,
            this.DatasetAlignmentService = n,
            this.GeoRegistrationService = i,
            this.IV = r,
            this.PoiService = o,
            this.ImageService = s,
            this.ModeService = c,
            this.ToolboxMenuService = l,
            this.SearchService = u,
            this.AlignmentService = d,
            this.SiteModelEditorService = h,
            this.NavGraphEditingService = f,
            this.ViewService = m,
            this.gettext = g,
            this.FloorChangerService = v,
            this.DownloadPointCloudService = y,
            this.MeasurementsService = b,
            this.TrackingService = w,
            this.MeasurementModeService = S,
            this.MagnificationService = x,
            this.StorageService = M,
            this.modes = {
                normal: {
                    name: a.ModeState.NORMAL,
                    HtmlButtonTranslation: this.gettext("IndoorViewer", void 0, "title")
                },
                datasetAlignment: {
                    name: a.ModeState.DATASET_ALIGNMENT,
                    HtmlUiTemplate: p.TemplateName.DATASETALIGNMENT_MODE,
                    HtmlButtonTranslation: this.gettext("Dataset Alignment", void 0, "title"),
                    isCloseDisabled: function() {
                        return E.DatasetAlignmentService.isSavingInProgress()
                    }
                },
                GeoRegistration: {
                    name: a.ModeState.GEO_REGISTRATION,
                    HtmlUiTemplate: p.TemplateName.GEOREGISTRATION_MODE,
                    HtmlButtonTranslation: this.gettext("Geo-Registration", void 0, "title"),
                    isCloseDisabled: function() {
                        return E.GeoRegistrationService.isSavingInProgress()
                    }
                },
                SiteModelEditor: {
                    name: a.ModeState.SITE_MODEL_EDITOR,
                    HtmlUiTemplate: p.TemplateName.SITEMODEL_MODE,
                    HtmlButtonTranslation: this.gettext("Site Model", void 0, "title"),
                    isCloseDisabled: function() {
                        return E.SiteModelEditorService.isSaveInProgress()
                    }
                },
                NavGraphEditor: {
                    name: a.ModeState.NAV_GRAPH_EDITOR,
                    HtmlUiTemplate: p.TemplateName.NAVGRAPH_MODE,
                    HtmlButtonTranslation: this.gettext("Navigation Graph", void 0, "title"),
                    isCloseDisabled: function() {
                        return E.NavGraphEditingService.isSavingInProgress()
                    }
                },
                DownloadPointCloud: {
                    name: a.ModeState.DOWNLOAD_POINT_CLOUD,
                    HtmlUiTemplate: p.TemplateName.DOWNLOAD_POINT_CLOUD_MODE,
                    HtmlButtonTranslation: this.gettext("Crop and Download Point Cloud", void 0, "title")
                },
                Measurements: {
                    name: a.ModeState.MEASUREMENTS,
                    HtmlUiTemplate: p.TemplateName.MEASUREMENTS,
                    HtmlButtonTranslation: this.gettext("Measurements", void 0, "title"),
                    hasCollapsedTemplate: !0
                }
            },
            this.visibilityBackup = {},
            this.NORMAL_ZOOM_LEVEL_RES_MIN = .01,
            this.HIGH_ZOOM_LEVEL_RES_MIN = .002
        }
        return t.prototype.switchToMode = function(t, e) {
            return i(this, void 0, void 0, (function() {
                var n = this;
                return r(this, (function(i) {
                    switch (i.label) {
                    case 0:
                        if (this.ModeService.isSwitchingMode = !0,
                        this.SearchService.resultsList.show && this.SearchService.hideSearchResultsList(),
                        t === this.ModeService.currentMode)
                            return this.ModeService.isSwitchingMode = !1,
                            [2];
                        if (!this.ToolboxMenuService.openMenu(this.modes[t].HtmlButtonTranslation, this.modes[t].HtmlUiTemplate, {
                            afterClose: e,
                            isCloseDisabled: this.modes[t].isCloseDisabled ? function() {
                                return n.modes[t].isCloseDisabled()
                            }
                            : void 0
                        }, !!this.modes[t].hasCollapsedTemplate))
                            return this.ModeService.isSwitchingMode = !1,
                            [2];
                        switch (this.ModeService.currentMode) {
                        case a.ModeState.NORMAL:
                            this.saveVisibility();
                            break;
                        case a.ModeState.GEO_REGISTRATION:
                        case a.ModeState.DATASET_ALIGNMENT:
                        case a.ModeState.SITE_MODEL_EDITOR:
                        case a.ModeState.NAV_GRAPH_EDITOR:
                            break;
                        case a.ModeState.DOWNLOAD_POINT_CLOUD:
                            this.exitDownloadPointCloud();
                            break;
                        case a.ModeState.MEASUREMENTS:
                            this.exitMeasurementsMode();
                            break;
                        default:
                            console.warn("Invalid current mode: " + String(this.ModeService.currentMode))
                        }
                        switch (this.ModeService.currentMode = t,
                        t) {
                        case a.ModeState.NORMAL:
                            return [3, 1];
                        case a.ModeState.GEO_REGISTRATION:
                            return [3, 2];
                        case a.ModeState.DATASET_ALIGNMENT:
                            return [3, 3];
                        case a.ModeState.SITE_MODEL_EDITOR:
                            return [3, 4];
                        case a.ModeState.NAV_GRAPH_EDITOR:
                            return [3, 5];
                        case a.ModeState.DOWNLOAD_POINT_CLOUD:
                            return [3, 6];
                        case a.ModeState.MEASUREMENTS:
                            return [3, 8]
                        }
                        return [3, 10];
                    case 1:
                        return this.switchToNormal(),
                        [3, 11];
                    case 2:
                        return this.switchToGeoRegistration(),
                        this.ToolboxMenuService.beforeClose = function() {
                            return n.GeoRegistrationService.promptOnUnsavedChanges()
                        }
                        ,
                        [3, 11];
                    case 3:
                        return this.switchToDatasetAlignment(),
                        this.ToolboxMenuService.beforeClose = function() {
                            return n.DatasetAlignmentService.promptOnUnsavedChanges()
                        }
                        ,
                        [3, 11];
                    case 4:
                        return this.switchToSiteModelEditor(),
                        this.ToolboxMenuService.beforeClose = function() {
                            return n.SiteModelEditorService.promptOnUnsavedChanges()
                        }
                        ,
                        [3, 11];
                    case 5:
                        return this.switchToNavGraphEditor(),
                        this.ToolboxMenuService.beforeClose = function() {
                            return n.NavGraphEditingService.promptOnUnsavedChanges()
                        }
                        ,
                        [3, 11];
                    case 6:
                        return [4, this.switchToDownloadPointCloudMode()];
                    case 7:
                        return i.sent(),
                        [3, 11];
                    case 8:
                        return [4, this.switchToMeasurementsMode()];
                    case 9:
                        return i.sent(),
                        this.ToolboxMenuService.beforeClose = function() {
                            return n.MeasurementsService.promptOnUnsavedChanges()
                        }
                        ,
                        [3, 11];
                    case 10:
                        console.warn("Invalid mode: " + String(t)),
                        i.label = 11;
                    case 11:
                        return this.PoiService.poisChanged.emit(),
                        this.IV.setSceneRendering("map", this.ViewService.isMapVisible()),
                        this.ModeService.modeChanged.emit(t),
                        this.ModeService.isSwitchingMode = !1,
                        s.invalidateAngular(),
                        [2]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.exitMeasurementsMode = function() {
            this.saveMeasurementModeConfig(),
            this.ViewService.mainView.enableOffscreenRendering = !1,
            this.ViewService.mainView.getMeasurementsLayer().visible = !1,
            this.MeasurementsService.updateMeasurementMode(void 0),
            this.MagnificationService.disableMagnification(),
            this.TrackingService.trackPreDefinedEvent((new b.MeasurementModeExitedEvent).measurementsTaken(this.MeasurementsService.sessionMetrics.total).measurementsSaved(this.MeasurementsService.sessionMetrics.measurementsSaved).measurementsDiscarded(this.MeasurementsService.sessionMetrics.measurementsDiscarded));
            var t = this.ViewService.mainView.getLocationMarkerLayer();
            t.targetViewport = void 0,
            t.setViewportEventMask(new Map),
            this.MeasurementModeService.removeExtraLocationMarkerLayer()
        }
        ,
        t.prototype.saveMeasurementModeConfig = function() {
            var t = this.ViewService.mainView.getDefaultViewport()
              , e = this.ViewService.mainView.getViewportByName(c.SplitViewportName.TOP_VIEW)
              , n = {
                defaultViewportSize: {
                    left: t.left,
                    width: t.width,
                    height: t.height,
                    bottom: t.bottom
                },
                topViewViewportSize: {
                    left: e.left,
                    width: e.width,
                    height: e.height,
                    bottom: e.bottom
                },
                isSidebarCollapsed: this.ToolboxMenuService.isCollapsed,
                isMagnifyingGlassEnabled: this.MagnificationService.isEnabled
            };
            this.StorageService.set(g.MeasurementModeService.MEASUREMENT_MODE_CONFIG_STORAGE_KEY, n)
        }
        ,
        t.prototype.restoreMeasurementModeConfig = function() {
            var t = this.StorageService.get(g.MeasurementModeService.MEASUREMENT_MODE_CONFIG_STORAGE_KEY);
            t && (this.restoreSidebarCollapsedState(t),
            this.restoreMagnificationGlassState(t),
            this.restoreViewportSizes(t))
        }
        ,
        t.prototype.restoreViewportSizes = function(t) {
            var e = t.defaultViewportSize
              , n = t.topViewViewportSize;
            if (void 0 !== e && void 0 !== n) {
                var i = this.ViewService.mainView.getDefaultViewport()
                  , r = this.ViewService.mainView.getViewportByName(c.SplitViewportName.TOP_VIEW);
                this.setViewportSize(i, e),
                this.setViewportSize(r, n)
            }
        }
        ,
        t.prototype.restoreMagnificationGlassState = function(t) {
            t.isMagnifyingGlassEnabled ? this.MagnificationService.enableMagnification() : this.MagnificationService.disableMagnification()
        }
        ,
        t.prototype.restoreSidebarCollapsedState = function(t) {
            t.isSidebarCollapsed && (document.getElementById(S.ToolboxMenuController.verticalToolboxMenuId).style.width = S.ToolboxMenuController.menuCollapsedWidth + "px")
        }
        ,
        t.prototype.setViewportSize = function(t, e) {
            t.setDimensions(e.left, e.bottom, e.width, e.height),
            this.ViewService.mainView.updateViewportActiveFlag(t),
            this.ViewService.mainView.viewportDimensionsChanged.emit()
        }
        ,
        t.prototype.switchToNormal = function() {
            this.setResMin(this.NORMAL_ZOOM_LEVEL_RES_MIN),
            this.ViewService.mainView.disableSplitScreen(m.CameraControlsMode.FIRST_PERSON),
            this.restoreVisibility(),
            this.ViewService.mainView.getVectorMapLayer().unload(),
            this.ViewService.mapView.getVectorMapLayer().refresh(),
            this.restoreViewState()
        }
        ,
        t.prototype.restoreViewState = function() {
            this.PointCloudMenuService.config.showPointCloud ? this.IV.moveToGeoLocation(this.visibilityBackup.viewState.location, !0, this.visibilityBackup.viewState.orientation, void 0, this.visibilityBackup.viewState.fov, void 0, !0).catch(d.handleWarning) : this.IV.moveToImageId(this.visibilityBackup.viewState.imageId, this.visibilityBackup.viewState.orientation, this.visibilityBackup.viewState.fov).catch(d.handleWarning)
        }
        ,
        t.prototype.switchToGeoRegistration = function() {
            this.ViewService.showSecondaryView = !1,
            this.IV.setSceneRendering("panorama", !1),
            this.GeoRegistrationService.fetchGoogleMapsLibrary()
        }
        ,
        t.prototype.switchToDatasetAlignment = function() {
            this.setupSplitPointCloudView(!0, !1, !0, !0, !1, this.PointCloudMenuService.config.showPanosInPerspective, m.CameraControlsMode.FIRST_PERSON, c.SplitViewportMode.FOUR_VIEWPORTS);
            var t = this.ViewService.mainView;
            t.getMapLayer().visible = !1,
            this.setResMin(this.HIGH_ZOOM_LEVEL_RES_MIN),
            t.getCameraFOVLayer().updateCameraFOVLayer()
        }
        ,
        t.prototype.setResMin = function(t) {
            for (var e = 0, n = this.ViewService.mainView.viewports; e < n.length; e++) {
                var i = n[e];
                i.cameraController instanceof y.PanningCameraController && (i.cameraController.resMin = t)
            }
        }
        ,
        t.prototype.switchToSiteModelEditor = function() {
            this.setupSplitPointCloudView(!0, !1, !0, !0, !1, this.PointCloudMenuService.config.showPanosInPerspective, m.CameraControlsMode.FIRST_PERSON, c.SplitViewportMode.FOUR_VIEWPORTS),
            this.setResMin(this.HIGH_ZOOM_LEVEL_RES_MIN);
            var e = this.ViewService.mainView
              , n = e.getMapLayer();
            n.tileColor.setHex(t.DARKENED_TILES),
            n.visible = !0,
            n.targetViewport = e.getViewportByName(c.SplitViewportName.TOP_VIEW),
            e.getCameraFOVLayer().updateCameraFOVLayer()
        }
        ,
        t.prototype.switchToMeasurementsMode = function() {
            return i(this, void 0, void 0, (function() {
                var e, n, i, o, a;
                return r(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        return this.ViewService.mainView.enableOffscreenRendering = !0,
                        this.setupSplitPointCloudView(this.PointCloudMenuService.config.showPointCloud, !1, !0, !0, !0, this.ViewMenuService.config.showPanoramas, m.CameraControlsMode.FIRST_PERSON, c.SplitViewportMode.TWO_VIEWPORTS),
                        e = this.ViewService.mainView,
                        e.getMeasurementsLayer().visible = !0,
                        this.activateMapLayerInMainView(),
                        [4, e.atLeastOneFloorHasMaps()];
                    case 1:
                        return r.sent() || e.maximizeViewport(c.SplitViewportName.DEFAULT_VIEW),
                        n = e.getMapLayer(),
                        i = n.targetViewport,
                        (o = i.cameraController).centerOn(e.getCamera().position),
                        o.resolution = t.DEFAULT_MEASUREMENT_ZOOM_LEVEL,
                        this.setResMin(this.NORMAL_ZOOM_LEVEL_RES_MIN),
                        (a = e.getLocationMarkerLayer()).targetViewport = e.getDefaultViewport(),
                        e.getCameraFOVLayer().updateCameraFOVLayer(),
                        a.setViewportEventMask(s.buildHashMap([[c.SplitViewportName.TOP_VIEW, [v.EventType.CLICK]]])),
                        this.MeasurementModeService.addExtraLocationMarkerLayer(),
                        this.MeasurementsService.sessionMetrics = new w.MeasurementSessionMetrics,
                        this.MagnificationService.enableMagnification(),
                        this.restoreMeasurementModeConfig(),
                        [4, this.MeasurementsService.loadMeasurementsForCurrentUser()];
                    case 2:
                        return r.sent(),
                        [2]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.switchToNavGraphEditor = function() {
            this.setupSplitPointCloudView(!1, !0, !0, !0, !1, !0, m.CameraControlsMode.FIRST_PERSON, c.SplitViewportMode.FULLSCREEN),
            this.setResMin(this.HIGH_ZOOM_LEVEL_RES_MIN),
            this.ViewService.viewSwapAllowed = !1;
            var e = this.ViewService.mainView
              , n = e.getMapLayer();
            n.tileColor.setHex(t.WHITE_TILES),
            n.visible = !0,
            n.targetViewport = e.getViewportByName(c.SplitViewportName.TOP_VIEW),
            e.getCursorLayer().setVisibility(!1),
            this.ViewService.showSecondaryView = !1,
            e.switchViewMode(u.SceneViewMode.Map).catch(d.handleWarning),
            this.NavGraphEditingService.startNodeEditing()
        }
        ,
        t.prototype.switchToDownloadPointCloudMode = function() {
            return i(this, void 0, void 0, (function() {
                var t, e, n;
                return r(this, (function(i) {
                    switch (i.label) {
                    case 0:
                        return t = this.ViewService.mainView,
                        e = this.DownloadPointCloudService.getCubeStartingPosition(),
                        n = this.PointCloudMenuService.isCloudVisible(),
                        this.setupSplitPointCloudView(!1, !1, !1, !1, !1, !1, m.CameraControlsMode.ORBIT, c.SplitViewportMode.FULLSCREEN),
                        this.setResMin(this.NORMAL_ZOOM_LEVEL_RES_MIN),
                        [4, t.loadPointCloudModule()];
                    case 1:
                        return i.sent(),
                        [4, this.DownloadPointCloudService.addCubeAndStartClippingPointCloud(e)];
                    case 2:
                        return i.sent(),
                        this.DownloadPointCloudService.resetStartingPosition(),
                        this.activateMapLayerInMainView(),
                        this.enterDownloadPointCloudMode(n, t, e),
                        [2]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.enterDownloadPointCloudMode = function(t, e, n) {
            var i = t ? u.SceneViewMode.Perspective : u.SceneViewMode.Map;
            i === u.SceneViewMode.Perspective && this.DownloadPointCloudService.showVolumeLayerOnMap(),
            this.DownloadPointCloudService.disableOptionsFromViewMenu(i),
            this.TrackingService.trackPointCloudDownloadEnteredIntoMode(i),
            e.getCursorLayer().setVisibility(!1),
            this.ViewService.showSecondaryView = i === u.SceneViewMode.Perspective,
            e.switchViewMode(i, !1, n).catch(d.handleWarning),
            this.DownloadPointCloudService.has3dVolumeBeenModified = !1
        }
        ,
        t.prototype.activateMapLayerInMainView = function() {
            var e = this.ViewService.mainView
              , n = e.getMapLayer();
            n.tileColor.setHex(t.WHITE_TILES),
            n.visible = !0,
            n.targetViewport = e.getViewportByName(c.SplitViewportName.TOP_VIEW),
            this.ViewService.viewSwapAllowed = !1
        }
        ,
        t.prototype.exitDownloadPointCloud = function() {
            this.DownloadPointCloudService.restoreOptionsFromViewMenu();
            var t = this.ViewService.mainView.getVolumeClippingLayer();
            t.removeClipBoxes(),
            t.visible = !1,
            this.DownloadPointCloudService.hideVolumeLayerOnMap()
        }
        ,
        t.prototype.setupSplitPointCloudView = function(t, e, n, i, r, o, a, s) {
            this.setVisibility(t, 1 / 0, o, !1, e, r, n, i, !1),
            this.ViewService.setPrimaryView(l.ViewType.PANORAMA),
            this.IV.setSceneRendering("panorama", !0),
            this.ViewService.mainView.enableSplitScreen(a, s),
            this.ViewService.mainView.getVectorMapLayer().load(),
            o && this.moveToClosestImage()
        }
        ,
        t.prototype.moveToClosestImage = function() {
            var t = this
              , e = this.ViewService.mainView.getCamera().position;
            this.ImageService.getClosestImage(e).then((function(e) {
                return t.IV.moveToImage(e)
            }
            )).catch(d.handleWarning)
        }
        ,
        t.prototype.setVisibility = function(t, e, n, i, r, o, a, s, c) {
            void 0 === c && (c = !1),
            this.PointCloudMenuService.config.showPointCloud = t,
            this.PointCloudMenuService.config.maxDist = e,
            this.ViewMenuService.showPanoramas(n, c),
            this.ViewMenuService.showNavGraph(r),
            this.ViewMenuService.showLocationMarkers(o),
            this.ViewService.showSecondaryView = i,
            this.ViewService.mainView.getCursorLayer().setVisibility(a),
            this.ViewService.mapView.getCameraFOVLayer().visible = s,
            this.PointCloudMenuService.configShowPointCloudChanged.emit(t, c)
        }
        ,
        t.prototype.restoreVisibility = function() {
            this.setVisibility(this.visibilityBackup.pointCloud, this.visibilityBackup.pointCloudMaxDist, this.visibilityBackup.panoramas, this.visibilityBackup.insetView, this.visibilityBackup.navgraph, this.visibilityBackup.locationMarkers, this.visibilityBackup.cursor, this.visibilityBackup.cameraFov, !0),
            this.ViewService.viewSwapAllowed = !0,
            this.ViewService.setPrimaryView(this.visibilityBackup.primaryView),
            this.IV.setSceneRendering(this.visibilityBackup.primaryView, !0),
            this.ViewService.mainView.setViewMode(this.visibilityBackup.sceneViewMode)
        }
        ,
        t.prototype.saveVisibility = function() {
            this.visibilityBackup.pointCloud = this.PointCloudMenuService.config.showPointCloud,
            this.visibilityBackup.pointCloudMaxDist = this.PointCloudMenuService.config.maxDist,
            this.visibilityBackup.panoramas = this.ViewMenuService.config.showPanoramas,
            this.visibilityBackup.navgraph = this.ViewMenuService.config.showNavGraph,
            this.visibilityBackup.locationMarkers = this.ViewMenuService.config.showLocationMarkers,
            this.visibilityBackup.insetView = this.ViewService.showSecondaryView,
            this.visibilityBackup.primaryView = this.ViewService.getPrimaryView(),
            this.visibilityBackup.cursor = this.ViewService.mainView.getCursorLayer().visible,
            this.visibilityBackup.cameraFov = this.ViewService.mapView.getCameraFOVLayer().visible,
            this.visibilityBackup.sceneViewMode = this.ViewService.mainView.viewMode,
            this.visibilityBackup.viewState = this.ViewService.mainView.getCurrentViewState()
        }
        ,
        t.DEFAULT_MEASUREMENT_ZOOM_LEVEL = .05,
        t.WHITE_TILES = 16777215,
        t.DARKENED_TILES = 8355711,
        t.ɵfac = function(e) {
            return new (e || t)(x.ɵɵinject(M.ViewMenuService),x.ɵɵinject("PointCloudMenuService"),x.ɵɵinject(E.DatasetAlignmentService),x.ɵɵinject(C.GeoRegistrationService),x.ɵɵinject("IV"),x.ɵɵinject(A.PoiService),x.ɵɵinject(T.ImageService),x.ɵɵinject(O.ModeService),x.ɵɵinject(_.ToolboxMenuService),x.ɵɵinject(P.SearchService),x.ɵɵinject(I.AlignmentService),x.ɵɵinject(k.SiteModelEditorService),x.ɵɵinject(D.NavGraphEditingService),x.ɵɵinject(R.ViewService),x.ɵɵinject("gettext"),x.ɵɵinject(L.FloorChangerService),x.ɵɵinject(N.DownloadPointCloudService),x.ɵɵinject(j.MeasurementsService),x.ɵɵinject(V.TrackingService),x.ɵɵinject(F.MeasurementModeService),x.ɵɵinject(U.MagnificationService),x.ɵɵinject(B.StorageService))
        }
        ,
        t.ɵprov = x.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.ModeSwitchService = z,
    x.ɵsetClassMetadata(z, [{
        type: f.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: M.ViewMenuService
        }, {
            type: void 0,
            decorators: [{
                type: f.Inject,
                args: ["PointCloudMenuService"]
            }]
        }, {
            type: E.DatasetAlignmentService
        }, {
            type: C.GeoRegistrationService
        }, {
            type: void 0,
            decorators: [{
                type: f.Inject,
                args: ["IV"]
            }]
        }, {
            type: A.PoiService
        }, {
            type: T.ImageService
        }, {
            type: O.ModeService
        }, {
            type: _.ToolboxMenuService
        }, {
            type: P.SearchService
        }, {
            type: I.AlignmentService
        }, {
            type: k.SiteModelEditorService
        }, {
            type: D.NavGraphEditingService
        }, {
            type: R.ViewService
        }, {
            type: void 0,
            decorators: [{
                type: f.Inject,
                args: ["gettext"]
            }]
        }, {
            type: L.FloorChangerService
        }, {
            type: N.DownloadPointCloudService
        }, {
            type: j.MeasurementsService
        }, {
            type: V.TrackingService
        }, {
            type: F.MeasurementModeService
        }, {
            type: U.MagnificationService
        }, {
            type: B.StorageService
        }]
    }
    ), null),
    o.module("IVWebApp").service("ModeSwitchService", h.downgradeInjectable(z))
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , r = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = (n(72),
    n(27),
    n(61),
    n(57))
      , s = n(6)
      , c = n(0)
      , l = n(0)
      , u = n(72)
      , d = n(27)
      , p = n(61)
      , h = function() {
        function t(t, e, n, i, r) {
            this.Upload = t,
            this.JWTTokenService = e,
            this.UserService = n,
            this.MessageReportingService = i,
            this.gettextCatalog = r
        }
        return t.prototype.upload = function(t, e, n) {
            return void 0 === n && (n = "image"),
            i(this, void 0, void 0, (function() {
                var i, o, a;
                return r(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        return (i = {})[n] = e,
                        o = {},
                        this.JWTTokenService.setJwtHeaderOnConfig(o),
                        [4, this.Upload.upload({
                            url: t,
                            method: "POST",
                            withCredentials: !0,
                            data: i,
                            headers: o
                        })];
                    case 1:
                        return a = r.sent(),
                        [2, this.success(e.type, a)]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.isProtectedUploadAvailable = function() {
            return this.UserService.isUserLoggedIn() && this.UserService.userInfo.checkAttribute(a.GroupAttributes.CAN_CREATE_POIS)
        }
        ,
        t.prototype.success = function(t, e) {
            return e && 200 === e.status ? Promise.resolve(e.data) : Promise.reject(e)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(l.ɵɵinject("Upload"),l.ɵɵinject(u.JWTTokenService),l.ɵɵinject(d.UserService),l.ɵɵinject(p.MessageReportingService),l.ɵɵinject("gettextCatalog"))
        }
        ,
        t.ɵprov = l.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.UploadService = h,
    l.ɵsetClassMetadata(h, [{
        type: c.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: void 0,
            decorators: [{
                type: c.Inject,
                args: ["Upload"]
            }]
        }, {
            type: u.JWTTokenService
        }, {
            type: d.UserService
        }, {
            type: p.MessageReportingService
        }, {
            type: void 0,
            decorators: [{
                type: c.Inject,
                args: ["gettextCatalog"]
            }]
        }]
    }
    ), null),
    o.module("IVWebApp").service("UploadService", s.downgradeInjectable(h))
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var i = n(2);
        n(9),
        n(328),
        n(329),
        n(433);
        n(75),
        n(328),
        n(61),
        n(166);
        var r = n(20)
          , o = n(7)
          , a = n(344)
          , s = n(107)
          , c = (n(31),
        n(329),
        n(433),
        n(8))
          , l = (n(154),
        n(55))
          , u = n(16)
          , d = (n(86),
        n(6))
          , p = n(0)
          , h = n(0)
          , f = n(75)
          , m = n(329)
          , g = n(328)
          , v = n(31)
          , y = n(433)
          , b = n(154)
          , w = n(61)
          , S = n(166)
          , x = n(86)
          , M = function() {
            function e(t, e, n, i, r, o, a, s, c, l) {
                this.BundleRepository = t,
                this.DataGenerationService = e,
                this.DataManagementService = n,
                this.DatasetRepository = i,
                this.DatasetsWebArchiveService = r,
                this.AlignmentService = o,
                this.gettextCatalog = a,
                this.MessageReportingService = s,
                this.TiledMapRepository = c,
                this.InstanceInformationService = l,
                this.datasets = [],
                this.bundles = [],
                this.unmanagedBundles = [],
                this.progress = {
                    busy: !1,
                    loadingDatasets: !1,
                    loadingBundles: !1
                },
                this.visualIndexUploadOngoing = !1,
                this.locations = {},
                this.refreshed = new u.Signal
            }
            return e.prototype.scheduleReInit = function() {
                this.showModalOnRequestFinish ? t("#ivReinitModal").modal("show") : this.reInitOnExit = !0
            }
            ,
            e.prototype.refresh = function() {
                var t = this
                  , e = [];
                this.progress.loadingDatasets = !0,
                this.progress.loadingBundles = !0,
                this.datasets.length = 0,
                this.bundles.length = 0,
                this.unmanagedBundles.length = 0,
                e.push(s.promiseFinally(this.DataManagementService.getDatasetsOnDisk().then((function(e) {
                    t.datasets.length = 0;
                    for (var n = 0, i = e; n < i.length; n++) {
                        var r = i[n];
                        r.color = a.ColorUtilities.validateColorString(r.color),
                        t.datasets.push(r)
                    }
                }
                )), (function() {
                    t.AlignmentService.deselectAll(),
                    t.progress.loadingDatasets = !1
                }
                ))),
                e.push(s.promiseFinally(this.DataManagementService.getBundlesOnDisk().then((function(e) {
                    t.bundles.length = 0,
                    t.unmanagedBundles.length = 0,
                    Array.prototype.push.apply(t.bundles, e.filter((function(t) {
                        return t.managed || t.inDatabase
                    }
                    ))),
                    Array.prototype.push.apply(t.unmanagedBundles, e.filter((function(t) {
                        return !(t.managed || t.inDatabase)
                    }
                    )))
                }
                )), (function() {
                    t.AlignmentService.deselectAll(),
                    t.progress.loadingBundles = !1
                }
                ))),
                e.push(this.BundleRepository.findAll(!0)),
                e.push(this.DatasetRepository.findAll(!0)),
                s.promiseFinally(Promise.all(e), (function() {
                    return t.InstanceInformationService.resetCache(),
                    t.refreshed.emit()
                }
                )).catch(c.handleWarning)
            }
            ,
            e.prototype.importDataset = function(t, e) {
                return this.doBeforeDataManagementRequest(),
                this.doDataManagementRequest(this.DataManagementService.importDataset(t.name, [e.longitude, e.latitude, e.height], r.degreesToRadians(e.orientation), e.referenceDatasetId))
            }
            ,
            e.prototype.unloadDataset = function(t, e) {
                return void 0 === e && (e = !1),
                this.doBeforeDataManagementRequest(),
                this.doDataManagementRequest(this.DataManagementService.unloadDataset(t.name), e)
            }
            ,
            e.prototype.removeDatasetFromDisk = function(t, e) {
                return void 0 === e && (e = !1),
                this.doBeforeDataManagementRequest(),
                this.doDataManagementRequest(this.DataManagementService.removeDatasetFromDisk(t.name), e)
            }
            ,
            e.prototype.importBundle = function(t) {
                this.doBeforeDataManagementJob(t),
                this.doDataManagementJob(this.DataManagementService.importBundle(t.file))
            }
            ,
            e.prototype.unloadBundle = function(t) {
                return this.doBeforeDataManagementRequest(),
                this.doDataManagementRequest(this.DataManagementService.unloadBundle(t.serial))
            }
            ,
            e.prototype.removeBundleFromDisk = function(t) {
                return this.doBeforeDataManagementRequest(),
                this.doDataManagementRequest(this.DataManagementService.removeBundleFromDisk(t))
            }
            ,
            e.prototype.downloadZip = function(t) {
                this.DatasetsWebArchiveService.downloadZip(t)
            }
            ,
            e.prototype.convertBundle = function(t) {
                return this.doBeforeDataManagementRequest(),
                this.doDataManagementRequest(this.DataManagementService.convertBundle(t))
            }
            ,
            e.prototype.createMapsAndNavgraph = function(t, e) {
                this.doBeforeDataManagementJob(t),
                this.doDataManagementJob(this.DataGenerationService.createMapsAndNavgraph(t.file, e))
            }
            ,
            e.prototype.downloadMaps = function(t) {
                var e = this;
                this.TiledMapRepository.findAll(!0).then((function(n) {
                    var i = e.BundleRepository.findCachedBySerial(t.serial)
                      , r = n.filter((function(t) {
                        return t.bundle === i
                    }
                    ));
                    e.areTiledMapsValidForDownload(r) && e.DataManagementService.downloadMaps(i)
                }
                )).catch(c.handleWarning)
            }
            ,
            e.prototype.areTiledMapsValidForDownload = function(t) {
                return 0 === t.length ? (this.MessageReportingService.showMessage(this.gettextCatalog.getString("Missing Maps in Bundle", void 0, "title"), this.gettextCatalog.getString("There are no maps in this bundle, please create them first")),
                !1) : void 0 === t[0].floor ? (this.MessageReportingService.showMessage(this.gettextCatalog.getString("Maps Problem", void 0, "title"), this.gettextCatalog.getString("The current maps aren't supported for download/upload. You can recreate them to enable it.")),
                !1) : this.missingNamesInSiteModelEntities(t) ? (this.MessageReportingService.showMessage(this.gettextCatalog.getString("Site Model Naming Problem", void 0, "title"), this.gettextCatalog.getString("Buildings and floors in the site model must have names")),
                !1) : !this.duplicateNamesInSiteModelEntities(t) || (this.MessageReportingService.showMessage(this.gettextCatalog.getString("Site Model Naming Problem", void 0, "title"), this.gettextCatalog.getString("The site model contains duplicate names. Please ensure each building and each floor within a building has a unique name.")),
                !1)
            }
            ,
            e.prototype.missingNamesInSiteModelEntities = function(t) {
                return o.some(t, (function(t) {
                    var e = t.floor
                      , n = e.getEntityOfType(l.SiteModelType.BUILDING);
                    return r.isBlank(e.name) || r.isBlank(n.name)
                }
                ))
            }
            ,
            e.prototype.duplicateNamesInSiteModelEntities = function(t) {
                for (var e = new Set, n = 0, i = t; n < i.length; n++) {
                    var r = i[n].floor.getEntityOfType(l.SiteModelType.BUILDING);
                    e.add(r)
                }
                for (var o = 0, a = Array.from(e); o < a.length; o++) {
                    r = a[o];
                    if (this.containsDuplicateNames(r.children))
                        return !0
                }
                return this.containsDuplicateNames(Array.from(e))
            }
            ,
            e.prototype.containsDuplicateNames = function(t) {
                for (var e = {}, n = 0, i = t; n < i.length; n++) {
                    var r = i[n];
                    if (r.name in e)
                        return !0;
                    e[r.name] = r.name
                }
                return !1
            }
            ,
            e.prototype.createMaps = function(t, e) {
                this.doBeforeDataManagementJob(t),
                this.doDataManagementJob(this.DataGenerationService.createMaps(t.file, e))
            }
            ,
            e.prototype.importMaps = function(t) {
                var e = this;
                this.doBeforeDataManagementRequest(),
                this.doDataManagementRequest(this.DataManagementService.importMaps(t.file)).then((function(t) {
                    0 === t.maps && e.MessageReportingService.showMessage(e.gettextCatalog.getString("No Data Was Imported", void 0, "title"), e.gettextCatalog.getString("No maps were imported"))
                }
                )).catch(c.handleWarning)
            }
            ,
            e.prototype.unloadMaps = function(t) {
                return this.doBeforeDataManagementRequest(),
                this.doDataManagementRequest(this.DataManagementService.unloadMaps(t.serial))
            }
            ,
            e.prototype.createNavgraph = function(t) {
                this.doBeforeDataManagementJob(t),
                this.doDataManagementJob(this.DataGenerationService.createNavgraph(t.file))
            }
            ,
            e.prototype.importNavgraph = function(t) {
                this.doBeforeDataManagementJob(t),
                this.doDataManagementJob(this.DataManagementService.importNavgraph(t.file))
            }
            ,
            e.prototype.unloadNavgraph = function(t) {
                return this.doBeforeDataManagementRequest(),
                this.doDataManagementRequest(this.DataManagementService.unloadNavgraph(t.serial))
            }
            ,
            e.prototype.importWifi = function(t) {
                this.doBeforeDataManagementJob(t),
                this.doDataManagementJob(this.DataManagementService.importWifi(t.file))
            }
            ,
            e.prototype.unloadWifi = function(t) {
                return this.doBeforeDataManagementRequest(),
                this.doDataManagementRequest(this.DataManagementService.unloadWifi(t.serial))
            }
            ,
            e.prototype.getSiteModelWarning = function(t) {
                if (t.datasetsInDatabase > 0 && t.datasetsInDatabase > t.datasetsWithSiteModel)
                    return this.gettextCatalog.getString("The site model does not cover all datasets in the bundle. Therefore the generated maps may not cover all floors.")
            }
            ,
            e.prototype.doBeforeDataManagementJob = function(t) {
                this.currentBundle = t,
                this.dataManagementJobTriggered = !0
            }
            ,
            e.prototype.doBeforeDataManagementRequest = function() {
                this.dataManagementRequestRunning = !0
            }
            ,
            e.prototype.doDataManagementJob = function(t) {
                var e = this;
                t.catch((function() {
                    return e.dataManagementJobTriggered = !1
                }
                ))
            }
            ,
            e.prototype.doDataManagementRequest = function(t, e) {
                var n = this;
                return void 0 === e && (e = !1),
                t.then((function(t) {
                    return e || n.refresh(),
                    n.scheduleReInit(),
                    n.dataManagementRequestRunning = !1,
                    t
                }
                )).catch((function() {
                    n.dataManagementRequestRunning = !1
                }
                ))
            }
            ,
            e.prototype.deleteVisualIndex = function(t) {
                var e = this.BundleRepository.findCachedBySerial(t.serial);
                return this.DataManagementService.deleteVisualIndex(e)
            }
            ,
            e.prototype.setVisualIndexUploadOngoing = function(t) {
                this.visualIndexUploadOngoing = t
            }
            ,
            e.ɵfac = function(t) {
                return new (t || e)(h.ɵɵinject(f.BundleRepository),h.ɵɵinject(m.DataGenerationService),h.ɵɵinject(g.DataManagementService),h.ɵɵinject(v.DatasetRepository),h.ɵɵinject(y.DatasetsWebArchiveService),h.ɵɵinject(b.AlignmentService),h.ɵɵinject("gettextCatalog"),h.ɵɵinject(w.MessageReportingService),h.ɵɵinject(S.TiledMapRepository),h.ɵɵinject(x.InstanceInformationService))
            }
            ,
            e.ɵprov = h.ɵɵdefineInjectable({
                token: e,
                factory: e.ɵfac,
                providedIn: "root"
            }),
            e
        }();
        e.DatasetManagementService = M,
        h.ɵsetClassMetadata(M, [{
            type: p.Injectable,
            args: [{
                providedIn: "root"
            }]
        }], (function() {
            return [{
                type: f.BundleRepository
            }, {
                type: m.DataGenerationService
            }, {
                type: g.DataManagementService
            }, {
                type: v.DatasetRepository
            }, {
                type: y.DatasetsWebArchiveService
            }, {
                type: b.AlignmentService
            }, {
                type: void 0,
                decorators: [{
                    type: p.Inject,
                    args: ["gettextCatalog"]
                }]
            }, {
                type: w.MessageReportingService
            }, {
                type: S.TiledMapRepository
            }, {
                type: x.InstanceInformationService
            }]
        }
        ), null),
        i.module("IVWebApp").service("DatasetManagementService", d.downgradeInjectable(M))
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "b", (function() {
        return i
    }
    )),
    n.d(e, "a", (function() {
        return s
    }
    ));
    var i, r = n(71), o = n(93), a = n(306);
    i || (i = {});
    var s = function() {
        function t(t, e, n) {
            this.kind = t,
            this.value = e,
            this.error = n,
            this.hasValue = "N" === t
        }
        return t.prototype.observe = function(t) {
            switch (this.kind) {
            case "N":
                return t.next && t.next(this.value);
            case "E":
                return t.error && t.error(this.error);
            case "C":
                return t.complete && t.complete()
            }
        }
        ,
        t.prototype.do = function(t, e, n) {
            switch (this.kind) {
            case "N":
                return t && t(this.value);
            case "E":
                return e && e(this.error);
            case "C":
                return n && n()
            }
        }
        ,
        t.prototype.accept = function(t, e, n) {
            return t && "function" == typeof t.next ? this.observe(t) : this.do(t, e, n)
        }
        ,
        t.prototype.toObservable = function() {
            switch (this.kind) {
            case "N":
                return Object(o.a)(this.value);
            case "E":
                return Object(a.a)(this.error);
            case "C":
                return Object(r.b)()
            }
            throw new Error("unexpected notification kind value")
        }
        ,
        t.createNext = function(e) {
            return void 0 !== e ? new t("N",e) : t.undefinedValueNotification
        }
        ,
        t.createError = function(e) {
            return new t("E",void 0,e)
        }
        ,
        t.createComplete = function() {
            return t.completeNotification
        }
        ,
        t.completeNotification = new t("C"),
        t.undefinedValueNotification = new t("N",void 0),
        t
    }()
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return i
    }
    ));
    var i = function() {
        return "function" == typeof Symbol ? Symbol("rxSubscriber") : "@@rxSubscriber_" + Math.random()
    }()
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return i
    }
    ));
    var i = function() {
        function t(t) {
            return Error.call(this),
            this.message = t ? t.length + " errors occurred during unsubscription:\n" + t.map((function(t, e) {
                return e + 1 + ") " + t.toString()
            }
            )).join("\n  ") : "",
            this.name = "UnsubscriptionError",
            this.errors = t,
            this
        }
        return t.prototype = Object.create(Error.prototype),
        t
    }()
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return u
    }
    ));
    var i = n(337)
      , r = n(167)
      , o = n(116)
      , a = n(126)
      , s = n(339)
      , c = n(340)
      , l = n(224)
      , u = function(t) {
        if (t && "function" == typeof t[a.a])
            return u = t,
            function(t) {
                var e = u[a.a]();
                if ("function" != typeof e.subscribe)
                    throw new TypeError("Provided object does not correctly implement Symbol.observable");
                return e.subscribe(t)
            }
            ;
        if (Object(s.a)(t))
            return Object(i.a)(t);
        if (Object(c.a)(t))
            return n = t,
            function(t) {
                return n.then((function(e) {
                    t.closed || (t.next(e),
                    t.complete())
                }
                ), (function(e) {
                    return t.error(e)
                }
                )).then(null, r.a),
                t
            }
            ;
        if (t && "function" == typeof t[o.a])
            return e = t,
            function(t) {
                for (var n = e[o.a](); ; ) {
                    var i = void 0;
                    try {
                        i = n.next()
                    } catch (e) {
                        return t.error(e),
                        t
                    }
                    if (i.done) {
                        t.complete();
                        break
                    }
                    if (t.next(i.value),
                    t.closed)
                        break
                }
                return "function" == typeof n.return && t.add((function() {
                    n.return && n.return()
                }
                )),
                t
            }
            ;
        var e, n, u, d = Object(l.a)(t) ? "an invalid object" : "'" + t + "'";
        throw new TypeError("You provided " + d + " where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.")
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(152);
    function r(t) {
        return !(void 0 === t || 0 === t.indexOf("//") || 0 === t.indexOf("http://") || 0 === t.indexOf("https://") || 0 === t.indexOf("data:"))
    }
    e.isUrlRelative = r,
    e.makeUrlAbsolute = function(t) {
        if (!r(t))
            return t;
        var e = t.startsWith("/") ? t.substr(1) : t;
        return i.getBaseUrl() + e
    }
    ;
    var o = /^([^/]+)?\/\/([^/]*@)?([^/]+)(\/.*)?/;
    e.isSameOrigin = function(t, e) {
        void 0 === e && (e = window.location);
        var n = o.exec(t);
        if (!n)
            return !0;
        var i = n[1]
          , r = n[3];
        return (i || e.protocol) + "//" + r === e.origin
    }
}
, function(t, e, n) {
    "use strict";
    t.exports = function(t, e) {
        return e || (e = {}),
        "string" != typeof (t = t && t.__esModule ? t.default : t) ? t : (/^['"].*['"]$/.test(t) && (t = t.slice(1, -1)),
        e.hash && (t += e.hash),
        /["'() \t\n]/.test(t) || e.needQuotes ? '"'.concat(t.replace(/"/g, '\\"').replace(/\n/g, "\\n"), '"') : t)
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t[t.DOM_VK_CANCEL = 3] = "DOM_VK_CANCEL",
        t[t.DOM_VK_HELP = 6] = "DOM_VK_HELP",
        t[t.DOM_VK_BACK_SPACE = 8] = "DOM_VK_BACK_SPACE",
        t[t.DOM_VK_TAB = 9] = "DOM_VK_TAB",
        t[t.DOM_VK_CLEAR = 12] = "DOM_VK_CLEAR",
        t[t.DOM_VK_RETURN = 13] = "DOM_VK_RETURN",
        t[t.DOM_VK_ENTER = 14] = "DOM_VK_ENTER",
        t[t.DOM_VK_SHIFT = 16] = "DOM_VK_SHIFT",
        t[t.DOM_VK_CONTROL = 17] = "DOM_VK_CONTROL",
        t[t.DOM_VK_ALT = 18] = "DOM_VK_ALT",
        t[t.DOM_VK_PAUSE = 19] = "DOM_VK_PAUSE",
        t[t.DOM_VK_CAPS_LOCK = 20] = "DOM_VK_CAPS_LOCK",
        t[t.DOM_VK_ESCAPE = 27] = "DOM_VK_ESCAPE",
        t[t.DOM_VK_SPACE = 32] = "DOM_VK_SPACE",
        t[t.DOM_VK_PAGE_UP = 33] = "DOM_VK_PAGE_UP",
        t[t.DOM_VK_PAGE_DOWN = 34] = "DOM_VK_PAGE_DOWN",
        t[t.DOM_VK_END = 35] = "DOM_VK_END",
        t[t.DOM_VK_HOME = 36] = "DOM_VK_HOME",
        t[t.DOM_VK_LEFT = 37] = "DOM_VK_LEFT",
        t[t.DOM_VK_UP = 38] = "DOM_VK_UP",
        t[t.DOM_VK_RIGHT = 39] = "DOM_VK_RIGHT",
        t[t.DOM_VK_DOWN = 40] = "DOM_VK_DOWN",
        t[t.DOM_VK_PRINTSCREEN = 44] = "DOM_VK_PRINTSCREEN",
        t[t.DOM_VK_INSERT = 45] = "DOM_VK_INSERT",
        t[t.DOM_VK_DELETE = 46] = "DOM_VK_DELETE",
        t[t.DOM_VK_0 = 48] = "DOM_VK_0",
        t[t.DOM_VK_1 = 49] = "DOM_VK_1",
        t[t.DOM_VK_2 = 50] = "DOM_VK_2",
        t[t.DOM_VK_3 = 51] = "DOM_VK_3",
        t[t.DOM_VK_4 = 52] = "DOM_VK_4",
        t[t.DOM_VK_5 = 53] = "DOM_VK_5",
        t[t.DOM_VK_6 = 54] = "DOM_VK_6",
        t[t.DOM_VK_7 = 55] = "DOM_VK_7",
        t[t.DOM_VK_8 = 56] = "DOM_VK_8",
        t[t.DOM_VK_9 = 57] = "DOM_VK_9",
        t[t.DOM_VK_SEMICOLON = 59] = "DOM_VK_SEMICOLON",
        t[t.DOM_VK_EQUALS = 61] = "DOM_VK_EQUALS",
        t[t.DOM_VK_A = 65] = "DOM_VK_A",
        t[t.DOM_VK_B = 66] = "DOM_VK_B",
        t[t.DOM_VK_C = 67] = "DOM_VK_C",
        t[t.DOM_VK_D = 68] = "DOM_VK_D",
        t[t.DOM_VK_E = 69] = "DOM_VK_E",
        t[t.DOM_VK_F = 70] = "DOM_VK_F",
        t[t.DOM_VK_G = 71] = "DOM_VK_G",
        t[t.DOM_VK_H = 72] = "DOM_VK_H",
        t[t.DOM_VK_I = 73] = "DOM_VK_I",
        t[t.DOM_VK_J = 74] = "DOM_VK_J",
        t[t.DOM_VK_K = 75] = "DOM_VK_K",
        t[t.DOM_VK_L = 76] = "DOM_VK_L",
        t[t.DOM_VK_M = 77] = "DOM_VK_M",
        t[t.DOM_VK_N = 78] = "DOM_VK_N",
        t[t.DOM_VK_O = 79] = "DOM_VK_O",
        t[t.DOM_VK_P = 80] = "DOM_VK_P",
        t[t.DOM_VK_Q = 81] = "DOM_VK_Q",
        t[t.DOM_VK_R = 82] = "DOM_VK_R",
        t[t.DOM_VK_S = 83] = "DOM_VK_S",
        t[t.DOM_VK_T = 84] = "DOM_VK_T",
        t[t.DOM_VK_U = 85] = "DOM_VK_U",
        t[t.DOM_VK_V = 86] = "DOM_VK_V",
        t[t.DOM_VK_W = 87] = "DOM_VK_W",
        t[t.DOM_VK_X = 88] = "DOM_VK_X",
        t[t.DOM_VK_Y = 89] = "DOM_VK_Y",
        t[t.DOM_VK_Z = 90] = "DOM_VK_Z",
        t[t.DOM_VK_CONTEXT_MENU = 93] = "DOM_VK_CONTEXT_MENU",
        t[t.DOM_VK_NUMPAD0 = 96] = "DOM_VK_NUMPAD0",
        t[t.DOM_VK_NUMPAD1 = 97] = "DOM_VK_NUMPAD1",
        t[t.DOM_VK_NUMPAD2 = 98] = "DOM_VK_NUMPAD2",
        t[t.DOM_VK_NUMPAD3 = 99] = "DOM_VK_NUMPAD3",
        t[t.DOM_VK_NUMPAD4 = 100] = "DOM_VK_NUMPAD4",
        t[t.DOM_VK_NUMPAD5 = 101] = "DOM_VK_NUMPAD5",
        t[t.DOM_VK_NUMPAD6 = 102] = "DOM_VK_NUMPAD6",
        t[t.DOM_VK_NUMPAD7 = 103] = "DOM_VK_NUMPAD7",
        t[t.DOM_VK_NUMPAD8 = 104] = "DOM_VK_NUMPAD8",
        t[t.DOM_VK_NUMPAD9 = 105] = "DOM_VK_NUMPAD9",
        t[t.DOM_VK_MULTIPLY = 106] = "DOM_VK_MULTIPLY",
        t[t.DOM_VK_ADD = 107] = "DOM_VK_ADD",
        t[t.DOM_VK_SEPARATOR = 108] = "DOM_VK_SEPARATOR",
        t[t.DOM_VK_SUBTRACT = 109] = "DOM_VK_SUBTRACT",
        t[t.DOM_VK_DECIMAL = 110] = "DOM_VK_DECIMAL",
        t[t.DOM_VK_DIVIDE = 111] = "DOM_VK_DIVIDE",
        t[t.DOM_VK_F1 = 112] = "DOM_VK_F1",
        t[t.DOM_VK_F2 = 113] = "DOM_VK_F2",
        t[t.DOM_VK_F3 = 114] = "DOM_VK_F3",
        t[t.DOM_VK_F4 = 115] = "DOM_VK_F4",
        t[t.DOM_VK_F5 = 116] = "DOM_VK_F5",
        t[t.DOM_VK_F6 = 117] = "DOM_VK_F6",
        t[t.DOM_VK_F7 = 118] = "DOM_VK_F7",
        t[t.DOM_VK_F8 = 119] = "DOM_VK_F8",
        t[t.DOM_VK_F9 = 120] = "DOM_VK_F9",
        t[t.DOM_VK_F10 = 121] = "DOM_VK_F10",
        t[t.DOM_VK_F11 = 122] = "DOM_VK_F11",
        t[t.DOM_VK_F12 = 123] = "DOM_VK_F12",
        t[t.DOM_VK_F13 = 124] = "DOM_VK_F13",
        t[t.DOM_VK_F14 = 125] = "DOM_VK_F14",
        t[t.DOM_VK_F15 = 126] = "DOM_VK_F15",
        t[t.DOM_VK_F16 = 127] = "DOM_VK_F16",
        t[t.DOM_VK_F17 = 128] = "DOM_VK_F17",
        t[t.DOM_VK_F18 = 129] = "DOM_VK_F18",
        t[t.DOM_VK_F19 = 130] = "DOM_VK_F19",
        t[t.DOM_VK_F20 = 131] = "DOM_VK_F20",
        t[t.DOM_VK_F21 = 132] = "DOM_VK_F21",
        t[t.DOM_VK_F22 = 133] = "DOM_VK_F22",
        t[t.DOM_VK_F23 = 134] = "DOM_VK_F23",
        t[t.DOM_VK_F24 = 135] = "DOM_VK_F24",
        t[t.DOM_VK_NUM_LOCK = 144] = "DOM_VK_NUM_LOCK",
        t[t.DOM_VK_SCROLL_LOCK = 145] = "DOM_VK_SCROLL_LOCK",
        t[t.DOM_VK_COMMA = 188] = "DOM_VK_COMMA",
        t[t.DOM_VK_PERIOD = 190] = "DOM_VK_PERIOD",
        t[t.DOM_VK_SLASH = 191] = "DOM_VK_SLASH",
        t[t.DOM_VK_BACK_QUOTE = 192] = "DOM_VK_BACK_QUOTE",
        t[t.DOM_VK_OPEN_BRACKET = 219] = "DOM_VK_OPEN_BRACKET",
        t[t.DOM_VK_BACK_SLASH = 220] = "DOM_VK_BACK_SLASH",
        t[t.DOM_VK_CLOSE_BRACKET = 221] = "DOM_VK_CLOSE_BRACKET",
        t[t.DOM_VK_QUOTE = 222] = "DOM_VK_QUOTE",
        t[t.DOM_VK_META = 224] = "DOM_VK_META"
    }(e.KeyEvent || (e.KeyEvent = {}))
}
, function(t, e) {
    var n;
    n = function() {
        return this
    }();
    try {
        n = n || new Function("return this")()
    } catch (t) {
        "object" == typeof window && (n = window)
    }
    t.exports = n
}
, function(t, e, n) {
    var i = n(87)
      , r = "[" + n(301) + "]"
      , o = RegExp("^" + r + r + "*")
      , a = RegExp(r + r + "*$")
      , s = function(t) {
        return function(e) {
            var n = String(i(e));
            return 1 & t && (n = n.replace(o, "")),
            2 & t && (n = n.replace(a, "")),
            n
        }
    };
    t.exports = {
        start: s(1),
        end: s(2),
        trim: s(3)
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    n(1010);
    var i = n(520);
    function r(t) {
        var e = t.firstElementChild
          , n = t.lastElementChild
          , i = e.firstElementChild;
        n.scrollLeft = n.scrollWidth,
        n.scrollTop = n.scrollHeight,
        i.style.width = String(e.offsetWidth + 1) + "px",
        i.style.height = String(e.offsetHeight + 1) + "px",
        e.scrollLeft = e.scrollWidth,
        e.scrollTop = e.scrollHeight
    }
    e.addResizeEventListener = function(t, e) {
        var n = document.createElement("div");
        n.className = "resize-triggers",
        n.innerHTML = '<div class="expand-trigger"><div></div></div><div class="contract-trigger"></div>';
        var o = function() {
            e(),
            r(n)
        }
          , a = function() {
            i.stylesLoaded() ? (t.appendChild(n),
            r(n),
            n.addEventListener("scroll", o, !0),
            n.addEventListener(function(t) {
                t || (t = document.createElement("fakeelement"));
                var e = "animationstart";
                if (void 0 === t.style.animationName)
                    for (var n = 0, i = [{
                        prefix: "Webkit",
                        event: "webkitAnimationStart"
                    }, {
                        prefix: "Moz",
                        event: "animationstart"
                    }, {
                        prefix: "O",
                        event: "oAnimationStart"
                    }, {
                        prefix: "ms",
                        event: "MSAnimationStart"
                    }]; n < i.length; n++) {
                        var r = i[n];
                        t.style.getPropertyValue(r.prefix + "animationName") && (e = r.event)
                    }
                return e
            }(t), o, !0)) : window.setTimeout(a, 50)
        };
        a()
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t(t) {
            this.gettextCatalog = t
        }
        return t.prototype.report = function() {
            return this.currentErrorMessage
        }
        ,
        t
    }();
    e.ServerJobFailureDetector = i
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(4)
      , a = n(137)
      , s = n(52)
      , c = n(67)
      , l = n(258)
      , u = n(153)
      , d = function(t) {
        function e(e, n, i) {
            var r = t.call(this) || this;
            return r.startPoint = e,
            r.UoMService = n,
            r.onFinishCreation = i,
            r.circleStart = a.MeasurementObject3D.createCircle(r.startPoint),
            r.add(r.circleStart),
            r
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "numberOfPoints", {
            get: function() {
                return this.endPoint ? 2 : 1
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.dispose = function() {
            this.line.geometry.dispose(),
            this.textSprite && this.textSprite.removeSpriteObject()
        }
        ,
        e.prototype.updateOrientationForViewport = function(t) {
            var n = t.name === s.SplitViewportName.TOP_VIEW ? void 0 : t.camera.position;
            this.circleStart.lookAt(n || new o.Vector3(this.circleStart.position.x,this.circleStart.position.y,this.circleStart.position.z + e.ORIENTATION_HEIGHT_DIFFERENCE)),
            this.circleEnd && this.circleEnd.lookAt(n || new o.Vector3(this.circleEnd.position.x,this.circleEnd.position.y,this.circleEnd.position.z + e.ORIENTATION_HEIGHT_DIFFERENCE))
        }
        ,
        e.prototype.updateMeshScaleForViewport = function(e) {
            var n = [this.circleStart];
            this.circleEnd && n.push(this.circleEnd),
            c.setMeshScreenSize(e, n, a.MeasurementObject3D.POINT_PIXEL_SIZE, !1, e.name !== s.SplitViewportName.TOP_VIEW),
            t.prototype.updateMeshScaleForViewport.call(this, e)
        }
        ,
        e.prototype.addPoint = function(t, n) {
            var i = this.calculateCirclePosition(t);
            this.startPoint.distanceTo(i) <= e.MIN_LENGTH || (this.endPoint = i,
            this.circleEnd = a.MeasurementObject3D.createCircle(this.endPoint),
            this.line = a.MeasurementObject3D.createLine(this.startPoint, this.endPoint),
            this.addTextSprite(),
            this.add(this.circleEnd, this.line),
            n && (this.pov = n),
            this.onFinishCreation && this.onFinishCreation(this))
        }
        ,
        e.prototype.putPointer = function(t) {
            var e = this.calculateCirclePosition(t);
            this.removeMeshes(this.line, this.projectionLine),
            this.removeTextSprite(),
            this.line = a.MeasurementObject3D.createLine(this.startPoint, this.endPoint || e),
            this.projectionLine = a.MeasurementObject3D.createDottedLine(t, e),
            this.add(this.line, this.projectionLine),
            this.addTextSprite(this.endPoint || e)
        }
        ,
        e.prototype.getPointsPositions = function() {
            return [this.startPoint, this.endPoint]
        }
        ,
        e.prototype.dragObject = function(t, e) {
            var n = this.calculateCirclePosition(e);
            return t === this.circleStart ? this.startPoint.copy(n) : t === this.circleEnd && this.endPoint.copy(n),
            t.position.copy(n),
            this.putPointer(e),
            !0
        }
        ,
        e.prototype.dragObjectEnd = function(e) {
            t.prototype.dragObjectEnd.call(this, e),
            this.removeMeshes(this.projectionLine)
        }
        ,
        e.prototype.undoPoint = function() {
            return !0
        }
        ,
        e.prototype.getCenterLocation = function() {
            return l.getMidpoint(this.startPoint, this.endPoint)
        }
        ,
        e.prototype.getStartPoint = function() {
            return this.startPoint.clone()
        }
        ,
        e.prototype.getEndPoint = function() {
            return this.endPoint.clone()
        }
        ,
        e.prototype.getHoverableObjects = function() {
            return [this.line].filter((function(t) {
                return void 0 !== t
            }
            ))
        }
        ,
        e.prototype.getPoints = function() {
            return [this.circleStart, this.circleEnd].filter((function(t) {
                return void 0 !== t
            }
            ))
        }
        ,
        e.prototype.getMeasurementText = function() {
            return this.UoMService.convert(this.getValue(), u.MeasurementDomain.DISTANCE, 2, void 0, .1, !0)
        }
        ,
        e.prototype.getValue = function() {
            return this.startPoint.distanceTo(this.endPoint)
        }
        ,
        e.prototype.addTextSprite = function(t) {
            var e = t || this.endPoint
              , n = this.startPoint.distanceTo(e)
              , i = e.clone().sub(this.startPoint).normalize().multiplyScalar(.5 * n)
              , r = this.startPoint.clone().add(i);
            this.textSprite = this.createTextSprite(r, this.UoMService.convert(n, u.MeasurementDomain.DISTANCE, 2, void 0, .1, !0), this.getIcon()),
            this.updateTextSpriteMaterial(),
            this.add(this.textSprite.spriteObject)
        }
        ,
        e.prototype.isPoint = function(t) {
            return t === this.circleStart || t === this.circleEnd
        }
        ,
        e.MIN_LENGTH = .01,
        e
    }(a.MeasurementObject3D);
    e.DistanceMeasurementObject3D = d
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t[t.MainViewContext = 0] = "MainViewContext",
        t[t.MapViewContext = 1] = "MapViewContext",
        t[t.SidebarEditor = 2] = "SidebarEditor"
    }(e.MenuType || (e.MenuType = {}))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(80)
      , s = (n(28),
    n(101))
      , c = n(67)
      , l = n(40)
      , u = n(212)
      , d = n(157)
      , p = (n(49),
    n(14),
    n(15),
    n(25))
      , h = n(4)
      , f = n(52)
      , m = (n(266),
    n(17),
    n(6))
      , g = n(0)
      , v = (n(24),
    n(0))
      , y = n(15)
      , b = n(28)
      , w = n(14)
      , S = n(266)
      , x = n(49)
      , M = n(17)
      , E = n(24)
      , C = function(t) {
        function e(i, r, o, a) {
            var c = t.call(this, i, r, o) || this;
            return c.params = o,
            c.factory = a,
            c.visibleOnMobile = !1,
            c.positionValid = !1,
            c.euler = new h.Euler,
            c.visibleOnMobileConfig = !0,
            c.viewConeMesh = new h.Mesh,
            c.viewConeGeometry = new h.Geometry,
            c.viewConeMeshMaterial = new h.MeshBasicMaterial({
                transparent: !0,
                vertexColors: !0,
                depthTest: !1,
                depthWrite: !1
            }),
            c.positionMesh = new h.Mesh,
            c.positionMeshGeometry = new h.CircleGeometry(.5,12),
            c.positionMeshMaterial = new h.MeshBasicMaterial({
                opacity: e.POSITION_DEFAULT_OPACITY,
                side: h.DoubleSide,
                transparent: !0,
                depthTest: !1,
                depthWrite: !1,
                map: s.getTextureLoader().load(n(561), (function() {
                    return c.view.invalidateScene()
                }
                ))
            }),
            c.sceneGroup.name = "CameraFOVLayer",
            a.ConfigService.initialized.then((function() {
                c.initCameraFOVLayer()
            }
            )).catch((function() {}
            )),
            c.trackSignal(a.GeoTransformationService.offsetChanged).connect((function() {
                return c.positionValid = !1
            }
            )),
            c.onTransitionStart = function() {
                return c.positionValid = !0
            }
            ,
            c
        }
        return r(e, t),
        e.prototype.initCameraFOVLayer = function() {
            var t = this.factory.ConfigService.getInteger(p.Configs.CORE_MAP_FOV_BLENDING)
              , e = this.factory.ConfigService.getInteger(p.Configs.CORE_MAP_FOV_COLOR)
              , n = e ? [new h.Color(e)] : void 0;
            this.visibleOnMobileConfig = this.factory.ConfigService.getBoolean(p.Configs.LAYERS_CAMERAFOV_MOBILE_VISIBLE, !0),
            this.setupScene(t, n)
        }
        ,
        e.prototype.setupScene = function(t, n) {
            this.viewConeMesh.geometry = this.setupConeGeometry(t, n),
            this.viewConeMesh.material = this.viewConeMeshMaterial,
            this.viewConeMesh.renderOrder = 1 / 0,
            this.positionMeshMaterial.color = this.isAlignmentMap() ? e.POSITION_ALIGNMENT_COLOR : e.POSITION_DEFAULT_COLOR,
            this.positionMesh.geometry = this.positionMeshGeometry,
            this.positionMesh.material = this.positionMeshMaterial,
            this.positionMesh.renderOrder = 1 / 0,
            this.isAlignmentMap() && (this.viewConeMesh.userData.is2D = !0,
            this.positionMesh.userData.is2D = !0,
            this.addMeshHandler(this.viewConeMesh),
            this.addMeshHandler(this.positionMesh)),
            this.sceneGroup.add(this.viewConeMesh),
            this.sceneGroup.add(this.positionMesh)
        }
        ,
        e.prototype.addMeshHandler = function(t) {
            var e, n = this;
            t.onDragStart = function(t, i) {
                return !!n.isVisible(i) && (e = i.unprojectScreenCoordinates(t.x, t.y, 1),
                !0)
            }
            ,
            t.onDrag = function(i, r) {
                var o = r.unprojectScreenCoordinates(i.x, i.y, 1);
                if (n.view.inputHandler.isKeyPressed(u.KeyEvent.DOM_VK_SHIFT)) {
                    var a = d.getAngleBetweenVectors(o, e, t.position)
                      , s = n.factory.ViewService.mainView.currViewingDir;
                    s.lon -= a,
                    n.factory.ViewService.mainView.updateOrientation(s)
                }
                if (!n.view.inputHandler.isKeyPressed(u.KeyEvent.DOM_VK_SHIFT)) {
                    var c = (new h.Vector3).subVectors(o, e);
                    n.factory.ViewService.mainView.getCamera().position.add(c)
                }
                e = o,
                n.view.invalidateScene()
            }
            ,
            t.onDragEnd = function() {
                if (n.factory.PointCloudMenuService.config.showPanosInPerspective && !n.view.inputHandler.isKeyPressed(u.KeyEvent.DOM_VK_SHIFT)) {
                    var t = n.factory.ViewService.mainView.getCamera().position;
                    n.factory.ImageService.getClosestImage(t).then((function(t) {
                        return n.factory.IV.moveToImage(t)
                    }
                    )).catch((function() {}
                    ))
                }
            }
        }
        ,
        e.prototype.setupConeGeometry = function(t, n) {
            var i = void 0 !== n;
            this.isAlignmentMap() && (n = e.CONE_ALIGNMENT_COLORS,
            t = e.CONE_ALIGNMENT_BLENDING),
            void 0 === t && void 0 === n ? (t = e.CONE_DEFAULT_BLENDING,
            n = e.CONE_DEFAULT_COLORS) : void 0 === t ? t = e.CONE_DEFAULT_BLENDING : void 0 === n && (n = [new h.Color(12109260)]),
            t === h.SubtractiveBlending && (n = [new h.Color(16777215).sub(n[0])]),
            1 === n.length && t === h.AdditiveBlending ? (n[1] = new h.Color(0),
            n[2] = new h.Color(0)) : 1 === n.length && (n[1] = new h.Color(16777215),
            n[2] = new h.Color(16777215)),
            this.coneColorFull = n[0],
            this.coneColorReduced = i ? this.coneColorFull.clone().multiplyScalar(.5) : e.CONE_CENTER_REDUCED_COLOR,
            this.viewConeMeshMaterial.blending = t;
            var r = this.isAlignmentMap() ? e.CONE_ALIGNMENT_DISTANCE : e.CONE_DEFAULT_DISTANCE
              , o = r * Math.tan(.5)
              , a = new h.Vector3(0,0,0)
              , s = new h.Vector3(o,r,0)
              , c = new h.Vector3(-o,r,0);
            return this.viewConeGeometry.vertices.push(a),
            this.viewConeGeometry.vertices.push(s),
            this.viewConeGeometry.vertices.push(c),
            this.viewConeGeometry.faces.push(new h.Face3(0,1,2)),
            this.viewConeGeometry.computeFaceNormals(),
            this.viewConeGeometry.faces[0].vertexColors[0] = new h.Color(n[0]),
            this.viewConeGeometry.faces[0].vertexColors[1] = new h.Color(n[1]),
            this.viewConeGeometry.faces[0].vertexColors[2] = new h.Color(n[2]),
            this.viewConeGeometry
        }
        ,
        e.prototype.updateMeshes = function(t, n) {
            var i = this.isAlignmentMap() ? e.CONE_ALIGNMENT_DISTANCE : e.CONE_DEFAULT_DISTANCE
              , r = n.getCamera();
            t.position.copy(r.position),
            t.position.z = 0,
            this.euler.setFromQuaternion(r.quaternion, "ZYX"),
            t.rotation.z = this.euler.z;
            var o = n.cameraController.horizontalFOV / 180 * Math.PI;
            if (this.viewConeGeometry.vertices[1].x = i * Math.sin(o / 2),
            this.viewConeGeometry.vertices[2].x = -i * Math.sin(o / 2),
            this.viewConeGeometry.verticesNeedUpdate = !0,
            this.factory.ViewService.isMapPrimaryView()) {
                var a = !1
                  , s = this.factory.FloorChangerService.currentFloors;
                if (s) {
                    for (var c = 0, l = s; c < l.length; c++) {
                        var u = l[c];
                        u.zMin <= r.position.z && r.position.z <= u.zMax && (a = !0)
                    }
                    this.positionMeshMaterial.opacity = a ? e.POSITION_DEFAULT_OPACITY : e.POSITION_REDUCED_OPACITY,
                    this.viewConeGeometry.faces[0].vertexColors[0].set(a ? this.coneColorFull : this.coneColorReduced),
                    this.viewConeGeometry.colorsNeedUpdate = !0
                }
            } else
                this.positionMeshMaterial && (this.positionMeshMaterial.opacity = e.POSITION_DEFAULT_OPACITY),
                this.viewConeGeometry.faces[0].vertexColors[0].set(this.coneColorFull),
                this.viewConeGeometry.colorsNeedUpdate = !0
        }
        ,
        e.prototype.isNormalMap = function() {
            return "MapScene" === this.view.scene.name
        }
        ,
        e.prototype.isAlignmentMap = function() {
            return !this.isNormalMap() && (this.factory.ModeService.isDatasetAlignmentMode() || this.factory.ModeService.isSiteModelEditorMode())
        }
        ,
        e.prototype.isHelperActivated = function() {
            return this.factory.AlignmentHelperService.helperDefault.visible
        }
        ,
        e.prototype.isInMeasurementMode = function() {
            return this.factory.ModeService.isMeasurementsMode()
        }
        ,
        e.prototype.getLocationDotVisibility = function() {
            return l.isDesktopLayout() || !l.isDesktopLayout() && this.visibleOnMobile && this.visibleOnMobileConfig
        }
        ,
        e.prototype.isVisible = function(t) {
            var e = t.name === f.SplitViewportName.TOP_VIEW;
            return this.isNormalMap() && this.getLocationDotVisibility() && this.positionValid || this.isHelperActivated() && this.isAlignmentMap() && e || this.isInMeasurementMode() && e
        }
        ,
        e.prototype.onBeforeRender = function() {
            var t = this.factory.ViewService.mainView;
            t && this.updateMeshes(this.sceneGroup, t.getDefaultViewport())
        }
        ,
        e.prototype.onBeforeRenderViewport = function(t) {
            this.sceneGroup.visible = this.isVisible(t),
            c.setMeshScreenSize(t, this.positionMesh, 12, !1, !0)
        }
        ,
        e.prototype.updateCameraFOVLayer = function() {
            this.viewConeMesh.parent && this.positionMesh.parent && (this.sceneGroup.remove(this.viewConeMesh),
            this.sceneGroup.remove(this.positionMesh),
            this.viewConeMesh.geometry.dispose(),
            this.viewConeGeometry = new h.Geometry,
            this.viewConeMesh = new h.Mesh,
            this.positionMesh = new h.Mesh,
            this.initCameraFOVLayer())
        }
        ,
        e.POSITION_DEFAULT_COLOR = new h.Color(3185610),
        e.POSITION_ALIGNMENT_COLOR = new h.Color(65433),
        e.POSITION_DEFAULT_OPACITY = .7,
        e.POSITION_REDUCED_OPACITY = .2,
        e.CONE_DEFAULT_COLORS = [new h.Color(12303291), new h.Color(16777215), new h.Color(16777215)],
        e.CONE_CENTER_REDUCED_COLOR = new h.Color(14277081),
        e.CONE_ALIGNMENT_COLORS = [new h.Color(65433), new h.Color(39219), new h.Color(39219)],
        e.CONE_DEFAULT_BLENDING = h.MultiplyBlending,
        e.CONE_ALIGNMENT_BLENDING = h.AdditiveBlending,
        e.CONE_DEFAULT_DISTANCE = 5,
        e.CONE_ALIGNMENT_DISTANCE = 15,
        e
    }(a.SceneLayer);
    e.CameraFOVLayer = C;
    var A = function(t) {
        function e(e, n, i, r, o, a, s, c, l) {
            var u = t.call(this) || this;
            return u.ConfigService = e,
            u.IV = n,
            u.FloorChangerService = i,
            u.GeoTransformationService = r,
            u.AlignmentHelperService = o,
            u.PointCloudMenuService = a,
            u.ImageService = s,
            u.ViewService = c,
            u.ModeService = l,
            u
        }
        return r(e, t),
        e.prototype.create = function(t, e, n) {
            return new C(t,e,n,this)
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(v.ɵɵinject(y.ConfigService),v.ɵɵinject("IV"),v.ɵɵinject(b.FloorChangerService),v.ɵɵinject(w.GeoTransformationService),v.ɵɵinject(S.AlignmentHelperService),v.ɵɵinject("PointCloudMenuService"),v.ɵɵinject(x.ImageService),v.ɵɵinject(M.ViewService),v.ɵɵinject(E.ModeService))
        }
        ,
        e.ɵprov = v.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(a.SceneLayerFactory);
    e.CameraFOVLayerFactory = A,
    v.ɵsetClassMetadata(A, [{
        type: g.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: y.ConfigService
        }, {
            type: void 0,
            decorators: [{
                type: g.Inject,
                args: ["IV"]
            }]
        }, {
            type: b.FloorChangerService
        }, {
            type: w.GeoTransformationService
        }, {
            type: S.AlignmentHelperService
        }, {
            type: void 0,
            decorators: [{
                type: g.Inject,
                args: ["PointCloudMenuService"]
            }]
        }, {
            type: x.ImageService
        }, {
            type: M.ViewService
        }, {
            type: E.ModeService
        }]
    }
    ), null),
    o.module("IVWebApp").service("CameraFOVLayerFactory", m.downgradeInjectable(A))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t() {}
        return t.createBundleEditorConfig = function(t) {
            return {
                title: t,
                checkForMapData: !1,
                showColorpicker: !1,
                showDatasetVisibilitySwitcher: !1,
                showDatasets: !0,
                showDatasetSelectButtons: !0,
                showDatasetJumpButtons: !1,
                showDatasetEditButtons: !1,
                showDatasetZoomButtons: !1,
                showDatasetLockButtons: !1,
                showDatasetReferenceMarkerButtons: !1,
                showSiteModelJumpButtons: !1,
                showSiteModelEditButtons: !1,
                showEmptySiteModelEntities: !1,
                siteModelTitlePadding: 55
            }
        }
        ,
        t.createSiteModelEditorConfig = function(t) {
            return {
                title: t,
                checkForMapData: !1,
                showColorpicker: !0,
                showDatasetVisibilitySwitcher: !0,
                showDatasets: !0,
                showDatasetSelectButtons: !0,
                showDatasetJumpButtons: !1,
                showDatasetEditButtons: !1,
                showDatasetZoomButtons: !0,
                showDatasetLockButtons: !1,
                showDatasetReferenceMarkerButtons: !1,
                showSiteModelJumpButtons: !1,
                showSiteModelEditButtons: !0,
                showEmptySiteModelEntities: !0,
                siteModelTitlePadding: 180
            }
        }
        ,
        t.createDatasetAlignmentConfig = function(t) {
            return {
                title: t,
                checkForMapData: !1,
                showColorpicker: !0,
                showDatasetVisibilitySwitcher: !0,
                showDatasets: !0,
                showDatasetSelectButtons: !0,
                showDatasetJumpButtons: !1,
                showDatasetEditButtons: !1,
                showDatasetZoomButtons: !0,
                showDatasetLockButtons: !0,
                showDatasetReferenceMarkerButtons: !0,
                showSiteModelJumpButtons: !1,
                showSiteModelEditButtons: !1,
                showEmptySiteModelEntities: !0,
                siteModelTitlePadding: 135
            }
        }
        ,
        t.createGeoRegistrationConfig = function(t) {
            return {
                title: t,
                checkForMapData: !0,
                showColorpicker: !1,
                showDatasetVisibilitySwitcher: !0,
                showDatasets: !0,
                showDatasetSelectButtons: !0,
                showDatasetJumpButtons: !1,
                showDatasetEditButtons: !1,
                showDatasetZoomButtons: !0,
                showDatasetLockButtons: !0,
                showDatasetReferenceMarkerButtons: !0,
                showSiteModelJumpButtons: !1,
                showSiteModelEditButtons: !1,
                showEmptySiteModelEntities: !0,
                siteModelTitlePadding: 135
            }
        }
        ,
        t.createDatasetMenuConfig = function(t) {
            return {
                title: t,
                checkForMapData: !1,
                showColorpicker: !1,
                showDatasetVisibilitySwitcher: !0,
                showDatasets: !0,
                showDatasetSelectButtons: !0,
                showDatasetJumpButtons: !0,
                showDatasetEditButtons: !0,
                showDatasetZoomButtons: !1,
                showDatasetLockButtons: !1,
                showDatasetReferenceMarkerButtons: !1,
                showSiteModelJumpButtons: !0,
                showSiteModelEditButtons: !1,
                showEmptySiteModelEntities: !0,
                siteModelTitlePadding: 95
            }
        }
        ,
        t.createSelectDatasetConfig = function(t) {
            return {
                title: t,
                checkForMapData: !1,
                showColorpicker: !1,
                showDatasetVisibilitySwitcher: !1,
                showDatasets: !0,
                showDatasetSelectButtons: !0,
                showDatasetJumpButtons: !1,
                showDatasetEditButtons: !1,
                showDatasetZoomButtons: !1,
                showDatasetLockButtons: !1,
                showDatasetReferenceMarkerButtons: !1,
                showSiteModelJumpButtons: !1,
                showSiteModelEditButtons: !1,
                showEmptySiteModelEntities: !1,
                siteModelTitlePadding: 95
            }
        }
        ,
        t
    }();
    e.DatasetTreeConfigurationFactory = i
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return s
    }
    ));
    var i = n(1)
      , r = n(26)
      , o = n(280)
      , a = n(71);
    function s(t) {
        return function(e) {
            return 0 === t ? Object(a.b)() : e.lift(new c(t))
        }
    }
    var c = function() {
        function t(t) {
            if (this.total = t,
            this.total < 0)
                throw new o.a
        }
        return t.prototype.call = function(t, e) {
            return e.subscribe(new l(t,this.total))
        }
        ,
        t
    }()
      , l = function(t) {
        function e(e, n) {
            var i = t.call(this, e) || this;
            return i.total = n,
            i.count = 0,
            i
        }
        return i.c(e, t),
        e.prototype._next = function(t) {
            var e = this.total
              , n = ++this.count;
            n <= e && (this.destination.next(t),
            n === e && (this.destination.complete(),
            this.unsubscribe()))
        }
        ,
        e
    }(r.a)
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t[t.None = 0] = "None",
        t[t.PointCloud = 1] = "PointCloud",
        t[t.Panorama = 2] = "Panorama",
        t[t.PanoramaAndPointCloud = 3] = "PanoramaAndPointCloud"
    }(e.RenderingMode || (e.RenderingMode = {}))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o, a = n(378), s = n(1234), c = n(108), l = n(102), u = n(4);
    !function(t) {
        t.POLYGON = "POLYGON",
        t.LINE = "LINE"
    }(o = e.VectorEntityType || (e.VectorEntityType = {}));
    var d = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.resolveInjectables = function() {
            t.prototype.resolveInjectables.call(this),
            this.GeoTransformationService = this.injectables.GeoTransformationService
        }
        ,
        e.prototype.copy = function(e, n) {
            return void 0 === n && (n = !1),
            t.prototype.fill.call(this, e),
            this.type = e.type,
            this.color = e.color,
            this.vectorEntity = e.vectorEntity.clone(),
            this.vectorLayer = e.vectorLayer,
            this.vectorLayerId = e.vectorLayerId,
            this.area = e.area,
            n || (this.vectorEntityLocal = e.vectorEntityLocal.clone()),
            this
        }
        ,
        e.prototype.fillFromData = function(e) {
            if (t.prototype.fillFromData.call(this, e),
            this.type = e.type,
            this.color = e.color,
            this.vectorEntity = e.type === o.POLYGON ? new a.Polygon(this.GeoTransformationService,e.vector_entity) : new s.LineString(this.GeoTransformationService,e.vector_entity),
            !this.GeoTransformationService.isInitialized()) {
                var n = this.vectorEntity.getFirstPoint();
                this.GeoTransformationService.setOffsetFromGlobal(new u.Vector3(n.x,n.y,0))
            }
            this.vectorEntityLocal = this.vectorEntity.toLocalGeometry(),
            this.vectorLayerId = e.vector_layer_id,
            this.area = e.area
        }
        ,
        e.prototype.toData = function() {
            throw new c.IVFrontendException("Modifying vector entities is not possible.")
        }
        ,
        e.prototype.onReferenceSystemChangedEvent = function() {
            this.computeLocalCoordinates()
        }
        ,
        e.prototype.computeLocalCoordinates = function() {
            this.vectorEntityLocal = this.vectorEntity.toLocalGeometry()
        }
        ,
        e
    }(l.RepositoryObject);
    e.VectorEntityEntity = d
}
, function(t, e, n) {
    "use strict";
    function i(t) {
        return null !== t && "object" == typeof t
    }
    n.d(e, "a", (function() {
        return i
    }
    ))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return r
    }
    ));
    var i = n(26);
    function r(t) {
        for (; t; ) {
            var e = t
              , n = e.closed
              , r = e.destination
              , o = e.isStopped;
            if (n || o)
                return !1;
            t = r && r instanceof i.a ? r : null
        }
        return !0
    }
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return o
    }
    ));
    var i = n(12)
      , r = n(33);
    function o(t, e) {
        return new i.a((function(n) {
            var i = new r.a
              , o = 0;
            return i.add(e.schedule((function() {
                o !== t.length ? (n.next(t[o++]),
                n.closed || i.add(this.schedule())) : n.complete()
            }
            ))),
            i
        }
        ))
    }
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return o
    }
    ));
    var i = n(84)
      , r = n(167)
      , o = {
        closed: !0,
        next: function(t) {},
        error: function(t) {
            if (i.a.useDeprecatedSynchronousErrorHandling)
                throw t;
            Object(r.a)(t)
        },
        complete: function() {}
    }
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return c
    }
    ));
    var i = n(12)
      , r = n(56)
      , o = n(62)
      , a = n(224)
      , s = n(76);
    function c() {
        for (var t = [], e = 0; e < arguments.length; e++)
            t[e] = arguments[e];
        if (1 === t.length) {
            var n = t[0];
            if (Object(r.a)(n))
                return l(n, null);
            if (Object(a.a)(n) && Object.getPrototypeOf(n) === Object.prototype) {
                var i = Object.keys(n);
                return l(i.map((function(t) {
                    return n[t]
                }
                )), i)
            }
        }
        if ("function" == typeof t[t.length - 1]) {
            var s = t.pop();
            return l(t = 1 === t.length && Object(r.a)(t[0]) ? t[0] : t, null).pipe(Object(o.a)((function(t) {
                return s.apply(void 0, t)
            }
            )))
        }
        return l(t, null)
    }
    function l(t, e) {
        return new i.a((function(n) {
            var i = t.length;
            if (0 !== i)
                for (var r = new Array(i), o = 0, a = 0, c = function(c) {
                    var l = Object(s.a)(t[c])
                      , u = !1;
                    n.add(l.subscribe({
                        next: function(t) {
                            u || (u = !0,
                            a++),
                            r[c] = t
                        },
                        error: function(t) {
                            return n.error(t)
                        },
                        complete: function() {
                            ++o !== i && u || (a === i && n.next(e ? e.reduce((function(t, e, n) {
                                return t[e] = r[n],
                                t
                            }
                            ), {}) : r),
                            n.complete())
                        }
                    }))
                }, l = 0; l < i; l++)
                    c(l);
            else
                n.complete()
        }
        ))
    }
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return s
    }
    ));
    var i = n(12)
      , r = n(56)
      , o = n(142)
      , a = n(62);
    function s(t, e, n, c) {
        return Object(o.a)(n) && (c = n,
        n = void 0),
        c ? s(t, e, n).pipe(Object(a.a)((function(t) {
            return Object(r.a)(t) ? c.apply(void 0, t) : c(t)
        }
        ))) : new i.a((function(i) {
            !function t(e, n, i, r, o) {
                var a;
                if (function(t) {
                    return t && "function" == typeof t.addEventListener && "function" == typeof t.removeEventListener
                }(e)) {
                    var s = e;
                    e.addEventListener(n, i, o),
                    a = function() {
                        return s.removeEventListener(n, i, o)
                    }
                } else if (function(t) {
                    return t && "function" == typeof t.on && "function" == typeof t.off
                }(e)) {
                    var c = e;
                    e.on(n, i),
                    a = function() {
                        return c.off(n, i)
                    }
                } else if (function(t) {
                    return t && "function" == typeof t.addListener && "function" == typeof t.removeListener
                }(e)) {
                    var l = e;
                    e.addListener(n, i),
                    a = function() {
                        return l.removeListener(n, i)
                    }
                } else {
                    if (!e || !e.length)
                        throw new TypeError("Invalid event target");
                    for (var u = 0, d = e.length; u < d; u++)
                        t(e[u], n, i, r, o)
                }
                r.add(a)
            }(t, e, (function(t) {
                arguments.length > 1 ? i.next(Array.prototype.slice.call(arguments)) : i.next(t)
            }
            ), i, n)
        }
        ))
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(152);
    e.runWithBaseHref = function(t) {
        var e = document.head.getElementsByTagName("base")[0];
        e && document.head.removeChild(e);
        var n = function() {
            var t = document.createElement("base");
            return t.href = i.getBaseUrl(),
            document.head.appendChild(t),
            t
        }();
        try {
            return t()
        } finally {
            document.head.removeChild(n),
            e && document.head.appendChild(e)
        }
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(72),
    n(152))
      , o = n(0)
      , a = n(6)
      , s = n(0)
      , c = n(72)
      , l = function() {
        function t(t) {
            this.JWTTokenService = t,
            this.URL_REGEX = /src="(.*?)"/g
        }
        return t.prototype.expandSelfHostedUrls = function(t) {
            var e = this;
            return this.forEachUrl(t, (function(t) {
                return e.expandUploadedContentUrl(t)
            }
            ))
        }
        ,
        t.prototype.collapseSelfHostedUrls = function(t) {
            var e = this;
            return this.forEachUrl(t, (function(t) {
                return e.collapseUploadedContentUrl(t)
            }
            ))
        }
        ,
        t.prototype.expandUploadedContentUrl = function(t) {
            var e = new URL(r.getBaseUrl())
              , n = new URL(t,e);
            return e.hostname !== n.hostname ? t : (this.JWTTokenService.setJwtOnUrl(n),
            n.href)
        }
        ,
        t.prototype.collapseUploadedContentUrl = function(t) {
            var e = new URL(r.getBaseUrl())
              , n = new URL(t,e);
            return e.hostname !== n.hostname ? t : (n.searchParams.delete(this.JWTTokenService.getJwtUrlParamKey()),
            n.pathname.replace(e.pathname, "") + n.search)
        }
        ,
        t.prototype.forEachUrl = function(t, e) {
            for (var n = this.URL_REGEX.exec(t); n; n = this.URL_REGEX.exec(t)) {
                var i = e(n[1]);
                t = t.slice(0, n.index + 5) + i + t.slice(this.URL_REGEX.lastIndex - 1)
            }
            return t
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(s.ɵɵinject(c.JWTTokenService))
        }
        ,
        t.ɵprov = s.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.ContentService = l,
    s.ɵsetClassMetadata(l, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: c.JWTTokenService
        }]
    }
    ), null),
    i.module("IVWebApp").service("ContentService", a.downgradeInjectable(l))
}
, function(t, e, n) {
    "use strict";
    var i;
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.DEVELOPER_MENU = "DEVELOPER_MENU",
        t.CLOUD_PROCESSING = "CLOUD_PROCESSING",
        t.MESHES = "MESHES"
    }(i = e.FeatureFlag || (e.FeatureFlag = {}));
    var r = function() {
        function t(t) {
            this.fillFromData(t)
        }
        return t.prototype.fillFromData = function(t) {
            this.cloudProcessingEnabled = t.cloud_processing,
            this.developerMenuEnabled = t.developer_menu,
            this.meshesEnabled = t.meshes
        }
        ,
        t.prototype.isEnabled = function(t) {
            switch (t) {
            case i.CLOUD_PROCESSING:
                return this.cloudProcessingEnabled;
            case i.DEVELOPER_MENU:
                return this.developerMenuEnabled;
            case i.MESHES:
                return this.meshesEnabled;
            default:
                return !1
            }
        }
        ,
        t
    }();
    e.FeatureFlagResponse = r
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t[t.LEFT = 0] = "LEFT",
        t[t.MIDDLE = 1] = "MIDDLE",
        t[t.RIGHT = 2] = "RIGHT"
    }(e.MouseButton || (e.MouseButton = {}))
}
, function(t, e, n) {
    var i = n(18)
      , r = n(133)
      , o = "".split;
    t.exports = i((function() {
        return !Object("z").propertyIsEnumerable(0)
    }
    )) ? function(t) {
        return "String" == r(t) ? o.call(t, "") : Object(t)
    }
    : Object
}
, function(t, e, n) {
    var i = n(42)
      , r = n(189)
      , o = n(45)("species");
    t.exports = function(t, e) {
        var n;
        return r(t) && ("function" != typeof (n = t.constructor) || n !== Array && !r(n.prototype) ? i(n) && null === (n = n[o]) && (n = void 0) : n = void 0),
        new (void 0 === n ? Array : n)(0 === e ? 0 : e)
    }
}
, function(t, e) {
    var n = 0
      , i = Math.random();
    t.exports = function(t) {
        return "Symbol(" + String(void 0 === t ? "" : t) + ")_" + (++n + i).toString(36)
    }
}
, function(t, e, n) {
    var i = n(461)
      , r = n(354);
    t.exports = Object.keys || function(t) {
        return i(t, r)
    }
}
, function(t, e, n) {
    var i = n(109)
      , r = n(44)
      , o = n(175)
      , a = function(t) {
        return function(e, n, a) {
            var s, c = i(e), l = r(c.length), u = o(a, l);
            if (t && n != n) {
                for (; l > u; )
                    if ((s = c[u++]) != s)
                        return !0
            } else
                for (; l > u; u++)
                    if ((t || u in c) && c[u] === n)
                        return t || u || 0;
            return !t && -1
        }
    };
    t.exports = {
        includes: a(!0),
        indexOf: a(!1)
    }
}
, function(t, e) {
    t.exports = {}
}
, function(t, e) {
    t.exports = {}
}
, function(t, e, n) {
    var i = n(242)
      , r = n(240)
      , o = n(45)("iterator");
    t.exports = function(t) {
        if (null != t)
            return t[o] || t["@@iterator"] || r[i(t)]
    }
}
, function(t, e, n) {
    var i = n(361)
      , r = n(133)
      , o = n(45)("toStringTag")
      , a = "Arguments" == r(function() {
        return arguments
    }());
    t.exports = i ? r : function(t) {
        var e, n, i;
        return void 0 === t ? "Undefined" : null === t ? "Null" : "string" == typeof (n = function(t, e) {
            try {
                return t[e]
            } catch (t) {}
        }(e = Object(t), o)) ? n : a ? r(e) : "Object" == (i = r(e)) && "function" == typeof e.callee ? "Arguments" : i
    }
}
, function(t, e, n) {
    var i = n(98);
    t.exports = function(t, e, n) {
        for (var r in e)
            i(t, r, e[r], n);
        return t
    }
}
, function(t, e, n) {
    var i = n(18);
    t.exports = !i((function() {
        return Object.isExtensible(Object.preventExtensions({}))
    }
    ))
}
, function(t, e, n) {
    var i = n(29)
      , r = n(360)
      , o = n(44)
      , a = n(172)
      , s = n(241)
      , c = n(474)
      , l = function(t, e) {
        this.stopped = t,
        this.result = e
    };
    (t.exports = function(t, e, n, u, d) {
        var p, h, f, m, g, v, y, b = a(e, n, u ? 2 : 1);
        if (d)
            p = t;
        else {
            if ("function" != typeof (h = s(t)))
                throw TypeError("Target is not iterable");
            if (r(h)) {
                for (f = 0,
                m = o(t.length); m > f; f++)
                    if ((g = u ? b(i(y = t[f])[0], y[1]) : b(t[f])) && g instanceof l)
                        return g;
                return new l(!1)
            }
            p = h.call(t)
        }
        for (v = p.next; !(y = v.call(p)).done; )
            if ("object" == typeof (g = c(p, b, y.value, u)) && g && g instanceof l)
                return g;
        return new l(!1)
    }
    ).stop = function(t) {
        return new l(!0,t)
    }
}
, function(t, e, n) {
    "use strict";
    var i = n(161)
      , r = n(48)
      , o = n(45)
      , a = n(43)
      , s = o("species");
    t.exports = function(t) {
        var e = i(t)
          , n = r.f;
        a && e && !e[s] && n(e, s, {
            configurable: !0,
            get: function() {
                return this
            }
        })
    }
}
, function(t, e, n) {
    var i = n(18)
      , r = n(45)
      , o = n(499)
      , a = r("species");
    t.exports = function(t) {
        return o >= 51 || !i((function() {
            var e = [];
            return (e.constructor = {})[a] = function() {
                return {
                    foo: 1
                }
            }
            ,
            1 !== e[t](Boolean).foo
        }
        ))
    }
}
, function(t, e, n) {
    "use strict";
    var i = n(29);
    t.exports = function() {
        var t = i(this)
          , e = "";
        return t.global && (e += "g"),
        t.ignoreCase && (e += "i"),
        t.multiline && (e += "m"),
        t.dotAll && (e += "s"),
        t.unicode && (e += "u"),
        t.sticky && (e += "y"),
        e
    }
}
, function(t, e, n) {
    var i, r, o;
    r = [n(19)],
    void 0 === (o = "function" == typeof (i = function(t) {
        return t.ui = t.ui || {},
        t.ui.version = "1.12.1"
    }
    ) ? i.apply(e, r) : i) || (t.exports = o)
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return o
    }
    ));
    var i = n(93)
      , r = n(450);
    function o() {
        for (var t = [], e = 0; e < arguments.length; e++)
            t[e] = arguments[e];
        return Object(r.a)()(i.a.apply(void 0, t))
    }
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(70)
      , a = n(525)
      , s = (n(9),
    n(2))
      , c = n(6)
      , l = n(0)
      , u = n(0)
      , d = n(9)
      , p = function(t) {
        function e(e) {
            var n = t.call(this, a.ConfigEntity, e) || this;
            return n.RestService = e,
            n.path = "configs",
            n
        }
        return r(e, t),
        e.ɵfac = function(t) {
            return new (t || e)(u.ɵɵinject(d.RestService))
        }
        ,
        e.ɵprov = u.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(o.RestRepository);
    e.ConfigRepository = p,
    u.ɵsetClassMetadata(p, [{
        type: l.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: d.RestService
        }]
    }
    ), null),
    s.module("IVWebApp").service("ConfigRepository", c.downgradeInjectable(p))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(108)
      , r = n(4)
      , o = function() {
        function t() {}
        return t.fromArray = function(t) {
            if (t) {
                if (4 !== t.length)
                    throw new i.IVFrontendException("Wrong number of ordinates for a quaternion!");
                //return new r.Quaternion(t[1],t[2],t[3],t[0])
                return new r.Quaternion(t[1],-t[2],t[3],t[0]).multiply((new r.Quaternion).setFromAxisAngle(new r.Vector3(0,0,1), r.Math.degToRad(-90)));
            }
        }
        ,
        t.toArray = function(t) {
            if (t) {
                var e = t.toArray();
                return [e[3], e[0], e[1], e[2]]
            }
        }
        ,
        t.fromLonLat = function(t) {
            if (t)
                return (new r.Quaternion).setFromEuler(new r.Euler(t.lon,t.lat,0))
        }
        ,
        t.toLonLat = function(t) {
            if (t) {
                var e = (new r.Euler).setFromQuaternion(t);
                return {
                    lon: e.x,
                    lat: e.y
                }
            }
        }
        ,
        t
    }();
    e.QuaternionFactory = o
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(96)
      , r = n(252)
      , o = function() {
        function t(t, e, n, i) {
            this.location = t,
            this.orientation = e,
            this.fov = n,
            this.imageId = i
        }
        return t.fromDto = function(e) {
            return e && (e.image_id || e.orientation || e.location || e.fov) ? new t(i.VectorFactory.fromArray3(e.location),r.QuaternionFactory.fromArray(e.orientation),e.fov,e.image_id) : void 0
        }
        ,
        t.prototype.toDto = function() {
            return {
                image_id: this.imageId,
                fov: this.fov,
                orientation: r.QuaternionFactory.toArray(this.orientation),
                location: i.VectorFactory.toArray(this.location)
            }
        }
        ,
        t.prototype.clone = function() {
            return new t(this.location ? this.location.clone() : void 0,this.orientation ? this.orientation.clone() : void 0,this.fov,this.imageId)
        }
        ,
        t
    }();
    e.PointOfView = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(198)
      , a = n(96)
      , s = n(7)
      , c = n(1059)
      , l = function() {
        function t() {}
        return t.NAVVIS = "NAVVIS",
        t.POINTCLOUD = "POINTCLOUD",
        t
    }();
    e.DatasetType = l;
    var u = function() {
        function t() {}
        return t.OCTREE = "OCTREE",
        t.POTREE = "POTREE",
        t
    }();
    e.PointCloudType = u;
    var d = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.siteModelEntities = [],
            e
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "color", {
            get: function() {
                return this._color
            },
            set: function(t) {
                this._color !== t && (this._color = t,
                this.invalidate())
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "siteModelEntity", {
            get: function() {
                return console.warn('Deprecated usage of "siteModelEntity", use "siteModelEntities" instead'),
                s.reduce(this.siteModelEntities, (function(t, e) {
                    return c.SiteModelTypeUtil.compare(t.type, e.type) < 0 ? t : e
                }
                ))
            },
            set: function(t) {
                console.warn('Deprecated usage of "siteModelEntity", use "siteModelEntities" instead'),
                this.siteModelEntities.push(t)
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.resolveInjectables = function() {
            this.GeoTransformationService = this.injectables.GeoTransformationService
        }
        ,
        e.prototype.fill = function(e) {
            t.prototype.fill.call(this, e),
            this.type = e.type,
            this.name = e.name,
            this.title = e.title,
            this.level = e.level,
            this.color = e.color,
            this._location = e._location.clone(),
            this._globalLocation = e._globalLocation.clone(),
            this.orientation = e.orientation,
            this.gridmapFilename = e.gridmapFilename,
            this.gridmapRes = e.gridmapRes,
            this.gridmapSize = e.gridmapSize ? e.gridmapSize.clone() : void 0,
            this.gridmapOrigin = e.gridmapOrigin ? e.gridmapOrigin.clone() : void 0,
            this.gridmapOrientation = e.gridmapOrientation,
            this.siteModelEntityIds = e.siteModelEntityIds,
            this.siteModelEntities = e.siteModelEntities,
            this.pointCloudType = e.pointCloudType,
            this.boundingBoxMin = e.boundingBoxMin ? e.boundingBoxMin.clone() : void 0,
            this.boundingBoxMax = e.boundingBoxMax ? e.boundingBoxMax.clone() : void 0,
            this.bundleId = e.bundleId,
            this.bundle = e.bundle,
            this.hasDepthImages = e.hasDepthImages,
            this.depthImageVersion = e.depthImageVersion,
            this.hasNormals = e.hasNormals,
            this.hasSensorFrame = e.hasSensorFrame,
            this.hasWebmesh = e.hasWebmesh,
            this.crs = e.crs,
            this.transform = e.transform
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.type = e.type,
            this.name = e.name,
            this.title = e.title,
            this.level = e.level,
            this.color = e.color,
            this.globalLocation = a.VectorFactory.fromArray3(e.location),
            this.orientation = e.orientation,
            this.gridmapFilename = e.gridmap_filename,
            this.gridmapRes = e.gridmap_res,
            this.gridmapSize = a.VectorFactory.fromArray2(e.gridmap_size),
            this.gridmapOrigin = a.VectorFactory.fromArray2(e.gridmap_origin),
            this.gridmapOrientation = e.gridmap_orientation,
            this.siteModelEntityIds = e.site_model_entity_ids || [],
            this.pointCloudType = e.point_cloud_type,
            this.boundingBoxMin = a.VectorFactory.fromArray3(e.bounding_box_min),
            this.boundingBoxMax = a.VectorFactory.fromArray3(e.bounding_box_max),
            this.bundleId = e.bundle_id,
            this.hasDepthImages = e.has_depth_images,
            this.hasImages = e.has_images,
            this.depthImageVersion = e.depth_image_version,
            this.hasSensorFrame = e.has_sensor_frame,
            this.hasWebmesh = e.has_webmesh
        }
        ,
        e.prototype.toData = function() {
            var t = {};
            return this.fillDto(t),
            t.type = this.type,
            t.name = this.name,
            t.title = this.title,
            t.level = this.level,
            t.color = this.color,
            t.location = this.globalLocation ? this.globalLocation.toArray() : void 0,
            t.orientation = this.orientation,
            t.gridmap_filename = this.gridmapFilename,
            t.gridmap_res = this.gridmapRes,
            t.gridmap_size = this.gridmapSize ? this.gridmapSize.toArray() : void 0,
            t.gridmap_origin = this.gridmapOrigin ? this.gridmapOrigin.toArray() : void 0,
            t.gridmap_orientation = this.gridmapOrientation,
            t.site_model_entity_ids = this.siteModelEntities ? this.siteModelEntities.map((function(t) {
                return t.id
            }
            )) : [],
            t.point_cloud_type = this.pointCloudType,
            t.bounding_box_min = this.boundingBoxMin ? this.boundingBoxMin.toArray() : void 0,
            t.bounding_box_max = this.boundingBoxMax ? this.boundingBoxMax.toArray() : void 0,
            t.bundle_id = this.bundle ? this.bundle.id : void 0,
            t.has_depth_images = this.hasDepthImages,
            t.depth_image_version = this.depthImageVersion,
            t.has_sensor_frame = this.hasSensorFrame,
            t.has_webmesh = this.hasWebmesh,
            t
        }
        ,
        e.prototype.onReferenceSystemChangedEvent = function() {
            this.computeLocalCoordinates()
        }
        ,
        e.prototype.computeLocalCoordinates = function() {
            this._location = this.GeoTransformationService.vectorToLocal(this._globalLocation)
        }
        ,
        Object.defineProperty(e.prototype, "location", {
            get: function() {
                return this._location
            },
            set: function(t) {
                this._location = t,
                this._globalLocation = this.GeoTransformationService.vectorToGlobal(t)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "globalLocation", {
            get: function() {
                return this._globalLocation
            },
            set: function(t) {
                this._globalLocation = t,
                this.GeoTransformationService.isInitialized() || this.GeoTransformationService.setOffsetFromGlobal(t),
                this.computeLocalCoordinates()
            },
            enumerable: !0,
            configurable: !0
        }),
        e
    }(o.SecureRepositoryObject);
    e.DatasetEntity = d
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.MAP = "map",
        t.PANORAMA = "panorama"
    }(e.ViewType || (e.ViewType = {}))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(1065)
      , o = (n(9),
    n(8))
      , a = (n(50),
    n(40))
      , s = (n(27),
    n(6))
      , c = n(0)
      , l = (n(86),
    n(120),
    n(0))
      , u = n(9)
      , d = n(50)
      , p = n(27)
      , h = n(86)
      , f = n(120)
      , m = function() {
        function t(t, e, n, i, r) {
            this.RestService = t,
            this.LanguageService = e,
            this.UserService = n,
            this.InstanceInformationService = i,
            this.FeatureFlagService = r,
            this.path = "gtm",
            this.initialized = this.getGoogleTagManagerEntity()
        }
        return t.prototype.setupTrackingScript = function() {
            var t = this;
            return this.getTrackingCodeScript().then((function(t) {
                return t ? (i.element("head").append(t),
                Promise.resolve()) : Promise.reject("GTM is not enabled.")
            }
            )).then((function() {
                return t.postGtmInfoToDataLayer()
            }
            ))
        }
        ,
        t.prototype.getTrackingCodeScript = function() {
            return this.initialized.then((function(e) {
                if (e.isTrackingEnabled)
                    return t.createTrackingScriptCode(e.gtmContainerId)
            }
            ))
        }
        ,
        t.prototype.postGtmInfoToDataLayer = function() {
            var e, n, i = this;
            this.LanguageService.initialized.then((function() {
                return i.InstanceInformationService.getInformation()
            }
            )).then((function(t) {
                return e = t.isEmpty
            }
            )).then((function() {
                return i.FeatureFlagService.getAllEnabledFeatures()
            }
            )).then((function(t) {
                return n = t
            }
            )).then((function() {
                return i.initialized
            }
            )).then((function(r) {
                t.trackEvent("instanceVisited", {
                    instanceName: r.instanceName,
                    instanceType: r.instanceType,
                    isTrial: r.isTrial,
                    dataExists: !e,
                    languageSet: i.LanguageService.getCurrentLanguage(),
                    isInIframe: a.isInIframe(),
                    isBrowserIE: a.isBrowserIE(),
                    isPlatformIOS: a.isPlatform(a.Platform.IOS),
                    isMobileLayout: a.isMobileLayout(),
                    isMobileBrowser: a.isMobileBrowser(),
                    wasLoggedIn: i.UserService.isUserLoggedIn(),
                    enabledFeatures: n
                })
            }
            )).catch(o.handleWarning)
        }
        ,
        t.prototype.getGoogleTagManagerEntity = function() {
            return this.RestService.getApi(this.path, {}, void 0).then((function(t) {
                var e = new r.GoogleTagManagerEntity;
                return e.fillFromData(t),
                e
            }
            ))
        }
        ,
        t.createTrackingScriptCode = function(t) {
            return "\n\t\t\t\t\x3c!-- Create dataLayer --\x3e\n\t\t\t\t<script>dataLayer = window.dataLayer || [];<\/script>\n\t\t\t\t\x3c!-- Google Tag Manager --\x3e\n\t\t\t\t<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\n\t\t\t\tnew Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\n\t\t\t\tj=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n\t\t\t\t'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n\t\t\t\t})(window,document,'script','dataLayer','" + t + "');<\/script>\n\t\t\t\t\x3c!-- End Google Tag Manager --\x3e\n\t\t\t\t"
        }
        ,
        t.prototype.trackUserLogin = function(e) {
            var n = this.UserService.getRoles();
            t.trackEvent("userLoggedIn", {
                isAdmin: e,
                roles: n
            })
        }
        ,
        t.trackUserLogout = function() {
            t.trackEvent("userLoggedOut")
        }
        ,
        t.trackHamburgerClick = function() {
            t.trackEvent("menu_hamburgerMenuClicked")
        }
        ,
        t.trackDatasetsMenuUsage = function(e) {
            t.trackEvent("menu_datasetsViewed", {
                timeSpent: e
            })
        }
        ,
        t.trackViewMenuUsage = function(e) {
            t.trackEvent("menu_viewViewed", {
                timeSpent: e
            })
        }
        ,
        t.trackPointcloudMenuUsage = function(e) {
            t.trackEvent("menu_pointCloudSettingsViewed", {
                timeSpent: e
            })
        }
        ,
        t.trackPoiTypesMenuUsage = function(e) {
            t.trackEvent("menu_poiTypeViewed", {
                timeSpent: e
            })
        }
        ,
        t.trackShareMenuUsage = function(e) {
            t.trackEvent("menu_shareViewed", {
                timeSpent: e
            })
        }
        ,
        t.trackGeoRegistrationModeUsage = function(e) {
            t.trackEvent("mode_geoRegistrationVisited", {
                timeSpent: e
            })
        }
        ,
        t.trackDatasetAlignmentModeUsage = function(e) {
            t.trackEvent("mode_datasetAlignmentVisited", {
                timeSpent: e
            })
        }
        ,
        t.trackSiteModelModeUsage = function(e) {
            t.trackEvent("mode_siteModelEditorVisited", {
                timeSpent: e
            })
        }
        ,
        t.trackNavGraphModeUsage = function(e) {
            t.trackEvent("mode_navGraphEditorVisited", {
                timeSpent: e
            })
        }
        ,
        t.trackVectorMapModeUsage = function(e) {
            t.trackEvent("mode_vectorMapEditorVisited", {
                timeSpent: e
            })
        }
        ,
        t.trackMeasurementsModeUsage = function(e) {
            t.trackEvent("mode_measurementsEditorVisited", {
                timeSpent: e
            })
        }
        ,
        t.trackDownloadPointCloudModeUsage = function(e) {
            t.trackEvent("mode_downloadPointCloudVisited", {
                timeSpent: e
            })
        }
        ,
        t.trackSettingsMenuUsage = function(e) {
            t.trackEvent("menu_settingsViewed", {
                timeSpent: e
            })
        }
        ,
        t.trackConfigSettingsUsage = function(e) {
            t.trackEvent("settings_configurationVisited", {
                timeSpent: e
            })
        }
        ,
        t.trackAuthSettingsUsage = function(e) {
            t.trackEvent("settings_authVisited", {
                timeSpent: e
            })
        }
        ,
        t.trackSubscriptionSettingsUsage = function(e) {
            t.trackEvent("settings_subscriptionVisited", {
                timeSpent: e
            })
        }
        ,
        t.trackUsersSettingsUsage = function(e) {
            t.trackEvent("settings_usersVisited", {
                timeSpent: e
            })
        }
        ,
        t.trackGroupsSettingsUsage = function(e) {
            t.trackEvent("settings_groupsVisited", {
                timeSpent: e
            })
        }
        ,
        t.trackDataSettingsUsage = function(e) {
            t.trackEvent("settings_datasetManagementVisited", {
                timeSpent: e
            })
        }
        ,
        t.trackHiddenImagesSettingsUsage = function(e) {
            t.trackEvent("settings_hideImagesVisted", {
                timeSpent: e
            })
        }
        ,
        t.trackLoginMenuUsage = function(e) {
            t.trackEvent("menu_loginPanelViewed", {
                timeSpent: e
            })
        }
        ,
        t.trackUserAdded = function() {
            t.trackEvent("settings_userAdded")
        }
        ,
        t.trackGroupAdded = function() {
            t.trackEvent("settings_groupAdded")
        }
        ,
        t.trackBundleEdited = function() {
            t.trackEvent("settings_bundleEdited")
        }
        ,
        t.trackBundleCreated = function() {
            t.trackEvent("settings_bundleCreated")
        }
        ,
        t.trackFileUploaded = function(e, n) {
            t.trackEvent("settings_fileUploaded", {
                fileFormat: e,
                fileSize: n
            })
        }
        ,
        t.trackBundleDownload = function() {
            t.trackEvent("settings_bundleDownloaded")
        }
        ,
        t.trackBundleUnloaded = function() {
            t.trackEvent("settings_bundleUnloaded")
        }
        ,
        t.trackBundleLoaded = function() {
            t.trackEvent("settings_bundleLoaded")
        }
        ,
        t.trackDatasetUnloaded = function() {
            t.trackEvent("settings_datasetUnloaded")
        }
        ,
        t.trackDatasetLoaded = function() {
            t.trackEvent("settings_datasetLoaded")
        }
        ,
        t.trackMapsDownloaded = function() {
            t.trackEvent("settings_mapsDownloaded")
        }
        ,
        t.trackMapsUploaded = function() {
            t.trackEvent("settings_mapsUploaded")
        }
        ,
        t.trackMapsRemoved = function() {
            t.trackEvent("settings_mapsRemoved")
        }
        ,
        t.trackNavGraphCreated = function() {
            t.trackEvent("settings_navGraphCreated")
        }
        ,
        t.trackNavGraphRemoved = function() {
            t.trackEvent("settings_navGraphRemoved")
        }
        ,
        t.trackNavGraphImported = function() {
            t.trackEvent("settings_navGraphImported")
        }
        ,
        t.trackNavDataImported = function() {
            t.trackEvent("settings_navDataImported")
        }
        ,
        t.trackNavDataRemoved = function() {
            t.trackEvent("settings_navDataRemoved")
        }
        ,
        t.trackPoiCreated = function() {
            t.trackEvent("poiCreated")
        }
        ,
        t.trackPoiEdited = function() {
            t.trackEvent("poiEdited")
        }
        ,
        t.trackPoiDeleted = function(e) {
            t.trackEvent("poiDeleted", {
                fromScene: e
            })
        }
        ,
        t.trackPoiOpen = function() {
            t.trackEvent("poiDetailsViewed")
        }
        ,
        t.trackPointCloudDownloadEntered = function(e) {
            t.trackEvent("pointCloudDownloadEntered", {
                fromEntryPoint: e
            })
        }
        ,
        t.trackPointCloudDownloadEnteredIntoMode = function(e) {
            t.trackEvent("pointCloudDownloadEnteredIntoMode", {
                initialViewMode: e
            })
        }
        ,
        t.trackPointCloudDownloadButtonClicked = function(e) {
            t.trackEvent("pointCloudDownloadButtonClicked", {
                viewMode: e
            })
        }
        ,
        t.trackPointCloudDownloaded = function() {
            t.trackEvent("pointCloudDownloaded")
        }
        ,
        t.trackPointCloudDownloadViewModeChanged = function(e, n) {
            t.trackEvent("pointCloudDownloadViewModeChanged", {
                fromViewMode: e,
                destinationViewMode: n
            })
        }
        ,
        t.trackSiteModelDetailsViewed = function() {
            t.trackEvent("siteModelDetailsViewed")
        }
        ,
        t.trackTemporaryPoiSharing = function() {
            t.trackEvent("temporaryPoiShared")
        }
        ,
        t.trackLocationSharing = function() {
            t.trackEvent("locationShared")
        }
        ,
        t.trackPoiSharing = function() {
            t.trackEvent("poiShared")
        }
        ,
        t.trackSiteModelSharing = function() {
            t.trackEvent("siteModelShared")
        }
        ,
        t.trackSearchPerformed = function(e, n) {
            t.trackEvent("search_searchPerformed", {
                queryLength: e,
                resultsCount: n
            })
        }
        ,
        t.trackRouteSearchPerformed = function(e, n) {
            t.trackEvent("route_searchPerformed", {
                queryLength: e,
                resultsCount: n
            })
        }
        ,
        t.trackSearchResultSelection = function(e) {
            t.trackEvent("search_resultClicked", {
                isPoi: e,
                isSiteModel: !e
            })
        }
        ,
        t.trackLanguageChanged = function(e) {
            t.trackEvent("languageChanged", {
                newLanguage: e
            })
        }
        ,
        t.trackCloudProcessingEnterEvent = function() {
            t.trackEvent("enterCloudProcessing")
        }
        ,
        t.trackUploadDataEnterEvent = function() {
            t.trackEvent("enterUploadData")
        }
        ,
        t.trackProcessingTaskEnterEvent = function() {
            t.trackEvent("enterProcessingTask")
        }
        ,
        t.trackProcessedDataEnterEvent = function() {
            t.trackEvent("enterProcessedData")
        }
        ,
        t.trackCreateNewProcessingTask = function() {
            t.trackEvent("createNewProcessingTask")
        }
        ,
        t.trackProcessingTaskCreationStepButtonClickedEvent = function(e) {
            t.trackEvent("processingTaskCreationStepButtonClicked", {
                step: e
            })
        }
        ,
        t.trackProcessingTaskNextButtonClickedEvent = function() {
            t.trackEvent("trackProcessingTaskNextButtonClickedEvent")
        }
        ,
        t.trackEvent = function(t, e) {
            void 0 === e && (e = {}),
            e.event = t,
            this.track(e)
        }
        ,
        t.track = function(t) {
            void 0 === t && (t = {}),
            this.isGtmTrackingUpAndRunning() && window.dataLayer.push(t)
        }
        ,
        t.isGtmTrackingUpAndRunning = function() {
            return void 0 !== window.dataLayer
        }
        ,
        t.trackInvalidMeasuredControlPointPosesFileLines = function(e) {
            t.trackEvent("invalidMeasuredControlPointPosesFileLines", {
                number: e
            })
        }
        ,
        t.trackViewControlPointsConfiguration = function() {
            t.trackEvent("viewControlPointsConfiguration")
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(l.ɵɵinject(u.RestService),l.ɵɵinject(d.LanguageService),l.ɵɵinject(p.UserService),l.ɵɵinject(h.InstanceInformationService),l.ɵɵinject(f.FeatureFlagsService))
        }
        ,
        t.ɵprov = l.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.GoogleTagManagerService = m,
    l.ɵsetClassMetadata(m, [{
        type: c.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: u.RestService
        }, {
            type: d.LanguageService
        }, {
            type: p.UserService
        }, {
            type: h.InstanceInformationService
        }, {
            type: f.FeatureFlagsService
        }]
    }
    ), null),
    i.module("IVWebApp").service("GoogleTagManagerService", s.downgradeInjectable(m))
}
, function(t, e, n) {
    (function() {
        "use strict";
        var i, r, o, a = this.THREE || n(4);
        if (!a)
            throw new Error("MeshLine requires three.js");
        function s() {
            this.positions = [],
            this.previous = [],
            this.next = [],
            this.side = [],
            this.width = [],
            this.indices_array = [],
            this.uvs = [],
            this.counters = [],
            this.geometry = new a.BufferGeometry,
            this.widthCallback = null,
            this.matrixWorld = new a.Matrix4
        }
        function c(t, e, n, i, r) {
            var o;
            if (t = t.subarray || t.slice ? t : t.buffer,
            n = n.subarray || n.slice ? n : n.buffer,
            t = e ? t.subarray ? t.subarray(e, r && e + r) : t.slice(e, r && e + r) : t,
            n.set)
                n.set(t, i);
            else
                for (o = 0; o < t.length; o++)
                    n[o + i] = t[o];
            return n
        }
        function l(t) {
            a.ShaderMaterial.call(this, {
                uniforms: Object.assign({}, a.UniformsLib.fog, {
                    lineWidth: {
                        value: 1
                    },
                    map: {
                        value: null
                    },
                    useMap: {
                        value: 0
                    },
                    alphaMap: {
                        value: null
                    },
                    useAlphaMap: {
                        value: 0
                    },
                    color: {
                        value: new a.Color(16777215)
                    },
                    opacity: {
                        value: 1
                    },
                    resolution: {
                        value: new a.Vector2(1,1)
                    },
                    sizeAttenuation: {
                        value: 1
                    },
                    near: {
                        value: 1
                    },
                    far: {
                        value: 1
                    },
                    dashArray: {
                        value: 0
                    },
                    dashOffset: {
                        value: 0
                    },
                    dashRatio: {
                        value: .5
                    },
                    useDash: {
                        value: 0
                    },
                    visibility: {
                        value: 1
                    },
                    alphaTest: {
                        value: 0
                    },
                    repeat: {
                        value: new a.Vector2(1,1)
                    }
                }),
                vertexShader: a.ShaderChunk.meshline_vert,
                fragmentShader: a.ShaderChunk.meshline_frag
            }),
            this.type = "MeshLineMaterial",
            Object.defineProperties(this, {
                lineWidth: {
                    enumerable: !0,
                    get: function() {
                        return this.uniforms.lineWidth.value
                    },
                    set: function(t) {
                        this.uniforms.lineWidth.value = t
                    }
                },
                map: {
                    enumerable: !0,
                    get: function() {
                        return this.uniforms.map.value
                    },
                    set: function(t) {
                        this.uniforms.map.value = t
                    }
                },
                useMap: {
                    enumerable: !0,
                    get: function() {
                        return this.uniforms.useMap.value
                    },
                    set: function(t) {
                        this.uniforms.useMap.value = t
                    }
                },
                alphaMap: {
                    enumerable: !0,
                    get: function() {
                        return this.uniforms.alphaMap.value
                    },
                    set: function(t) {
                        this.uniforms.alphaMap.value = t
                    }
                },
                useAlphaMap: {
                    enumerable: !0,
                    get: function() {
                        return this.uniforms.useAlphaMap.value
                    },
                    set: function(t) {
                        this.uniforms.useAlphaMap.value = t
                    }
                },
                color: {
                    enumerable: !0,
                    get: function() {
                        return this.uniforms.color.value
                    },
                    set: function(t) {
                        this.uniforms.color.value = t
                    }
                },
                opacity: {
                    enumerable: !0,
                    get: function() {
                        return this.uniforms.opacity.value
                    },
                    set: function(t) {
                        this.uniforms.opacity.value = t
                    }
                },
                resolution: {
                    enumerable: !0,
                    get: function() {
                        return this.uniforms.resolution.value
                    },
                    set: function(t) {
                        this.uniforms.resolution.value.copy(t)
                    }
                },
                sizeAttenuation: {
                    enumerable: !0,
                    get: function() {
                        return this.uniforms.sizeAttenuation.value
                    },
                    set: function(t) {
                        this.uniforms.sizeAttenuation.value = t
                    }
                },
                near: {
                    enumerable: !0,
                    get: function() {
                        return this.uniforms.near.value
                    },
                    set: function(t) {
                        this.uniforms.near.value = t
                    }
                },
                far: {
                    enumerable: !0,
                    get: function() {
                        return this.uniforms.far.value
                    },
                    set: function(t) {
                        this.uniforms.far.value = t
                    }
                },
                dashArray: {
                    enumerable: !0,
                    get: function() {
                        return this.uniforms.dashArray.value
                    },
                    set: function(t) {
                        this.uniforms.dashArray.value = t,
                        this.useDash = 0 !== t ? 1 : 0
                    }
                },
                dashOffset: {
                    enumerable: !0,
                    get: function() {
                        return this.uniforms.dashOffset.value
                    },
                    set: function(t) {
                        this.uniforms.dashOffset.value = t
                    }
                },
                dashRatio: {
                    enumerable: !0,
                    get: function() {
                        return this.uniforms.dashRatio.value
                    },
                    set: function(t) {
                        this.uniforms.dashRatio.value = t
                    }
                },
                useDash: {
                    enumerable: !0,
                    get: function() {
                        return this.uniforms.useDash.value
                    },
                    set: function(t) {
                        this.uniforms.useDash.value = t
                    }
                },
                visibility: {
                    enumerable: !0,
                    get: function() {
                        return this.uniforms.visibility.value
                    },
                    set: function(t) {
                        this.uniforms.visibility.value = t
                    }
                },
                alphaTest: {
                    enumerable: !0,
                    get: function() {
                        return this.uniforms.alphaTest.value
                    },
                    set: function(t) {
                        this.uniforms.alphaTest.value = t
                    }
                },
                repeat: {
                    enumerable: !0,
                    get: function() {
                        return this.uniforms.repeat.value
                    },
                    set: function(t) {
                        this.uniforms.repeat.value.copy(t)
                    }
                }
            }),
            this.setValues(t)
        }
        s.prototype.setMatrixWorld = function(t) {
            this.matrixWorld = t
        }
        ,
        s.prototype.setGeometry = function(t, e) {
            if (this.widthCallback = e,
            this.positions = [],
            this.counters = [],
            t instanceof a.Geometry)
                for (var n = 0; n < t.vertices.length; n++) {
                    var i = t.vertices[n];
                    e = n / t.vertices.length;
                    this.positions.push(i.x, i.y, i.z),
                    this.positions.push(i.x, i.y, i.z),
                    this.counters.push(e),
                    this.counters.push(e)
                }
            if (a.BufferGeometry,
            t instanceof Float32Array || t instanceof Array)
                for (n = 0; n < t.length; n += 3) {
                    e = n / t.length;
                    this.positions.push(t[n], t[n + 1], t[n + 2]),
                    this.positions.push(t[n], t[n + 1], t[n + 2]),
                    this.counters.push(e),
                    this.counters.push(e)
                }
            this.process()
        }
        ,
        s.prototype.raycast = (i = new a.Matrix4,
        r = new a.Ray,
        o = new a.Sphere,
        function(t, e) {
            var n = t.params.Line.threshold
              , s = n * n
              , c = new a.Vector3
              , l = this.geometry;
            if (null === l.boundingSphere && l.computeBoundingSphere(),
            o.copy(l.boundingSphere),
            o.applyMatrix4(this.matrixWorld),
            !1 !== t.ray.intersectSphere(o, c)) {
                i.getInverse(this.matrixWorld),
                r.copy(t.ray).applyMatrix4(i);
                var u = new a.Vector3
                  , d = new a.Vector3
                  , p = new a.Vector3
                  , h = this instanceof a.LineSegments ? 2 : 1;
                if (l instanceof a.BufferGeometry) {
                    var f = l.index
                      , m = l.attributes;
                    if (null !== f)
                        for (var g = f.array, v = m.position.array, y = 0, b = g.length - 1; y < b; y += h) {
                            var w = g[y]
                              , S = g[y + 1];
                            u.fromArray(v, 3 * w),
                            d.fromArray(v, 3 * S),
                            r.distanceSqToSegment(u, d, c, p) > s || (c.applyMatrix4(this.matrixWorld),
                            (E = t.ray.origin.distanceTo(c)) < t.near || E > t.far || e.push({
                                distance: E,
                                point: p.clone().applyMatrix4(this.matrixWorld),
                                index: y,
                                face: null,
                                faceIndex: null,
                                object: this
                            }))
                        }
                    else
                        for (y = 0,
                        b = (v = m.position.array).length / 3 - 1; y < b; y += h)
                            u.fromArray(v, 3 * y),
                            d.fromArray(v, 3 * y + 3),
                            r.distanceSqToSegment(u, d, c, p) > s || (c.applyMatrix4(this.matrixWorld),
                            (E = t.ray.origin.distanceTo(c)) < t.near || E > t.far || e.push({
                                distance: E,
                                point: p.clone().applyMatrix4(this.matrixWorld),
                                index: y,
                                face: null,
                                faceIndex: null,
                                object: this
                            }))
                } else if (l instanceof a.Geometry) {
                    var x = l.vertices
                      , M = x.length;
                    for (y = 0; y < M - 1; y += h) {
                        var E;
                        r.distanceSqToSegment(x[y], x[y + 1], c, p) > s || (c.applyMatrix4(this.matrixWorld),
                        (E = t.ray.origin.distanceTo(c)) < t.near || E > t.far || e.push({
                            distance: E,
                            point: p.clone().applyMatrix4(this.matrixWorld),
                            index: y,
                            face: null,
                            faceIndex: null,
                            object: this
                        }))
                    }
                }
            }
        }
        ),
        s.prototype.compareV3 = function(t, e) {
            var n = 6 * t
              , i = 6 * e;
            return this.positions[n] === this.positions[i] && this.positions[n + 1] === this.positions[i + 1] && this.positions[n + 2] === this.positions[i + 2]
        }
        ,
        s.prototype.copyV3 = function(t) {
            var e = 6 * t;
            return [this.positions[e], this.positions[e + 1], this.positions[e + 2]]
        }
        ,
        s.prototype.process = function() {
            var t, e, n = this.positions.length / 6;
            this.previous = [],
            this.next = [],
            this.side = [],
            this.width = [],
            this.indices_array = [],
            this.uvs = [];
            for (var i = 0; i < n; i++)
                this.side.push(1),
                this.side.push(-1);
            for (i = 0; i < n; i++)
                t = this.widthCallback ? this.widthCallback(i / (n - 1)) : 1,
                this.width.push(t),
                this.width.push(t);
            for (i = 0; i < n; i++)
                this.uvs.push(i / (n - 1), 0),
                this.uvs.push(i / (n - 1), 1);
            e = this.compareV3(0, n - 1) ? this.copyV3(n - 2) : this.copyV3(0),
            this.previous.push(e[0], e[1], e[2]),
            this.previous.push(e[0], e[1], e[2]);
            for (i = 0; i < n - 1; i++)
                e = this.copyV3(i),
                this.previous.push(e[0], e[1], e[2]),
                this.previous.push(e[0], e[1], e[2]);
            for (i = 1; i < n; i++)
                e = this.copyV3(i),
                this.next.push(e[0], e[1], e[2]),
                this.next.push(e[0], e[1], e[2]);
            e = this.compareV3(n - 1, 0) ? this.copyV3(1) : this.copyV3(n - 1),
            this.next.push(e[0], e[1], e[2]),
            this.next.push(e[0], e[1], e[2]);
            for (i = 0; i < n - 1; i++) {
                var r = 2 * i;
                this.indices_array.push(r, r + 1, r + 2),
                this.indices_array.push(r + 2, r + 1, r + 3)
            }
            this.attributes ? (this.attributes.position.copyArray(new Float32Array(this.positions)),
            this.attributes.position.needsUpdate = !0,
            this.attributes.previous.copyArray(new Float32Array(this.previous)),
            this.attributes.previous.needsUpdate = !0,
            this.attributes.next.copyArray(new Float32Array(this.next)),
            this.attributes.next.needsUpdate = !0,
            this.attributes.side.copyArray(new Float32Array(this.side)),
            this.attributes.side.needsUpdate = !0,
            this.attributes.width.copyArray(new Float32Array(this.width)),
            this.attributes.width.needsUpdate = !0,
            this.attributes.uv.copyArray(new Float32Array(this.uvs)),
            this.attributes.uv.needsUpdate = !0,
            this.attributes.index.copyArray(new Uint16Array(this.indices_array)),
            this.attributes.index.needsUpdate = !0) : this.attributes = {
                position: new a.BufferAttribute(new Float32Array(this.positions),3),
                previous: new a.BufferAttribute(new Float32Array(this.previous),3),
                next: new a.BufferAttribute(new Float32Array(this.next),3),
                side: new a.BufferAttribute(new Float32Array(this.side),1),
                width: new a.BufferAttribute(new Float32Array(this.width),1),
                uv: new a.BufferAttribute(new Float32Array(this.uvs),2),
                index: new a.BufferAttribute(new Uint16Array(this.indices_array),1),
                counters: new a.BufferAttribute(new Float32Array(this.counters),1)
            },
            this.geometry.setAttribute("position", this.attributes.position),
            this.geometry.setAttribute("previous", this.attributes.previous),
            this.geometry.setAttribute("next", this.attributes.next),
            this.geometry.setAttribute("side", this.attributes.side),
            this.geometry.setAttribute("width", this.attributes.width),
            this.geometry.setAttribute("uv", this.attributes.uv),
            this.geometry.setAttribute("counters", this.attributes.counters),
            this.geometry.setIndex(this.attributes.index)
        }
        ,
        s.prototype.advance = function(t) {
            var e = this.attributes.position.array
              , n = this.attributes.previous.array
              , i = this.attributes.next.array
              , r = e.length;
            c(e, 0, n, 0, r),
            c(e, 6, e, 0, r - 6),
            e[r - 6] = t.x,
            e[r - 5] = t.y,
            e[r - 4] = t.z,
            e[r - 3] = t.x,
            e[r - 2] = t.y,
            e[r - 1] = t.z,
            c(e, 6, i, 0, r - 6),
            i[r - 6] = t.x,
            i[r - 5] = t.y,
            i[r - 4] = t.z,
            i[r - 3] = t.x,
            i[r - 2] = t.y,
            i[r - 1] = t.z,
            this.attributes.position.needsUpdate = !0,
            this.attributes.previous.needsUpdate = !0,
            this.attributes.next.needsUpdate = !0
        }
        ,
        a.ShaderChunk.meshline_vert = ["", a.ShaderChunk.logdepthbuf_pars_vertex, a.ShaderChunk.fog_pars_vertex, "", "attribute vec3 previous;", "attribute vec3 next;", "attribute float side;", "attribute float width;", "attribute float counters;", "", "uniform vec2 resolution;", "uniform float lineWidth;", "uniform vec3 color;", "uniform float opacity;", "uniform float near;", "uniform float far;", "uniform float sizeAttenuation;", "", "varying vec2 vUV;", "varying vec4 vColor;", "varying float vCounters;", "", "vec2 fix( vec4 i, float aspect ) {", "", "    vec2 res = i.xy / i.w;", "    res.x *= aspect;", "\t vCounters = counters;", "    return res;", "", "}", "", "void main() {", "", "    float aspect = resolution.x / resolution.y;", "    float pixelWidthRatio = 1. / (resolution.x * projectionMatrix[0][0]);", "", "    vColor = vec4( color, opacity );", "    vUV = uv;", "", "    mat4 m = projectionMatrix * modelViewMatrix;", "    vec4 finalPosition = m * vec4( position, 1.0 );", "    vec4 prevPos = m * vec4( previous, 1.0 );", "    vec4 nextPos = m * vec4( next, 1.0 );", "", "    vec2 currentP = fix( finalPosition, aspect );", "    vec2 prevP = fix( prevPos, aspect );", "    vec2 nextP = fix( nextPos, aspect );", "", "    float pixelWidth = finalPosition.w * pixelWidthRatio;", "    float w = 1.8 * pixelWidth * lineWidth * width;", "", "    if( sizeAttenuation == 1. ) {", "        w = 1.8 * lineWidth * width;", "    }", "", "    vec2 dir;", "    if( nextP == currentP ) dir = normalize( currentP - prevP );", "    else if( prevP == currentP ) dir = normalize( nextP - currentP );", "    else {", "        vec2 dir1 = normalize( currentP - prevP );", "        vec2 dir2 = normalize( nextP - currentP );", "        dir = normalize( dir1 + dir2 );", "", "        vec2 perp = vec2( -dir1.y, dir1.x );", "        vec2 miter = vec2( -dir.y, dir.x );", "        //w = clamp( w / dot( miter, perp ), 0., 4. * lineWidth * width );", "", "    }", "", "    //vec2 normal = ( cross( vec3( dir, 0. ), vec3( 0., 0., 1. ) ) ).xy;", "    vec2 normal = vec2( -dir.y, dir.x );", "    normal.x /= aspect;", "    normal *= .5 * w;", "", "    vec4 offset = vec4( normal * side, 0.0, 1.0 );", "    finalPosition.xy += offset.xy;", "", "    gl_Position = finalPosition;", "", a.ShaderChunk.logdepthbuf_vertex, a.ShaderChunk.fog_vertex && "    vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );", a.ShaderChunk.fog_vertex, "}"].join("\r\n"),
        a.ShaderChunk.meshline_frag = ["", a.ShaderChunk.fog_pars_fragment, a.ShaderChunk.logdepthbuf_pars_fragment, "", "uniform sampler2D map;", "uniform sampler2D alphaMap;", "uniform float useMap;", "uniform float useAlphaMap;", "uniform float useDash;", "uniform float dashArray;", "uniform float dashOffset;", "uniform float dashRatio;", "uniform float visibility;", "uniform float alphaTest;", "uniform vec2 repeat;", "", "varying vec2 vUV;", "varying vec4 vColor;", "varying float vCounters;", "", "void main() {", "", a.ShaderChunk.logdepthbuf_fragment, "", "    vec4 c = vColor;", "    if( useMap == 1. ) c *= texture2D( map, vUV * repeat );", "    if( useAlphaMap == 1. ) c.a *= texture2D( alphaMap, vUV * repeat ).a;", "    if( c.a < alphaTest ) discard;", "    if( useDash == 1. ){", "        c.a *= ceil(mod(vCounters + dashOffset, dashArray) - (dashArray * dashRatio));", "    }", "    gl_FragColor = c;", "    gl_FragColor.a *= step(vCounters, visibility);", "", a.ShaderChunk.fog_fragment, "}"].join("\r\n"),
        l.prototype = Object.create(a.ShaderMaterial.prototype),
        l.prototype.constructor = l,
        l.prototype.isMeshLineMaterial = !0,
        l.prototype.copy = function(t) {
            return a.ShaderMaterial.prototype.copy.call(this, t),
            this.lineWidth = t.lineWidth,
            this.map = t.map,
            this.useMap = t.useMap,
            this.alphaMap = t.alphaMap,
            this.useAlphaMap = t.useAlphaMap,
            this.color.copy(t.color),
            this.opacity = t.opacity,
            this.resolution.copy(t.resolution),
            this.sizeAttenuation = t.sizeAttenuation,
            this.near = t.near,
            this.far = t.far,
            this.dashArray.copy(t.dashArray),
            this.dashOffset.copy(t.dashOffset),
            this.dashRatio.copy(t.dashRatio),
            this.useDash = t.useDash,
            this.visibility = t.visibility,
            this.alphaTest = t.alphaTest,
            this.repeat.copy(t.repeat),
            this
        }
        ,
        t.exports && (e = t.exports = {
            MeshLine: s,
            MeshLineMaterial: l
        }),
        e.MeshLine = s,
        e.MeshLineMaterial = l
    }
    ).call(this)
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(4)
      , r = n(7);
    e.getPolygonCentroid = function(t) {
        var e = t[0]
          , n = t[t.length - 1];
        e.equals(n) || t.push(e);
        for (var r = 0, o = 0, a = 0, s = 0, c = t.length - 1; s < t.length; c = s++) {
            var l = t[s].clone().sub(e)
              , u = t[c].clone().sub(e)
              , d = l.y * u.x - u.y * l.x;
            a += d,
            r += (l.x + u.x) * d,
            o += (l.y + u.y) * d
        }
        var p = 3 * a;
        return new i.Vector2(r / p,o / p).add(e)
    }
    ,
    e.doLinesIntersect = function(t, e, n, i) {
        if (t.equals(e) || n.equals(i))
            return !1;
        var r = (i.y - n.y) * (e.x - t.x) - (i.x - n.x) * (e.y - t.y);
        if (0 === r)
            return !1;
        var o = ((i.x - n.x) * (t.y - n.y) - (i.y - n.y) * (t.x - n.x)) / r
          , a = ((e.x - t.x) * (t.y - n.y) - (e.y - t.y) * (t.x - n.x)) / r;
        return !(o < 0 || o > 1 || a < 0 || a > 1)
    }
    ,
    e.rotateToHorizontalPlane = function(t) {
        if (!(t.length < 3)) {
            var e = new i.Triangle(t[0],t[1],t[2])
              , n = new i.Vector3;
            e.getNormal(n);
            var r = (new i.Quaternion).setFromUnitVectors(n, new i.Vector3(0,0,1))
              , o = [];
            return t.forEach((function(t) {
                var e = t.clone().applyQuaternion(r);
                o.push(new i.Vector2(e.x,e.y))
            }
            )),
            {
                points: o,
                quaternion: r
            }
        }
    }
    ;
    var o = function() {};
    e.PolygonRotation = o,
    e.getMidpoint = function(t, e) {
        return (new i.Vector3).addVectors(t, e).divideScalar(2)
    }
    ,
    e.lookAtLocToLonLat = function(t, e) {
        var n = e.clone().sub(t).normalize();
        return {
            lon: Math.atan2(n.y, n.x),
            lat: Math.asin(n.z)
        }
    }
    ,
    e.meanAngle = function() {
        for (var t = [], e = 0; e < arguments.length; e++)
            t[e] = arguments[e];
        if (t)
            return 1 === t.length ? t[0] : Math.atan2(r.sumBy(t, Math.sin), r.sumBy(t, Math.cos))
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(16)
      , o = n(153)
      , a = n(6)
      , s = n(0)
      , c = (n(50),
    n(0))
      , l = n(50)
      , u = function() {
        function t(e, n, i) {
            this.LanguageService = e,
            this.localStorageService = n,
            this.gettext = i,
            this.unitChanged = new r.Signal,
            this.LOCAL_STORAGE_KEY = "iv_unit_key",
            new o.UoMSystem(this.gettext),
            o.UnitsOfMeasurement.init(),
            this.unitSystems = [o.UoMSystem.METRIC, o.UoMSystem.IMPERIAL],
            this.defaultSystem = o.UoMSystem.METRIC;
            var a = this.LanguageService.getBrowserLocaleString().toLowerCase();
            this.defaultSystem = t.isLocaleImperial(a) ? o.UoMSystem.IMPERIAL : o.UoMSystem.METRIC,
            this.initUnit()
        }
        return t.prototype.setUnit = function(t, e) {
            this.currentSystem !== t && (this.currentSystem = t,
            this.unitChanged.emit()),
            e && this.localStorageService.set(this.LOCAL_STORAGE_KEY, t)
        }
        ,
        t.prototype.initUnit = function() {
            var t = this.localStorageService.get(this.LOCAL_STORAGE_KEY);
            if (t)
                for (var e = 0, n = this.unitSystems; e < n.length; e++) {
                    var i = n[e];
                    if (i === t)
                        return void this.setUnit(i, !0)
                }
            this.setUnit(this.defaultSystem, !1)
        }
        ,
        t.isLocaleImperial = function(e) {
            return t.IMPERIAL_LOCALES.indexOf(e.toLowerCase()) >= 0
        }
        ,
        t.IMPERIAL_LOCALES = ["en_us"],
        t.ɵfac = function(e) {
            return new (e || t)(c.ɵɵinject(l.LanguageService),c.ɵɵinject("localStorageService"),c.ɵɵinject("gettext"))
        }
        ,
        t.ɵprov = c.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.UnitService = u,
    c.ɵsetClassMetadata(u, [{
        type: s.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: l.LanguageService
        }, {
            type: void 0,
            decorators: [{
                type: s.Inject,
                args: ["localStorageService"]
            }]
        }, {
            type: void 0,
            decorators: [{
                type: s.Inject,
                args: ["gettext"]
            }]
        }]
    }
    ), null),
    i.module("IVWebApp").service("UnitService", a.downgradeInjectable(u))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(180)
      , a = n(96)
      , s = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.resultType = o.SearchResultType.POI,
            e
        }
        return r(e, t),
        e.prototype.copy = function(e, n) {
            return t.prototype.fill.call(this, e),
            this.icon = e.icon,
            this.location = e.location.clone(),
            this.siteModelEntity = e.siteModelEntity,
            this.siteModelEntityId = e.siteModelEntityId,
            this.poiType = e.poiType,
            this.poiTypeId = e.poiTypeId,
            this
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.icon = e.icon,
            this.location = a.VectorFactory.fromArray3(e.location),
            this.siteModelEntityId = e.site_model_entity_id,
            this.poiTypeId = e.poi_type_id
        }
        ,
        e
    }(n(545).SearchResultEntity);
    e.PoiSearchEntity = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    ), o = this && this.__assign || function() {
        return (o = Object.assign || function(t) {
            for (var e, n = 1, i = arguments.length; n < i; n++)
                for (var r in e = arguments[n])
                    Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]);
            return t
        }
        ).apply(this, arguments)
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var a, s = n(317), c = n(393), l = n(4), u = n(20), d = n(233);
    !function(t) {
        t[t.ROTATE = 0] = "ROTATE",
        t[t.PAN = 1] = "PAN"
    }(a || (a = {}));
    var p = function(t) {
        function e(e, n) {
            var i = t.call(this, e) || this;
            return i.inputHandler = n,
            i.target = new l.Vector3,
            i.distance = 20,
            i.orientation = {
                azimuth: 0,
                elevation: Math.PI / 6
            },
            i.fov = 100,
            i.keyboardInput = !1,
            i.operation = a.ROTATE,
            i._camera = new l.PerspectiveCamera(i.verticalFOV,e.aspect,.1,100),
            i._camera.up = new l.Vector3(0,0,1),
            i
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "camera", {
            get: function() {
                return this._camera
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.updateCamera = function() {
            var t = this.orientation.azimuth
              , e = this.orientation.elevation;
            this._camera.position.set(this.distance * Math.cos(e) * Math.cos(t), this.distance * Math.cos(e) * Math.sin(t), this.distance * Math.sin(e)),
            this._camera.position.add(this.target),
            this._camera.lookAt(this.target),
            this.clampFOV(),
            this._camera.fov = this.verticalFOV,
            this._camera.aspect = this.viewport.aspect,
            this._camera.updateProjectionMatrix()
        }
        ,
        Object.defineProperty(e.prototype, "horizontalFOV", {
            get: function() {
                var t = this.viewport.aspect;
                return t >= 1 ? this.fov : this.fov * t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "verticalFOV", {
            get: function() {
                var t = this.viewport.aspect;
                return t >= 1 ? this.fov / t : this.fov
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.dragStart = function(t) {
            return this.operation = void 0,
            t.event.button === d.MouseButton.LEFT || void 0 === t.event.button ? this.operation = t.event.shiftKey ? a.PAN : a.ROTATE : t.event.button !== d.MouseButton.MIDDLE && t.event.button !== d.MouseButton.RIGHT || (this.operation = a.PAN),
            this.lastDragPosition = o({}, t),
            void 0 !== this.operation
        }
        ,
        e.prototype.drag = function(t, n, i) {
            if (0 !== this.viewport.screenWidth && 0 !== this.viewport.screenHeight)
                if (this.operation === a.ROTATE) {
                    var r = t / this.viewport.screenWidth
                      , o = n / this.viewport.screenHeight
                      , s = this.horizontalFOV / 180 * Math.PI * e.CAMERA_ROTATION_SPEED_FACTOR
                      , c = s / this.viewport.aspect;
                    this.orientation.azimuth -= r * s,
                    this.orientation.elevation += o * c,
                    this.orientation.elevation = Math.max(e.MIN_ELEVATION, Math.min(e.MAX_ELEVATION, this.orientation.elevation))
                } else if (this.operation === a.PAN) {
                    var l = this.target.clone().project(this.camera)
                      , u = this.inputHandler.view.unprojectScreenCoordinates(this.lastDragPosition.x, this.lastDragPosition.y, l.z);
                    this.lastDragPosition.x += t,
                    this.lastDragPosition.y += n;
                    var d = this.inputHandler.view.unprojectScreenCoordinates(this.lastDragPosition.x, this.lastDragPosition.y, l.z);
                    this.target.add(u.sub(d))
                }
        }
        ,
        e.prototype.dragEnd = function() {
            return this.operation === a.ROTATE
        }
        ,
        e.prototype.zoomTo = function(t, n, i) {
            var r = this.distance;
            this.distance = i ? r / n : r + n * e.WHEEL_SCALE,
            this.distance = Math.max(1, Math.min(100, this.distance))
        }
        ,
        e.prototype.centerOn = function(t) {
            this._camera.position.copy(t)
        }
        ,
        e.prototype.applyKeyboardInput = function() {
            return !!this.keyboardInput && c.applyKeyboardInputToCamera(this.inputHandler, this.camera)
        }
        ,
        e.prototype.clampFOV = function() {
            var t = this.viewport.aspect;
            if (t >= 1) {
                var n = Math.min(e.MAX_HFOV, this.fov)
                  , i = Math.min(e.MAX_VFOV, this.fov / t);
                this.fov = Math.max(Math.min(n, i * t), e.MIN_FOV)
            } else {
                n = Math.min(e.MAX_HFOV, this.fov * t),
                i = Math.min(e.MAX_VFOV, this.fov);
                this.fov = Math.max(Math.min(n / t, i), e.MIN_FOV)
            }
        }
        ,
        e.MIN_FOV = 20,
        e.MAX_HFOV = 150,
        e.MAX_VFOV = 100,
        e.WHEEL_SCALE = .3,
        e.MAX_ELEVATION = u.degreesToRadians(85),
        e.MIN_ELEVATION = u.degreesToRadians(-85),
        e.CAMERA_ROTATION_SPEED_FACTOR = 2,
        e
    }(s.CameraController);
    e.OrbitCameraController = p
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    ), o = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
    , a = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var s = n(2)
      , c = n(7)
      , l = n(1126)
      , u = n(1127)
      , d = n(80);
    n(166);
    n(166);
    var p = n(548)
      , h = n(1130)
      , f = (n(9),
    n(28),
    n(24),
    n(14),
    n(15),
    n(25))
      , m = (n(66),
    n(8))
      , g = (n(36),
    n(6))
      , v = n(0)
      , y = n(0)
      , b = n(166)
      , w = n(14)
      , S = n(66)
      , x = n(15)
      , M = n(24)
      , E = n(9)
      , C = n(28)
      , A = n(36)
      , T = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e, n, i, r) || this;
            return o.floorHeights = [],
            o.trackSignal(o.factory.FloorChangerService.onFloorChange).connect((function(t) {
                return o.onFloorChanged(t)
            }
            )),
            o.factory.ConfigService.updated.connect((function() {
                return o.initOsmMap()
            }
            )),
            o.factory.AuthenticationService.onAuthenticationChanged.connect((function() {
                return o.view.invalidateScene()
            }
            )),
            o.initOsmMap(),
            o
        }
        return r(e, t),
        e.prototype.displayFloorForScreenshot = function(t, e) {
            return o(this, void 0, void 0, (function() {
                return a(this, (function(n) {
                    switch (n.label) {
                    case 0:
                        return this.currentFloorOverwrite = e,
                        [4, this.update(t)];
                    case 1:
                        return n.sent(),
                        this.view.invalidateScene(),
                        [2]
                    }
                }
                ))
            }
            ))
        }
        ,
        e.prototype.disableScreenshotMode = function() {
            this.currentFloorOverwrite = void 0,
            this.view.invalidateScene()
        }
        ,
        e.prototype.update = function(e) {
            return o(this, void 0, void 0, (function() {
                return a(this, (function(n) {
                    switch (n.label) {
                    case 0:
                        return [4, this.updateIndoorMaps()];
                    case 1:
                        return n.sent(),
                        [2, t.prototype.update.call(this, e)]
                    }
                }
                ))
            }
            ))
        }
        ,
        e.prototype.onFloorChanged = function(t) {
            this.floorHeights.length = 0;
            for (var e = 0, n = t.currentFloors; e < n.length; e++) {
                var i = n[e];
                this.floorHeights.push(i.zMin)
            }
            this.view.invalidateScene()
        }
        ,
        e.prototype.initOsmMap = function() {
            var t = this;
            Promise.all([this.factory.ConfigService.initialized, this.factory.GeoTransformationService.initialized]).then((function() {
                var e = c.find(t.maps, (function(t) {
                    return t instanceof u.TiledMapOpenStreetMap
                }
                ));

                if("osm" === t.factory.ConfigService.getString(f.Configs.CORE_MAP_BASEMAP)){
                    if(!e){
                        t.addMap(new u.TiledMapOpenStreetMap(t.factory.TransformService,t.factory.ConfigService.getString(f.Configs.CORE_MAP_TILE_URL),t.factory.ConfigService.getInteger(f.Configs.CORE_MAP_TILE_MAX_ZOOM, 25),t,t.tileColor,t.factory.ConfigService.getString(f.Configs.CORE_MAP_ATTRIBUTION)));
                    }
                }
                else{
                    t.removeMap(e);
                }
                //"osm" === t.factory.ConfigService.getString(f.Configs.CORE_MAP_BASEMAP) ? e || t.addMap(new u.TiledMapOpenStreetMap(t.factory.TransformService,t.factory.ConfigService.getString(f.Configs.CORE_MAP_TILE_URL),t.factory.ConfigService.getInteger(f.Configs.CORE_MAP_TILE_MAX_ZOOM, 25),t,t.tileColor,t.factory.ConfigService.getString(f.Configs.CORE_MAP_ATTRIBUTION))) : t.removeMap(e)
            }
            )).catch(m.handleWarning)
        }
        ,
        e.prototype.updateIndoorMaps = function() {
            var t = this;
            return this.factory.GeoTransformationService.initialized.then((function() {
                return t.factory.AuthenticationService.dataAccessible ? t.factory.TiledMapRepository.findAll() : []
            }
            )).then((function(e) {
                return t.updateIndoorMapsFor(e)
            }
            )).catch(m.handleWarning)
        }
        ,
        e.prototype.updateIndoorMapsFor = function(t) {
            var e = [];
            if (!this.factory.ModeService.isSiteModelEditorMode() && void 0 === this.currentFloorOverwrite)
                for (var n = 0, i = this.floorHeights; n < i.length; n++) {
                    var r = i[n];
                    this.addLayersToShow(e, t, r)
                }
            void 0 !== this.currentFloorOverwrite && this.addLayersToShow(e, t, this.currentFloorOverwrite.zMin),
            e = c.uniq(e);
            for (var o = c.filter(this.maps, (function(t) {
                return t instanceof h.TiledMapFromEntity
            }
            )), a = c.map(o, (function(t) {
                return t.tiledMapEntity
            }
            )), s = c.difference(e, a), l = c.filter(o, (function(t) {
                return e.indexOf(t.tiledMapEntity) < 0
            }
            )), u = 0, d = s; u < d.length; u++) {
                var p = d[u];
                this.addMap(new h.TiledMapFromEntity(this.factory.TransformService,p,this,this.tileColor,this.factory.RestService))
            }
            for (var f = 0, m = l; f < m.length; f++) {
                var g = m[f];
                this.removeMap(g)
            }
        }
        ,
        e.prototype.addLayersToShow = function(t, n, i) {
            for (var r, o = 1 / 0, a = 0, s = n = c.filter(n, (function(t) {
                return t.type === p.TiledMapType.TILED_PYRAMID
            }
            )); a < s.length; a++) {
                var l = s[a];
                (f = Math.abs(i - l.location.z)) < e.MAX_VERTICAL_DIST && f < o && (r = l,
                o = f)
            }
            for (var u = r ? r.location.z : void 0, d = 0, h = n; d < h.length; d++) {
                l = h[d];
                var f = Math.abs(u - l.location.z)
                  , m = !!l.floor && l.filePath.indexOf("/building_") > 0
                  , g = this.currentFloorOverwrite ? [this.currentFloorOverwrite] : this.factory.FloorChangerService.currentFloors;
                (m && c.includes(g, l.floor) || !m && r && f < e.MAX_VERTICAL_DIST_TO_BEST) && t.push(l)
            }
        }
        ,
        e.MAX_VERTICAL_DIST = 2,
        e.MAX_VERTICAL_DIST_TO_BEST = 1,
        e
    }(l.MapLayerBase);
    e.MapLayer = T;
    var O = function(t) {
        function e(e, n, i, r, o, a, s, c) {
            var l = t.call(this) || this;
            return l.TiledMapRepository = e,
            l.GeoTransformationService = n,
            l.TransformService = i,
            l.ConfigService = r,
            l.ModeService = o,
            l.RestService = a,
            l.FloorChangerService = s,
            l.AuthenticationService = c,
            l
        }
        return r(e, t),
        e.prototype.create = function(t, e, n) {
            return new T(t,e,n,this)
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(y.ɵɵinject(b.TiledMapRepository),y.ɵɵinject(w.GeoTransformationService),y.ɵɵinject(S.TransformService),y.ɵɵinject(x.ConfigService),y.ɵɵinject(M.ModeService),y.ɵɵinject(E.RestService),y.ɵɵinject(C.FloorChangerService),y.ɵɵinject(A.AuthenticationService))
        }
        ,
        e.ɵprov = y.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(d.SceneLayerFactory);
    e.MapLayerFactory = O,
    y.ɵsetClassMetadata(O, [{
        type: v.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: b.TiledMapRepository
        }, {
            type: w.GeoTransformationService
        }, {
            type: S.TransformService
        }, {
            type: x.ConfigService
        }, {
            type: M.ModeService
        }, {
            type: E.RestService
        }, {
            type: C.FloorChangerService
        }, {
            type: A.AuthenticationService
        }]
    }
    ), null),
    s.module("IVWebApp").service("MapLayerFactory", g.downgradeInjectable(O))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(70)
      , s = (n(9),
    n(1131))
      , c = n(6)
      , l = n(0)
      , u = n(0)
      , d = n(9)
      , p = function(t) {
        function e(e) {
            var n = t.call(this, s.CameraHeadEntity, e) || this;
            return n.RestService = e,
            n.path = "camera_heads",
            n
        }
        return r(e, t),
        e.ɵfac = function(t) {
            return new (t || e)(u.ɵɵinject(d.RestService))
        }
        ,
        e.ɵprov = u.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(a.RestRepository);
    e.CameraHeadRepository = p,
    u.ɵsetClassMetadata(p, [{
        type: l.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: d.RestService
        }]
    }
    ), null),
    o.module("IVWebApp").service("CameraHeadRepository", c.downgradeInjectable(p))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(317)
      , a = n(393)
      , s = n(4)
      , c = n(233)
      , l = function(t) {
        function e(e, n) {
            var i = t.call(this, e) || this;
            return i.inputHandler = n,
            i.resMin = .01,
            i.dragButtons = new Set,
            i.keyboardInput = !1,
            i.resolution = .1,
            i.lookAtTarget = new s.Vector3,
            i.dragButtons.add(c.MouseButton.LEFT),
            i._camera = new s.OrthographicCamera(0,0,0,0,.1,2e4),
            i.setAngle(0),
            i
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "camera", {
            get: function() {
                return this._camera
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.updateCamera = function() {
            this.updateOrthographicCamera()
        }
        ,
        e.prototype.setAngle = function(t) {
            this._camera.up.set(Math.sin(t), Math.cos(t), 0),
            this.lookAtTarget.copy(this._camera.position),
            this.lookAtTarget.z -= 1,
            this._camera.lookAt(this.lookAtTarget)
        }
        ,
        e.prototype.dragStart = function(t) {
            return void 0 === t.event.button || this.dragButtons.has(t.event.button)
        }
        ,
        e.prototype.drag = function(t, n, i) {
            var r = new s.Vector3(t / this.viewport.screenWidth * 2,-n / this.viewport.screenHeight * 2,0)
              , o = new s.Vector3(0,0,0);
            r.unproject(this._camera),
            o.unproject(this._camera);
            var a = o.sub(r);
            this._camera.position.add(a),
            this._camera.position.clamp(e.MIN_PAN_LIMIT, e.MAX_PAN_LIMIT)
        }
        ,
        e.prototype.zoomTo = function(t, n, i) {
            var r = this.resolution;
            if (i ? this.resolution /= n : this.resolution += n * this.resolution * .1,
            this.resolution = Math.min(e.RES_MAX, Math.max(this.resMin, this.resolution)),
            t) {
                var o = this.resolution / r
                  , a = new s.Vector3(0,0,1).unproject(this._camera)
                  , c = a.clone()
                  , l = this.viewport.unprojectScreenCoordinates(t.x, t.y, 1);
                a.subVectors(l, a).multiplyScalar(o).sub(c.subVectors(l, c)),
                this._camera.position.sub(a)
            }
            this.updateOrthographicCamera()
        }
        ,
        e.prototype.centerOn = function(t, e) {
            e ? this._camera.far = e + this._camera.near : e = this._camera.far - this._camera.near;
            var n = e / 2 + this._camera.near;
            this._camera.getWorldDirection(this._camera.position).multiplyScalar(-n).add(t)
        }
        ,
        e.prototype.applyKeyboardInput = function() {
            return !!this.keyboardInput && a.applyKeyboardInputToCamera(this.inputHandler, this.camera)
        }
        ,
        e.prototype.updateOrthographicCamera = function() {
            var t = this.viewport.screenWidth
              , e = this.viewport.screenHeight;
            this._camera.left = -t / 2 * this.resolution,
            this._camera.right = t / 2 * this.resolution,
            this._camera.top = e / 2 * this.resolution,
            this._camera.bottom = -e / 2 * this.resolution,
            this._camera.updateProjectionMatrix()
        }
        ,
        e.MIN_PAN_LIMIT = new s.Vector3(-1e5,-1e5,-1 / 0),
        e.MAX_PAN_LIMIT = new s.Vector3(1e5,1e5,1 / 0),
        e.RES_MAX = 100,
        e
    }(o.CameraController);
    e.PanningCameraController = l
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , r = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = (n(9),
    n(15),
    n(1189))
      , s = n(6)
      , c = n(0)
      , l = n(7)
      , u = n(0)
      , d = n(9)
      , p = n(15)
      , h = function() {
        function t(t, e) {
            this.RestService = t,
            this.ConfigService = e,
            this.config = {
                openSourceSoftwareUsed: void 0
            },
            this.initialized = this.initVersion()
        }
        return t.prototype.initVersion = function() {
            var t = this;
            return this.version = {},
            this.RestService.httpRequest({
                url: "version.json"
            }).then((function(e) {
                t.version.version = "$" === e.version[0] ? "0.0" : e.version,
                t.version.build = "$" === e.build[0] ? "0" : e.build,
                t.version.distro = "$" === e.distro[0] ? "" : e.distro,
                t.version.commit = "$" === e.commit[0] ? "" : e.commit,
                t.version.commit2 = "$" === e.commit2[0] ? "" : e.commit2,
                t.version.branch = "$" === e.branch[0] ? "DEV" : e.branch,
                t.version.versionstring = "$" === e.versionstring[0] ? "develop/src" : t.version.versionstring
            }
            )).catch((function() {}
            ))
        }
        ,
        t.prototype.getVersion = function() {
            var t = this;
            return this.initialized.then((function() {
                return new a.VersionInfo(t.version)
            }
            ))
        }
        ,
        t.prototype.getThirdPartyLibraries = function() {
            return i(this, void 0, void 0, (function() {
                var e, n, i, o;
                return r(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        return this.config.openSourceSoftwareUsed ? [3, 2] : (e = this.RestService.httpRequest({
                            url: "licenses_iv.json"
                        }),
                        n = this.RestService.httpRequest({
                            url: "licenses_is.json"
                        }),
                        [4, Promise.all([e, n])]);
                    case 1:
                        return i = r.sent(),
                        o = i[0].dependencies.concat(i[1].dependencies),
                        t.formatLicensesData(o),
                        this.config.openSourceSoftwareUsed = this.convertDictionaryToArray(o).sort((function(t, e) {
                            return t.name.localeCompare(e.name)
                        }
                        )),
                        [2, this.config.openSourceSoftwareUsed];
                    case 2:
                        return [2, Promise.resolve(this.config.openSourceSoftwareUsed)]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.convertDictionaryToArray = function(t) {
            return (t = l.uniqBy(t, "name")).map((function(t) {
                return {
                    name: t.name,
                    websiteUrl: t.homepage,
                    licenses: t.licenses,
                    description: t.description,
                    sourceCodeUrl: ""
                }
            }
            ))
        }
        ,
        t.formatLicensesData = function(t) {
            o.forEach(t, (function(t) {
                t.homepage = t.homepage.replace(/\/$/, "")
            }
            ))
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(u.ɵɵinject(d.RestService),u.ɵɵinject(p.ConfigService))
        }
        ,
        t.ɵprov = u.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.AboutService = h,
    u.ɵsetClassMetadata(h, [{
        type: c.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: d.RestService
        }, {
            type: p.ConfigService
        }]
    }
    ), null),
    o.module("IVWebApp").service("AboutService", s.downgradeInjectable(h))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(52)
      , o = n(6)
      , a = n(0)
      , s = (n(17),
    n(0))
      , c = n(17)
      , l = function() {
        this.visible = !1
    };
    e.AlignmentHelper = l;
    var u = function() {
        function t(t) {
            this.ViewService = t,
            this.helperDefault = new l,
            this.helperTV = new l,
            this.helperSV1 = new l,
            this.helperSV2 = new l
        }
        return t.prototype.updateViewports = function() {
            this.helperDefault.viewport = this.ViewService.mainView.getDefaultViewport(),
            this.helperTV.viewport = this.ViewService.mainView.getViewportByName(r.SplitViewportName.TOP_VIEW),
            this.helperSV1.viewport = this.ViewService.mainView.getViewportByName(r.SplitViewportName.EAST_WEST_VIEW),
            this.helperSV2.viewport = this.ViewService.mainView.getViewportByName(r.SplitViewportName.NORTH_SOUTH_VIEW)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(s.ɵɵinject(c.ViewService))
        }
        ,
        t.ɵprov = s.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.AlignmentHelperService = u,
    s.ɵsetClassMetadata(u, [{
        type: a.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: c.ViewService
        }]
    }
    ), null),
    i.module("IVWebApp").service("AlignmentHelperService", o.downgradeInjectable(u))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = (n(39),
    n(177),
    n(139),
    n(91),
    n(27),
    n(24),
    n(28),
    n(54),
    n(31),
    n(41),
    n(80))
      , s = n(4)
      , c = n(7)
      , l = n(538)
      , u = n(108)
      , d = n(1201)
      , p = n(396)
      , h = n(40)
      , f = n(8)
      , m = n(57)
      , g = (n(103),
    n(136))
      , v = (n(14),
    n(402))
      , y = (n(36),
    n(67))
      , b = n(55)
      , w = n(549)
      , S = n(321)
      , x = (n(21),
    n(17),
    n(231),
    n(6))
      , M = n(0)
      , E = n(564)
      , C = n(0)
      , A = n(91)
      , T = n(31)
      , O = n(41)
      , _ = n(28)
      , P = n(54)
      , I = n(24)
      , k = n(39)
      , D = n(177)
      , R = n(139)
      , L = n(27)
      , N = n(103)
      , j = n(14)
      , V = n(36)
      , F = n(21)
      , U = n(17)
      , B = n(231)
      , z = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e, n, i, r.IV, r.GeoTransformationService, r.FloorChangerService, r.AuthenticationService) || this;
            return o.factory = r,
            o.planeSprites = [],
            o.poiSprites = new s.Object3D,
            o.poiHighlightSprites = new s.Object3D,
            o.poiSpritesTextBoxCache = {},
            o.poiSpritesHighlightBoxCache = {},
            o.errorHandler = o.factory.ErrorService.newWrapper().report().network().generic(o.factory.gettext("An error occurred when retrieving the cursor location needed to create the POI.")).build(),
            o.extractParams(i),
            o.buildSpriteParams(e),
            o.createLocationPoiSpriteParams(),
            o.initEventListeners(),
            o.init3DObjects(),
            o
        }
        return r(e, t),
        e.prototype.extractParams = function(t) {
            this.params = t,
            this.params.poiPxSize = t.poiPxSize || 32,
            this.params.distanceThreshold = t.distanceThreshold || 25,
            this.params.hideUnimportant = t.hideUnimportant || !1,
            this.params.poiHighlight = void 0 === t.poiHighlight || t.poiHighlight,
            this.params.poiNames = t.poiNames || function() {
                return !0
            }
            ,
            this.params.contextMenu = void 0 === t.contextMenu || t.contextMenu,
            this.params.showCustomRoutePoints = t.showCustomRoutePoints || function() {
                return !1
            }
            ,
            this.params.removePoiHoverDelay = (t.doubleTapInterval || 0) + 10,
            this.params.poiVisibilityXYTolerance = t.poiVisibilityXYTolerance || .1,
            this.params.poiVisibilityDepthTolerance = t.poiVisibilityDepthTolerance || .05,
            this.params.poiVisibilityCheck = void 0 === t.poiVisibilityCheck || t.poiVisibilityCheck,
            this.maximumDistanceBetweenCameraAndImageLocations = this.params.distanceThreshold / 4
        }
        ,
        e.prototype.buildSpriteParams = function(t) {
            this.spriteParams = {
                textBox: {
                    fontProperties: {
                        size: 14
                    },
                    backgroundProperties: {
                        blurColor: "rgba(0,0,0,1)"
                    },
                    padding: {
                        top: 12,
                        left: 8 + this.params.poiPxSize + 8,
                        right: 12,
                        bottom: 12
                    },
                    pivot: new s.Vector3(0,.5,.5),
                    offset: new s.Vector3(-this.params.poiPxSize / 2 - 8,0,0)
                },
                highlightBox: {
                    fontProperties: {
                        size: 14
                    },
                    backgroundProperties: {
                        color: "rgba(0,0,0,0.5)",
                        blurColor: "rgba(0,0,0,1)"
                    },
                    padding: {
                        top: 12,
                        left: 8 + this.params.poiPxSize + 8,
                        right: 12,
                        bottom: 12
                    },
                    pivot: new s.Vector3(0,.5,.5),
                    offset: new s.Vector3(-this.params.poiPxSize / 2 - 8,0,0)
                },
                iconParameters: {
                    position: new s.Vector2(8,28),
                    size: new s.Vector2(this.params.poiPxSize,this.params.poiPxSize),
                    onLoad: function() {
                        return t.invalidateScene()
                    }
                }
            }
        }
        ,
        e.prototype.createLocationPoiSpriteParams = function() {
            this.spriteParams.locationTextBox = c.cloneDeep(this.spriteParams.textBox),
            this.spriteParams.locationTextBox.pivot.y = 0,
            this.spriteParams.locationTextBox.offset.y = -4,
            this.spriteParams.locationHighlightBox = c.cloneDeep(this.spriteParams.highlightBox),
            this.spriteParams.locationHighlightBox.pivot.y = 0,
            this.spriteParams.locationHighlightBox.offset.y = -4
        }
        ,
        e.prototype.initEventListeners = function() {
            var t = this;
            this.trackSignal(this.factory.PoiService.poisChanged).connect((function() {
                return t.debouncedUpdate()
            }
            )),
            this.trackSignal(this.factory.PoiTypeService.poiTypesChanged).connect((function() {
                return t.debouncedUpdate()
            }
            )),
            this.trackSignal(this.factory.PoiService.onPoisHighlight).connect((function() {
                return t.debouncedUpdate()
            }
            )),
            this.trackSignal(this.factory.PoiService.onPoisUnhighlight).connect((function() {
                return t.debouncedUpdate()
            }
            )),
            this.trackSignal(this.factory.PoiService.onPoiDelete).connect((function(e) {
                t.hoveredPoi && t.hoveredPoi.id === e.id && t.removeHoveredPoi()
            }
            ))
        }
        ,
        e.prototype.setPoiVisibilityCheck = function(t) {
            this.params.poiVisibilityCheck = t,
            this.debouncedUpdate()
        }
        ,
        e.prototype.init3DObjects = function() {
            this.sceneGroup.add(this.poiSprites),
            this.sceneGroup.add(this.poiHighlightSprites)
        }
        ,
        e.prototype.onContextMenu = function(t) {
            var e = this;
            if (this.params.contextMenu && this.factory.UserService.userInfo.checkAttribute(m.GroupAttributes.CAN_CREATE_POIS) && this.factory.ModeService.isNormalMode() && this.view === this.factory.ViewService.mainView && this.factory.PoiTypeService.isAnyVisible() && this.factory.LicenseService.isLicenseValid)
                return {
                    name: this.factory.gettextCatalog.getString("Create POI"),
                    icon: "add",
                    callback: function() {
                        var n = e.view.unprojectScreenCoordinates(t.x, t.y);
                        e.errorHandler.wrap(e.factory.RaycastService.getCoordinates(e.view, n, !0).then((function(t) {
                            e.factory.CursorService.updateCursor(t),
                            e.factory.PoiService.openEditor.emit(!0)
                        }
                        ))).catch((function() {}
                        ))
                    }
                }
        }
        ,
        e.prototype.onBeforeRenderViewport = function(e) {
            if (t.prototype.onBeforeRenderViewport.call(this, e),
            this.poiHoverSprite) {
                var n = this.factory.PoiService.movingPoi || this.factory.PoiService.openedPoi;
                n && this.poiHoverSprite.resource.hash === n.hash && this.poiHoverSprite.resource !== n && (this.poiHoverSprite.resource = n),
                this.poiHoverSprite.position = this.poiHoverSprite.resource.location,
                this.poiHoverSprite.updateSpriteObject(e)
            }
            this.planeSprites.forEach((function(t) {
                return t.updateSpriteObject(e)
            }
            ))
        }
        ,
        e.prototype.update = function() {
            var t, e, n = this;
            if (!this.factory.ModeService.isNormalMode())
                return this.clear(),
                void this.removeHoveredPoi();
            if (this.params.hideUnimportant) {
                var i = this.getActiveViewport().camera
                  , r = i.right - i.left;
                if (!isFinite(r))
                    throw new u.IVFrontendException("POI level of detail requires an orthographic camera");
                t = this.getActiveViewport().screenWidth / r;
                var o = this.params.poiPxSize / t;
                e = new d.PoiGridManager(o,this.params.poiPxSize,t,this.factory.PoiService.highlightedPois)
            }
            Promise.all([l.PlaneSprite.initialized, this.factory.PoiTypeService.initialized]).then((function() {
                return n.getPois()
            }
            )).then((function(i) {
                return n.displayPois(i, e, t)
            }
            )).catch((function() {}
            ))
        }
        ,
        e.prototype.clear = function() {
            this.planeSprites = [],
            y.removeChildrenOfObject3D(this.poiSprites),
            y.removeChildrenOfObject3D(this.poiHighlightSprites)
        }
        ,
        e.prototype.displayPois = function(t, e, n) {
            t = c.clone(t);
            this.addAdditionalPoisToDisplay(t);
            this.sortPoisToDisplay(t);
            var i = this.filterPoisToDisplay(t, this.factory.PoiService.highlightedPois, n, e);
            this.clear();
            for (var r = 0, o = i; r < o.length; r++) {
                var a = o[r];
                if(this.isPoiToBeHighLighted(this.factory.PoiService.highlightedPois, a)){
                    this.displayHighlightedPoi(a);
                }
                else{
                    this.displayPoi(a);
                }
                //this.isPoiToBeHighLighted(this.factory.PoiService.highlightedPois, a) ? this.displayHighlightedPoi(a) : this.displayPoi(a)
            }
            this.params.poiVisibilityCheck && this.hideObscuredPois(this.factory.PoiService.highlightedPois);
            this.view.invalidateScene();
        }
        ,
        e.prototype.sortPoisToDisplay = function(t) {
            var e = this;
            t.sort((function(t, n) {
                return E.comparePoiImportance(t, n, e.factory.PoiService.highlightedPois)
            }
            ))
        }
        ,
        e.prototype.displayPoi = function(t) {
            var e = this.getPoiTextSprite(t);
            e.spriteObject.visible = !1;
            this.params.poiVisibilityCheck || (e.spriteObject.visible = !0);
            this.planeSprites.push(e);
            this.poiSprites.add(e.spriteObject);
        }
        ,
        e.prototype.displayHighlightedPoi = function(t) {
            var e = this.getPoiHighlightSprite(t);
            this.planeSprites.push(e);
            this.poiHighlightSprites.add(e.spriteObject);
        }
        ,
        e.prototype.isPoiToBeHighLighted = function(t, e) {
            return this.params.poiHighlight && t.has(e)
        }
        ,
        e.prototype.filterPoisToDisplay = function(t, n, i, r) {
            for (var o = [], a = Math.pow(this.params.distanceThreshold, 2), s = this.factory.ViewService.mainView.getCamera().position, c = 0, l = t; c < l.length; c++) {
                var u = l[c];
                (u.forceShow || this.isPoiMoving(u) || e.isPoiHighlighted(u, n) || e.isPoiVisibleAtCurrentZoomLevel(u, i) && e.isPoiInsideVisibilityRadius(u, s, a) && this.isPoiInCurrentFloor(u)) && (this.params.hideUnimportant ? r.addToGrid(u, this.getPoiTextSprite(u)) : o.push(u))
            }
            return this.params.hideUnimportant ? r.getArray() : o
        }
        ,
        e.prototype.getPois = function() {
            var t = this.factory.PoiService.poisToDisplay;
            return void 0 !== t ? Promise.resolve(t) : this.getPoisFromFilterRequest()
        }
        ,
        e.prototype.getPoisFromFilterRequest = function() {
            var t = this.factory.PoiTypeService.types.filter((function(t) {
                return t.selected
            }
            ));
            if (0 === t.length)
                return Promise.resolve([]);
            var e = this.factory.FloorChangerService.currentFloors
              , n = (new g.PoiRestFilterBuilder).poiType(t).siteModel(e).siteModel([void 0])
              , i = this.view.getCamera();
            return i instanceof s.PerspectiveCamera ? this.filterForPanoramaView(n, i) : i instanceof s.OrthographicCamera && this.filterForMapView(n, i),
            this.factory.PoiRepository.filter(n.build())
        }
        ,
        e.prototype.filterForPanoramaView = function(t, e) {
            var n = this.getCurrentLocation(e)
              , i = this.params.distanceThreshold;
            t.location(n).radius(i)
        }
        ,
        e.prototype.filterForMapView = function(t, n) {
            var i = new s.Vector3(n.left,n.bottom,0)
              , r = n.position.clone();
            r.addScaledVector(i, e.ORTHO_BOUNDS_SCALE),
            r = this.factory.GeoTransformationService.vectorToGlobal(r);
            var o = n.position.clone();
            o.addScaledVector(i, -e.ORTHO_BOUNDS_SCALE),
            o = this.factory.GeoTransformationService.vectorToGlobal(o),
            t.boundingBox(r.x, r.y, o.x, o.y).limit(e.MAXIMUM_POI_NUMBER).sortBy(w.SortableField.IMPORTANCE).sortOrder(w.SortOrder.DESCENDING)
        }
        ,
        e.prototype.getCurrentLocation = function(t) {
            var e = this.view.getImage()
              , n = !e || e.location.distanceTo(t.position) > this.maximumDistanceBetweenCameraAndImageLocations ? this.factory.GeoTransformationService.vectorToGlobal(t.position) : e.globalLocation;
            return new s.Vector2(n.x,n.y)
        }
        ,
        e.prototype.hideObscuredPois = function(t) {
            var e = this;
            if (0 !== this.planeSprites.length)
                if (this.factory.RaycastService.checkDepthPickable(this.view)) {
                    var n = c.map(this.planeSprites, (function(t) {
                        return t.resource
                    }
                    ))
                      , i = this.view.getCamera().position;
                    this.factory.RaycastService.raycastEntitiesDepth(this.view, n).then((function(n) {
                        for (var r = 0, o = e.planeSprites; r < o.length; r++) {
                            var a = o[r];
                            if (a.resource.visibilityCheck && !t.has(a.resource))
                                if (n[a.resource.id] && n[a.resource.id].position) {
                                    var s = n[a.resource.id].position
                                      , c = i.distanceTo(s) - i.distanceTo(a.resource.location);
                                    a.spriteObject.visible = !e.params.poiVisibilityCheck || c >= -e.params.poiVisibilityDepthTolerance
                                } else
                                    a.spriteObject.visible = !0;
                            else
                                a.spriteObject.visible = !0
                        }
                        e.view.invalidateScene()
                    }
                    )).catch(f.handleWarning)
                } else {
                    for (var r = 0, o = this.planeSprites; r < o.length; r++) {
                        o[r].spriteObject.visible = !0
                    }
                    this.view.invalidateScene()
                }
        }
        ,
        e.isPoiHighlighted = function(t, e) {
            return e.has(t) || t.isLocationAsPoi
        }
        ,
        e.isPoiVisibleAtCurrentZoomLevel = function(t, e) {
            var n = t.poiType;
            return !(n.visibilityZoomMin && e && e < n.visibilityZoomMin || n.visibilityZoomMax && e && e > n.visibilityZoomMax)
        }
        ,
        e.isPoiInsideVisibilityRadius = function(t, e, n) {
            var i = t.location;
            return !!i && Math.pow(e.x - i.x, 2) + Math.pow(e.y - i.y, 2) <= n
        }
        ,
        e.prototype.isPoiInCurrentFloor = function(t) {
            if (t.siteModelEntity) {
                var e = t.siteModelEntity.getEntityOfType(b.SiteModelType.FLOOR)
                  , n = this.factory.FloorChangerService.currentFloors;
                return 0 === n.length || c.some(n, (function(t) {
                    return e === t
                }
                ))
            }
            return !0
        }
        ,
        e.prototype.isPoiMoving = function(t) {
            return this.factory.PoiService.movingPoi && this.factory.PoiService.movingPoi.id === t.id
        }
        ,
        e.prototype.addPoiHoverSprite = function(t) {
            var e = this;
            this.poiHoverSprite && this.poiHoverSprite.resource.hash === t.hash || (this.poiHoverSprite && this.poiHoverSprite.resource.hash !== t.hash && this.removePoiHoverSprite(),
            this.poiHoverSprite = this.createPlaneSprite(t, t.title, this.getSpriteHighlightBoxParams(t), this.spriteParams.iconParameters),
            this.poiHoverSprite.spriteObject.renderOrder = 2,
            this.addPoiHoverEventHandlers(this.poiHoverSprite, t),
            this.sceneGroup.add(this.poiHoverSprite.spriteObject),
            this.view.invalidateScene((function() {
                return e.view.inputHandler.updateMeshMouseMoveOverOut()
            }
            )))
        }
        ,
        e.prototype.removeHoveredPoi = function(t) {
            var e = this;
            void 0 === t && (t = 0),
            this.hoveredPoi = void 0,
            setTimeout((function() {
                return e.removePoiHoverSprite()
            }
            ), t)
        }
        ,
        e.prototype.removePoiHoverSprite = function() {
            !this.poiHoverSprite || this.hoveredPoi && this.hoveredPoi.id === this.poiHoverSprite.resource.id || (this.poiHoverSprite.removeSpriteObject(),
            this.poiHoverSprite = void 0,
            this.view.invalidateScene())
        }
        ,
        e.prototype.addPoiHoverEventHandlers = function(t, e) {
            var n = this
              , i = t.spriteObject;
            i.onContextMenu = function() {
                if (t.resource.security.canWrite && n.factory.LicenseService.isLicenseValid)
                    return {
                        name: n.factory.gettextCatalog.getString("Delete POI"),
                        icon: "delete",
                        callback: function() {
                            p.showDeleteConfirmationModal("#delete-confirmation-layer-modal", (function() {
                                n.factory.PoiService.deletePoi(t.resource).catch((function() {}
                                )),
                                n.factory.TrackingService.trackPoiDeleted(!0)
                            }
                            ))
                        }
                    }
            }
            ,
            i.onClick = function() {
                return n.onPoiClick(e),
                !0
            }
            ,
            i.onMouseOver = function() {
                document.body.style.cursor = "pointer",
                n.factory.PoiService.onPoiMouseOver.emit(e)
            }
            ,
            i.onMouseOut = function() {
                n.removeHoveredPoi(n.params.removePoiHoverDelay),
                document.body.style.cursor = "default",
                n.factory.PoiService.onPoiMouseOut.emit(e)
            }
        }
        ,
        e.prototype.getPoiTextSprite = function(t) {
            return this.getPlaneSprite(t, this.poiSpritesTextBoxCache, this.params.poiNames() && t.canDisplayNameInScene ? t.title : "", this.getSpriteTextBoxParams(t), this.spriteParams.iconParameters)
        }
        ,
        e.prototype.getPoiHighlightSprite = function(t) {
            return this.getPlaneSprite(t, this.poiSpritesHighlightBoxCache, t.title, this.getSpriteHighlightBoxParams(t), this.spriteParams.iconParameters)
        }
        ,
        e.prototype.getPlaneSprite = function(t, e, n, i, r) {
            var o = e[t.hash];
            o && o.text !== n && (o.removeSpriteObject(),
            o = void 0);
            var a = this.factory.ContentService.expandUploadedContentUrl(t.icon);
            return o && o.iconPath !== a && (o.removeSpriteObject(),
            o = void 0),
            o || (o = this.createPlaneSprite(t, n, i, r),
            e[t.hash] = o),
            o.position = t.location,
            o.resource = t,
            o
        }
        ,
        e.prototype.createPlaneSprite = function(t, e, n, i) {
            var r = this.factory.ContentService.expandUploadedContentUrl(t.icon)
              , o = new l.PlaneSprite(e,r,t);
            o.fontProperties = n.fontProperties,
            o.backgroundProperties = n.backgroundProperties,
            o.iconProperties = i,
            o.padding = n.padding,
            o.pivot = n.pivot,
            o.offset = n.offset;
            var a = o.createSpriteObject();
            return a.userData.is2D = !0,
            a.renderOrder = 1,
            this.addEventHandlers(t, o),
            o
        }
        ,
        e.prototype.addEventHandlers = function(t, e) {
            var n = this
              , i = e.spriteObject;
            h.isMobileBrowser() ? i.onClick = function() {
                return n.onPoiClick(e.resource),
                !0
            }
            : i.onMouseOver = function() {
                e.resource.canBeHighlightedInScene && e.spriteObject.visible && (n.hoveredPoi = t,
                n.addPoiHoverSprite(e.resource))
            }
        }
        ,
        e.prototype.getSpriteTextBoxParams = function(t) {
            return t.isLocationAsPoi ? this.spriteParams.locationTextBox : this.spriteParams.textBox
        }
        ,
        e.prototype.getSpriteHighlightBoxParams = function(t) {
            return t.isLocationAsPoi ? this.spriteParams.locationHighlightBox : this.spriteParams.highlightBox
        }
        ,
        e.prototype.addAdditionalPoisToDisplay = function(t) {
            var e = this.factory.PoiService.movingPoi;
            if (e) {
                var n = t.findIndex((function(t) {
                    return t.id === e.id
                }
                ));
                t.splice(n, n >= 0 ? 1 : 0, e)
            }
            var i = this.factory.PoiService.openedPoi;
            i && i.isLocationAsPoi && t.push(i),
            this.addRoutePoiToDisplay(this.factory.PoiService.routeStart, t),
            this.addRoutePoiToDisplay(this.factory.PoiService.routeEnd, t)
        }
        ,
        e.prototype.addRoutePoiToDisplay = function(t, e) {
            t && (t.isPoiFromSearchResult || this.params.showCustomRoutePoints() && t.isLocationAsPoi) && e.push(t)
        }
        ,
        e.prototype.onPoiClick = function(t) {
            var e = this;
            this.factory.PoiService.getPoiFromSearchResultAsPoi(t).then((function(t) {
                e.factory.PoiService.clickPoi(t, S.PoiClickOrigin.VIEW)
            }
            )).catch(f.handleWarning)
        }
        ,
        e.MAXIMUM_POI_NUMBER = 100,
        e
    }(v.ScalableSceneLayer);
    e.PoiLayer = z;
    var G = function(t) {
        function e(e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g, v, y, b, w) {
            var S = t.call(this) || this;
            return S.IV = e,
            S.CursorService = n,
            S.DatasetRepository = i,
            S.ErrorService = r,
            S.FloorChangerService = o,
            S.gettext = a,
            S.gettextCatalog = s,
            S.LicenseService = c,
            S.ModeService = l,
            S.PoiService = u,
            S.PoiTypeService = d,
            S.RaycastService = p,
            S.UserService = h,
            S.PoiRepository = f,
            S.GeoTransformationService = m,
            S.AuthenticationService = g,
            S.PointCloudMenuService = v,
            S.TrackingService = y,
            S.ViewService = b,
            S.ContentService = w,
            S
        }
        return r(e, t),
        e.prototype.create = function(t, e, n) {
            return new z(t,e,n,this)
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(C.ɵɵinject("IV"),C.ɵɵinject(A.CursorService),C.ɵɵinject(T.DatasetRepository),C.ɵɵinject(O.ErrorService),C.ɵɵinject(_.FloorChangerService),C.ɵɵinject("gettext"),C.ɵɵinject("gettextCatalog"),C.ɵɵinject(P.LicenseService),C.ɵɵinject(I.ModeService),C.ɵɵinject(k.PoiService),C.ɵɵinject(D.PoiTypeService),C.ɵɵinject(R.RaycastService),C.ɵɵinject(L.UserService),C.ɵɵinject(N.PoiRepository),C.ɵɵinject(j.GeoTransformationService),C.ɵɵinject(V.AuthenticationService),C.ɵɵinject("PointCloudMenuService"),C.ɵɵinject(F.TrackingService),C.ɵɵinject(U.ViewService),C.ɵɵinject(B.ContentService))
        }
        ,
        e.ɵprov = C.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(a.SceneLayerFactory);
    e.PoiLayerFactory = G,
    C.ɵsetClassMetadata(G, [{
        type: M.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: void 0,
            decorators: [{
                type: M.Inject,
                args: ["IV"]
            }]
        }, {
            type: A.CursorService
        }, {
            type: T.DatasetRepository
        }, {
            type: O.ErrorService
        }, {
            type: _.FloorChangerService
        }, {
            type: void 0,
            decorators: [{
                type: M.Inject,
                args: ["gettext"]
            }]
        }, {
            type: void 0,
            decorators: [{
                type: M.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: P.LicenseService
        }, {
            type: I.ModeService
        }, {
            type: k.PoiService
        }, {
            type: D.PoiTypeService
        }, {
            type: R.RaycastService
        }, {
            type: L.UserService
        }, {
            type: N.PoiRepository
        }, {
            type: j.GeoTransformationService
        }, {
            type: V.AuthenticationService
        }, {
            type: void 0,
            decorators: [{
                type: M.Inject,
                args: ["PointCloudMenuService"]
            }]
        }, {
            type: F.TrackingService
        }, {
            type: U.ViewService
        }, {
            type: B.ContentService
        }]
    }
    ), null),
    o.module("IVWebApp").service("PoiLayerFactory", x.downgradeInjectable(G))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = (n(9),
    n(1205))
      , s = (n(75),
    n(22),
    n(310))
      , c = (n(14),
    n(135))
      , l = n(6)
      , u = n(0)
      , d = n(0)
      , p = n(9)
      , h = n(75)
      , f = n(22)
      , m = n(14)
      , g = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, a.NodeEntity, e, r, i) || this;
            return o.BundleRepository = n,
            o.path = "nodes",
            o.injectables.BundleRepository = o.BundleRepository,
            c.EntityRelationMapper.manyToOne(o, "siteModelEntity", "siteModelEntityId", i),
            o
        }
        return r(e, t),
        e.ɵfac = function(t) {
            return new (t || e)(d.ɵɵinject(p.RestService),d.ɵɵinject(h.BundleRepository),d.ɵɵinject(f.SiteModelRepository),d.ɵɵinject(m.GeoTransformationService))
        }
        ,
        e.ɵprov = d.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(s.SiteModelBoundRestRepository);
    e.NodeRepository = g,
    d.ɵsetClassMetadata(g, [{
        type: u.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: p.RestService
        }, {
            type: h.BundleRepository
        }, {
            type: f.SiteModelRepository
        }, {
            type: m.GeoTransformationService
        }]
    }
    ), null),
    o.module("IVWebApp").service("NodeRepository", l.downgradeInjectable(g))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(89)
      , s = n(4)
      , c = n(1207)
      , l = n(68)
      , u = (n(182),
    n(1208))
      , d = n(1209)
      , p = n(1210)
      , h = n(567)
      , f = n(568)
      , m = n(1211)
      , g = n(1212)
      , v = n(1213)
      , y = n(569)
      , b = n(16)
      , w = n(1214)
      , S = n(318)
      , x = n(1215)
      , M = (n(131),
    n(17),
    n(6))
      , E = n(0)
      , C = n(0)
      , A = n(182)
      , T = n(131)
      , O = n(17)
      , _ = function(t) {
        function e(e, n, i) {
            var r = t.call(this) || this;
            return r.NavGraphService = e,
            r.ToolboxMenuService = n,
            r.ViewService = i,
            r.navGraphEditingMode = l.NavGraphEditingConstantsModes.NODE_EDITING,
            r.selectedNodes = [],
            r.straightenXNodes = 10,
            r.selectedElement = {
                type: void 0,
                sourceId: void 0,
                attributesMap: {},
                selectedKey: void 0,
                selectedValue: void 0
            },
            r.editingHistory = new y.EditingHistory,
            r.navGraphEditorOpened = new b.Signal,
            r.navGraphEditorClosed = new b.Signal,
            r.promiseWrapper = new a.PromiseProgressWrapper,
            r.navGraphPathDrawingDelegate = new x.NavGraphPathDrawingDelegate(r,e,i),
            r
        }
        return r(e, t),
        e.prototype.isSavingInProgress = function() {
            return this.promiseWrapper.isInProgress
        }
        ,
        e.prototype.applySelection = function() {
            for (var t = 0, e = this.selectedNodes; t < e.length; t++) {
                var n = e[t]
                  , i = this.NavGraphService.adjacencyList.getNodeMesh(n.mesh.userData.id);
                i && (n.mesh = i)
            }
            this.selectedNodes.length > 0 && this.selectNode(this.selectedNodes[l.NavGraphEditingConstantsSelectedNode.CURRENT].mesh)
        }
        ,
        e.prototype.toggleNode = function(t) {
            this.getSelectedIndex(t.userData.id) === l.NavGraphEditingConstantsSelectedNode.CURRENT ? this.deselectNode(t) : this.selectNode(t)
        }
        ,
        e.prototype.toggleEdge = function() {
            return this.doesEdgeExist() ? void 0 !== this.deleteEdge() : void 0 !== this.createEdge()
        }
        ,
        e.prototype.selectNode = function(t) {
            if (t) {
                var e, n = this.getSelectedIndex(t.userData.id);
                n > l.NavGraphEditingConstantsSelectedNode.NOT_SELECTED ? (e = this.selectedNodes[n],
                this.selectedNodes.splice(n, 1)) : e = new c.NavGraphEditingNode(t),
                this.selectedNodes.unshift(e);
                for (var i = 0; i < this.selectedNodes.length; ++i)
                    i === l.NavGraphEditingConstantsSelectedNode.CURRENT ? this.selectedNodes[i].makeCurrentlySelected() : i === l.NavGraphEditingConstantsSelectedNode.PREVIOUS ? this.selectedNodes[i].makeLastSelected() : this.selectedNodes[i].resetColor()
            }
        }
        ,
        e.prototype.deselectNode = function(t) {
            var e = this.getSelectedIndex(t.userData.id);
            e !== l.NavGraphEditingConstantsSelectedNode.NOT_SELECTED && (this.selectedNodes[e].resetColor(),
            this.selectedNodes.splice(e, 1),
            this.selectedNodes.length > l.NavGraphEditingConstantsSelectedNode.CURRENT && this.selectedNodes[l.NavGraphEditingConstantsSelectedNode.CURRENT].makeCurrentlySelected(),
            this.selectedNodes.length > l.NavGraphEditingConstantsSelectedNode.PREVIOUS && this.selectedNodes[l.NavGraphEditingConstantsSelectedNode.PREVIOUS].makeLastSelected())
        }
        ,
        e.prototype.deselectAllNodes = function() {
            for (var t = 0, e = this.selectedNodes; t < e.length; t++) {
                e[t].resetColor()
            }
            this.selectedNodes = []
        }
        ,
        e.prototype.getSelectedIndex = function(t) {
            for (var e = 0; e < this.selectedNodes.length; ++e)
                if (this.selectedNodes[e] && this.selectedNodes[e].mesh.userData.id === t)
                    return e;
            return l.NavGraphEditingConstantsSelectedNode.NOT_SELECTED
        }
        ,
        e.prototype.moveNode = function(t, e, n) {
            void 0 === n && (n = !1);
            var i = this.NavGraphService.adjacencyList.getNode(t.userData.id)
              , r = new s.Vector3(e.x,e.y,n ? e.z : void 0);
            this.editingHistory.apply(new u.NavGraphEditingNodeMoveOperation(this.NavGraphService,i,t,r,n))
        }
        ,
        e.prototype.setSelectedNodeZ = function(t, e) {
            var n = this.selectedNodes[t].mesh;
            this.editingHistory.apply(new v.NavGraphEditingNodeMoveInZOperation(this.NavGraphService,this.NavGraphService.adjacencyList.getNode(n.userData.id),n,e))
        }
        ,
        e.prototype.doesEdgeExist = function() {
            var t, e, n = this.selectedNodes.length;
            return n > 0 && (t = this.selectedNodes[0].mesh.userData.id),
            n > 1 ? (e = this.selectedNodes[1].mesh.userData.id,
            this.NavGraphService.adjacencyList.doesEdgeExist(t, e) ? l.NavGraphEditingConstantsEdgeExists.YES : l.NavGraphEditingConstantsEdgeExists.NO) : l.NavGraphEditingConstantsEdgeExists.INVALID
        }
        ,
        e.prototype.createNode = function(t, e) {
            var n = this;
            void 0 === e && (e = !0);
            var i = this.NavGraphService.getCurrentBundle()
              , r = new h.NavGraphEditingNodeCreateOperation(this.NavGraphService,t,i,(function(t) {
                return n.deselectNode(t)
            }
            ));
            return e && this.editingHistory.apply(r),
            r
        }
        ,
        e.prototype.createEdge = function(t) {
            if (void 0 === t && (t = !0),
            !(this.selectedNodes.length < 2)) {
                var e = this.getMeshesBetweenLastSelectedNodes()
                  , n = e[l.NavGraphEditingConstantsSelectedNode.CURRENT].userData.id
                  , i = this.NavGraphService.adjacencyList.getNode(n)
                  , r = e[l.NavGraphEditingConstantsSelectedNode.PREVIOUS].userData.id
                  , o = this.NavGraphService.adjacencyList.getNode(r)
                  , a = this.NavGraphService.getCurrentBundle()
                  , s = new f.NavGraphEditingEdgeCreateOperation(this.NavGraphService,a,i,o);
                return t && this.editingHistory.apply(s),
                s
            }
        }
        ,
        e.prototype.addMultipleEdges = function() {
            var t = this.NavGraphService.getCurrentBundle()
              , e = new w.NavGraphEditingAutoSplitEdgeOperation(this.NavGraphService,t);
            if (this.doesEdgeExist()) {
                var n = this.deleteEdge(!1);
                e.addOperation(n),
                n.apply()
            }
            var i = this.getMeshesBetweenLastSelectedNodes()
              , r = i[l.NavGraphEditingConstantsSelectedNode.CURRENT]
              , a = r.position
              , s = i[l.NavGraphEditingConstantsSelectedNode.PREVIOUS]
              , c = s.position
              , u = c.distanceTo(a)
              , d = Math.floor(u);
            this.selectNode(r);
            for (var p = 1; p < d; ++p) {
                var h = o.copy(a)
                  , f = this.createNode(h.lerp(c, p / d), !1);
                e.addOperation(f),
                f.apply();
                var m = this.createEdge(!1);
                e.addOperation(m),
                m.apply()
            }
            this.selectNode(s);
            var g = this.createEdge(!1);
            e.addOperation(g),
            g.apply(),
            this.editingHistory.apply(e)
        }
        ,
        e.prototype.deleteNode = function(t, e) {
            if (void 0 === e && (e = !0),
            !(t >= this.selectedNodes.length)) {
                var n = this.selectedNodes[t].mesh.userData.id
                  , i = this.NavGraphService.adjacencyList.getNode(n)
                  , r = this.NavGraphService.adjacencyList.getNodeMesh(n);
                this.deselectNode(r);
                var o = new m.NavGraphEditingNodeDeleteOperation(this.NavGraphService,i,r);
                return e && this.editingHistory.apply(o),
                o
            }
        }
        ,
        e.prototype.deleteEdge = function(t) {
            void 0 === t && (t = !0);
            var e = this.selectedNodes[l.NavGraphEditingConstantsSelectedNode.CURRENT]
              , n = this.selectedNodes[l.NavGraphEditingConstantsSelectedNode.PREVIOUS];
            if (e && n) {
                var i = e.mesh.userData.id
                  , r = n.mesh.userData.id
                  , o = this.NavGraphService.adjacencyList.getEdgeBetweenNodes(i, r)
                  , a = this.NavGraphService.adjacencyList.getEdgeMeshBetweenNodes(o.source.id, o.target.id)
                  , s = this.NavGraphService.adjacencyList.getNode(i)
                  , c = this.NavGraphService.adjacencyList.getNode(r)
                  , u = new g.NavGraphEditingEdgeDeleteOperation(this.NavGraphService,s,c,o,a);
                return t && this.editingHistory.apply(u),
                u
            }
        }
        ,
        e.prototype.straightenNodes = function() {
            var t = this.selectedNodes.length - 1;
            if (this.straightenXNodes = Math.min(this.straightenXNodes, this.selectedNodes.length),
            !(this.straightenXNodes <= 1)) {
                for (var e = this.getMeshesBetweenLastSelectedNodes(this.straightenXNodes - 1), n = e[l.NavGraphEditingConstantsSelectedNode.CURRENT].position, i = e[l.NavGraphEditingConstantsSelectedNode.PREVIOUS].position, r = 1; r < this.straightenXNodes - 1; ++r) {
                    var o = i.clone().lerp(n, r / (this.straightenXNodes - 1));
                    this.moveNode(this.selectedNodes[t - r].mesh, o, !0)
                }
                this.NavGraphService.navgraphChanged.emit()
            }
        }
        ,
        e.prototype.getMeshesBetweenLastSelectedNodes = function(t) {
            void 0 === t && (t = l.NavGraphEditingConstantsSelectedNode.PREVIOUS);
            var e = this.selectedNodes[0].mesh;
            return [this.selectedNodes[t].mesh, e]
        }
        ,
        e.prototype.saveAndStopEditingNavGraph = function() {
            var t = this;
            return this.navGraphPathDrawingDelegate.removeTemporaryNodesAndEdges(),
            this.navGraphPathDrawingDelegate.normalizeAndApplyPathDrawn(),
            this.clearError(),
            this.promiseWrapper.wrap(this.editingHistory.commit()).then((function() {
                t.navGraphPathDrawingDelegate.startNodeEditing(),
                t.NavGraphService.navgraphChanged.emit()
            }
            )).catch((function(e) {
                return t.reportError(e),
                Promise.reject(e)
            }
            ))
        }
        ,
        e.prototype.undo = function() {
            var t = this.editingHistory.undo();
            t instanceof m.NavGraphEditingNodeDeleteOperation && this.updateNodeOperationReferences(t.resource.id)
        }
        ,
        e.prototype.undoAllOperations = function() {
            this.editingHistory.undoAll(),
            this.deselectAllNodes()
        }
        ,
        e.prototype.discardChanges = function() {
            var t = this;
            return Promise.resolve().then((function() {
                return t.navGraphPathDrawingDelegate.discardPathDrawn()
            }
            )).then((function() {
                return t.undoAllOperations()
            }
            ))
        }
        ,
        e.prototype.selectEditingOperationResource = function(t) {
            t.resourceType === l.NavGraphEditingConstantsType.NODE ? this.selectNode(this.NavGraphService.adjacencyList.getNodeMesh(t.resource.id)) : t.resourceType === l.NavGraphEditingConstantsType.EDGE && (this.selectNode(this.NavGraphService.adjacencyList.getNodeMesh(t.resource.source.id)),
            this.selectNode(this.NavGraphService.adjacencyList.getNodeMesh(t.resource.target.id))),
            this.NavGraphService.navgraphChanged.emit()
        }
        ,
        e.prototype.initAttributeEditor = function(t, n, i) {
            var r;
            if (t) {
                r = this.selectedNodes[n].mesh.userData.id,
                this.selectedElement.type = l.NavGraphEditingConstantsType.NODE,
                this.selectedElement.sourceId = r;
                var o = this.NavGraphService.adjacencyList.getNode(r);
                this.selectedElement.attributesMap = e.getAttributesMap(o.attributes)
            } else {
                r = this.selectedNodes[n].mesh.userData.id;
                var a = this.selectedNodes[i].mesh.userData.id;
                this.selectedElement.type = l.NavGraphEditingConstantsType.EDGE;
                var s = this.NavGraphService.adjacencyList.getEdgeBetweenNodes(r, a);
                this.selectedElement.attributesMap = e.getAttributesMap(s.attributes)
            }
            this.clearSelectedKeyAndValue()
        }
        ,
        e.prototype.saveAttributes = function() {
            var t;
            switch (this.selectedElement.type) {
            case l.NavGraphEditingConstantsType.EDGE:
                t = this.selectedNodes[0].mesh.userData.id;
                var e = this.selectedNodes[1].mesh.userData.id
                  , n = this.NavGraphService.adjacencyList.getEdgeBetweenNodes(t, e);
                o.equals(n.attributes, this.selectedElement.attributesMap) || this.editingHistory.apply(new d.NavGraphEditingEdgeEditOperation(this.NavGraphService,n,this.selectedElement.attributesMap));
                break;
            case l.NavGraphEditingConstantsType.NODE:
                t = this.selectedElement.sourceId;
                var i = this.NavGraphService.adjacencyList.getNode(t);
                o.equals(i.attributes, this.selectedElement.attributesMap) || this.editingHistory.apply(new p.NavGraphEditingNodeEditOperation(this.NavGraphService,i,this.selectedElement.attributesMap));
                break;
            default:
                return
            }
        }
        ,
        e.prototype.clearSelectedElement = function() {
            this.selectedElement.type = void 0,
            this.selectedElement.attributesMap = {},
            this.clearSelectedKeyAndValue()
        }
        ,
        e.prototype.clearSelectedKeyAndValue = function() {
            this.selectedElement.selectedKey = void 0,
            this.selectedElement.selectedValue = void 0
        }
        ,
        e.getAttributesMap = function(t) {
            var e = {};
            for (var n in t)
                t.hasOwnProperty(n) && (e[n] = t[n]);
            return e
        }
        ,
        e.prototype.setAdjacencyList = function(t) {
            this.NavGraphService.adjacencyList = t
        }
        ,
        e.prototype.reportError = function(t) {
            this.error = {
                text: this.NavGraphService.gettextCatalog.getString("Update failed"),
                status: t.status,
                statusText: t.statusText && t.statusText.length ? t.statusText : this.NavGraphService.gettextCatalog.getString("Network error"),
                details: t.data ? t.data.msg : ""
            }
        }
        ,
        e.prototype.clearError = function() {
            this.error = void 0
        }
        ,
        e.prototype.updateNodeOperationReferences = function(t) {
            for (var e = 0, n = this.editingHistory.history; e < n.length; e++) {
                var i = n[e];
                if (i instanceof u.NavGraphEditingNodeMoveOperation && i.resource.id === t) {
                    var r = this.NavGraphService.adjacencyList.getNodeMesh(t);
                    i.updateMeshReference(r)
                }
            }
        }
        ,
        e.prototype.hasChanges = function() {
            return !(0 === this.editingHistory.history.length || this.isSavingInProgress()) || this.navGraphPathDrawingDelegate.isPathDrawingPossible()
        }
        ,
        e.prototype.promptOnUnsavedChanges = function() {
            return t.prototype.promptOnUnsavedChanges.call(this, "#confirmUnsavedNavGraph")
        }
        ,
        e.prototype.startNodeEditing = function() {
            this.navGraphPathDrawingDelegate.startNodeEditing()
        }
        ,
        e.prototype.isPathDrawingPossible = function() {
            return this.navGraphPathDrawingDelegate.isPathDrawingPossible()
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(C.ɵɵinject(A.NavGraphService),C.ɵɵinject(T.ToolboxMenuService),C.ɵɵinject(O.ViewService))
        }
        ,
        e.ɵprov = C.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(S.SaveDiscardDialogService);
    e.NavGraphEditingService = _,
    C.ɵsetClassMetadata(_, [{
        type: E.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: A.NavGraphService
        }, {
            type: T.ToolboxMenuService
        }, {
            type: O.ViewService
        }]
    }
    ), null),
    o.module("IVWebApp").service("NavGraphEditingService", M.downgradeInjectable(_))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(70)
      , a = n(580)
      , s = (n(9),
    n(2))
      , c = n(6)
      , l = n(0)
      , u = n(0)
      , d = n(9)
      , p = function(t) {
        function e(e) {
            var n = t.call(this, a.VectorMapEntity, e) || this;
            return n.RestService = e,
            n.path = "vector_maps",
            n
        }
        return r(e, t),
        e.ɵfac = function(t) {
            return new (t || e)(u.ɵɵinject(d.RestService))
        }
        ,
        e.ɵprov = u.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(o.RestRepository);
    e.VectorMapRepository = p,
    u.ɵsetClassMetadata(p, [{
        type: l.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: d.RestService
        }]
    }
    ), null),
    s.module("IVWebApp").service("VectorMapRepository", c.downgradeInjectable(p))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(17),
    n(50),
    n(39),
    n(28),
    n(104),
    n(6))
      , o = n(0)
      , a = n(0)
      , s = n(28)
      , c = n(50)
      , l = n(39)
      , u = n(104)
      , d = n(17)
      , p = function() {
        function t(t, e, n, i, r) {
            var o = this;
            this.events = {
                loadComplete: [],
                datasetChanged: [],
                transitionStart: [],
                transitionEnd: [],
                languageChanged: [],
                locationChanged: [],
                floorChanged: [],
                floorsUpdated: [],
                poiSelected: [],
                poiClosed: [],
                poiSaved: [],
                poiDeleted: [],
                routePlanned: [],
                routeInstructionClick: [],
                routeInstructionMouseOver: [],
                routeInstructionMouseLeave: [],
                zoomedMap: [],
                webGlFailed: [],
                toggleMenu: [],
                pointCloudLoading: []
            },
            t.onFloorUpdate.connect((function(t) {
                return o.triggerEvent("floorsUpdated", t)
            }
            )),
            t.onFloorChange.connect((function(t) {
                return o.triggerEvent("floorChanged", t)
            }
            )),
            e.onLanguageChange.connect((function(t) {
                return o.triggerEvent("languageChanged", t)
            }
            )),
            n.onPoiSave.connect((function(t, e) {
                return o.triggerEvent("poiSaved", {
                    entity: t,
                    created: e
                })
            }
            )),
            n.onPoiDelete.connect((function(t) {
                return o.triggerEvent("poiDeleted", t)
            }
            )),
            n.onPoiOpen.connect((function(t) {
                return o.triggerEvent("poiSelected", t)
            }
            )),
            n.onPoiClose.connect((function(t) {
                return o.triggerEvent("poiClosed", t)
            }
            )),
            i.onRoutePlanned.connect((function(t) {
                return o.triggerEvent("routePlanned", void 0)
            }
            )),
            i.onRouteInstructionClick.connect((function(t, e) {
                return o.triggerEvent("routeInstructionClick", e)
            }
            )),
            i.onRouteInstructionMouseOver.connect((function(t, e) {
                return o.triggerEvent("routeInstructionMouseOver", e)
            }
            )),
            i.onRouteInstructionMouseOut.connect((function(t, e) {
                return o.triggerEvent("routeInstructionMouseLeave", e)
            }
            )),
            r.onTransitionStart.connect((function(t) {
                return o.triggerEvent("transitionStart", t)
            }
            )),
            r.onTransitionEnd.connect((function(t) {
                return o.triggerEvent("transitionEnd", t)
            }
            ))
        }
        return t.prototype.addEventListener = function(t, e) {
            return t in this.events && (this.deprecationWarning("addEventListener", t),
            this.events[t].push(e),
            !0)
        }
        ,
        t.prototype.removeEventListener = function(t, e) {
            var n = this.events[t].indexOf(e);
            return !(n < 0) && (this.deprecationWarning("removeEventListener", t),
            this.events[t].splice(n, 1),
            !0)
        }
        ,
        t.prototype.triggerEvent = function(t, e) {
            for (var n = 0, i = this.events[t]; n < i.length; n++) {
                (0,
                i[n])(e)
            }
        }
        ,
        t.prototype.deprecationWarning = function(t, e) {
            var n, i = !1;
            switch (e) {
            case "floorsUpdated":
                n = "ApiInterface.view.floorChangerService.onFloorUpdate";
                break;
            case "floorChanged":
                n = "ApiInterface.view.floorChangerService.onFloorChange";
                break;
            case "languageChanged":
                n = "ApiInterface.ui.languageService.onLanguageChange";
                break;
            case "poiSaved":
                n = "ApiInterface.poi.service.onPoiSave";
                break;
            case "poiDeleted":
                n = "ApiInterface.poi.service.onPoiDelete";
                break;
            case "poiSelected":
                n = "ApiInterface.poi.service.onPoiOpen";
                break;
            case "poiClosed":
                n = "ApiInterface.poi.service.onPoiClose";
                break;
            case "routePlanned":
                n = "ApiInterface.routing.onRouteChanged";
                break;
            case "routeInstructionClick":
                n = "ApiInterface.routing.onRouteInstructionClick";
                break;
            case "routeInstructionMouseOver":
                n = "ApiInterface.routing.onRouteInstructionMouseOver";
                break;
            case "routeInstructionMouseLeave":
                n = "ApiInterface.routing.onRouteInstructionMouseOut";
                break;
            case "routeStartSelected":
            case "routeEndSelected":
                i = !0;
                break;
            case "transitionStart":
                n = "ApiInterface.view.service.onTransitionStart";
                break;
            case "transitionEnd":
            case "locationChanged":
            case "datasetChanged":
                n = "ApiInterface.view.service.onTransitionEnd";
                break;
            case "zoomedMap":
                n = "ApiInterface.view.mapView.onZoom";
                break;
            case "loadComplete":
                n = "getApi().then(callback) or new IndoorViewer({onLoadComplete: callback})";
                break;
            case "webGlFailed":
                n = "getApi().catch(callback) or new IndoorViewer({onWebGlFailed: callback})"
            }
            var r = "usage of " + t + '("' + e + '", callback), support will be removed in a later version.';
            n ? console.warn("Deprecated " + r + " Please use " + n + " instead.") : i ? console.error("Invalid " + r + " This event has been removed.") : console.warn("Deprecated " + r)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(a.ɵɵinject(s.FloorChangerService),a.ɵɵinject(c.LanguageService),a.ɵɵinject(l.PoiService),a.ɵɵinject(u.RouteService),a.ɵɵinject(d.ViewService))
        }
        ,
        t.ɵprov = a.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.LegacyService = p,
    a.ɵsetClassMetadata(p, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: s.FloorChangerService
        }, {
            type: c.LanguageService
        }, {
            type: l.PoiService
        }, {
            type: u.RouteService
        }, {
            type: d.ViewService
        }]
    }
    ), null),
    i.module("IVWebApp").service("LegacyService", r.downgradeInjectable(p))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = (n(154),
    n(9),
    n(31),
    n(49),
    n(14))
      , s = n(1237)
      , c = n(107)
      , l = n(20)
      , u = n(96)
      , d = n(4)
      , p = n(16)
      , h = (n(155),
    n(7))
      , f = n(8)
      , m = n(144)
      , g = n(318)
      , v = n(6)
      , y = n(0)
      , b = n(0)
      , w = n(154)
      , S = n(9)
      , x = n(31)
      , M = n(155)
      , E = n(49)
      , C = n(14)
      , A = function(t) {
        function e(e, n, i, r, o, a) {
            var s = t.call(this) || this;
            return s.AlignmentService = e,
            s.RestService = n,
            s.DatasetRepository = i,
            s.DatasetAlignmentService = r,
            s.ImageService = o,
            s.GeoTransformationService = a,
            s.datasetLocations = {},
            s.orientations = {},
            s.datasetTranslationChanged = new p.Signal,
            s.datasetOrientationChanged = new p.Signal,
            s.initDeferred = new m.Deferred,
            s.loadingGoogleLib = !1,
            s.TIMEOUT = 2e3,
            s.initialized = s.initDeferred.promise,
            s
        }
        return r(e, t),
        e.prototype.fetchGoogleMapsLibrary = function() {
            var t = this;
            if (window.google && window.google.maps)
                this.googleMapsLibraryFetched();
            else if (!this.loadingGoogleLib) {
                this.loadingGoogleLib = !0;
                var e = "GeoRegistrationServiceInitOSM";
                window.GeoRegistrationServiceInitOSM = function() {
                    return t.googleMapsLibraryFetched()
                }
                ,
                c.promiseFinally(s.loadScriptWithTimeout("https://maps.googleapis.com/maps/api/js?v=3&key=AIzaSyAcGZuNkwD3saIjKX_68PR0MGJ7S1NW1R0&callback=GeoRegistrationServiceInitOSM", this.TIMEOUT, e).catch((function() {
                    return s.loadScriptWithTimeout("http://www.google.cn/maps/api/js?v=3&key=AIzaSyAcGZuNkwD3saIjKX_68PR0MGJ7S1NW1R0&callback=GeoRegistrationServiceInitOSM", t.TIMEOUT, e)
                }
                )).catch((function() {
                    return t.googleMapsLibraryFetched()
                }
                )), (function() {
                    return t.loadingGoogleLib = !1
                }
                )).catch(f.handleWarning)
            }
        }
        ,
        e.prototype.googleMapsLibraryFetched = function() {
            this.initDeferred.resolve(),
            l.invalidateAngular()
        }
        ,
        e.prototype.cacheGlobalState = function(t) {
            var e = t.getGlobalState();
            this.datasetLocations[t.id] = e.pos,
            this.orientations[t.id] = e.orientation,
            this.datasetOrientationChanged.emit()
        }
        ,
        e.prototype.removeCachedGlobalState = function(t) {
            delete this.datasetLocations[t],
            delete this.orientations[t]
        }
        ,
        e.prototype.translate = function(t) {
            this.datasetTranslationChanged.emit(t)
        }
        ,
        e.prototype.rotate = function(t) {
            var e = this;
            if (this.AlignmentService.primary) {
                h.forEach(this.AlignmentService.selectedDatasets, (function(n) {
                    n.locked || (e.AlignmentService.stateDirty = !0,
                    e.orientations[n.id] = e.orientations[n.id] + t)
                }
                ));
                var n = this.AlignmentService.primary.id
                  , i = u.VectorFactory.fromArray3(this.datasetLocations[n]);
                this.GeoTransformationService.vectorToLocal(i).length() > a.GeoTransformationService.RELOCATE_LOCAL_SYSTEM_THRESHOLD && this.GeoTransformationService.setOffsetFromGlobal(i);
                var r = this.ptZTolocal(this.datasetLocations[n])
                  , o = new d.Matrix4;
                o.getInverse(r);
                var s, c, l, p = new d.Matrix4;
                p.makeRotationZ(t),
                h.forEach(this.AlignmentService.selectedDatasets, (function(t) {
                    if (t.id !== n && !t.locked) {
                        e.AlignmentService.stateDirty = !0,
                        s = new d.Matrix4,
                        c = new d.Matrix4,
                        l = new d.Matrix4;
                        var i = e.ptZTolocal(e.datasetLocations[t.id]);
                        s.multiplyMatrices(o, i),
                        c.multiplyMatrices(p, s),
                        l.multiplyMatrices(r, c),
                        e.datasetLocations[t.id] = e.localToPtZ(l)
                    }
                }
                )),
                this.datasetOrientationChanged.emit()
            }
        }
        ,
        e.prototype.ptZTolocal = function(t) {
            return (new d.Matrix4).identity().makeRotationZ(0).setPosition(this.GeoTransformationService.toLocal(t[0], t[1], t[2]))
        }
        ,
        e.prototype.localToPtZ = function(t) {
            var e = new d.Vector3
              , n = new d.Quaternion
              , i = new d.Vector3;
            return t.decompose(e, n, i),
            this.GeoTransformationService.vectorToGlobal(e).toArray()
        }
        ,
        e.prototype.updateDatasets = function() {
            var t = this;
            if (h.forEach(this.datasetLocations, (function(e, n) {
                t.DatasetRepository.dataMap[n].globalLocation = (new d.Vector3).fromArray(e),
                t.DatasetRepository.dataMap[n].orientation = t.orientations[n],
                t.DatasetRepository.dataMap[n].computeLocalCoordinates(),
                t.DatasetRepository.dataMap[n].makeMatrix(),
                t.DatasetAlignmentService.updateImageCoordinates(t.DatasetRepository.dataMap[n]).catch(f.handleWarning)
            }
            )),
            h.size(this.AlignmentService.selectedDatasets) > 0) {
                var e = h.sample(this.AlignmentService.selectedDatasets).id
                  , n = this.datasetLocations[e];
                this.GeoTransformationService.setOffsetFromGlobal(new d.Vector3(n[0],n[1],n[2]))
            } else
                this.DatasetRepository.findAll().then((function(e) {
                    var n = t.datasetLocations[e[0].id];
                    t.GeoTransformationService.setOffsetFromGlobal(new d.Vector3(n[0],n[1],n[2]))
                }
                )).catch((function() {}
                ))
        }
        ,
        e.prototype.save = function() {
            var t = this;
            return this.updateDatasets(),
            this.DatasetAlignmentService.saveAlignment().then((function() {
                t.AlignmentService.stateDirty = !1
            }
            ))
        }
        ,
        e.prototype.isSavingInProgress = function() {
            return this.DatasetAlignmentService.isSavingInProgress()
        }
        ,
        e.prototype.searchAddress = function(t) {
            var e = this
              , n = {
                q: t,
                format: "json"
            };
            return this.searchRequest(n, !0).catch((function() {
                return e.searchRequest(n, !1)
            }
            ))
        }
        ,
        e.prototype.discardChanges = function() {
            return this.AlignmentService.discardChanges()
        }
        ,
        e.prototype.hasChanges = function() {
            return this.AlignmentService.stateDirty
        }
        ,
        e.prototype.promptOnUnsavedChanges = function() {
            return t.prototype.promptOnUnsavedChanges.call(this, "#confirmUnsavedGeoregistration")
        }
        ,
        e.prototype.markAsChanged = function() {
            this.AlignmentService.stateDirty = !0
        }
        ,
        e.prototype.searchRequest = function(t, e) {
            var n = e ? "https://nominatim.openstreetmap.org/search" : "http://nominatim.openstreetmap.org/search";
            return this.RestService.httpRequest({
                url: n,
                method: "GET",
                params: t,
                transformResponse: function(t) {
                    for (var e = o.fromJson(t), n = 0, i = e; n < i.length; n++) {
                        var r = i[n];
                        r.longitude = r.lon,
                        r.latitude = r.lat
                    }
                    return e
                }
            })
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(b.ɵɵinject(w.AlignmentService),b.ɵɵinject(S.RestService),b.ɵɵinject(x.DatasetRepository),b.ɵɵinject(M.DatasetAlignmentService),b.ɵɵinject(E.ImageService),b.ɵɵinject(C.GeoTransformationService))
        }
        ,
        e.ɵprov = b.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(g.SaveDiscardDialogService);
    e.GeoRegistrationService = A,
    b.ɵsetClassMetadata(A, [{
        type: y.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: w.AlignmentService
        }, {
            type: S.RestService
        }, {
            type: x.DatasetRepository
        }, {
            type: M.DatasetAlignmentService
        }, {
            type: E.ImageService
        }, {
            type: C.GeoTransformationService
        }]
    }
    ), null),
    o.module("IVWebApp").service("GeoRegistrationService", v.downgradeInjectable(A))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(7);
    n(595),
    n(596);
    var o = function() {
        function t(t) {
            this.LanguageService = t,
            this.COL_SPAN = 4,
            this.dropdownOpened = !1,
            this.allDataLanguages = this.LanguageService.allDataLanguages
        }
        return t.$inject = ["LanguageService"],
        Object.defineProperty(t.prototype, "translations", {
            get: function() {
                return this.controllerTranslations
            },
            set: function(t) {
                this.controllerTranslations = t,
                this.modelChanged()
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.modelChanged = function() {
            if (this.controllerTranslations && !Object.keys(this.controllerTranslations).length) {
                var t = this.LanguageService.dataLanguage;
                this.controllerTranslations[t] = ""
            }
            this.select()
        }
        ,
        t.prototype.select = function(t) {
            if (!t) {
                var e = void 0;
                if (this.controllerTranslations && !((e = this.LanguageService.dataLanguage)in this.controllerTranslations) && !((e = this.LanguageService.fallbackLanguage.toString())in this.controllerTranslations)) {
                    var n = Object.keys(this.controllerTranslations);
                    e = n.length ? n.sort()[0] : void 0
                }
                t = e ? this.LanguageService.getLanguage(e) : void 0
            }
            this.selectedLanguage = t,
            t && this.LanguageService.updateDataLanguage(t)
        }
        ,
        t.prototype.getClass = function(t) {
            return void 0 === this.selectedLanguage && this.select(),
            t === this.selectedLanguage ? "active" : ""
        }
        ,
        t.prototype.getUsedLanguages = function() {
            var t = this;
            return r.keysIn(this.controllerTranslations).map((function(e) {
                return t.LanguageService.getLanguage(e)
            }
            ))
        }
        ,
        t.prototype.add = function() {
            this.dropdownOpened = !0
        }
        ,
        t.prototype.canAdd = function() {
            return this.getUsedLanguages().length < this.allDataLanguages.length
        }
        ,
        t.prototype.create = function(t) {
            this.dropdownOpened = !1,
            this.controllerTranslations[t.key] = "",
            this.selectedLanguage = t
        }
        ,
        t.prototype.remove = function() {
            var t = this.selectedLanguage;
            t && (delete this.controllerTranslations[t.key],
            this.select())
        }
        ,
        t.prototype.canRemove = function() {
            return this.getUsedLanguages().length > 1
        }
        ,
        t.areTranslationsEmpty = function(t) {
            return 0 === Object.keys(t).length
        }
        ,
        t.removeEmptyTranslations = function(t) {
            Object.keys(t).forEach((function(e) {
                t[e] || delete t[e]
            }
            ))
        }
        ,
        t
    }();
    e.TranslationEditorController = o;
    var a = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "I18N/TranslationEditor.html",
            this.controller = o,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                translations: "=",
                colSpan: "@?",
                selectedLanguage: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.TranslationEditorDirective = a,
    i.module("IVWebApp").directive("translationEditor", a.factory())
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return a
    }
    ));
    var i = n(12)
      , r = n(76)
      , o = n(71);
    function a(t) {
        return new i.a((function(e) {
            var n;
            try {
                n = t()
            } catch (t) {
                return void e.error(t)
            }
            return (n ? Object(r.a)(n) : Object(o.b)()).subscribe(e)
        }
        ))
    }
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return r
    }
    ));
    var i = n(56);
    function r(t) {
        return !Object(i.a)(t) && t - parseFloat(t) + 1 >= 0
    }
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return l
    }
    ));
    var i = n(1)
      , r = n(79)
      , o = n(176)
      , a = n(78)
      , s = n(62)
      , c = n(76);
    function l(t, e) {
        return "function" == typeof e ? function(n) {
            return n.pipe(l((function(n, i) {
                return Object(c.a)(t(n, i)).pipe(Object(s.a)((function(t, r) {
                    return e(n, t, i, r)
                }
                )))
            }
            )))
        }
        : function(e) {
            return e.lift(new u(t))
        }
    }
    var u = function() {
        function t(t) {
            this.project = t
        }
        return t.prototype.call = function(t, e) {
            return e.subscribe(new d(t,this.project))
        }
        ,
        t
    }()
      , d = function(t) {
        function e(e, n) {
            var i = t.call(this, e) || this;
            return i.project = n,
            i.index = 0,
            i
        }
        return i.c(e, t),
        e.prototype._next = function(t) {
            var e, n = this.index++;
            try {
                e = this.project(t, n)
            } catch (t) {
                return void this.destination.error(t)
            }
            this._innerSub(e, t, n)
        }
        ,
        e.prototype._innerSub = function(t, e, n) {
            var i = this.innerSubscription;
            i && i.unsubscribe();
            var r = new o.a(this,e,n)
              , s = this.destination;
            s.add(r),
            this.innerSubscription = Object(a.a)(this, t, void 0, void 0, r),
            this.innerSubscription !== r && s.add(this.innerSubscription)
        }
        ,
        e.prototype._complete = function() {
            var e = this.innerSubscription;
            e && !e.closed || t.prototype._complete.call(this),
            this.unsubscribe()
        }
        ,
        e.prototype._unsubscribe = function() {
            this.innerSubscription = null
        }
        ,
        e.prototype.notifyComplete = function(e) {
            this.destination.remove(e),
            this.innerSubscription = null,
            this.isStopped && t.prototype._complete.call(this)
        }
        ,
        e.prototype.notifyNext = function(t, e, n, i, r) {
            this.destination.next(e)
        }
        ,
        e
    }(r.a)
}
, function(t, e, n) {
    "use strict";
    n.d(e, "b", (function() {
        return o
    }
    )),
    n.d(e, "a", (function() {
        return a
    }
    ));
    var i = n(1)
      , r = function(t) {
        function e(e, n) {
            var i = t.call(this, e, n) || this;
            return i.scheduler = e,
            i.work = n,
            i
        }
        return i.c(e, t),
        e.prototype.schedule = function(e, n) {
            return void 0 === n && (n = 0),
            n > 0 ? t.prototype.schedule.call(this, e, n) : (this.delay = n,
            this.state = e,
            this.scheduler.flush(this),
            this)
        }
        ,
        e.prototype.execute = function(e, n) {
            return n > 0 || this.closed ? t.prototype.execute.call(this, e, n) : this._execute(e, n)
        }
        ,
        e.prototype.requestAsyncId = function(e, n, i) {
            return void 0 === i && (i = 0),
            null !== i && i > 0 || null === i && this.delay > 0 ? t.prototype.requestAsyncId.call(this, e, n, i) : e.flush(this)
        }
        ,
        e
    }(n(151).a)
      , o = new (function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return i.c(e, t),
        e
    }(n(150).a))(r)
      , a = o
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return i
    }
    ));
    var i = function() {
        function t(e, n) {
            void 0 === n && (n = t.now),
            this.SchedulerAction = e,
            this.now = n
        }
        return t.prototype.schedule = function(t, e, n) {
            return void 0 === e && (e = 0),
            new this.SchedulerAction(this,t).schedule(n, e)
        }
        ,
        t.now = function() {
            return Date.now()
        }
        ,
        t
    }()
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return s
    }
    ));
    var i = n(12)
      , r = n(77)
      , o = n(307)
      , a = n(149);
    function s() {
        for (var t = [], e = 0; e < arguments.length; e++)
            t[e] = arguments[e];
        var n = Number.POSITIVE_INFINITY
          , s = null
          , c = t[t.length - 1];
        return Object(r.a)(c) ? (s = t.pop(),
        t.length > 1 && "number" == typeof t[t.length - 1] && (n = t.pop())) : "number" == typeof c && (n = t.pop()),
        null === s && 1 === t.length && t[0]instanceof i.a ? t[0] : Object(o.a)(n)(Object(a.a)(t, s))
    }
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return i
    }
    ));
    var i = function() {
        function t() {
            return Error.call(this),
            this.message = "argument out of range",
            this.name = "ArgumentOutOfRangeError",
            this
        }
        return t.prototype = Object.create(Error.prototype),
        t
    }()
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(70)
      , a = (n(9),
    n(0))
      , s = n(85)
      , c = n(96)
      , l = n(217)
      , u = n(575)
      , d = n(146)
      , p = n(576)
      , h = (n(66),
    n(2))
      , f = n(6)
      , m = n(168)
      , g = (n(130),
    n(0))
      , v = n(9)
      , y = n(66)
      , b = n(130)
      , w = function(t) {
        function e(e, n, i) {
            var r = t.call(this, void 0, e) || this;
            return r.RestService = e,
            r.TransformService = n,
            r.UoMService = i,
            r.path = "newmeasurements",
            r
        }
        return r(e, t),
        e.prototype.create = function(t) {
            var e = t.type
              , n = t.geometry.coordinates;
            return s.ToolSpec.of(e).type === s.ToolType.AREA ? this.createAreaMeasurement(n, e) : this.createDistanceMeasurement(n, e)
        }
        ,
        e.prototype.createDistanceMeasurement = function(t, e) {
            var n = t.map((function(t) {
                return c.VectorFactory.fromArray3(t)
            }
            ))
              , i = this.convertToLocalCoordinates(t[0])
              , r = new (0,
            s.ToolSpec.of(e).initializer)(i,this.UoMService);
            if (!(r instanceof l.DistanceMeasurementObject3D))
                throw Promise.reject("Created object in repository is not expected type");
            var o = this.convertToLocalCoordinates(t[1]);
            return r.addPoint(o),
            new u.DistanceMeasurement({
                TransformService: this.TransformService,
                UoMService: this.UoMService
            },r,e,m.translate("Distance"),n)
        }
        ,
        e.prototype.createAreaMeasurement = function(t, e) {
            var n = this;
            t[0].splice(-1, 1);
            var i = t[0].map((function(t) {
                return c.VectorFactory.fromArray3(t)
            }
            ))
              , r = t[0].map((function(t) {
                return n.convertToLocalCoordinates(t)
            }
            ))
              , o = new (0,
            s.ToolSpec.of(e).initializer)(r,this.UoMService);
            if (!(o instanceof d.AreaMeasurementObject3D))
                throw Promise.reject("Created object in repository is not expected type");
            return new p.AreaMeasurement({
                TransformService: this.TransformService,
                UoMService: this.UoMService
            },o,e,m.translate("Area"),i)
        }
        ,
        e.prototype.convertToLocalCoordinates = function(t) {
            var e = c.VectorFactory.fromArray3(t);
            return this.TransformService.globalToLocal.transform(e)
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(g.ɵɵinject(v.RestService),g.ɵɵinject(y.TransformService),g.ɵɵinject(b.UoMService))
        }
        ,
        e.ɵprov = g.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(o.RestRepository);
    e.MeasurementRepository = w,
    g.ɵsetClassMetadata(w, [{
        type: a.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: v.RestService
        }, {
            type: y.TransformService
        }, {
            type: b.UoMService
        }]
    }
    ), null),
    h.module("IVWebApp").service("MeasurementsRepository", f.downgradeInjectable(w))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return r
    }
    )),
    n.d(e, "b", (function() {
        return o
    }
    ));
    var i = n(156);
    function r() {
        for (var t = [], e = 0; e < arguments.length; e++)
            t[e] = arguments[e];
        return o(t)
    }
    function o(t) {
        return 0 === t.length ? i.a : 1 === t.length ? t[0] : function(e) {
            return t.reduce((function(t, e) {
                return e(t)
            }
            ), e)
        }
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.BUNDLE_IMPORT_JOB = "bundleImportJob",
        t.BUNDLE_WIFI_IMPORT_JOB = "bundleWifiImportJob",
        t.BUNDLE_NAVGRAPH_IMPORT_JOB = "bundleNavgraphImportJob",
        t.UNZIP_AND_MERGE_JOB = "unzipAndMergeJob",
        t.MAPS_AND_NAVGRAPH_GENERATOR_JOB = "mapsAndNavgraphGeneratorJob",
        t.MAPS_GENERATOR_JOB = "mapsGeneratorJob",
        t.FLOOR_MAPS_GENERATOR_JOB = "floorMapsGeneratorJob",
        t.FLOOR_MAPS_TILER_JOB = "floorMapsTilerJob",
        t.NAVGRAPH_GENERATOR_JOB = "navgraphGeneratorJob",
        t.POINTCLOUD_IMPORTER_JOB = "pointCloudImporterJob",
        t.POINTCLOUD_AUTO_ALIGN_JOB = "pointCloudAutoAlignJob",
        t.DOWNLOAD_DATASET_FROM_S3_JOB = "downloadDatasetFromS3Job",
        t.POINT_CLOUD_CROP_JOB = "pointCloudCropJob",
        t.WEBDIR_UPGRADE_JOB = "webdirUpgradeJob",
        t.VISUAL_INDEX_IMPORT_JOB = "visualIndexImportJob"
    }(e.JobName || (e.JobName = {}))
}
, function(t, e, n) {
    var i = n(158)
      , r = n(458);
    (t.exports = function(t, e) {
        return r[t] || (r[t] = void 0 !== e ? e : {})
    }
    )("versions", []).push({
        version: "3.6.5",
        mode: i ? "pure" : "global",
        copyright: "© 2020 Denis Pushkarev (zloirock.ru)"
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(109)
      , r = n(174)
      , o = n(240)
      , a = n(110)
      , s = n(355)
      , c = a.set
      , l = a.getterFor("Array Iterator");
    t.exports = s(Array, "Array", (function(t, e) {
        c(this, {
            type: "Array Iterator",
            target: i(t),
            index: 0,
            kind: e
        })
    }
    ), (function() {
        var t = l(this)
          , e = t.target
          , n = t.kind
          , i = t.index++;
        return !e || i >= e.length ? (t.target = void 0,
        {
            value: void 0,
            done: !0
        }) : "keys" == n ? {
            value: i,
            done: !1
        } : "values" == n ? {
            value: e[i],
            done: !1
        } : {
            value: [i, e[i]],
            done: !1
        }
    }
    ), "values"),
    o.Arguments = o.Array,
    r("keys"),
    r("values"),
    r("entries")
}
, function(t, e, n) {
    var i = n(34);
    t.exports = i
}
, function(t, e, n) {
    var i = n(284)
      , r = n(236)
      , o = i("keys");
    t.exports = function(t) {
        return o[t] || (o[t] = r(t))
    }
}
, function(t, e, n) {
    "use strict";
    var i = {}.propertyIsEnumerable
      , r = Object.getOwnPropertyDescriptor
      , o = r && !i.call({
        1: 2
    }, 1);
    e.f = o ? function(t) {
        var e = r(this, t);
        return !!e && e.enumerable
    }
    : i
}
, function(t, e, n) {
    var i = n(18)
      , r = /#|\.prototype\./
      , o = function(t, e) {
        var n = s[a(t)];
        return n == l || n != c && ("function" == typeof e ? i(e) : !!e)
    }
      , a = o.normalize = function(t) {
        return String(t).replace(r, ".").toLowerCase()
    }
      , s = o.data = {}
      , c = o.NATIVE = "N"
      , l = o.POLYFILL = "P";
    t.exports = o
}
, function(t, e, n) {
    var i = n(161);
    t.exports = i("navigator", "userAgent") || ""
}
, function(t, e, n) {
    var i = n(122)
      , r = n(87)
      , o = function(t) {
        return function(e, n) {
            var o, a, s = String(r(e)), c = i(n), l = s.length;
            return c < 0 || c >= l ? t ? "" : void 0 : (o = s.charCodeAt(c)) < 55296 || o > 56319 || c + 1 === l || (a = s.charCodeAt(c + 1)) < 56320 || a > 57343 ? t ? s.charAt(c) : o : t ? s.slice(c, c + 2) : a - 56320 + (o - 55296 << 10) + 65536
        }
    };
    t.exports = {
        codeAt: o(!1),
        charAt: o(!0)
    }
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(34)
      , o = n(289)
      , a = n(98)
      , s = n(194)
      , c = n(245)
      , l = n(192)
      , u = n(42)
      , d = n(18)
      , p = n(362)
      , h = n(162)
      , f = n(293);
    t.exports = function(t, e, n) {
        var m = -1 !== t.indexOf("Map")
          , g = -1 !== t.indexOf("Weak")
          , v = m ? "set" : "add"
          , y = r[t]
          , b = y && y.prototype
          , w = y
          , S = {}
          , x = function(t) {
            var e = b[t];
            a(b, t, "add" == t ? function(t) {
                return e.call(this, 0 === t ? 0 : t),
                this
            }
            : "delete" == t ? function(t) {
                return !(g && !u(t)) && e.call(this, 0 === t ? 0 : t)
            }
            : "get" == t ? function(t) {
                return g && !u(t) ? void 0 : e.call(this, 0 === t ? 0 : t)
            }
            : "has" == t ? function(t) {
                return !(g && !u(t)) && e.call(this, 0 === t ? 0 : t)
            }
            : function(t, n) {
                return e.call(this, 0 === t ? 0 : t, n),
                this
            }
            )
        };
        if (o(t, "function" != typeof y || !(g || b.forEach && !d((function() {
            (new y).entries().next()
        }
        )))))
            w = n.getConstructor(e, t, m, v),
            s.REQUIRED = !0;
        else if (o(t, !0)) {
            var M = new w
              , E = M[v](g ? {} : -0, 1) != M
              , C = d((function() {
                M.has(1)
            }
            ))
              , A = p((function(t) {
                new y(t)
            }
            ))
              , T = !g && d((function() {
                for (var t = new y, e = 5; e--; )
                    t[v](e, e);
                return !t.has(-0)
            }
            ));
            A || ((w = e((function(e, n) {
                l(e, w, t);
                var i = f(new y, e, w);
                return null != n && c(n, i[v], i, m),
                i
            }
            ))).prototype = b,
            b.constructor = w),
            (C || T) && (x("delete"),
            x("has"),
            m && x("get")),
            (T || E) && x(v),
            g && b.clear && delete b.clear
        }
        return S[t] = w,
        i({
            global: !0,
            forced: w != y
        }, S),
        h(w, t),
        g || n.setStrong(w, t, m),
        w
    }
}
, function(t, e, n) {
    var i = n(42)
      , r = n(191);
    t.exports = function(t, e, n) {
        var o, a;
        return r && "function" == typeof (o = e.constructor) && o !== n && i(a = o.prototype) && a !== n.prototype && r(t, a),
        t
    }
}
, function(t, e, n) {
    "use strict";
    var i = n(158)
      , r = n(34)
      , o = n(18);
    t.exports = i || !o((function() {
        var t = Math.random();
        __defineSetter__.call(null, t, (function() {}
        )),
        delete r[t]
    }
    ))
}
, function(t, e, n) {
    var i = n(132)
      , r = n(53)
      , o = n(234)
      , a = n(44)
      , s = function(t) {
        return function(e, n, s, c) {
            i(n);
            var l = r(e)
              , u = o(l)
              , d = a(l.length)
              , p = t ? d - 1 : 0
              , h = t ? -1 : 1;
            if (s < 2)
                for (; ; ) {
                    if (p in u) {
                        c = u[p],
                        p += h;
                        break
                    }
                    if (p += h,
                    t ? p < 0 : d <= p)
                        throw TypeError("Reduce of empty array with no initial value")
                }
            for (; t ? p >= 0 : d > p; p += h)
                p in u && (c = n(c, u[p], p, l));
            return c
        }
    };
    t.exports = {
        left: s(!1),
        right: s(!0)
    }
}
, function(t, e, n) {
    var i = n(42)
      , r = n(133)
      , o = n(45)("match");
    t.exports = function(t) {
        var e;
        return i(t) && (void 0 !== (e = t[o]) ? !!e : "RegExp" == r(t))
    }
}
, function(t, e, n) {
    "use strict";
    n(503);
    var i = n(98)
      , r = n(18)
      , o = n(45)
      , a = n(298)
      , s = n(88)
      , c = o("species")
      , l = !r((function() {
        var t = /./;
        return t.exec = function() {
            var t = [];
            return t.groups = {
                a: "7"
            },
            t
        }
        ,
        "7" !== "".replace(t, "$<a>")
    }
    ))
      , u = "$0" === "a".replace(/./, "$0")
      , d = o("replace")
      , p = !!/./[d] && "" === /./[d]("a", "$0")
      , h = !r((function() {
        var t = /(?:)/
          , e = t.exec;
        t.exec = function() {
            return e.apply(this, arguments)
        }
        ;
        var n = "ab".split(t);
        return 2 !== n.length || "a" !== n[0] || "b" !== n[1]
    }
    ));
    t.exports = function(t, e, n, d) {
        var f = o(t)
          , m = !r((function() {
            var e = {};
            return e[f] = function() {
                return 7
            }
            ,
            7 != ""[t](e)
        }
        ))
          , g = m && !r((function() {
            var e = !1
              , n = /a/;
            return "split" === t && ((n = {}).constructor = {},
            n.constructor[c] = function() {
                return n
            }
            ,
            n.flags = "",
            n[f] = /./[f]),
            n.exec = function() {
                return e = !0,
                null
            }
            ,
            n[f](""),
            !e
        }
        ));
        if (!m || !g || "replace" === t && (!l || !u || p) || "split" === t && !h) {
            var v = /./[f]
              , y = n(f, ""[t], (function(t, e, n, i, r) {
                return e.exec === a ? m && !r ? {
                    done: !0,
                    value: v.call(e, n, i)
                } : {
                    done: !0,
                    value: t.call(n, e, i)
                } : {
                    done: !1
                }
            }
            ), {
                REPLACE_KEEPS_$0: u,
                REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: p
            })
              , b = y[0]
              , w = y[1];
            i(String.prototype, t, b),
            i(RegExp.prototype, f, 2 == e ? function(t, e) {
                return w.call(t, this, e)
            }
            : function(t) {
                return w.call(t, this)
            }
            )
        }
        d && s(RegExp.prototype[f], "sham", !0)
    }
}
, function(t, e, n) {
    "use strict";
    var i, r, o = n(248), a = n(366), s = RegExp.prototype.exec, c = String.prototype.replace, l = s, u = (i = /a/,
    r = /b*/g,
    s.call(i, "a"),
    s.call(r, "a"),
    0 !== i.lastIndex || 0 !== r.lastIndex), d = a.UNSUPPORTED_Y || a.BROKEN_CARET, p = void 0 !== /()??/.exec("")[1];
    (u || p || d) && (l = function(t) {
        var e, n, i, r, a = this, l = d && a.sticky, h = o.call(a), f = a.source, m = 0, g = t;
        return l && (-1 === (h = h.replace("y", "")).indexOf("g") && (h += "g"),
        g = String(t).slice(a.lastIndex),
        a.lastIndex > 0 && (!a.multiline || a.multiline && "\n" !== t[a.lastIndex - 1]) && (f = "(?: " + f + ")",
        g = " " + g,
        m++),
        n = new RegExp("^(?:" + f + ")",h)),
        p && (n = new RegExp("^" + f + "$(?!\\s)",h)),
        u && (e = a.lastIndex),
        i = s.call(l ? n : a, g),
        l ? i ? (i.input = i.input.slice(m),
        i[0] = i[0].slice(m),
        i.index = a.lastIndex,
        a.lastIndex += i[0].length) : a.lastIndex = 0 : u && i && (a.lastIndex = a.global ? i.index + i[0].length : e),
        p && i && i.length > 1 && c.call(i[0], n, (function() {
            for (r = 1; r < arguments.length - 2; r++)
                void 0 === arguments[r] && (i[r] = void 0)
        }
        )),
        i
    }
    ),
    t.exports = l
}
, function(t, e, n) {
    "use strict";
    var i = n(291).charAt;
    t.exports = function(t, e, n) {
        return e + (n ? i(t, e).length : 1)
    }
}
, function(t, e, n) {
    var i = n(133)
      , r = n(298);
    t.exports = function(t, e) {
        var n = t.exec;
        if ("function" == typeof n) {
            var o = n.call(t, e);
            if ("object" != typeof o)
                throw TypeError("RegExp exec method returned something other than an Object or null");
            return o
        }
        if ("RegExp" !== i(t))
            throw TypeError("RegExp#exec called on incompatible receiver");
        return r.call(t, e)
    }
}
, function(t, e) {
    t.exports = "\t\n\v\f\r                　\u2028\u2029\ufeff"
}
, function(t, e) {
    var n = Math.expm1
      , i = Math.exp;
    t.exports = !n || n(10) > 22025.465794806718 || n(10) < 22025.465794806718 || -2e-17 != n(-2e-17) ? function(t) {
        return 0 == (t = +t) ? t : t > -1e-6 && t < 1e-6 ? t + t * t / 2 : i(t) - 1
    }
    : n
}
, function(t, e, n) {
    "use strict";
    var i = n(34)
      , r = n(43)
      , o = n(371)
      , a = n(88)
      , s = n(243)
      , c = n(18)
      , l = n(192)
      , u = n(122)
      , d = n(44)
      , p = n(510)
      , h = n(828)
      , f = n(99)
      , m = n(191)
      , g = n(190).f
      , v = n(48).f
      , y = n(363)
      , b = n(162)
      , w = n(110)
      , S = w.get
      , x = w.set
      , M = i.ArrayBuffer
      , E = M
      , C = i.DataView
      , A = C && C.prototype
      , T = Object.prototype
      , O = i.RangeError
      , _ = h.pack
      , P = h.unpack
      , I = function(t) {
        return [255 & t]
    }
      , k = function(t) {
        return [255 & t, t >> 8 & 255]
    }
      , D = function(t) {
        return [255 & t, t >> 8 & 255, t >> 16 & 255, t >> 24 & 255]
    }
      , R = function(t) {
        return t[3] << 24 | t[2] << 16 | t[1] << 8 | t[0]
    }
      , L = function(t) {
        return _(t, 23, 4)
    }
      , N = function(t) {
        return _(t, 52, 8)
    }
      , j = function(t, e) {
        v(t.prototype, e, {
            get: function() {
                return S(this)[e]
            }
        })
    }
      , V = function(t, e, n, i) {
        var r = p(n)
          , o = S(t);
        if (r + e > o.byteLength)
            throw O("Wrong index");
        var a = S(o.buffer).bytes
          , s = r + o.byteOffset
          , c = a.slice(s, s + e);
        return i ? c : c.reverse()
    }
      , F = function(t, e, n, i, r, o) {
        var a = p(n)
          , s = S(t);
        if (a + e > s.byteLength)
            throw O("Wrong index");
        for (var c = S(s.buffer).bytes, l = a + s.byteOffset, u = i(+r), d = 0; d < e; d++)
            c[l + d] = u[o ? d : e - d - 1]
    };
    if (o) {
        if (!c((function() {
            M(1)
        }
        )) || !c((function() {
            new M(-1)
        }
        )) || c((function() {
            return new M,
            new M(1.5),
            new M(NaN),
            "ArrayBuffer" != M.name
        }
        ))) {
            for (var U, B = (E = function(t) {
                return l(this, E),
                new M(p(t))
            }
            ).prototype = M.prototype, z = g(M), G = 0; z.length > G; )
                (U = z[G++])in E || a(E, U, M[U]);
            B.constructor = E
        }
        m && f(A) !== T && m(A, T);
        var H = new C(new E(2))
          , W = A.setInt8;
        H.setInt8(0, 2147483648),
        H.setInt8(1, 2147483649),
        !H.getInt8(0) && H.getInt8(1) || s(A, {
            setInt8: function(t, e) {
                W.call(this, t, e << 24 >> 24)
            },
            setUint8: function(t, e) {
                W.call(this, t, e << 24 >> 24)
            }
        }, {
            unsafe: !0
        })
    } else
        E = function(t) {
            l(this, E, "ArrayBuffer");
            var e = p(t);
            x(this, {
                bytes: y.call(new Array(e), 0),
                byteLength: e
            }),
            r || (this.byteLength = e)
        }
        ,
        C = function(t, e, n) {
            l(this, C, "DataView"),
            l(t, E, "DataView");
            var i = S(t).byteLength
              , o = u(e);
            if (o < 0 || o > i)
                throw O("Wrong offset");
            if (o + (n = void 0 === n ? i - o : d(n)) > i)
                throw O("Wrong length");
            x(this, {
                buffer: t,
                byteLength: n,
                byteOffset: o
            }),
            r || (this.buffer = t,
            this.byteLength = n,
            this.byteOffset = o)
        }
        ,
        r && (j(E, "byteLength"),
        j(C, "buffer"),
        j(C, "byteLength"),
        j(C, "byteOffset")),
        s(C.prototype, {
            getInt8: function(t) {
                return V(this, 1, t)[0] << 24 >> 24
            },
            getUint8: function(t) {
                return V(this, 1, t)[0]
            },
            getInt16: function(t) {
                var e = V(this, 2, t, arguments.length > 1 ? arguments[1] : void 0);
                return (e[1] << 8 | e[0]) << 16 >> 16
            },
            getUint16: function(t) {
                var e = V(this, 2, t, arguments.length > 1 ? arguments[1] : void 0);
                return e[1] << 8 | e[0]
            },
            getInt32: function(t) {
                return R(V(this, 4, t, arguments.length > 1 ? arguments[1] : void 0))
            },
            getUint32: function(t) {
                return R(V(this, 4, t, arguments.length > 1 ? arguments[1] : void 0)) >>> 0
            },
            getFloat32: function(t) {
                return P(V(this, 4, t, arguments.length > 1 ? arguments[1] : void 0), 23)
            },
            getFloat64: function(t) {
                return P(V(this, 8, t, arguments.length > 1 ? arguments[1] : void 0), 52)
            },
            setInt8: function(t, e) {
                F(this, 1, t, I, e)
            },
            setUint8: function(t, e) {
                F(this, 1, t, I, e)
            },
            setInt16: function(t, e) {
                F(this, 2, t, k, e, arguments.length > 2 ? arguments[2] : void 0)
            },
            setUint16: function(t, e) {
                F(this, 2, t, k, e, arguments.length > 2 ? arguments[2] : void 0)
            },
            setInt32: function(t, e) {
                F(this, 4, t, D, e, arguments.length > 2 ? arguments[2] : void 0)
            },
            setUint32: function(t, e) {
                F(this, 4, t, D, e, arguments.length > 2 ? arguments[2] : void 0)
            },
            setFloat32: function(t, e) {
                F(this, 4, t, L, e, arguments.length > 2 ? arguments[2] : void 0)
            },
            setFloat64: function(t, e) {
                F(this, 8, t, N, e, arguments.length > 2 ? arguments[2] : void 0)
            }
        });
    b(E, "ArrayBuffer"),
    b(C, "DataView"),
    t.exports = {
        ArrayBuffer: E,
        DataView: C
    }
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return o
    }
    ));
    var i = n(1)
      , r = n(26);
    function o() {
        return function(t) {
            return t.lift(new a(t))
        }
    }
    var a = function() {
        function t(t) {
            this.connectable = t
        }
        return t.prototype.call = function(t, e) {
            var n = this.connectable;
            n._refCount++;
            var i = new s(t,n)
              , r = e.subscribe(i);
            return i.closed || (i.connection = n.connect()),
            r
        }
        ,
        t
    }()
      , s = function(t) {
        function e(e, n) {
            var i = t.call(this, e) || this;
            return i.connectable = n,
            i
        }
        return i.c(e, t),
        e.prototype._unsubscribe = function() {
            var t = this.connectable;
            if (t) {
                this.connectable = null;
                var e = t._refCount;
                if (e <= 0)
                    this.connection = null;
                else if (t._refCount = e - 1,
                e > 1)
                    this.connection = null;
                else {
                    var n = this.connection
                      , i = t._connection;
                    this.connection = null,
                    !i || n && i !== n || i.unsubscribe()
                }
            } else
                this.connection = null
        }
        ,
        e
    }(r.a)
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return u
    }
    ));
    var i = n(1)
      , r = n(32)
      , o = n(277)
      , a = n(33)
      , s = n(448)
      , c = n(127)
      , l = n(336)
      , u = function(t) {
        function e(e, n, i) {
            void 0 === e && (e = Number.POSITIVE_INFINITY),
            void 0 === n && (n = Number.POSITIVE_INFINITY);
            var r = t.call(this) || this;
            return r.scheduler = i,
            r._events = [],
            r._infiniteTimeWindow = !1,
            r._bufferSize = e < 1 ? 1 : e,
            r._windowTime = n < 1 ? 1 : n,
            n === Number.POSITIVE_INFINITY ? (r._infiniteTimeWindow = !0,
            r.next = r.nextInfiniteTimeWindow) : r.next = r.nextTimeWindow,
            r
        }
        return i.c(e, t),
        e.prototype.nextInfiniteTimeWindow = function(e) {
            var n = this._events;
            n.push(e),
            n.length > this._bufferSize && n.shift(),
            t.prototype.next.call(this, e)
        }
        ,
        e.prototype.nextTimeWindow = function(e) {
            this._events.push(new d(this._getNow(),e)),
            this._trimBufferThenGetEvents(),
            t.prototype.next.call(this, e)
        }
        ,
        e.prototype._subscribe = function(t) {
            var e, n = this._infiniteTimeWindow, i = n ? this._events : this._trimBufferThenGetEvents(), r = this.scheduler, o = i.length;
            if (this.closed)
                throw new c.a;
            if (this.isStopped || this.hasError ? e = a.a.EMPTY : (this.observers.push(t),
            e = new l.a(this,t)),
            r && t.add(t = new s.a(t,r)),
            n)
                for (var u = 0; u < o && !t.closed; u++)
                    t.next(i[u]);
            else
                for (u = 0; u < o && !t.closed; u++)
                    t.next(i[u].value);
            return this.hasError ? t.error(this.thrownError) : this.isStopped && t.complete(),
            e
        }
        ,
        e.prototype._getNow = function() {
            return (this.scheduler || o.a).now()
        }
        ,
        e.prototype._trimBufferThenGetEvents = function() {
            for (var t = this._getNow(), e = this._bufferSize, n = this._windowTime, i = this._events, r = i.length, o = 0; o < r && !(t - i[o].time < n); )
                o++;
            return r > e && (o = Math.max(o, r - e)),
            o > 0 && i.splice(0, o),
            i
        }
        ,
        e
    }(r.a)
      , d = function() {
        return function(t, e) {
            this.time = t,
            this.value = e
        }
    }()
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return r
    }
    ));
    var i = n(12);
    function r(t, e) {
        return e ? new i.a((function(n) {
            return e.schedule(o, 0, {
                error: t,
                subscriber: n
            })
        }
        )) : new i.a((function(e) {
            return e.error(t)
        }
        ))
    }
    function o(t) {
        var e = t.error;
        t.subscriber.error(e)
    }
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return o
    }
    ));
    var i = n(443)
      , r = n(156);
    function o(t) {
        return void 0 === t && (t = Number.POSITIVE_INFINITY),
        Object(i.b)(r.a, t)
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(7)
      , r = function() {
        function t(t) {
            this.gettextCatalog = t
        }
        return t.prototype.applies = function(t) {
            var e = i.get(t, "config.url")
              , n = i.get(t, "status");
            return void 0 !== n && void 0 !== e && this.networkApplies(n, e, t)
        }
        ,
        t
    }();
    e.NetworkIssueDetector = r
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(7)
      , a = n(1041)
      , s = n(253)
      , c = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.titles = {},
            e.descriptions = {},
            e
        }
        return r(e, t),
        e.prototype.resolveInjectables = function() {
            t.prototype.resolveInjectables.call(this),
            this.LanguageService = this.injectables.LanguageService,
            this.ContentService = this.injectables.ContentService
        }
        ,
        e.prototype.copy = function(e, n, i) {
            return void 0 === n && (n = !1),
            void 0 === i && (i = !1),
            t.prototype.fill.call(this, e, i),
            this.poiTypeId = e.poiTypeId,
            this.poiType = e.poiType,
            this._icon = e._icon,
            this.importance = e.importance,
            this.visibilityCheck = e.visibilityCheck,
            this.forceShow = e.forceShow,
            this.titles = o.cloneDeep(e.titles),
            this.descriptions = o.cloneDeep(e.descriptions),
            this.siteModelEntityId = e.siteModelEntityId,
            this.siteModelEntity = e.siteModelEntity,
            this.customData = e.customData,
            this.referenceMarker = e.referenceMarker,
            this.readOnly = e.readOnly,
            this.idRoutable = e.idRoutable,
            this.canDisplayNameInScene = e.canDisplayNameInScene,
            this.canBeHighlightedInScene = e.canBeHighlightedInScene,
            this.isLocationAsPoi = e.isLocationAsPoi,
            this.isSiteModelAsPoi = e.isSiteModelAsPoi,
            this.isPoiFromSearchResult = e.isPoiFromSearchResult,
            this.pov = e.pov,
            this
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.poiTypeId = e.poi_type_id,
            this._icon = e.icon,
            this.importance = e.importance,
            this.visibilityCheck = e.visibility_check,
            this.titles = o.clone(e.titles),
            this.descriptions = o.clone(e.descriptions),
            this.siteModelEntityId = e.site_model_entity_id,
            this.customData = e.custom_data,
            this.referenceMarker = e.reference_marker,
            this.readOnly = !1,
            this.idRoutable = !0,
            this.forceShow = !1,
            this.canDisplayNameInScene = !0,
            this.canBeHighlightedInScene = !0,
            this.isLocationAsPoi = !1,
            this.isSiteModelAsPoi = !1,
            this.pov = s.PointOfView.fromDto(e.point_of_view)
        }
        ,
        e.prototype.setPointOfView = function(t, e, n, i) {
            if (!t)
                throw new Error("Location needs to be defined");
            if (!e)
                throw new Error("Orientation needs to be defined");
            this.pov = new s.PointOfView(t,e,n,i)
        }
        ,
        e.prototype.fillFromSearchResult = function(t) {
            this.id = t.id,
            this.isPoiFromSearchResult = !0,
            this.globalLocation = t.location,
            this.computeLocalCoordinatesFromGlobal(),
            this.title = t.title,
            this.icon = t.icon,
            this.poiType = t.poiType,
            this.siteModelEntity = t.siteModelEntity,
            this.readOnly = !0,
            this.visibilityCheck = !1,
            this.forceShow = !0,
            this.canDisplayNameInScene = !0,
            this.canBeHighlightedInScene = !0
        }
        ,
        e.prototype.toData = function() {
            var t = {};
            return this.fillDto(t),
            t.poi_type_id = this.poiType ? this.poiType.id : void 0,
            t.icon = this._icon,
            t.importance = this.importance,
            t.visibility_check = this.visibilityCheck,
            t.titles = o.clone(this.titles),
            t.descriptions = o.clone(this.descriptions),
            t.site_model_entity_id = void 0,
            t.custom_data = this.customData,
            t.reference_marker = this.referenceMarker,
            t.point_of_view = this.pov ? this.pov.toDto() : void 0,
            t
        }
        ,
        e.prototype.movePoi = function(t, e, n) {
            this.dataset = t,
            this.datasetLocation = e,
            this.datasetOrientation = n,
            this.computeCoordinatesFromDataset()
        }
        ,
        e.prototype.computeCoordinatesFromDataset = function() {
            this.dataset && this.datasetLocation && this.datasetOrientation && this.computeLocalCoordinatesFromDataset(),
            this.referenceMarker || this.computeGlobalCoordinatesFromLocal()
        }
        ,
        Object.defineProperty(e.prototype, "title", {
            get: function() {
                return this.LanguageService.localize(this.titles) || ""
            },
            set: function(t) {
                this.titles[this.LanguageService.getCurrentLanguage()] = t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "description", {
            get: function() {
                var t = this.LanguageService.localize(this.descriptions);
                return t ? this.ContentService.expandSelfHostedUrls(t) : t
            },
            set: function(t) {
                this.descriptions[this.LanguageService.getCurrentLanguage()] = t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "icon", {
            get: function() {
                return this._icon || this.poiType && this.poiType.icon || n(527)
            },
            set: function(t) {
                this._icon = t
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.hasCustomIcon = function() {
            return !!this._icon
        }
        ,
        Object.defineProperty(e.prototype, "hash", {
            get: function() {
                return void 0 === this.id ? "PoiEntity:LocationPoi:" + this.unique_id : "PoiEntity:" + this.id
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.getCode = function(t) {
            return console.warn('Deprecated usage of "getCode(language?)", use "title" instead.'),
            t ? this.titles[t] : this.title
        }
        ,
        e.prototype.getDescription = function(t) {
            return console.warn('Deprecated usage of "getDescription(language?)", use "description" instead.'),
            t ? this.descriptions[t] : this.description
        }
        ,
        e
    }(a.SecureLocationEntity);
    e.PoiEntity = c
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e, n, i) || this;
            return o.SiteModelRepository = r,
            o.injectables.SiteModelRepository = o.SiteModelRepository,
            o.SiteModelRepository.siteModelUpdated.connect((function() {
                o.data.length && (o.resetRequestCache(),
                o.findAll(!0).catch((function() {}
                )))
            }
            )),
            o
        }
        return r(e, t),
        e
    }(n(383).ReferenceSystemAwareRestRepository);
    e.SiteModelBoundRestRepository = o
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t[t.DEFAULT = 2] = "DEFAULT",
        t[t.ABOVE_DEFAULT = 3] = "ABOVE_DEFAULT",
        t[t.BETWEEN = 1e3] = "BETWEEN",
        t[t.ABOVE = 5e3] = "ABOVE",
        t[t.HIGHLIGHT = 1e4] = "HIGHLIGHT",
        t[t.ABOVE_HIGHLIGHT = 11e3] = "ABOVE_HIGHLIGHT",
        t[t.ON_TOP = 2e4] = "ON_TOP",
        t[t.MAGNIFICATION = 20001] = "MAGNIFICATION",
        t[t.MAGNIFICATION_CROSSHAIR = 20002] = "MAGNIFICATION_CROSSHAIR"
    }(e.RenderOrder || (e.RenderOrder = {}))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(4);
    e.createSetUniformsFunc = function(t) {
        var e = new i.Vector2
          , n = new i.Vector2;
        return function(i, r, o, a, s, c, l, u) {
            e.set(s, c),
            n.set(l, u),
            t.uniforms.depthTexture = {
                value: i
            },
            t.uniforms.rgbaTexture = {
                value: r
            },
            t.uniforms.nearPlane = {
                value: o
            },
            t.uniforms.farPlane = {
                value: a
            },
            t.uniforms.viewportSize = {
                value: e
            },
            t.uniforms.viewportOffset = {
                value: n
            }
        }
    }
    ,
    e.createOnBeforeRenderFunc = function() {
        return function(t, e, n, r, o, a) {
            if (n instanceof i.PerspectiveCamera && o.setUniforms) {
                var s = e.userData.offscreenRenderOutput;
                o.setUniforms(s.depthTexture, s.rgbaTexture, n.near, n.far, s.viewportWidth, s.viewportHeight, s.viewportHorizontalOffset, s.viewportVerticalOffset)
            }
        }
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i, r = n(0), o = n(1099), a = n(1106), s = n(388), c = n(0);
    !function(t) {
        t.CHINESE = "cmn",
        t.JAPANESE = "jpn",
        t.GREEK = "ell",
        t.RUSSIAN = "rus",
        t.BULGARIAN = "bul",
        t.HUNGARIAN = "hun",
        t.TURKISH = "tur",
        t.FRENCH = "fra",
        t.CZECH = "ces",
        t.ENGLISH = "eng"
    }(i = e.DetectedLanguage || (e.DetectedLanguage = {}));
    var l = function() {
        function t() {
            this.DETECTION_MIN_LENGTH = 3
        }
        return t.prototype.detectLanguage = function(t) {
            var e = o(t, {
                minLength: this.DETECTION_MIN_LENGTH,
                only: Object.values(i)
            });
            return this.getDetectedLanguageEnum(e)
        }
        ,
        t.prototype.getFontForText = function(t) {
            switch (this.detectLanguage(t)) {
            case i.CHINESE:
                return a.isSimplified(t) ? s.SupportedFont.CHINESE_SIMPLIFIED : s.SupportedFont.CHINESE_TRADITIONAL;
            case i.JAPANESE:
                return s.SupportedFont.JAPANESE;
            case i.BULGARIAN:
            case i.GREEK:
            case i.RUSSIAN:
                return s.SupportedFont.CYRILLIC;
            case i.CZECH:
            case i.ENGLISH:
            case i.FRENCH:
            case i.TURKISH:
            case i.HUNGARIAN:
            default:
                return s.SupportedFont.DEFAULT
            }
        }
        ,
        t.prototype.getDetectedLanguageEnum = function(t) {
            for (var e = 0, n = Object.keys(i); e < n.length; e++) {
                var r = n[e];
                if (i[r].toString() === t)
                    return i[r]
            }
            return i.ENGLISH
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵprov = c.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.LanguageDetectionService = l,
    c.ɵsetClassMetadata(l, [{
        type: r.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], null, null)
}
, function(t, e, n) {
    "use strict";
    (function(e) {
        t.exports = function(t) {
            for (var n = "undefined" != typeof window && "function" == typeof window.atob ? window.atob(t) : e.from(t, "base64").toString("binary"), i = new Uint8Array(n.length), r = 0; r < n.length; ++r)
                i[r] = n.charCodeAt(r);
            return i.buffer
        }
    }
    ).call(this, n(315).Buffer)
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        /*!
 * The buffer module from node.js, for the browser.
 *
 * @author   Feross Aboukhadijeh <http://feross.org>
 * @license  MIT
 */
        var i = n(1110)
          , r = n(1111)
          , o = n(1112);
        function a() {
            return c.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823
        }
        function s(t, e) {
            if (a() < e)
                throw new RangeError("Invalid typed array length");
            return c.TYPED_ARRAY_SUPPORT ? (t = new Uint8Array(e)).__proto__ = c.prototype : (null === t && (t = new c(e)),
            t.length = e),
            t
        }
        function c(t, e, n) {
            if (!(c.TYPED_ARRAY_SUPPORT || this instanceof c))
                return new c(t,e,n);
            if ("number" == typeof t) {
                if ("string" == typeof e)
                    throw new Error("If encoding is specified then the first argument must be a string");
                return d(this, t)
            }
            return l(this, t, e, n)
        }
        function l(t, e, n, i) {
            if ("number" == typeof e)
                throw new TypeError('"value" argument must not be a number');
            return "undefined" != typeof ArrayBuffer && e instanceof ArrayBuffer ? function(t, e, n, i) {
                if (e.byteLength,
                n < 0 || e.byteLength < n)
                    throw new RangeError("'offset' is out of bounds");
                if (e.byteLength < n + (i || 0))
                    throw new RangeError("'length' is out of bounds");
                e = void 0 === n && void 0 === i ? new Uint8Array(e) : void 0 === i ? new Uint8Array(e,n) : new Uint8Array(e,n,i);
                c.TYPED_ARRAY_SUPPORT ? (t = e).__proto__ = c.prototype : t = p(t, e);
                return t
            }(t, e, n, i) : "string" == typeof e ? function(t, e, n) {
                "string" == typeof n && "" !== n || (n = "utf8");
                if (!c.isEncoding(n))
                    throw new TypeError('"encoding" must be a valid string encoding');
                var i = 0 | f(e, n)
                  , r = (t = s(t, i)).write(e, n);
                r !== i && (t = t.slice(0, r));
                return t
            }(t, e, n) : function(t, e) {
                if (c.isBuffer(e)) {
                    var n = 0 | h(e.length);
                    return 0 === (t = s(t, n)).length || e.copy(t, 0, 0, n),
                    t
                }
                if (e) {
                    if ("undefined" != typeof ArrayBuffer && e.buffer instanceof ArrayBuffer || "length"in e)
                        return "number" != typeof e.length || (i = e.length) != i ? s(t, 0) : p(t, e);
                    if ("Buffer" === e.type && o(e.data))
                        return p(t, e.data)
                }
                var i;
                throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")
            }(t, e)
        }
        function u(t) {
            if ("number" != typeof t)
                throw new TypeError('"size" argument must be a number');
            if (t < 0)
                throw new RangeError('"size" argument must not be negative')
        }
        function d(t, e) {
            if (u(e),
            t = s(t, e < 0 ? 0 : 0 | h(e)),
            !c.TYPED_ARRAY_SUPPORT)
                for (var n = 0; n < e; ++n)
                    t[n] = 0;
            return t
        }
        function p(t, e) {
            var n = e.length < 0 ? 0 : 0 | h(e.length);
            t = s(t, n);
            for (var i = 0; i < n; i += 1)
                t[i] = 255 & e[i];
            return t
        }
        function h(t) {
            if (t >= a())
                throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + a().toString(16) + " bytes");
            return 0 | t
        }
        function f(t, e) {
            if (c.isBuffer(t))
                return t.length;
            if ("undefined" != typeof ArrayBuffer && "function" == typeof ArrayBuffer.isView && (ArrayBuffer.isView(t) || t instanceof ArrayBuffer))
                return t.byteLength;
            "string" != typeof t && (t = "" + t);
            var n = t.length;
            if (0 === n)
                return 0;
            for (var i = !1; ; )
                switch (e) {
                case "ascii":
                case "latin1":
                case "binary":
                    return n;
                case "utf8":
                case "utf-8":
                case void 0:
                    return U(t).length;
                case "ucs2":
                case "ucs-2":
                case "utf16le":
                case "utf-16le":
                    return 2 * n;
                case "hex":
                    return n >>> 1;
                case "base64":
                    return B(t).length;
                default:
                    if (i)
                        return U(t).length;
                    e = ("" + e).toLowerCase(),
                    i = !0
                }
        }
        function m(t, e, n) {
            var i = !1;
            if ((void 0 === e || e < 0) && (e = 0),
            e > this.length)
                return "";
            if ((void 0 === n || n > this.length) && (n = this.length),
            n <= 0)
                return "";
            if ((n >>>= 0) <= (e >>>= 0))
                return "";
            for (t || (t = "utf8"); ; )
                switch (t) {
                case "hex":
                    return _(this, e, n);
                case "utf8":
                case "utf-8":
                    return A(this, e, n);
                case "ascii":
                    return T(this, e, n);
                case "latin1":
                case "binary":
                    return O(this, e, n);
                case "base64":
                    return C(this, e, n);
                case "ucs2":
                case "ucs-2":
                case "utf16le":
                case "utf-16le":
                    return P(this, e, n);
                default:
                    if (i)
                        throw new TypeError("Unknown encoding: " + t);
                    t = (t + "").toLowerCase(),
                    i = !0
                }
        }
        function g(t, e, n) {
            var i = t[e];
            t[e] = t[n],
            t[n] = i
        }
        function v(t, e, n, i, r) {
            if (0 === t.length)
                return -1;
            if ("string" == typeof n ? (i = n,
            n = 0) : n > 2147483647 ? n = 2147483647 : n < -2147483648 && (n = -2147483648),
            n = +n,
            isNaN(n) && (n = r ? 0 : t.length - 1),
            n < 0 && (n = t.length + n),
            n >= t.length) {
                if (r)
                    return -1;
                n = t.length - 1
            } else if (n < 0) {
                if (!r)
                    return -1;
                n = 0
            }
            if ("string" == typeof e && (e = c.from(e, i)),
            c.isBuffer(e))
                return 0 === e.length ? -1 : y(t, e, n, i, r);
            if ("number" == typeof e)
                return e &= 255,
                c.TYPED_ARRAY_SUPPORT && "function" == typeof Uint8Array.prototype.indexOf ? r ? Uint8Array.prototype.indexOf.call(t, e, n) : Uint8Array.prototype.lastIndexOf.call(t, e, n) : y(t, [e], n, i, r);
            throw new TypeError("val must be string, number or Buffer")
        }
        function y(t, e, n, i, r) {
            var o, a = 1, s = t.length, c = e.length;
            if (void 0 !== i && ("ucs2" === (i = String(i).toLowerCase()) || "ucs-2" === i || "utf16le" === i || "utf-16le" === i)) {
                if (t.length < 2 || e.length < 2)
                    return -1;
                a = 2,
                s /= 2,
                c /= 2,
                n /= 2
            }
            function l(t, e) {
                return 1 === a ? t[e] : t.readUInt16BE(e * a)
            }
            if (r) {
                var u = -1;
                for (o = n; o < s; o++)
                    if (l(t, o) === l(e, -1 === u ? 0 : o - u)) {
                        if (-1 === u && (u = o),
                        o - u + 1 === c)
                            return u * a
                    } else
                        -1 !== u && (o -= o - u),
                        u = -1
            } else
                for (n + c > s && (n = s - c),
                o = n; o >= 0; o--) {
                    for (var d = !0, p = 0; p < c; p++)
                        if (l(t, o + p) !== l(e, p)) {
                            d = !1;
                            break
                        }
                    if (d)
                        return o
                }
            return -1
        }
        function b(t, e, n, i) {
            n = Number(n) || 0;
            var r = t.length - n;
            i ? (i = Number(i)) > r && (i = r) : i = r;
            var o = e.length;
            if (o % 2 != 0)
                throw new TypeError("Invalid hex string");
            i > o / 2 && (i = o / 2);
            for (var a = 0; a < i; ++a) {
                var s = parseInt(e.substr(2 * a, 2), 16);
                if (isNaN(s))
                    return a;
                t[n + a] = s
            }
            return a
        }
        function w(t, e, n, i) {
            return z(U(e, t.length - n), t, n, i)
        }
        function S(t, e, n, i) {
            return z(function(t) {
                for (var e = [], n = 0; n < t.length; ++n)
                    e.push(255 & t.charCodeAt(n));
                return e
            }(e), t, n, i)
        }
        function x(t, e, n, i) {
            return S(t, e, n, i)
        }
        function M(t, e, n, i) {
            return z(B(e), t, n, i)
        }
        function E(t, e, n, i) {
            return z(function(t, e) {
                for (var n, i, r, o = [], a = 0; a < t.length && !((e -= 2) < 0); ++a)
                    n = t.charCodeAt(a),
                    i = n >> 8,
                    r = n % 256,
                    o.push(r),
                    o.push(i);
                return o
            }(e, t.length - n), t, n, i)
        }
        function C(t, e, n) {
            return 0 === e && n === t.length ? i.fromByteArray(t) : i.fromByteArray(t.slice(e, n))
        }
        function A(t, e, n) {
            n = Math.min(t.length, n);
            for (var i = [], r = e; r < n; ) {
                var o, a, s, c, l = t[r], u = null, d = l > 239 ? 4 : l > 223 ? 3 : l > 191 ? 2 : 1;
                if (r + d <= n)
                    switch (d) {
                    case 1:
                        l < 128 && (u = l);
                        break;
                    case 2:
                        128 == (192 & (o = t[r + 1])) && (c = (31 & l) << 6 | 63 & o) > 127 && (u = c);
                        break;
                    case 3:
                        o = t[r + 1],
                        a = t[r + 2],
                        128 == (192 & o) && 128 == (192 & a) && (c = (15 & l) << 12 | (63 & o) << 6 | 63 & a) > 2047 && (c < 55296 || c > 57343) && (u = c);
                        break;
                    case 4:
                        o = t[r + 1],
                        a = t[r + 2],
                        s = t[r + 3],
                        128 == (192 & o) && 128 == (192 & a) && 128 == (192 & s) && (c = (15 & l) << 18 | (63 & o) << 12 | (63 & a) << 6 | 63 & s) > 65535 && c < 1114112 && (u = c)
                    }
                null === u ? (u = 65533,
                d = 1) : u > 65535 && (u -= 65536,
                i.push(u >>> 10 & 1023 | 55296),
                u = 56320 | 1023 & u),
                i.push(u),
                r += d
            }
            return function(t) {
                var e = t.length;
                if (e <= 4096)
                    return String.fromCharCode.apply(String, t);
                var n = ""
                  , i = 0;
                for (; i < e; )
                    n += String.fromCharCode.apply(String, t.slice(i, i += 4096));
                return n
            }(i)
        }
        e.Buffer = c,
        e.SlowBuffer = function(t) {
            +t != t && (t = 0);
            return c.alloc(+t)
        }
        ,
        e.INSPECT_MAX_BYTES = 50,
        c.TYPED_ARRAY_SUPPORT = void 0 !== t.TYPED_ARRAY_SUPPORT ? t.TYPED_ARRAY_SUPPORT : function() {
            try {
                var t = new Uint8Array(1);
                return t.__proto__ = {
                    __proto__: Uint8Array.prototype,
                    foo: function() {
                        return 42
                    }
                },
                42 === t.foo() && "function" == typeof t.subarray && 0 === t.subarray(1, 1).byteLength
            } catch (t) {
                return !1
            }
        }(),
        e.kMaxLength = a(),
        c.poolSize = 8192,
        c._augment = function(t) {
            return t.__proto__ = c.prototype,
            t
        }
        ,
        c.from = function(t, e, n) {
            return l(null, t, e, n)
        }
        ,
        c.TYPED_ARRAY_SUPPORT && (c.prototype.__proto__ = Uint8Array.prototype,
        c.__proto__ = Uint8Array,
        "undefined" != typeof Symbol && Symbol.species && c[Symbol.species] === c && Object.defineProperty(c, Symbol.species, {
            value: null,
            configurable: !0
        })),
        c.alloc = function(t, e, n) {
            return function(t, e, n, i) {
                return u(e),
                e <= 0 ? s(t, e) : void 0 !== n ? "string" == typeof i ? s(t, e).fill(n, i) : s(t, e).fill(n) : s(t, e)
            }(null, t, e, n)
        }
        ,
        c.allocUnsafe = function(t) {
            return d(null, t)
        }
        ,
        c.allocUnsafeSlow = function(t) {
            return d(null, t)
        }
        ,
        c.isBuffer = function(t) {
            return !(null == t || !t._isBuffer)
        }
        ,
        c.compare = function(t, e) {
            if (!c.isBuffer(t) || !c.isBuffer(e))
                throw new TypeError("Arguments must be Buffers");
            if (t === e)
                return 0;
            for (var n = t.length, i = e.length, r = 0, o = Math.min(n, i); r < o; ++r)
                if (t[r] !== e[r]) {
                    n = t[r],
                    i = e[r];
                    break
                }
            return n < i ? -1 : i < n ? 1 : 0
        }
        ,
        c.isEncoding = function(t) {
            switch (String(t).toLowerCase()) {
            case "hex":
            case "utf8":
            case "utf-8":
            case "ascii":
            case "latin1":
            case "binary":
            case "base64":
            case "ucs2":
            case "ucs-2":
            case "utf16le":
            case "utf-16le":
                return !0;
            default:
                return !1
            }
        }
        ,
        c.concat = function(t, e) {
            if (!o(t))
                throw new TypeError('"list" argument must be an Array of Buffers');
            if (0 === t.length)
                return c.alloc(0);
            var n;
            if (void 0 === e)
                for (e = 0,
                n = 0; n < t.length; ++n)
                    e += t[n].length;
            var i = c.allocUnsafe(e)
              , r = 0;
            for (n = 0; n < t.length; ++n) {
                var a = t[n];
                if (!c.isBuffer(a))
                    throw new TypeError('"list" argument must be an Array of Buffers');
                a.copy(i, r),
                r += a.length
            }
            return i
        }
        ,
        c.byteLength = f,
        c.prototype._isBuffer = !0,
        c.prototype.swap16 = function() {
            var t = this.length;
            if (t % 2 != 0)
                throw new RangeError("Buffer size must be a multiple of 16-bits");
            for (var e = 0; e < t; e += 2)
                g(this, e, e + 1);
            return this
        }
        ,
        c.prototype.swap32 = function() {
            var t = this.length;
            if (t % 4 != 0)
                throw new RangeError("Buffer size must be a multiple of 32-bits");
            for (var e = 0; e < t; e += 4)
                g(this, e, e + 3),
                g(this, e + 1, e + 2);
            return this
        }
        ,
        c.prototype.swap64 = function() {
            var t = this.length;
            if (t % 8 != 0)
                throw new RangeError("Buffer size must be a multiple of 64-bits");
            for (var e = 0; e < t; e += 8)
                g(this, e, e + 7),
                g(this, e + 1, e + 6),
                g(this, e + 2, e + 5),
                g(this, e + 3, e + 4);
            return this
        }
        ,
        c.prototype.toString = function() {
            var t = 0 | this.length;
            return 0 === t ? "" : 0 === arguments.length ? A(this, 0, t) : m.apply(this, arguments)
        }
        ,
        c.prototype.equals = function(t) {
            if (!c.isBuffer(t))
                throw new TypeError("Argument must be a Buffer");
            return this === t || 0 === c.compare(this, t)
        }
        ,
        c.prototype.inspect = function() {
            var t = ""
              , n = e.INSPECT_MAX_BYTES;
            return this.length > 0 && (t = this.toString("hex", 0, n).match(/.{2}/g).join(" "),
            this.length > n && (t += " ... ")),
            "<Buffer " + t + ">"
        }
        ,
        c.prototype.compare = function(t, e, n, i, r) {
            if (!c.isBuffer(t))
                throw new TypeError("Argument must be a Buffer");
            if (void 0 === e && (e = 0),
            void 0 === n && (n = t ? t.length : 0),
            void 0 === i && (i = 0),
            void 0 === r && (r = this.length),
            e < 0 || n > t.length || i < 0 || r > this.length)
                throw new RangeError("out of range index");
            if (i >= r && e >= n)
                return 0;
            if (i >= r)
                return -1;
            if (e >= n)
                return 1;
            if (this === t)
                return 0;
            for (var o = (r >>>= 0) - (i >>>= 0), a = (n >>>= 0) - (e >>>= 0), s = Math.min(o, a), l = this.slice(i, r), u = t.slice(e, n), d = 0; d < s; ++d)
                if (l[d] !== u[d]) {
                    o = l[d],
                    a = u[d];
                    break
                }
            return o < a ? -1 : a < o ? 1 : 0
        }
        ,
        c.prototype.includes = function(t, e, n) {
            return -1 !== this.indexOf(t, e, n)
        }
        ,
        c.prototype.indexOf = function(t, e, n) {
            return v(this, t, e, n, !0)
        }
        ,
        c.prototype.lastIndexOf = function(t, e, n) {
            return v(this, t, e, n, !1)
        }
        ,
        c.prototype.write = function(t, e, n, i) {
            if (void 0 === e)
                i = "utf8",
                n = this.length,
                e = 0;
            else if (void 0 === n && "string" == typeof e)
                i = e,
                n = this.length,
                e = 0;
            else {
                if (!isFinite(e))
                    throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");
                e |= 0,
                isFinite(n) ? (n |= 0,
                void 0 === i && (i = "utf8")) : (i = n,
                n = void 0)
            }
            var r = this.length - e;
            if ((void 0 === n || n > r) && (n = r),
            t.length > 0 && (n < 0 || e < 0) || e > this.length)
                throw new RangeError("Attempt to write outside buffer bounds");
            i || (i = "utf8");
            for (var o = !1; ; )
                switch (i) {
                case "hex":
                    return b(this, t, e, n);
                case "utf8":
                case "utf-8":
                    return w(this, t, e, n);
                case "ascii":
                    return S(this, t, e, n);
                case "latin1":
                case "binary":
                    return x(this, t, e, n);
                case "base64":
                    return M(this, t, e, n);
                case "ucs2":
                case "ucs-2":
                case "utf16le":
                case "utf-16le":
                    return E(this, t, e, n);
                default:
                    if (o)
                        throw new TypeError("Unknown encoding: " + i);
                    i = ("" + i).toLowerCase(),
                    o = !0
                }
        }
        ,
        c.prototype.toJSON = function() {
            return {
                type: "Buffer",
                data: Array.prototype.slice.call(this._arr || this, 0)
            }
        }
        ;
        function T(t, e, n) {
            var i = "";
            n = Math.min(t.length, n);
            for (var r = e; r < n; ++r)
                i += String.fromCharCode(127 & t[r]);
            return i
        }
        function O(t, e, n) {
            var i = "";
            n = Math.min(t.length, n);
            for (var r = e; r < n; ++r)
                i += String.fromCharCode(t[r]);
            return i
        }
        function _(t, e, n) {
            var i = t.length;
            (!e || e < 0) && (e = 0),
            (!n || n < 0 || n > i) && (n = i);
            for (var r = "", o = e; o < n; ++o)
                r += F(t[o]);
            return r
        }
        function P(t, e, n) {
            for (var i = t.slice(e, n), r = "", o = 0; o < i.length; o += 2)
                r += String.fromCharCode(i[o] + 256 * i[o + 1]);
            return r
        }
        function I(t, e, n) {
            if (t % 1 != 0 || t < 0)
                throw new RangeError("offset is not uint");
            if (t + e > n)
                throw new RangeError("Trying to access beyond buffer length")
        }
        function k(t, e, n, i, r, o) {
            if (!c.isBuffer(t))
                throw new TypeError('"buffer" argument must be a Buffer instance');
            if (e > r || e < o)
                throw new RangeError('"value" argument is out of bounds');
            if (n + i > t.length)
                throw new RangeError("Index out of range")
        }
        function D(t, e, n, i) {
            e < 0 && (e = 65535 + e + 1);
            for (var r = 0, o = Math.min(t.length - n, 2); r < o; ++r)
                t[n + r] = (e & 255 << 8 * (i ? r : 1 - r)) >>> 8 * (i ? r : 1 - r)
        }
        function R(t, e, n, i) {
            e < 0 && (e = 4294967295 + e + 1);
            for (var r = 0, o = Math.min(t.length - n, 4); r < o; ++r)
                t[n + r] = e >>> 8 * (i ? r : 3 - r) & 255
        }
        function L(t, e, n, i, r, o) {
            if (n + i > t.length)
                throw new RangeError("Index out of range");
            if (n < 0)
                throw new RangeError("Index out of range")
        }
        function N(t, e, n, i, o) {
            return o || L(t, 0, n, 4),
            r.write(t, e, n, i, 23, 4),
            n + 4
        }
        function j(t, e, n, i, o) {
            return o || L(t, 0, n, 8),
            r.write(t, e, n, i, 52, 8),
            n + 8
        }
        c.prototype.slice = function(t, e) {
            var n, i = this.length;
            if ((t = ~~t) < 0 ? (t += i) < 0 && (t = 0) : t > i && (t = i),
            (e = void 0 === e ? i : ~~e) < 0 ? (e += i) < 0 && (e = 0) : e > i && (e = i),
            e < t && (e = t),
            c.TYPED_ARRAY_SUPPORT)
                (n = this.subarray(t, e)).__proto__ = c.prototype;
            else {
                var r = e - t;
                n = new c(r,void 0);
                for (var o = 0; o < r; ++o)
                    n[o] = this[o + t]
            }
            return n
        }
        ,
        c.prototype.readUIntLE = function(t, e, n) {
            t |= 0,
            e |= 0,
            n || I(t, e, this.length);
            for (var i = this[t], r = 1, o = 0; ++o < e && (r *= 256); )
                i += this[t + o] * r;
            return i
        }
        ,
        c.prototype.readUIntBE = function(t, e, n) {
            t |= 0,
            e |= 0,
            n || I(t, e, this.length);
            for (var i = this[t + --e], r = 1; e > 0 && (r *= 256); )
                i += this[t + --e] * r;
            return i
        }
        ,
        c.prototype.readUInt8 = function(t, e) {
            return e || I(t, 1, this.length),
            this[t]
        }
        ,
        c.prototype.readUInt16LE = function(t, e) {
            return e || I(t, 2, this.length),
            this[t] | this[t + 1] << 8
        }
        ,
        c.prototype.readUInt16BE = function(t, e) {
            return e || I(t, 2, this.length),
            this[t] << 8 | this[t + 1]
        }
        ,
        c.prototype.readUInt32LE = function(t, e) {
            return e || I(t, 4, this.length),
            (this[t] | this[t + 1] << 8 | this[t + 2] << 16) + 16777216 * this[t + 3]
        }
        ,
        c.prototype.readUInt32BE = function(t, e) {
            return e || I(t, 4, this.length),
            16777216 * this[t] + (this[t + 1] << 16 | this[t + 2] << 8 | this[t + 3])
        }
        ,
        c.prototype.readIntLE = function(t, e, n) {
            t |= 0,
            e |= 0,
            n || I(t, e, this.length);
            for (var i = this[t], r = 1, o = 0; ++o < e && (r *= 256); )
                i += this[t + o] * r;
            return i >= (r *= 128) && (i -= Math.pow(2, 8 * e)),
            i
        }
        ,
        c.prototype.readIntBE = function(t, e, n) {
            t |= 0,
            e |= 0,
            n || I(t, e, this.length);
            for (var i = e, r = 1, o = this[t + --i]; i > 0 && (r *= 256); )
                o += this[t + --i] * r;
            return o >= (r *= 128) && (o -= Math.pow(2, 8 * e)),
            o
        }
        ,
        c.prototype.readInt8 = function(t, e) {
            return e || I(t, 1, this.length),
            128 & this[t] ? -1 * (255 - this[t] + 1) : this[t]
        }
        ,
        c.prototype.readInt16LE = function(t, e) {
            e || I(t, 2, this.length);
            var n = this[t] | this[t + 1] << 8;
            return 32768 & n ? 4294901760 | n : n
        }
        ,
        c.prototype.readInt16BE = function(t, e) {
            e || I(t, 2, this.length);
            var n = this[t + 1] | this[t] << 8;
            return 32768 & n ? 4294901760 | n : n
        }
        ,
        c.prototype.readInt32LE = function(t, e) {
            return e || I(t, 4, this.length),
            this[t] | this[t + 1] << 8 | this[t + 2] << 16 | this[t + 3] << 24
        }
        ,
        c.prototype.readInt32BE = function(t, e) {
            return e || I(t, 4, this.length),
            this[t] << 24 | this[t + 1] << 16 | this[t + 2] << 8 | this[t + 3]
        }
        ,
        c.prototype.readFloatLE = function(t, e) {
            return e || I(t, 4, this.length),
            r.read(this, t, !0, 23, 4)
        }
        ,
        c.prototype.readFloatBE = function(t, e) {
            return e || I(t, 4, this.length),
            r.read(this, t, !1, 23, 4)
        }
        ,
        c.prototype.readDoubleLE = function(t, e) {
            return e || I(t, 8, this.length),
            r.read(this, t, !0, 52, 8)
        }
        ,
        c.prototype.readDoubleBE = function(t, e) {
            return e || I(t, 8, this.length),
            r.read(this, t, !1, 52, 8)
        }
        ,
        c.prototype.writeUIntLE = function(t, e, n, i) {
            (t = +t,
            e |= 0,
            n |= 0,
            i) || k(this, t, e, n, Math.pow(2, 8 * n) - 1, 0);
            var r = 1
              , o = 0;
            for (this[e] = 255 & t; ++o < n && (r *= 256); )
                this[e + o] = t / r & 255;
            return e + n
        }
        ,
        c.prototype.writeUIntBE = function(t, e, n, i) {
            (t = +t,
            e |= 0,
            n |= 0,
            i) || k(this, t, e, n, Math.pow(2, 8 * n) - 1, 0);
            var r = n - 1
              , o = 1;
            for (this[e + r] = 255 & t; --r >= 0 && (o *= 256); )
                this[e + r] = t / o & 255;
            return e + n
        }
        ,
        c.prototype.writeUInt8 = function(t, e, n) {
            return t = +t,
            e |= 0,
            n || k(this, t, e, 1, 255, 0),
            c.TYPED_ARRAY_SUPPORT || (t = Math.floor(t)),
            this[e] = 255 & t,
            e + 1
        }
        ,
        c.prototype.writeUInt16LE = function(t, e, n) {
            return t = +t,
            e |= 0,
            n || k(this, t, e, 2, 65535, 0),
            c.TYPED_ARRAY_SUPPORT ? (this[e] = 255 & t,
            this[e + 1] = t >>> 8) : D(this, t, e, !0),
            e + 2
        }
        ,
        c.prototype.writeUInt16BE = function(t, e, n) {
            return t = +t,
            e |= 0,
            n || k(this, t, e, 2, 65535, 0),
            c.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 8,
            this[e + 1] = 255 & t) : D(this, t, e, !1),
            e + 2
        }
        ,
        c.prototype.writeUInt32LE = function(t, e, n) {
            return t = +t,
            e |= 0,
            n || k(this, t, e, 4, 4294967295, 0),
            c.TYPED_ARRAY_SUPPORT ? (this[e + 3] = t >>> 24,
            this[e + 2] = t >>> 16,
            this[e + 1] = t >>> 8,
            this[e] = 255 & t) : R(this, t, e, !0),
            e + 4
        }
        ,
        c.prototype.writeUInt32BE = function(t, e, n) {
            return t = +t,
            e |= 0,
            n || k(this, t, e, 4, 4294967295, 0),
            c.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 24,
            this[e + 1] = t >>> 16,
            this[e + 2] = t >>> 8,
            this[e + 3] = 255 & t) : R(this, t, e, !1),
            e + 4
        }
        ,
        c.prototype.writeIntLE = function(t, e, n, i) {
            if (t = +t,
            e |= 0,
            !i) {
                var r = Math.pow(2, 8 * n - 1);
                k(this, t, e, n, r - 1, -r)
            }
            var o = 0
              , a = 1
              , s = 0;
            for (this[e] = 255 & t; ++o < n && (a *= 256); )
                t < 0 && 0 === s && 0 !== this[e + o - 1] && (s = 1),
                this[e + o] = (t / a >> 0) - s & 255;
            return e + n
        }
        ,
        c.prototype.writeIntBE = function(t, e, n, i) {
            if (t = +t,
            e |= 0,
            !i) {
                var r = Math.pow(2, 8 * n - 1);
                k(this, t, e, n, r - 1, -r)
            }
            var o = n - 1
              , a = 1
              , s = 0;
            for (this[e + o] = 255 & t; --o >= 0 && (a *= 256); )
                t < 0 && 0 === s && 0 !== this[e + o + 1] && (s = 1),
                this[e + o] = (t / a >> 0) - s & 255;
            return e + n
        }
        ,
        c.prototype.writeInt8 = function(t, e, n) {
            return t = +t,
            e |= 0,
            n || k(this, t, e, 1, 127, -128),
            c.TYPED_ARRAY_SUPPORT || (t = Math.floor(t)),
            t < 0 && (t = 255 + t + 1),
            this[e] = 255 & t,
            e + 1
        }
        ,
        c.prototype.writeInt16LE = function(t, e, n) {
            return t = +t,
            e |= 0,
            n || k(this, t, e, 2, 32767, -32768),
            c.TYPED_ARRAY_SUPPORT ? (this[e] = 255 & t,
            this[e + 1] = t >>> 8) : D(this, t, e, !0),
            e + 2
        }
        ,
        c.prototype.writeInt16BE = function(t, e, n) {
            return t = +t,
            e |= 0,
            n || k(this, t, e, 2, 32767, -32768),
            c.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 8,
            this[e + 1] = 255 & t) : D(this, t, e, !1),
            e + 2
        }
        ,
        c.prototype.writeInt32LE = function(t, e, n) {
            return t = +t,
            e |= 0,
            n || k(this, t, e, 4, 2147483647, -2147483648),
            c.TYPED_ARRAY_SUPPORT ? (this[e] = 255 & t,
            this[e + 1] = t >>> 8,
            this[e + 2] = t >>> 16,
            this[e + 3] = t >>> 24) : R(this, t, e, !0),
            e + 4
        }
        ,
        c.prototype.writeInt32BE = function(t, e, n) {
            return t = +t,
            e |= 0,
            n || k(this, t, e, 4, 2147483647, -2147483648),
            t < 0 && (t = 4294967295 + t + 1),
            c.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 24,
            this[e + 1] = t >>> 16,
            this[e + 2] = t >>> 8,
            this[e + 3] = 255 & t) : R(this, t, e, !1),
            e + 4
        }
        ,
        c.prototype.writeFloatLE = function(t, e, n) {
            return N(this, t, e, !0, n)
        }
        ,
        c.prototype.writeFloatBE = function(t, e, n) {
            return N(this, t, e, !1, n)
        }
        ,
        c.prototype.writeDoubleLE = function(t, e, n) {
            return j(this, t, e, !0, n)
        }
        ,
        c.prototype.writeDoubleBE = function(t, e, n) {
            return j(this, t, e, !1, n)
        }
        ,
        c.prototype.copy = function(t, e, n, i) {
            if (n || (n = 0),
            i || 0 === i || (i = this.length),
            e >= t.length && (e = t.length),
            e || (e = 0),
            i > 0 && i < n && (i = n),
            i === n)
                return 0;
            if (0 === t.length || 0 === this.length)
                return 0;
            if (e < 0)
                throw new RangeError("targetStart out of bounds");
            if (n < 0 || n >= this.length)
                throw new RangeError("sourceStart out of bounds");
            if (i < 0)
                throw new RangeError("sourceEnd out of bounds");
            i > this.length && (i = this.length),
            t.length - e < i - n && (i = t.length - e + n);
            var r, o = i - n;
            if (this === t && n < e && e < i)
                for (r = o - 1; r >= 0; --r)
                    t[r + e] = this[r + n];
            else if (o < 1e3 || !c.TYPED_ARRAY_SUPPORT)
                for (r = 0; r < o; ++r)
                    t[r + e] = this[r + n];
            else
                Uint8Array.prototype.set.call(t, this.subarray(n, n + o), e);
            return o
        }
        ,
        c.prototype.fill = function(t, e, n, i) {
            if ("string" == typeof t) {
                if ("string" == typeof e ? (i = e,
                e = 0,
                n = this.length) : "string" == typeof n && (i = n,
                n = this.length),
                1 === t.length) {
                    var r = t.charCodeAt(0);
                    r < 256 && (t = r)
                }
                if (void 0 !== i && "string" != typeof i)
                    throw new TypeError("encoding must be a string");
                if ("string" == typeof i && !c.isEncoding(i))
                    throw new TypeError("Unknown encoding: " + i)
            } else
                "number" == typeof t && (t &= 255);
            if (e < 0 || this.length < e || this.length < n)
                throw new RangeError("Out of range index");
            if (n <= e)
                return this;
            var o;
            if (e >>>= 0,
            n = void 0 === n ? this.length : n >>> 0,
            t || (t = 0),
            "number" == typeof t)
                for (o = e; o < n; ++o)
                    this[o] = t;
            else {
                var a = c.isBuffer(t) ? t : U(new c(t,i).toString())
                  , s = a.length;
                for (o = 0; o < n - e; ++o)
                    this[o + e] = a[o % s]
            }
            return this
        }
        ;
        var V = /[^+\/0-9A-Za-z-_]/g;
        function F(t) {
            return t < 16 ? "0" + t.toString(16) : t.toString(16)
        }
        function U(t, e) {
            var n;
            e = e || 1 / 0;
            for (var i = t.length, r = null, o = [], a = 0; a < i; ++a) {
                if ((n = t.charCodeAt(a)) > 55295 && n < 57344) {
                    if (!r) {
                        if (n > 56319) {
                            (e -= 3) > -1 && o.push(239, 191, 189);
                            continue
                        }
                        if (a + 1 === i) {
                            (e -= 3) > -1 && o.push(239, 191, 189);
                            continue
                        }
                        r = n;
                        continue
                    }
                    if (n < 56320) {
                        (e -= 3) > -1 && o.push(239, 191, 189),
                        r = n;
                        continue
                    }
                    n = 65536 + (r - 55296 << 10 | n - 56320)
                } else
                    r && (e -= 3) > -1 && o.push(239, 191, 189);
                if (r = null,
                n < 128) {
                    if ((e -= 1) < 0)
                        break;
                    o.push(n)
                } else if (n < 2048) {
                    if ((e -= 2) < 0)
                        break;
                    o.push(n >> 6 | 192, 63 & n | 128)
                } else if (n < 65536) {
                    if ((e -= 3) < 0)
                        break;
                    o.push(n >> 12 | 224, n >> 6 & 63 | 128, 63 & n | 128)
                } else {
                    if (!(n < 1114112))
                        throw new Error("Invalid code point");
                    if ((e -= 4) < 0)
                        break;
                    o.push(n >> 18 | 240, n >> 12 & 63 | 128, n >> 6 & 63 | 128, 63 & n | 128)
                }
            }
            return o
        }
        function B(t) {
            return i.toByteArray(function(t) {
                if ((t = function(t) {
                    return t.trim ? t.trim() : t.replace(/^\s+|\s+$/g, "")
                }(t).replace(V, "")).length < 2)
                    return "";
                for (; t.length % 4 != 0; )
                    t += "=";
                return t
            }(t))
        }
        function z(t, e, n, i) {
            for (var r = 0; r < i && !(r + n >= e.length || r >= t.length); ++r)
                e[r + n] = t[r];
            return r
        }
    }
    ).call(this, n(213))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.START = "start",
        t.END = "end"
    }(e.RoutePoint || (e.RoutePoint = {}))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t(t) {
            this.viewport = t
        }
        return t.prototype.dragStart = function(t) {
            return !1
        }
        ,
        t.prototype.dragEnd = function() {
            return !0
        }
        ,
        t.prototype.applyKeyboardInput = function() {
            return !1
        }
        ,
        t
    }();
    e.CameraController = i
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var i = n(144)
          , r = function() {
            function e() {}
            return e.prototype.promptOnUnsavedChanges = function(e) {
                var n = this;
                return this.modalDeferred = new i.Deferred,
                this.hasChanges() ? (t(e).modal("show"),
                t(e).one("hidden.bs.modal", (function() {
                    n.modalDeferred.reject()
                }
                )),
                this.modalDeferred.promise) : (this.modalDeferred.resolve(),
                this.modalDeferred.promise)
            }
            ,
            e
        }();
        e.SaveDiscardDialogService = r
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(4)
      , r = n(554)
      , o = n(113);
    function a(t, e) {
        return t.location.x === e.location.x && t.location.y === e.location.y && t.location.z !== e.location.z
    }
    e.DEFAULT_ICON_SIZE = .5,
    e.MAXIMUM_RENDERING_DISTANCE = 13,
    e.INACTIVE_FLOOR_ICON_OPACITY = .5,
    e.createIcon = function(t, n, r) {
        var o = r || e.DEFAULT_ICON_SIZE
          , a = new i.PlaneGeometry(o,o)
          , s = new i.Mesh(a,t);
        return s.position.copy(n),
        s.position.z += .1,
        s
    }
    ,
    e.orientIcons = function(t) {
        for (var e = 0; e < t.length - 1; e++) {
            var n = t[e]
              , i = t[e + 1].position.clone().sub(n.position);
            n.rotation.z = -Math.PI / 2 + Math.atan2(i.y, i.x)
        }
    }
    ,
    e.isProjection = a,
    e.sanitizeRoute = function(t) {
        for (var e = 0, n = t; e < n.length; e++) {
            var i = n[e];
            void 0 !== i.instruction && void 0 !== i.instruction.fromSiteModelEntityId && void 0 !== i.instruction.toSiteModelEntityId && i.instruction.fromSiteModelEntityId === i.instruction.toSiteModelEntityId && (i.instruction = void 0)
        }
        var s = t[0]
          , c = t[1];
        a(s, c) && (void 0 === c.instruction && (c.instruction = new r.InstructionEntity),
        c.instruction.type = o.InstructionType.SOURCE_PROJECTION);
        var l = t[t.length - 2];
        a(l, t[t.length - 1]) && (void 0 === l.instruction && (l.instruction = new r.InstructionEntity),
        l.instruction.type = o.InstructionType.DESTINATION_PROJECTION)
    }
    ,
    e.interpolatePoints = function(t, n, i) {
        for (var r, o = [], a = 0, s = 0; s < t.length - 1; s++) {
            var c = t[s]
              , l = t[s + 1]
              , u = l.clone().setZ(c.z)
              , d = c.distanceTo(u)
              , p = a > 0 ? Math.abs(n - a) : 0;
            if (d <= p && s < t.length - 2)
                a += d;
            else {
                for (var h = Math.floor((d - p) / n), f = [], m = s + 2 === t.length ? 1 : 0, g = 0; g <= h + m; g++) {
                    var v = g * n + p;
                    if (!(i && d - v < e.DEFAULT_ICON_SIZE && g < h + m)) {
                        var y = v / d
                          , b = c.clone().lerp(u, y)
                          , w = c.clone().lerp(l, y);
                        if (w.setX(b.x),
                        w.setY(b.y),
                        r) {
                            r.setZ(b.z);
                            for (var S = r.distanceTo(b), x = 0, M = 0; S < n; ) {
                                var E = y + (M = .1 * ++x * n) / d;
                                b = c.clone().lerp(u, E),
                                (w = c.clone().lerp(l, E)).setX(b.x),
                                w.setY(b.y),
                                S = r.distanceTo(b)
                            }
                            M > 0 && (p += M,
                            h = Math.floor((d - p) / n))
                        }
                        f.push(w),
                        g === h && (a = b.distanceTo(u))
                    }
                }
                0 !== f.length ? r = (o = o.concat(f))[o.length - 1].clone() : a += d
            }
        }
        return o
    }
    ,
    e.isPositionInSight = function(t, n) {
        return t.distanceTo(n) < e.MAXIMUM_RENDERING_DISTANCE
    }
    ,
    e.computePathLength = function(t) {
        if (!t)
            return 0;
        for (var e = 0, n = 0; n < t.length - 1; n++) {
            var i = t[n]
              , r = t[n + 1];
            e += i.distanceTo(r)
        }
        return e
    }
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o, a = n(4), s = n(212), c = n(20), l = n(157), u = n(52), d = n(80), p = (n(24),
    n(49),
    n(266),
    n(2)), h = n(7), f = n(6), m = n(0), g = n(257), v = n(67), y = (n(66),
    n(0)), b = n(24), w = n(49), S = n(266), x = n(66);
    !function(t) {
        t.EAST_WEST_VIEW = "SV1",
        t.NORTH_SOUTH_VIEW = "SV2",
        t.PERSPECTIVE = "DC",
        t.TOP_VIEW_LEFT = "TV2",
        t.TOP_VIEW_RIGHT = "TV1"
    }(o || (o = {}));
    var M = function(t) {
        function e(e, n, i) {
            var r = t.call(this, e, n) || this;
            return r.factory = i,
            r.alignmentHelpers = {},
            r.ORIGIN = new a.Vector3(0,0,0),
            r.X_NEG = new a.Vector3(-1,0,0),
            r.Y = new a.Vector3(0,1,0),
            r.Y_NEG = new a.Vector3(0,-1,0),
            r.Z = new a.Vector3(0,0,1),
            r.Z_NEG = new a.Vector3(0,0,-1),
            r.globalGroundInLocal = new a.Vector3,
            r.groundLevelHelperMaterial = new g.MeshLineMaterial({
                color: new a.Color("#686b6e"),
                transparent: !0,
                lineWidth: .005,
                opacity: .8,
                sizeAttenuation: 1
            }),
            r.initialized = !1,
            r.factory.ModeService.modeChanged.connect((function() {
                (r.factory.ModeService.isDatasetAlignmentMode() || r.factory.ModeService.isSiteModelEditorMode()) && (r.initialized || r.initObjects())
            }
            )),
            r
        }
        return r(e, t),
        e.prototype.onBeforeRenderViewport = function(t) {
            var e = this;
            this.sceneGroup.parent && (p.forEach(this.alignmentHelpers, (function(n) {
                e.setHelperSceneGroupVisibility(t, n)
            }
            )),
            p.forEach(this.alignmentHelpers, (function(t) {
                var e = t.sceneGroup;
                e.userData.raycastable = e.userData.raycastable || e.visible
            }
            )),
            this.setGroundHelperVisibility(t))
        }
        ,
        e.prototype.onBeforeRender = function() {
            p.forEach(this.alignmentHelpers, (function(t) {
                t.sceneGroup.userData.raycastable = !1
            }
            )),
            this.factory.ModeService.isDatasetAlignmentMode() || this.factory.ModeService.isSiteModelEditorMode() ? (this.sceneGroup.parent || (this.visible = !0),
            this.refreshOnChangeInViewportCameras()) : this.sceneGroup.parent && (this.visible = !1)
        }
        ,
        e.prototype.onKeyDown = function(t) {
            var e = this;
            if (!this.factory.ModeService.isDatasetAlignmentMode() && !this.factory.ModeService.isSiteModelEditorMode())
                return !1;
            switch (t.keyCode) {
            case s.KeyEvent.DOM_VK_Z:
            case s.KeyEvent.DOM_VK_Y:
                this.factory.AlignmentHelperService.helperTV.visible = !this.isHelperVisible(this.alignmentHelpers[o.TOP_VIEW_RIGHT]);
                break;
            case s.KeyEvent.DOM_VK_X:
                this.factory.AlignmentHelperService.helperSV2.visible = !this.isHelperVisible(this.alignmentHelpers[o.NORTH_SOUTH_VIEW]);
                break;
            case s.KeyEvent.DOM_VK_C:
                this.factory.AlignmentHelperService.helperSV1.visible = !this.isHelperVisible(this.alignmentHelpers[o.EAST_WEST_VIEW]);
                break;
            case s.KeyEvent.DOM_VK_V:
                this.factory.AlignmentHelperService.helperDefault.visible = !this.isHelperVisible(this.alignmentHelpers[o.PERSPECTIVE]);
                break;
            case s.KeyEvent.DOM_VK_B:
                this.factory.AlignmentHelperService.helperDefault.visible = this.factory.AlignmentHelperService.helperSV1.visible = this.factory.AlignmentHelperService.helperSV2.visible = this.factory.AlignmentHelperService.helperTV.visible = !h.every(this.alignmentHelpers, (function(t) {
                    return e.isHelperVisible(t)
                }
                ));
                break;
            default:
                return !1
            }
            return this.view.invalidateScene(),
            c.invalidateAngular(),
            !0
        }
        ,
        e.prototype.initObjects = function() {
            this.initHelperDict(),
            this.initHelper(o.EAST_WEST_VIEW, .5),
            this.initHelper(o.NORTH_SOUTH_VIEW, .6),
            this.initHelper(o.TOP_VIEW_RIGHT, .6),
            this.initHelper(o.TOP_VIEW_LEFT, .6),
            this.initGroundLevelHelper(),
            this.initialized = !0
        }
        ,
        e.prototype.initHelperDict = function() {
            this.alignmentHelpers[o.EAST_WEST_VIEW] = {
                name: o.EAST_WEST_VIEW,
                viewportName: u.SplitViewportName.EAST_WEST_VIEW,
                displayingViewportName: u.SplitViewportName.TOP_VIEW,
                sceneGroup: new a.Object3D
            },
            this.alignmentHelpers[o.NORTH_SOUTH_VIEW] = {
                name: o.NORTH_SOUTH_VIEW,
                viewportName: u.SplitViewportName.NORTH_SOUTH_VIEW,
                displayingViewportName: u.SplitViewportName.TOP_VIEW,
                sceneGroup: new a.Object3D
            },
            this.alignmentHelpers[o.PERSPECTIVE] = {
                name: o.PERSPECTIVE,
                viewportName: void 0,
                displayingViewportName: u.SplitViewportName.TOP_VIEW,
                sceneGroup: new a.Object3D
            },
            this.alignmentHelpers[o.TOP_VIEW_RIGHT] = {
                name: o.TOP_VIEW_RIGHT,
                viewportName: u.SplitViewportName.TOP_VIEW,
                displayingViewportName: u.SplitViewportName.EAST_WEST_VIEW,
                sceneGroup: new a.Object3D
            },
            this.alignmentHelpers[o.TOP_VIEW_LEFT] = {
                name: o.TOP_VIEW_LEFT,
                viewportName: u.SplitViewportName.TOP_VIEW,
                displayingViewportName: u.SplitViewportName.NORTH_SOUTH_VIEW,
                sceneGroup: new a.Object3D
            }
        }
        ,
        e.prototype.initGroundLevelHelper = function() {
            this.northSouthGroundLevelHelper = this.createGroundLevelHelper(new a.Vector3(-1,0,0), new a.Vector3(1,0,0)),
            this.eastWestGroundLevelHelper = this.createGroundLevelHelper(new a.Vector3(0,-1,0), new a.Vector3(0,1,0)),
            this.sceneGroup.add(this.northSouthGroundLevelHelper),
            this.sceneGroup.add(this.eastWestGroundLevelHelper)
        }
        ,
        e.prototype.createGroundLevelHelper = function(t, e) {
            var n = new a.Geometry;
            n.vertices = [t, e];
            var i = new g.MeshLine;
            return i.setGeometry(n),
            new a.Mesh(i.geometry,this.groundLevelHelperMaterial)
        }
        ,
        e.prototype.setGroundHelperVisibility = function(t) {
            var e = this.factory.ModeService.isDatasetAlignmentMode() || this.factory.ModeService.isSiteModelEditorMode();
            e && t.name === u.SplitViewportName.EAST_WEST_VIEW ? this.setGroundHelperPositionAndSize(this.eastWestGroundLevelHelper, t) : e && t.name === u.SplitViewportName.NORTH_SOUTH_VIEW ? this.setGroundHelperPositionAndSize(this.northSouthGroundLevelHelper, t) : (this.northSouthGroundLevelHelper.visible = !1,
            this.eastWestGroundLevelHelper.visible = !1)
        }
        ,
        e.prototype.setGroundHelperPositionAndSize = function(t, e) {
            t.position.set(e.camera.position.x, e.camera.position.y, this.factory.TransformService.globalToLocal.transform(this.globalGroundInLocal.set(0, 0, 0)).z),
            t.visible = !0,
            v.setMeshScreenSize(e, t, e.screenWidth)
        }
        ,
        e.prototype.initHelper = function(t, e) {
            var n = this.alignmentHelpers[t]
              , i = this.view.getViewportByName(n.viewportName)
              , r = this.defineMaterial(i.info.color, e);
            n.nfPlane = this.getRectangularMeshForNFPlane(t, r, 1, 1),
            r = this.defineMaterial(i.info.color, e - .2),
            n.cameraMesh = this.getTriangularMeshForCamera(t, r),
            n.sceneGroup.add(n.nfPlane),
            n.sceneGroup.add(n.cameraMesh),
            this.sceneGroup.add(n.sceneGroup)
        }
        ,
        e.prototype.defineMaterial = function(t, e) {
            return new a.MeshBasicMaterial({
                color: t,
                side: a.DoubleSide,
                opacity: e,
                transparent: !0,
                blending: a.AdditiveBlending,
                depthTest: !1,
                depthWrite: !1
            })
        }
        ,
        e.prototype.addCommonProperties = function(t) {
            t.userData.is2D = !0,
            t.renderOrder = 1 / 0
        }
        ,
        e.prototype.getRectangularMeshForNFPlane = function(t, e, n, i) {
            var r = new a.PlaneGeometry(n,i)
              , o = new a.Mesh(r,e);
            return this.addCommonProperties(o),
            o.name = t + " Plane",
            o
        }
        ,
        e.prototype.getTriangularMeshForCamera = function(t, e) {
            var n = new a.Geometry
              , i = new a.Vector3(10,0,0)
              , r = new a.Vector3(-10,0,0)
              , o = new a.Vector3(0,10,0);
            n.vertices.push(i),
            n.vertices.push(r),
            n.vertices.push(o),
            n.faces.push(new a.Face3(0,2,1));
            var s = new a.Mesh(n,e);
            return this.addCommonProperties(s),
            s.name = t + " Triangle",
            s
        }
        ,
        e.prototype.refreshOnChangeInViewportCameras = function() {
            var t = this;
            p.forEach(this.alignmentHelpers, (function(e) {
                e.name !== o.PERSPECTIVE && t.isHelperVisible(e) && t.positionHelper(e)
            }
            ))
        }
        ,
        e.prototype.positionHelper = function(t) {
            var e = this.view.getViewportByName(t.viewportName).camera
              , n = e.getWorldDirection(new a.Vector3)
              , i = this.view.getViewportByName(t.displayingViewportName).camera;
            this.updateHelperMatrixWorlds(t, e),
            this.scaleHelperPlane(t, e),
            this.translateHelper(t, e, i, n),
            this.orientHelper(t, i, e),
            t.cameraMesh.onMouseOver || this.setMouseInteractionCallbacks(t)
        }
        ,
        e.prototype.updateHelperMatrixWorlds = function(t, e) {
            e.updateMatrixWorld(!1),
            t.cameraMesh.updateMatrixWorld(!1),
            t.nfPlane.updateMatrixWorld(!1)
        }
        ,
        e.prototype.scaleHelperPlane = function(t, e) {
            t.nfPlane.scale.copy(this.ORIGIN).addScaledVector(this.Y, e.far - e.near).addScaledVector(this.X_NEG, e.right - e.left).addScaledVector(this.Z, 1)
        }
        ,
        e.prototype.translateHelper = function(t, e, n, i) {
            t.cameraMesh.position.setFromMatrixPosition(this.getPosInFrontOfCamera(e.matrixWorld, n.matrixWorld, n.near, n.far)),
            t.nfPlane.position.copy(t.cameraMesh.position).addScaledVector(i, e.near + (e.far - e.near) / 2)
        }
        ,
        e.prototype.getPosInFrontOfCamera = function(t, n, i, r) {
            var o = (new a.Matrix4).getInverse(n)
              , s = (new a.Matrix4).multiplyMatrices(o, t)
              , c = (new a.Vector3).setFromMatrixPosition(s)
              , l = (i + (r - i < e.INC_BIG_STEP + e.INC_SMALL_STEP ? e.INC_SMALL_STEP : e.INC_BIG_STEP) + c.z) / -1
              , u = c.addScaledVector(this.Z, l);
            return s.setPosition(u),
            (new a.Matrix4).multiplyMatrices(n, s)
        }
        ,
        e.prototype.orientHelper = function(t, e, n) {
            t.viewportName === u.SplitViewportName.TOP_VIEW ? (t.cameraMesh.quaternion.copy(e.quaternion),
            t.nfPlane.quaternion.copy(e.quaternion)) : (t.cameraMesh.quaternion.copy(n.quaternion).multiply((new a.Quaternion).setFromUnitVectors(this.Z_NEG, this.Y)),
            t.nfPlane.quaternion.copy(t.cameraMesh.quaternion))
        }
        ,
        e.prototype.setMouseInteractionCallbacks = function(t) {
            var e = this
              , n = t.cameraMesh
              , i = t.nfPlane;
            n.onMouseOver = function() {
                return e.getOnMouseOver(t)
            }
            ,
            n.onMouseOut = function() {
                return e.getOnMouseOut(t)
            }
            ,
            n.onMouseWheel = function(n, i) {
                return e.getOnMouseWheel(i, t)
            }
            ,
            n.onDragStart = function(t, n) {
                return e.getOnDragStart(t, n)
            }
            ,
            n.onDrag = function(n, i) {
                return e.getOnDrag(n, i, t)
            }
            ,
            i.onMouseOver = n.onMouseOver,
            i.onMouseOut = n.onMouseOut,
            i.onDragStart = n.onDragStart,
            i.onDrag = n.onDrag,
            i.onMouseWheel = n.onMouseWheel
        }
        ,
        e.prototype.getOnMouseOver = function(t) {
            var n = this.view.getViewportByName(t.viewportName);
            return n.bgColor === e.BACKGROUND_COLOR_DEFAULT && (n.bgColor = e.BACKGROUND_COLOR_HIGHLIGHT,
            this.view.invalidateScene(),
            !0)
        }
        ,
        e.prototype.getOnMouseOut = function(t) {
            var n = this.view.getViewportByName(t.viewportName);
            n && n.bgColor !== e.BACKGROUND_COLOR_DEFAULT && (n.bgColor = e.BACKGROUND_COLOR_DEFAULT,
            this.view.invalidateScene())
        }
        ,
        e.prototype.getOnMouseWheel = function(t, e) {
            var n = this.view.getViewportByName(e.viewportName).camera;
            if (n instanceof a.OrthographicCamera) {
                var i = this.findFar(t, n)
                  , r = i - n.far;
                0 !== r && this.adjustCameraAndFarPlane(n, i, r)
            }
            return !0
        }
        ,
        e.prototype.findFar = function(t, e) {
            t = -t;
            var n = e.far - e.near;
            return t = t > 0 ? this.adjustDelta(n, t) : this.adjustDelta(n - 1, t),
            Math.max(.11, Math.min(400, e.far + t))
        }
        ,
        e.prototype.adjustDelta = function(t, n) {
            return t < e.INC_BIG_STEP ? n *= e.INC_SMALL_STEP : n *= e.INC_BIG_STEP,
            n
        }
        ,
        e.prototype.adjustCameraAndFarPlane = function(t, e, n) {
            t.far = e;
            var i = new a.Vector3;
            t.getWorldDirection(i),
            t.position.addScaledVector(i, -n / 2),
            this.view.invalidateScene()
        }
        ,
        e.prototype.getOnDragStart = function(t, e) {
            return this.dragLastPos = e.unprojectScreenCoordinates(t.x, t.y, 1),
            !0
        }
        ,
        e.prototype.getOnDrag = function(t, e, n) {
            var i = this.view.getViewportByName(n.viewportName).camera
              , r = e.unprojectScreenCoordinates(t.x, t.y, 1);
            this.view.inputHandler.isKeyPressed(s.KeyEvent.DOM_VK_SHIFT) ? this.handleDragRotate(r, n.cameraMesh, i, n.name) : this.handleDragTranslate(r, n.nfPlane, i),
            this.dragLastPos = r,
            this.view.invalidateScene()
        }
        ,
        e.prototype.handleDragTranslate = function(t, e, n) {
            var i = (new a.Vector3).subVectors(t, this.dragLastPos);
            e.position.add(i),
            n.position.add(i)
        }
        ,
        e.prototype.handleDragRotate = function(t, e, n, i) {
            var r = l.getAngleBetweenVectors(t, this.dragLastPos, e.position);
            i !== o.EAST_WEST_VIEW && i !== o.NORTH_SOUTH_VIEW || n.rotateOnAxis(this.Y_NEG, r)
        }
        ,
        e.prototype.isHelperVisible = function(t) {
            switch (t.name) {
            case o.EAST_WEST_VIEW:
                return this.factory.AlignmentHelperService.helperSV1.visible;
            case o.NORTH_SOUTH_VIEW:
                return this.factory.AlignmentHelperService.helperSV2.visible;
            case o.PERSPECTIVE:
                return this.factory.AlignmentHelperService.helperDefault.visible;
            case o.TOP_VIEW_RIGHT:
            case o.TOP_VIEW_LEFT:
                return this.factory.AlignmentHelperService.helperTV.visible;
            default:
                return !1
            }
        }
        ,
        e.prototype.setHelperSceneGroupVisibility = function(t, e) {
            var n = t.name === e.displayingViewportName
              , i = this.isHelperVisible(e);
            e.sceneGroup.visible = i && n
        }
        ,
        e.BACKGROUND_COLOR_DEFAULT = 1644825,
        e.BACKGROUND_COLOR_HIGHLIGHT = 2500134,
        e.INC_BIG_STEP = 2,
        e.INC_SMALL_STEP = .1,
        e
    }(d.SceneLayer);
    e.AlignmentHelpers = M;
    var E = function(t) {
        function e(e, n, i, r, o, a) {
            var s = t.call(this) || this;
            return s.IV = e,
            s.ModeService = n,
            s.PointCloudMenuService = i,
            s.ImageService = r,
            s.AlignmentHelperService = o,
            s.TransformService = a,
            s
        }
        return r(e, t),
        e.prototype.create = function(t, e) {
            return new M(t,e,this)
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(y.ɵɵinject("IV"),y.ɵɵinject(b.ModeService),y.ɵɵinject("PointCloudMenuService"),y.ɵɵinject(w.ImageService),y.ɵɵinject(S.AlignmentHelperService),y.ɵɵinject(x.TransformService))
        }
        ,
        e.ɵprov = y.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(d.SceneLayerFactory);
    e.AlignmentHelpersFactory = E,
    y.ɵsetClassMetadata(E, [{
        type: m.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: void 0,
            decorators: [{
                type: m.Inject,
                args: ["IV"]
            }]
        }, {
            type: b.ModeService
        }, {
            type: void 0,
            decorators: [{
                type: m.Inject,
                args: ["PointCloudMenuService"]
            }]
        }, {
            type: w.ImageService
        }, {
            type: S.AlignmentHelperService
        }, {
            type: x.TransformService
        }]
    }
    ), null),
    p.module("IVWebApp").service("AlignmentHelpersFactory", f.downgradeInjectable(E))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t[t.VIEW = 0] = "VIEW",
        t[t.SEARCH = 1] = "SEARCH",
        t[t.SITE_MODEL_DETAILS = 2] = "SITE_MODEL_DETAILS"
    }(e.PoiClickOrigin || (e.PoiClickOrigin = {}))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(4)
      , a = n(1217)
      , s = n(1219)
      , c = n(1220)
      , l = n(1221)
      , u = n(573)
      , d = function(t) {
        function e(e, n, i) {
            var r = t.call(this) || this;
            return r.view = e,
            r.onDrag = n,
            r.onDragEnd = i,
            r.axisXPositive = new o.Vector3(1,0,0),
            r.axisYPositive = new o.Vector3(0,1,0),
            r.axisZPositive = new o.Vector3(0,0,1),
            r.addBox(),
            r.addBoxFrame(),
            r.addTranslationAxis(),
            r.addDraggableCircles(),
            r.addDraggableRotationHandles(),
            r.addRotationCircle(),
            r.moveVolumeToStartingPosition(),
            r
        }
        return r(e, t),
        e.prototype.moveVolumeToStartingPosition = function() {
            this.position.add(new o.Vector3(e.VOLUME_START_POSITION_X,e.VOLUME_START_POSITION_Y,e.VOLUME_START_POSITION_Z)),
            this.updateMatrixWorld(!0)
        }
        ,
        e.prototype.addBox = function() {
            var t = new o.BoxGeometry(1,1,1)
              , n = new o.MeshBasicMaterial({
                color: e.COLOR_BLUE,
                transparent: !0,
                opacity: .25,
                depthTest: !0,
                depthWrite: !1
            })
              , i = new l.VolumeBox(this.view,t,n,this.onDrag,this.onDragEnd);
            i.name = e.BOX_NAME,
            i.scale.copy(new o.Vector3(e.VOLUME_START_SCALE_X,e.VOLUME_START_SCALE_Y,e.VOLUME_START_SCALE_Z)),
            this.add(i)
        }
        ,
        e.prototype.addBoxFrame = function() {
            var t = new o.BoxBufferGeometry(1,1,1)
              , n = new o.EdgesGeometry(t)
              , i = new o.LineBasicMaterial({
                color: e.COLOR_YELLOW
            })
              , r = new o.LineSegments(n,i);
            r.name = e.BOX_FRAME_NAME,
            r.scale.copy(this.getObjectByName(e.BOX_NAME).scale),
            this.add(r)
        }
        ,
        e.prototype.addTranslationAxis = function() {
            var t = new s.DraggableAxis(this.view,e.COLOR_RED,this.onDrag,this.onDragEnd)
              , n = new s.DraggableAxis(this.view,e.COLOR_GREEN,this.onDrag,this.onDragEnd)
              , i = new s.DraggableAxis(this.view,e.COLOR_BLUE,this.onDrag,this.onDragEnd);
            t.rotation.y = -Math.PI / 2,
            n.rotation.x = Math.PI / 2,
            t.name = e.AXIS_X,
            n.name = e.AXIS_Y,
            i.name = e.AXIS_Z,
            this.add(t),
            this.add(n),
            this.add(i)
        }
        ,
        e.prototype.addDraggableCircles = function() {
            var t = new a.DirectionalDragCircle(this.view,e.COLOR_RED,this.axisXPositive,this.onDrag,this.onDragEnd)
              , n = this.axisXPositive.clone().multiplyScalar(-1)
              , i = new a.DirectionalDragCircle(this.view,e.COLOR_RED,n,this.onDrag,this.onDragEnd)
              , r = new a.DirectionalDragCircle(this.view,e.COLOR_GREEN,this.axisYPositive,this.onDrag,this.onDragEnd)
              , s = this.axisYPositive.clone().multiplyScalar(-1)
              , c = new a.DirectionalDragCircle(this.view,e.COLOR_GREEN,s,this.onDrag,this.onDragEnd)
              , l = new a.DirectionalDragCircle(this.view,e.COLOR_BLUE,this.axisZPositive,this.onDrag,this.onDragEnd)
              , u = this.axisZPositive.clone().multiplyScalar(-1)
              , d = new a.DirectionalDragCircle(this.view,e.COLOR_BLUE,u,this.onDrag,this.onDragEnd)
              , p = new a.DirectionalDragCircle(this.view,e.COLOR_YELLOW,new o.Vector3(-1,1,0),this.onDrag,this.onDragEnd,!1)
              , h = new a.DirectionalDragCircle(this.view,e.COLOR_YELLOW,new o.Vector3(1,1,0),this.onDrag,this.onDragEnd,!1)
              , f = new a.DirectionalDragCircle(this.view,e.COLOR_YELLOW,new o.Vector3(-1,-1,0),this.onDrag,this.onDragEnd,!1)
              , m = new a.DirectionalDragCircle(this.view,e.COLOR_YELLOW,new o.Vector3(1,-1,0),this.onDrag,this.onDragEnd,!1);
            t.name = e.CIRCLE_X_POSITIVE,
            i.name = e.CIRCLE_X_NEGATIVE,
            r.name = e.CIRCLE_Y_POSITIVE,
            c.name = e.CIRCLE_Y_NEGATIVE,
            l.name = e.CIRCLE_Z_POSITIVE,
            d.name = e.CIRCLE_Z_NEGATIVE,
            p.name = e.NEGATIVE_X_POSITIVE_Y_CORNER,
            h.name = e.POSITIVE_X_POSITIVE_Y_CORNER,
            f.name = e.NEGATIVE_X_NEGATIVE_Y_CORNER,
            m.name = e.POSITIVE_X_NEGATIVE_Y_CORNER,
            this.add(t),
            this.add(i),
            this.add(r),
            this.add(c),
            this.add(l),
            this.add(d),
            this.add(p),
            this.add(h),
            this.add(f),
            this.add(m)
        }
        ,
        e.prototype.addDraggableRotationHandles = function() {
            var t = new c.DraggableRotationArc(this.view,this.axisYPositive,e.COLOR_GREEN,this.onDrag,this.onDragEnd,!1);
            t.lookAt(this.axisYPositive),
            t.rotation.z = -Math.PI / 2;
            var n = new c.DraggableRotationArc(this.view,this.axisXPositive,e.COLOR_RED,this.onDrag,this.onDragEnd,!1);
            n.lookAt(this.axisXPositive),
            n.rotation.y = -Math.PI / 2;
            var i = new c.DraggableRotationArc(this.view,this.axisZPositive,e.COLOR_BLUE,this.onDrag,this.onDragEnd,!1);
            i.lookAt(this.axisZPositive),
            t.name = e.ROTATION_ARC_X,
            n.name = e.ROTATION_ARC_Y,
            i.name = e.ROTATION_ARC_Z,
            this.add(t),
            this.add(n),
            this.add(i)
        }
        ,
        e.prototype.addRotationCircle = function() {
            var t = new u.RotationCircle(this.view,this.axisZPositive,e.COLOR_YELLOW,this.onDrag,this.onDragEnd);
            t.name = e.ROTATION_CIRCLE,
            this.add(t)
        }
        ,
        e.AXIS_X = "axis_x",
        e.AXIS_Y = "axis_y",
        e.AXIS_Z = "axis_z",
        e.ROTATION_ARC_X = "rotation_arc_x",
        e.ROTATION_ARC_Y = "rotation_arc_y",
        e.ROTATION_ARC_Z = "rotation_arc_z",
        e.CIRCLE_X_POSITIVE = "circle_x_positive",
        e.CIRCLE_X_NEGATIVE = "circle_x_negative",
        e.CIRCLE_Y_POSITIVE = "circle_y_positive",
        e.CIRCLE_Y_NEGATIVE = "circle_y_negative",
        e.CIRCLE_Z_POSITIVE = "circle_z_positive",
        e.CIRCLE_Z_NEGATIVE = "circle_z_negative",
        e.NEGATIVE_X_POSITIVE_Y_CORNER = "negative_x_positive_y_corner",
        e.POSITIVE_X_POSITIVE_Y_CORNER = "positive_x_positive_y_corner",
        e.NEGATIVE_X_NEGATIVE_Y_CORNER = "negative_x_negative_y_corner",
        e.POSITIVE_X_NEGATIVE_Y_CORNER = "positive_x_negative_y_corner",
        e.ROTATION_CIRCLE = "rotation_circle",
        e.BOX_FRAME_NAME = "box_frame",
        e.BOX_NAME = "box",
        e.VOLUME_START_SCALE_X = 10,
        e.VOLUME_START_SCALE_Y = 10,
        e.VOLUME_START_SCALE_Z = 3,
        e.COLOR_YELLOW = new o.Color(15899953),
        e.COLOR_RED = new o.Color(13632027),
        e.COLOR_BLUE = new o.Color(3381704),
        e.COLOR_GREEN = new o.Color(8832322),
        e.VOLUME_START_POSITION_X = 0,
        e.VOLUME_START_POSITION_Y = 0,
        e.VOLUME_START_POSITION_Z = 1,
        e
    }(o.Object3D);
    e.ClipVolume = d
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(184)
      , a = n(4)
      , s = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.positionOnAxis = new a.Vector3,
            e
        }
        return r(e, t),
        e.prototype.findAxisLine = function(t) {
            var e = (new a.Vector3).applyMatrix4(this.matrixWorld)
              , n = t.applyMatrix4(this.matrixWorld);
            return new a.Line3(e,n)
        }
        ,
        e.prototype.findPlaneOnTheAxis = function(t, e) {
            var n = this.axisLine.closestPointToPoint(t, !1, new a.Vector3);
            return this.distanceToCameraFromAxisLine = n.sub(t),
            (new a.Plane).setFromNormalAndCoplanarPoint(this.distanceToCameraFromAxisLine, e.start)
        }
        ,
        e.prototype.findPositionOnAxis = function(t, n) {
            var i = e.getMousePositionOnPlane(t, this.planeOnTheAxis, n);
            return this.axisLine.closestPointToPoint(i, !1, this.positionOnAxis)
        }
        ,
        e.getMousePositionOnPlane = function(t, e, n) {
            var i = n.normalizeCoordinates(t.x, t.y, 0)
              , r = new a.Raycaster;
            r.setFromCamera(i, n.camera);
            var o = new a.Vector3;
            return r.ray.intersectPlane(e, o)
        }
        ,
        e.transformDirection = function(t, e) {
            var n = new a.Vector4(t.x,t.y,t.z,0).applyMatrix4(e);
            return t.clone().set(n.x, n.y, n.z)
        }
        ,
        e
    }(o.HighlightableObject3D);
    e.DraggableObject3D = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    n(9);
    var o = n(223)
      , a = n(2)
      , s = (n(14),
    n(383))
      , c = n(6)
      , l = n(0)
      , u = n(0)
      , d = n(9)
      , p = n(14)
      , h = function(t) {
        function e(e, n) {
            var i = t.call(this, o.VectorEntityEntity, e, n) || this;
            return i.path = "vector_entities",
            i
        }
        return r(e, t),
        e.ɵfac = function(t) {
            return new (t || e)(u.ɵɵinject(d.RestService),u.ɵɵinject(p.GeoTransformationService))
        }
        ,
        e.ɵprov = u.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(s.ReferenceSystemAwareRestRepository);
    e.VectorEntityRepository = h,
    u.ɵsetClassMetadata(h, [{
        type: l.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: d.RestService
        }, {
            type: p.GeoTransformationService
        }]
    }
    ), null),
    a.module("IVWebApp").service("VectorEntityRepository", c.downgradeInjectable(h))
}
, function(t, e, n) {
    t.exports = n.p + "53567edcbcc9783a15dbbf9d01fdf97c.map_location_marker.png"
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(520)
      , r = n(20)
      , o = function() {
        function t(t) {
            var e = this;
            this.modalElement = t,
            this.modalContentShown = !1,
            t.on("show.bs.modal", (function() {
                return e.modalContentShown = !0
            }
            )),
            t.on("hidden.bs.modal", (function() {
                return e.modalContentShown = !1
            }
            ))
        }
        return t.prototype.showModal = function() {
            var t = this;
            i.stylesLoaded() ? r.invalidateAngular(this.modalContentShown ? void 0 : function() {
                return t.modalElement.modal("show")
            }
            ) : this.showModalTimer = window.setTimeout((function() {
                return t.showModal()
            }
            ), 50)
        }
        ,
        t.prototype.hideModal = function() {
            var t = this;
            window.clearTimeout(this.showModalTimer),
            r.invalidateAngular((function() {
                return t.modalElement.modal("hide")
            }
            ))
        }
        ,
        t
    }();
    e.AbstractModalController = o
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t() {}
        return t.prototype.fillFromData = function(t) {
            this.jobId = t.job_id,
            this.name = t.name,
            this.status = t.status,
            this.title = t.title,
            this.busy = t.busy,
            this.startTime = t.start_time,
            this.success = t.success,
            this.lastOutput = t.last_output,
            this.errors = t.errors,
            this.outputFile = t.output_file,
            t.output && (this.output = t.output)
        }
        ,
        t.prototype.processingToolFailed = function() {
            return this.status > 0
        }
        ,
        t.prototype.processingToolOutOfMemory = function() {
            return this.status === t.FATAL_ERROR_OFFSET + t.SIGABRT || this.status === t.FATAL_ERROR_OFFSET + t.SIGKILL
        }
        ,
        t.SIGABRT = 6,
        t.SIGKILL = 9,
        t.FATAL_ERROR_OFFSET = 128,
        t
    }();
    e.Job = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(9),
    n(432))
      , o = n(1588)
      , a = n(1589);
    n(204),
    n(188);
    n(188);
    var s = n(6)
      , c = n(0)
      , l = n(0)
      , u = n(9)
      , d = n(204)
      , p = n(188)
      , h = function() {
        function t(t, e, n) {
            this.RestService = t,
            this.UploadService = e,
            this.JobService = n,
            this.basePath = "data_management"
        }
        return t.prototype.getBundlesOnDisk = function() {
            return this.RestService.getApi(this.basePath + "/bundles", {}).then((function(t) {
                return t.map((function(t) {
                    return new a.BundleOnDisk(t)
                }
                ))
            }
            ))
        }
        ,
        t.prototype.getDatasetsOnDisk = function() {
            return this.RestService.getApi(this.basePath + "/datasets", {}).then((function(t) {
                return t.map((function(t) {
                    return new a.DatasetOnDisk(t)
                }
                ))
            }
            ))
        }
        ,
        t.prototype.importBundle = function(t) {
            return this.RestService.postApi(this.basePath + "/bundles/import/job", (new r.BundleManagementRequest).setBundleFileName(t).toData())
        }
        ,
        t.prototype.unloadBundle = function(t) {
            return this.RestService.postApi(this.basePath + "/bundles/unload", (new r.BundleManagementRequest).setBundleSerial(t).toData())
        }
        ,
        t.prototype.convertBundle = function(t) {
            return this.RestService.postApi(this.basePath + "/bundles/convert", (new r.BundleManagementRequest).setBundleFileName(t).toData())
        }
        ,
        t.prototype.importDataset = function(t, e, n, i) {
            return this.RestService.postApi(this.basePath + "/datasets/import", new o.DatasetManagementImportRequest(t,e,n,i).toData())
        }
        ,
        t.prototype.unloadDataset = function(t) {
            return this.RestService.postApi(this.basePath + "/datasets/unload", new o.DatasetManagementRequest(t).toData())
        }
        ,
        t.prototype.downloadMaps = function(t) {
            var e = this.basePath + "/bundle/" + t.id.toString() + "/maps/download";
            this.RestService.directDownload(e, {})
        }
        ,
        t.prototype.importMaps = function(t) {
            return this.RestService.postApi(this.basePath + "/bundles/maps/import", (new r.BundleManagementRequest).setBundleFileName(t).toData())
        }
        ,
        t.prototype.unloadMaps = function(t) {
            return this.RestService.postApi(this.basePath + "/bundles/maps/unload", (new r.BundleManagementRequest).setBundleSerial(t).toData())
        }
        ,
        t.prototype.importNavgraph = function(t) {
            return this.RestService.postApi(this.basePath + "/bundles/navgraph/import/job", (new r.BundleManagementRequest).setBundleFileName(t).toData())
        }
        ,
        t.prototype.unloadNavgraph = function(t) {
            return this.RestService.postApi(this.basePath + "/bundles/navgraph/unload", (new r.BundleManagementRequest).setBundleSerial(t).toData())
        }
        ,
        t.prototype.importWifi = function(t) {
            return this.RestService.postApi(this.basePath + "/bundles/wifi/import/job", (new r.BundleManagementRequest).setBundleFileName(t).toData())
        }
        ,
        t.prototype.unloadWifi = function(t) {
            return this.RestService.postApi(this.basePath + "/bundles/wifi/unload", (new r.BundleManagementRequest).setBundleSerial(t).toData())
        }
        ,
        t.prototype.removeDatasetFromDisk = function(t) {
            return this.RestService.deleteApi(this.basePath + "/datasets/files/" + t)
        }
        ,
        t.prototype.removeBundleFromDisk = function(t) {
            return this.RestService.postApi(this.basePath + "/bundles/delete_files", (new r.BundleManagementRequest).setBundleFileName(t.file).setBundleSerial(t.serial).toData())
        }
        ,
        t.prototype.deleteVisualIndex = function(t) {
            var e = this.basePath + "/bundle/" + t.id.toString() + "/visual_index";
            return this.RestService.deleteApi(e)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(l.ɵɵinject(u.RestService),l.ɵɵinject(d.UploadService),l.ɵɵinject(p.JobService))
        }
        ,
        t.ɵprov = l.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.DataManagementService = h,
    l.ɵsetClassMetadata(h, [{
        type: c.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: u.RestService
        }, {
            type: d.UploadService
        }, {
            type: p.JobService
        }]
    }
    ), null),
    i.module("IVWebApp").service("DataManagementService", s.downgradeInjectable(h))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(9),
    n(432))
      , o = n(1590)
      , a = n(6)
      , s = n(0)
      , c = n(0)
      , l = n(9)
      , u = function() {
        function t(t) {
            this.RestService = t,
            this.basePath = "data_generation"
        }
        return t.prototype.createMapsAndNavgraph = function(t, e) {
            var n = new o.MapAndNavgraphGenerationRequest(t);
            return n.setColoredMap(e),
            this.RestService.postApi(this.basePath + "/create", n.toData())
        }
        ,
        t.prototype.createFloorMaps = function(t, e) {
            var n = new o.MapAndNavgraphGenerationRequest(t);
            return n.setColoredMap(e),
            this.RestService.postApi(this.basePath + "/maps/create_floor_maps", n.toData())
        }
        ,
        t.prototype.createMaps = function(t, e) {
            var n = new o.MapAndNavgraphGenerationRequest(t);
            return n.setColoredMap(e),
            this.RestService.postApi(this.basePath + "/maps/create", n.toData())
        }
        ,
        t.prototype.createNavgraph = function(t) {
            return this.RestService.postApi(this.basePath + "/navgraph/create", (new r.BundleManagementRequest).setBundleFileName(t).toData())
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(c.ɵɵinject(l.RestService))
        }
        ,
        t.ɵprov = c.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.DataGenerationService = u,
    c.ɵsetClassMetadata(u, [{
        type: s.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: l.RestService
        }]
    }
    ), null),
    i.module("IVWebApp").service("DataGenerationService", a.downgradeInjectable(u))
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , r = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2);
    n(618);
    var a = n(20)
      , s = n(327)
      , c = n(21)
      , l = function() {
        function t(t, e, n, i, r) {
            this.JobListService = t,
            this.FlowService = e,
            this.StatusCheckService = n,
            this.MessageReportingService = i,
            this.gettextCatalog = r,
            this.jobs = [],
            this.jobs = t.jobs,
            this.uniqueTemporaryName = this.createUniqueTemporaryName(),
            this.uploader = this.FlowService.getUploader(this.uniqueTemporaryName, {
                target: ""
            })
        }
        return t.prototype.createUniqueTemporaryName = function() {
            var e = t.uniqueId.toString();
            return t.uniqueId++,
            e
        }
        ,
        t.prototype.retryUpload = function(t) {
            if (t.retryEnabled)
                return this.areRetryConditionsMet(t) ? void this.resumeUpload(t) : (this.updateConditions(t),
                void this.retryInOneSecond(t))
        }
        ,
        t.prototype.updateConditions = function(t) {
            t.retryOnlineState = navigator.onLine,
            t.retryCountdown--
        }
        ,
        t.prototype.retryInOneSecond = function(t) {
            var e = this;
            setTimeout((function() {
                a.invalidateAngular(),
                e.retryUpload(t)
            }
            ), 1e3)
        }
        ,
        t.prototype.resumeUpload = function(e) {
            e.retryEnabled = !1,
            e.retryCountdown = t.RETRY_PERIOD,
            e.retry()
        }
        ,
        t.prototype.enableRetry = function(e) {
            e.percent = 0,
            e.retryEnabled = !0,
            e.retryCountdown = t.RETRY_PERIOD,
            e.retryOnlineState = navigator.onLine,
            this.retryUpload(e)
        }
        ,
        t.prototype.showError = function(t, e) {
            t.percent = 100;
            var n = JSON.parse(e);
            t.errorMessage = n.msg,
            t.retryEnabled = !1
        }
        ,
        t.prototype.areRetryConditionsMet = function(t) {
            return t.retryCountdown <= 0 || navigator.onLine && navigator.onLine !== t.retryOnlineState
        }
        ,
        t.prototype.stopRetryingMechanism = function(e) {
            e.retryEnabled = !1,
            e.retryCountdown = t.RETRY_PERIOD
        }
        ,
        t.prototype.fileProgress = function(t) {
            t.percent = 100 * t.progress(!1)
        }
        ,
        t.prototype.filesSubmitted = function(t) {
            return i(this, void 0, void 0, (function() {
                var e, n, i, o, a, s, c, l, u;
                return r(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        return [4, this.StatusCheckService.fetchServerHealth()];
                    case 1:
                        for (e = r.sent(),
                        n = 0,
                        i = 0,
                        o = t; i < o.length; i++)
                            u = o[i],
                            n += u.size;
                        if (e.components.diskSpace.details.free < n) {
                            for (a = 0,
                            s = t; a < s.length; a++)
                                (u = s[a]).cancel();
                            return this.MessageReportingService.showMessage(this.gettextCatalog.getString("Insufficient Disk Space", void 0, "title"), this.gettextCatalog.getString("The file you are trying to upload is larger than the amount of disk space available.")),
                            [2]
                        }
                        for (this.updateFlowObject(),
                        c = 0,
                        l = t; c < l.length; c++)
                            (u = l[c]).percent = 0;
                        return this.onFilePicked ? (this.pauseUploadAndCallHooks(t),
                        [2]) : (this.uploader.upload(),
                        [2])
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.pauseUploadAndCallHooks = function(t) {
            for (var e = this, n = 0, i = t; n < i.length; n++) {
                i[n].pause()
            }
            this.onFilePicked({
                files: t
            }).then((function() {
                for (var n = 0, i = t; n < i.length; n++) {
                    i[n].resume()
                }
                e.uploader.upload()
            }
            )).catch((function() {
                for (var e = 0, n = t; e < n.length; e++) {
                    n[e].cancel()
                }
            }
            ))
        }
        ,
        t.prototype.updateFlowObject = function() {
            this.uploader.opts.target = this.targetUrl,
            this.FlowService.setUploader(this.targetUrl, this.uploader),
            this.FlowService.deleteUploader(this.uniqueTemporaryName)
        }
        ,
        t.prototype.uploadError = function(t, e) {
            this.onUploadError && this.onUploadError({
                file: t,
                response: e
            }),
            e ? this.showError(t, e) : t.retryEnabled || this.enableRetry(t)
        }
        ,
        t.prototype.uploadSuccess = function(t, e) {
            if (this.onUploadSuccess && this.onUploadSuccess({
                file: t,
                response: e
            }),
            e) {
                var n = o.fromJson(e).job_id;
                t.jobId = n,
                this.jobs[n] = new s.Job,
                this.jobs[n].busy = !0
            }
            c.TrackingService.trackFileUploaded(t),
            this.stopRetryingMechanism(t)
        }
        ,
        t.RETRY_PERIOD = 60,
        t.uniqueId = 0,
        t
    }();
    e.AbstractUploadController = l
}
, function(t, e, n) {
    "use strict";
    n.d(e, "b", (function() {
        return d
    }
    )),
    n.d(e, "a", (function() {
        return p
    }
    ));
    var i = n(1)
      , r = 1
      , o = function() {
        return Promise.resolve()
    }()
      , a = {};
    function s(t) {
        return t in a && (delete a[t],
        !0)
    }
    var c = function(t) {
        var e = r++;
        return a[e] = !0,
        o.then((function() {
            return s(e) && t()
        }
        )),
        e
    }
      , l = function(t) {
        s(t)
    }
      , u = function(t) {
        function e(e, n) {
            var i = t.call(this, e, n) || this;
            return i.scheduler = e,
            i.work = n,
            i
        }
        return i.c(e, t),
        e.prototype.requestAsyncId = function(e, n, i) {
            return void 0 === i && (i = 0),
            null !== i && i > 0 ? t.prototype.requestAsyncId.call(this, e, n, i) : (e.actions.push(this),
            e.scheduled || (e.scheduled = c(e.flush.bind(e, null))))
        }
        ,
        e.prototype.recycleAsyncId = function(e, n, i) {
            if (void 0 === i && (i = 0),
            null !== i && i > 0 || null === i && this.delay > 0)
                return t.prototype.recycleAsyncId.call(this, e, n, i);
            0 === e.actions.length && (l(n),
            e.scheduled = void 0)
        }
        ,
        e
    }(n(151).a)
      , d = new (function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return i.c(e, t),
        e.prototype.flush = function(t) {
            this.active = !0,
            this.scheduled = void 0;
            var e, n = this.actions, i = -1, r = n.length;
            t = t || n.shift();
            do {
                if (e = t.execute(t.state, t.delay))
                    break
            } while (++i < r && (t = n.shift()));
            if (this.active = !1,
            e) {
                for (; ++i < r && (t = n.shift()); )
                    t.unsubscribe();
                throw e
            }
        }
        ,
        e
    }(n(150).a))(u)
      , p = d
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return l
    }
    )),
    n.d(e, "b", (function() {
        return u
    }
    ));
    var i = n(1)
      , r = n(32)
      , o = n(12)
      , a = n(26)
      , s = n(33)
      , c = n(304)
      , l = function(t) {
        function e(e, n) {
            var i = t.call(this) || this;
            return i.source = e,
            i.subjectFactory = n,
            i._refCount = 0,
            i._isComplete = !1,
            i
        }
        return i.c(e, t),
        e.prototype._subscribe = function(t) {
            return this.getSubject().subscribe(t)
        }
        ,
        e.prototype.getSubject = function() {
            var t = this._subject;
            return t && !t.isStopped || (this._subject = this.subjectFactory()),
            this._subject
        }
        ,
        e.prototype.connect = function() {
            var t = this._connection;
            return t || (this._isComplete = !1,
            (t = this._connection = new s.a).add(this.source.subscribe(new d(this.getSubject(),this))),
            t.closed && (this._connection = null,
            t = s.a.EMPTY)),
            t
        }
        ,
        e.prototype.refCount = function() {
            return Object(c.a)()(this)
        }
        ,
        e
    }(o.a)
      , u = function() {
        var t = l.prototype;
        return {
            operator: {
                value: null
            },
            _refCount: {
                value: 0,
                writable: !0
            },
            _subject: {
                value: null,
                writable: !0
            },
            _connection: {
                value: null,
                writable: !0
            },
            _subscribe: {
                value: t._subscribe
            },
            _isComplete: {
                value: t._isComplete,
                writable: !0
            },
            getSubject: {
                value: t.getSubject
            },
            connect: {
                value: t.connect
            },
            refCount: {
                value: t.refCount
            }
        }
    }()
      , d = function(t) {
        function e(e, n) {
            var i = t.call(this, e) || this;
            return i.connectable = n,
            i
        }
        return i.c(e, t),
        e.prototype._error = function(e) {
            this._unsubscribe(),
            t.prototype._error.call(this, e)
        }
        ,
        e.prototype._complete = function() {
            this.connectable._isComplete = !0,
            this._unsubscribe(),
            t.prototype._complete.call(this)
        }
        ,
        e.prototype._unsubscribe = function() {
            var t = this.connectable;
            if (t) {
                this.connectable = null;
                var e = t._connection;
                t._refCount = 0,
                t._subject = null,
                t._connection = null,
                e && e.unsubscribe()
            }
        }
        ,
        e
    }(r.b);
    a.a
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return s
    }
    ));
    var i = n(12)
      , r = n(119)
      , o = n(275)
      , a = n(77);
    function s(t, e, n) {
        void 0 === t && (t = 0);
        var s = -1;
        return Object(o.a)(e) ? s = Number(e) < 1 ? 1 : Number(e) : Object(a.a)(e) && (n = e),
        Object(a.a)(n) || (n = r.a),
        new i.a((function(e) {
            var i = Object(o.a)(t) ? t : +t - n.now();
            return n.schedule(c, i, {
                index: 0,
                period: s,
                subscriber: e
            })
        }
        ))
    }
    function c(t) {
        var e = t.index
          , n = t.period
          , i = t.subscriber;
        if (i.next(e),
        !i.closed) {
            if (-1 === n)
                return i.complete();
            t.index = e + 1,
            this.schedule(t, n)
        }
    }
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return u
    }
    ));
    var i = n(12)
      , r = n(33)
      , o = n(126);
    var a = n(226)
      , s = n(116);
    var c = n(340)
      , l = n(339);
    function u(t, e) {
        if (null != t) {
            if (function(t) {
                return t && "function" == typeof t[o.a]
            }(t))
                return function(t, e) {
                    return new i.a((function(n) {
                        var i = new r.a;
                        return i.add(e.schedule((function() {
                            var r = t[o.a]();
                            i.add(r.subscribe({
                                next: function(t) {
                                    i.add(e.schedule((function() {
                                        return n.next(t)
                                    }
                                    )))
                                },
                                error: function(t) {
                                    i.add(e.schedule((function() {
                                        return n.error(t)
                                    }
                                    )))
                                },
                                complete: function() {
                                    i.add(e.schedule((function() {
                                        return n.complete()
                                    }
                                    )))
                                }
                            }))
                        }
                        ))),
                        i
                    }
                    ))
                }(t, e);
            if (Object(c.a)(t))
                return function(t, e) {
                    return new i.a((function(n) {
                        var i = new r.a;
                        return i.add(e.schedule((function() {
                            return t.then((function(t) {
                                i.add(e.schedule((function() {
                                    n.next(t),
                                    i.add(e.schedule((function() {
                                        return n.complete()
                                    }
                                    )))
                                }
                                )))
                            }
                            ), (function(t) {
                                i.add(e.schedule((function() {
                                    return n.error(t)
                                }
                                )))
                            }
                            ))
                        }
                        ))),
                        i
                    }
                    ))
                }(t, e);
            if (Object(l.a)(t))
                return Object(a.a)(t, e);
            if (function(t) {
                return t && "function" == typeof t[s.a]
            }(t) || "string" == typeof t)
                return function(t, e) {
                    if (!t)
                        throw new Error("Iterable cannot be null");
                    return new i.a((function(n) {
                        var i, o = new r.a;
                        return o.add((function() {
                            i && "function" == typeof i.return && i.return()
                        }
                        )),
                        o.add(e.schedule((function() {
                            i = t[s.a](),
                            o.add(e.schedule((function() {
                                if (!n.closed) {
                                    var t, e;
                                    try {
                                        var r = i.next();
                                        t = r.value,
                                        e = r.done
                                    } catch (t) {
                                        return void n.error(t)
                                    }
                                    e ? n.complete() : (n.next(t),
                                    this.schedule())
                                }
                            }
                            )))
                        }
                        ))),
                        o
                    }
                    ))
                }(t, e)
        }
        throw new TypeError((null !== t && typeof t || t) + " is not observable")
    }
}
, function(t, e, n) {
    "use strict";
    n.d(e, "b", (function() {
        return o
    }
    )),
    n.d(e, "a", (function() {
        return a
    }
    ));
    var i = n(1)
      , r = function(t) {
        function e(e, n) {
            var i = t.call(this, e, n) || this;
            return i.scheduler = e,
            i.work = n,
            i
        }
        return i.c(e, t),
        e.prototype.requestAsyncId = function(e, n, i) {
            return void 0 === i && (i = 0),
            null !== i && i > 0 ? t.prototype.requestAsyncId.call(this, e, n, i) : (e.actions.push(this),
            e.scheduled || (e.scheduled = requestAnimationFrame((function() {
                return e.flush(null)
            }
            ))))
        }
        ,
        e.prototype.recycleAsyncId = function(e, n, i) {
            if (void 0 === i && (i = 0),
            null !== i && i > 0 || null === i && this.delay > 0)
                return t.prototype.recycleAsyncId.call(this, e, n, i);
            0 === e.actions.length && (cancelAnimationFrame(n),
            e.scheduled = void 0)
        }
        ,
        e
    }(n(151).a)
      , o = new (function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return i.c(e, t),
        e.prototype.flush = function(t) {
            this.active = !0,
            this.scheduled = void 0;
            var e, n = this.actions, i = -1, r = n.length;
            t = t || n.shift();
            do {
                if (e = t.execute(t.state, t.delay))
                    break
            } while (++i < r && (t = n.shift()));
            if (this.active = !1,
            e) {
                for (; ++i < r && (t = n.shift()); )
                    t.unsubscribe();
                throw e
            }
        }
        ,
        e
    }(n(150).a))(r)
      , a = o
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return r
    }
    ));
    var i = n(1)
      , r = function(t) {
        function e(e, n) {
            var i = t.call(this) || this;
            return i.subject = e,
            i.subscriber = n,
            i.closed = !1,
            i
        }
        return i.c(e, t),
        e.prototype.unsubscribe = function() {
            if (!this.closed) {
                this.closed = !0;
                var t = this.subject
                  , e = t.observers;
                if (this.subject = null,
                e && 0 !== e.length && !t.isStopped && !t.closed) {
                    var n = e.indexOf(this.subscriber);
                    -1 !== n && e.splice(n, 1)
                }
            }
        }
        ,
        e
    }(n(33).a)
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return i
    }
    ));
    var i = function(t) {
        return function(e) {
            for (var n = 0, i = t.length; n < i && !e.closed; n++)
                e.next(t[n]);
            e.complete()
        }
    }
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return r
    }
    ));
    var i = n(12);
    function r(t) {
        return !!t && (t instanceof i.a || "function" == typeof t.lift && "function" == typeof t.subscribe)
    }
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return i
    }
    ));
    var i = function(t) {
        return t && "number" == typeof t.length && "function" != typeof t
    }
}
, function(t, e, n) {
    "use strict";
    function i(t) {
        return !!t && "function" != typeof t.subscribe && "function" == typeof t.then
    }
    n.d(e, "a", (function() {
        return i
    }
    ))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return a
    }
    ));
    var i = n(1)
      , r = n(79)
      , o = n(78);
    function a(t) {
        return function(e) {
            return e.lift(new s(t))
        }
    }
    var s = function() {
        function t(t) {
            this.notifier = t
        }
        return t.prototype.call = function(t, e) {
            var n = new c(t)
              , i = Object(o.a)(n, this.notifier);
            return i && !n.seenValue ? (n.add(i),
            e.subscribe(n)) : n
        }
        ,
        t
    }()
      , c = function(t) {
        function e(e) {
            var n = t.call(this, e) || this;
            return n.seenValue = !1,
            n
        }
        return i.c(e, t),
        e.prototype.notifyNext = function(t, e, n, i, r) {
            this.seenValue = !0,
            this.complete()
        }
        ,
        e.prototype.notifyComplete = function() {}
        ,
        e
    }(r.a)
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t[t.FIXED = 0] = "FIXED",
        t[t.ATTENUATED = 1] = "ATTENUATED",
        t[t.ADAPTIVE = 2] = "ADAPTIVE"
    }(e.PointSizeType || (e.PointSizeType = {}))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return u
    }
    )),
    n.d(e, "b", (function() {
        return c
    }
    )),
    n.d(e, "c", (function() {
        return d
    }
    )),
    n.d(e, "d", (function() {
        return p
    }
    )),
    n.d(e, "e", (function() {
        return l
    }
    ));
    var i = n(1)
      , r = n(338)
      , o = n(93)
      , a = n(32)
      , s = n(0)
      , c = function() {};
    function l(t) {
        return t && "function" == typeof t.connect
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var u = function(t) {
        function e(e) {
            var n = t.call(this) || this;
            return n._data = e,
            n
        }
        return Object(i.c)(e, t),
        e.prototype.connect = function() {
            return Object(r.a)(this._data) ? this._data : Object(o.a)(this._data)
        }
        ,
        e.prototype.disconnect = function() {}
        ,
        e
    }(c)
      , d = function() {
        function t(t, e, n) {
            var i = this;
            void 0 === t && (t = !1),
            void 0 === n && (n = !0),
            this._multiple = t,
            this._emitChanges = n,
            this._selection = new Set,
            this._deselectedToEmit = [],
            this._selectedToEmit = [],
            this.changed = new a.a,
            e && e.length && (t ? e.forEach((function(t) {
                return i._markSelected(t)
            }
            )) : this._markSelected(e[0]),
            this._selectedToEmit.length = 0)
        }
        return Object.defineProperty(t.prototype, "selected", {
            get: function() {
                return this._selected || (this._selected = Array.from(this._selection.values())),
                this._selected
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.select = function() {
            for (var t = this, e = [], n = 0; n < arguments.length; n++)
                e[n] = arguments[n];
            this._verifyValueAssignment(e),
            e.forEach((function(e) {
                return t._markSelected(e)
            }
            )),
            this._emitChangeEvent()
        }
        ,
        t.prototype.deselect = function() {
            for (var t = this, e = [], n = 0; n < arguments.length; n++)
                e[n] = arguments[n];
            this._verifyValueAssignment(e),
            e.forEach((function(e) {
                return t._unmarkSelected(e)
            }
            )),
            this._emitChangeEvent()
        }
        ,
        t.prototype.toggle = function(t) {
            this.isSelected(t) ? this.deselect(t) : this.select(t)
        }
        ,
        t.prototype.clear = function() {
            this._unmarkAll(),
            this._emitChangeEvent()
        }
        ,
        t.prototype.isSelected = function(t) {
            return this._selection.has(t)
        }
        ,
        t.prototype.isEmpty = function() {
            return 0 === this._selection.size
        }
        ,
        t.prototype.hasValue = function() {
            return !this.isEmpty()
        }
        ,
        t.prototype.sort = function(t) {
            this._multiple && this.selected && this._selected.sort(t)
        }
        ,
        t.prototype.isMultipleSelection = function() {
            return this._multiple
        }
        ,
        t.prototype._emitChangeEvent = function() {
            this._selected = null,
            (this._selectedToEmit.length || this._deselectedToEmit.length) && (this.changed.next({
                source: this,
                added: this._selectedToEmit,
                removed: this._deselectedToEmit
            }),
            this._deselectedToEmit = [],
            this._selectedToEmit = [])
        }
        ,
        t.prototype._markSelected = function(t) {
            this.isSelected(t) || (this._multiple || this._unmarkAll(),
            this._selection.add(t),
            this._emitChanges && this._selectedToEmit.push(t))
        }
        ,
        t.prototype._unmarkSelected = function(t) {
            this.isSelected(t) && (this._selection.delete(t),
            this._emitChanges && this._deselectedToEmit.push(t))
        }
        ,
        t.prototype._unmarkAll = function() {
            var t = this;
            this.isEmpty() || this._selection.forEach((function(e) {
                return t._unmarkSelected(e)
            }
            ))
        }
        ,
        t.prototype._verifyValueAssignment = function(t) {
            if (t.length > 1 && !this._multiple)
                throw Error("Cannot pass multiple values into SelectionModel with single-value mode.")
        }
        ,
        t
    }();
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var p = function() {
        function t() {
            this._listeners = []
        }
        return t.prototype.notify = function(t, e) {
            var n, r;
            try {
                for (var o = Object(i.j)(this._listeners), a = o.next(); !a.done; a = o.next()) {
                    (0,
                    a.value)(t, e)
                }
            } catch (t) {
                n = {
                    error: t
                }
            } finally {
                try {
                    a && !a.done && (r = o.return) && r.call(o)
                } finally {
                    if (n)
                        throw n.error
                }
            }
        }
        ,
        t.prototype.listen = function(t) {
            var e = this;
            return this._listeners.push(t),
            function() {
                e._listeners = e._listeners.filter((function(e) {
                    return t !== e
                }
                ))
            }
        }
        ,
        t.prototype.ngOnDestroy = function() {
            this._listeners = []
        }
        ,
        t.ɵprov = Object(s["ɵɵdefineInjectable"])({
            factory: function() {
                return new t
            },
            token: t,
            providedIn: "root"
        }),
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t
    }();
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(4)
      , r = function() {
        function t() {}
        return t.validateColorString = function(e) {
            if (e) {
                if (this.COLOR_DEFS.hasOwnProperty(e))
                    return this.COLOR_DEFS[e].rgb_string;
                if (t.RGBA_COLOR_PATTERN.test(e))
                    return this.rgbToHex(e);
                if (t.HEX_COLOR_PATTERN.test(e))
                    return e
            }
            return "#ffffff"
        }
        ,
        t.getColor = function(t) {
            return new i.Color(this.validateColorString(t))
        }
        ,
        t.rgbToHex = function(e) {
            var n = t.RGBA_COLOR_PATTERN.exec(e);
            return n && 4 === n.length ? "#" + ("0" + parseInt(n[1], 10).toString(16)).slice(-2) + ("0" + parseInt(n[2], 10).toString(16)).slice(-2) + ("0" + parseInt(n[3], 10).toString(16)).slice(-2) : ""
        }
        ,
        t.HEX_COLOR_PATTERN = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,
        t.RGBA_COLOR_PATTERN = /^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i,
        t.COLOR_DEFS = {
            red: {
                use_rgb: !0,
                rgb_color: new i.Color(.84,0,0),
                rgb_string: "rgb(213,0,0)"
            },
            pink: {
                use_rgb: !0,
                rgb_color: new i.Color(.77,.07,.38),
                rgb_string: "rgb(197,17,98)"
            },
            purple: {
                use_rgb: !0,
                rgb_color: new i.Color(.67,0,1),
                rgb_string: "rgb(170,0,255)"
            },
            "deep purple": {
                use_rgb: !0,
                rgb_color: new i.Color(.38,0,.92),
                rgb_string: "rgb(98,0,234)"
            },
            indigo: {
                use_rgb: !0,
                rgb_color: new i.Color(.19,.31,1),
                rgb_string: "rgb(48,79,254)"
            },
            blue: {
                use_rgb: !0,
                rgb_color: new i.Color(.16,.38,1),
                rgb_string: "rgb(41,98,255)"
            },
            "light blue": {
                use_rgb: !0,
                rgb_color: new i.Color(0,.57,.92),
                rgb_string: "rgb(0,145,234)"
            },
            cyan: {
                use_rgb: !0,
                rgb_color: new i.Color(0,.72,.83),
                rgb_string: "rgb(0,184,212)"
            },
            teal: {
                use_rgb: !0,
                rgb_color: new i.Color(0,.75,.65),
                rgb_string: "rgb(0,191,165)"
            },
            green: {
                use_rgb: !0,
                rgb_color: new i.Color(0,.78,.33),
                rgb_string: "rgb(0,200,83)"
            },
            "light green": {
                use_rgb: !0,
                rgb_color: new i.Color(.39,.87,.09),
                rgb_string: "rgb(100,221,23)"
            },
            lime: {
                use_rgb: !0,
                rgb_color: new i.Color(.68,.92,0),
                rgb_string: "rgb(174,234,0)"
            },
            yellow: {
                use_rgb: !0,
                rgb_color: new i.Color(1,.84,0),
                rgb_string: "rgb(255,214,0)"
            },
            amber: {
                use_rgb: !0,
                rgb_color: new i.Color(1,.67,0),
                rgb_string: "rgb(255,171,0)"
            },
            orange: {
                use_rgb: !0,
                rgb_color: new i.Color(1,.43,0),
                rgb_string: "rgb(255,109,0)"
            },
            "deep orange": {
                use_rgb: !0,
                rgb_color: new i.Color(1,.24,0),
                rgb_string: "rgb(255,61,0)"
            }
        },
        t
    }();
    e.ColorUtilities = r
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        n(9);
        var i = n(2)
          , r = (n(61),
        n(327))
          , o = n(283);
        n(436);
        n(436);
        n(434),
        n(205);
        var a = n(41)
          , s = (n(36),
        n(6))
          , c = n(0)
          , l = n(0)
          , u = n(9)
          , d = n(205)
          , p = n(434)
          , h = n(61)
          , f = n(436)
          , m = n(36)
          , g = function() {
            function e(t, e, n, i, r, o, s, c, l) {
                this.RestService = t,
                this.DatasetManagementService = e,
                this.$timeout = n,
                this.FlowService = i,
                this.MessageReportingService = r,
                this.JobNameTranslatorService = o,
                this.gettextCatalog = s,
                this.gettext = c,
                this.AuthenticationService = l,
                this.jobs = [],
                this.progress = {
                    loadingJobs: !1,
                    jobRunning: !1
                },
                this.timeouts = [],
                this.modalOnJobFinish = !1,
                this.firstPoll = !0,
                this.defaultJobErrorPopupBody = this.gettext("Please check the task manager for detailed logs"),
                this.jobFailureDetectors = a.ErrorService.getAllJobFailureDetectors(this.gettextCatalog)
            }
            return e.prototype.refreshJobList = function() {
                var t = this;
                this.AuthenticationService.dataAccessible && (this.progress.loadingJobs = !0,
                this.RestService.getApi("jobs", {}).then((function(n) {
                    for (var i = 0, r = n; i < r.length; i++) {
                        var o = r[i];
                        t.updateJob(o)
                    }
                    t.DatasetManagementService.dataManagementJobTriggered = !1,
                    t.progress.jobRunning = t.jobs.some((function(t) {
                        return t.busy
                    }
                    )),
                    t.progress.loadingJobs = !1,
                    t.timeouts.push(t.$timeout((function() {
                        return t.refreshJobList()
                    }
                    ), e.REFRESH_CYCLE)),
                    !t.modalOnJobFinish || t.progress.jobRunning || t.FlowService.isUploading() || t.clearTimeouts(),
                    t.firstPoll = !1
                }
                )).catch((function() {}
                )))
            }
            ,
            e.prototype.refreshJobDetails = function(t) {
                var n = this;
                this.RestService.getApi("jobs/" + t, {}).then((function(i) {
                    n.updateJob(i),
                    i.busy && n.timeouts.push(n.$timeout((function() {
                        return n.refreshJobDetails(t)
                    }
                    ), e.REFRESH_CYCLE))
                }
                )).catch((function() {}
                ))
            }
            ,
            e.prototype.clearTimeouts = function(t) {
                var e = this;
                void 0 === t && (t = !1),
                this.timeouts.forEach((function(t) {
                    return e.$timeout.cancel(t)
                }
                )),
                t && this.refreshJobList()
            }
            ,
            e.prototype.cancelJob = function(t) {
                return this.RestService.deleteApi("jobs/" + t.jobId)
            }
            ,
            e.prototype.showModalOnJobFinish = function(t) {
                this.modalOnJobFinish = t
            }
            ,
            e.prototype.isJobBusy = function(t) {
                return !!this.jobs[t] && this.jobs[t].busy
            }
            ,
            e.prototype.hasJobFailed = function(t) {
                return !!this.jobs[t] && (!this.jobs[t].busy && !this.jobs[t].success)
            }
            ,
            e.prototype.updateJob = function(t) {
                var n = t.job_id
                  , i = this.jobs[n] = this.jobs[n] || new r.Job
                  , o = !this.firstPoll && !i.success && t.success
                  , a = !this.firstPoll && !t.busy && !t.success && (i.busy || void 0 === i.busy);
                i.fillFromData(t),
                i.label = this.JobNameTranslatorService.translateJobName(i.name),
                e.SILENT_JOBS.includes(i.name) || (o && this.onJobFinished(),
                a && this.onJobFailed(i))
            }
            ,
            e.prototype.onJobFinished = function() {
                this.modalOnJobFinish ? t("#ivReinitModal").modal("show") : (this.DatasetManagementService.reInitOnExit = !0,
                this.DatasetManagementService.refresh())
            }
            ,
            e.prototype.onJobFailed = function(t) {
                var e, n = this.jobFailureDetectors.find((function(e) {
                    return e.applies(t)
                }
                ));
                if (void 0 !== n)
                    e = n.currentErrorMessage;
                else if (t.errors) {
                    var i = t.errors.substr(0, t.errors.indexOf("Exception:") + 9)
                      , r = t.errors.substr(t.errors.indexOf("Exception:") + 11)
                      , o = {
                        data: {
                            exception: i.split(".").reverse()[0],
                            msg: r
                        }
                    };
                    e = a.ErrorService.getErrorMessage(o, this.gettextCatalog) || t.errors
                } else
                    e = this.gettextCatalog.getString(this.defaultJobErrorPopupBody);
                this.MessageReportingService.showMessage(this.JobNameTranslatorService.getJobErrorTitle(t.name), e, !0)
            }
            ,
            e.SILENT_JOBS = [o.JobName.DOWNLOAD_DATASET_FROM_S3_JOB, o.JobName.POINT_CLOUD_CROP_JOB, o.JobName.POINTCLOUD_AUTO_ALIGN_JOB],
            e.REFRESH_CYCLE = 2e3,
            e.ɵfac = function(t) {
                return new (t || e)(l.ɵɵinject(u.RestService),l.ɵɵinject(d.DatasetManagementService),l.ɵɵinject("$timeout"),l.ɵɵinject(p.FlowService),l.ɵɵinject(h.MessageReportingService),l.ɵɵinject(f.JobNameTranslatorService),l.ɵɵinject("gettextCatalog"),l.ɵɵinject("gettext"),l.ɵɵinject(m.AuthenticationService))
            }
            ,
            e.ɵprov = l.ɵɵdefineInjectable({
                token: e,
                factory: e.ɵfac,
                providedIn: "root"
            }),
            e
        }();
        e.JobListService = g,
        l.ɵsetClassMetadata(g, [{
            type: c.Injectable,
            args: [{
                providedIn: "root"
            }]
        }], (function() {
            return [{
                type: u.RestService
            }, {
                type: d.DatasetManagementService
            }, {
                type: void 0,
                decorators: [{
                    type: c.Inject,
                    args: ["$timeout"]
                }]
            }, {
                type: p.FlowService
            }, {
                type: h.MessageReportingService
            }, {
                type: f.JobNameTranslatorService
            }, {
                type: void 0,
                decorators: [{
                    type: c.Inject,
                    args: ["gettextCatalog"]
                }]
            }, {
                type: void 0,
                decorators: [{
                    type: c.Inject,
                    args: ["gettext"]
                }]
            }, {
                type: m.AuthenticationService
            }]
        }
        ), null),
        i.module("IVWebApp").service("JobListService", s.downgradeInjectable(g))
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "b", (function() {
        return u
    }
    )),
    n.d(e, "a", (function() {
        return d
    }
    ));
    var i = n(1)
      , r = n(77)
      , o = n(56)
      , a = n(79)
      , s = n(78)
      , c = n(149)
      , l = {};
    function u() {
        for (var t = [], e = 0; e < arguments.length; e++)
            t[e] = arguments[e];
        var n = null
          , i = null;
        return Object(r.a)(t[t.length - 1]) && (i = t.pop()),
        "function" == typeof t[t.length - 1] && (n = t.pop()),
        1 === t.length && Object(o.a)(t[0]) && (t = t[0]),
        Object(c.a)(t, i).lift(new d(n))
    }
    var d = function() {
        function t(t) {
            this.resultSelector = t
        }
        return t.prototype.call = function(t, e) {
            return e.subscribe(new p(t,this.resultSelector))
        }
        ,
        t
    }()
      , p = function(t) {
        function e(e, n) {
            var i = t.call(this, e) || this;
            return i.resultSelector = n,
            i.active = 0,
            i.values = [],
            i.observables = [],
            i
        }
        return i.c(e, t),
        e.prototype._next = function(t) {
            this.values.push(l),
            this.observables.push(t)
        }
        ,
        e.prototype._complete = function() {
            var t = this.observables
              , e = t.length;
            if (0 === e)
                this.destination.complete();
            else {
                this.active = e,
                this.toRespond = e;
                for (var n = 0; n < e; n++) {
                    var i = t[n];
                    this.add(Object(s.a)(this, i, i, n))
                }
            }
        }
        ,
        e.prototype.notifyComplete = function(t) {
            0 == (this.active -= 1) && this.destination.complete()
        }
        ,
        e.prototype.notifyNext = function(t, e, n, i, r) {
            var o = this.values
              , a = o[n]
              , s = this.toRespond ? a === l ? --this.toRespond : this.toRespond : 0;
            o[n] = e,
            0 === s && (this.resultSelector ? this._tryResultSelector(o) : this.destination.next(o.slice()))
        }
        ,
        e.prototype._tryResultSelector = function(t) {
            var e;
            try {
                e = this.resultSelector.apply(this, t)
            } catch (t) {
                return void this.destination.error(t)
            }
            this.destination.next(e)
        }
        ,
        e
    }(a.a)
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return t.call(this, "ToolbarVisibilityChanged") || this
        }
        return r(e, t),
        e.prototype.withToolbar = function(t) {
            return this.withData("toolBarTitle", t),
            this
        }
        ,
        e.prototype.visible = function(t) {
            return this.withData("toolbarStatus", t ? "shown" : "hidden"),
            this
        }
        ,
        e.prototype.withNewWidth = function(t) {
            return this.withData("width", t),
            this
        }
        ,
        e
    }(n(64).TrackingEvent);
    e.ToolbarVisibilityChangedEvent = o
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    e.handleDisabledFeature = function(t) {
        0
    }
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , r = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(551)
      , a = n(212)
      , s = n(553)
      , c = n(124)
      , l = n(1135)
      , u = n(128)
      , d = n(233)
      , p = n(40)
      , h = n(8)
      , f = function() {
        function t(e, n, i, r, o, a, s, c) {
            var d = this;
            this.view = e,
            this.onZoomView = n,
            this.onDragViewStart = i,
            this.onDragView = r,
            this.onDragViewEnd = o,
            this.onSustainedDragViewEnd = a,
            this.onKeyDown = s,
            this.onKeyUp = c,
            this.keysPressed = new Set,
            this.ignoreKeyboardEvents = !1,
            this.mousePosition = {
                x: 0,
                y: 0,
                event: void 0
            },
            this.draggingView = !1,
            this.pinchingActive = !1,
            this.pinchingLastScale = 1;
            var p = u(e.divContainer.container, {
                doubleTapInterval: t.DOUBLE_CLICK_INTERVAL,
                tapAlways: !1,
                dragMinDistance: 3,
                holdTimeout: 1e3
            });
            p.on("tap", (function(t) {
                return d.tap(t)
            }
            )),
            p.on("doubletap", (function(t) {
                return d.doubleTap(t)
            }
            )),
            p.on("hold", (function(t) {
                return d.hold(t)
            }
            )),
            p.on("release", (function(t) {
                return d.release(t)
            }
            )),
            p.on("touch", (function(t) {
                return d.touch(t)
            }
            )),
            p.on("mousemove", (function(t) {
                return d.mouseMove(t)
            }
            )),
            p.on("mousewheel", (function(t) {
                return d.mouseWheel(t)
            }
            )),
            p.on("DOMMouseScroll", (function(t) {
                return d.mouseWheel(t)
            }
            )),
            p.on("dragstart", (function(t) {
                return d.dragStart(t)
            }
            )),
            p.on("drag", (function(t) {
                return d.drag(t)
            }
            )),
            p.on("dragend", (function(t) {
                return d.dragEnd(t)
            }
            )),
            p.on("pinch", (function(t) {
                return d.pinch(t)
            }
            )),
            e.divContainer.container.addEventListener("keydown", (function(t) {
                return d.keyDown(t)
            }
            ), !1),
            e.divContainer.container.addEventListener("keyup", (function(t) {
                return d.keyUp(t)
            }
            ), !1),
            e.divContainer.container.addEventListener("contextmenu", (function(t) {
                return t.preventDefault()
            }
            )),
            e.divContainer.container.id || (e.divContainer.container.id = "jquery-contextmenu-" + this.unique_id),
            this.contextMenuElement = l.$("#" + e.divContainer.container.id),
            l.$.contextMenu({
                selector: "#" + e.divContainer.container.id,
                trigger: "none",
                zIndex: 10,
                reposition: !1,
                events: {
                    show: function() {
                        return l.$(e.divContainer.container).parents("#insetPanel").addClass("opened-context-menu")
                    },
                    hide: function() {
                        return l.$(e.divContainer.container).parents("#insetPanel").removeClass("opened-context-menu")
                    }
                },
                build: function(t, e) {
                    return d.populateContextMenu(e)
                }
            })
        }
        return t.prototype.destroy = function() {
            u.detection.previous = void 0,
            this.contextMenuElement.contextMenu("destroy")
        }
        ,
        t.prototype.getLastMousePosition = function() {
            return this.mousePosition
        }
        ,
        t.prototype.isKeyPressed = function(t) {
            return this.keysPressed.has(t)
        }
        ,
        t.prototype.updateMeshMouseMoveOverOut = function() {
            this.handleMeshMouseMoveOverOut(this.mousePosition)
        }
        ,
        t.prototype.callMeshEventHandler = function(t, e) {
            for (var n = o.getEventPosition(t), i = function(i) {
                var r = i.object;
                if (r[e] && !0 === s.swallowExceptions((function() {
                    return r[e](n)
                }
                )))
                    return t.gesture.preventDefault(),
                    {
                        value: !0
                    }
            }, r = 0, a = this.view.getObjectsUnderCursor(n); r < a.length; r++) {
                var c = i(a[r]);
                if ("object" == typeof c)
                    return c.value
            }
            return !1
        }
        ,
        t.prototype.callLayerEventHandler = function(t, e, n) {
            for (var i = o.getEventPosition(t), r = function(r) {
                if (r[e] && !0 === s.swallowExceptions((function() {
                    return r[e](i, n)
                }
                )))
                    return t.stopImmediatePropagation(),
                    t.gesture.preventDefault(),
                    {
                        value: !0
                    }
            }, a = 0, c = this.view.layers; a < c.length; a++) {
                var l = r(c[a]);
                if ("object" == typeof l)
                    return l.value
            }
            return !1
        }
        ,
        t.prototype.callViewEventHandler = function(t, e) {
            var n = this;
            return s.swallowExceptions((function() {
                return n.view[e](o.getEventPosition(t))
            }
            ))
        }
        ,
        t.prototype.callEventHandlers = function(t, e, n) {
            var a;
            return i(this, void 0, void 0, (function() {
                return r(this, (function(i) {
                    switch (i.label) {
                    case 0:
                        return this.wasTriggeredByMouse(t) ? [3, 2] : [4, this.view.setCurrentCursorPositionForScreenPosition(o.getEventPosition(t))];
                    case 1:
                        i.sent(),
                        n = null === (a = this.view.getCurrentCursorPosition()) || void 0 === a ? void 0 : a.location,
                        i.label = 2;
                    case 2:
                        return [2, this.callMeshEventHandler(t, e) || this.callLayerEventHandler(t, e, n) || this.callViewEventHandler(t, e)]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.tap = function(e) {
            var n, i = this, r = null === (n = this.view.getCurrentCursorPosition()) || void 0 === n ? void 0 : n.location;
            this.tapTimer = window.setTimeout((function() {
                var t = e.gesture.srcEvent
                  , n = void 0 !== t.button ? t.button : d.MouseButton.LEFT;
                n !== d.MouseButton.RIGHT && i.closeContextMenu(),
                n === d.MouseButton.LEFT && (i.callEventHandlers(e, "onClick", r).catch(h.handleWarning),
                window.clearTimeout(i.tapTimer))
            }
            ), t.DOUBLE_CLICK_INTERVAL)
        }
        ,
        t.prototype.wasTriggeredByMouse = function(t) {
            return "mouse" === t.gesture.pointerType
        }
        ,
        t.prototype.doubleTap = function(t) {
            this.callEventHandlers(t, "onDoubleClick").catch(h.handleWarning),
            window.clearTimeout(this.tapTimer)
        }
        ,
        t.prototype.release = function(t) {
            t.gesture.srcEvent.button === d.MouseButton.RIGHT && this.contextMenuElement.contextMenu({
                x: t.gesture.srcEvent.pageX,
                y: t.gesture.srcEvent.pageY
            })
        }
        ,
        t.prototype.hold = function(t) {
            t.gesture && t.gesture.srcEvent && void 0 !== t.gesture.srcEvent.button && t.gesture.srcEvent.button !== d.MouseButton.LEFT || this.callEventHandlers(t, "onHold").then((function(t) {
                t && p.vibrate()
            }
            )).catch(h.handleWarning)
        }
        ,
        t.prototype.touch = function(t) {
            this.mousePosition = o.getEventPosition(t),
            this.cancelFling(),
            this.pinchingLastScale = 1
        }
        ,
        t.prototype.mouseMove = function(t) {
            this.draggingObject || this.draggingView || this.pinchingActive || (this.mousePosition = o.getEventPosition(t),
            this.callLayerEventHandler(t, "onMouseMove"),
            this.updateMeshMouseMoveOverOut())
        }
        ,
        t.prototype.handleMeshMouseMoveOverOut = function(t) {
            for (var e = this, n = this.view.getObjectsUnderCursor(t), i = this.view.getViewport(t.x, t.y), r = !1, o = function(n) {
                var o = n.object;
                o.onMouseMove && s.swallowExceptions((function() {
                    return o.onMouseMove(t, i)
                }
                )),
                o.onMouseOver && o === a.oldMesh && (r = !0),
                o.onMouseOver && o !== a.oldMesh && !r && (a.oldMesh && a.oldMesh.onMouseOut && s.swallowExceptions((function() {
                    return e.oldMesh.onMouseOut(t, i)
                }
                )),
                s.swallowExceptions((function() {
                    return o.onMouseOver(t, i)
                }
                )),
                a.oldMesh = o,
                r = !0)
            }, a = this, c = 0, l = n; c < l.length; c++) {
                o(l[c])
            }
            !r && this.oldMesh && this.oldMesh.onMouseOut && (s.swallowExceptions((function() {
                return e.oldMesh.onMouseOut(t, i)
            }
            )),
            this.oldMesh = void 0)
        }
        ,
        t.prototype.mouseWheel = function(t) {
            t.preventDefault();
            for (var e = o.getEventPosition(t), n = o.getMouseWheelDelta(t), i = function(t) {
                var i = t.object;
                if (i.onMouseWheel && s.swallowExceptions((function() {
                    return i.onMouseWheel(e, n)
                }
                )))
                    return {
                        value: void 0
                    }
            }, r = 0, a = this.view.getObjectsUnderCursor(e); r < a.length; r++) {
                var c = i(a[r]);
                if ("object" == typeof c)
                    return c.value
            }
            for (var l = function(t) {
                if (t.onMouseWheel && s.swallowExceptions((function() {
                    return t.onMouseWheel(e, n)
                }
                )))
                    return {
                        value: void 0
                    }
            }, u = 0, d = this.view.layers; u < d.length; u++) {
                var p = l(d[u]);
                if ("object" == typeof p)
                    return p.value
            }
            this.onZoomView(e, n, !1)
        }
        ,
        t.prototype.dragStart = function(t) {
            if (t.gesture) {
                t.gesture.preventDefault(),
                this.cancelFling();
                var e = t.gesture.startEvent.srcEvent
                  , n = void 0 !== e.button ? e.button : 0
                  , i = o.getEventPosition(e);
                if (n === d.MouseButton.LEFT)
                    for (var r = this.view.getObjectsUnderCursor(i), a = function(t) {
                        var e = t.object;
                        if (e.onDrag) {
                            var n = c.view.getViewport(i.x, i.y);
                            return !n || e.onDragStart && s.swallowExceptions((function() {
                                return !e.onDragStart(i, n)
                            }
                            )) ? "continue" : (c.draggingObject = {
                                object: e,
                                viewport: n
                            },
                            {
                                value: void 0
                            })
                        }
                    }, c = this, l = 0, u = r; l < u.length; l++) {
                        var p = a(u[l]);
                        if ("object" == typeof p)
                            return p.value
                    }
                this.draggingView = this.onDragViewStart(i)
            }
        }
        ,
        t.prototype.drag = function(t) {
            var e = this;
            if (t.gesture)
                if (t.gesture.preventDefault(),
                Number.isFinite(t.gesture.deltaX) && Number.isFinite(t.gesture.deltaY)) {
                    if (this.draggingObject) {
                        var n = o.getEventPosition(t);
                        s.swallowExceptions((function() {
                            return e.draggingObject.object.onDrag(n, e.draggingObject.viewport)
                        }
                        ))
                    } else if (this.pinchingActive && (t.gesture.deltaX = 0,
                    t.gesture.deltaY = 0,
                    this.pinchingActive = !1),
                    this.draggingView) {
                        var i = o.getEventPosition(t.gesture.startEvent.srcEvent);
                        this.onDragView(t.gesture.deltaX, t.gesture.deltaY, i),
                        t.gesture.startEvent.center.clientX = t.gesture.center.clientX,
                        t.gesture.startEvent.center.clientY = t.gesture.center.clientY,
                        t.gesture.startEvent.timeStamp = t.gesture.timeStamp,
                        t.gesture.startEvent.secondToLastDrag = t.gesture.startEvent.lastDrag,
                        t.gesture.startEvent.lastDrag = {
                            timeStamp: t.gesture.timeStamp,
                            deltaX: t.gesture.deltaX,
                            deltaY: t.gesture.deltaY,
                            deltaTime: t.gesture.deltaTime / 1e3
                        }
                    }
                } else
                    console.error("Invalid delta in drag event", t.gesture)
        }
        ,
        t.prototype.dragEnd = function(t) {
            var e = this;
            t.gesture && (t.gesture.preventDefault(),
            t.gesture.stopDetect());
            var n = !1;
            if (this.draggingView) {
                var i = o.getEventPosition(t.gesture.startEvent.srcEvent);
                n = this.onDragViewEnd(i),
                this.draggingView = !1
            }
            if (this.draggingObject)
                return this.draggingObject.object.onDragEnd && s.swallowExceptions((function() {
                    return e.draggingObject.object.onDragEnd()
                }
                )),
                void (this.draggingObject = void 0);
            if (t.gesture && n) {
                var r = Math.max(this.view.divContainer.getCurrentWidth(), this.view.divContainer.getCurrentHeight())
                  , a = t.gesture.timeStamp - t.gesture.startEvent.lastDrag.timeStamp;
                if (!t.gesture.startEvent.lastDrag || a / 1e3 > .1)
                    this.onSustainedDragViewEnd();
                else {
                    var l = t.gesture.startEvent.secondToLastDrag || t.gesture.startEvent.lastDrag
                      , u = l.deltaX
                      , d = l.deltaY
                      , p = l.deltaTime;
                    if (0 !== p) {
                        var h = o.getEventPosition(t.gesture.startEvent.srcEvent)
                          , f = {
                            vx: Math.max(-r, Math.min(r, u / p)),
                            vy: Math.max(-r, Math.min(r, d / p))
                        }
                          , m = c.now();
                        this.flingTween = new c.Tween(f).to({
                            vx: 0,
                            vy: 0
                        }, 750).easing((function(t) {
                            return c.Easing.Linear.None(t)
                        }
                        )).onUpdate((function(t) {
                            var n = c.now()
                              , i = (n - m) / 750;
                            m = n,
                            e.onDragView(f.vx * i, f.vy * i, h)
                        }
                        )).onComplete((function() {
                            e.view.forgetTween(e.flingTween),
                            e.flingTween = void 0,
                            e.onSustainedDragViewEnd()
                        }
                        )).start(),
                        this.view.watchTween(this.flingTween)
                    }
                }
            }
        }
        ,
        t.prototype.cancelFling = function() {
            this.flingTween && (this.flingTween.stop(),
            this.view.forgetTween(this.flingTween),
            this.flingTween = void 0)
        }
        ,
        t.prototype.pinch = function(t) {
            t.gesture.preventDefault();
            var e = t.gesture.scale / this.pinchingLastScale;
            this.pinchingLastScale = t.gesture.scale,
            this.onZoomView(o.getEventPosition(t), e, !0),
            this.pinchingActive = !0
        }
        ,
        t.prototype.keyDown = function(t) {
            var e = this;
            if (t.keyCode === a.KeyEvent.DOM_VK_ESCAPE && this.draggingObject && this.draggingObject.object.onDragCancel)
                return s.swallowExceptions((function() {
                    return e.draggingObject.object.onDragCancel()
                }
                )),
                void (this.draggingObject = void 0);
            var n = t.target
              , i = n.nodeName.toLowerCase();
            if (!("input" === i || "textarea" === i || "select" === i || "form-description" === n.id || n.className.indexOf("ta-text") > 0 || this.ignoreKeyboardEvents || t.altKey || t.ctrlKey || t.metaKey || (this.keysPressed.add(t.keyCode),
            this.onKeyDown(t))))
                for (var r = function(e) {
                    if (e.onKeyDown && s.swallowExceptions((function() {
                        return e.onKeyDown(t)
                    }
                    )))
                        return "break"
                }, o = 0, c = this.view.layers; o < c.length; o++) {
                    if ("break" === r(c[o]))
                        break
                }
        }
        ,
        t.prototype.keyUp = function(t) {
            if (this.keysPressed.delete(t.keyCode),
            this.onKeyUp(t),
            !this.onKeyUp(t))
                for (var e = function(e) {
                    if (e.onKeyUp && s.swallowExceptions((function() {
                        return e.onKeyUp(t)
                    }
                    )))
                        return "break"
                }, n = 0, i = this.view.layers; n < i.length; n++) {
                    if ("break" === e(i[n]))
                        break
                }
        }
        ,
        t.prototype.populateContextMenu = function(t) {
            for (var e = this, n = o.getEventPosition(t), i = [], r = new Set, a = [], c = function(t) {
                var e = t.object;
                e.onContextMenu && a.push((function() {
                    return e.onContextMenu(n)
                }
                ))
            }, l = 0, u = this.view.getObjectsUnderCursor(n); l < u.length; l++) {
                c(u[l])
            }
            for (var d = function(t) {
                t.onContextMenu && a.push((function() {
                    return t.onContextMenu(n)
                }
                ))
            }, p = 0, h = this.view.layers; p < h.length; p++) {
                d(h[p])
            }
            this.view.onContextMenu && a.push((function() {
                return e.view.onContextMenu(n)
            }
            ));
            for (var f = 0, m = a; f < m.length; f++) {
                var g = m[f]
                  , v = s.swallowExceptions(g);
                if (!1 === v)
                    return !1;
                if (v && !0 !== v)
                    for (var y = 0, b = v instanceof Array ? v : [v]; y < b.length; y++) {
                        var w = b[y]
                          , S = !0;
                        void 0 !== w.key && (S = !r.has(w.key),
                        r.add(w.key)),
                        S && i.push(w)
                    }
            }
            return !!i.length && {
                items: i
            }
        }
        ,
        t.prototype.closeContextMenu = function() {
            this.isContextMenuActive() && this.contextMenuElement.contextMenu("hide")
        }
        ,
        t.prototype.isContextMenuActive = function() {
            return this.contextMenuElement.hasClass("context-menu-active")
        }
        ,
        t.DOUBLE_CLICK_INTERVAL = 500,
        t
    }();
    e.InputHandler = f
}
, function(t, e, n) {
    var i = n(34)
      , r = n(88);
    t.exports = function(t, e) {
        try {
            r(i, t, e)
        } catch (n) {
            i[t] = e
        }
        return e
    }
}
, function(t, e, n) {
    var i = n(34)
      , r = n(42)
      , o = i.document
      , a = r(o) && r(o.createElement);
    t.exports = function(t) {
        return a ? o.createElement(t) : {}
    }
}
, function(t, e, n) {
    var i = n(18);
    t.exports = !!Object.getOwnPropertySymbols && !i((function() {
        return !String(Symbol())
    }
    ))
}
, function(t, e, n) {
    var i = n(43)
      , r = n(48)
      , o = n(29)
      , a = n(237);
    t.exports = i ? Object.defineProperties : function(t, e) {
        o(t);
        for (var n, i = a(e), s = i.length, c = 0; s > c; )
            r.f(t, n = i[c++], e[n]);
        return t
    }
}
, function(t, e) {
    t.exports = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"]
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(358)
      , o = n(99)
      , a = n(191)
      , s = n(162)
      , c = n(88)
      , l = n(98)
      , u = n(45)
      , d = n(158)
      , p = n(240)
      , h = n(466)
      , f = h.IteratorPrototype
      , m = h.BUGGY_SAFARI_ITERATORS
      , g = u("iterator")
      , v = function() {
        return this
    };
    t.exports = function(t, e, n, u, h, y, b) {
        r(n, e, u);
        var w, S, x, M = function(t) {
            if (t === h && O)
                return O;
            if (!m && t in A)
                return A[t];
            switch (t) {
            case "keys":
            case "values":
            case "entries":
                return function() {
                    return new n(this,t)
                }
            }
            return function() {
                return new n(this)
            }
        }, E = e + " Iterator", C = !1, A = t.prototype, T = A[g] || A["@@iterator"] || h && A[h], O = !m && T || M(h), _ = "Array" == e && A.entries || T;
        if (_ && (w = o(_.call(new t)),
        f !== Object.prototype && w.next && (d || o(w) === f || (a ? a(w, f) : "function" != typeof w[g] && c(w, g, v)),
        s(w, E, !0, !0),
        d && (p[E] = v))),
        "values" == h && T && "values" !== T.name && (C = !0,
        O = function() {
            return T.call(this)
        }
        ),
        d && !b || A[g] === O || c(A, g, O),
        p[e] = O,
        h)
            if (S = {
                values: M("values"),
                keys: y ? O : M("keys"),
                entries: M("entries")
            },
            b)
                for (x in S)
                    (m || C || !(x in A)) && l(A, x, S[x]);
            else
                i({
                    target: e,
                    proto: !0,
                    forced: m || C
                }, S);
        return S
    }
}
, function(t, e, n) {
    var i = n(161)
      , r = n(190)
      , o = n(357)
      , a = n(29);
    t.exports = i("Reflect", "ownKeys") || function(t) {
        var e = r.f(a(t))
          , n = o.f;
        return n ? e.concat(n(t)) : e
    }
}
, function(t, e) {
    e.f = Object.getOwnPropertySymbols
}
, function(t, e, n) {
    "use strict";
    var i = n(466).IteratorPrototype
      , r = n(160)
      , o = n(173)
      , a = n(162)
      , s = n(240)
      , c = function() {
        return this
    };
    t.exports = function(t, e, n) {
        var l = e + " Iterator";
        return t.prototype = r(i, {
            next: o(1, n)
        }),
        a(t, l, !1, !0),
        s[l] = c,
        t
    }
}
, function(t, e, n) {
    var i = n(18);
    t.exports = !i((function() {
        function t() {}
        return t.prototype.constructor = null,
        Object.getPrototypeOf(new t) !== t.prototype
    }
    ))
}
, function(t, e, n) {
    var i = n(45)
      , r = n(240)
      , o = i("iterator")
      , a = Array.prototype;
    t.exports = function(t) {
        return void 0 !== t && (r.Array === t || a[o] === t)
    }
}
, function(t, e, n) {
    var i = {};
    i[n(45)("toStringTag")] = "z",
    t.exports = "[object z]" === String(i)
}
, function(t, e, n) {
    var i = n(45)("iterator")
      , r = !1;
    try {
        var o = 0
          , a = {
            next: function() {
                return {
                    done: !!o++
                }
            },
            return: function() {
                r = !0
            }
        };
        a[i] = function() {
            return this
        }
        ,
        Array.from(a, (function() {
            throw 2
        }
        ))
    } catch (t) {}
    t.exports = function(t, e) {
        if (!e && !r)
            return !1;
        var n = !1;
        try {
            var o = {};
            o[i] = function() {
                return {
                    next: function() {
                        return {
                            done: n = !0
                        }
                    }
                }
            }
            ,
            t(o)
        } catch (t) {}
        return n
    }
}
, function(t, e, n) {
    "use strict";
    var i = n(53)
      , r = n(175)
      , o = n(44);
    t.exports = function(t) {
        for (var e = i(this), n = o(e.length), a = arguments.length, s = r(a > 1 ? arguments[1] : void 0, n), c = a > 2 ? arguments[2] : void 0, l = void 0 === c ? n : r(c, n); l > s; )
            e[s++] = t;
        return e
    }
}
, function(t, e, n) {
    var i = n(296);
    t.exports = function(t) {
        if (i(t))
            throw TypeError("The method doesn't accept regular expressions");
        return t
    }
}
, function(t, e, n) {
    var i = n(45)("match");
    t.exports = function(t) {
        var e = /./;
        try {
            "/./"[t](e)
        } catch (n) {
            try {
                return e[i] = !1,
                "/./"[t](e)
            } catch (t) {}
        }
        return !1
    }
}
, function(t, e, n) {
    "use strict";
    var i = n(18);
    function r(t, e) {
        return RegExp(t, e)
    }
    e.UNSUPPORTED_Y = i((function() {
        var t = r("a", "y");
        return t.lastIndex = 2,
        null != t.exec("abcd")
    }
    )),
    e.BROKEN_CARET = i((function() {
        var t = r("^r", "gy");
        return t.lastIndex = 2,
        null != t.exec("str")
    }
    ))
}
, function(t, e, n) {
    var i = n(44)
      , r = n(368)
      , o = n(87)
      , a = Math.ceil
      , s = function(t) {
        return function(e, n, s) {
            var c, l, u = String(o(e)), d = u.length, p = void 0 === s ? " " : String(s), h = i(n);
            return h <= d || "" == p ? u : (c = h - d,
            (l = r.call(p, a(c / p.length))).length > c && (l = l.slice(0, c)),
            t ? u + l : l + u)
        }
    };
    t.exports = {
        start: s(!1),
        end: s(!0)
    }
}
, function(t, e, n) {
    "use strict";
    var i = n(122)
      , r = n(87);
    t.exports = "".repeat || function(t) {
        var e = String(r(this))
          , n = ""
          , o = i(t);
        if (o < 0 || o == 1 / 0)
            throw RangeError("Wrong number of repetitions");
        for (; o > 0; (o >>>= 1) && (e += e))
            1 & o && (n += e);
        return n
    }
}
, function(t, e, n) {
    var i = n(18)
      , r = n(301);
    t.exports = function(t) {
        return i((function() {
            return !!r[t]() || "​᠎" != "​᠎"[t]() || r[t].name !== t
        }
        ))
    }
}
, function(t, e) {
    t.exports = Math.sign || function(t) {
        return 0 == (t = +t) || t != t ? t : t < 0 ? -1 : 1
    }
}
, function(t, e) {
    t.exports = "undefined" != typeof ArrayBuffer && "undefined" != typeof DataView
}
, function(t, e, n) {
    var i = n(34)
      , r = n(18)
      , o = n(362)
      , a = n(46).NATIVE_ARRAY_BUFFER_VIEWS
      , s = i.ArrayBuffer
      , c = i.Int8Array;
    t.exports = !a || !r((function() {
        c(1)
    }
    )) || !r((function() {
        new c(-1)
    }
    )) || !o((function(t) {
        new c,
        new c(null),
        new c(1.5),
        new c(t)
    }
    ), !0) || r((function() {
        return 1 !== new c(new s(2),1,void 0).length
    }
    ))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return a
    }
    ));
    var i = n(1)
      , r = n(32)
      , o = n(127)
      , a = function(t) {
        function e(e) {
            var n = t.call(this) || this;
            return n._value = e,
            n
        }
        return i.c(e, t),
        Object.defineProperty(e.prototype, "value", {
            get: function() {
                return this.getValue()
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype._subscribe = function(e) {
            var n = t.prototype._subscribe.call(this, e);
            return n && !n.closed && e.next(this._value),
            n
        }
        ,
        e.prototype.getValue = function() {
            if (this.hasError)
                throw this.thrownError;
            if (this.closed)
                throw new o.a;
            return this._value
        }
        ,
        e.prototype.next = function(e) {
            t.prototype.next.call(this, this._value = e)
        }
        ,
        e
    }(r.a)
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(70)
      , s = (n(9),
    n(1039))
      , c = n(375)
      , l = n(108)
      , u = n(6)
      , d = n(0)
      , p = n(0)
      , h = n(9)
      , f = function(t) {
        function e(e, n) {
            var i = t.call(this, s.LicenseInfoEntity, e) || this;
            return i.RestService = e,
            i.gettextCatalog = n,
            i.path = "license",
            i.injectables.gettextCatalog = i.gettextCatalog,
            i.findLicense = i.findOne,
            i.findOne = function() {
                return i.forbiddenOperation()
            }
            ,
            i.findAll = function() {
                return i.forbiddenOperation()
            }
            ,
            i.find = function() {
                return i.forbiddenOperation()
            }
            ,
            i.save = function() {
                return i.forbiddenOperation()
            }
            ,
            i.remove = function() {
                return i.forbiddenOperation()
            }
            ,
            i
        }
        return r(e, t),
        e.prototype.getLicense = function(t) {
            return void 0 === t && (t = !1),
            this.findLicense("", t)
        }
        ,
        e.prototype.saveLicense = function(t) {
            return this.RestService.postApi(this.path, {
                license: t
            })
        }
        ,
        e.prototype.create = function() {
            var e = t.prototype.create.call(this);
            return e.licenseValid = !1,
            e.licensableSquareMeters = 1,
            e.area = 0,
            e.features = c.LicenseFeatures.create(this.gettextCatalog),
            e.validFrom = new Date(0),
            e.validTo = new Date(0),
            e
        }
        ,
        e.prototype.forbiddenOperation = function() {
            throw new l.IVFrontendException("Method not allowed on LicenseInfoRepository")
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(p.ɵɵinject(h.RestService),p.ɵɵinject("gettextCatalog"))
        }
        ,
        e.ɵprov = p.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(a.RestRepository);
    e.LicenseInfoRepository = f,
    p.ɵsetClassMetadata(f, [{
        type: d.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: h.RestService
        }, {
            type: void 0,
            decorators: [{
                type: d.Inject,
                args: ["gettextCatalog"]
            }]
        }]
    }
    ), null),
    o.module("IVWebApp").service("LicenseInfoRepository", u.downgradeInjectable(f))
}
, function(t, e, n) {
    "use strict";
    var i;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var r = n(92)
      , o = function() {
        function t(t, e, n) {
            void 0 === n && (n = !1),
            this.code = t,
            this.displayName = e,
            this.enabled = n
        }
        return t.getFeatureTypeByCode = function(e) {
            return t.codeToFeatureType[e]
        }
        ,
        t.codeToFeatureType = ((i = {})[r.LicenseFeatureType.ROUTING] = r.LicenseFeatureType.ROUTING,
        i[r.LicenseFeatureType.ANALYST] = r.LicenseFeatureType.ANALYST,
        i[r.LicenseFeatureType.JAVASCRIPT_API] = r.LicenseFeatureType.JAVASCRIPT_API,
        i[r.LicenseFeatureType.USER_MANAGEMENT] = r.LicenseFeatureType.USER_MANAGEMENT,
        i),
        t
    }();
    e.LicenseFeature = o;
    var a = function() {
        function t() {}
        return t.create = function(e, n) {
            void 0 === n && (n = []);
            var i = new t;
            return i[r.LicenseFeatureType.ROUTING] = new o(r.LicenseFeatureType.ROUTING,e.getString("Routing"),n.indexOf(r.LicenseFeatureType.ROUTING) >= 0),
            i[r.LicenseFeatureType.ANALYST] = new o(r.LicenseFeatureType.ANALYST,e.getString("Analyst"),n.indexOf(r.LicenseFeatureType.ANALYST) >= 0),
            i[r.LicenseFeatureType.JAVASCRIPT_API] = new o(r.LicenseFeatureType.JAVASCRIPT_API,e.getString("JavaScript API"),n.indexOf(r.LicenseFeatureType.JAVASCRIPT_API) >= 0),
            i[r.LicenseFeatureType.USER_MANAGEMENT] = new o(r.LicenseFeatureType.USER_MANAGEMENT,e.getString("User Authentication"),n.indexOf(r.LicenseFeatureType.USER_MANAGEMENT) >= 0),
            i
        }
        ,
        t
    }();
    e.LicenseFeatures = a
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(96)
      , a = n(252)
      , s = n(102)
      , c = n(4)
      , l = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.geoRegistered = !0,
            e.matrix = new c.Matrix4,
            e.scale = new c.Vector3,
            e
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "location_", {
            get: function() {
                return console.warn('Deprecated usage of "location_", use "location" instead.'),
                this.location
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "floor_location_", {
            get: function() {
                return console.warn('Deprecated usage of "floorLocation_", use "floorLocation" instead.'),
                this.floorLocation
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "orientation_", {
            get: function() {
                return console.warn('Deprecated usage of "orientation_", use "orientation" instead.'),
                this.orientation
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.resolveInjectables = function() {
            this.GeoTransformationService = this.injectables.GeoTransformationService
        }
        ,
        e.prototype.fill = function(e, n) {
            void 0 === n && (n = !1),
            t.prototype.fill.call(this, e, n),
            this.copyPose(e)
        }
        ,
        e.prototype.copyPose = function(t) {
            this.location = t.location ? t.location.clone() : void 0,
            this.floorLocation = t.floorLocation ? t.floorLocation.clone() : void 0,
            this.orientation = t.orientation ? t.orientation.clone() : void 0,
            this.dataset = t.dataset,
            this.datasetId = t.datasetId,
            this.datasetLocation = t.datasetLocation ? t.datasetLocation.clone() : void 0,
            this.datasetFloorLocation = t.datasetFloorLocation ? t.datasetFloorLocation.clone() : void 0,
            this.datasetOrientation = t.datasetOrientation ? t.datasetOrientation.clone() : void 0,
            this.datasetFloorOrientation = t.datasetFloorOrientation ? t.datasetFloorOrientation.clone() : void 0,
            this.floorOrientation = t.floorOrientation ? t.floorOrientation.clone() : void 0,
            this.globalLocation = t.globalLocation ? t.globalLocation.clone() : void 0,
            this.globalFloorLocation = t.globalFloorLocation ? t.globalFloorLocation.clone() : void 0,
            this.globalOrientation = t.globalOrientation ? t.globalOrientation.clone() : void 0,
            this.geoRegistered = t.geoRegistered
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.id = e.id,
            this.globalLocation = o.VectorFactory.fromArray3(e.location),
            this.globalFloorLocation = o.VectorFactory.fromArray3(e.floor_location),
            this.globalOrientation = a.QuaternionFactory.fromArray(e.orientation),
            this.globalFloorOrientation = a.QuaternionFactory.fromArray(e.floor_orientation),
            this.datasetId = e.dataset_id,
            this.datasetLocation = o.VectorFactory.fromArray3(e.dataset_location),
            this.datasetFloorLocation = o.VectorFactory.fromArray3(e.dataset_floor_location),
            this.datasetOrientation = a.QuaternionFactory.fromArray(e.dataset_orientation),
            this.datasetFloorOrientation = a.QuaternionFactory.fromArray(e.dataset_floor_orientation),
            this.globalLocation ? (this.computeLocalCoordinatesFromGlobal(),
            this.geoRegistered = !0) : this.geoRegistered = !1
        }
        ,
        e.prototype.onCreate = function() {
            t.prototype.onCreate.call(this),
            this.geoRegistered || (this.location = new c.Vector3,
            this.orientation = new c.Quaternion,
            this.floorLocation = new c.Vector3,
            this.computeCoordinatesFromDataset())
        }
        ,
        e.prototype.isAtPosition = function(t) {
            return this.location.distanceTo(t) < 1e-10
        }
        ,
        e.prototype.fillDto = function(e) {
            t.prototype.fillDto.call(this, e),
            e.id = this.id,
            e.location = o.VectorFactory.toArray(this.globalLocation),
            e.floor_location = o.VectorFactory.toArray(this.globalFloorLocation),
            e.orientation = a.QuaternionFactory.toArray(this.orientation),
            e.dataset_id = this.dataset ? this.dataset.id : void 0,
            e.dataset_location = o.VectorFactory.toArray(this.datasetLocation),
            e.dataset_floor_location = o.VectorFactory.toArray(this.datasetFloorLocation),
            e.dataset_orientation = a.QuaternionFactory.toArray(this.datasetOrientation),
            e.floor_orientation = a.QuaternionFactory.toArray(this.globalFloorOrientation),
            e.dataset_floor_orientation = a.QuaternionFactory.toArray(this.datasetFloorOrientation)
        }
        ,
        e.prototype.onReferenceSystemChangedEvent = function() {
            this.computeLocalCoordinatesFromGlobal()
        }
        ,
        e.prototype.computeCoordinatesFromDataset = function() {
            this.computeLocalCoordinatesFromDataset(),
            this.computeGlobalCoordinatesFromLocal()
        }
        ,
        e.prototype.computeLocalCoordinatesFromDataset = function() {
            this.scale.set(1, 1, 1),
            this.matrix.compose(this.datasetLocation, this.datasetOrientation, this.scale),
            this.matrix.premultiply(this.dataset.m2w_),
            this.location = this.location || new c.Vector3,
            this.orientation = this.orientation || new c.Quaternion,
            this.matrix.decompose(this.location, this.orientation, this.scale),
            this.datasetFloorLocation && (this.floorLocation = this.floorLocation || new c.Vector3,
            this.floorLocation.copy(this.datasetFloorLocation).applyMatrix4(this.dataset.m2w_)),
            this.datasetFloorOrientation && (this.floorOrientation = this.floorOrientation || new c.Quaternion,
            this.floorOrientation.setFromRotationMatrix(this.dataset.m2w_).multiply(this.datasetFloorOrientation))
        }
        ,
        e.prototype.computeLocalCoordinatesFromGlobal = function() {
            this.location = this.GeoTransformationService.vectorToLocal(this.globalLocation),
            this.floorLocation = this.GeoTransformationService.vectorToLocal(this.globalFloorLocation),
            this.orientation = this.globalOrientation ? this.globalOrientation.clone() : void 0,
            this.floorOrientation = this.globalFloorOrientation ? this.globalFloorOrientation.clone() : void 0
        }
        ,
        e.prototype.computeGlobalCoordinatesFromLocal = function() {
            this.globalLocation = this.GeoTransformationService.vectorToGlobal(this.location),
            this.globalFloorLocation = this.GeoTransformationService.vectorToGlobal(this.floorLocation),
            this.globalOrientation = this.orientation ? this.orientation.clone() : void 0,
            this.globalFloorOrientation = this.floorOrientation ? this.floorOrientation.clone() : void 0
        }
        ,
        e
    }(s.RepositoryObject);
    e.LocationEntity = l
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(378)
      , a = n(7)
      , s = n(96)
      , c = n(4)
      , l = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.initialize = function(t) {
            for (var e = 0, n = t.coordinates; e < n.length; e++) {
                for (var i = [], r = 0, o = n[e]; r < o.length; r++) {
                    var a = o[r]
                      , s = this.GeoTransformationService ? this.GeoTransformationService.toLocal(a[0], a[1]) : new c.Vector2(a[0],a[1]);
                    i.push(s)
                }
                0 === this.boundary.length ? this.boundary = i : this.holes.push(i)
            }
        }
        ,
        e.prototype.toData = function() {
            for (var t = [], e = [], n = 0, i = this.boundary; n < i.length; n++) {
                var r = i[n]
                  , o = this.GeoTransformationService.vector2ToGlobal(r);
                t.push(s.VectorFactory.toArray(o))
            }
            if (this.holes)
                for (var c = 0, l = this.holes; c < l.length; c++) {
                    var u = l[c];
                    if (u.length) {
                        for (var d = [], p = 0, h = u; p < h.length; p++) {
                            r = h[p],
                            o = this.GeoTransformationService.vector2ToGlobal(r);
                            d.push(s.VectorFactory.toArray(o))
                        }
                        e.push(d)
                    }
                }
            return {
                coordinates: a.concat([t], e),
                type: "Polygon"
            }
        }
        ,
        e.prototype.toLocalGeometry = function() {
            return this.toGeometry()
        }
        ,
        e
    }(o.Polygon);
    e.LocalPolygon = l
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(7)
      , r = n(4)
      , o = function() {
        function t(t, e) {
            this.GeoTransformationService = t,
            this.boundary = [],
            this.holes = [],
            e && this.initialize(e)
        }
        return t.prototype.initialize = function(t) {
            for (var e = 0, n = t.coordinates; e < n.length; e++) {
                for (var i = [], o = 0, a = n[e]; o < a.length; o++) {
                    var s = a[o];
                    i.push(new r.Vector2(s[0],s[1]))
                }
                0 === this.boundary.length ? this.boundary = i : this.holes.push(i)
            }
        }
        ,
        t.prototype.toData = function() {
            var t = i.map(this.boundary, (function(t) {
                return [t.x, t.y]
            }
            ))
              , e = [];
            if (this.holes)
                for (var n = 0, r = this.holes; n < r.length; n++) {
                    var o = r[n];
                    if (o.length) {
                        var a = i.map(o, (function(t) {
                            return [t.x, t.y]
                        }
                        ));
                        e.push(a)
                    }
                }
            return {
                coordinates: i.concat([t], e),
                type: "Polygon"
            }
        }
        ,
        t.prototype.toGeometry = function() {
            var t = new r.Shape;
            t.setFromPoints(this.boundary);
            for (var e = 0, n = this.holes; e < n.length; e++) {
                var i = n[e]
                  , o = new r.Path;
                o.setFromPoints(i),
                t.holes.push(o)
            }
            return new r.ShapeGeometry(t)
        }
        ,
        t.prototype.toLocalGeometry = function() {
            var t = new r.Shape;
            t.setFromPoints(this.GeoTransformationService.vectorArrayToLocal(this.boundary));
            for (var e = 0, n = this.holes; e < n.length; e++) {
                var i = n[e]
                  , o = new r.Path;
                o.setFromPoints(this.GeoTransformationService.vectorArrayToLocal(i)),
                t.holes.push(o)
            }
            return new r.ShapeGeometry(t)
        }
        ,
        t.prototype.copy = function(t) {
            this.boundary = i.clone(t.boundary),
            this.holes = i.clone(t.holes)
        }
        ,
        t.prototype.clone = function() {
            var e = new t(this.GeoTransformationService);
            return e.copy(this),
            e
        }
        ,
        t.prototype.getFirstPoint = function() {
            return this.boundary[0]
        }
        ,
        t.prototype.area = function() {
            return r.ShapeUtils.area(this.boundary) - this.holes.map((function(t) {
                return r.ShapeUtils.area(t)
            }
            )).reduce((function(t, e) {
                return t + e
            }
            ), 0)
        }
        ,
        t
    }();
    e.Polygon = o;
    var a = function() {
        this.type = "Polygon"
    };
    e.PolygonRest = a
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(7)
      , o = n(55)
      , a = n(6)
      , s = n(0)
      , c = n(0)
      , l = function() {
        function t(t) {
            this.gettext = t,
            this.ATTRIBUTES = {
                BUILDING: {
                    type: o.SiteModelType.BUILDING,
                    displayName: this.gettext("Building"),
                    isChangeable: !1,
                    icon: n(633),
                    iconWithBg: n(1043)
                },
                FLOOR: {
                    type: o.SiteModelType.FLOOR,
                    displayName: this.gettext("Floor"),
                    isChangeable: !1,
                    icon: n(634),
                    iconWithBg: n(1044)
                },
                ROOM: {
                    type: o.SiteModelType.ROOM,
                    displayName: this.gettext("Room"),
                    isChangeable: !0,
                    icon: n(635),
                    iconWithBg: n(1045)
                },
                FREE_SPACE_NAVIGATION: {
                    type: o.SiteModelType.FREE_SPACE_NAVIGATION,
                    displayName: this.gettext("Free space navigation"),
                    isChangeable: !1,
                    icon: n(529),
                    iconWithBg: n(530)
                },
                CUSTOM: {
                    type: o.SiteModelType.CUSTOM,
                    displayName: this.gettext("Custom"),
                    isChangeable: !0,
                    icon: n(529),
                    iconWithBg: n(530)
                }
            }
        }
        return t.prototype.getTypeAttributes = function(t) {
            return this.ATTRIBUTES[t]
        }
        ,
        t.prototype.getChangeableTypes = function() {
            return r.filter(this.ATTRIBUTES, (function(t) {
                return t.isChangeable
            }
            ))
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(c.ɵɵinject("gettext"))
        }
        ,
        t.ɵprov = c.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.SiteModelTypeService = l,
    c.ɵsetClassMetadata(l, [{
        type: s.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: void 0,
            decorators: [{
                type: s.Inject,
                args: ["gettext"]
            }]
        }]
    }
    ), null),
    i.module("IVWebApp").service("SiteModelTypeService", a.downgradeInjectable(l))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function(t, e, n, i) {
        this.geodetic = t,
        this.name = e,
        this.description = n,
        this.proj4def = i
    };
    e.ReferenceSystem = i
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e(n) {
            var i = t.call(this, n) || this;
            return Object.setPrototypeOf(i, e.prototype),
            i
        }
        return r(e, t),
        e
    }(Error);
    e.TransformException = o;
    var a = function(t) {
        function e(n) {
            var i = t.call(this, n) || this;
            return Object.setPrototypeOf(i, e.prototype),
            i
        }
        return r(e, t),
        e
    }(o);
    e.DuplicateTransformException = a;
    var s = function(t) {
        function e(n) {
            var i = t.call(this, n) || this;
            return Object.setPrototypeOf(i, e.prototype),
            i
        }
        return r(e, t),
        e
    }(o);
    e.DuplicateReferenceSystemException = s;
    var c = function(t) {
        function e(n) {
            var i = t.call(this, n) || this;
            return Object.setPrototypeOf(i, e.prototype),
            i
        }
        return r(e, t),
        e
    }(o);
    e.RedundantTransformException = c;
    var l = function(t) {
        function e(n) {
            var i = t.call(this, n) || this;
            return Object.setPrototypeOf(i, e.prototype),
            i
        }
        return r(e, t),
        e
    }(o);
    e.TransformNotFoundException = l;
    var u = function(t) {
        function e(n) {
            var i = t.call(this, n) || this;
            return Object.setPrototypeOf(i, e.prototype),
            i
        }
        return r(e, t),
        e
    }(o);
    e.ReferenceSystemNotFoundException = u
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(4)
      , r = function() {
        function t(t, e, n) {
            this.source = t,
            this.target = e,
            this.T = n,
            this.quaternion = new i.Quaternion,
            this.vector = new i.Vector3,
            this.quaternion.setFromRotationMatrix(n)
        }
        return t.prototype.getInverse = function() {
            return new t(this.target,this.source,(new i.Matrix4).getInverse(this.T))
        }
        ,
        t.prototype.transform = function(t) {
            return t instanceof i.Vector2 ? (this.vector.set(t.x, t.y, 0),
            this.vector.applyMatrix4(this.T),
            t.set(this.vector.x, this.vector.y)) : t.applyMatrix4(this.T),
            t
        }
        ,
        t.prototype.transformQuaternion = function(t) {
            return t.premultiply(this.quaternion)
        }
        ,
        t
    }();
    e.AffineTransform = r
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(70)
      , a = n(534)
      , s = function(t) {
        function e(e, n, i) {
            var r = t.call(this, e, n) || this;
            return r.GeoTransformationService = i,
            r.injectables.GeoTransformationService = r.GeoTransformationService,
            r.transformLocationAction = new a.TransformLocationRepositoryAction(r),
            r.GeoTransformationService.offsetChanged.connect((function() {
                return r.transformLocationAction.perform()
            }
            )),
            r
        }
        return r(e, t),
        e
    }(o.RestRepository);
    e.ReferenceSystemAwareRestRepository = s
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.ENGLISH = "en",
        t.GERMAN = "de",
        t.CHINESE_TRADITIONAL = "zh_tw",
        t.CHINESE = "zh",
        t.JAPANESE = "ja",
        t.CZECH = "cs",
        t.HUNGARIAN = "hu",
        t.TURKISH = "tr",
        t.FRENCH = "fr"
    }(e.UiLanguage || (e.UiLanguage = {})),
    function(t) {
        t.COMMA = ",",
        t.POINT = "."
    }(e.DecimalSeparators || (e.DecimalSeparators = {})),
    function(t) {
        t.ABKHAZ = "ab",
        t.AFAR = "aa",
        t.AFRIKAANS = "af",
        t.AKAN = "ak",
        t.ALBANIAN = "sq",
        t.AMHARIC = "am",
        t.ARABIC = "ar",
        t.ARAGONESE = "an",
        t.ARMENIAN = "hy",
        t.ASSAMESE = "as",
        t.AVARIC = "av",
        t.AVESTAN = "ae",
        t.AYMARA = "ay",
        t.AZERBAIJANI = "az",
        t.BAMBARA = "bm",
        t.BASHKIR = "ba",
        t.BASQUE = "eu",
        t.BELARUSIAN = "be",
        t.BENGALI = "bn",
        t.BIHARI = "bh",
        t.BISLAMA = "bi",
        t.BOSNIAN = "bs",
        t.BRETON = "br",
        t.BULGARIAN = "bg",
        t.BURMESE = "my",
        t.CATALAN = "ca",
        t.VALENCIAN = "ca",
        t.CHAMORRO = "ch",
        t.CHECHEN = "ce",
        t.CHICHEWA = "ny",
        t.CHEWA = "ny",
        t.NYANJA = "ny",
        t.CHINESE = "zh",
        t.CHINESE_TRADITIONAL = "zh_tw",
        t.CHUVASH = "cv",
        t.CORNISH = "kw",
        t.CORSICAN = "co",
        t.CREE = "cr",
        t.CROATIAN = "hr",
        t.CZECH = "cs",
        t.DANISH = "da",
        t.DIVEHI = "dv",
        t.DHIVEHI = "dv",
        t.MALDIVIAN = "dv",
        t.DUTCH = "nl",
        t.ENGLISH = "en",
        t.ESPERANTO = "eo",
        t.ESTONIAN = "et",
        t.EWE = "ee",
        t.FAROESE = "fo",
        t.FIJIAN = "fj",
        t.FINNISH = "fi",
        t.FRENCH = "fr",
        t.FULA = "ff",
        t.FULAH = "ff",
        t.PULAAR = "ff",
        t.PULAR = "ff",
        t.GALICIAN = "gl",
        t.GEORGIAN = "ka",
        t.GERMAN = "de",
        t.GREEK_MODERN = "el",
        t["GUARANÍ"] = "gn",
        t.GUJARATI = "gu",
        t.HAITIAN = "ht",
        t.HAITIAN_CREOLE = "ht",
        t.HAUSA = "ha",
        t.HEBREW_MODERN = "he",
        t.HERERO = "hz",
        t.HINDI = "hi",
        t.HIRI_MOTU = "ho",
        t.HUNGARIAN = "hu",
        t.INTERLINGUA = "ia",
        t.INDONESIAN = "id",
        t.INTERLINGUE = "ie",
        t.IRISH = "ga",
        t.IGBO = "ig",
        t.INUPIAQ = "ik",
        t.IDO = "io",
        t.ICELANDIC = "is",
        t.ITALIAN = "it",
        t.INUKTITUT = "iu",
        t.JAPANESE = "ja",
        t.JAVANESE = "jv",
        t.KALAALLISUT = "kl",
        t.GREENLANDIC = "kl",
        t.KANNADA = "kn",
        t.KANURI = "kr",
        t.KASHMIRI = "ks",
        t.KAZAKH = "kk",
        t.KHMER = "km",
        t.KIKUYU = "ki",
        t.GIKUYU = "ki",
        t.KINYARWANDA = "rw",
        t.KIRGHIZ = "ky",
        t.KYRGYZ = "ky",
        t.KOMI = "kv",
        t.KONGO = "kg",
        t.KOREAN = "ko",
        t.KURDISH = "ku",
        t.KWANYAMA = "kj",
        t.KUANYAMA = "kj",
        t.LATIN = "la",
        t.LUXEMBOURGISH = "lb",
        t.LETZEBURGESCH = "lb",
        t.LUGANDA = "lg",
        t.LIMBURGISH = "li",
        t.LIMBURGAN = "li",
        t.LIMBURGER = "li",
        t.LINGALA = "ln",
        t.LAO = "lo",
        t.LITHUANIAN = "lt",
        t.LUBA_KATANGA = "lu",
        t.LATVIAN = "lv",
        t.MANX = "gv",
        t.MACEDONIAN = "mk",
        t.MALAGASY = "mg",
        t.MALAY = "ms",
        t.MALAYALAM = "ml",
        t.MALTESE = "mt",
        t.MAORI = "mi",
        t.MARATHI = "mr",
        t.MARSHALLESE = "mh",
        t.MONGOLIAN = "mn",
        t.NAURU = "na",
        t.NAVAJO = "nv",
        t.NAVAHO = "nv",
        t.NORWEGIAN_BOKMAL = "nb",
        t.NDEBELE_NORTH = "nd",
        t.NEPALI = "ne",
        t.NDONGA = "ng",
        t.NORWEGIAN_NYNORSK = "nn",
        t.NORWEGIAN = "no",
        t.NUOSU = "ii",
        t.NDEBELE_SOUTH = "nr",
        t.OCCITAN = "oc",
        t.OJIBWE = "oj",
        t.OJIBWA = "oj",
        t.SLAVONIC_OLD_CHURCH = "cu",
        t.OROMO = "om",
        t.ORIYA = "or",
        t.OSSETIAN = "os",
        t.OSSETIC = "os",
        t.PANJABI = "pa",
        t.PUNJABI = "pa",
        t.PALI = "pi",
        t.PERSIAN = "fa",
        t.POLISH = "pl",
        t.PASHTO = "ps",
        t.PUSHTO = "ps",
        t.PORTUGUESE = "pt",
        t.QUECHUA = "qu",
        t.ROMANSH = "rm",
        t.KIRUNDI = "rn",
        t.ROMANIAN = "ro",
        t.MOLDAVIAN = "ro",
        t.MOLDOVAN = "ro",
        t.RUSSIAN = "ru",
        t.SANSKRIT = "sa",
        t.SARDINIAN = "sc",
        t.SINDHI = "sd",
        t.SAMI_NORTHERN = "se",
        t.SAMOAN = "sm",
        t.SANGO = "sg",
        t.SERBIAN = "sr",
        t.SCOTTISH_GAELIC = "gd",
        t.GAELIC = "gd",
        t.SHONA = "sn",
        t.SINHALA = "si",
        t.SINHALESE = "si",
        t.SLOVAK = "sk",
        t.SLOVENE = "sl",
        t.SOMALI = "so",
        t.SOTHO_SOUTHERN = "st",
        t.SPANISH = "es",
        t.CASTILIAN = "es",
        t.SUNDANESE = "su",
        t.SWAHILI = "sw",
        t.SWATI = "ss",
        t.SWEDISH = "sv",
        t.TAMIL = "ta",
        t.TELUGU = "te",
        t.TAJIK = "tg",
        t.THAI = "th",
        t.TIGRINYA = "ti",
        t.TIBETAN_STANDARD = "bo",
        t.TIBETAN_CENTRAL = "bo",
        t.TURKMEN = "tk",
        t.TAGALOG = "tl",
        t.TSWANA = "tn",
        t.TONGA = "to",
        t.TURKISH = "tr",
        t.TSONGA = "ts",
        t.TATAR = "tt",
        t.TWI = "tw",
        t.TAHITIAN = "ty",
        t.UIGHUR = "ug",
        t.UYGHUR = "ug",
        t.UKRAINIAN = "uk",
        t.URDU = "ur",
        t.UZBEK = "uz",
        t.VENDA = "ve",
        t.VIETNAMESE = "vi",
        t.VOLAPUEK = "vo",
        t.WALLOON = "wa",
        t.WELSH = "cy",
        t.WOLOF = "wo",
        t.FRISIAN_WESTERN = "fy",
        t.XHOSA = "xh",
        t.YIDDISH = "yi",
        t.YORUBA = "yo",
        t.ZHUANG = "za",
        t.CHUANG = "za"
    }(e.DataLanguage || (e.DataLanguage = {}))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(6)
      , o = n(0)
      , a = n(0)
      , s = function() {
        function t(t) {
            t.NUMBER_FORMATS.GROUP_SEP = 1e3.toLocaleString().replace(/[0-9]/g, ""),
            t.NUMBER_FORMATS.DECIMAL_SEP = .5.toLocaleString().replace(/[0-9]/g, "")
        }
        return t.ɵfac = function(e) {
            return new (e || t)(a.ɵɵinject("$locale"))
        }
        ,
        t.ɵprov = a.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.ApplyBrowserLocaleService = s,
    a.ɵsetClassMetadata(s, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: void 0,
            decorators: [{
                type: o.Inject,
                args: ["$locale"]
            }]
        }]
    }
    ), null),
    i.module("IVWebApp").service("ApplyBrowserLocaleService", r.downgradeInjectable(s))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(4);
    e.GUIDE_LINE_COLOR_HEX = "#FFFFFF",
    e.GUIDE_LINE_COLOR = new i.Color(e.GUIDE_LINE_COLOR_HEX),
    e.MEASUREMENT_MATERIAL_COLOR_HEX = "#3399C8",
    e.MEASUREMENT_MATERIAL_COLOR = new i.Color(e.MEASUREMENT_MATERIAL_COLOR_HEX),
    e.MEASUREMENT_HIGHLIGHT_MATERIAL_COLOR_HEX = "#7BD4F6",
    e.MEASUREMENT_HIGHLIGHT_MATERIAL_COLOR = new i.Color(e.MEASUREMENT_HIGHLIGHT_MATERIAL_COLOR_HEX),
    e.OBSCURED_MEASUREMENT_MATERIAL_COLOR_HEX = "#777777",
    e.OBSCURED_MEASUREMENT_MATERIAL_COLOR = new i.Color(e.OBSCURED_MEASUREMENT_MATERIAL_COLOR_HEX)
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.NONE = "",
        t.AUTO = "auto",
        t.DEFAULT = "default",
        t.CROSSHAIR = "crosshair",
        t.NOT_ALLOWED = "not-allowed",
        t.POINTER = "pointer"
    }(e.MouseCursorStyle || (e.MouseCursorStyle = {}))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.CYRILLIC = "PTSans-Regular",
        t.JAPANESE = "NotoSansCJKjp-Regular",
        t.CHINESE_SIMPLIFIED = "NotoSansCJKtc-Regular",
        t.CHINESE_TRADITIONAL = "NotoSansCJKsc-Regular",
        t.DEFAULT = "Helvetica"
    }(e.SupportedFont || (e.SupportedFont = {}))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(28),
    n(394),
    n(262),
    n(49),
    n(550));
    n(73),
    n(219),
    n(139),
    n(41),
    n(15),
    n(201),
    n(200),
    n(404),
    n(405),
    n(24),
    n(39),
    n(267),
    n(406),
    n(320);
    n(320);
    n(17);
    n(219);
    n(91),
    n(22),
    n(106);
    var o = n(6)
      , a = n(0)
      , s = (n(571),
    n(140),
    n(166),
    n(27),
    n(21),
    n(574),
    n(65),
    n(579),
    n(31),
    n(83),
    n(0))
      , c = n(17)
      , l = n(320)
      , u = n(404)
      , d = n(571)
      , p = n(574)
      , h = n(579)
      , f = n(405)
      , m = n(49)
      , g = n(201)
      , v = n(406)
      , y = n(267)
      , b = n(39)
      , w = n(139)
      , S = n(200)
      , x = n(73)
      , M = n(65)
      , E = n(15)
      , C = n(262)
      , A = n(394)
      , T = n(28)
      , O = n(219)
      , _ = n(41)
      , P = n(24)
      , I = n(22)
      , k = n(106)
      , D = n(91)
      , R = n(140)
      , L = n(21)
      , N = n(166)
      , j = n(27)
      , V = n(31)
      , F = n(83)
      , U = function() {
        function t(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g, v, y, b, w, S, x, M, E, C, A, T, O, _, P, I, k, D, R, L, N, j, V, F) {
            this.ViewService = t,
            this.AlignmentHelpersFactory = e,
            this.IvCameraImageLayerFactory = n,
            this.VolumeClippingLayerFactory = i,
            this.MeasurementsLayerFactory = r,
            this.MagnificationLayerFactory = o,
            this.CursorLayerFactory = a,
            this.ImageService = s,
            this.IV = c,
            this.LocationMarkerLayerFactory = l,
            this.NavGraphLayerFactory = u,
            this.PolygonLayerFactory = d,
            this.PoiLayerFactory = p,
            this.PoiService = h,
            this.RaycastService = f,
            this.RouteLayerFactory = m,
            this.UrlService = g,
            this.ViewMenuService = v,
            this.ConfigService = y,
            this.PointCloudMenuService = b,
            this.MapLayerFactory = w,
            this.SiteModelLayerFactory = S,
            this.hotkeys = x,
            this.gettext = M,
            this.FloorChangerService = E,
            this.CameraFOVLayerFactory = C,
            this.ErrorService = A,
            this.ModeService = T,
            this.SiteModelRepository = O,
            this.ProgressReportService = _,
            this.CursorService = P,
            this.SystemJsNgModuleLoader = I,
            this.DownloadPointCloudService = k,
            this.TrackingService = D,
            this.TiledMapRepository = R,
            this.gettextCatalog = L,
            this.UserService = N,
            this.DatasetRepository = j,
            this.SiteModelService = V,
            this.injector = F
        }
        return t.prototype.create = function(t) {
            return new r.MainView(t,this.ViewService,this.AlignmentHelpersFactory,this.IvCameraImageLayerFactory,this.VolumeClippingLayerFactory,this.MeasurementsLayerFactory,this.MagnificationLayerFactory,this.CursorLayerFactory,this.ImageService,this.IV,this.LocationMarkerLayerFactory,this.NavGraphLayerFactory,this.PolygonLayerFactory,this.PoiLayerFactory,this.PoiService,this.RaycastService,this.RouteLayerFactory,this.UrlService,this.ViewMenuService,this.ConfigService,this.PointCloudMenuService,this.MapLayerFactory,this.SiteModelLayerFactory,this.hotkeys,this.gettext,this.FloorChangerService,this.CameraFOVLayerFactory,this.ErrorService,this.ModeService,this.CursorService,this.ProgressReportService,this.SiteModelRepository,this.SystemJsNgModuleLoader,this.DownloadPointCloudService,this.TrackingService,this.TiledMapRepository,this.gettextCatalog,this.UserService,this.DatasetRepository,this.SiteModelService,this.injector)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(s.ɵɵinject(c.ViewService),s.ɵɵinject(l.AlignmentHelpersFactory),s.ɵɵinject(u.IvCameraImageLayerFactory),s.ɵɵinject(d.VolumeClippingLayerFactory),s.ɵɵinject(p.MeasurementsLayerFactory),s.ɵɵinject(h.MagnificationLayerFactory),s.ɵɵinject(f.CursorLayerFactory),s.ɵɵinject(m.ImageService),s.ɵɵinject("IV"),s.ɵɵinject(g.LocationMarkerLayerFactory),s.ɵɵinject(v.NavGraphLayerFactory),s.ɵɵinject("PolygonLayerFactory"),s.ɵɵinject(y.PoiLayerFactory),s.ɵɵinject(b.PoiService),s.ɵɵinject(w.RaycastService),s.ɵɵinject(S.RouteLayerFactory),s.ɵɵinject(x.UrlService),s.ɵɵinject(M.ViewMenuService),s.ɵɵinject(E.ConfigService),s.ɵɵinject("PointCloudMenuService"),s.ɵɵinject(C.MapLayerFactory),s.ɵɵinject(A.SiteModelLayerFactory),s.ɵɵinject("hotkeys"),s.ɵɵinject("gettext"),s.ɵɵinject(T.FloorChangerService),s.ɵɵinject(O.CameraFOVLayerFactory),s.ɵɵinject(_.ErrorService),s.ɵɵinject(P.ModeService),s.ɵɵinject(I.SiteModelRepository),s.ɵɵinject(k.ProgressReportService),s.ɵɵinject(D.CursorService),s.ɵɵinject(s.SystemJsNgModuleLoader),s.ɵɵinject(R.DownloadPointCloudService),s.ɵɵinject(L.TrackingService),s.ɵɵinject(N.TiledMapRepository),s.ɵɵinject("gettextCatalog"),s.ɵɵinject(j.UserService),s.ɵɵinject(V.DatasetRepository),s.ɵɵinject(F.SiteModelService),s.ɵɵinject(s.Injector))
        }
        ,
        t.ɵprov = s.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.MainViewService = U,
    s.ɵsetClassMetadata(U, [{
        type: a.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: c.ViewService
        }, {
            type: l.AlignmentHelpersFactory
        }, {
            type: u.IvCameraImageLayerFactory
        }, {
            type: d.VolumeClippingLayerFactory
        }, {
            type: p.MeasurementsLayerFactory
        }, {
            type: h.MagnificationLayerFactory
        }, {
            type: f.CursorLayerFactory
        }, {
            type: m.ImageService
        }, {
            type: void 0,
            decorators: [{
                type: a.Inject,
                args: ["IV"]
            }]
        }, {
            type: g.LocationMarkerLayerFactory
        }, {
            type: v.NavGraphLayerFactory
        }, {
            type: void 0,
            decorators: [{
                type: a.Inject,
                args: ["PolygonLayerFactory"]
            }]
        }, {
            type: y.PoiLayerFactory
        }, {
            type: b.PoiService
        }, {
            type: w.RaycastService
        }, {
            type: S.RouteLayerFactory
        }, {
            type: x.UrlService
        }, {
            type: M.ViewMenuService
        }, {
            type: E.ConfigService
        }, {
            type: void 0,
            decorators: [{
                type: a.Inject,
                args: ["PointCloudMenuService"]
            }]
        }, {
            type: C.MapLayerFactory
        }, {
            type: A.SiteModelLayerFactory
        }, {
            type: void 0,
            decorators: [{
                type: a.Inject,
                args: ["hotkeys"]
            }]
        }, {
            type: void 0,
            decorators: [{
                type: a.Inject,
                args: ["gettext"]
            }]
        }, {
            type: T.FloorChangerService
        }, {
            type: O.CameraFOVLayerFactory
        }, {
            type: _.ErrorService
        }, {
            type: P.ModeService
        }, {
            type: I.SiteModelRepository
        }, {
            type: k.ProgressReportService
        }, {
            type: D.CursorService
        }, {
            type: s.SystemJsNgModuleLoader
        }, {
            type: R.DownloadPointCloudService
        }, {
            type: L.TrackingService
        }, {
            type: N.TiledMapRepository
        }, {
            type: void 0,
            decorators: [{
                type: a.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: j.UserService
        }, {
            type: V.DatasetRepository
        }, {
            type: F.SiteModelService
        }, {
            type: s.Injector
        }]
    }
    ), null),
    i.module("IVWebApp").service("MainViewService", o.downgradeInjectable(U))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i, r, o, a, s, c, l, u = n(2), d = (n(14),
    n(152)), p = (n(15),
    n(54),
    n(25)), h = n(92), f = (n(17),
    n(39),
    n(20)), m = n(8), g = n(6), v = n(0), y = n(0), b = n(17), w = n(39), S = n(15), x = n(54), M = n(14);
    !function(t) {
        t.LOCATION = "location",
        t.POI = "poi",
        t.FLOOR = "floor",
        t.SEARCH = "search",
        t.SCENE = "scene",
        t.ROUTE = "route"
    }(i || (i = {})),
    function(t) {
        t.CHANGE = "change"
    }(r || (r = {})),
    function(t) {
        t.SELECTED = "selected",
        t.CLOSED = "closed"
    }(o || (o = {})),
    function(t) {
        t.CHANGE = "change"
    }(a || (a = {})),
    function(t) {
        t.HIDERESULTS = "hideResults"
    }(s || (s = {})),
    function(t) {
        t.ZOOMED = "zoomed",
        t.CLICK_ON_MAP = "clickOnMap",
        t.MAP_DRAGGED = "mapDragged"
    }(c || (c = {})),
    function(t) {
        t.ROUTE_REVERSED = "routeReversed",
        t.ROUTE_MENU_CLOSED = "routeMenuClosed",
        t.ROUTE_INITIATED = "routeInitiated"
    }(l || (l = {}));
    var E = function() {
        function t(t, e, n, i, r) {
            this.ViewService = t,
            this.PoiService = e,
            this.ConfigService = n,
            this.LicenseService = i,
            this.GeoTransformationService = r,
            this.searchResults = 0,
            this.previousSearch = ""
        }
        return t.prototype.setupTrackingScript = function() {
            var t = this;
            return Promise.all([this.ConfigService.initialized, this.LicenseService.initialized]).then((function() {
                var e = !0
                  , n = t.ConfigService.getLicensableConfigFeature(p.Configs.TRACKING_ENABLED);
                if (n && (e = t.LicenseService.isFeatureEnabled(n)),
                !(e && t.ConfigService.getBoolean(p.Configs.TRACKING_ENABLED, !1)))
                    return Promise.reject("");
                var i = t.ConfigService.getString(p.Configs.TRACKING_CODE, void 0);
                return f.isBlank(i) ? (console.warn("Tracking has been enabled but no tracking code has been set. No events will be logged."),
                Promise.reject("")) : (-1 === i.indexOf("<script") && (i = '<script type="text/javascript">' + i + "<\/script>"),
                u.element("head").append(i),
                Promise.resolve())
            }
            )).catch(m.handleWarning)
        }
        ,
        t.prototype.isPiwikTrackingUpAndRunning = function() {
            return this.LicenseService.isFeatureEnabled(h.LicenseFeatureType.ANALYST) && this.ConfigService.getBoolean(p.Configs.TRACKING_ENABLED, !1) && void 0 !== window._paq && void 0 !== window.Piwik
        }
        ,
        t.prototype.trackImageTransition = function(t, e, n) {
            this.trackEvent(i.LOCATION, r.CHANGE, t + ";" + e, n)
        }
        ,
        t.prototype.trackPoiOpen = function(t) {
            this.trackEvent(i.POI, o.SELECTED, t.id + ";" + t.title)
        }
        ,
        t.prototype.trackPoiClose = function(t) {
            this.trackEvent(i.POI, o.CLOSED, t.id + ";" + t.title)
        }
        ,
        t.prototype.trackPoiSearchResults = function(t, e, n) {
            var i = e ? e.toLowerCase() : "";
            this.isPiwikTrackingUpAndRunning() && Piwik.getAsyncTracker().trackSiteSearch(i, t, n)
        }
        ,
        t.prototype.trackHideResults = function() {
            this.trackEvent(i.SEARCH, s.HIDERESULTS, this.previousSearch, this.searchResults)
        }
        ,
        t.prototype.trackZoom = function(t) {
            var e = t ? "zoomIn" : "zoomOut";
            this.trackEvent(i.SCENE, c.ZOOMED, e)
        }
        ,
        t.prototype.trackReverseRoute = function(t, e) {
            var n = void 0 === t ? "undefined" : t.id
              , r = void 0 === t ? "undefined" : t.title
              , o = void 0 === e ? "undefined" : e.id
              , a = void 0 === e ? "undefined" : e.title;
            this.trackEvent(i.ROUTE, l.ROUTE_REVERSED, "New route is from (" + n + ": " + r + ") to (" + o + ": " + a + ")")
        }
        ,
        t.prototype.trackCloseRouteMenu = function() {
            this.trackEvent(i.ROUTE, l.ROUTE_MENU_CLOSED, "exitedRoute")
        }
        ,
        t.prototype.trackRouteInitiation = function(t) {
            this.trackEvent(i.ROUTE, l.ROUTE_INITIATED, "destination: " + String(t.title), t.id)
        }
        ,
        t.prototype.trackFloorChange = function(t, e, n, r) {
            if (void 0 !== t && void 0 !== e) {
                var o;
                t.length > 0 && e.length > 0 && (o = t[0].zMin - e[0].zMin);
                var s = 0
                  , c = "";
                o > 0 ? (s = -1,
                c = "down") : o < 0 ? (s = 1,
                c = "up") : (s = 0,
                c = "samelevel"),
                this.trackEvent(i.FLOOR, a.CHANGE, n + " to " + r + " (" + c + ")", s)
            }
        }
        ,
        t.prototype.trackDragging = function(t, e) {
            if (e) {
                var n = this.GeoTransformationService.vectorToGlobal(e).toArray();
                this.trackEvent(i.SCENE, c.MAP_DRAGGED, t + ", Camera: (" + n + ")")
            }
        }
        ,
        t.prototype.trackMapClick = function(t) {
            if (t) {
                var e = this.GeoTransformationService.vectorToGlobal(t).toArray();
                this.trackEvent(i.SCENE, c.CLICK_ON_MAP, "clicked at: (" + e + ")")
            }
        }
        ,
        t.prototype.trackEvent = function(t, e, n, i) {
            this.isPiwikTrackingUpAndRunning() && (n = n + ";" + d.getBaseUrl(),
            _paq.push(["trackEvent", t, e, n, i]))
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(y.ɵɵinject(b.ViewService),y.ɵɵinject(w.PoiService),y.ɵɵinject(S.ConfigService),y.ɵɵinject(x.LicenseService),y.ɵɵinject(M.GeoTransformationService))
        }
        ,
        t.ɵprov = y.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.PiwikService = E,
    y.ɵsetClassMetadata(E, [{
        type: v.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: b.ViewService
        }, {
            type: w.PoiService
        }, {
            type: S.ConfigService
        }, {
            type: x.LicenseService
        }, {
            type: M.GeoTransformationService
        }]
    }
    ), null),
    u.module("IVWebApp").service("PiwikService", g.downgradeInjectable(E))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = (n(50),
    n(70))
      , s = n(260)
      , c = (n(9),
    n(22),
    n(135))
      , l = (n(123),
    n(6))
      , u = n(0)
      , d = n(0)
      , p = n(50)
      , h = n(9)
      , f = n(22)
      , m = n(123)
      , g = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, s.PoiSearchEntity, n) || this;
            return o.LanguageService = e,
            o.RestService = n,
            o.path = "search/poi",
            c.EntityRelationMapper.manyToOne(o, "siteModelEntity", "siteModelEntityId", i),
            c.EntityRelationMapper.manyToOne(o, "poiType", "poiTypeId", r),
            o
        }
        return r(e, t),
        e.prototype.search = function(t, e, n) {
            var i = this;
            return void 0 === n && (n = 0),
            this.RestService.getApi(this.path, {
                query: t,
                size: e,
                from: n,
                lang: this.LanguageService.getCurrentLanguage()
            }, void 0, !1).then((function(t) {
                return i.transformResponse(t)
            }
            )).then((function(t) {
                return i.emitCreatedEvent(t),
                t
            }
            ))
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(d.ɵɵinject(p.LanguageService),d.ɵɵinject(h.RestService),d.ɵɵinject(f.SiteModelRepository),d.ɵɵinject(m.PoiTypeRepository))
        }
        ,
        e.ɵprov = d.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(a.RestRepository);
    e.PoiSearchRepository = g,
    d.ɵsetClassMetadata(g, [{
        type: u.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: p.LanguageService
        }, {
            type: h.RestService
        }, {
            type: f.SiteModelRepository
        }, {
            type: m.PoiTypeRepository
        }]
    }
    ), null),
    o.module("IVWebApp").service("PoiSearchRepository", l.downgradeInjectable(g))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.LOCATION = "location",
        t.POI = "poi",
        t.SME = "sme",
        t.CUSTOM_LOCATION = "custom-location"
    }(e.ShareType || (e.ShareType = {}))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i, r = n(212), o = n(4), a = new o.Vector3;
    e.applyKeyboardInputToCamera = function(t, e) {
        var n = (new Date).getTime()
          , s = n - (i || n);
        i = n;
        var c = e.matrix.elements
          , l = new o.Vector3(c[0],c[1],c[2])
          , u = new o.Vector3(c[4],c[5],c[6])
          , d = new o.Vector3(c[8],c[9],c[10])
          , p = 1;
        e instanceof o.PerspectiveCamera ? p = e.fov / 1e3 : e instanceof o.OrthographicCamera && (p = (e.right - e.left) / 300),
        t.isKeyPressed(r.KeyEvent.DOM_VK_SHIFT) && (p *= 5);
        var h = new o.Vector3(0,0,0)
          , f = e instanceof o.PerspectiveCamera;
        t.isKeyPressed(r.KeyEvent.DOM_VK_A) && h.sub(l),
        t.isKeyPressed(r.KeyEvent.DOM_VK_D) && h.add(l),
        t.isKeyPressed(f ? r.KeyEvent.DOM_VK_Q : r.KeyEvent.DOM_VK_W) && h.add(u),
        t.isKeyPressed(f ? r.KeyEvent.DOM_VK_E : r.KeyEvent.DOM_VK_S) && h.sub(u),
        t.isKeyPressed(f ? r.KeyEvent.DOM_VK_S : r.KeyEvent.DOM_VK_Q) && h.add(d),
        t.isKeyPressed(f ? r.KeyEvent.DOM_VK_W : r.KeyEvent.DOM_VK_E) && h.sub(d);
        var m = h.lengthSq() > 0;
        return m && (a.lengthSq() > 0 && (p *= s / 16),
        h.setLength(p),
        e.position.add(h)),
        a = h,
        m
    }
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(80);
    n(83);
    n(199);
    n(199),
    n(22);
    var s = n(67)
      , c = n(1121)
      , l = n(1123)
      , u = n(1124)
      , d = n(101)
      , p = n(24)
      , h = n(4)
      , f = n(546)
      , m = n(52)
      , g = n(55)
      , v = n(6)
      , y = n(0)
      , b = n(0)
      , w = n(22)
      , S = n(83)
      , x = n(199)
      , M = n(24)
      , E = function(t) {
        function e(e, i, r, o) {
            var a = t.call(this, e, i, r) || this;
            return a.params = r,
            a.factory = o,
            a.meshGroup = new h.Group,
            a.unselectedFloorMeshGroup = new h.Group,
            a.handleGroup = new h.Group,
            a.bottomLineGroup = new h.Group,
            a.verticalLineGroup = new h.Group,
            a.topLineGroup = new h.Group,
            a.snappingLineGroup = new h.Group,
            a.rectLineGroup = new h.Group,
            a.unselectedMeshGroup = new h.Group,
            a.unselectedMeshMap = {},
            a.VERTICAL_LINE_MESH_NAME = "vertical-line",
            a.TOP_LINE_MESH_NAME = "top-line",
            a.BOTTOM_LINE_MESH_NAME = "bottom-line",
            a.EXTRUDED_MESH_NAME = "extruded",
            a.RECTLINE_MESH_NAME = "rect-line",
            a.raycaster = new f.InvisibleRaycaster,
            a.handleGeometry = new h.CircleGeometry(2,16),
            a.gridTexture = d.getTextureLoader().load(n(1125), (function() {
                return a.view.invalidateScene()
            }
            )),
            a.config = {
                materials: {
                    BUILDING: new h.MeshLambertMaterial({
                        color: 812922,
                        transparent: !0,
                        opacity: .2,
                        side: h.DoubleSide,
                        depthWrite: !1,
                        depthTest: !1
                    }),
                    FLOOR: new h.MeshLambertMaterial({
                        color: 11708469,
                        transparent: !0,
                        opacity: .2,
                        side: h.DoubleSide,
                        depthWrite: !1,
                        depthTest: !1
                    }),
                    FREE_SPACE_NAVIGATION: new h.MeshLambertMaterial({
                        color: 92972,
                        transparent: !0,
                        opacity: .3,
                        side: h.DoubleSide,
                        depthWrite: !1,
                        depthTest: !1
                    }),
                    ROOM: new h.MeshLambertMaterial({
                        color: 11025609,
                        transparent: !0,
                        opacity: .2,
                        side: h.DoubleSide,
                        depthWrite: !1,
                        depthTest: !1
                    }),
                    CUSTOM: new h.MeshLambertMaterial({
                        color: 4385012,
                        transparent: !0,
                        opacity: .2,
                        side: h.DoubleSide,
                        depthWrite: !1,
                        depthTest: !1
                    })
                },
                highlightMaterials: {
                    BUILDING: new h.MeshLambertMaterial({
                        color: 36582,
                        transparent: !0,
                        opacity: .3,
                        side: h.DoubleSide,
                        depthWrite: !1,
                        depthTest: !1
                    }),
                    FLOOR: new h.MeshLambertMaterial({
                        emissive: 16707151,
                        transparent: !0,
                        opacity: 1,
                        side: h.DoubleSide,
                        map: a.gridTexture,
                        depthWrite: !1,
                        depthTest: !1
                    }),
                    FREE_SPACE_NAVIGATION: new h.MeshLambertMaterial({
                        color: 51283,
                        transparent: !0,
                        opacity: .3,
                        side: h.DoubleSide,
                        depthWrite: !1,
                        depthTest: !1
                    }),
                    ROOM: new h.MeshLambertMaterial({
                        emissive: 11025609,
                        transparent: !0,
                        opacity: 1,
                        side: h.DoubleSide,
                        map: a.gridTexture,
                        depthWrite: !1,
                        depthTest: !1
                    }),
                    CUSTOM: new h.MeshLambertMaterial({
                        emissive: 4385012,
                        transparent: !0,
                        opacity: 1,
                        side: h.DoubleSide,
                        map: a.gridTexture,
                        depthWrite: !1,
                        depthTest: !1
                    })
                },
                handleMaterial: new h.MeshBasicMaterial({
                    color: 16777215,
                    transparent: !0,
                    opacity: .6,
                    side: h.DoubleSide,
                    depthWrite: !1,
                    depthTest: !1
                }),
                selectedHandleMaterial: new h.MeshBasicMaterial({
                    color: 16777215,
                    transparent: !0,
                    opacity: 1,
                    side: h.DoubleSide,
                    depthWrite: !1,
                    depthTest: !0
                }),
                virtualHandleMaterial: new h.MeshBasicMaterial({
                    color: 16777215,
                    transparent: !0,
                    opacity: .3,
                    side: h.DoubleSide,
                    depthWrite: !1,
                    depthTest: !1
                }),
                snappedHandleMaterial: new h.MeshBasicMaterial({
                    color: 3193468,
                    transparent: !0,
                    opacity: .9,
                    side: h.DoubleSide,
                    depthWrite: !1,
                    depthTest: !1
                }),
                edgeMaterial: new h.LineBasicMaterial({
                    color: 16777215,
                    transparent: !0,
                    opacity: 1,
                    side: h.DoubleSide,
                    depthWrite: !1,
                    depthTest: !0
                }),
                rectLineMaterial: new h.LineBasicMaterial({
                    color: 4385012,
                    transparent: !0,
                    opacity: 1,
                    side: h.DoubleSide,
                    depthWrite: !1,
                    depthTest: !0
                })
            },
            a.siteModel = o.SiteModelRepository.data,
            a.sceneGroup.name = "SiteModelLayer",
            a.gridTexture.wrapS = a.gridTexture.wrapT = h.RepeatWrapping,
            a.sceneGroup.add(a.meshGroup),
            a.sceneGroup.add(a.unselectedFloorMeshGroup),
            a.sceneGroup.add(a.handleGroup),
            a.sceneGroup.add(a.bottomLineGroup),
            a.sceneGroup.add(a.verticalLineGroup),
            a.sceneGroup.add(a.topLineGroup),
            a.sceneGroup.add(a.snappingLineGroup),
            a.sceneGroup.add(a.unselectedMeshGroup),
            a.sceneGroup.add(a.rectLineGroup),
            a.trackSignal(a.factory.ModeService.modeChanged).connect((function(t) {
                t === p.ModeState.SITE_MODEL_EDITOR ? a.factory.SiteModelRepository.initialized.then((function() {
                    return a.createSite()
                }
                )).catch((function() {}
                )) : a.clearGroups(!0)
            }
            )),
            a.trackSignal(a.factory.SiteModelRepository.transformLocationAction).connect((function() {
                return a.redraw(!0)
            }
            )),
            a.trackSignal(a.factory.SiteModelEditorService.redrawSiteModel).connect((function(t) {
                return a.redraw(t)
            }
            )),
            a.trackSignal(a.factory.SiteModelService.onSelect).connect((function(t, e, n) {
                e && a.resetUnselectedMeshes()
            }
            )),
            a.siteModelSnapper = new u.SiteModelSnapper(a.factory,a.view,a.raycaster,a.rectLineGroup,a.snappingLineGroup,a.BOTTOM_LINE_MESH_NAME,a.RECTLINE_MESH_NAME),
            a
        }
        return r(e, t),
        e.prototype.redraw = function(t) {
            this.factory.ModeService.isSiteModelEditorMode() && this.createSite(t)
        }
        ,
        e.prototype.createSite = function(t) {
            void 0 === t && (t = !1),
            this.clearGroups(t),
            this.factory.SiteModelEditorService.rectangleSnapping && this.addRectLineHelpers();
            for (var e = 0, n = this.siteModel; e < n.length; e++) {
                var i = n[e];
                this.initSiteModelEntity(i)
            }
            0 === this.siteModel.length && this.view.invalidateScene()
        }
        ,
        e.prototype.clearGroups = function(t) {
            void 0 === t && (t = !1),
            this.clearGroup(this.meshGroup, !0),
            this.clearGroup(this.bottomLineGroup, !0),
            this.clearGroup(this.verticalLineGroup, !0),
            this.clearGroup(this.topLineGroup, !0),
            this.clearGroup(this.snappingLineGroup, !0),
            this.clearGroup(this.handleGroup, !1),
            this.clearGroup(this.rectLineGroup, !0),
            t && this.resetUnselectedMeshes()
        }
        ,
        e.prototype.clearGroup = function(t, e) {
            if (e)
                for (var n = 0, i = t.children; n < i.length; n++) {
                    i[n].geometry.dispose()
                }
            t.children.length = 0
        }
        ,
        e.prototype.resetUnselectedMeshes = function() {
            this.clearGroup(this.unselectedFloorMeshGroup, !0),
            this.clearGroup(this.unselectedMeshGroup, !0),
            this.unselectedMeshMap = {}
        }
        ,
        e.prototype.initSiteModelEntity = function(t) {
            var e = t.getPath()
              , n = t.getHoles();
            if (e && e.length) {
                this.createMesh(t, e, n),
                this.createHandles(t, e, n),
                this.createEdges(t, e, n);
                for (var i = 0, r = t.children; i < r.length; i++) {
                    var o = r[i];
                    this.initSiteModelEntity(o)
                }
                this.view.invalidateScene()
            }
        }
        ,
        e.prototype.createMesh = function(t, e, n) {
            if ((!0 !== this.unselectedMeshMap[t.hashKey + this.EXTRUDED_MESH_NAME] || this.anyChildrenSelected(t)) && !(e.length < 3)) {
                var i = new c.SiteModelEntityMesh(this.factory,this.config,t,e,n,this.EXTRUDED_MESH_NAME);
                this.addMeshToGroup(this.meshGroup, i, t)
            }
        }
        ,
        e.prototype.createHandles = function(t, e, n) {
            if (t.selected && !t.inherited) {
                this.createHandlesFromPoints(e, t);
                for (var i = 0, r = n; i < r.length; i++) {
                    var o = r[i];
                    this.createHandlesFromPoints(o, t)
                }
            }
        }
        ,
        e.prototype.createHandlesFromPoints = function(t, e) {
            var n, i = this;
            o.forEach(t, (function(r, o) {
                0 !== o || e.drawing ? (i.createHandle(r, t, e, o),
                i.createVirtualHandle(r, n, t, e, o),
                n = r) : n = r
            }
            ))
        }
        ,
        e.prototype.createHandle = function(t, e, n, i) {
            var r = new l.SiteModelHandleMesh(this.factory,this.config,t,e,n,i,this.handleGeometry,this.siteModelSnapper);
            this.handleGroup.add(r)
        }
        ,
        e.prototype.createVirtualHandle = function(t, e, n, i, r) {
            if (!i.drawing && e) {
                var o = (new h.Vector2).addVectors(e, t).divideScalar(2);
                o.virtual_ = !0,
                this.createHandle(o, n, i, r)
            }
        }
        ,
        e.prototype.createEdges = function(t, e, n) {
            this.createEdge(e, t);
            for (var i = 0, r = n; i < r.length; i++) {
                var o = r[i];
                o.length > 1 && this.createEdge(o, t)
            }
        }
        ,
        e.prototype.createEdge = function(t, e) {
            if (t) {
                for (var n = t, i = !!(n.drawing || n.dragging || e.selected || e.parent && e.parent.selected), r = new h.Geometry, o = 0, a = n; o < a.length; o++) {
                    var s = a[o];
                    r.vertices.push(new h.Vector3(s.x,s.y,void 0 === e.zMin && e.children[0] ? e.children[0].zMin : e.zMin))
                }
                var c = new h.Line(r,this.config.edgeMaterial);
                if (c.renderOrder = 6,
                c.visible = i,
                c.name = this.BOTTOM_LINE_MESH_NAME,
                (n.drawing || n.dragging) && (c.userData.raycastable = !1),
                this.addMeshToGroup(this.bottomLineGroup, c, e),
                (!0 !== this.unselectedMeshMap[e.hashKey + this.VERTICAL_LINE_MESH_NAME] || !0 !== this.unselectedMeshMap[e.hashKey + this.TOP_LINE_MESH_NAME]) && e.zMax) {
                    for (var l = new h.Geometry, u = new h.Geometry, d = 0, p = n; d < p.length; d++) {
                        s = p[d];
                        l.vertices.push(new h.Vector3(s.x,s.y,e.zMax)),
                        u.vertices.push(new h.Vector3(s.x,s.y,e.zMin)),
                        u.vertices.push(new h.Vector3(s.x,s.y,e.zMax))
                    }
                    var f = new h.LineSegments(u,this.config.edgeMaterial);
                    f.renderOrder = 6,
                    f.visible = i,
                    f.name = this.VERTICAL_LINE_MESH_NAME,
                    this.addMeshToGroup(this.verticalLineGroup, f, e);
                    var m = new h.Line(l,this.config.edgeMaterial);
                    m.renderOrder = 6,
                    m.visible = i,
                    m.name = this.TOP_LINE_MESH_NAME,
                    this.addMeshToGroup(this.topLineGroup, m, e)
                }
            }
        }
        ,
        e.prototype.addMeshToGroup = function(t, e, n) {
            n.hashKey ? e.name === this.BOTTOM_LINE_MESH_NAME && this.isSnappingCandidate(n) ? (this.unselectedMeshMap["" + n.hashKey.toString() + e.name] = !1,
            this.snappingLineGroup.add(e)) : n.selected || n.type === g.SiteModelType.FLOOR && this.factory.SiteModelEditorService.isDraggingHeight ? (this.unselectedMeshMap["" + n.hashKey.toString() + e.name] = !1,
            t.add(e)) : this.unselectedMeshMap["" + n.hashKey.toString() + e.name] || (this.unselectedMeshMap["" + n.hashKey.toString() + e.name] = !0,
            (n.type !== g.SiteModelType.FLOOR || this.anyChildrenSelected(n)) && (n.type !== g.SiteModelType.CUSTOM && n.type !== g.SiteModelType.FLOOR || this.anySiblingsSelected(n) || this.anyChildrenSelected(n)) ? this.unselectedMeshGroup.add(e) : this.unselectedFloorMeshGroup.add(e)) : t.add(e)
        }
        ,
        e.prototype.isSnappingCandidate = function(t) {
            var e = this.factory.SiteModelEditorService.lastSelectedEntity;
            if (this.factory.SiteModelEditorService.isCuttingMode()) {
                if (e === t)
                    return !0
            } else if (this.factory.SiteModelEditorService.isDrawingMode() || this.factory.SiteModelEditorService.isDragging) {
                if (e.parent === t)
                    return !0;
                if (e.type === t.type && e.parent === t.parent)
                    return !0;
                if (e.type === g.SiteModelType.BUILDING && t.type === g.SiteModelType.FREE_SPACE_NAVIGATION)
                    return !0;
                if (e.type === g.SiteModelType.FREE_SPACE_NAVIGATION && t.type === g.SiteModelType.BUILDING)
                    return !0
            }
            return !1
        }
        ,
        e.prototype.anyChildrenSelected = function(t) {
            return t.children.some((function(t) {
                return t.selected
            }
            ))
        }
        ,
        e.prototype.anySiblingsSelected = function(t) {
            return !!t.parent && this.anyChildrenSelected(t.parent)
        }
        ,
        e.prototype.addRectLineHelpers = function() {
            var t = this.factory.SiteModelEditorService.getRectLineGeometries();
            if (this.clearGroup(this.rectLineGroup, !0),
            t)
                for (var e = 0, n = t; e < n.length; e++) {
                    var i = n[e]
                      , r = new h.Line(i,this.config.rectLineMaterial);
                    r.name = this.RECTLINE_MESH_NAME,
                    this.rectLineGroup.add(r)
                }
        }
        ,
        e.prototype.onBeforeRenderViewport = function(t) {
            if (this.factory.ModeService.isSiteModelEditorMode())
                if (t.name === m.SplitViewportName.TOP_VIEW) {
                    this.unselectedFloorMeshGroup.visible = !1;
                    for (var n = 0, i = this.handleGroup.children; n < i.length; n++) {
                        var r = i[n];
                        s.setMeshScreenSize(t, r, e.HANDLERS_PIXEL_SIZE)
                    }
                    this.handleGroup.visible = !0
                } else
                    this.handleGroup.visible = !1,
                    this.unselectedFloorMeshGroup.visible = !0
        }
        ,
        e.prototype.onBeforeRender = function() {
            this.sceneGroup.visible = this.sceneGroup.userData.raycastable = this.factory.ModeService.isSiteModelEditorMode()
        }
        ,
        e.prototype.onClick = function(t) {
            var e = this.view.getViewport(t.x, t.y);
            if (this.factory.ModeService.isSiteModelEditorMode() && e.name === m.SplitViewportName.TOP_VIEW && this.factory.SiteModelEditorService.isDrawingMode()) {
                var n = this.siteModelSnapper.getLocation(t, e);
                return n && this.factory.SiteModelEditorService.addPointToCurrentEntity(new h.Vector2(n.x,n.y), !1),
                !0
            }
            return !1
        }
        ,
        e.prototype.onDoubleClick = function(t) {
            var e = this.view.getViewport(t.x, t.y);
            return !(!this.factory.ModeService.isSiteModelEditorMode() || e.name !== m.SplitViewportName.TOP_VIEW || !this.factory.SiteModelEditorService.isDrawingMode()) && (this.factory.SiteModelEditorService.cancelDrawingMode(),
            !0)
        }
        ,
        e.prototype.onMouseMove = function(t) {
            var e = this.view.getViewport(t.x, t.y);
            if (this.factory.ModeService.isSiteModelEditorMode() && e.name === m.SplitViewportName.TOP_VIEW && this.factory.SiteModelEditorService.isDrawingMode()) {
                var n = this.siteModelSnapper.getLocation(t, e);
                n && this.factory.SiteModelEditorService.addPointToCurrentEntity(new h.Vector2(n.x,n.y), !0)
            }
            !this.factory.ModeService.isSiteModelEditorMode() || "row-resize" !== document.body.style.cursor && "move" !== document.body.style.cursor || (document.body.style.cursor = "default")
        }
        ,
        e.HANDLERS_PIXEL_SIZE = 16,
        e
    }(a.SceneLayer);
    e.SiteModelLayer = E;
    var C = function(t) {
        function e(e, n, i, r, o) {
            var a = t.call(this) || this;
            return a.SiteModelRepository = e,
            a.SiteModelService = n,
            a.SiteModelEditorService = i,
            a.gettextCatalog = r,
            a.ModeService = o,
            a
        }
        return r(e, t),
        e.prototype.create = function(t, e, n) {
            return new E(t,e,n,this)
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(b.ɵɵinject(w.SiteModelRepository),b.ɵɵinject(S.SiteModelService),b.ɵɵinject(x.SiteModelEditorService),b.ɵɵinject("gettextCatalog"),b.ɵɵinject(M.ModeService))
        }
        ,
        e.ɵprov = b.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(a.SceneLayerFactory);
    e.SiteModelLayerFactory = C,
    b.ɵsetClassMetadata(C, [{
        type: y.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: w.SiteModelRepository
        }, {
            type: S.SiteModelService
        }, {
            type: x.SiteModelEditorService
        }, {
            type: void 0,
            decorators: [{
                type: y.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: M.ModeService
        }]
    }
    ), null),
    o.module("IVWebApp").service("SiteModelLayerFactory", v.downgradeInjectable(C))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(16)
      , r = function() {
        function t(t, e, n) {
            this.view = t,
            this.scene = e,
            this.sceneGroup = this.view.createSceneGroup(),
            this._visible = !1,
            this.signalConnections = new i.SignalConnections,
            this.visible = !n || void 0 === n.visible || !!n.visible
        }
        return t.prototype.onDestroy = function() {
            this.signalConnections.disconnectAll(),
            this.scene.remove(this.sceneGroup),
            this.sceneGroup = void 0
        }
        ,
        t.prototype.onBeforeRender = function(t) {}
        ,
        t.prototype.onBeforeRenderViewport = function(t) {
            this.sceneGroup.visible = this.isVisibleInViewport(t);
            var e = !0;
            this.targetViewport && (e = this.targetViewport === t),
            this.sceneGroup.userData.raycastable = e
        }
        ,
        t.prototype.onAfterRender = function(t) {}
        ,
        t.prototype.onAfterRenderViewport = function(t) {}
        ,
        t.prototype.onTransitionStart = function(t) {}
        ,
        t.prototype.onTransitionEnd = function(t) {}
        ,
        t.prototype.onCameraMoveEnd = function(t) {}
        ,
        t.prototype.onViewportCameraMoveEnd = function(t, e) {}
        ,
        t.prototype.onKeyDown = function(t) {
            return !1
        }
        ,
        t.prototype.onKeyUp = function(t) {
            return !1
        }
        ,
        t.prototype.onClick = function(t, e) {
            return !1
        }
        ,
        t.prototype.onDoubleClick = function(t) {
            return !1
        }
        ,
        t.prototype.onHold = function(t) {
            return !1
        }
        ,
        t.prototype.onMouseMove = function(t) {}
        ,
        t.prototype.onMouseWheel = function(t, e) {
            return !1
        }
        ,
        t.prototype.onContextMenu = function(t) {}
        ,
        t.prototype.isVisibleInViewport = function(t) {
            return this._visible && (!this._targetViewport || this._targetViewport === t)
        }
        ,
        t.prototype.trackSignal = function(t) {
            var e = this;
            return {
                connect: function(n, i) {
                    var r = t.connect(n, i);
                    return e.signalConnections.add(r),
                    r
                }
            }
        }
        ,
        Object.defineProperty(t.prototype, "targetViewport", {
            get: function() {
                return this._targetViewport
            },
            set: function(t) {
                this._targetViewport = t,
                this.view.invalidateScene()
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "visible", {
            get: function() {
                return this._visible
            },
            set: function(t) {
                if (t && !this._visible)
                    this.scene.add(this.sceneGroup);
                else {
                    if (t || !this._visible)
                        return;
                    this.scene.remove(this.sceneGroup)
                }
                this._visible = t,
                this.visibilityChanged(),
                this.view.invalidateScene()
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.getActiveViewport = function() {
            return this._targetViewport || this.view.getDefaultViewport()
        }
        ,
        t.prototype.visibilityChanged = function() {}
        ,
        t.ORTHO_DEBOUNCE = 1e3,
        t
    }();
    e.AbstractSceneLayer = r
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    e.showDeleteConfirmationModal = function(t, e, n) {
        var r = i.element(t)
          , o = r.scope();
        o.onConfirmCallback = e,
        n && r.find("div.modal-body > ng-transclude > span").text(n),
        o.$apply(),
        r.modal("show")
    }
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__spreadArrays || function() {
        for (var t = 0, e = 0, n = arguments.length; e < n; e++)
            t += arguments[e].length;
        var i = Array(t)
          , r = 0;
        for (e = 0; e < n; e++)
            for (var o = arguments[e], a = 0, s = o.length; a < s; a++,
            r++)
                i[r] = o[a];
        return i
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    n(1133),
    n(1134);
    var r = n(551)
      , o = n(537)
      , a = n(215)
      , s = n(552)
      , c = n(7)
      , l = n(349)
      , u = n(553)
      , d = n(124)
      , p = n(40)
      , h = n(1136)
      , f = n(4)
      , m = n(546)
      , g = n(1137)
      , v = n(52)
      , y = n(1138)
      , b = n(1139)
      , w = n(16)
      , S = n(264)
      , x = function() {
        function t(t) {
            var e = this;
            this.layers = [],
            this.renderStats = new g.RenderStats,
            this.raycaster = new m.InvisibleRaycaster,
            this.viewports = [],
            this.currentViewportMode = v.SplitViewportMode.FULLSCREEN,
            this.screenshotModeToggled = new w.Signal,
            this.overlayCamera = new f.OrthographicCamera(0,0,1,1),
            this.overlayVector = new f.Vector3,
            this.lightCount = 0,
            this._active = !0,
            this.renderRequested = !1,
            this.watchedTweens = [],
            this.afterRenderCallbacks = [],
            this.sectionTimer = new h.NoOpSectionTimer,
            this.lastKnownViewportCameraPositionMap = new Map,
            this.viewportCameraPanEndTimer = new Map,
            this.positionTween = void 0,
            this.zoomTween = void 0,
            this._enableOffscreenRendering = !1,
            this.timelineEvent = function() {}
            ,
            this.divContainer = new s.HTMLContainer(t);
            var n = this.divContainer.getCurrentWidth()
              , i = this.divContainer.getCurrentHeight();
            this.baseRenderer = this.createRenderer(n, i),
            this.baseDivContainer = this.divContainer,
            this.renderer = this.baseRenderer,
            this.divContainer.appendChild(this.renderer.domElement),
            this.scene = new f.Scene,
            this.underlayScene = new f.Scene,
            this.overlayScene = new f.Scene,
            this.scene.matrixAutoUpdate = !1,
            this.underlayScene.matrixAutoUpdate = !1,
            this.overlayScene.matrixAutoUpdate = !1;
            var r = [this.createDirectionalLight(1, 0, .5, "light1"), this.createDirectionalLight(-.7, .7, .5, "light2"), this.createDirectionalLight(-.7, -.7, -.5, "light3")];
            this.lightCount = r.length;
            for (var o = 0, c = r; o < c.length; o++) {
                var u = c[o];
                this.scene.add(u),
                this.underlayScene.add(u.clone()),
                this.overlayScene.add(u.clone())
            }
            a.addResizeEventListener(this.divContainer.container, (function() {
                return e.onResize()
            }
            )),
            this.inputHandler = new l.InputHandler(this,(function(t, n, i) {
                return e.onZoomView(t, n, i)
            }
            ),(function(t) {
                return e.onDragViewStart(t)
            }
            ),(function(t, n, i) {
                return e.onDragView(t, n, i)
            }
            ),(function(t) {
                return e.onDragViewEnd(t)
            }
            ),(function() {
                return e.onSustainedDragViewEnd()
            }
            ),(function(t) {
                return e.onKeyDown(t)
            }
            ),(function(t) {
                return e.onKeyUp(t)
            }
            )),
            this.raycaster.params.Line.threshold = .01
        }
        return t.prototype.createRenderer = function(t, e) {
            try {
                var n = new f.WebGLRenderer({
                    preserveDrawingBuffer: !0,
                    alpha: !0,
                    antialias: !0
                });
                return n.autoClear = !1,
                n.setSize(t, e),
                n.sortObjects = !0,
                n
            } catch (t) {
                throw new o.WebGlFailedException
            }
        }
        ,
        t.prototype.enableScreenshotMode = function() {
            this.screenshotRenderer || (this.screenshotDivContainer = new b.ScreenshotCanvasHtmlContainer,
            this.screenshotRenderer = this.createRenderer(this.screenshotDivContainer.getCurrentWidth(), this.screenshotDivContainer.getCurrentHeight()),
            this.screenshotDivContainer.appendChild(this.screenshotRenderer.domElement)),
            this.renderer = this.screenshotRenderer,
            this.divContainer = this.screenshotDivContainer,
            this.updateViewportsContainer(),
            this.screenshotModeToggled.emit(!0)
        }
        ,
        t.prototype.disableScreenshotMode = function() {
            this.renderer = this.baseRenderer,
            this.divContainer = this.baseDivContainer,
            this.updateViewportsContainer(),
            this.screenshotModeToggled.emit(!1)
        }
        ,
        t.prototype.isInScreenshotMode = function() {
            return this.renderer === this.screenshotRenderer
        }
        ,
        t.prototype.destroy = function() {
            for (var t = function(t) {
                u.swallowExceptions((function() {
                    return t.onDestroy()
                }
                ))
            }, e = 0, n = this.layers; e < n.length; e++) {
                t(n[e])
            }
            this.inputHandler.destroy(),
            this.sectionTimerConsoleControl && this.sectionTimerConsoleControl.dispose(),
            this.renderer && this.renderer.dispose()
        }
        ,
        t.prototype.addToScene = function(t) {
            this.layers.push(t)
        }
        ,
        t.prototype.removeFromScene = function(t) {
            c.remove(this.layers, t)
        }
        ,
        t.prototype.getLayer = function(t) {
            console.warn('Deprecated usage of "getLayer", use layer specific methods on the views instead. ');
            for (var e = 0, n = this.layers; e < n.length; e++) {
                var i = n[e];
                if (i instanceof t)
                    return i
            }
        }
        ,
        t.prototype.getImage = function() {
            return this.currentImage
        }
        ,
        t.prototype.invalidateScene = function(t) {
            var e = this;
            t && this.afterRenderCallbacks.push(t),
            !this.renderRequested && this._active && (this.renderRequested = !0,
            requestAnimationFrame((function() {
                return e.renderFrame()
            }
            )))
        }
        ,
        t.prototype.watchTween = function(t) {
            this.watchedTweens.push(t),
            this.invalidateScene()
        }
        ,
        t.prototype.forgetTween = function(t) {
            var e = this.watchedTweens.indexOf(t);
            e < 0 ? console.error("Trying to remove non-existing tween") : (this.watchedTweens.splice(e, 1),
            this.invalidateScene())
        }
        ,
        t.prototype.closeContextMenu = function() {
            this.inputHandler.closeContextMenu()
        }
        ,
        t.prototype.getViewport = function(t, e) {
            var n = c.find(this.viewports, (function(n) {
                return n.contains(t, e)
            }
            ));
            return n || this.getDefaultViewport()
        }
        ,
        t.prototype.getViewportByName = function(t) {
            return c.find(this.viewports, (function(e) {
                return e.info.name === t
            }
            ))
        }
        ,
        t.prototype.getDefaultViewport = function() {
            return this.viewports[0]
        }
        ,
        t.prototype.setViewportFullscreen = function(t, e) {
            if (!(this.fullscreenViewport === t && e || this.fullscreenViewport !== t && !e)) {
                this.fullscreenViewport && (this.fullscreenViewport.left = this.fullscreenViewportSavedDimensions.left,
                this.fullscreenViewport.bottom = this.fullscreenViewportSavedDimensions.bottom,
                this.fullscreenViewport.width = this.fullscreenViewportSavedDimensions.width,
                this.fullscreenViewport.height = this.fullscreenViewportSavedDimensions.height),
                e ? (this.fullscreenViewport = t,
                this.fullscreenViewportSavedDimensions = {
                    left: t.left,
                    bottom: t.bottom,
                    width: t.width,
                    height: t.height
                },
                t.left = t.bottom = 0,
                t.width = t.height = 1) : this.fullscreenViewport = this.fullscreenViewportSavedDimensions = void 0;
                for (var n = 0, i = this.viewports; n < i.length; n++) {
                    var r = i[n];
                    r.active = !e || r === t
                }
                this.invalidateScene()
            }
        }
        ,
        t.prototype.getViewportFullscreen = function(t) {
            return this.fullscreenViewport === t
        }
        ,
        t.prototype.toggleViewportFullscreen = function(t) {
            this.setViewportFullscreen(t, !this.getViewportFullscreen(t))
        }
        ,
        t.prototype.unsetFullscreenViewport = function() {
            this.fullscreenViewport && this.setViewportFullscreen(this.fullscreenViewport, !1)
        }
        ,
        t.prototype.areMultipleViewportsActive = function() {
            return c.sumBy(this.viewports, (function(t) {
                return t.active ? 1 : 0
            }
            )) > 1
        }
        ,
        t.prototype.isInTwoViewportMode = function() {
            return this.currentViewportMode === v.SplitViewportMode.TWO_VIEWPORTS
        }
        ,
        t.prototype.isInFourViewportMode = function() {
            return this.currentViewportMode === v.SplitViewportMode.FOUR_VIEWPORTS
        }
        ,
        t.prototype.centerOn = function(t, e) {
            this.viewports.forEach((function(n) {
                return n.cameraController.centerOn(t, e)
            }
            )),
            this.invalidateScene()
        }
        ,
        Object.defineProperty(t.prototype, "active", {
            get: function() {
                return this._active
            },
            set: function(t) {
                this._active = t,
                t && this.invalidateScene()
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.unprojectScreenCoordinates = function(t, e, n, i) {
            return i || (i = this.getViewport(t, e)),
            i.unprojectScreenCoordinates(t, e, n)
        }
        ,
        t.prototype.unprojectEvent = function(t, e) {
            var n = r.getEventPosition(t);
            return this.unprojectScreenCoordinates(n.x, n.y, void 0 === e ? 1 : e)
        }
        ,
        t.prototype.getObjectsUnderCursor = function(t) {
            var e = this.getViewport(t.x, t.y)
              , n = e.camera;
            if (n instanceof f.OrthographicCamera && n.right - n.left == 0)
                return [];
            this.beforeRenderViewport(e);
            var r = e.normalizeCoordinates(t.x, t.y, 0);
            this.raycaster.setFromCamera(r, n);
            var o = i(this.raycaster.intersectObjects(this.underlayScene.children, !0, void 0, !1), this.raycaster.intersectObjects(this.scene.children, !0, void 0, !1), this.raycaster.intersectObjects(this.overlayScene.children, !0, void 0, !1));
            return o.sort((function(t, e) {
                return t.object.userData.is2D && e.object.userData.is2D && t.object.renderOrder !== e.object.renderOrder ? e.object.renderOrder - t.object.renderOrder : t.object.userData.is2D && !e.object.userData.is2D ? -1 : e.object.userData.is2D && !t.object.userData.is2D ? 1 : t.distance - e.distance < .001 ? t.object.position.distanceTo(n.position) - e.object.position.distanceTo(n.position) : t.distance - e.distance
            }
            )),
            c.uniqBy(o, (function(t) {
                return t.object.uuid
            }
            ))
        }
        ,
        t.prototype.getPositionOnGroundPlane = function(t, e, n, i) {
            (i || (i = this.getViewport(t, e)),
            void 0 === n) && (n = i.camera.getWorldDirection(new f.Vector3).add(i.camera.position).z);
            var r = i.normalizeCoordinates(t, e, 0);
            this.raycaster.setFromCamera(r, i.camera);
            var o = new f.Plane(new f.Vector3(0,0,1),-n)
              , a = new f.Vector3;
            return this.raycaster.ray.intersectPlane(o, a)
        }
        ,
        t.prototype.getLastMousePosition = function() {
            return this.inputHandler.getLastMousePosition()
        }
        ,
        t.prototype.createSceneGroup = function() {
            return new f.Object3D
        }
        ,
        t.prototype.getCamera = function() {
            return this.getDefaultViewport().camera
        }
        ,
        t.prototype.getScreenshot = function(t, e) {
            void 0 === t && (t = "image/jpeg"),
            void 0 === e && (e = void 0);
            var n = this.renderer.domElement;
            return {
                data: n.toDataURL(t, e),
                height: n.clientHeight,
                width: n.clientWidth
            }
        }
        ,
        Object.defineProperty(t.prototype, "enableOffscreenRendering", {
            set: function(t) {
                this._enableOffscreenRendering = t,
                t ? this.overlayScene.userData.offscreenRenderOutput = new y.OffscreenRenderOutput : (delete this.overlayScene.userData.offscreenRenderOutput,
                this.offscreenRenderTarget && (this.offscreenRenderTarget.dispose(),
                this.offscreenRenderTarget = void 0))
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.tweenViewPosition = function(e, n, i) {
            var r = this
              , o = i && i.duration ? i.duration : t.DEFAULT_DURATION;
            this.positionTween && (this.positionTween.stop(),
            this.forgetTween(this.positionTween)),
            this.positionTween = new d.Tween(e.camera.position).to({
                x: n.x,
                y: n.y
            }, o).easing((function(t) {
                return i && i.easing ? i.easing(t) : d.Easing.Linear.None(t)
            }
            )).onComplete((function() {
                r.forgetTween(r.positionTween),
                r.positionTween = void 0
            }
            )).start(),
            this.watchTween(this.positionTween)
        }
        ,
        t.prototype.tweenViewZoom = function(e, n, i, r) {
            var o = this
              , a = r && void 0 !== r.duration ? r.duration : t.ZOOM_MAP_DEFAULT_DURATION;
            this.zoomTween && (this.zoomTween.stop(),
            this.forgetTween(this.zoomTween),
            this.zoomTween = void 0);
            var s = n || e.resolution * i;
            s = Math.min(S.PanningCameraController.RES_MAX, Math.max(e.resMin, s)),
            this.zoomTween = new d.Tween(e).to({
                resolution: s
            }, a).easing((function(t) {
                return r && r.easing ? r.easing(t) : d.Easing.Linear.None(t)
            }
            )).onComplete((function() {
                o.forgetTween(o.zoomTween),
                o.zoomTween = void 0,
                o.onZoomComplete()
            }
            )).start(),
            this.watchTween(this.zoomTween)
        }
        ,
        t.prototype.onZoomComplete = function() {}
        ,
        t.prototype.render = function() {
            this.sectionTimer.time("render");
            var e = this.divContainer.getCurrentWidth()
              , n = this.divContainer.getCurrentHeight();
            this.renderer.setSize(e, n);
            for (var i = 0, r = this.viewports; i < r.length; i++) {
                var o = r[i];
                if (o.active) {
                    var a = Math.floor(e * o.left)
                      , s = Math.floor(n * o.bottom)
                      , c = Math.floor(e * o.width)
                      , l = Math.floor(n * o.height);
                    this.renderer.setViewport(a, s, c, l),
                    this.renderer.setScissor(a, s, c, l),
                    this.renderer.setScissorTest(!0),
                    this.renderer.setClearColor(o.bgColor, o.bgAlpha),
                    this.renderer.clear(),
                    this.renderStats.reset(),
                    o.getCamera().updateMatrixWorld(!0),
                    this.beforeRenderViewport(o);
                    var u = o.camera;
                    !(o.camera instanceof f.OrthographicCamera) || this.isSceneEmpty(this.underlayScene) && this.isSceneEmpty(this.overlayScene) || (this.overlayCamera.copy(o.camera),
                    this.configureOverlayCamera(this.overlayCamera, t.OVERLAY_FRUSTUM_DEPTH),
                    u = this.overlayCamera),
                    this._enableOffscreenRendering && o.camera instanceof f.PerspectiveCamera && this.renderOffscreen(e, n, c, l, o.camera),
                    this.isSceneEmpty(this.underlayScene) || (this.renderer.render(this.underlayScene, u),
                    this.renderStats.update(this.renderer)),
                    this.isSceneEmpty(this.scene) || (this.twoPassRenderer ? this.twoPassRenderer.render(this.scene, o.camera) : this.renderer.render(this.scene, o.camera),
                    this.renderStats.update(this.renderer)),
                    this.isSceneEmpty(this.overlayScene) || (this.renderer.clearDepth(),
                    this.renderer.render(this.overlayScene, u),
                    this.renderStats.update(this.renderer)),
                    this.afterRenderViewport(o)
                }
            }
            this.sectionTimer.timeEnd("render")
        }
        ,
        t.prototype.renderOffscreen = function(t, e, n, i, r) {
            var o = this.renderer.getRenderTarget();
            !this.offscreenRenderTarget || this.offscreenRenderTarget.width === t && this.offscreenRenderTarget.height === e || (this.offscreenRenderTarget.dispose(),
            this.offscreenRenderTarget = void 0),
            this.offscreenRenderTarget || (this.offscreenRenderTarget = this.createRenderTarget(n, i)),
            this.renderer.setRenderTarget(this.offscreenRenderTarget),
            this.renderer.clearDepth(),
            this.renderer.clearColor(),
            this.isSceneEmpty(this.underlayScene) || (this.renderer.render(this.underlayScene, r),
            this.renderStats.update(this.renderer)),
            this.isSceneEmpty(this.scene) || (this.renderer.render(this.scene, r),
            this.renderStats.update(this.renderer)),
            this.overlayScene.userData.offscreenRenderOutput.set(this.offscreenRenderTarget.depthTexture, this.offscreenRenderTarget.texture, n, i, t - n, e - i),
            this.renderer.setRenderTarget(o)
        }
        ,
        t.prototype.createRenderTarget = function(t, e) {
            var n = new f.WebGLRenderTarget(t,e);
            return n.texture.format = f.RGBFormat,
            n.texture.minFilter = f.NearestFilter,
            n.texture.magFilter = f.NearestFilter,
            n.texture.generateMipmaps = !1,
            n.stencilBuffer = !1,
            n.depthBuffer = !0,
            n.depthTexture = new f.DepthTexture(t,e),
            n.depthTexture.type = f.UnsignedShortType,
            n
        }
        ,
        t.prototype.isSceneEmpty = function(t) {
            return t.children.length <= this.lightCount
        }
        ,
        t.prototype.configureOverlayCamera = function(t, e) {
            var n = e - t.far;
            t.far = e,
            t.updateProjectionMatrix();
            var i = this.overlayVector;
            t.getWorldDirection(i),
            t.position.addScaledVector(i, -n / 2)
        }
        ,
        t.prototype.onBeforeRender = function() {}
        ,
        t.prototype.onBeforeRenderViewport = function(t) {}
        ,
        t.prototype.onAfterRender = function() {}
        ,
        t.prototype.onAfterRenderViewport = function(t) {}
        ,
        t.prototype.onClick = function(t) {}
        ,
        t.prototype.onDoubleClick = function(t) {}
        ,
        t.prototype.onHold = function(t) {
            return !1
        }
        ,
        t.prototype.onKeyDown = function(t) {
            return !1
        }
        ,
        t.prototype.onKeyUp = function(t) {
            return !1
        }
        ,
        t.prototype.onKeyboardInputApplied = function() {}
        ,
        t.prototype.onDragViewStart = function(t) {
            var e = this.getViewport(t.x, t.y).cameraController.dragStart(t);
            return e && this.invalidateScene(),
            e
        }
        ,
        t.prototype.onDragView = function(t, e, n) {
            this.getViewport(n.x, n.y).cameraController.drag(t, e, n),
            this.invalidateScene()
        }
        ,
        t.prototype.onDragViewEnd = function(t) {
            return !t || this.getViewport(t.x, t.y).cameraController.dragEnd()
        }
        ,
        t.prototype.onSustainedDragViewEnd = function() {}
        ,
        t.prototype.onZoomView = function(t, e, n) {
            this.getViewport(t.x, t.y).cameraController.zoomTo(t, e, n),
            this.invalidateScene()
        }
        ,
        t.prototype.onCameraMoveEnd = function() {
            return Promise.resolve()
        }
        ,
        t.prototype.onViewportCameraMoveEnd = function(t) {
            return Promise.resolve()
        }
        ,
        t.prototype.createDirectionalLight = function(e, n, i, r) {
            var o = new f.DirectionalLight(t.DIRECTIONAL_LIGHT_COLOR);
            return o.position.set(e, n, i).normalize(),
            o.name = r,
            o
        }
        ,
        t.prototype.updateViewportsContainer = function() {
            var t = this;
            this.viewports.forEach((function(e) {
                e.container && (e.container = t.divContainer)
            }
            ))
        }
        ,
        t.prototype.renderFrame = function() {
            if (this.timelineEvent("renderFrameStart"),
            this.renderRequested = !1,
            this.divContainer.getCurrentWidth() && this.divContainer.getCurrentHeight()) {
                this.sectionTimer.time("total"),
                this.watchedTweens.length > 0 && this.invalidateScene(),
                d.update(),
                this.beforeRender();
                var t = this.renderRequested;
                this.render(),
                this.renderRequested && !t && console.warn("FIXME: scene has been invalidated during rendering, this breaks on-demand rendering!"),
                this.afterRender(),
                this.sectionTimer.timeEnd("total"),
                this.timelineEvent("renderFrameEnd")
            } else
                this.invalidateScene()
        }
        ,
        t.prototype.beforeRender = function() {
            this.sectionTimer.time("before"),
            this.onBeforeRender(),
            this.applyKeyboardInput(),
            this.updateCamera();
            for (var t = this.getCamera(), e = function(e) {
                e.onBeforeRender && u.swallowExceptions((function() {
                    return e.onBeforeRender(t)
                }
                ))
            }, n = 0, i = this.layers; n < i.length; n++) {
                e(i[n])
            }
            this.sectionTimer.timeEnd("before")
        }
        ,
        t.prototype.applyKeyboardInput = function() {
            var t = this.getLastMousePosition();
            this.getViewport(t.x, t.y).cameraController.applyKeyboardInput() && (this.invalidateScene(),
            this.onKeyboardInputApplied())
        }
        ,
        t.prototype.updateCamera = function() {
            for (var t = 0, e = this.viewports; t < e.length; t++) {
                var n = e[t];
                n.active && n.cameraController.updateCamera()
            }
        }
        ,
        t.prototype.beforeRenderViewport = function(t) {
            this.onBeforeRenderViewport(t);
            for (var e = function(e) {
                e.onBeforeRenderViewport && u.swallowExceptions((function() {
                    return e.onBeforeRenderViewport(t)
                }
                ))
            }, n = 0, i = this.layers; n < i.length; n++) {
                e(i[n])
            }
        }
        ,
        t.prototype.afterRender = function() {
            var e = this;
            this.sectionTimer.time("after");
            for (var n = this.getCamera(), r = function(t) {
                t.onAfterRender && u.swallowExceptions((function() {
                    return t.onAfterRender(n)
                }
                ))
            }, o = 0, a = this.layers; o < a.length; o++) {
                r(a[o])
            }
            this.onAfterRender(),
            p.isPlatform(p.Platform.IOS) && this.inputHandler.keysPressed.clear(),
            this.hasCameraMoved(n) && (this.cameraPanEndTimer && window.clearTimeout(this.cameraPanEndTimer),
            this.cameraPanEndTimer = window.setTimeout((function() {
                return e.cameraMoveEnd()
            }
            ), t.REFRESH_DELAY),
            this.lastKnownCameraPosition = n.position.clone());
            var s = i(this.afterRenderCallbacks);
            this.afterRenderCallbacks.length = 0;
            for (var c = 0, l = s; c < l.length; c++) {
                var d = l[c];
                u.swallowExceptions(d)
            }
            this.sectionTimer.timeEnd("after")
        }
        ,
        t.prototype.hasCameraMoved = function(t) {
            return !this.lastKnownCameraPosition && 0 !== t.position.length() || this.lastKnownCameraPosition && !this.lastKnownCameraPosition.equals(t.position)
        }
        ,
        t.prototype.afterRenderViewport = function(t) {
            this.hasViewportCameraMoved(t) && this.propogateViewportCameraMoveEndEvent(t);
            for (var e = function(e) {
                e.onAfterRenderViewport && u.swallowExceptions((function() {
                    return e.onAfterRenderViewport(t)
                }
                ))
            }, n = 0, i = this.layers; n < i.length; n++) {
                e(i[n])
            }
            this.onAfterRenderViewport(t)
        }
        ,
        t.prototype.propogateViewportCameraMoveEndEvent = function(e) {
            var n = this;
            this.viewportCameraPanEndTimer.get(e.name) && window.clearTimeout(this.viewportCameraPanEndTimer.get(e.name));
            var i = window.setTimeout((function() {
                return n.viewportCameraMoveEnd(e)
            }
            ), t.REFRESH_DELAY);
            this.viewportCameraPanEndTimer.set(e.name, i),
            this.lastKnownViewportCameraPositionMap.set(e.name, e.camera.position.clone())
        }
        ,
        t.prototype.viewportCameraMoveEnd = function(t) {
            this.viewportCameraPanEndTimer.set(t.name, void 0);
            for (var e = this.onViewportCameraMoveEnd(t), n = function(n) {
                if (!n.onViewportCameraMoveEnd)
                    return "continue";
                u.swallowExceptions((function() {
                    return n.onViewportCameraMoveEnd(t, e)
                }
                ))
            }, i = 0, r = this.layers; i < r.length; i++) {
                n(r[i])
            }
        }
        ,
        t.prototype.cameraMoveEnd = function() {
            this.cameraPanEndTimer = void 0;
            for (var t = this.onCameraMoveEnd(), e = function(e) {
                e.onCameraMoveEnd && u.swallowExceptions((function() {
                    return e.onCameraMoveEnd(t)
                }
                ))
            }, n = 0, i = this.layers; n < i.length; n++) {
                e(i[n])
            }
            t.catch((function() {}
            ))
        }
        ,
        t.prototype.transitionStart = function(t) {
            this.timelineEvent("transitionStart"),
            this.currentImage = t.image;
            for (var e = function(e) {
                e.onTransitionStart && u.swallowExceptions((function() {
                    return e.onTransitionStart(t)
                }
                ))
            }, n = 0, i = this.layers; n < i.length; n++) {
                e(i[n])
            }
        }
        ,
        t.prototype.transitionEnd = function(t) {
            this.timelineEvent("transitionEnd");
            for (var e = function(e) {
                e.onTransitionEnd && u.swallowExceptions((function() {
                    return e.onTransitionEnd(t)
                }
                ))
            }, n = 0, i = this.layers; n < i.length; n++) {
                e(i[n])
            }
        }
        ,
        t.prototype.onResize = function() {
            this.divContainer.onResize(),
            this.invalidateScene()
        }
        ,
        t.prototype.enableDebugMode = function(t) {
            this.sectionTimer = t,
            this.timelineEvent = function(t) {
                return console.timeStamp(t)
            }
        }
        ,
        t.prototype.hasViewportCameraMoved = function(t) {
            var e = this.lastKnownViewportCameraPositionMap.get(t.name);
            return !e && 0 !== t.camera.position.length() || e && !e.equals(t.camera.position)
        }
        ,
        t.prototype.getCurrentCursorPosition = function() {}
        ,
        t.prototype.setCurrentCursorPositionForScreenPosition = function(t) {
            return Promise.resolve()
        }
        ,
        t.OVERLAY_FRUSTUM_DEPTH = 2e4,
        t.ZOOM_MAP_DEFAULT_DURATION = 1e3,
        t.REFRESH_DELAY = 300,
        t.DEFAULT_DURATION = 1e3,
        t.DIRECTIONAL_LIGHT_COLOR = 8355711,
        t
    }();
    e.AbstractView = x
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(4)
      , r = function() {
        function t(t, e) {
            this.left = 0,
            this.bottom = 0,
            this.width = 1,
            this.height = 1,
            this.bgColor = 1644825,
            this.bgAlpha = 1,
            this.active = !0,
            this.container = t,
            this.info = e
        }
        return Object.defineProperty(t.prototype, "camera", {
            get: function() {
                return this.cameraController.camera
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.getX = function(t) {
            return t - this.left * this.container.getCurrentWidth()
        }
        ,
        t.prototype.getY = function(t) {
            return t - (1 - (this.bottom + this.height)) * this.container.getCurrentHeight()
        }
        ,
        t.prototype.getInverseX = function(t) {
            return t + this.left * this.container.getCurrentWidth()
        }
        ,
        t.prototype.getInverseY = function(t) {
            return t + (1 - (this.bottom + this.height)) * this.container.getCurrentHeight()
        }
        ,
        t.prototype.contains = function(t, e) {
            var n = t / this.container.getCurrentWidth()
              , i = 1 - e / this.container.getCurrentHeight();
            return this.active && n >= this.left && n < this.left + this.width && i >= this.bottom && i < this.bottom + this.height
        }
        ,
        Object.defineProperty(t.prototype, "screenWidth", {
            get: function() {
                return this.container.getCurrentWidth() * this.width
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "screenHeight", {
            get: function() {
                return this.container.getCurrentHeight() * this.height
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "aspect", {
            get: function() {
                return this.width / this.height * this.container.getAspectRatio()
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.setDimensions = function(t, e, n, i) {
            this.left = t,
            this.bottom = e,
            this.width = n,
            this.height = i
        }
        ,
        t.prototype.getDimensions = function() {
            return {
                left: this.left,
                bottom: this.bottom,
                width: this.width,
                height: this.height
            }
        }
        ,
        t.prototype.unprojectScreenCoordinates = function(t, e, n) {
            return this.normalizeCoordinates(t, e, void 0 === n ? 1 : n).unproject(this.camera)
        }
        ,
        t.prototype.projectScreenCoordinates = function(t, e) {
            return e || (e = t),
            e.copy(t),
            e.project(this.camera),
            this.denormalizeCoordinates(e)
        }
        ,
        t.prototype.denormalizeCoordinates = function(t, e) {
            e || (e = t);
            var n = this.screenWidth / 2
              , i = this.screenHeight / 2
              , r = (t.x + 1) * n
              , o = (1 - t.y) * i;
            return e.x = this.getInverseX(r),
            e.y = this.getInverseY(o),
            e.z = t.z,
            e
        }
        ,
        t.prototype.normalizeCoordinates = function(t, e, n) {
            var r = this.screenWidth
              , o = this.screenHeight;
            if (0 === r || 0 === o)
                return new i.Vector3(0,0,n);
            var a = this.getX(t) / r * 2 - 1
              , s = -this.getY(e) / o * 2 + 1;
            return new i.Vector3(a,s,n)
        }
        ,
        t.prototype.getWidth = function() {
            return this.screenWidth
        }
        ,
        t.prototype.getHeight = function() {
            return this.screenHeight
        }
        ,
        t.prototype.getCamera = function() {
            return this.camera
        }
        ,
        Object.defineProperty(t.prototype, "name", {
            get: function() {
                return this.info.name
            },
            enumerable: !0,
            configurable: !0
        }),
        t
    }();
    e.Viewport = r
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t(t, e, n) {
            this.name = t,
            this.caption = e,
            this.color = n
        }
        return t.prototype.getColorCSS = function() {
            return "#" + ("000000" + (void 0 !== this.color ? this.color.toString(16) : "")).slice(-6)
        }
        ,
        t
    }();
    e.ViewportInfo = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(9),
    n(1141))
      , o = (n(22),
    n(20))
      , a = n(6)
      , s = n(0)
      , c = n(0)
      , l = n(9)
      , u = n(22)
      , d = function() {
        function t(t, e) {
            this.RestService = t,
            this.SiteModelRepository = e,
            this.path = "route"
        }
        return t.prototype.getRoute = function(t, e, n) {
            var i = this;
            void 0 === n && (n = !0);
            var r = {
                source_longitude: t.x,
                source_latitude: t.y,
                source_z: t.z,
                destination_longitude: e.x,
                destination_latitude: e.y,
                destination_z: e.z
            };
            return this.RestService.getApi(this.path, r, void 0, n).then((function(t) {
                return i.transformResponse(t)
            }
            ))
        }
        ,
        t.prototype.transformResponse = function(t) {
            for (var e = [], n = 0, o = i.fromJson(t); n < o.length; n++) {
                var a = o[n]
                  , s = new r.RouteElementEntity;
                s.fillFromData(a),
                s.instruction && (s.instruction.siteModelEntityId && (s.instruction.siteModelEntityName = this.getEntityName(s.instruction.siteModelEntityId)),
                s.instruction.fromSiteModelEntityId && (s.instruction.fromSiteModelEntityName = this.getEntityName(s.instruction.fromSiteModelEntityId)),
                s.instruction.toSiteModelEntityId && (s.instruction.toSiteModelEntityName = this.getEntityName(s.instruction.toSiteModelEntityId))),
                s.floorId && (s.floor = this.SiteModelRepository.dataMap[s.floorId]),
                s.siteModelEntityId && (s.siteModelEntity = this.SiteModelRepository.dataMap[s.siteModelEntityId]),
                e.push(s)
            }
            return e
        }
        ,
        t.prototype.getEntityName = function(t) {
            var e = this.SiteModelRepository.dataMap[t] && this.SiteModelRepository.dataMap[t].name;
            if (!o.isBlank(e))
                return e
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(c.ɵɵinject(l.RestService),c.ɵɵinject(u.SiteModelRepository))
        }
        ,
        t.ɵprov = c.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.RouteRestService = d,
    c.ɵsetClassMetadata(d, [{
        type: s.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: l.RestService
        }, {
            type: u.SiteModelRepository
        }]
    }
    ), null),
    i.module("IVWebApp").service("RouteRestService", a.downgradeInjectable(d))
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__spreadArrays || function() {
        for (var t = 0, e = 0, n = arguments.length; e < n; e++)
            t += arguments[e].length;
        var i = Array(t)
          , r = 0;
        for (e = 0; e < n; e++)
            for (var o = arguments[e], a = 0, s = o.length; a < s; a++,
            r++)
                i[r] = o[a];
        return i
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var r = n(2)
      , o = n(7)
      , a = (n(22),
    n(130),
    n(555))
      , s = n(556)
      , c = n(1150)
      , l = n(1155)
      , u = n(1159)
      , d = n(1163)
      , p = n(1167)
      , h = n(1171)
      , f = n(1175)
      , m = n(1179)
      , g = (n(14),
    n(28),
    n(39),
    n(49),
    n(55))
      , v = n(1180)
      , y = n(1184)
      , b = n(113)
      , w = n(6)
      , S = n(0)
      , x = n(0)
      , M = n(22)
      , E = n(39)
      , C = n(130)
      , A = n(14)
      , T = n(28)
      , O = n(49)
      , _ = function() {
        function t(t, e, n, i, r, o, a, s) {
            this.SiteModelRepository = t,
            this.PoiService = e,
            this.injectables = new m.InstructionsInjectables,
            this.injectables.SiteModelRepository = this.SiteModelRepository,
            this.injectables.gettextCatalog = o,
            this.injectables.IV = a,
            this.injectables.UoMService = n,
            this.injectables.GeoTransformationService = i,
            this.injectables.FloorChangerService = r,
            this.injectables.ImageService = s,
            this.injectables.PoiService = e
        }
        return t.getSourceProjectionIndex = function(t) {
            var e = t.findIndex((function(t) {
                return t.instruction && t.instruction.type === b.InstructionType.SOURCE_PROJECTION
            }
            ));
            return e < 0 ? 0 : e
        }
        ,
        t.getDestinationProjectionIndex = function(t) {
            var e = t.findIndex((function(t) {
                return t.instruction && t.instruction.type === b.InstructionType.DESTINATION_PROJECTION
            }
            ));
            return e < 0 ? t.length - 1 : e
        }
        ,
        t.prototype.generate = function(e) {
            var n = [];
            if (e.length < 2)
                return n;
            var i = t.getSourceProjectionIndex(e)
              , r = t.getDestinationProjectionIndex(e)
              , c = o.slice(e, i, r + 1);
            n.push(new a.StartInstruction(this.injectables,e[i].location,e[i].floor,this.PoiService.routeStart));
            var l = this.buildBetween(c);
            n.push.apply(n, l),
            n.push(new s.EndInstruction(this.injectables,e[r].location,e[r].floor,this.PoiService.routeEnd));
            var u = this.squashEdgeInstructions(n);
            return u.forEach((function(t) {
                return t.build()
            }
            )),
            u
        }
        ,
        t.calculateRouteLength = function(t) {
            for (var e = 0, n = 0, i = t; n < i.length; n++) {
                var r = i[n];
                r instanceof c.EdgeInstruction && (e += Math.round(r.distance))
            }
            return e
        }
        ,
        t.prototype.squashEdgeInstructions = function(e) {
            for (var n = [], i = 0; i < e.length - 1; i++) {
                var r = e[i]
                  , o = e[i + 1];
                t.isPossibleToSquash(r, o) ? i = this.squashEdges(n, e, i) : (n.push(r),
                o instanceof s.EndInstruction && n.push(o))
            }
            return n
        }
        ,
        t.prototype.squashEdges = function(t, e, n) {
            for (var r, o = [], a = []; e[n]instanceof c.EdgeInstruction; n++)
                r = e[n],
                o.push.apply(o, r.stairPositions),
                a.push.apply(a, r.nonStairPositions);
            var l = r.getFloor()
              , u = new (c.EdgeInstruction.bind.apply(c.EdgeInstruction, i([void 0, this.injectables, l], a)));
            return u.stairPositions = o,
            t.push(u),
            e[n]instanceof s.EndInstruction && t.push(e[n]),
            n - 1
        }
        ,
        t.prototype.buildBetween = function(e) {
            for (var n = [], i = !1, r = 1; r < e.length; r++) {
                var o = e[r]
                  , a = e[r - 1];
                if (!t.isExitElevatorType(o)) {
                    t.isEnterStairsType(a) ? i = !0 : t.isExitStairsType(a) && (i = !1);
                    var s = new c.EdgeInstruction(this.injectables,a.floor,a.location,o.location);
                    i && (s.stairPositions = s.nonStairPositions,
                    s.nonStairPositions = []),
                    n.push(s);
                    var l = void 0;
                    o.instruction && (l = this.build(o)),
                    l && n.push(l)
                }
            }
            return n
        }
        ,
        t.prototype.build = function(t) {
            switch (t.instruction.type) {
            case b.InstructionType.ENTER_BUILDING:
                return this.buildEnterBuilding(t);
            case b.InstructionType.EXIT_BUILDING:
                return this.buildExitBuilding(t);
            case b.InstructionType.CHANGE_FLOOR_UP:
                return this.buildGenericFloorUp(t);
            case b.InstructionType.CHANGE_FLOOR_DOWN:
                return this.buildGenericFloorDown(t);
            case b.InstructionType.ENTER_STAIRS_UP:
                return this.buildStairsUp(t);
            case b.InstructionType.ENTER_STAIRS_DOWN:
                return this.buildStairsDown(t);
            case b.InstructionType.ENTER_ELEVATOR_UP:
                return this.buildElevatorUp(t);
            case b.InstructionType.ENTER_ELEVATOR_DOWN:
                return this.buildElevatorDown(t);
            default:
                return
            }
        }
        ,
        t.prototype.isSupportedType = function(t) {
            var e = this.SiteModelRepository.dataMap[t];
            return !e || (e.type === g.SiteModelType.FREE_SPACE_NAVIGATION || e.type === g.SiteModelType.BUILDING || e.type === g.SiteModelType.FLOOR)
        }
        ,
        t.isExitStairsType = function(t) {
            return t.instruction && t.instruction.type === b.InstructionType.EXIT_STAIRS
        }
        ,
        t.isEnterStairsType = function(t) {
            return t.instruction && (t.instruction.type === b.InstructionType.ENTER_STAIRS_UP || t.instruction.type === b.InstructionType.ENTER_STAIRS_DOWN)
        }
        ,
        t.isExitElevatorType = function(t) {
            return t.instruction && t.instruction.type === b.InstructionType.EXIT_ELEVATOR
        }
        ,
        t.isPossibleToSquash = function(t, e) {
            return t instanceof c.EdgeInstruction && e instanceof c.EdgeInstruction
        }
        ,
        t.prototype.buildEnterBuilding = function(t) {
            if (this.isSupportedType(t.instruction.siteModelEntityId))
                return new l.EnterBuildingInstruction(this.injectables,t.location,t.floor,t.instruction.siteModelEntityName)
        }
        ,
        t.prototype.buildExitBuilding = function(t) {
            if (this.isSupportedType(t.instruction.siteModelEntityId))
                return new u.ExitBuildingInstruction(this.injectables,t.location,t.floor,t.instruction.siteModelEntityName)
        }
        ,
        t.prototype.buildGenericFloorUp = function(t) {
            return new v.GenericFloorUpInstruction(this.injectables,t.location,t.floor,t.instruction.toSiteModelEntityName)
        }
        ,
        t.prototype.buildGenericFloorDown = function(t) {
            return new y.GenericFloorDownInstruction(this.injectables,t.location,t.floor,t.instruction.toSiteModelEntityName)
        }
        ,
        t.prototype.buildStairsUp = function(t) {
            return new d.StairsUpInstruction(this.injectables,t.location,t.floor,t.instruction.toSiteModelEntityName)
        }
        ,
        t.prototype.buildStairsDown = function(t) {
            return new p.StairsDownInstruction(this.injectables,t.location,t.floor,t.instruction.toSiteModelEntityName)
        }
        ,
        t.prototype.buildElevatorUp = function(t) {
            return new f.ElevatorUpInstruction(this.injectables,t.location,t.floor,t.instruction.toSiteModelEntityName)
        }
        ,
        t.prototype.buildElevatorDown = function(t) {
            return new h.ElevatorDownInstruction(this.injectables,t.location,t.floor,t.instruction.toSiteModelEntityName)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(x.ɵɵinject(M.SiteModelRepository),x.ɵɵinject(E.PoiService),x.ɵɵinject(C.UoMService),x.ɵɵinject(A.GeoTransformationService),x.ɵɵinject(T.FloorChangerService),x.ɵɵinject("gettextCatalog"),x.ɵɵinject("IV"),x.ɵɵinject(O.ImageService))
        }
        ,
        t.ɵprov = x.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.InstructionService = _,
    x.ɵsetClassMetadata(_, [{
        type: S.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: M.SiteModelRepository
        }, {
            type: E.PoiService
        }, {
            type: C.UoMService
        }, {
            type: A.GeoTransformationService
        }, {
            type: T.FloorChangerService
        }, {
            type: void 0,
            decorators: [{
                type: S.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: void 0,
            decorators: [{
                type: S.Inject,
                args: ["IV"]
            }]
        }, {
            type: O.ImageService
        }]
    }
    ), null),
    r.module("IVWebApp").service("InstructionService", w.downgradeInjectable(_))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(80)
      , a = n(7)
      , s = n(4)
      , c = n(107)
      , l = function(t) {
        function e(n, i, r, o, s, c, l) {
            var u = t.call(this, n, i, r) || this;
            return u.view = n,
            u.IV = o,
            u.GeoTransformationService = s,
            u.AuthenticationService = l,
            u.debouncedUpdate = a.debounce((function() {
                return u.cameraInitialized && u.updateSafe()
            }
            ), e.ORTHO_DEBOUNCE),
            u.cameraInitialized = !1,
            u.trackSignal(c.onFloorChange).connect((function(t) {
                t.mayChangeLocation || u.updateSafe()
            }
            )),
            u.trackSignal(l.onAuthenticationChanged).connect((function() {
                return u.updateSafe()
            }
            )),
            u
        }
        return r(e, t),
        e.prototype.updateSafe = function() {
            this.GeoTransformationService.isInitialized() && this.AuthenticationService.dataAccessible && this.update()
        }
        ,
        e.prototype.onBeforeRender = function(t) {
            if (this.isOrthographicCameraSceneReadyToBeUpdated()) {
                var e = t;
                this.isCameraMovementTooSmall(e) || this.debouncedUpdate()
            }
        }
        ,
        e.prototype.onCameraMoveEnd = function(t) {
            var e = this;
            c.promiseFinally(t, (function() {
                e.cameraInitialized = !0
            }
            )).catch((function() {
                return e.GeoTransformationService.initialized.then((function() {
                    return e.debouncedUpdate()
                }
                ))
            }
            ))
        }
        ,
        e.prototype.isOrthographicCameraSceneReadyToBeUpdated = function() {
            if (!this.GeoTransformationService.isInitialized() || this.IV.isMoving())
                return !1;
            var t = this.getActiveViewport().camera;
            if (!(t instanceof s.OrthographicCamera))
                return !1;
            var e = this.getActiveViewport().screenWidth;
            return 0 !== t.right - t.left && 0 !== e
        }
        ,
        e.prototype.isCameraMovementTooSmall = function(t) {
            var n = new s.Vector3(t.left,t.top,0).add(t.position);
            if (!this.previousCornerPosition)
                return this.previousCornerPosition = n,
                !1;
            var i = n.distanceTo(this.previousCornerPosition);
            return 0 === i || (i / t.position.distanceTo(n) < e.ORTHO_CAMERA_CORNER_RATIO_THRESHOLD || (this.previousCornerPosition = n,
            !1))
        }
        ,
        e.ORTHO_BOUNDS_SCALE = 1.5,
        e.ORTHO_CAMERA_CORNER_RATIO_THRESHOLD = (e.ORTHO_BOUNDS_SCALE - 1) / 2,
        e
    }(o.SceneLayer);
    e.ScalableSceneLayer = l
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.CLICK = "Click",
        t.MOUSE_MOVE = "MouseMove"
    }(e.EventType || (e.EventType = {}))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = (n(41),
    n(9),
    n(90),
    n(15),
    n(4))
      , s = (n(61),
    n(24),
    n(562))
      , c = n(6)
      , l = n(0)
      , u = (n(65),
    n(0))
      , d = n(15)
      , p = n(41)
      , h = n(9)
      , f = n(65)
      , m = n(24)
      , g = n(61)
      , v = n(90)
      , y = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e, n, i, r) || this;
            return o.factory = r,
            o.transitioning = !1,
            o.trackSignal(o.factory.ViewMenuService.onShowPanoramasChanged).connect((function(t) {
                t || (o.currentImage = void 0,
                o.clear())
            }
            )),
            o.trackSignal(o.factory.ImageRepository.transformLocationAction).connect((function() {
                o.currentImage = void 0,
                o.clear()
            }
            )),
            o
        }
        return r(e, t),
        e.prototype.onTransitionStart = function(t) {
            if (!t.image)
                return this.currentImage = void 0,
                void this.clear();
            this.currentImage !== t.image && this.factory.ViewMenuService.config.showPanoramas && (this.currentImage = t.image,
            this.show(t.image, t.viewDistance),
            this.transitioning = !0)
        }
        ,
        e.prototype.onTransitionEnd = function(t) {
            this.transitioning = !1,
            this.clearPrevious(),
            this.view.invalidateScene()
        }
        ,
        e.prototype.onBeforeRenderViewport = function(t) {
            this.sceneGroup.visible = t.getCamera()instanceof a.PerspectiveCamera
        }
        ,
        e.prototype.onAfterRender = function(e) {
            this.transitioning || t.prototype.onAfterRender.call(this, e)
        }
        ,
        e.prototype.onContextMenu = function() {
            var t = this;
            if (this.factory.ModeService.isNormalMode() && this.view.currentImage && this.view.currentImage.dataset.canWrite)
                return this.view.currentImage.hidden ? {
                    name: this.factory.gettextCatalog.getString("Unhide current location"),
                    icon: "paste",
                    callback: function() {
                        return t.hideCurrentLocation(!1)
                    }
                } : {
                    name: this.factory.gettextCatalog.getString("Hide current location"),
                    icon: "cut",
                    callback: function() {
                        return t.hideCurrentLocation(!0)
                    }
                }
        }
        ,
        e.prototype.hideCurrentLocation = function(t) {
            var e = this;
            this.view.currentImage.hidden = t,
            this.factory.ImageRepository.save(this.view.currentImage).catch((function() {
                e.view.currentImage.hidden = !t,
                e.factory.MessageReportingService.showMessage(e.factory.gettextCatalog.getString("Update failed"), e.factory.gettextCatalog.getString("Updating changes to server over REST interface failed. Reverting local changes to match server."))
            }
            ))
        }
        ,
        e
    }(s.CameraImageLayer);
    e.IvCameraImageLayer = y;
    var b = function(t) {
        function e(e, n, i, r, o, a, s, c, l) {
            var u = t.call(this, e, n, i, r) || this;
            return u.ConfigService = e,
            u.ErrorService = n,
            u.RestService = i,
            u.gettext = r,
            u.gettextCatalog = o,
            u.ViewMenuService = a,
            u.ModeService = s,
            u.MessageReportingService = c,
            u.ImageRepository = l,
            u
        }
        return r(e, t),
        e.prototype.create = function(t, e, n) {
            return new y(t,e,n,this)
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(u.ɵɵinject(d.ConfigService),u.ɵɵinject(p.ErrorService),u.ɵɵinject(h.RestService),u.ɵɵinject("gettext"),u.ɵɵinject("gettextCatalog"),u.ɵɵinject(f.ViewMenuService),u.ɵɵinject(m.ModeService),u.ɵɵinject(g.MessageReportingService),u.ɵɵinject(v.ImageRepository))
        }
        ,
        e.ɵprov = u.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(s.CameraImageLayerFactory);
    e.IvCameraImageLayerFactory = b,
    u.ɵsetClassMetadata(b, [{
        type: l.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: d.ConfigService
        }, {
            type: p.ErrorService
        }, {
            type: h.RestService
        }, {
            type: void 0,
            decorators: [{
                type: l.Inject,
                args: ["gettext"]
            }]
        }, {
            type: void 0,
            decorators: [{
                type: l.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: f.ViewMenuService
        }, {
            type: m.ModeService
        }, {
            type: g.MessageReportingService
        }, {
            type: v.ImageRepository
        }]
    }
    ), null),
    o.module("IVWebApp").service("IvCameraImageLayerFactory", c.downgradeInjectable(b))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    ), o = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
    , a = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var s = n(80)
      , c = n(2)
      , l = n(67)
      , u = (n(91),
    n(4))
      , d = (n(39),
    n(6))
      , p = n(0)
      , h = n(563)
      , f = n(101)
      , m = (n(24),
    n(52))
      , g = n(0)
      , v = n(91)
      , y = n(39)
      , b = n(24)
      , w = function(t) {
        function e(i, r, o, a) {
            var s = t.call(this, i, r, o) || this;
            s.params = o,
            s.factory = a,
            s.visible = !0,
            s.CURSOR_MAX_PX_SIZE = 50,
            s.materialCircle = new u.MeshBasicMaterial({
                color: e.CURSOR_CIRCLE_NORMAL_MODE_COLOR,
                side: u.DoubleSide,
                opacity: e.CURSOR_NORMAL_MODE_OPACITY,
                transparent: !0,
                depthTest: !1,
                depthWrite: !1
            }),
            s.materialCylinder = new u.MeshBasicMaterial({
                map: f.getTextureLoader().load(n(1199), (function() {}
                )),
                side: u.DoubleSide,
                opacity: e.CURSOR_NORMAL_MODE_OPACITY,
                transparent: !0,
                depthTest: !1,
                depthWrite: !1
            }),
            s.measurementTexture = f.getTextureLoader().load(n(1200), (function() {}
            )),
            s.sceneGroup.name = "CursorLayer",
            s.CURSOR_MAX_PX_SIZE = o && o.cursorMaxPxSize || s.CURSOR_MAX_PX_SIZE,
            s.trackSignal(s.factory.CursorService.cursorStyleChanged).connect((function() {
                return s.switchCursorStyle()
            }
            )),
            s.trackSignal(s.factory.CursorService.cursorChanged).connect((function() {
                if (!s.pickingPoint) {
                    var t = s.factory.CursorService.cursorNormal
                      , e = s.factory.CursorService.cursorPos;
                    s.updateMarker(e, t)
                }
            }
            ));
            var c = new u.Matrix4;
            c.makeRotationFromEuler(new u.Euler(Math.PI / 2,0,0));
            var l = new u.CylinderGeometry(e.CURSOR_RADIUS,e.CURSOR_RADIUS,e.CURSOR_HEIGHT,e.CURSOR_SEGMENTS,1,!0);
            l.applyMatrix4(c),
            s.markerCylinder = new u.Mesh(l,s.materialCylinder),
            s.markerCylinder.renderOrder = e.CURSOR_CYLINDER_RENDER_ORDER;
            var d = new u.CircleGeometry(e.CURSOR_RADIUS,e.CURSOR_SEGMENTS);
            return s.markerCircle = new u.Mesh(d,s.materialCircle),
            s.markerCircle.renderOrder = e.CURSOR_CIRCLE_RENDER_ORDER,
            s.marker = new u.Object3D,
            s.marker.add(s.markerCylinder),
            s.marker.add(s.markerCircle),
            s.marker.name = "PickedPoint",
            s.marker.visible = !1,
            s.sceneGroup.add(s.marker),
            s
        }
        return r(e, t),
        e.prototype.onMouseMove = function(t) {
            this.pickNextPointForScreenCoordinate(t).catch((function() {}
            ))
        }
        ,
        e.prototype.onClick = function(t) {
            return this.factory.PoiService.movingPoi && (this.factory.CursorService.copyCursorPose(this.factory.PoiService.movingPoi),
            this.factory.PoiService.poisChanged.emit()),
            !1
        }
        ,
        e.prototype.pickNextPointForScreenCoordinate = function(t) {
            return this.nextPointToPick = this.factory.CursorService.unprojectScreenCoordinateWithPlane(this.view, t),
            this.pickingPoint ? Promise.resolve() : this.pickNextPoint()
        }
        ,
        e.prototype.setVisibility = function(t) {
            this.visible = t,
            this.marker.visible = t,
            this.view.invalidateScene()
        }
        ,
        e.prototype.onBeforeRender = function(t) {
            this.nextPointToPick && !this.pickingPoint && this.pickNextPoint().catch((function() {}
            ))
        }
        ,
        e.prototype.onBeforeRenderViewport = function(t) {
            var e = this.factory.ModeService.isMeasurementsMode()
              , n = t.camera instanceof u.OrthographicCamera
              , i = t.name === m.SplitViewportName.DEFAULT_VIEW
              , r = this.factory.CursorService.cursorStyle === h.CursorStyle.CROSS && n && e;
            this.markerCylinder.visible = n,
            this.marker.visible = !(e && i && this.factory.CursorService.isPlaneLocked()),
            r ? (l.setMeshScreenSize(t, this.markerCircle, this.CURSOR_MAX_PX_SIZE / 2, !1),
            l.setMeshScreenSize(t, this.markerCylinder, this.CURSOR_MAX_PX_SIZE / 2, !1)) : (l.setMeshScreenSize(t, this.markerCircle, this.CURSOR_MAX_PX_SIZE, !0),
            l.setMeshScreenSize(t, this.markerCylinder, this.CURSOR_MAX_PX_SIZE, !0))
        }
        ,
        e.prototype.pickNextPoint = function() {
            return o(this, void 0, void 0, (function() {
                var t, e;
                return a(this, (function(n) {
                    switch (n.label) {
                    case 0:
                        if (!this.nextPointToPick || !this.visible)
                            return [2];
                        t = this.nextPointToPick,
                        this.nextPointToPick = void 0,
                        this.pickingPoint = !0,
                        n.label = 1;
                    case 1:
                        return n.trys.push([1, 3, , 4]),
                        [4, this.factory.CursorService.getRaycastedCoordinates(this.view, t.clone())];
                    case 2:
                        return e = n.sent(),
                        this.updateMarker(e.position, e.normal),
                        [3, 4];
                    case 3:
                        return n.sent(),
                        this.marker.visible && (this.marker.visible = !1,
                        this.view.invalidateScene()),
                        [3, 4];
                    case 4:
                        return this.pickingPoint = !1,
                        [2]
                    }
                }
                ))
            }
            ))
        }
        ,
        e.prototype.updateMarker = function(t, e) {
            this.marker.position.copy(t);
            var n = 0 !== e.length() ? t.clone().add(e) : this.view.getCamera().position;
            this.marker.lookAt(n),
            this.marker.visible = this.visible,
            this.view.invalidateScene()
        }
        ,
        e.prototype.switchCursorStyle = function() {
            this.factory.CursorService.cursorStyle === h.CursorStyle.CROSS ? (this.materialCircle.map = this.measurementTexture,
            this.materialCircle.map.anisotropy = f.ANISOTROPIC_LEVEL,
            this.materialCircle.opacity = e.CURSOR_CROSS_MODE_OPACITY,
            this.materialCylinder.opacity = e.CURSOR_CROSS_MODE_OPACITY) : (this.materialCircle.map = void 0,
            this.materialCircle.opacity = e.CURSOR_NORMAL_MODE_OPACITY,
            this.materialCylinder.opacity = e.CURSOR_NORMAL_MODE_OPACITY),
            this.materialCircle.needsUpdate = !0,
            this.materialCylinder.needsUpdate = !0
        }
        ,
        e.CURSOR_CIRCLE_NORMAL_MODE_COLOR = 16777215,
        e.CURSOR_NORMAL_MODE_OPACITY = .5,
        e.CURSOR_CROSS_MODE_OPACITY = .75,
        e.CURSOR_RADIUS = .15,
        e.CURSOR_SEGMENTS = 24,
        e.CURSOR_HEIGHT = .05,
        e.CURSOR_CIRCLE_RENDER_ORDER = .1,
        e.CURSOR_CYLINDER_RENDER_ORDER = 0,
        e
    }(s.SceneLayer);
    e.CursorLayer = w;
    var S = function(t) {
        function e(e, n, i) {
            var r = t.call(this) || this;
            return r.CursorService = e,
            r.PoiService = n,
            r.ModeService = i,
            r
        }
        return r(e, t),
        e.prototype.create = function(t, e, n) {
            return new w(t,e,n,this)
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(g.ɵɵinject(v.CursorService),g.ɵɵinject(y.PoiService),g.ɵɵinject(b.ModeService))
        }
        ,
        e.ɵprov = g.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(s.SceneLayerFactory);
    e.CursorLayerFactory = S,
    g.ɵsetClassMetadata(S, [{
        type: p.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: v.CursorService
        }, {
            type: y.PoiService
        }, {
            type: b.ModeService
        }]
    }
    ), null),
    c.module("IVWebApp").service("CursorLayerFactory", d.downgradeInjectable(S))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(4)
      , s = n(80)
      , c = (n(182),
    n(91),
    n(20))
      , l = n(67);
    n(269);
    n(182);
    n(28),
    n(22),
    n(14);
    var u = n(7)
      , d = n(8)
      , p = (n(17),
    n(402))
      , h = (n(36),
    n(52))
      , f = n(68)
      , m = n(24)
      , g = (n(61),
    n(105))
      , v = n(55)
      , y = n(6)
      , b = n(0)
      , w = n(395)
      , S = (n(65),
    n(107))
      , x = n(0)
      , M = n(91)
      , E = n(182)
      , C = n(269)
      , A = n(17)
      , T = n(65)
      , O = n(28)
      , _ = n(22)
      , P = n(14)
      , I = n(36)
      , k = n(24)
      , D = n(61)
      , R = function(t) {
        function e(e, n, i) {
            var r = t.call(this, e, n, void 0, i.IV, i.GeoTransformationService, i.FloorChangerService, i.AuthenticationService) || this;
            return r.view = e,
            r.factory = i,
            r.debouncedFloorUpdate = u.debounce((function(t) {
                return r.factory.FloorChangerService.updateByFloorsInView(t.camera).catch((function() {}
                ))
            }
            ), w.AbstractSceneLayer.ORTHO_DEBOUNCE),
            r.CUBE_GEOMETRY = new a.BoxGeometry(.1,.1,.1),
            r.CUBE_MATERIALS = [new a.MeshLambertMaterial({
                color: 192,
                transparent: !0,
                depthTest: !1
            }), new a.MeshLambertMaterial({
                color: 49152,
                transparent: !0,
                depthTest: !1
            }), new a.MeshLambertMaterial({
                color: 12582912,
                transparent: !0,
                depthTest: !1
            })],
            r.lineMaterial = new a.LineBasicMaterial({
                color: 12615680,
                transparent: !0,
                linewidth: 1,
                depthTest: !1
            }),
            r.nodeMeshes = new a.Object3D,
            r.edgeMeshes = new a.Object3D,
            r.updateInProgress = !1,
            r.pathDrawingDelegate = r.factory.NavGraphEditingService.navGraphPathDrawingDelegate,
            r.init3DScene(),
            r.initEventListeners(),
            r
        }
        return r(e, t),
        e.prototype.onViewportCameraMoveEnd = function(t, e) {
            this.factory.ModeService.isNavGraphEditorMode() && t.name === h.SplitViewportName.TOP_VIEW && this.debouncedFloorUpdate(t)
        }
        ,
        e.prototype.onContextMenu = function(t) {
            var e = this
              , n = this.factory.NavGraphService.getCurrentBundle();
            if (this.factory.ViewMenuService.config.showNavGraph && n && n.canWrite && !this.pathDrawingDelegate.isPathDrawingPossible() && this.view.viewMode !== g.SceneViewMode.Map)
                return {
                    name: this.factory.gettextCatalog.getString("Create node"),
                    icon: "add",
                    callback: function() {
                        var t = e.factory.CursorService.cursorPos;
                        if (!t)
                            return e.factory.MessageReportingService.showMessage(e.factory.gettextCatalog.getString("Node Creation Failed", void 0, "title"), e.factory.gettextCatalog.getString("Unable to fetch the current cursor location.")),
                            void c.invalidateAngular();
                        e.factory.NavGraphEditingService.createNode(t),
                        c.invalidateAngular()
                    }
                }
        }
        ,
        e.prototype.createNode = function(t) {
            var e = this.newNodeMesh(t.siteModelEntity, t.location, t.id, 0);
            this.nodeMeshes.add(e),
            this.handleNodeSelection(e)
        }
        ,
        e.prototype.removeNode = function(t) {
            this.nodeMeshes.remove(t)
        }
        ,
        e.prototype.createEdge = function(t, e) {
            var n = this.factory.NavGraphService.adjacencyList.getNodeMesh(t.id)
              , i = this.factory.NavGraphService.adjacencyList.getNodeMesh(e.id)
              , r = n.position
              , o = i.position;
            this.createEdgeAtLocation(r, o, t, e)
        }
        ,
        e.prototype.removeEdge = function(t) {
            this.edgeMeshes.remove(t)
        }
        ,
        e.prototype.update = function() {
            this.updateNavGraph()
        }
        ,
        e.prototype.init3DScene = function() {
            this.sceneGroup.name = "NavGraphLayer",
            this.sceneGroup.matrixAutoUpdate = !1,
            this.nodeMeshes.matrixAutoUpdate = !1,
            this.edgeMeshes.matrixAutoUpdate = !1,
            this.sceneGroup.add(this.nodeMeshes),
            this.sceneGroup.add(this.edgeMeshes)
        }
        ,
        e.prototype.initEventListeners = function() {
            var t = this;
            this.trackSignal(this.view.viewModeChanged).connect((function() {
                return t.updateSafe()
            }
            )),
            this.trackSignal(this.factory.FloorChangerService.onFloorChange).connect((function() {
                return t.updateSafe()
            }
            )),
            this.trackSignal(this.factory.ViewMenuService.onShowNavGraphChanged).connect((function() {
                return t.updateNavGraph(!0)
            }
            )),
            this.trackSignal(this.factory.NavGraphService.constantsChanged).connect((function() {
                return t.updateSafe()
            }
            )),
            this.trackSignal(this.factory.NavGraphService.navgraphChanged).connect((function() {
                return t.view.invalidateScene()
            }
            )),
            this.trackSignal(this.factory.NavGraphService.nodeCreated).connect((function(e) {
                t.createNode(e),
                t.view.invalidateScene()
            }
            )),
            this.trackSignal(this.factory.NavGraphService.nodeRemoved).connect((function(e) {
                t.removeNode(e),
                t.view.invalidateScene()
            }
            )),
            this.trackSignal(this.factory.NavGraphService.edgeCreated).connect((function(e, n) {
                t.createEdge(e, n),
                t.view.invalidateScene()
            }
            )),
            this.trackSignal(this.factory.NavGraphService.edgeRemoved).connect((function(e) {
                t.removeEdge(e),
                t.view.invalidateScene()
            }
            ))
        }
        ,
        e.prototype.updateNavGraph = function(t) {
            var e = this;
            if (!this.factory.ViewMenuService.config.showNavGraph)
                return this.clear(),
                void this.view.invalidateScene();
            this.updateInProgress || (this.updateInProgress = !0,
            S.promiseFinally(this.factory.NavGraphService.fetch(t).then((function() {
                e.clear(),
                e.addNavGraphToScene(),
                e.view.invalidateScene()
            }
            )), (function() {
                return e.updateInProgress = !1
            }
            )).catch(d.handleWarning))
        }
        ,
        e.prototype.clear = function() {
            l.removeChildrenOfObject3D(this.nodeMeshes),
            l.removeChildrenOfObject3D(this.edgeMeshes)
        }
        ,
        e.prototype.addNavGraphToScene = function() {
            var t = this
              , e = this.acquireCameraPosition();
            e.z -= this.view.getImage() ? this.view.getImage().location.z - this.view.getImage().floorLocation.z : f.DEFAULT_CAMERA_HEIGHT,
            this.factory.NavGraphService.adjacencyList.adjacencyList.forEach((function(n) {
                var i = n.resource.location.z - e.z
                  , r = t.newNodeMesh(n.resource.siteModelEntity, n.resource.location, n.resource.id, i);
                t.nodeMeshes.add(r),
                n.edges.forEach((function(e, i) {
                    if (!e.redundant) {
                        var r = n.resource.location
                          , o = t.factory.NavGraphService.adjacencyList.adjacencyList.get(i).resource.location;
                        t.createEdgeAtLocation(r, o, e.resource.source, e.resource.target)
                    }
                }
                ))
            }
            )),
            this.factory.NavGraphService.isNavGraphPresent() && this.factory.NavGraphEditingService.applySelection()
        }
        ,
        e.prototype.createEdgeAtLocation = function(t, e, n, i, r) {
            void 0 === r && (r = -1);
            var o = new a.Geometry;
            o.vertices.push(t),
            o.vertices.push(e);
            var s = new a.Line(o,this.lineMaterial);
            s.name = "navGraphEdge",
            s.userData = {
                type: "navGraphEdge",
                id: -1,
                source: n,
                target: i
            },
            s.matrixAutoUpdate = !1,
            this.isNodeVisible(n.siteModelEntity, n.location) && this.isNodeVisible(i.siteModelEntity, i.location) && this.edgeMeshes.add(s),
            this.factory.NavGraphService.adjacencyList.setEdgeMesh(s)
        }
        ,
        e.prototype.newNodeMesh = function(t, e, n, i) {
            var r = this
              , o = t ? 1 : 2
              , s = new a.Mesh(this.CUBE_GEOMETRY,this.CUBE_MATERIALS[o]);
            return s.position.copy(e),
            s.matrixAutoUpdate = !1,
            s.updateMatrix(),
            s.name = "navGraphNode",
            s.userData = {
                type: "navGraphNode",
                id: n
            },
            s.visible = this.isNodeVisible(t, s.position),
            this.factory.NavGraphService.adjacencyList.setNodeMesh(s),
            s.onClick = function() {
                if (!s.visible)
                    return !1;
                if (r.pathDrawingDelegate.isPathDrawingPossible())
                    return r.pathDrawingDelegate.getAnchorNode().mesh !== s && r.factory.NavGraphEditingService.selectedNodes[f.NavGraphEditingConstantsSelectedNode.CURRENT].mesh !== s && (!!r.factory.NavGraphService.canWriteNode(s.userData.id) && (r.pathDrawingDelegate.joinPathWithMesh(s),
                    !0));
                var t = r.handleNodeSelection(s);
                return r.pathDrawingDelegate.updateCursor(),
                t
            }
            ,
            s.onDragStart = function() {
                return !(r.pathDrawingDelegate.isPathDrawingPossible() || !s.visible) && (r.factory.NavGraphService.isMovingNodes = !0,
                r.factory.NavGraphEditingService.selectNode(s),
                r.factory.NavGraphService.selectBundleForNode(s.userData.id),
                c.invalidateAngular(),
                !0)
            }
            ,
            s.onDrag = function(t, e) {
                if (!r.pathDrawingDelegate.isPathDrawingPossible() && r.factory.NavGraphService.canWriteNode(s.userData.id)) {
                    var n = r.view.getPositionOnGroundPlane(t.x, t.y, s.position.z, e);
                    n && (r.factory.NavGraphEditingService.moveNode(s, n),
                    r.view.invalidateScene())
                }
            }
            ,
            s.onDragEnd = function() {
                r.factory.NavGraphService.isMovingNodes = !1,
                c.invalidateAngular()
            }
            ,
            s.onContextMenu = function() {
                if (r.factory.NavGraphService.canWriteNode(s.userData.id) && !r.pathDrawingDelegate.isPathDrawingPossible() && s.visible)
                    return {
                        name: r.factory.gettextCatalog.getString("Delete node"),
                        icon: "delete",
                        callback: function() {
                            r.factory.NavGraphEditingService.selectNode(s),
                            r.view.invalidateScene(),
                            r.factory.NavGraphEditingService.deleteNode(0)
                        }
                    }
            }
            ,
            s
        }
        ,
        e.prototype.handleNodeSelection = function(t) {
            return !!this.factory.NavGraphService.canWriteNode(t.userData.id) && (this.factory.NavGraphEditingService.toggleNode(t),
            this.factory.NavGraphService.selectBundleForNode(t.userData.id),
            c.invalidateAngular(),
            this.view.invalidateScene(),
            !0)
        }
        ,
        e.prototype.isInCurrentFloors = function() {
            for (var t = [], e = 0; e < arguments.length; e++)
                t[e] = arguments[e];
            for (var n = 0, i = t; n < i.length; n++) {
                var r = i[n];
                if (!r)
                    return !0;
                var o = r.getEntityOfType(v.SiteModelType.FLOOR);
                if (!o || this.factory.FloorChangerService.isInCurrentFloors(r))
                    return !0
            }
            return !1
        }
        ,
        e.prototype.isNodeVisible = function(t, e) {
            return this.view.viewMode === g.SceneViewMode.Map ? this.isInCurrentFloors(t) : this.isInSightRange(e)
        }
        ,
        e.prototype.isInSightRange = function(t) {
            var e = this.acquireCameraPosition();
            return e.z -= this.view.getImage() ? this.view.getImage().location.z - this.view.getImage().floorLocation.z : f.DEFAULT_CAMERA_HEIGHT,
            Math.abs(t.z - e.z) < this.factory.NavGraphService.threshZ && e.distanceTo(t) < this.factory.NavGraphService.thresh
        }
        ,
        e.prototype.acquireCameraPosition = function() {
            return this.view.getCamera().position.clone()
        }
        ,
        e.prototype.onMouseMove = function(t) {
            if (this.factory.ModeService.currentMode === m.ModeState.NAV_GRAPH_EDITOR && this.pathDrawingDelegate.isPathDrawingPossible()) {
                this.pathDrawingDelegate.resetAnchorIfPossible();
                var e = this.view.getPositionOnGroundPlane(t.x, t.y, this.pathDrawingDelegate.getAnchorNode().mesh.position.z);
                if (!e)
                    return;
                this.pathDrawingDelegate.drawPathAtPosition(e)
            }
        }
        ,
        e.prototype.onClick = function(t) {
            if (this.factory.ModeService.currentMode === m.ModeState.NAV_GRAPH_EDITOR && this.pathDrawingDelegate.isPathDrawingPossible() && void 0 !== this.pathDrawingDelegate.getAnchorNode()) {
                var e = this.view.getPositionOnGroundPlane(t.x, t.y, this.pathDrawingDelegate.getAnchorNode().mesh.position.z);
                return !!e && (this.pathDrawingDelegate.savePathAtPosition(e),
                !0)
            }
            return !1
        }
        ,
        e
    }(p.ScalableSceneLayer);
    e.NavGraphLayer = R;
    var L = function(t) {
        function e(e, n, i, r, o, a, s, c, l, u, d, p, h) {
            var f = t.call(this) || this;
            return f.IV = e,
            f.CursorService = n,
            f.NavGraphService = i,
            f.NavGraphEditingService = r,
            f.ViewService = o,
            f.ViewMenuService = a,
            f.FloorChangerService = s,
            f.SiteModelRepository = c,
            f.GeoTransformationService = l,
            f.AuthenticationService = u,
            f.gettextCatalog = d,
            f.ModeService = p,
            f.MessageReportingService = h,
            f
        }
        return r(e, t),
        e.prototype.create = function(t, e) {
            return new R(t,e,this)
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(x.ɵɵinject("IV"),x.ɵɵinject(M.CursorService),x.ɵɵinject(E.NavGraphService),x.ɵɵinject(C.NavGraphEditingService),x.ɵɵinject(A.ViewService),x.ɵɵinject(T.ViewMenuService),x.ɵɵinject(O.FloorChangerService),x.ɵɵinject(_.SiteModelRepository),x.ɵɵinject(P.GeoTransformationService),x.ɵɵinject(I.AuthenticationService),x.ɵɵinject("gettextCatalog"),x.ɵɵinject(k.ModeService),x.ɵɵinject(D.MessageReportingService))
        }
        ,
        e.ɵprov = x.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(s.SceneLayerFactory);
    e.NavGraphLayerFactory = L,
    x.ɵsetClassMetadata(L, [{
        type: b.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: void 0,
            decorators: [{
                type: b.Inject,
                args: ["IV"]
            }]
        }, {
            type: M.CursorService
        }, {
            type: E.NavGraphService
        }, {
            type: C.NavGraphEditingService
        }, {
            type: A.ViewService
        }, {
            type: T.ViewMenuService
        }, {
            type: O.FloorChangerService
        }, {
            type: _.SiteModelRepository
        }, {
            type: P.GeoTransformationService
        }, {
            type: I.AuthenticationService
        }, {
            type: void 0,
            decorators: [{
                type: b.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: k.ModeService
        }, {
            type: D.MessageReportingService
        }]
    }
    ), null),
    o.module("IVWebApp").service("NavGraphLayerFactory", y.downgradeInjectable(L))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(70)
      , s = (n(9),
    n(1206))
      , c = (n(75),
    n(268),
    n(6))
      , l = n(0)
      , u = n(0)
      , d = n(9)
      , p = n(75)
      , h = n(268)
      , f = function(t) {
        function e(e, n, i) {
            var r = t.call(this, s.EdgeEntity, e) || this;
            return r.RestService = e,
            r.BundleRepository = n,
            r.NodeRepository = i,
            r.path = "edges",
            r.injectables.BundleRepository = r.BundleRepository,
            r.injectables.NodeRepository = r.NodeRepository,
            r
        }
        return r(e, t),
        e.ɵfac = function(t) {
            return new (t || e)(u.ɵɵinject(d.RestService),u.ɵɵinject(p.BundleRepository),u.ɵɵinject(h.NodeRepository))
        }
        ,
        e.ɵprov = u.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(a.RestRepository);
    e.EdgeRepository = f,
    u.ɵsetClassMetadata(f, [{
        type: l.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: d.RestService
        }, {
            type: p.BundleRepository
        }, {
            type: h.NodeRepository
        }]
    }
    ), null),
    o.module("IVWebApp").service("EdgeRepository", c.downgradeInjectable(f))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(9),
    n(6))
      , o = n(0)
      , a = n(0)
      , s = n(9)
      , c = function() {
        function t(t) {
            this.RestService = t,
            this.path = "transform/reference_systems"
        }
        return t.prototype.search = function(t, e) {
            return this.RestService.getApi(this.path, {
                query: t,
                type: e
            }, void 0, !1)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(a.ɵɵinject(s.RestService))
        }
        ,
        t.ɵprov = a.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.VectorMapCrsRepository = c,
    a.ɵsetClassMetadata(c, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: s.RestService
        }]
    }
    ), null),
    i.module("IVWebApp").service("VectorMapCrsRepository", r.downgradeInjectable(c))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(1235)
      , s = n(70)
      , c = (n(9),
    n(380))
      , l = n(382)
      , u = (n(66),
    n(108))
      , d = n(4)
      , p = n(381)
      , h = n(6)
      , f = n(0)
      , m = n(135)
      , g = n(0)
      , v = n(9)
      , y = n(66)
      , b = function(t) {
        function e(e, n) {
            var i = t.call(this, a.AffineRefSysEntity, e) || this;
            return i.RestService = e,
            i.TransformService = n,
            i.path = "affine_ref_sys",
            m.EntityRelationMapper.manyToOne(i, "parent", "parentId", i, !0),
            i.entityCreated.connect((function(t) {
                return i.registerTransforms(t)
            }
            )),
            i.entityRemoved.connect((function(t) {
                return i.unregisterTransform(t)
            }
            )),
            i
        }
        return r(e, t),
        e.prototype.registerTransforms = function(t) {
            for (var e = 0, n = t; e < n.length; e++) {
                var i = n[e];
                this.registerReferenceSystem(i)
            }
            for (var r = 0, o = t; r < o.length; r++) {
                i = o[r];
                try {
                    this.registerTransform(i)
                } catch (t) {
                    if (!(t instanceof p.ReferenceSystemNotFoundException))
                        throw t;
                    console.warn("Cannot register transform for " + i.name + ": " + t.message + ". Skipping.")
                }
            }
        }
        ,
        e.prototype.registerReferenceSystem = function(t) {
            t.crs = new c.ReferenceSystem(!1,this.TransformService.NAVVIS_PREFIX + ":" + t.name),
            this.TransformService.registerReferenceSystem(t.crs)
        }
        ,
        e.prototype.registerTransform = function(t) {
            var e;
            if (void 0 !== t.parent)
                e = this.TransformService.getReferenceSystem(this.TransformService.NAVVIS_PREFIX + ":" + t.parent.name);
            else if (t.spatialReference)
                e = this.TransformService.getReferenceSystem(t.spatialReference);
            else {
                if (!t.spatialReferenceString)
                    throw new u.IVFrontendException("Affine reference system specifies no parent");
                e = new c.ReferenceSystem(!0,this.TransformService.NAVVIS_PREFIX + ":" + t.name + "_global",void 0,t.spatialReferenceString)
            }
            var n = (new d.Matrix4).set(t.rx, -t.ry, 0, t.tx, t.ry, t.rx, 0, t.ty, 0, 0, 1, t.tz, 0, 0, 0, 1);
            t.transform = new l.AffineTransform(t.crs,e,n),
            this.TransformService.registerTransform(t.transform)
        }
        ,
        e.prototype.unregisterTransform = function(t) {
            t.crs && this.TransformService.unregisterReferenceSystem(t.crs),
            t.transform && this.TransformService.unregisterTransform(t.transform)
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(g.ɵɵinject(v.RestService),g.ɵɵinject(y.TransformService))
        }
        ,
        e.ɵprov = g.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(s.RestRepository);
    e.AffineRefSysRepository = b,
    g.ɵsetClassMetadata(b, [{
        type: f.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: v.RestService
        }, {
            type: y.TransformService
        }]
    }
    ), null),
    o.module("IVWebApp").service("AffineRefSysRepository", h.downgradeInjectable(b))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    n(411),
    n(412),
    n(413),
    n(414),
    n(415),
    n(416),
    n(417),
    n(418),
    n(419),
    n(420),
    n(421);
    var i = n(2)
      , r = (n(411),
    n(54),
    n(20))
      , o = (n(413),
    n(412),
    n(418),
    n(414),
    n(419),
    n(416),
    n(92))
      , a = (n(417),
    n(415),
    n(420),
    n(421),
    n(86),
    n(104),
    n(6))
      , s = n(0)
      , c = n(8)
      , l = (n(36),
    n(0))
      , u = n(54)
      , d = n(413)
      , p = n(416)
      , h = n(411)
      , f = n(418)
      , m = n(414)
      , g = n(420)
      , v = n(421)
      , y = n(415)
      , b = n(412)
      , w = n(417)
      , S = n(419)
      , x = n(86)
      , M = n(104)
      , E = n(36)
      , C = function() {
        function t(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f) {
            this.LicenseService = t,
            this.ImageApiService = e,
            this.LicenseApiService = n,
            this.PoiApiService = i,
            this.AboutApiService = r,
            this.TransformApiService = o,
            this.UiApiService = a,
            this.ShareApiService = s,
            this.ViewApiService = c,
            this.SiteModelApiService = l,
            this.ThirdPartyLibraryService = u,
            this.DatasetApiService = d,
            this.InstanceInformationService = p,
            this.RouteService = h,
            this.AuthenticationService = f,
            this.setupLegacyApi()
        }
        return t.prototype.isLicensed = function() {
            return this.LicenseService.isFeatureEnabled(o.LicenseFeatureType.JAVASCRIPT_API)
        }
        ,
        t.prototype.isPrivate = function() {
            if (this.isLicensed())
                return this.InstanceInformationService.getInformation().then((function(t) {
                    return t.isPrivate
                }
                ));
            window.setTimeout(r.requestAnimationFrame_, 0)
        }
        ,
        Object.defineProperty(t.prototype, "about", {
            get: function() {
                var t = this;
                return this.getServiceChecked((function() {
                    return t.AboutApiService
                }
                ))
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "poi", {
            get: function() {
                var t = this;
                return this.getServiceChecked((function() {
                    return t.PoiApiService
                }
                ))
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "siteModel", {
            get: function() {
                var t = this;
                return this.getServiceChecked((function() {
                    return t.SiteModelApiService
                }
                ))
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "dataset", {
            get: function() {
                var t = this;
                return this.getServiceChecked((function() {
                    return t.DatasetApiService
                }
                ))
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "transform", {
            get: function() {
                var t = this;
                return this.getServiceChecked((function() {
                    return t.TransformApiService
                }
                ))
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "image", {
            get: function() {
                var t = this;
                return this.getServiceChecked((function() {
                    return t.ImageApiService
                }
                ))
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "view", {
            get: function() {
                var t = this;
                return this.getServiceChecked((function() {
                    return t.ViewApiService
                }
                ))
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "ui", {
            get: function() {
                var t = this;
                return this.getServiceChecked((function() {
                    return t.UiApiService
                }
                ))
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "share", {
            get: function() {
                var t = this;
                return this.getServiceChecked((function() {
                    return t.ShareApiService
                }
                ))
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "license", {
            get: function() {
                var t = this;
                return this.getServiceChecked((function() {
                    return t.LicenseApiService
                }
                ))
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "lib", {
            get: function() {
                var t = this;
                return this.getServiceChecked((function() {
                    return t.ThirdPartyLibraryService
                }
                ))
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "routing", {
            get: function() {
                var t = this;
                return this.getServiceChecked((function() {
                    return t.RouteService
                }
                ))
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "auth", {
            get: function() {
                var t = this;
                return this.getServiceChecked((function() {
                    return t.AuthenticationService
                }
                ))
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.getServiceChecked = function(t) {
            if (this.isLicensed())
                return t();
            window.setTimeout(r.requestAnimationFrame_, 0)
        }
        ,
        t.prototype.setupLegacyApi = function() {
            var t = this;
            this.LicenseService.initialized.then((function() {
                t.isLicensed() && (t.legacyApi = window.IV,
                window.IV.api = t)
            }
            )).catch(c.handleWarning)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(l.ɵɵinject(u.LicenseService),l.ɵɵinject(d.ImageApiService),l.ɵɵinject(p.LicenseApiService),l.ɵɵinject(h.PoiApiService),l.ɵɵinject(f.AboutApiService),l.ɵɵinject(m.TransformApiService),l.ɵɵinject(g.UiApiService),l.ɵɵinject(v.ShareApiService),l.ɵɵinject(y.ViewApiService),l.ɵɵinject(b.SiteModelApiService),l.ɵɵinject(w.ThirdPartyLibraryService),l.ɵɵinject(S.DatasetApiService),l.ɵɵinject(x.InstanceInformationService),l.ɵɵinject(M.RouteService),l.ɵɵinject(E.AuthenticationService))
        }
        ,
        t.ɵprov = l.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.ApiService = C,
    l.ɵsetClassMetadata(C, [{
        type: s.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: u.LicenseService
        }, {
            type: d.ImageApiService
        }, {
            type: p.LicenseApiService
        }, {
            type: h.PoiApiService
        }, {
            type: f.AboutApiService
        }, {
            type: m.TransformApiService
        }, {
            type: g.UiApiService
        }, {
            type: v.ShareApiService
        }, {
            type: y.ViewApiService
        }, {
            type: b.SiteModelApiService
        }, {
            type: w.ThirdPartyLibraryService
        }, {
            type: S.DatasetApiService
        }, {
            type: x.InstanceInformationService
        }, {
            type: M.RouteService
        }, {
            type: E.AuthenticationService
        }]
    }
    ), null),
    i.module("IVWebApp").service("ApiService", a.downgradeInjectable(C))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(103),
    n(39),
    n(123),
    n(177),
    n(196),
    n(6))
      , o = n(0)
      , a = n(0)
      , s = n(103)
      , c = n(39)
      , l = n(123)
      , u = n(177)
      , d = n(196)
      , p = function() {
        function t(t, e, n, i, r) {
            this.repository = t,
            this.poiTypeRepository = n,
            this.poiTypeGroupRepository = r,
            this.service = e
        }
        return t.ɵfac = function(e) {
            return new (e || t)(a.ɵɵinject(s.PoiRepository),a.ɵɵinject(c.PoiService),a.ɵɵinject(l.PoiTypeRepository),a.ɵɵinject(u.PoiTypeService),a.ɵɵinject(d.PoiTypeGroupRepository))
        }
        ,
        t.ɵprov = a.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.PoiApiService = p,
    a.ɵsetClassMetadata(p, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: s.PoiRepository
        }, {
            type: c.PoiService
        }, {
            type: l.PoiTypeRepository
        }, {
            type: u.PoiTypeService
        }, {
            type: d.PoiTypeGroupRepository
        }]
    }
    ), null),
    i.module("IVWebApp").service("PoiApiService", r.downgradeInjectable(p))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(22),
    n(55))
      , o = n(6)
      , a = n(0)
      , s = n(0)
      , c = n(22)
      , l = function() {
        function t(t) {
            this.repository = t,
            this.types = r.SiteModelType
        }
        return t.ɵfac = function(e) {
            return new (e || t)(s.ɵɵinject(c.SiteModelRepository))
        }
        ,
        t.ɵprov = s.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.SiteModelApiService = l,
    s.ɵsetClassMetadata(l, [{
        type: a.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: c.SiteModelRepository
        }]
    }
    ), null),
    i.module("IVWebApp").service("SiteModelApiService", o.downgradeInjectable(l))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(90),
    n(49),
    n(6))
      , o = n(0)
      , a = n(0)
      , s = n(90)
      , c = n(49)
      , l = function() {
        function t(t, e) {
            this.repository = t,
            this.service = e
        }
        return t.ɵfac = function(e) {
            return new (e || t)(a.ɵɵinject(s.ImageRepository),a.ɵɵinject(c.ImageService))
        }
        ,
        t.ɵprov = a.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.ImageApiService = l,
    a.ɵsetClassMetadata(l, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: s.ImageRepository
        }, {
            type: c.ImageService
        }]
    }
    ), null),
    i.module("IVWebApp").service("ImageApiService", r.downgradeInjectable(l))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(66),
    n(6))
      , o = n(0)
      , a = n(0)
      , s = n(66)
      , c = function() {
        function t(t) {
            this.service = t
        }
        return t.ɵfac = function(e) {
            return new (e || t)(a.ɵɵinject(s.TransformService))
        }
        ,
        t.ɵprov = a.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.TransformApiService = c,
    a.ɵsetClassMetadata(c, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: s.TransformService
        }]
    }
    ), null),
    i.module("IVWebApp").service("TransformApiService", r.downgradeInjectable(c))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(28),
    n(17),
    n(6))
      , o = n(0)
      , a = n(0)
      , s = n(17)
      , c = n(28)
      , l = function() {
        function t(t, e) {
            this.ViewService = t,
            this.service = t,
            this.floorChangerService = e
        }
        return Object.defineProperty(t.prototype, "mainView", {
            get: function() {
                return this.ViewService.mainView
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "mapView", {
            get: function() {
                return this.ViewService.mapView
            },
            enumerable: !0,
            configurable: !0
        }),
        t.ɵfac = function(e) {
            return new (e || t)(a.ɵɵinject(s.ViewService),a.ɵɵinject(c.FloorChangerService))
        }
        ,
        t.ɵprov = a.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.ViewApiService = l,
    a.ɵsetClassMetadata(l, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: s.ViewService
        }, {
            type: c.FloorChangerService
        }]
    }
    ), null),
    i.module("IVWebApp").service("ViewApiService", r.downgradeInjectable(l))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(54),
    n(6))
      , o = n(0)
      , a = n(0)
      , s = n(54)
      , c = function() {
        function t(t) {
            this.service = t
        }
        return t.ɵfac = function(e) {
            return new (e || t)(a.ɵɵinject(s.LicenseService))
        }
        ,
        t.ɵprov = a.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.LicenseApiService = c,
    a.ɵsetClassMetadata(c, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: s.LicenseService
        }]
    }
    ), null),
    i.module("IVWebApp").service("LicenseApiService", r.downgradeInjectable(c))
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var i = n(4)
          , r = n(124)
          , o = n(128)
          , a = n(2)
          , s = n(2)
          , c = n(1236)
          , l = n(6)
          , u = n(0)
          , d = n(0)
          , p = function() {
            function e() {
                var e;
                this.THREE = i,
                this.TWEEN = r,
                this.Hammer = o,
                this.angular = a,
                this.jQuery = t,
                this.info = ((e = {})[c.ThirdPartyLibraries.THREE] = {
                    name: "Three.js",
                    library: c.ThirdPartyLibraries.THREE,
                    version: i.REVISION
                },
                e[c.ThirdPartyLibraries.TWEEN] = {
                    name: "TweenJS",
                    library: c.ThirdPartyLibraries.TWEEN,
                    version: "17.4.0"
                },
                e[c.ThirdPartyLibraries.HAMMER] = {
                    name: "Hammer.js",
                    library: c.ThirdPartyLibraries.HAMMER,
                    version: "1.1.3"
                },
                e[c.ThirdPartyLibraries.ANGULAR] = {
                    name: "Angular",
                    library: c.ThirdPartyLibraries.ANGULAR,
                    version: a.version.full
                },
                e[c.ThirdPartyLibraries.JQUERY] = {
                    name: "JQuery",
                    library: c.ThirdPartyLibraries.JQUERY,
                    version: t.fn.jquery
                },
                e)
            }
            return e.ɵfac = function(t) {
                return new (t || e)
            }
            ,
            e.ɵprov = d.ɵɵdefineInjectable({
                token: e,
                factory: e.ɵfac,
                providedIn: "root"
            }),
            e
        }();
        e.ThirdPartyLibraryService = p,
        d.ɵsetClassMetadata(p, [{
            type: u.Injectable,
            args: [{
                providedIn: "root"
            }]
        }], null, null),
        s.module("IVWebApp").service("ThirdPartyLibraryService", l.downgradeInjectable(p))
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(265),
    n(6))
      , o = n(0)
      , a = n(0)
      , s = n(265)
      , c = function() {
        function t(t) {
            this.service = t
        }
        return t.ɵfac = function(e) {
            return new (e || t)(a.ɵɵinject(s.AboutService))
        }
        ,
        t.ɵprov = a.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.AboutApiService = c,
    a.ɵsetClassMetadata(c, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: s.AboutService
        }]
    }
    ), null),
    i.module("IVWebApp").service("AboutApiService", r.downgradeInjectable(c))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(31),
    n(6))
      , o = n(0)
      , a = n(0)
      , s = n(31)
      , c = function() {
        function t(t) {
            this.repository = t
        }
        return t.ɵfac = function(e) {
            return new (e || t)(a.ɵɵinject(s.DatasetRepository))
        }
        ,
        t.ɵprov = a.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.DatasetApiService = c,
    a.ɵsetClassMetadata(c, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: s.DatasetRepository
        }]
    }
    ), null),
    i.module("IVWebApp").service("DatasetApiService", r.downgradeInjectable(c))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(38);
    n(38),
    n(50);
    var r = n(6)
      , o = n(0)
      , a = n(0)
      , s = n(38)
      , c = n(50)
      , l = function() {
        function t(t, e) {
            this.sidebarMenuService = t,
            this.languageService = e
        }
        return t.ɵfac = function(e) {
            return new (e || t)(a.ɵɵinject(s.SidebarMenuService),a.ɵɵinject(c.LanguageService))
        }
        ,
        t.ɵprov = a.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.UiApiService = l,
    a.ɵsetClassMetadata(l, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: s.SidebarMenuService
        }, {
            type: c.LanguageService
        }]
    }
    ), null),
    i.module("IVWebApp").service("UiApiService", r.downgradeInjectable(l))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(73),
    n(6))
      , o = n(0)
      , a = n(0)
      , s = n(73)
      , c = function() {
        function t(t) {
            this.generateShareUrl = function() {
                return t.generateShareUrl()
            }
        }
        return t.ɵfac = function(e) {
            return new (e || t)(a.ɵɵinject(s.UrlService))
        }
        ,
        t.ɵprov = a.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.ShareApiService = c,
    a.ɵsetClassMetadata(c, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: s.UrlService
        }]
    }
    ), null),
    i.module("IVWebApp").service("ShareApiService", r.downgradeInjectable(c))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(1238)
      , s = n(70)
      , c = (n(9),
    n(31),
    n(135))
      , l = (n(14),
    n(6))
      , u = n(0)
      , d = n(0)
      , p = n(9)
      , h = n(14)
      , f = n(31)
      , m = function(t) {
        function e(e, n, i) {
            var r = t.call(this, a.PoseEntity, e) || this;
            return r.GeoTransformationService = n,
            r.path = "poses",
            r.injectables.GeoTransformationService = r.GeoTransformationService,
            c.EntityRelationMapper.manyToOne(r, "dataset", "datasetId", i),
            r
        }
        return r(e, t),
        e.prototype.findByDatasetId = function(t) {
            return this.find({
                dataset_id: t
            })
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(d.ɵɵinject(p.RestService),d.ɵɵinject(h.GeoTransformationService),d.ɵɵinject(f.DatasetRepository))
        }
        ,
        e.ɵprov = d.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(s.RestRepository);
    e.PoseRepository = m,
    d.ɵsetClassMetadata(m, [{
        type: u.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: p.RestService
        }, {
            type: h.GeoTransformationService
        }, {
            type: f.DatasetRepository
        }]
    }
    ), null),
    o.module("IVWebApp").service("PoseRepository", l.downgradeInjectable(m))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    ), o = this && this.__spreadArrays || function() {
        for (var t = 0, e = 0, n = arguments.length; e < n; e++)
            t += arguments[e].length;
        var i = Array(t)
          , r = 0;
        for (e = 0; e < n; e++)
            for (var o = arguments[e], a = 0, s = o.length; a < s; a++,
            r++)
                i[r] = o[a];
        return i
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var a = n(397)
      , s = n(398)
      , c = n(40)
      , l = n(20)
      , u = n(124);
    n(262);
    var d = n(200)
      , p = n(25)
      , h = n(4)
      , f = n(16)
      , m = n(255)
      , g = n(321)
      , v = n(264)
      , y = n(8)
      , b = n(399)
      , w = n(24)
      , S = n(218)
      , x = n(349)
      , M = n(67)
      , E = function(t) {
        function e(e, n, i, r, o, a, l, u, d, p, h, g, w, S, x, M, E, C, A, T, O, _, P, I) {
            var k = t.call(this, e) || this;
            k.ViewService = n,
            k.CameraFOVLayerFactory = i,
            k.ConfigService = r,
            k.LocationMarkerLayerFactory = o,
            k.MapLayerFactory = a,
            k.PoiLayerFactory = l,
            k.PoiService = u,
            k.RouteLayerFactory = d,
            k.RouteService = p,
            k.IV = h,
            k.PolygonLayerFactory = g,
            k.ImageService = w,
            k.FloorChangerService = S,
            k.TrackingService = x,
            k.SiteModelService = M,
            k.LegacyService = E,
            k.PointCloudMenuService = C,
            k.DownloadPointCloudService = A,
            k.ModeService = T,
            k.gettextCatalog = O,
            k.UserService = _,
            k.VolumeClippingMapLayerFactory = P,
            k.onZoom = new f.Signal,
            r.initialized.then((function() {
                return k.init()
            }
            )).catch((function() {}
            ));
            var D = new s.Viewport(k.divContainer,new b.ViewportInfo("defaultMapCamera"));
            return k.cameraController = new v.PanningCameraController(D),
            D.cameraController = k.cameraController,
            k.viewports.push(D),
            k.cameraController.camera.position.z = 1e4,
            k.renderer.setPixelRatio(c.isPlatform(c.Platform.IOS) && window.devicePixelRatio || 1),
            k.scene.name = "MapScene",
            n.onViewSwap.connect((function(t) {
                (k.active = !c.isMobileLayout() || t === m.ViewType.MAP,
                I.dataAccessible && window.setTimeout((function() {
                    return k.invalidateScene((function() {
                        return k.FloorChangerService.updateFloors(t === m.ViewType.MAP).catch((function() {}
                        ))
                    }
                    ))
                }
                )),
                t === m.ViewType.PANORAMA && c.isMobileLayout()) && (k.getCameraFOVLayer().visibleOnMobile = !0,
                I.dataAccessible && k.PointCloudMenuService.isCloudVisible() && k.imageOnCenter && h.moveToImage(k.imageOnCenter).catch(y.handleWarning))
            }
            )),
            n.secondaryViewVisibilityChanged.connect((function() {
                k.active = n.isMapVisible()
            }
            )),
            n.onTransitionStart.connect((function(t) {
                return k.transitionStart(t)
            }
            )),
            n.onTransitionEnd.connect((function(t) {
                return k.transitionEnd(t)
            }
            )),
            k
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "imageOnCenter", {
            get: function() {
                return this._imageOnCenter
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.zoomMap = function(t, e) {
            this.tweenViewZoom(this.cameraController, void 0, t, {
                duration: e
            })
        }
        ,
        e.prototype.moveMap = function(t, e) {
            this.tweenViewPosition(this.cameraController, t, {
                duration: e
            })
        }
        ,
        e.prototype.fitViewToBounds = function(t, n, i, r, o) {
            var a = this.getDefaultPadding();
            n = n || a,
            i = i || a,
            r = r || a,
            o = o || a,
            n += c.isMobileLayout() && this.ViewService.isMapPrimaryView() ? 50 : 0;
            var s = this.getDefaultViewport()
              , l = M.calcCamParamsToFitBoxIntoScreen(t, s.screenWidth, s.screenHeight, n, i, r, o);
            0 !== s.screenWidth && 0 !== s.screenHeight || this.divContainer.onResize();
            var d = {
                easing: function(t) {
                    return u.Easing.Cubic.InOut(t)
                },
                duration: e.MOVE_MAP_DEFAULT_DURATION
            };
            this.tweenViewPosition(this.cameraController, l.position, d),
            this.tweenViewZoom(this.cameraController, l.resolution, void 0, d)
        }
        ,
        e.prototype.isLocationMarkerVisible = function() {
            return !this.PoiService.isRoutePickingPhase() && !this.PoiService.isRoutePhase()
        }
        ,
        e.prototype.getDefaultPadding = function() {
            var t = c.isMobileLayout();
            return (this.ViewService.isMapPrimaryView() ? 1 : 0) * (t ? 40 : 90) + 10
        }
        ,
        e.prototype.getVectorMapLayer = function() {
            return this.layerPolygon
        }
        ,
        e.prototype.getSiteModelLayer = function() {
            return this.layerSiteModel
        }
        ,
        e.prototype.getLocationMarkerLayer = function() {
            return this.layerLocationMarker
        }
        ,
        e.prototype.getMapLayer = function() {
            return this.layerMap
        }
        ,
        e.prototype.getCameraFOVLayer = function() {
            return this.layerCameraFOV
        }
        ,
        e.prototype.getRouteLayer = function() {
            return this.layerRoute
        }
        ,
        e.prototype.getPoiLayer = function() {
            return this.layerPoi
        }
        ,
        e.prototype.getVolumeClippingMapLayer = function() {
            return this.layerVolumeClippingMap
        }
        ,
        e.prototype.getCamera = function() {
            return t.prototype.getCamera.call(this)
        }
        ,
        e.prototype.onZoomComplete = function() {
            t.prototype.onZoomComplete.call(this),
            this.fireZoomEvent()
        }
        ,
        e.prototype.onDragViewStart = function(e) {
            var n = t.prototype.onDragViewStart.call(this, e);
            return n && this.ViewService.isPanoPrimaryView() && (this.ViewService.secondaryViewHovered = !0),
            this.TrackingService.trackMapDrag(this.ViewService.getPrimaryView(), this.getCamera().position),
            n
        }
        ,
        e.prototype.onDragViewEnd = function(e) {
            return this.ViewService.isPanoPrimaryView() && (this.ViewService.secondaryViewHovered = !1),
            t.prototype.onDragViewEnd.call(this, e)
        }
        ,
        e.prototype.onZoomView = function(e, n, i) {
            t.prototype.onZoomView.call(this, e, n, i),
            this.fireZoomEvent()
        }
        ,
        e.prototype.onCameraMoveEnd = function() {
            var t = this;
            return this.ViewService.isMapPrimaryView() ? (this.ImageService.getClosestImage(this.getCamera().position, 50, o(this.FloorChangerService.currentFloors, [void 0])).then((function(e) {
                return t._imageOnCenter = e
            }
            )).catch((function() {
                return t._imageOnCenter = void 0
            }
            )),
            this.FloorChangerService.updateFloors(!0)) : Promise.reject(void 0)
        }
        ,
        e.prototype.onContextMenu = function(t) {
            var e = this;
            if (this.ModeService.currentMode === w.ModeState.NORMAL && this.UserService.canCropAndDownloadPointCloud())
                return {
                    name: this.gettextCatalog.getString("Crop and Download Point Cloud", void 0, "title"),
                    icon: "fa-download",
                    callback: function() {
                        var n = e.getPositionOnGroundPlane(t.x, t.y, e.floorHeight, e.getDefaultViewport());
                        n && (e.TrackingService.trackPointCloudDownloadEntered(S.MenuType.MapViewContext),
                        e.DownloadPointCloudService.enterDownloadPointCloudMode(n))
                    }
                }
        }
        ,
        e.prototype.onClick = function(t) {
            var e = this
              , n = this.getPositionOnGroundPlane(t.x, t.y, this.floorHeight, this.getDefaultViewport());
            if (n)
                if (this.TrackingService.trackMapClick(n),
                this.PoiService.isRoutePickingPhase()) {
                    var i = this.PoiService.getLocationAsPoi(n);
                    this.PoiService.openPoi(i)
                } else
                    c.isMobileLayout() || this.IV.isMoving() || this.ImageService.getClosestImage(new h.Vector2(n.x,n.y), 10, o(this.FloorChangerService.currentFloors, [void 0])).then((function(t) {
                        return e.IV.moveToImage(t)
                    }
                    )).catch(y.handleWarning)
        }
        ,
        e.prototype.onDoubleClick = function(t) {
            if (!this.positionTween) {
                var n = this.getPositionOnGroundPlane(t.x, t.y, this.floorHeight);
                n && this.moveMap(n, e.DOUBLE_CLICK_ANIMATION_DURATION)
            }
            this.zoomMap(.5, e.DOUBLE_CLICK_ANIMATION_DURATION)
        }
        ,
        e.prototype.onHold = function(t) {
            var n = this.getPositionOnGroundPlane(t.x, t.y, this.floorHeight + e.CUSTOM_LOCATION_DEFAULT_HEIGHT, this.getDefaultViewport());
            if (!n)
                return !1;
            var i = this.PoiService.getLocationAsPoi(n);
            return this.PoiService.clickPoi(i, g.PoiClickOrigin.VIEW),
            l.invalidateAngular(),
            !0
        }
        ,
        e.prototype.init = function() {
            var t = this;
            this.ViewService.onTransitionStart.connect((function(e) {
                return t.onTransitionStartEvent(e)
            }
            )),
            this.ViewService.onTransitionEnd.connect((function(e) {
                return t.onTransitionEndEvent(e)
            }
            )),
            this.FloorChangerService.onFloorChange.connect((function(e) {
                return t.onFloorChangedEvent(e)
            }
            )),
            this.RouteService.onRoutePlanned.connect((function(e) {
                return t.onRoutePlannedEvent(e)
            }
            )),
            this.RouteService.onRouteChanged.connect((function(e) {
                return t.onRoutePlannedEvent(e)
            }
            )),
            this.layerPolygon = this.PolygonLayerFactory.create(this, this.scene),
            this.layerLocationMarker = this.LocationMarkerLayerFactory.create(this, this.scene, {
                circleSegments: e.CIRCLE_SEGMENTS,
                hideMarkersTimeout: e.HIDE_MARKERS_TIMEOUT,
                markerColor: new h.Color(this.ConfigService.getInteger(p.Configs.CORE_MAP_MARKER_COLOR, 16777215)),
                markerOpacity: e.MARKER_OPACITY,
                locationMarkerPng: n(325),
                locationMarkerHighlightPng: n(325),
                markerHighlightOpacity: e.MARKER_HIGHLIGHT_OPACITY,
                markerBlending: this.ConfigService.getInteger(p.Configs.CORE_MAP_MARKER_BLENDING, h.NormalBlending),
                isMoveMouseToShowEnabled: function() {
                    return t.isLocationMarkerVisible() && !c.isMobileBrowser()
                },
                isVisibilityToggleEnabled: c.isMobileBrowser,
                isClickToShowEnabled: function() {
                    return t.isLocationMarkerVisible()
                },
                isSwappingViewsEnabled: function() {
                    return c.isMobileLayout() && t.ViewService.canSwapViews()
                }
            }),
            this.layerMap = this.MapLayerFactory.create(this, this.scene),
            this.layerCameraFOV = this.CameraFOVLayerFactory.create(this, this.scene),
            this.layerRoute = this.RouteLayerFactory.create(this, this.scene, {
                visualization: d.RouteViewType.MAP,
                routeEntryHeight: function() {
                    return t.floorHeight + e.CUSTOM_LOCATION_DEFAULT_HEIGHT
                }
            }),
            this.layerPoi = this.PoiLayerFactory.create(this, this.scene, {
                distanceThreshold: 2e3,
                hideUnimportant: !0,
                poiVisibilityCheck: !1,
                doubleTapInterval: x.InputHandler.DOUBLE_CLICK_INTERVAL,
                poiNames: function() {
                    return t.ConfigService.getBoolean(p.Configs.POI_NAMES_MAP, !1)
                },
                showCustomRoutePoints: function() {
                    return t.PoiService.isRoutePickingPhase() || !t.PoiService.wasRouteFound
                }
            }),
            this.layerVolumeClippingMap = this.VolumeClippingMapLayerFactory.create(this, this.scene, {
                visible: !1
            }),
            this.addToScene(this.layerPolygon),
            this.addToScene(this.layerLocationMarker),
            this.addToScene(this.layerMap),
            this.addToScene(this.layerCameraFOV),
            this.addToScene(this.layerRoute),
            this.addToScene(this.layerPoi),
            this.addToScene(this.layerVolumeClippingMap);
            var i = this.ConfigService.getInteger(p.Configs.CORE_MAP_BG, 4294967295);
            this.getDefaultViewport().bgColor = i >> 8,
            this.getDefaultViewport().bgAlpha = (255 & i) / 255,
            this.cameraController.setAngle(this.ConfigService.getFloat(p.Configs.CORE_MAP_ANGLE, 0) / 180 * Math.PI)
        }
        ,
        e.prototype.onTransitionStartEvent = function(t) {
            var e = this;
            if (this.ViewService.isMapVisible() && (t.image || t.location))
                if ((t.siteModelEntity ? Promise.resolve(t.siteModelEntity) : t.location ? this.SiteModelService.getCurrentFloorByPosition(t.location) : t.image.siteModelEntity ? Promise.resolve(t.image.siteModelEntity) : this.SiteModelService.getCurrentFloorByPosition(t.image.location)).then((function(t) {
                    t && e.FloorChangerService.changeFloorByEntity(t, !1).catch((function() {}
                    ))
                }
                )).catch(y.handleWarning),
                t.siteModelEntity) {
                    var n = t.siteModelEntity.getPath().map((function(t) {
                        return new h.Vector3(t.x,t.y,0)
                    }
                    ))
                      , i = (new h.Box3).setFromPoints(n);
                    this.fitViewToBounds(i)
                } else {
                    var r = t.location ? t.location : t.image.location;
                    this.moveMap(r, t.duration)
                }
        }
        ,
        e.prototype.onTransitionEndEvent = function(t) {
            t.image && (this.floorHeight = t.image.floorLocation.z)
        }
        ,
        e.prototype.onFloorChangedEvent = function(t) {
            t.currentFloors.length > 0 && (this.floorHeight = t.currentFloors[0].zMin)
        }
        ,
        e.prototype.fireZoomEvent = function() {
            this.LegacyService.triggerEvent("zoomedMap"),
            this.onZoom.emit()
        }
        ,
        e.prototype.onRoutePlannedEvent = function(t) {
            t && t.boundingBox && this.fitViewToBounds(t.boundingBox)
        }
        ,
        e.HIDE_MARKERS_TIMEOUT = 1500,
        e.CIRCLE_SEGMENTS = 8,
        e.MARKER_OPACITY = .4,
        e.MARKER_HIGHLIGHT_OPACITY = .7,
        e.CUSTOM_LOCATION_DEFAULT_HEIGHT = 1.8,
        e.MOVE_MAP_DEFAULT_DURATION = 1e3,
        e.DOUBLE_CLICK_ANIMATION_DURATION = 200,
        e
    }(a.AbstractView);
    e.MapView = E
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(423);
    n(262),
    n(49),
    n(28),
    n(21),
    n(15),
    n(201),
    n(219),
    n(200),
    n(39),
    n(267),
    n(83),
    n(17),
    n(104),
    n(271),
    n(36);
    n(219);
    var o = n(6)
      , a = n(0)
      , s = (n(140),
    n(24),
    n(27),
    n(585),
    n(0))
      , c = n(17)
      , l = n(219)
      , u = n(15)
      , d = n(201)
      , p = n(262)
      , h = n(267)
      , f = n(39)
      , m = n(200)
      , g = n(104)
      , v = n(49)
      , y = n(28)
      , b = n(21)
      , w = n(83)
      , S = n(271)
      , x = n(36)
      , M = n(140)
      , E = n(27)
      , C = n(585)
      , A = n(24)
      , T = function() {
        function t(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g, v, y, b, w, S, x) {
            this.ViewService = t,
            this.CameraFOVLayerFactory = e,
            this.ConfigService = n,
            this.LocationMarkerLayerFactory = i,
            this.MapLayerFactory = r,
            this.PoiLayerFactory = o,
            this.PoiService = a,
            this.RouteLayerFactory = s,
            this.RouteService = c,
            this.IV = l,
            this.PolygonLayerFactory = u,
            this.ImageService = d,
            this.FloorChangerService = p,
            this.TrackingService = h,
            this.SiteModelService = f,
            this.LegacyService = m,
            this.PointCloudMenuService = g,
            this.AuthenticationService = v,
            this.DownloadPointCloudService = y,
            this.gettextCatalog = b,
            this.UserService = w,
            this.VolumeClippingMapLayerFactory = S,
            this.ModeService = x
        }
        return t.prototype.create = function(t) {
            return new r.MapView(t,this.ViewService,this.CameraFOVLayerFactory,this.ConfigService,this.LocationMarkerLayerFactory,this.MapLayerFactory,this.PoiLayerFactory,this.PoiService,this.RouteLayerFactory,this.RouteService,this.IV,this.PolygonLayerFactory,this.ImageService,this.FloorChangerService,this.TrackingService,this.SiteModelService,this.LegacyService,this.PointCloudMenuService,this.DownloadPointCloudService,this.ModeService,this.gettextCatalog,this.UserService,this.VolumeClippingMapLayerFactory,this.AuthenticationService)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(s.ɵɵinject(c.ViewService),s.ɵɵinject(l.CameraFOVLayerFactory),s.ɵɵinject(u.ConfigService),s.ɵɵinject(d.LocationMarkerLayerFactory),s.ɵɵinject(p.MapLayerFactory),s.ɵɵinject(h.PoiLayerFactory),s.ɵɵinject(f.PoiService),s.ɵɵinject(m.RouteLayerFactory),s.ɵɵinject(g.RouteService),s.ɵɵinject("IV"),s.ɵɵinject("PolygonLayerFactory"),s.ɵɵinject(v.ImageService),s.ɵɵinject(y.FloorChangerService),s.ɵɵinject(b.TrackingService),s.ɵɵinject(w.SiteModelService),s.ɵɵinject(S.LegacyService),s.ɵɵinject("PointCloudMenuService"),s.ɵɵinject(x.AuthenticationService),s.ɵɵinject(M.DownloadPointCloudService),s.ɵɵinject("gettextCatalog"),s.ɵɵinject(E.UserService),s.ɵɵinject(C.VolumeClippingMapLayerFactory),s.ɵɵinject(A.ModeService))
        }
        ,
        t.ɵprov = s.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.MapViewService = T,
    s.ɵsetClassMetadata(T, [{
        type: a.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: c.ViewService
        }, {
            type: l.CameraFOVLayerFactory
        }, {
            type: u.ConfigService
        }, {
            type: d.LocationMarkerLayerFactory
        }, {
            type: p.MapLayerFactory
        }, {
            type: h.PoiLayerFactory
        }, {
            type: f.PoiService
        }, {
            type: m.RouteLayerFactory
        }, {
            type: g.RouteService
        }, {
            type: S.LegacyService,
            decorators: [{
                type: a.Inject,
                args: ["IV"]
            }]
        }, {
            type: void 0,
            decorators: [{
                type: a.Inject,
                args: ["PolygonLayerFactory"]
            }]
        }, {
            type: v.ImageService
        }, {
            type: y.FloorChangerService
        }, {
            type: b.TrackingService
        }, {
            type: w.SiteModelService
        }, {
            type: S.LegacyService
        }, {
            type: void 0,
            decorators: [{
                type: a.Inject,
                args: ["PointCloudMenuService"]
            }]
        }, {
            type: x.AuthenticationService
        }, {
            type: M.DownloadPointCloudService
        }, {
            type: void 0,
            decorators: [{
                type: a.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: E.UserService
        }, {
            type: C.VolumeClippingMapLayerFactory
        }, {
            type: A.ModeService
        }]
    }
    ), null),
    i.module("IVWebApp").service("MapViewService", o.downgradeInjectable(T))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(9),
    n(27),
    n(36),
    n(6))
      , o = n(0)
      , a = n(0)
      , s = n(9)
      , c = n(27)
      , l = n(36)
      , u = function() {
        function t() {}
        return t.prototype.clear = function() {
            this.health = void 0
        }
        ,
        t
    }();
    e.ServerStatus = u;
    var d = function() {
        function t(t, e, n) {
            this.RestService = t,
            this.UserService = e,
            this.AuthenticationService = n,
            this.serverStatus = new u
        }
        return t.prototype.check = function() {
            return this.UserService.isAdmin() ? this.performCheck() : Promise.resolve(this.serverStatus)
        }
        ,
        t.prototype.getGlobalStatus = function() {
            return this.serverStatus.health ? this.serverStatus.health.status : void 0
        }
        ,
        t.prototype.performCheck = function() {
            var t = this;
            return this.serverStatus.clear(),
            this.fetchServerHealth().then((function(e) {
                return t.serverStatus.health = e,
                t.serverStatus
            }
            )).catch((function(t) {
                return console.warn("Could not fetch health status from the server.", t),
                Promise.reject(t)
            }
            ))
        }
        ,
        t.prototype.fetchServerHealth = function() {
            var t = this;
            return this.AuthenticationService.initialized.then((function() {
                return t.RestService.authorizedHttpRequest({
                    method: "GET",
                    url: "status/health",
                    withCredentials: !0
                }, !1)
            }
            ))
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(a.ɵɵinject(s.RestService),a.ɵɵinject(c.UserService),a.ɵɵinject(l.AuthenticationService))
        }
        ,
        t.ɵprov = a.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.StatusCheckService = d,
    a.ɵsetClassMetadata(d, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: s.RestService
        }, {
            type: c.UserService
        }, {
            type: l.AuthenticationService
        }]
    }
    ), null),
    i.module("IVWebApp").service("StatusCheckService", r.downgradeInjectable(d))
}
, function(t, e, n) {
    t.exports = n.p + "b54e740365e3bfa8e8ee7980c60c7d01.ic_panorama_blue.svg"
}
, function(t, e, n) {
    t.exports = n.p + "f538079c66f8d966f6342e46bc706bd7.ic_map_blue.svg"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(180)
      , a = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.resultType = o.SearchResultType.SITE_MODEL,
            e
        }
        return r(e, t),
        e.prototype.copy = function(t, e) {
            throw new Error("Method not implemented.")
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e)
        }
        ,
        e
    }(n(545).SearchResultEntity);
    e.SiteModelSearchEntity = a
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var i = n(2);
        n(83);
        var r = n(40)
          , o = n(20);
        n(28),
        n(600);
        var a = n(7);
        n(181);
        var s = n(260)
          , c = n(180)
          , l = n(25)
          , u = n(4)
          , d = n(16)
          , p = n(8)
          , h = n(321);
        n(601);
        var f = n(107)
          , m = function() {
            function e(t, e, n, i, o, a, s, c, l, u, p, h, f, m) {
                this.PoiService = t,
                this.SiteModelService = e,
                this.$timeout = n,
                this.FloorChangerService = i,
                this.SiteModelSearchRepository = o,
                this.IV = a,
                this.UrlService = s,
                this.SearchService = c,
                this.GeoTransformationService = l,
                this.ConfigService = u,
                this.SidebarMenuService = p,
                this.SiteModelRepository = h,
                this.ViewService = f,
                this.TrackingService = m,
                this.resultsList = this.SearchService.resultsList,
                this.clearPaging = new d.Signal,
                this.dropdownMarginBottomExtended = r.isPlatform(r.Platform.IOS),
                this.searchPromisesInProgress = new Set,
                this.initEventHandlers()
            }
            return e.prototype.initEventHandlers = function() {
                var t = this;
                this.PoiService.onPoiOpen.connect((function() {
                    return t.SearchService.clearSearchResults()
                }
                ))
            }
            ,
            e.prototype.search = function(t, n, i) {
                var r = this;
                if (t) {
                    this.hideResultsList();
                    var o = this.buildSearchPromises(t, e.MAX_DROPDOWN_RESULTS, e.MAX_DROPDOWN_RESULTS)
                      , s = f.promiseFinally(Promise.all(o).then((function(o) {
                        var s = o[0]
                          , l = o[1]
                          , u = n ? l.filter(c) : l
                          , d = s.length
                          , p = u.length
                          , h = Math.min(e.MAX_DROPDOWN_RESULTS, d, Math.max(e.SME_DROPDOWN_RESULTS, e.MAX_DROPDOWN_RESULTS - p));
                        s.length = h,
                        u.length = Math.min(u.length, e.MAX_DROPDOWN_RESULTS - h);
                        var f = a.map(u, (function(t) {
                            return t.fakePoi
                        }
                        ));
                        return r.PoiService.poisToDisplay = r.SearchService.addRoutePointsToArray(f),
                        r.PoiService.isRouteMode ? r.TrackingService.trackRouteInputSearch(t, u.length + s.length, i) : r.TrackingService.trackSearchInputSearch(t, u.length + s.length),
                        a.unionWith(s, u, a.isEqual)
                    }
                    )), (function() {
                        return r.searchPromisesInProgress.delete(s)
                    }
                    ));
                    return this.searchPromisesInProgress.add(s),
                    s
                }
                function c(t) {
                    return -1 === n.indexOf(t.id)
                }
            }
            ,
            e.prototype.manuallySelectResult = function(t, e, n, i) {
                this.selectResult(t, e),
                this.TrackingService.trackSearchResultSelection(t, n, i)
            }
            ,
            e.prototype.selectResult = function(t, e) {
                var n = this;
                void 0 === e && (e = !1),
                t instanceof s.PoiSearchEntity ? this.PoiService.getPoiFromSearchResultAsPoi(t.fakePoi).then((function(t) {
                    n.PoiService.clickPoi(t, h.PoiClickOrigin.SEARCH)
                }
                )).catch(p.handleWarning) : (this.SiteModelService.selectModel(t.entity, !0),
                this.SearchService.clearSearchResults()),
                e && (this.resultsList.selectedResult = t),
                r.isMobileBrowser() && this.$timeout((function() {
                    o.blurActiveElement()
                }
                )).catch(p.handleWarning)
            }
            ,
            e.prototype.closeResult = function(t) {
                var e = this.SiteModelService.selectedModel ? c.SearchResultType.SITE_MODEL : c.SearchResultType.POI;
                this.SearchService.closeResult(t, e)
            }
            ,
            e.prototype.leaveSearchBox = function(t) {
                this.SearchService.clearSearchResults(!0),
                this.dismissTypeaheadDropdown(!0),
                this.trackFocusLost(t)
            }
            ,
            e.prototype.clearSearchBox = function(t) {
                this.searchPromisesInProgress.clear(),
                this.clearSearchResults(),
                this.dismissTypeaheadDropdown(),
                this.TrackingService.trackSearchInputClear(t, this.resultsList.results ? this.resultsList.results.length : void 0)
            }
            ,
            e.prototype.showResultsListByKey = function(t) {
                this.showResultsList(t) && this.TrackingService.trackResultsListByKey(t, this.resultsList.results ? this.resultsList.results.length : void 0)
            }
            ,
            e.prototype.showResultsListByClick = function(t) {
                this.showResultsList(t) && this.TrackingService.trackResultsListByClick(t, this.resultsList.results ? this.resultsList.results.length : void 0)
            }
            ,
            e.prototype.showResultsListByMoreClick = function(t) {
                this.showResultsList(t) && this.TrackingService.trackResultsListByMoreClick(t, this.resultsList.results ? this.resultsList.results.length : void 0)
            }
            ,
            e.prototype.searchKeyPress = function(t, e) {
                this.TrackingService.trackTypeaheadNavigationKeys(t, e)
            }
            ,
            e.prototype.trackFocusLost = function(t) {
                this.TrackingService.trackSearchInputBlur(t)
            }
            ,
            e.prototype.clickHideResultsButton = function() {
                this.hideResultsList(),
                this.SearchService.isAnyResultSelected() || this.TrackingService.trackHideResultsClick(),
                this.closeResult(!1)
            }
            ,
            e.prototype.clearSearchResults = function(t) {
                void 0 === t && (t = !1),
                this.SearchService.clearSearchResults(t)
            }
            ,
            e.prototype.dismissTypeaheadDropdown = function(e) {
                e && !r.isMobileBrowser() || this.$timeout((function() {
                    t(document).click()
                }
                )).catch(p.handleWarning)
            }
            ,
            e.prototype.inputFocused = function(t) {
                var e = this;
                this.resultsList.onSelect = function(t) {
                    return e.manuallySelectResult(t, !0, e.resultsList.query, e.resultsList.results.length)
                }
            }
            ,
            e.prototype.showResultsList = function(t) {
                return this.dismissTypeaheadDropdown(),
                this.SearchService.clearResultsListState(),
                this.resultsList.query = t,
                !this.PoiService.openedPoi && (this.resultsList.query ? (this.searchResults(this.resultsList.query),
                !0) : (this.hideResultsList(),
                !1))
            }
            ,
            e.prototype.queryChanged = function(t) {
                t || (this.dismissTypeaheadDropdown(!1),
                this.SearchService.clearSearchResults(!0))
            }
            ,
            e.prototype.leaveHighlightedResult = function() {
                this.IV.isMoving() || (this.FloorChangerService.resetCurrentFloors(),
                this.resetFocusedPoi())
            }
            ,
            e.prototype.goToHighlightedResult = function(t) {
                r.isMobileBrowser() || (t ? (this.resetFocusedPoi(),
                t.resultType === c.SearchResultType.POI ? (t = t,
                this.PoiService.focusedPoi = t.fakePoi,
                this.ViewService.mapView.moveMap(t.fakePoi.location, e.MOVE_MAP_DURATION),
                t.siteModelEntity && (this.SearchService.savedFloorName || (this.SearchService.savedFloorName = this.FloorChangerService.getCurrentFloorName()),
                this.FloorChangerService.changeFloorByEntity(t.siteModelEntity, !1).catch((function() {}
                )))) : ((t = t).entity.globalCenter && this.ViewService.mapView.moveMap(this.GeoTransformationService.vectorToLocal(t.entity.globalCenter), e.MOVE_MAP_DURATION),
                this.SearchService.savedFloorName || (this.SearchService.savedFloorName = this.FloorChangerService.getCurrentFloorName()),
                this.FloorChangerService.changeFloorByEntity(t.entity, !1).catch((function() {}
                )))) : this.leaveHighlightedResult())
            }
            ,
            e.prototype.isSearchInProgress = function() {
                return this.searchPromisesInProgress.size > 0
            }
            ,
            e.prototype.areAllPagesFetched = function() {
                return this.resultsList.areAllResultsFetched()
            }
            ,
            e.prototype.fetchPage = function(t) {
                this.searchResults(this.resultsList.query, t)
            }
            ,
            e.prototype.hideResultsList = function() {
                this.SearchService.hideSearchResultsList(),
                this.clearPaging.emit()
            }
            ,
            e.prototype.resetFocusedPoi = function() {
                this.PoiService.focusedPoi && (this.PoiService.focusedPoi = void 0)
            }
            ,
            e.prototype.searchResults = function(t, e) {
                var n = this;
                void 0 === e && (e = 0);
                this.resultsList.show = !0;
                var i = this.buildSearchPromises(t, 20, 20, 20 * e, 20 * e);
                Promise.all(i).then((function(t) {
                    var e = t[0]
                      , i = t[1];
                    n.resultsList.allPoiResultsFetched = i.length < 20,
                    n.resultsList.allSiteModelResultsFetched = e.length < 20;
                    var r = a.unionWith(e, i, a.isEqual);
                    n.updateResultsList(r);
                    var o = a.filter(n.resultsList.results, (function(t) {
                        return t.resultType === c.SearchResultType.POI
                    }
                    ))
                      , s = a.map(o, (function(t) {
                        return t.fakePoi
                    }
                    ));
                    return n.$timeout((function() {
                        n.fitMapToPOIs(s)
                    }
                    ), 200)
                }
                )).catch(p.handleWarning)
            }
            ,
            e.prototype.buildSearchPromises = function(t, e, n, i, r) {
                return void 0 === i && (i = 0),
                void 0 === r && (r = 0),
                [this.ConfigService.getBoolean(l.Configs.SITE_MODEL_SEARCH_ENABLED, !1) && !this.resultsList.allSiteModelResultsFetched ? this.SiteModelSearchRepository.search(t, e, i) : Promise.resolve([]), this.resultsList.allPoiResultsFetched ? Promise.resolve([]) : this.PoiService.search(t, n, r)]
            }
            ,
            e.prototype.updateResultsList = function(t) {
                this.resultsList.results = this.resultsList.results || [],
                this.resultsList.results = this.resultsList.results.concat(t),
                this.SearchService.updatePoisToDisplay(),
                o.invalidateAngular(),
                this.dismissTypeaheadDropdown(),
                r.isMobileBrowser() && o.blurActiveElement()
            }
            ,
            e.prototype.fitMapToPOIs = function(t) {
                if (1 === t.length)
                    this.ViewService.mapView.moveMap(t[0].location);
                else if (t.length > 1) {
                    var e = this.getResultsListSize()
                      , n = this.ViewService.mapView.getDefaultPadding()
                      , i = r.isMobileLayout()
                      , o = this.createBoundingBox(t);
                    if (o.getSize(new u.Vector3).lengthSq() < 1e-9)
                        this.ViewService.mapView.moveMap(t[0].location);
                    else {
                        var a = i ? +n + +e.height : n
                          , s = n
                          , c = i ? n : +e.width + +n
                          , l = n;
                        this.ViewService.mapView.fitViewToBounds(o, s, a, c, l)
                    }
                }
            }
            ,
            e.prototype.getResultsListSize = function() {
                var t = {
                    width: 0,
                    height: 0
                };
                if (this.SearchService.canDisplayResultsList() && this.ViewService.isMapPrimaryView()) {
                    var e = i.element("#results-list");
                    t.width = e.width(),
                    t.height = this.ViewService.mapView.getDefaultViewport().height - e.position().top
                }
                return t
            }
            ,
            e.prototype.createBoundingBox = function(t) {
                var e = t.map((function(t) {
                    return t.location
                }
                ));
                return (new u.Box3).setFromPoints(e)
            }
            ,
            e.MAX_DROPDOWN_RESULTS = 5,
            e.SME_DROPDOWN_RESULTS = 2,
            e.MOVE_MAP_DURATION = 300,
            e
        }();
        e.AbstractSearchInputController = m
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1434);
    var r = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "Core/Misc/WarningDialog.html",
            this.scope = {
                modalId: "=",
                parentController: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.WarningDialogDirective = r,
    i.module("IVWebApp").directive("warningDialog", r.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1437),
    n(1438);
    var r = n(57)
      , o = n(114)
      , a = function() {
        function t(t, e, n, i) {
            this.gettext = t,
            this.UserService = e,
            this.GroupService = n,
            this.StorageService = i,
            this.warningDialogConfig = {
                TITLE: this.gettext("Warning Before Making Content Non-Public", void 0, "title"),
                TEXT: this.gettext("You intend to make content non-public. However, you do not have permissions to make it public again. This change will be irreversible for you. Would you like to continue?"),
                POSTFIX: "make-non-public-warning-dialog"
            }
        }
        return t.$inject = ["gettext", "UserService", "GroupService", "StorageService"],
        t.prototype.groupChanged = function(e, n, o, a) {
            var s = t.getGroup(e, o);
            Number.isFinite(s) && (this.UserService.userInfo.checkAttribute(r.GroupAttributes.CAN_MAKE_PUBLIC) || 0 !== a ? this.saveGroupsToLocalStorage(e) : 0 !== s && (t.setGroup(a, e, o),
            this.model = e,
            this.modelType = n,
            this.groupType = o,
            this.actualGroup = s,
            i.element("#" + n + "-" + e.id + "-" + this.warningDialogConfig.POSTFIX).modal("show")))
        }
        ,
        t.prototype.warningContinueHandler = function() {
            t.setGroup(this.actualGroup, this.model, this.groupType),
            this.saveGroupsToLocalStorage(this.model),
            i.element("#" + this.modelType + "-" + this.model.id + "-" + this.warningDialogConfig.POSTFIX).modal("hide")
        }
        ,
        t.prototype.isGroupSelectable = function(t) {
            var e = this.UserService.userInfo;
            return !(!t || !e) && (t.id !== o.GroupService.publicGroupId || t.id === o.GroupService.publicGroupId && e.checkAttribute(r.GroupAttributes.CAN_MAKE_PUBLIC))
        }
        ,
        t.prototype.getGroupIndent = function(t, e) {
            var n = this.GroupService.getGroupParent(t);
            return n && "".concat(e + this.getGroupIndent(n, e)),
            ""
        }
        ,
        t.prototype.saveGroupsToLocalStorage = function(t) {
            this.StorageService.set("iv_group_read", t.security.groupRead),
            this.StorageService.set("iv_group_write", t.security.groupWrite)
        }
        ,
        t.setGroup = function(t, e, n) {
            "groupRead" === n ? e.security.groupRead = t : e.security.groupWrite = t
        }
        ,
        t.getGroup = function(t, e) {
            return "groupRead" === e ? t.security.groupRead : t.security.groupWrite
        }
        ,
        t
    }();
    e.PermissionEditorController = a;
    var s = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "Core/Misc/PermissionEditor.html",
            this.controller = a,
            this.controllerAs = "vm",
            this.scope = {
                model: "=",
                modelType: "=",
                colSpan: "@"
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.PermissionEditorDirective = s,
    i.module("IVWebApp").directive("permissionEditor", s.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t() {}
        return t.prototype.toData = function() {
            var t = {};
            return t.bundle_file_name = this.bundleFilename,
            t.bundle_serial = this.bundleSerial,
            t
        }
        ,
        t.prototype.setBundleFileName = function(t) {
            return this.bundleFilename = t,
            this
        }
        ,
        t.prototype.setBundleSerial = function(t) {
            return this.bundleSerial = t,
            this
        }
        ,
        t
    }();
    e.BundleManagementRequest = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(9),
    n(6))
      , o = n(0)
      , a = n(0)
      , s = n(9)
      , c = function() {
        function t(t) {
            this.RestService = t
        }
        return t.prototype.downloadZip = function(e) {
            var n = t.downloadArchiveApiUrl;
            n += "/" + e.serial,
            this.RestService.directDownload(n, {})
        }
        ,
        t.downloadArchiveApiUrl = "bundles/archive",
        t.ɵfac = function(e) {
            return new (e || t)(a.ɵɵinject(s.RestService))
        }
        ,
        t.ɵprov = a.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.DatasetsWebArchiveService = c,
    a.ɵsetClassMetadata(c, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: s.RestService
        }]
    }
    ), null),
    i.module("IVWebApp").service("DatasetsWebArchiveService", r.downgradeInjectable(c))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    n(72);
    var i = n(2);
    n(435),
    n(616);
    var r = n(7)
      , o = n(6)
      , a = n(0)
      , s = n(0)
      , c = n(72)
      , l = function() {
        function t(t, e) {
            this.flowFactory = t,
            this.JWTTokenService = e,
            this.uploaders = {}
        }
        return t.prototype.setDatasetQuery = function(t, e) {
            this.uploaders[t].opts.query = e
        }
        ,
        t.prototype.getUploader = function(t, e) {
            if (this.uploaders[t])
                return this.uploaders[t];
            var n = {};
            return this.JWTTokenService.setJwtHeaderOnConfig(n),
            this.uploaders[t] = this.flowFactory.create({
                target: e.target,
                prioritizeFirstAndLastChunk: r.get(e, "prioritizeFirstAndLastChunk", !0),
                allowDuplicateUploads: r.get(e, "allowDuplicateUploads", !1),
                chunkSize: r.get(e, "chunkSize", 10485760),
                headers: n
            }),
            this.uploaders[t]
        }
        ,
        t.prototype.setUploader = function(t, e) {
            this.uploaders[t] = e
        }
        ,
        t.prototype.deleteUploader = function(t) {
            delete this.uploaders[t]
        }
        ,
        t.prototype.isUploading = function() {
            return r.some(this.uploaders, (function(t) {
                return t.isUploading()
            }
            ))
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(s.ɵɵinject("flowFactory"),s.ɵɵinject(c.JWTTokenService))
        }
        ,
        t.ɵprov = s.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.FlowService = l,
    s.ɵsetClassMetadata(l, [{
        type: a.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: void 0,
            decorators: [{
                type: a.Inject,
                args: ["flowFactory"]
            }]
        }, {
            type: c.JWTTokenService
        }]
    }
    ), null),
    i.module("IVWebApp").service("FlowService", o.downgradeInjectable(l))
}
, function(t, e, n) {
    (function(t) {
        var n;
        /**
 * @license MIT
 */
        !function(i, r, o) {
            "use strict";
            if (i && r) {
                var a = i.navigator.msPointerEnabled;
                s.prototype = {
                    on: function(t, e) {
                        t = t.toLowerCase(),
                        this.events.hasOwnProperty(t) || (this.events[t] = []),
                        this.events[t].push(e)
                    },
                    off: function(t, e) {
                        var n, i, r;
                        void 0 !== t ? (t = t.toLowerCase(),
                        void 0 !== e ? this.events.hasOwnProperty(t) && (n = this.events[t],
                        i = e,
                        (r = n.indexOf(i)) > -1 && n.splice(r, 1)) : delete this.events[t]) : this.events = {}
                    },
                    fire: function(t, e) {
                        e = Array.prototype.slice.call(arguments),
                        t = t.toLowerCase();
                        var n = !1;
                        return this.events.hasOwnProperty(t) && f(this.events[t], (function(t) {
                            n = !1 === t.apply(this, e.slice(1)) || n
                        }
                        ), this),
                        "catchall" != t && (e.unshift("catchAll"),
                        n = !1 === this.fire.apply(this, e) || n),
                        !n
                    },
                    webkitReadDataTransfer: function(t) {
                        var e = this
                          , n = t.dataTransfer.items.length
                          , i = [];
                        function r(t, e) {
                            t.relativePath = e.substring(1),
                            i.push(t),
                            a()
                        }
                        function o(t) {
                            throw a(),
                            t
                        }
                        function a() {
                            0 == --n && e.addFiles(i, t)
                        }
                        f(t.dataTransfer.items, (function(t) {
                            var e = t.webkitGetAsEntry();
                            e ? e.isFile ? r(t.getAsFile(), e.fullPath) : function t(e) {
                                e.readEntries((function(i) {
                                    i.length ? (n += i.length,
                                    f(i, (function(e) {
                                        if (e.isFile) {
                                            var n = e.fullPath;
                                            e.file((function(t) {
                                                r(t, n)
                                            }
                                            ), o)
                                        } else
                                            e.isDirectory && t(e.createReader())
                                    }
                                    )),
                                    t(e)) : a()
                                }
                                ), o)
                            }(e.createReader()) : a()
                        }
                        ))
                    },
                    generateUniqueIdentifier: function(t) {
                        var e = this.opts.generateUniqueIdentifier;
                        if ("function" == typeof e)
                            return e(t);
                        var n = t.relativePath || t.webkitRelativePath || t.fileName || t.name;
                        return t.size + "-" + n.replace(/[^0-9a-zA-Z_-]/gim, "")
                    },
                    uploadNextChunk: function(t) {
                        var e = !1;
                        if (this.opts.prioritizeFirstAndLastChunk && (f(this.files, (function(t) {
                            return !t.paused && t.chunks.length && "pending" === t.chunks[0].status() ? (t.chunks[0].send(),
                            e = !0,
                            !1) : !t.paused && t.chunks.length > 1 && "pending" === t.chunks[t.chunks.length - 1].status() ? (t.chunks[t.chunks.length - 1].send(),
                            e = !0,
                            !1) : void 0
                        }
                        )),
                        e))
                            return e;
                        if (f(this.files, (function(t) {
                            if (t.paused || f(t.chunks, (function(t) {
                                if ("pending" === t.status())
                                    return t.send(),
                                    e = !0,
                                    !1
                            }
                            )),
                            e)
                                return !1
                        }
                        )),
                        e)
                            return !0;
                        var n = !1;
                        return f(this.files, (function(t) {
                            if (!t.isComplete())
                                return n = !0,
                                !1
                        }
                        )),
                        n || t || p((function() {
                            this.fire("complete")
                        }
                        ), this),
                        !1
                    },
                    assignBrowse: function(t, e, n, i) {
                        t instanceof Element && (t = [t]),
                        f(t, (function(t) {
                            var o;
                            "INPUT" === t.tagName && "file" === t.type ? o = t : ((o = r.createElement("input")).setAttribute("type", "file"),
                            h(o.style, {
                                visibility: "hidden",
                                position: "absolute",
                                width: "1px",
                                height: "1px"
                            }),
                            t.appendChild(o),
                            t.addEventListener("click", (function() {
                                o.click()
                            }
                            ), !1)),
                            this.opts.singleFile || n || o.setAttribute("multiple", "multiple"),
                            e && o.setAttribute("webkitdirectory", "webkitdirectory"),
                            f(i, (function(t, e) {
                                o.setAttribute(e, t)
                            }
                            ));
                            var a = this;
                            o.addEventListener("change", (function(t) {
                                t.target.value && (a.addFiles(t.target.files, t),
                                t.target.value = "")
                            }
                            ), !1)
                        }
                        ), this)
                    },
                    assignDrop: function(t) {
                        void 0 === t.length && (t = [t]),
                        f(t, (function(t) {
                            t.addEventListener("dragover", this.preventEvent, !1),
                            t.addEventListener("dragenter", this.preventEvent, !1),
                            t.addEventListener("drop", this.onDrop, !1)
                        }
                        ), this)
                    },
                    unAssignDrop: function(t) {
                        void 0 === t.length && (t = [t]),
                        f(t, (function(t) {
                            t.removeEventListener("dragover", this.preventEvent),
                            t.removeEventListener("dragenter", this.preventEvent),
                            t.removeEventListener("drop", this.onDrop)
                        }
                        ), this)
                    },
                    isUploading: function() {
                        var t = !1;
                        return f(this.files, (function(e) {
                            if (e.isUploading())
                                return t = !0,
                                !1
                        }
                        )),
                        t
                    },
                    _shouldUploadNext: function() {
                        var t = 0
                          , e = !0
                          , n = this.opts.simultaneousUploads;
                        return f(this.files, (function(i) {
                            f(i.chunks, (function(i) {
                                if ("uploading" === i.status() && ++t >= n)
                                    return e = !1,
                                    !1
                            }
                            ))
                        }
                        )),
                        e && t
                    },
                    upload: function() {
                        var t = this._shouldUploadNext();
                        if (!1 !== t) {
                            this.fire("uploadStart");
                            for (var e = !1, n = 1; n <= this.opts.simultaneousUploads - t; n++)
                                e = this.uploadNextChunk(!0) || e;
                            e || p((function() {
                                this.fire("complete")
                            }
                            ), this)
                        }
                    },
                    resume: function() {
                        f(this.files, (function(t) {
                            t.isComplete() || t.resume()
                        }
                        ))
                    },
                    pause: function() {
                        f(this.files, (function(t) {
                            t.pause()
                        }
                        ))
                    },
                    cancel: function() {
                        for (var t = this.files.length - 1; t >= 0; t--)
                            this.files[t].cancel()
                    },
                    progress: function() {
                        var t = 0
                          , e = 0;
                        return f(this.files, (function(n) {
                            t += n.progress() * n.size,
                            e += n.size
                        }
                        )),
                        e > 0 ? t / e : 0
                    },
                    addFile: function(t, e) {
                        this.addFiles([t], e)
                    },
                    addFiles: function(t, e) {
                        var n = [];
                        f(t, (function(t) {
                            if ((!a || a && t.size > 0) && (t.size % 4096 != 0 || "." !== t.name && "." !== t.fileName)) {
                                var i = this.generateUniqueIdentifier(t);
                                if (this.opts.allowDuplicateUploads || !this.getFromUniqueIdentifier(i)) {
                                    var r = new c(this,t,i);
                                    this.fire("fileAdded", r, e) && n.push(r)
                                }
                            }
                        }
                        ), this),
                        this.fire("filesAdded", n, e) && (f(n, (function(t) {
                            this.opts.singleFile && this.files.length > 0 && this.removeFile(this.files[0]),
                            this.files.push(t)
                        }
                        ), this),
                        this.fire("filesSubmitted", n, e))
                    },
                    removeFile: function(t) {
                        for (var e = this.files.length - 1; e >= 0; e--)
                            this.files[e] === t && (this.files.splice(e, 1),
                            t.abort(),
                            this.fire("fileRemoved", t))
                    },
                    getFromUniqueIdentifier: function(t) {
                        var e = !1;
                        return f(this.files, (function(n) {
                            n.uniqueIdentifier === t && (e = n)
                        }
                        )),
                        e
                    },
                    getSize: function() {
                        var t = 0;
                        return f(this.files, (function(e) {
                            t += e.size
                        }
                        )),
                        t
                    },
                    sizeUploaded: function() {
                        var t = 0;
                        return f(this.files, (function(e) {
                            t += e.sizeUploaded()
                        }
                        )),
                        t
                    },
                    timeRemaining: function() {
                        var t = 0
                          , e = 0;
                        return f(this.files, (function(n) {
                            n.paused || n.error || (t += n.size - n.sizeUploaded(),
                            e += n.averageSpeed)
                        }
                        )),
                        t && !e ? Number.POSITIVE_INFINITY : t || e ? Math.floor(t / e) : 0
                    }
                },
                c.prototype = {
                    measureSpeed: function() {
                        var t = Date.now() - this._lastProgressCallback;
                        if (t) {
                            var e = this.flowObj.opts.speedSmoothingFactor
                              , n = this.sizeUploaded();
                            this.currentSpeed = Math.max((n - this._prevUploadedSize) / t * 1e3, 0),
                            this.averageSpeed = e * this.currentSpeed + (1 - e) * this.averageSpeed,
                            this._prevUploadedSize = n
                        }
                    },
                    chunkEvent: function(t, e, n) {
                        switch (e) {
                        case "progress":
                            if (Date.now() - this._lastProgressCallback < this.flowObj.opts.progressCallbacksInterval)
                                break;
                            this.measureSpeed(),
                            this.flowObj.fire("fileProgress", this, t),
                            this.flowObj.fire("progress"),
                            this._lastProgressCallback = Date.now();
                            break;
                        case "error":
                            this.error = !0,
                            this.abort(!0),
                            this.flowObj.fire("fileError", this, n, t),
                            this.flowObj.fire("error", n, this, t);
                            break;
                        case "success":
                            if (this.error)
                                return;
                            this.measureSpeed(),
                            this.flowObj.fire("fileProgress", this, t),
                            this.flowObj.fire("progress"),
                            this._lastProgressCallback = Date.now(),
                            this.isComplete() && (this.currentSpeed = 0,
                            this.averageSpeed = 0,
                            this.flowObj.fire("fileSuccess", this, n, t));
                            break;
                        case "retry":
                            this.flowObj.fire("fileRetry", this, t)
                        }
                    },
                    pause: function() {
                        this.paused = !0,
                        this.abort()
                    },
                    resume: function() {
                        this.paused = !1,
                        this.flowObj.upload()
                    },
                    abort: function(t) {
                        this.currentSpeed = 0,
                        this.averageSpeed = 0;
                        var e = this.chunks;
                        t && (this.chunks = []),
                        f(e, (function(t) {
                            "uploading" === t.status() && (t.abort(),
                            this.flowObj.uploadNextChunk())
                        }
                        ), this)
                    },
                    cancel: function() {
                        this.flowObj.removeFile(this)
                    },
                    retry: function() {
                        this.bootstrap(),
                        this.flowObj.upload()
                    },
                    bootstrap: function() {
                        "function" == typeof this.flowObj.opts.initFileFn && this.flowObj.opts.initFileFn(this),
                        this.abort(!0),
                        this.error = !1,
                        this._prevProgress = 0;
                        var t = this.flowObj.opts.forceChunkSize ? Math.ceil : Math.floor;
                        this.chunkSize = d(this.flowObj.opts.chunkSize, this);
                        for (var e = Math.max(t(this.size / this.chunkSize), 1), n = 0; n < e; n++)
                            this.chunks.push(new u(this.flowObj,this,n))
                    },
                    progress: function() {
                        if (this.error)
                            return 1;
                        if (1 === this.chunks.length)
                            return this._prevProgress = Math.max(this._prevProgress, this.chunks[0].progress()),
                            this._prevProgress;
                        var t = 0;
                        f(this.chunks, (function(e) {
                            t += e.progress() * (e.endByte - e.startByte)
                        }
                        ));
                        var e = t / this.size;
                        return this._prevProgress = Math.max(this._prevProgress, e > .9999 ? 1 : e),
                        this._prevProgress
                    },
                    isUploading: function() {
                        var t = !1;
                        return f(this.chunks, (function(e) {
                            if ("uploading" === e.status())
                                return t = !0,
                                !1
                        }
                        )),
                        t
                    },
                    isComplete: function() {
                        var t = !1;
                        return f(this.chunks, (function(e) {
                            var n = e.status();
                            if ("pending" === n || "uploading" === n || "reading" === n || 1 === e.preprocessState || 1 === e.readState)
                                return t = !0,
                                !1
                        }
                        )),
                        !t
                    },
                    sizeUploaded: function() {
                        var t = 0;
                        return f(this.chunks, (function(e) {
                            t += e.sizeUploaded()
                        }
                        )),
                        t
                    },
                    timeRemaining: function() {
                        if (this.paused || this.error)
                            return 0;
                        var t = this.size - this.sizeUploaded();
                        return t && !this.averageSpeed ? Number.POSITIVE_INFINITY : t || this.averageSpeed ? Math.floor(t / this.averageSpeed) : 0
                    },
                    getType: function() {
                        return this.file.type && this.file.type.split("/")[1]
                    },
                    getExtension: function() {
                        return this.name.substr(2 + (~-this.name.lastIndexOf(".") >>> 0)).toLowerCase()
                    }
                },
                u.prototype = {
                    getParams: function() {
                        return {
                            flowChunkNumber: this.offset + 1,
                            flowChunkSize: this.chunkSize,
                            flowCurrentChunkSize: this.endByte - this.startByte,
                            flowTotalSize: this.fileObj.size,
                            flowIdentifier: this.fileObj.uniqueIdentifier,
                            flowFilename: this.fileObj.name,
                            flowRelativePath: this.fileObj.relativePath,
                            flowTotalChunks: this.fileObj.chunks.length
                        }
                    },
                    getTarget: function(t, e) {
                        return 0 == e.length ? t : (t.indexOf("?") < 0 ? t += "?" : t += "&",
                        t + e.join("&"))
                    },
                    test: function() {
                        this.xhr = new XMLHttpRequest,
                        this.xhr.addEventListener("load", this.testHandler, !1),
                        this.xhr.addEventListener("error", this.testHandler, !1);
                        var t = d(this.flowObj.opts.testMethod, this.fileObj, this)
                          , e = this.prepareXhrRequest(t, !0);
                        this.xhr.send(e)
                    },
                    preprocessFinished: function() {
                        this.endByte = this.computeEndByte(),
                        this.preprocessState = 2,
                        this.send()
                    },
                    readFinished: function(t) {
                        this.readState = 2,
                        this.bytes = t,
                        this.send()
                    },
                    send: function() {
                        var t = this.flowObj.opts.preprocess
                          , e = this.flowObj.opts.readFileFn;
                        if ("function" == typeof t)
                            switch (this.preprocessState) {
                            case 0:
                                return this.preprocessState = 1,
                                void t(this);
                            case 1:
                                return
                            }
                        switch (this.readState) {
                        case 0:
                            return this.readState = 1,
                            void e(this.fileObj, this.startByte, this.endByte, this.fileObj.file.type, this);
                        case 1:
                            return
                        }
                        if (!this.flowObj.opts.testChunks || this.tested) {
                            this.loaded = 0,
                            this.total = 0,
                            this.pendingRetry = !1,
                            this.xhr = new XMLHttpRequest,
                            this.xhr.upload.addEventListener("progress", this.progressHandler, !1),
                            this.xhr.addEventListener("load", this.doneHandler, !1),
                            this.xhr.addEventListener("error", this.doneHandler, !1);
                            var n = d(this.flowObj.opts.uploadMethod, this.fileObj, this)
                              , i = this.prepareXhrRequest(n, !1, this.flowObj.opts.method, this.bytes)
                              , r = this.flowObj.opts.changeRawDataBeforeSend;
                            "function" == typeof r && (i = r(this, i)),
                            this.xhr.send(i)
                        } else
                            this.test()
                    },
                    abort: function() {
                        var t = this.xhr;
                        this.xhr = null,
                        t && t.abort()
                    },
                    status: function(t) {
                        return 1 === this.readState ? "reading" : this.pendingRetry || 1 === this.preprocessState ? "uploading" : this.xhr ? this.xhr.readyState < 4 ? "uploading" : this.flowObj.opts.successStatuses.indexOf(this.xhr.status) > -1 ? "success" : this.flowObj.opts.permanentErrors.indexOf(this.xhr.status) > -1 || !t && this.retries >= this.flowObj.opts.maxChunkRetries ? "error" : (this.abort(),
                        "pending") : "pending"
                    },
                    message: function() {
                        return this.xhr ? this.xhr.responseText : ""
                    },
                    progress: function() {
                        if (this.pendingRetry)
                            return 0;
                        var t = this.status();
                        return "success" === t || "error" === t ? 1 : "pending" === t ? 0 : this.total > 0 ? this.loaded / this.total : 0
                    },
                    sizeUploaded: function() {
                        var t = this.endByte - this.startByte;
                        return "success" !== this.status() && (t = this.progress() * t),
                        t
                    },
                    prepareXhrRequest: function(t, e, n, i) {
                        var r = d(this.flowObj.opts.query, this.fileObj, this, e);
                        r = h(r || {}, this.getParams());
                        var o = d(this.flowObj.opts.target, this.fileObj, this, e)
                          , a = null;
                        if ("GET" === t || "octet" === n) {
                            var s = [];
                            f(r, (function(t, e) {
                                s.push([encodeURIComponent(e), encodeURIComponent(t)].join("="))
                            }
                            )),
                            o = this.getTarget(o, s),
                            a = i || null
                        } else
                            a = new FormData,
                            f(r, (function(t, e) {
                                a.append(e, t)
                            }
                            )),
                            void 0 !== i && a.append(this.flowObj.opts.fileParameterName, i, this.filename || this.fileObj.file.name);
                        return this.xhr.open(t, o, !0),
                        this.xhr.withCredentials = this.flowObj.opts.withCredentials,
                        f(d(this.flowObj.opts.headers, this.fileObj, this, e), (function(t, e) {
                            this.xhr.setRequestHeader(e, t)
                        }
                        ), this),
                        a
                    }
                },
                s.evalOpts = d,
                s.extend = h,
                s.each = f,
                s.FlowFile = c,
                s.FlowChunk = u,
                s.version = "<%= version %>",
                t && "object" == typeof t.exports ? t.exports = s : (i.Flow = s,
                void 0 === (n = function() {
                    return s
                }
                .apply(e, [])) || (t.exports = n))
            } else
                console.warn("Flowjs needs window and document objects to work");
            function s(t) {
                if (this.support = !("undefined" == typeof File || "undefined" == typeof Blob || "undefined" == typeof FileList || !Blob.prototype.slice && !Blob.prototype.webkitSlice && !Blob.prototype.mozSlice),
                this.support) {
                    this.supportDirectory = /Chrome/.test(i.navigator.userAgent) || /Firefox/.test(i.navigator.userAgent) || /Edge/.test(i.navigator.userAgent),
                    this.files = [],
                    this.defaults = {
                        chunkSize: 1048576,
                        forceChunkSize: !1,
                        simultaneousUploads: 3,
                        singleFile: !1,
                        fileParameterName: "file",
                        progressCallbacksInterval: 500,
                        speedSmoothingFactor: .1,
                        query: {},
                        headers: {},
                        withCredentials: !1,
                        preprocess: null,
                        changeRawDataBeforeSend: null,
                        method: "multipart",
                        testMethod: "GET",
                        uploadMethod: "POST",
                        prioritizeFirstAndLastChunk: !1,
                        allowDuplicateUploads: !1,
                        target: "/",
                        testChunks: !0,
                        generateUniqueIdentifier: null,
                        maxChunkRetries: 0,
                        chunkRetryInterval: null,
                        permanentErrors: [404, 413, 415, 500, 501],
                        successStatuses: [200, 201, 202],
                        onDropStopPropagation: !1,
                        initFileFn: null,
                        readFileFn: l
                    },
                    this.opts = {},
                    this.events = {};
                    var e = this;
                    this.onDrop = function(t) {
                        e.opts.onDropStopPropagation && t.stopPropagation(),
                        t.preventDefault();
                        var n = t.dataTransfer;
                        n.items && n.items[0] && n.items[0].webkitGetAsEntry ? e.webkitReadDataTransfer(t) : e.addFiles(n.files, t)
                    }
                    ,
                    this.preventEvent = function(t) {
                        t.preventDefault()
                    }
                    ,
                    this.opts = s.extend({}, this.defaults, t || {})
                }
            }
            function c(t, e, n) {
                this.flowObj = t,
                this.bytes = null,
                this.file = e,
                this.name = e.fileName || e.name,
                this.size = e.size,
                this.relativePath = e.relativePath || e.webkitRelativePath || this.name,
                this.uniqueIdentifier = void 0 === n ? t.generateUniqueIdentifier(e) : n,
                this.chunkSize = 0,
                this.chunks = [],
                this.paused = !1,
                this.error = !1,
                this.averageSpeed = 0,
                this.currentSpeed = 0,
                this._lastProgressCallback = Date.now(),
                this._prevUploadedSize = 0,
                this._prevProgress = 0,
                this.bootstrap()
            }
            function l(t, e, n, i, r) {
                var o = "slice";
                t.file.slice ? o = "slice" : t.file.mozSlice ? o = "mozSlice" : t.file.webkitSlice && (o = "webkitSlice"),
                r.readFinished(t.file[o](e, n, i))
            }
            function u(t, e, n) {
                this.flowObj = t,
                this.fileObj = e,
                this.offset = n,
                this.tested = !1,
                this.retries = 0,
                this.pendingRetry = !1,
                this.preprocessState = 0,
                this.readState = 0,
                this.loaded = 0,
                this.total = 0,
                this.chunkSize = this.fileObj.chunkSize,
                this.startByte = this.offset * this.chunkSize,
                this.filename = null,
                this.computeEndByte = function() {
                    var t = Math.min(this.fileObj.size, (this.offset + 1) * this.chunkSize);
                    return this.fileObj.size - t < this.chunkSize && !this.flowObj.opts.forceChunkSize && (t = this.fileObj.size),
                    t
                }
                ,
                this.endByte = this.computeEndByte(),
                this.xhr = null;
                var i = this;
                this.event = function(t, e) {
                    (e = Array.prototype.slice.call(arguments)).unshift(i),
                    i.fileObj.chunkEvent.apply(i.fileObj, e)
                }
                ,
                this.progressHandler = function(t) {
                    t.lengthComputable && (i.loaded = t.loaded,
                    i.total = t.total),
                    i.event("progress", t)
                }
                ,
                this.testHandler = function(t) {
                    var e = i.status(!0);
                    "error" === e ? (i.event(e, i.message()),
                    i.flowObj.uploadNextChunk()) : "success" === e ? (i.tested = !0,
                    i.event(e, i.message()),
                    i.flowObj.uploadNextChunk()) : i.fileObj.paused || (i.tested = !0,
                    i.send())
                }
                ,
                this.doneHandler = function(t) {
                    var e = i.status();
                    if ("success" === e || "error" === e)
                        delete this.data,
                        i.event(e, i.message()),
                        i.flowObj.uploadNextChunk();
                    else if (!i.fileObj.paused) {
                        i.event("retry", i.message()),
                        i.pendingRetry = !0,
                        i.abort(),
                        i.retries++;
                        var n = i.flowObj.opts.chunkRetryInterval;
                        null !== n ? setTimeout((function() {
                            i.send()
                        }
                        ), n) : i.send()
                    }
                }
            }
            function d(t, e) {
                return "function" == typeof t && (e = Array.prototype.slice.call(arguments),
                t = t.apply(null, e.slice(1))),
                t
            }
            function p(t, e) {
                setTimeout(t.bind(e), 0)
            }
            function h(t, e) {
                return f(arguments, (function(e) {
                    e !== t && f(e, (function(e, n) {
                        t[n] = e
                    }
                    ))
                }
                )),
                t
            }
            function f(t, e, n) {
                var i;
                if (t)
                    if (void 0 !== t.length) {
                        for (i = 0; i < t.length; i++)
                            if (!1 === e.call(n, t[i], i))
                                return
                    } else
                        for (i in t)
                            if (t.hasOwnProperty(i) && !1 === e.call(n, t[i], i))
                                return
            }
        }("undefined" != typeof window && window, "undefined" != typeof document && document)
    }
    ).call(this, n(452)(t))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(6)
      , o = n(0)
      , a = n(283)
      , s = n(0)
      , c = function() {
        function t(t, e) {
            var n, i;
            this.gettextCatalog = t,
            this.gettext = e,
            this.jobNameTranslation = {},
            this.jobErrorTitleTranslation = {},
            this.jobNameTranslation = ((n = {})[a.JobName.BUNDLE_IMPORT_JOB] = this.gettext("Import Bundle", void 0, "title"),
            n[a.JobName.BUNDLE_WIFI_IMPORT_JOB] = this.gettext("Import Navigation App Data", void 0, "title"),
            n[a.JobName.BUNDLE_NAVGRAPH_IMPORT_JOB] = this.gettext("Import Navgraph", void 0, "title"),
            n[a.JobName.UNZIP_AND_MERGE_JOB] = this.gettext("Unpack Archive", void 0, "title"),
            n[a.JobName.MAPS_AND_NAVGRAPH_GENERATOR_JOB] = this.gettext("Compute Maps and Navigation Graph", void 0, "title"),
            n[a.JobName.MAPS_GENERATOR_JOB] = this.gettext("Compute Maps", void 0, "title"),
            n[a.JobName.FLOOR_MAPS_GENERATOR_JOB] = this.gettext("Compute Floor Maps", void 0, "title"),
            n[a.JobName.FLOOR_MAPS_TILER_JOB] = this.gettext("Upload Maps", void 0, "title"),
            n[a.JobName.NAVGRAPH_GENERATOR_JOB] = this.gettext("Compute Navigation Graph", void 0, "title"),
            n[a.JobName.POINTCLOUD_IMPORTER_JOB] = this.gettext("Import Point Cloud", void 0, "title"),
            n[a.JobName.POINTCLOUD_AUTO_ALIGN_JOB] = this.gettext("Automatic Point Cloud Alignment", void 0, "title"),
            n[a.JobName.DOWNLOAD_DATASET_FROM_S3_JOB] = this.gettext("Copy dataset to local file system", void 0, "title"),
            n[a.JobName.POINT_CLOUD_CROP_JOB] = this.gettext("Crop Point Cloud", void 0, "title"),
            n[a.JobName.WEBDIR_UPGRADE_JOB] = this.gettext("Dataset Upgrade", void 0, "title"),
            n[a.JobName.VISUAL_INDEX_IMPORT_JOB] = this.gettext("Unpacking Visual Index", void 0, "title"),
            n),
            this.jobErrorTitleTranslation = ((i = {})[a.JobName.BUNDLE_IMPORT_JOB] = this.gettext("Error While Importing a Bundle", void 0, "title"),
            i[a.JobName.BUNDLE_WIFI_IMPORT_JOB] = this.gettext("Error While Importing Navigation App Data", void 0, "title"),
            i[a.JobName.BUNDLE_NAVGRAPH_IMPORT_JOB] = this.gettext("Error While Importing Navgraph", void 0, "title"),
            i[a.JobName.UNZIP_AND_MERGE_JOB] = this.gettext("Error While Unpacking the Archive", void 0, "title"),
            i[a.JobName.MAPS_AND_NAVGRAPH_GENERATOR_JOB] = this.gettext("Error While Creating Maps and Navgraph", void 0, "title"),
            i[a.JobName.MAPS_GENERATOR_JOB] = this.gettext("Error While Creating Maps", void 0, "title"),
            i[a.JobName.FLOOR_MAPS_GENERATOR_JOB] = this.gettext("Error While Creating Floor Maps", void 0, "title"),
            i[a.JobName.FLOOR_MAPS_TILER_JOB] = this.gettext("Error While Uploading Maps", void 0, "title"),
            i[a.JobName.NAVGRAPH_GENERATOR_JOB] = this.gettext("Error While Creating Navgraph", void 0, "title"),
            i[a.JobName.POINTCLOUD_IMPORTER_JOB] = this.gettext("Error While Importing a Point Cloud", void 0, "title"),
            i[a.JobName.POINTCLOUD_AUTO_ALIGN_JOB] = this.gettext("Error While Automatically Aligning Point Cloud", void 0, "title"),
            i[a.JobName.DOWNLOAD_DATASET_FROM_S3_JOB] = this.gettext("Error while copying dataset to local file system", void 0, "title"),
            i[a.JobName.POINT_CLOUD_CROP_JOB] = this.gettext("Error While Cropping a Point Cloud", void 0, "title"),
            i[a.JobName.WEBDIR_UPGRADE_JOB] = this.gettext("Error While Upgrading Datasets", void 0, "title"),
            i[a.JobName.VISUAL_INDEX_IMPORT_JOB] = this.gettext("Error While Uploading Visual Index", void 0, "title"),
            i.default = this.gettext("Error While Running the Job", void 0, "title"),
            i)
        }
        return t.prototype.translateJobName = function(t) {
            return this.jobNameTranslation[t] ? this.gettextCatalog.getString(this.jobNameTranslation[t], void 0, "title") : t
        }
        ,
        t.prototype.getJobErrorTitle = function(t) {
            return this.jobErrorTitleTranslation[t] ? this.gettextCatalog.getString(this.jobErrorTitleTranslation[t], void 0, "title") : this.gettextCatalog.getString(this.jobErrorTitleTranslation.default, void 0, "title")
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(s.ɵɵinject("gettextCatalog"),s.ɵɵinject("gettext"))
        }
        ,
        t.ɵprov = s.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.JobNameTranslatorService = c,
    s.ɵsetClassMetadata(c, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: void 0,
            decorators: [{
                type: o.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: void 0,
            decorators: [{
                type: o.Inject,
                args: ["gettext"]
            }]
        }]
    }
    ), null),
    i.module("IVWebApp").service("JobNameTranslatorService", r.downgradeInjectable(c))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return a
    }
    ));
    var i = n(119)
      , r = n(455)
      , o = n(333);
    function a(t, e) {
        return void 0 === e && (e = i.a),
        Object(r.a)((function() {
            return Object(o.a)(t, e)
        }
        ))
    }
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return o
    }
    ));
    var i = n(250)
      , r = n(77);
    function o() {
        for (var t = [], e = 0; e < arguments.length; e++)
            t[e] = arguments[e];
        var n = t[t.length - 1];
        return Object(r.a)(n) ? (t.pop(),
        function(e) {
            return Object(i.a)(t, e, n)
        }
        ) : function(e) {
            return Object(i.a)(t, e)
        }
    }
}
, function(t, e, n) {
    var i = n(1061);
    function r(t, e) {
        var n = (e = e || {}).delimiter || "."
          , r = e.maxDepth
          , o = {};
        return function t(a, s, c) {
            c = c || 1,
            Object.keys(a).forEach((function(l) {
                var u = a[l]
                  , d = e.safe && Array.isArray(u)
                  , p = Object.prototype.toString.call(u)
                  , h = i(u)
                  , f = s ? s + n + l : l;
                if (!d && !h && ("[object Object]" === p || "[object Array]" === p) && Object.keys(u).length && (!e.maxDepth || c < r))
                    return t(u, f, c + 1);
                o[f] = u
            }
            ))
        }(t),
        o
    }
    t.exports = r,
    r.flatten = r,
    r.unflatten = function t(e, n) {
        var r = (n = n || {}).delimiter || "."
          , o = n.overwrite || !1
          , a = {};
        if (i(e) || "[object Object]" !== Object.prototype.toString.call(e))
            return e;
        function s(t) {
            var e = Number(t);
            return isNaN(e) || -1 !== t.indexOf(".") || n.object ? t : e
        }
        return Object.keys(e).sort((function(t, e) {
            return t.length - e.length
        }
        )).forEach((function(i) {
            for (var c = i.split(r), l = s(c.shift()), u = s(c[0]), d = a; void 0 !== u; ) {
                var p = Object.prototype.toString.call(d[l])
                  , h = "[object Object]" === p || "[object Array]" === p;
                if (!o && !h && void 0 !== d[l])
                    return;
                (o && !h || !o && null == d[l]) && (d[l] = "number" != typeof u || n.object ? {} : []),
                d = d[l],
                c.length > 0 && (l = s(c.shift()),
                u = s(c[0]))
            }
            d[l] = t(e[i], n)
        }
        )),
        a
    }
}
, function(t, e, n) {
    "use strict";
    n.r(e),
    n.d(e, "MAT_DIALOG_DATA", (function() {
        return A
    }
    )),
    n.d(e, "MAT_DIALOG_DEFAULT_OPTIONS", (function() {
        return T
    }
    )),
    n.d(e, "MAT_DIALOG_SCROLL_STRATEGY", (function() {
        return O
    }
    )),
    n.d(e, "MAT_DIALOG_SCROLL_STRATEGY_FACTORY", (function() {
        return _
    }
    )),
    n.d(e, "MAT_DIALOG_SCROLL_STRATEGY_PROVIDER", (function() {
        return I
    }
    )),
    n.d(e, "MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY", (function() {
        return P
    }
    )),
    n.d(e, "MatDialog", (function() {
        return k
    }
    )),
    n.d(e, "MatDialogActions", (function() {
        return j
    }
    )),
    n.d(e, "MatDialogClose", (function() {
        return R
    }
    )),
    n.d(e, "MatDialogConfig", (function() {
        return w
    }
    )),
    n.d(e, "MatDialogContainer", (function() {
        return M
    }
    )),
    n.d(e, "MatDialogContent", (function() {
        return N
    }
    )),
    n.d(e, "MatDialogModule", (function() {
        return F
    }
    )),
    n.d(e, "MatDialogRef", (function() {
        return C
    }
    )),
    n.d(e, "MatDialogTitle", (function() {
        return L
    }
    )),
    n.d(e, "matDialogAnimations", (function() {
        return S
    }
    )),
    n.d(e, "throwMatDialogContentAlreadyAttachedError", (function() {
        return x
    }
    ));
    var i = n(115)
      , r = n(69)
      , o = n(0)
      , a = n(47)
      , s = n(1)
      , c = n(37)
      , l = n(3)
      , u = n(32)
      , d = n(274)
      , p = n(93)
      , h = n(165)
      , f = n(221)
      , m = n(438)
      , g = n(30)
      , v = n(63)
      , y = n(60);
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function b(t, e) {}
    var w = function() {
        this.role = "dialog",
        this.panelClass = "",
        this.hasBackdrop = !0,
        this.backdropClass = "",
        this.disableClose = !1,
        this.width = "",
        this.height = "",
        this.maxWidth = "80vw",
        this.data = null,
        this.ariaDescribedBy = null,
        this.ariaLabelledBy = null,
        this.ariaLabel = null,
        this.autoFocus = !0,
        this.restoreFocus = !0,
        this.closeOnNavigation = !0
    }
      , S = {
        dialogContainer: Object(g.trigger)("dialogContainer", [Object(g.state)("void, exit", Object(g.style)({
            opacity: 0,
            transform: "scale(0.7)"
        })), Object(g.state)("enter", Object(g.style)({
            transform: "none"
        })), Object(g.transition)("* => enter", Object(g.animate)("150ms cubic-bezier(0, 0, 0.2, 1)", Object(g.style)({
            transform: "none",
            opacity: 1
        }))), Object(g.transition)("* => void, * => exit", Object(g.animate)("75ms cubic-bezier(0.4, 0.0, 0.2, 1)", Object(g.style)({
            opacity: 0
        })))])
    };
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function x() {
        throw Error("Attempting to attach dialog content after content is already attached")
    }
    var M = function(t) {
        function e(e, n, i, r, a) {
            var s = t.call(this) || this;
            return s._elementRef = e,
            s._focusTrapFactory = n,
            s._changeDetectorRef = i,
            s._config = a,
            s._elementFocusedBeforeDialogWasOpened = null,
            s._state = "enter",
            s._animationStateChanged = new o.EventEmitter,
            s.attachDomPortal = function(t) {
                return s._portalOutlet.hasAttached() && x(),
                s._savePreviouslyFocusedElement(),
                s._portalOutlet.attachDomPortal(t)
            }
            ,
            s._ariaLabelledBy = a.ariaLabelledBy || null,
            s._document = r,
            s
        }
        return Object(s.c)(e, t),
        e.prototype.attachComponentPortal = function(t) {
            return this._portalOutlet.hasAttached() && x(),
            this._savePreviouslyFocusedElement(),
            this._portalOutlet.attachComponentPortal(t)
        }
        ,
        e.prototype.attachTemplatePortal = function(t) {
            return this._portalOutlet.hasAttached() && x(),
            this._savePreviouslyFocusedElement(),
            this._portalOutlet.attachTemplatePortal(t)
        }
        ,
        e.prototype._recaptureFocus = function() {
            this._containsFocus() || (this._getFocusTrap().focusInitialElement() || this._elementRef.nativeElement.focus())
        }
        ,
        e.prototype._trapFocus = function() {
            this._config.autoFocus ? this._getFocusTrap().focusInitialElementWhenReady() : this._containsFocus() || this._elementRef.nativeElement.focus()
        }
        ,
        e.prototype._restoreFocus = function() {
            var t = this._elementFocusedBeforeDialogWasOpened;
            if (this._config.restoreFocus && t && "function" == typeof t.focus) {
                var e = this._document.activeElement
                  , n = this._elementRef.nativeElement;
                e && e !== this._document.body && e !== n && !n.contains(e) || t.focus()
            }
            this._focusTrap && this._focusTrap.destroy()
        }
        ,
        e.prototype._savePreviouslyFocusedElement = function() {
            var t = this;
            this._document && (this._elementFocusedBeforeDialogWasOpened = this._document.activeElement,
            this._elementRef.nativeElement.focus && Promise.resolve().then((function() {
                return t._elementRef.nativeElement.focus()
            }
            )))
        }
        ,
        e.prototype._containsFocus = function() {
            var t = this._elementRef.nativeElement
              , e = this._document.activeElement;
            return t === e || t.contains(e)
        }
        ,
        e.prototype._getFocusTrap = function() {
            return this._focusTrap || (this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement)),
            this._focusTrap
        }
        ,
        e.prototype._onAnimationDone = function(t) {
            "enter" === t.toState ? this._trapFocus() : "exit" === t.toState && this._restoreFocus(),
            this._animationStateChanged.emit(t)
        }
        ,
        e.prototype._onAnimationStart = function(t) {
            this._animationStateChanged.emit(t)
        }
        ,
        e.prototype._startExitAnimation = function() {
            this._state = "exit",
            this._changeDetectorRef.markForCheck()
        }
        ,
        e.ctorParameters = function() {
            return [{
                type: o.ElementRef
            }, {
                type: v.i
            }, {
                type: o.ChangeDetectorRef
            }, {
                type: void 0,
                decorators: [{
                    type: o.Optional
                }, {
                    type: o.Inject,
                    args: [l.DOCUMENT]
                }]
            }, {
                type: w
            }]
        }
        ,
        e.propDecorators = {
            _portalOutlet: [{
                type: o.ViewChild,
                args: [r.c, {
                    static: !0
                }]
            }]
        },
        e.ɵfac = function(t) {
            return new (t || e)(o["ɵɵdirectiveInject"](o.ElementRef),o["ɵɵdirectiveInject"](v.i),o["ɵɵdirectiveInject"](o.ChangeDetectorRef),o["ɵɵdirectiveInject"](l.DOCUMENT, 8),o["ɵɵdirectiveInject"](w))
        }
        ,
        e.ɵcmp = o["ɵɵdefineComponent"]({
            type: e,
            selectors: [["mat-dialog-container"]],
            viewQuery: function(t, e) {
                var n;
                (1 & t && o["ɵɵstaticViewQuery"](r.c, !0),
                2 & t) && (o["ɵɵqueryRefresh"](n = o["ɵɵloadQuery"]()) && (e._portalOutlet = n.first))
            },
            hostAttrs: ["tabindex", "-1", "aria-modal", "true", 1, "mat-dialog-container"],
            hostVars: 6,
            hostBindings: function(t, e) {
                1 & t && o["ɵɵcomponentHostSyntheticListener"]("@dialogContainer.start", (function(t) {
                    return e._onAnimationStart(t)
                }
                ))("@dialogContainer.done", (function(t) {
                    return e._onAnimationDone(t)
                }
                )),
                2 & t && (o["ɵɵattribute"]("id", e._id)("role", e._config.role)("aria-labelledby", e._config.ariaLabel ? null : e._ariaLabelledBy)("aria-label", e._config.ariaLabel)("aria-describedby", e._config.ariaDescribedBy || null),
                o["ɵɵupdateSyntheticHostBinding"]("@dialogContainer", e._state))
            },
            features: [o["ɵɵInheritDefinitionFeature"]],
            decls: 1,
            vars: 0,
            consts: [["cdkPortalOutlet", ""]],
            template: function(t, e) {
                1 & t && o["ɵɵtemplate"](0, b, 0, 0, "ng-template", 0)
            },
            directives: [r.c],
            styles: [".mat-dialog-container{display:block;padding:24px;border-radius:4px;box-sizing:border-box;overflow:auto;outline:0;width:100%;height:100%;min-height:inherit;max-height:inherit}.cdk-high-contrast-active .mat-dialog-container{outline:solid 1px}.mat-dialog-content{display:block;margin:0 -24px;padding:0 24px;max-height:65vh;overflow:auto;-webkit-overflow-scrolling:touch}.mat-dialog-title{margin:0 0 20px;display:block}.mat-dialog-actions{padding:8px 0;display:flex;flex-wrap:wrap;min-height:52px;align-items:center;margin-bottom:-24px}.mat-dialog-actions[align=end]{justify-content:flex-end}.mat-dialog-actions[align=center]{justify-content:center}.mat-dialog-actions .mat-button-base+.mat-button-base,.mat-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}\n"],
            encapsulation: 2,
            data: {
                animation: [S.dialogContainer]
            }
        }),
        e
    }(r.a)
      , E = 0
      , C = function() {
        function t(t, e, n) {
            var i = this;
            void 0 === n && (n = "mat-dialog-" + E++),
            this._overlayRef = t,
            this._containerInstance = e,
            this.id = n,
            this.disableClose = this._containerInstance._config.disableClose,
            this._afterOpened = new u.a,
            this._afterClosed = new u.a,
            this._beforeClosed = new u.a,
            this._state = 0,
            e._id = n,
            e._animationStateChanged.pipe(Object(h.a)((function(t) {
                return "done" === t.phaseName && "enter" === t.toState
            }
            )), Object(f.a)(1)).subscribe((function() {
                i._afterOpened.next(),
                i._afterOpened.complete()
            }
            )),
            e._animationStateChanged.pipe(Object(h.a)((function(t) {
                return "done" === t.phaseName && "exit" === t.toState
            }
            )), Object(f.a)(1)).subscribe((function() {
                clearTimeout(i._closeFallbackTimeout),
                i._finishDialogClose()
            }
            )),
            t.detachments().subscribe((function() {
                i._beforeClosed.next(i._result),
                i._beforeClosed.complete(),
                i._afterClosed.next(i._result),
                i._afterClosed.complete(),
                i.componentInstance = null,
                i._overlayRef.dispose()
            }
            )),
            t.keydownEvents().pipe(Object(h.a)((function(t) {
                return t.keyCode === y.ESCAPE && !i.disableClose && !Object(y.hasModifierKey)(t)
            }
            ))).subscribe((function(t) {
                t.preventDefault(),
                i.close()
            }
            )),
            t.backdropClick().subscribe((function() {
                i.disableClose ? i._containerInstance._recaptureFocus() : i.close()
            }
            ))
        }
        return t.prototype.close = function(t) {
            var e = this;
            this._result = t,
            this._containerInstance._animationStateChanged.pipe(Object(h.a)((function(t) {
                return "start" === t.phaseName
            }
            )), Object(f.a)(1)).subscribe((function(n) {
                e._beforeClosed.next(t),
                e._beforeClosed.complete(),
                e._overlayRef.detachBackdrop(),
                e._closeFallbackTimeout = setTimeout((function() {
                    return e._finishDialogClose()
                }
                ), n.totalTime + 100)
            }
            )),
            this._containerInstance._startExitAnimation(),
            this._state = 1
        }
        ,
        t.prototype.afterOpened = function() {
            return this._afterOpened.asObservable()
        }
        ,
        t.prototype.afterClosed = function() {
            return this._afterClosed.asObservable()
        }
        ,
        t.prototype.beforeClosed = function() {
            return this._beforeClosed.asObservable()
        }
        ,
        t.prototype.backdropClick = function() {
            return this._overlayRef.backdropClick()
        }
        ,
        t.prototype.keydownEvents = function() {
            return this._overlayRef.keydownEvents()
        }
        ,
        t.prototype.updatePosition = function(t) {
            var e = this._getPositionStrategy();
            return t && (t.left || t.right) ? t.left ? e.left(t.left) : e.right(t.right) : e.centerHorizontally(),
            t && (t.top || t.bottom) ? t.top ? e.top(t.top) : e.bottom(t.bottom) : e.centerVertically(),
            this._overlayRef.updatePosition(),
            this
        }
        ,
        t.prototype.updateSize = function(t, e) {
            return void 0 === t && (t = ""),
            void 0 === e && (e = ""),
            this._getPositionStrategy().width(t).height(e),
            this._overlayRef.updatePosition(),
            this
        }
        ,
        t.prototype.addPanelClass = function(t) {
            return this._overlayRef.addPanelClass(t),
            this
        }
        ,
        t.prototype.removePanelClass = function(t) {
            return this._overlayRef.removePanelClass(t),
            this
        }
        ,
        t.prototype.getState = function() {
            return this._state
        }
        ,
        t.prototype._finishDialogClose = function() {
            this._state = 2,
            this._overlayRef.dispose()
        }
        ,
        t.prototype._getPositionStrategy = function() {
            return this._overlayRef.getConfig().positionStrategy
        }
        ,
        t
    }()
      , A = new o.InjectionToken("MatDialogData")
      , T = new o.InjectionToken("mat-dialog-default-options")
      , O = new o.InjectionToken("mat-dialog-scroll-strategy");
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function _(t) {
        return function() {
            return t.scrollStrategies.block()
        }
    }
    function P(t) {
        return function() {
            return t.scrollStrategies.block()
        }
    }
    var I = {
        provide: O,
        deps: [i.c],
        useFactory: P
    }
      , k = function() {
        function t(t, e, n, i, r, o, a) {
            var s = this;
            this._overlay = t,
            this._injector = e,
            this._defaultOptions = i,
            this._parentDialog = o,
            this._overlayContainer = a,
            this._openDialogsAtThisLevel = [],
            this._afterAllClosedAtThisLevel = new u.a,
            this._afterOpenedAtThisLevel = new u.a,
            this._ariaHiddenElements = new Map,
            this.afterAllClosed = Object(d.a)((function() {
                return s.openDialogs.length ? s._afterAllClosed : s._afterAllClosed.pipe(Object(m.a)(void 0))
            }
            )),
            this._scrollStrategy = r
        }
        return Object.defineProperty(t.prototype, "openDialogs", {
            get: function() {
                return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "afterOpened", {
            get: function() {
                return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "_afterAllClosed", {
            get: function() {
                var t = this._parentDialog;
                return t ? t._afterAllClosed : this._afterAllClosedAtThisLevel
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.open = function(t, e) {
            var n = this;
            if ((e = function(t, e) {
                return Object(s.a)(Object(s.a)({}, e), t)
            }/**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
            (e, this._defaultOptions || new w)).id && this.getDialogById(e.id))
                throw Error('Dialog with id "' + e.id + '" exists already. The dialog id must be unique.');
            var i = this._createOverlay(e)
              , r = this._attachDialogContainer(i, e)
              , o = this._attachDialogContent(t, r, i, e);
            return this.openDialogs.length || this._hideNonDialogContentFromAssistiveTechnology(),
            this.openDialogs.push(o),
            o.afterClosed().subscribe((function() {
                return n._removeOpenDialog(o)
            }
            )),
            this.afterOpened.next(o),
            o
        }
        ,
        t.prototype.closeAll = function() {
            this._closeDialogs(this.openDialogs)
        }
        ,
        t.prototype.getDialogById = function(t) {
            return this.openDialogs.find((function(e) {
                return e.id === t
            }
            ))
        }
        ,
        t.prototype.ngOnDestroy = function() {
            this._closeDialogs(this._openDialogsAtThisLevel),
            this._afterAllClosedAtThisLevel.complete(),
            this._afterOpenedAtThisLevel.complete()
        }
        ,
        t.prototype._createOverlay = function(t) {
            var e = this._getOverlayConfig(t);
            return this._overlay.create(e)
        }
        ,
        t.prototype._getOverlayConfig = function(t) {
            var e = new i.d({
                positionStrategy: this._overlay.position().global(),
                scrollStrategy: t.scrollStrategy || this._scrollStrategy(),
                panelClass: t.panelClass,
                hasBackdrop: t.hasBackdrop,
                direction: t.direction,
                minWidth: t.minWidth,
                minHeight: t.minHeight,
                maxWidth: t.maxWidth,
                maxHeight: t.maxHeight,
                disposeOnNavigation: t.closeOnNavigation
            });
            return t.backdropClass && (e.backdropClass = t.backdropClass),
            e
        }
        ,
        t.prototype._attachDialogContainer = function(t, e) {
            var n = e && e.viewContainerRef && e.viewContainerRef.injector
              , i = o.Injector.create({
                parent: n || this._injector,
                providers: [{
                    provide: w,
                    useValue: e
                }]
            })
              , a = new r.d(M,e.viewContainerRef,i,e.componentFactoryResolver);
            return t.attach(a).instance
        }
        ,
        t.prototype._attachDialogContent = function(t, e, n, i) {
            var a = new C(n,e,i.id);
            if (t instanceof o.TemplateRef)
                e.attachTemplatePortal(new r.h(t,null,{
                    $implicit: i.data,
                    dialogRef: a
                }));
            else {
                var s = this._createInjector(i, a, e)
                  , c = e.attachComponentPortal(new r.d(t,i.viewContainerRef,s));
                a.componentInstance = c.instance
            }
            return a.updateSize(i.width, i.height).updatePosition(i.position),
            a
        }
        ,
        t.prototype._createInjector = function(t, e, n) {
            var i = t && t.viewContainerRef && t.viewContainerRef.injector
              , r = [{
                provide: M,
                useValue: n
            }, {
                provide: A,
                useValue: t.data
            }, {
                provide: C,
                useValue: e
            }];
            return !t.direction || i && i.get(c.Directionality, null) || r.push({
                provide: c.Directionality,
                useValue: {
                    value: t.direction,
                    change: Object(p.a)()
                }
            }),
            o.Injector.create({
                parent: i || this._injector,
                providers: r
            })
        }
        ,
        t.prototype._removeOpenDialog = function(t) {
            var e = this.openDialogs.indexOf(t);
            e > -1 && (this.openDialogs.splice(e, 1),
            this.openDialogs.length || (this._ariaHiddenElements.forEach((function(t, e) {
                t ? e.setAttribute("aria-hidden", t) : e.removeAttribute("aria-hidden")
            }
            )),
            this._ariaHiddenElements.clear(),
            this._afterAllClosed.next()))
        }
        ,
        t.prototype._hideNonDialogContentFromAssistiveTechnology = function() {
            var t = this._overlayContainer.getContainerElement();
            if (t.parentElement)
                for (var e = t.parentElement.children, n = e.length - 1; n > -1; n--) {
                    var i = e[n];
                    i === t || "SCRIPT" === i.nodeName || "STYLE" === i.nodeName || i.hasAttribute("aria-live") || (this._ariaHiddenElements.set(i, i.getAttribute("aria-hidden")),
                    i.setAttribute("aria-hidden", "true"))
                }
        }
        ,
        t.prototype._closeDialogs = function(t) {
            for (var e = t.length; e--; )
                t[e].close()
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: i.c
            }, {
                type: o.Injector
            }, {
                type: l.Location,
                decorators: [{
                    type: o.Optional
                }]
            }, {
                type: w,
                decorators: [{
                    type: o.Optional
                }, {
                    type: o.Inject,
                    args: [T]
                }]
            }, {
                type: void 0,
                decorators: [{
                    type: o.Inject,
                    args: [O]
                }]
            }, {
                type: t,
                decorators: [{
                    type: o.Optional
                }, {
                    type: o.SkipSelf
                }]
            }, {
                type: i.e
            }]
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(o["ɵɵinject"](i.c),o["ɵɵinject"](o.Injector),o["ɵɵinject"](l.Location, 8),o["ɵɵinject"](T, 8),o["ɵɵinject"](O),o["ɵɵinject"](t, 12),o["ɵɵinject"](i.e))
        }
        ,
        t.ɵprov = o["ɵɵdefineInjectable"]({
            token: t,
            factory: function(e) {
                return t.ɵfac(e)
            }
        }),
        t
    }();
    var D = 0
      , R = function() {
        function t(t, e, n) {
            this.dialogRef = t,
            this._elementRef = e,
            this._dialog = n,
            this.type = "button"
        }
        return t.prototype.ngOnInit = function() {
            this.dialogRef || (this.dialogRef = V(this._elementRef, this._dialog.openDialogs))
        }
        ,
        t.prototype.ngOnChanges = function(t) {
            var e = t._matDialogClose || t._matDialogCloseResult;
            e && (this.dialogResult = e.currentValue)
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: C,
                decorators: [{
                    type: o.Optional
                }]
            }, {
                type: o.ElementRef
            }, {
                type: k
            }]
        }
        ,
        t.propDecorators = {
            ariaLabel: [{
                type: o.Input,
                args: ["aria-label"]
            }],
            type: [{
                type: o.Input
            }],
            dialogResult: [{
                type: o.Input,
                args: ["mat-dialog-close"]
            }],
            _matDialogClose: [{
                type: o.Input,
                args: ["matDialogClose"]
            }]
        },
        t.ɵfac = function(e) {
            return new (e || t)(o["ɵɵdirectiveInject"](C, 8),o["ɵɵdirectiveInject"](o.ElementRef),o["ɵɵdirectiveInject"](k))
        }
        ,
        t.ɵdir = o["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "mat-dialog-close", ""], ["", "matDialogClose", ""]],
            hostVars: 2,
            hostBindings: function(t, e) {
                1 & t && o["ɵɵlistener"]("click", (function() {
                    return e.dialogRef.close(e.dialogResult)
                }
                )),
                2 & t && o["ɵɵattribute"]("aria-label", e.ariaLabel || null)("type", e.type)
            },
            inputs: {
                type: "type",
                dialogResult: ["mat-dialog-close", "dialogResult"],
                ariaLabel: ["aria-label", "ariaLabel"],
                _matDialogClose: ["matDialogClose", "_matDialogClose"]
            },
            exportAs: ["matDialogClose"],
            features: [o["ɵɵNgOnChangesFeature"]]
        }),
        t
    }()
      , L = function() {
        function t(t, e, n) {
            this._dialogRef = t,
            this._elementRef = e,
            this._dialog = n,
            this.id = "mat-dialog-title-" + D++
        }
        return t.prototype.ngOnInit = function() {
            var t = this;
            this._dialogRef || (this._dialogRef = V(this._elementRef, this._dialog.openDialogs)),
            this._dialogRef && Promise.resolve().then((function() {
                var e = t._dialogRef._containerInstance;
                e && !e._ariaLabelledBy && (e._ariaLabelledBy = t.id)
            }
            ))
        }
        ,
        t.ctorParameters = function() {
            return [{
                type: C,
                decorators: [{
                    type: o.Optional
                }]
            }, {
                type: o.ElementRef
            }, {
                type: k
            }]
        }
        ,
        t.propDecorators = {
            id: [{
                type: o.Input
            }]
        },
        t.ɵfac = function(e) {
            return new (e || t)(o["ɵɵdirectiveInject"](C, 8),o["ɵɵdirectiveInject"](o.ElementRef),o["ɵɵdirectiveInject"](k))
        }
        ,
        t.ɵdir = o["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "mat-dialog-title", ""], ["", "matDialogTitle", ""]],
            hostAttrs: [1, "mat-dialog-title"],
            hostVars: 1,
            hostBindings: function(t, e) {
                2 & t && o["ɵɵhostProperty"]("id", e.id)
            },
            inputs: {
                id: "id"
            },
            exportAs: ["matDialogTitle"]
        }),
        t
    }()
      , N = function() {
        function t() {}
        return t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵdir = o["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "mat-dialog-content", ""], ["mat-dialog-content"], ["", "matDialogContent", ""]],
            hostAttrs: [1, "mat-dialog-content"]
        }),
        t
    }()
      , j = function() {
        function t() {}
        return t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵdir = o["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "mat-dialog-actions", ""], ["mat-dialog-actions"], ["", "matDialogActions", ""]],
            hostAttrs: [1, "mat-dialog-actions"]
        }),
        t
    }();
    function V(t, e) {
        for (var n = t.nativeElement.parentElement; n && !n.classList.contains("mat-dialog-container"); )
            n = n.parentElement;
        return n ? e.find((function(t) {
            return t.id === n.id
        }
        )) : null
    }
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var F = function() {
        function t() {}
        return t.ɵmod = o["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = o["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            },
            providers: [k, I],
            imports: [[i.f, r.g, a.MatCommonModule], a.MatCommonModule]
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && o["ɵɵsetNgModuleScope"](t, {
            declarations: function() {
                return [M, R, L, j, N]
            },
            imports: function() {
                return [i.f, r.g, a.MatCommonModule]
            },
            exports: function() {
                return [M, R, L, N, j, a.MatCommonModule]
            }
        }),
        t
    }();
    /**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return i
    }
    ));
    var i = function() {
        function t() {
            return Error.call(this),
            this.message = "no elements in sequence",
            this.name = "EmptyError",
            this
        }
        return t.prototype = Object.create(Error.prototype),
        t
    }()
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return r
    }
    ));
    var i = n(332);
    function r(t, e) {
        return function(n) {
            var r;
            if (r = "function" == typeof t ? t : function() {
                return t
            }
            ,
            "function" == typeof e)
                return n.lift(new o(r,e));
            var a = Object.create(n, i.b);
            return a.source = n,
            a.subjectFactory = r,
            a
        }
    }
    var o = function() {
        function t(t, e) {
            this.subjectFactory = t,
            this.selector = e
        }
        return t.prototype.call = function(t, e) {
            var n = this.selector
              , i = this.subjectFactory()
              , r = n(i).subscribe(t);
            return r.add(e.subscribe(i)),
            r
        }
        ,
        t
    }()
}
, function(t, e, n) {
    "use strict";
    n.d(e, "b", (function() {
        return l
    }
    )),
    n.d(e, "a", (function() {
        return p
    }
    ));
    var i = n(1)
      , r = n(78)
      , o = n(79)
      , a = n(176)
      , s = n(62)
      , c = n(76);
    function l(t, e, n) {
        return void 0 === n && (n = Number.POSITIVE_INFINITY),
        "function" == typeof e ? function(i) {
            return i.pipe(l((function(n, i) {
                return Object(c.a)(t(n, i)).pipe(Object(s.a)((function(t, r) {
                    return e(n, t, i, r)
                }
                )))
            }
            ), n))
        }
        : ("number" == typeof e && (n = e),
        function(e) {
            return e.lift(new u(t,n))
        }
        )
    }
    var u = function() {
        function t(t, e) {
            void 0 === e && (e = Number.POSITIVE_INFINITY),
            this.project = t,
            this.concurrent = e
        }
        return t.prototype.call = function(t, e) {
            return e.subscribe(new d(t,this.project,this.concurrent))
        }
        ,
        t
    }()
      , d = function(t) {
        function e(e, n, i) {
            void 0 === i && (i = Number.POSITIVE_INFINITY);
            var r = t.call(this, e) || this;
            return r.project = n,
            r.concurrent = i,
            r.hasCompleted = !1,
            r.buffer = [],
            r.active = 0,
            r.index = 0,
            r
        }
        return i.c(e, t),
        e.prototype._next = function(t) {
            this.active < this.concurrent ? this._tryNext(t) : this.buffer.push(t)
        }
        ,
        e.prototype._tryNext = function(t) {
            var e, n = this.index++;
            try {
                e = this.project(t, n)
            } catch (t) {
                return void this.destination.error(t)
            }
            this.active++,
            this._innerSub(e, t, n)
        }
        ,
        e.prototype._innerSub = function(t, e, n) {
            var i = new a.a(this,e,n)
              , o = this.destination;
            o.add(i);
            var s = Object(r.a)(this, t, void 0, void 0, i);
            s !== i && o.add(s)
        }
        ,
        e.prototype._complete = function() {
            this.hasCompleted = !0,
            0 === this.active && 0 === this.buffer.length && this.destination.complete(),
            this.unsubscribe()
        }
        ,
        e.prototype.notifyNext = function(t, e, n, i, r) {
            this.destination.next(e)
        }
        ,
        e.prototype.notifyComplete = function(t) {
            var e = this.buffer;
            this.remove(t),
            this.active--,
            e.length > 0 ? this._next(e.shift()) : 0 === this.active && this.hasCompleted && this.destination.complete()
        }
        ,
        e
    }(o.a)
      , p = l
}
, function(t, e, n) {
    "use strict";
    n.d(e, "b", (function() {
        return c
    }
    )),
    n.d(e, "a", (function() {
        return p
    }
    ));
    var i = n(1)
      , r = n(26)
      , o = n(33)
      , a = n(12)
      , s = n(32);
    function c(t, e, n, i) {
        return function(r) {
            return r.lift(new l(t,e,n,i))
        }
    }
    var l = function() {
        function t(t, e, n, i) {
            this.keySelector = t,
            this.elementSelector = e,
            this.durationSelector = n,
            this.subjectSelector = i
        }
        return t.prototype.call = function(t, e) {
            return e.subscribe(new u(t,this.keySelector,this.elementSelector,this.durationSelector,this.subjectSelector))
        }
        ,
        t
    }()
      , u = function(t) {
        function e(e, n, i, r, o) {
            var a = t.call(this, e) || this;
            return a.keySelector = n,
            a.elementSelector = i,
            a.durationSelector = r,
            a.subjectSelector = o,
            a.groups = null,
            a.attemptedToUnsubscribe = !1,
            a.count = 0,
            a
        }
        return i.c(e, t),
        e.prototype._next = function(t) {
            var e;
            try {
                e = this.keySelector(t)
            } catch (t) {
                return void this.error(t)
            }
            this._group(t, e)
        }
        ,
        e.prototype._group = function(t, e) {
            var n = this.groups;
            n || (n = this.groups = new Map);
            var i, r = n.get(e);
            if (this.elementSelector)
                try {
                    i = this.elementSelector(t)
                } catch (t) {
                    this.error(t)
                }
            else
                i = t;
            if (!r) {
                r = this.subjectSelector ? this.subjectSelector() : new s.a,
                n.set(e, r);
                var o = new p(e,r,this);
                if (this.destination.next(o),
                this.durationSelector) {
                    var a = void 0;
                    try {
                        a = this.durationSelector(new p(e,r))
                    } catch (t) {
                        return void this.error(t)
                    }
                    this.add(a.subscribe(new d(e,r,this)))
                }
            }
            r.closed || r.next(i)
        }
        ,
        e.prototype._error = function(t) {
            var e = this.groups;
            e && (e.forEach((function(e, n) {
                e.error(t)
            }
            )),
            e.clear()),
            this.destination.error(t)
        }
        ,
        e.prototype._complete = function() {
            var t = this.groups;
            t && (t.forEach((function(t, e) {
                t.complete()
            }
            )),
            t.clear()),
            this.destination.complete()
        }
        ,
        e.prototype.removeGroup = function(t) {
            this.groups.delete(t)
        }
        ,
        e.prototype.unsubscribe = function() {
            this.closed || (this.attemptedToUnsubscribe = !0,
            0 === this.count && t.prototype.unsubscribe.call(this))
        }
        ,
        e
    }(r.a)
      , d = function(t) {
        function e(e, n, i) {
            var r = t.call(this, n) || this;
            return r.key = e,
            r.group = n,
            r.parent = i,
            r
        }
        return i.c(e, t),
        e.prototype._next = function(t) {
            this.complete()
        }
        ,
        e.prototype._unsubscribe = function() {
            var t = this.parent
              , e = this.key;
            this.key = this.parent = null,
            t && t.removeGroup(e)
        }
        ,
        e
    }(r.a)
      , p = function(t) {
        function e(e, n, i) {
            var r = t.call(this) || this;
            return r.key = e,
            r.groupSubject = n,
            r.refCountSubscription = i,
            r
        }
        return i.c(e, t),
        e.prototype._subscribe = function(t) {
            var e = new o.a
              , n = this.refCountSubscription
              , i = this.groupSubject;
            return n && !n.closed && e.add(new h(n)),
            e.add(i.subscribe(t)),
            e
        }
        ,
        e
    }(a.a)
      , h = function(t) {
        function e(e) {
            var n = t.call(this) || this;
            return n.parent = e,
            e.count++,
            n
        }
        return i.c(e, t),
        e.prototype.unsubscribe = function() {
            var e = this.parent;
            e.closed || this.closed || (t.prototype.unsubscribe.call(this),
            e.count -= 1,
            0 === e.count && e.attemptedToUnsubscribe && e.unsubscribe())
        }
        ,
        e
    }(o.a)
}
, function(t, e, n) {
    "use strict";
    n.d(e, "b", (function() {
        return u
    }
    )),
    n.d(e, "a", (function() {
        return d
    }
    ));
    var i = n(1)
      , r = n(149)
      , o = n(56)
      , a = n(26)
      , s = n(79)
      , c = n(78)
      , l = n(116);
    function u() {
        for (var t = [], e = 0; e < arguments.length; e++)
            t[e] = arguments[e];
        var n = t[t.length - 1];
        return "function" == typeof n && t.pop(),
        Object(r.a)(t, void 0).lift(new d(n))
    }
    var d = function() {
        function t(t) {
            this.resultSelector = t
        }
        return t.prototype.call = function(t, e) {
            return e.subscribe(new p(t,this.resultSelector))
        }
        ,
        t
    }()
      , p = function(t) {
        function e(e, n, i) {
            void 0 === i && (i = Object.create(null));
            var r = t.call(this, e) || this;
            return r.iterators = [],
            r.active = 0,
            r.resultSelector = "function" == typeof n ? n : null,
            r.values = i,
            r
        }
        return i.c(e, t),
        e.prototype._next = function(t) {
            var e = this.iterators;
            Object(o.a)(t) ? e.push(new f(t)) : "function" == typeof t[l.a] ? e.push(new h(t[l.a]())) : e.push(new m(this.destination,this,t))
        }
        ,
        e.prototype._complete = function() {
            var t = this.iterators
              , e = t.length;
            if (this.unsubscribe(),
            0 !== e) {
                this.active = e;
                for (var n = 0; n < e; n++) {
                    var i = t[n];
                    if (i.stillUnsubscribed)
                        this.destination.add(i.subscribe(i, n));
                    else
                        this.active--
                }
            } else
                this.destination.complete()
        }
        ,
        e.prototype.notifyInactive = function() {
            this.active--,
            0 === this.active && this.destination.complete()
        }
        ,
        e.prototype.checkIterators = function() {
            for (var t = this.iterators, e = t.length, n = this.destination, i = 0; i < e; i++) {
                if ("function" == typeof (a = t[i]).hasValue && !a.hasValue())
                    return
            }
            var r = !1
              , o = [];
            for (i = 0; i < e; i++) {
                var a, s = (a = t[i]).next();
                if (a.hasCompleted() && (r = !0),
                s.done)
                    return void n.complete();
                o.push(s.value)
            }
            this.resultSelector ? this._tryresultSelector(o) : n.next(o),
            r && n.complete()
        }
        ,
        e.prototype._tryresultSelector = function(t) {
            var e;
            try {
                e = this.resultSelector.apply(this, t)
            } catch (t) {
                return void this.destination.error(t)
            }
            this.destination.next(e)
        }
        ,
        e
    }(a.a)
      , h = function() {
        function t(t) {
            this.iterator = t,
            this.nextResult = t.next()
        }
        return t.prototype.hasValue = function() {
            return !0
        }
        ,
        t.prototype.next = function() {
            var t = this.nextResult;
            return this.nextResult = this.iterator.next(),
            t
        }
        ,
        t.prototype.hasCompleted = function() {
            var t = this.nextResult;
            return t && t.done
        }
        ,
        t
    }()
      , f = function() {
        function t(t) {
            this.array = t,
            this.index = 0,
            this.length = 0,
            this.length = t.length
        }
        return t.prototype[l.a] = function() {
            return this
        }
        ,
        t.prototype.next = function(t) {
            var e = this.index++
              , n = this.array;
            return e < this.length ? {
                value: n[e],
                done: !1
            } : {
                value: null,
                done: !0
            }
        }
        ,
        t.prototype.hasValue = function() {
            return this.array.length > this.index
        }
        ,
        t.prototype.hasCompleted = function() {
            return this.array.length === this.index
        }
        ,
        t
    }()
      , m = function(t) {
        function e(e, n, i) {
            var r = t.call(this, e) || this;
            return r.parent = n,
            r.observable = i,
            r.stillUnsubscribed = !0,
            r.buffer = [],
            r.isComplete = !1,
            r
        }
        return i.c(e, t),
        e.prototype[l.a] = function() {
            return this
        }
        ,
        e.prototype.next = function() {
            var t = this.buffer;
            return 0 === t.length && this.isComplete ? {
                value: null,
                done: !0
            } : {
                value: t.shift(),
                done: !1
            }
        }
        ,
        e.prototype.hasValue = function() {
            return this.buffer.length > 0
        }
        ,
        e.prototype.hasCompleted = function() {
            return 0 === this.buffer.length && this.isComplete
        }
        ,
        e.prototype.notifyComplete = function() {
            this.buffer.length > 0 ? (this.isComplete = !0,
            this.parent.notifyInactive()) : this.destination.complete()
        }
        ,
        e.prototype.notifyNext = function(t, e, n, i, r) {
            this.buffer.push(e),
            this.parent.checkIterators()
        }
        ,
        e.prototype.subscribe = function(t, e) {
            return Object(c.a)(this, this.observable, this, e)
        }
        ,
        e
    }(s.a)
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__spreadArrays || function() {
        for (var t = 0, e = 0, n = arguments.length; e < n; e++)
            t += arguments[e].length;
        var i = Array(t)
          , r = 0;
        for (e = 0; e < n; e++)
            for (var o = arguments[e], a = 0, s = o.length; a < s; a++,
            r++)
                i[r] = o[a];
        return i
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var r = n(0)
      , o = n(0)
      , a = function() {
        function t() {
            this.events = [],
            this._log = !1
        }
        return t.prototype.push = function(e) {
            this._log && console.log(e),
            this.events = i([e], this.events.slice(0, Math.min(t.queueLength - 1, this.events.length)))
        }
        ,
        Object.defineProperty(t.prototype, "logToConsole", {
            set: function(t) {
                this._log = t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "eventsQueue", {
            get: function() {
                return this.events
            },
            enumerable: !0,
            configurable: !0
        }),
        t.queueLength = 5,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵprov = o.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.DeveloperEventService = a,
    o.ɵsetClassMetadata(a, [{
        type: r.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return []
    }
    ), null)
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    n(21);
    var i = n(0)
      , r = n(578)
      , o = n(2)
      , a = n(6)
      , s = (n(171),
    n(0))
      , c = n(171)
      , l = n(21)
      , u = function() {
        function t(t, e) {
            var n = this;
            this.MeasurementsService = t,
            this.TrackingService = e,
            this.selectedTool = new i.EventEmitter,
            this.MeasurementsService.measurementToolSelectionChanged.connect((function(t) {
                return n.currentTool = t
            }
            ))
        }
        return t.prototype.toggleTool = function(t, e) {
            var n = t === this.currentTool ? void 0 : t
              , i = (new r.MeasurementToolChangedEvent).withTool(n ? t : this.currentTool).withStatus(!!n).withEventSource(e);
            this.TrackingService.trackPreDefinedEvent(i),
            this.selectedTool.emit(n),
            this.currentTool = n
        }
        ,
        t.prototype.cycleTool = function(t, e) {
            t.contains(this.currentTool) ? this.toggleTool(t.next(this.currentTool), e) : this.toggleTool(t.first, e)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(s.ɵɵinject(c.MeasurementsService),s.ɵɵinject(l.TrackingService))
        }
        ,
        t.ɵprov = s.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.MeasurementToolChanger = u,
    s.ɵsetClassMetadata(u, [{
        type: i.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: c.MeasurementsService
        }, {
            type: l.TrackingService
        }]
    }
    ), null),
    o.module("IVWebApp").service("MeasurementToolChanger", a.downgradeInjectable(u))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "b", (function() {
        return a
    }
    )),
    n.d(e, "a", (function() {
        return c
    }
    ));
    var i = n(1)
      , r = n(26)
      , o = n(206);
    function a(t, e) {
        return void 0 === e && (e = 0),
        function(n) {
            return n.lift(new s(t,e))
        }
    }
    var s = function() {
        function t(t, e) {
            void 0 === e && (e = 0),
            this.scheduler = t,
            this.delay = e
        }
        return t.prototype.call = function(t, e) {
            return e.subscribe(new c(t,this.scheduler,this.delay))
        }
        ,
        t
    }()
      , c = function(t) {
        function e(e, n, i) {
            void 0 === i && (i = 0);
            var r = t.call(this, e) || this;
            return r.scheduler = n,
            r.delay = i,
            r
        }
        return i.c(e, t),
        e.dispatch = function(t) {
            var e = t.notification
              , n = t.destination;
            e.observe(n),
            this.unsubscribe()
        }
        ,
        e.prototype.scheduleMessage = function(t) {
            this.destination.add(this.scheduler.schedule(e.dispatch, this.delay, new l(t,this.destination)))
        }
        ,
        e.prototype._next = function(t) {
            this.scheduleMessage(o.a.createNext(t))
        }
        ,
        e.prototype._error = function(t) {
            this.scheduleMessage(o.a.createError(t)),
            this.unsubscribe()
        }
        ,
        e.prototype._complete = function() {
            this.scheduleMessage(o.a.createComplete()),
            this.unsubscribe()
        }
        ,
        e
    }(r.a)
      , l = function() {
        return function(t, e) {
            this.notification = t,
            this.destination = e
        }
    }()
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return i
    }
    ));
    var i = function() {
        function t() {
            return Error.call(this),
            this.message = "Timeout has occurred",
            this.name = "TimeoutError",
            this
        }
        return t.prototype = Object.create(Error.prototype),
        t
    }()
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return r
    }
    ));
    var i = n(307);
    function r() {
        return Object(i.a)(1)
    }
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return c
    }
    ));
    var i = n(1)
      , r = n(56)
      , o = n(149)
      , a = n(79)
      , s = n(78);
    function c() {
        for (var t = [], e = 0; e < arguments.length; e++)
            t[e] = arguments[e];
        if (1 === t.length) {
            if (!Object(r.a)(t[0]))
                return t[0];
            t = t[0]
        }
        return Object(o.a)(t, void 0).lift(new l)
    }
    var l = function() {
        function t() {}
        return t.prototype.call = function(t, e) {
            return e.subscribe(new u(t))
        }
        ,
        t
    }()
      , u = function(t) {
        function e(e) {
            var n = t.call(this, e) || this;
            return n.hasFirst = !1,
            n.observables = [],
            n.subscriptions = [],
            n
        }
        return i.c(e, t),
        e.prototype._next = function(t) {
            this.observables.push(t)
        }
        ,
        e.prototype._complete = function() {
            var t = this.observables
              , e = t.length;
            if (0 === e)
                this.destination.complete();
            else {
                for (var n = 0; n < e && !this.hasFirst; n++) {
                    var i = t[n]
                      , r = Object(s.a)(this, i, i, n);
                    this.subscriptions && this.subscriptions.push(r),
                    this.add(r)
                }
                this.observables = null
            }
        }
        ,
        e.prototype.notifyNext = function(t, e, n, i, r) {
            if (!this.hasFirst) {
                this.hasFirst = !0;
                for (var o = 0; o < this.subscriptions.length; o++)
                    if (o !== n) {
                        var a = this.subscriptions[o];
                        a.unsubscribe(),
                        this.remove(a)
                    }
                this.subscriptions = null
            }
            this.destination.next(e)
        }
        ,
        e
    }(a.a)
}
, function(t, e) {
    t.exports = function(t) {
        return t.webpackPolyfill || (t.deprecate = function() {}
        ,
        t.paths = [],
        t.children || (t.children = []),
        Object.defineProperty(t, "loaded", {
            enumerable: !0,
            get: function() {
                return t.l
            }
        }),
        Object.defineProperty(t, "id", {
            enumerable: !0,
            get: function() {
                return t.i
            }
        }),
        t.webpackPolyfill = 1),
        t
    }
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(85)
      , a = n(253)
      , s = n(258)
      , c = n(96)
      , l = n(7)
      , u = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e) || this;
            return o.object = n,
            o.type = i,
            o._visible = !0,
            o.createdDate = new Date,
            o._dirty = !1,
            o.pov = o.object.getPointOfView(),
            o._name = r,
            o._note = "",
            o
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "visible", {
            get: function() {
                return this._visible
            },
            set: function(t) {
                this.visible !== t && (this.dirty = !0),
                this._visible = t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "name", {
            get: function() {
                return this._name
            },
            set: function(t) {
                this._name !== t && (this.dirty = !0),
                this._name = t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "note", {
            get: function() {
                return this._note
            },
            set: function(t) {
                this._note !== t && (this.dirty = !0),
                this._note = t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "dirty", {
            set: function(t) {
                this._dirty = t
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.resolveInjectables = function() {
            t.prototype.resolveInjectables.call(this),
            this.TransformService = this.injectables.TransformService,
            this.UoMService = this.injectables.UoMService
        }
        ,
        e.prototype.updateOrientationForViewport = function(t) {
            this.object && this.object.updateOrientationForViewport(t)
        }
        ,
        e.prototype.updateScaleForViewport = function(t) {
            this.object && this.object.updateMeshScaleForViewport(t)
        }
        ,
        e.prototype.calculateViewOrientation = function(t) {
            for (var e = this.getPoints().map((function(e) {
                return s.lookAtLocToLonLat(t, e)
            }
            )), n = e[0], i = n.lon, r = n.lon, o = n.lat, a = n.lat, c = 1; c < e.length; c++)
                n = e[c],
                i = Math.max(i, n.lon),
                r = Math.min(r, n.lon),
                o = Math.max(o, n.lat),
                a = Math.min(a, n.lat);
            return {
                lon: s.meanAngle(i, r),
                lat: s.meanAngle(o, a)
            }
        }
        ,
        e.prototype.getPointOfView = function() {
            return this.pov
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this._visible = e.visible,
            this.pov = a.PointOfView.fromDto(e.point_of_view),
            this.createdDate = new Date(e.created_date),
            e.name && (this._name = e.name),
            e.note && (this._note = e.note)
        }
        ,
        e.prototype.toData = function() {
            return {
                id: this.id,
                name: this.name,
                visible: this._visible,
                point_of_view: this.pov ? this.pov.toDto() : void 0,
                type: this.type,
                geometry: this.convertPointToGeometryRest(),
                created_date: this.createdDate.getTime(),
                note: this.note
            }
        }
        ,
        e.prototype.markDirty = function() {
            this.dirty = !0
        }
        ,
        e.prototype.isSaved = function() {
            return void 0 !== this.id && !this._dirty
        }
        ,
        e.prototype.isMeasurementVisibleInFloors = function(t) {
            if (this.isHovered || !t || 0 === t.length)
                return !0;
            var e = Number.MAX_VALUE
              , n = Number.MIN_VALUE;
            return this.getPoints().forEach((function(t) {
                n = t.z > n ? t.z : n,
                e = t.z < e ? t.z : e
            }
            )),
            t.some((function(t) {
                return e <= t.zMax && t.zMin <= n
            }
            ))
        }
        ,
        e.prototype.toMeasurementBinaryDto = function() {
            return {
                type: this.type,
                povLocation: this.pov ? this.pov.location : void 0,
                povImageId: this.pov ? this.pov.imageId : void 0,
                points: this.getGlobalPoints(),
                name: this.name
            }
        }
        ,
        e.prototype.fill = function(e, n, i) {
            void 0 === n && (n = !1),
            void 0 === i && (i = !1),
            t.prototype.fill.call(this, e, i),
            this._name = e.name,
            this._note = e.note,
            this.value = e.value,
            this._visible = e._visible,
            this.pov = e.pov ? e.pov.clone() : void 0,
            this.createdDate = e.createdDate,
            this.dirty = !1,
            n || (this.selected = e.selected,
            this.isHovered = e.isHovered)
        }
        ,
        e.prototype.convertPointToGeometryRest = function() {
            return {
                coordinates: this.getCoordinates(),
                type: o.ToolSpec.of(this.type).type === o.ToolType.DISTANCE ? "LineString" : "Polygon"
            }
        }
        ,
        e.prototype.getCoordinates = function() {
            var t = this.getGlobalPoints().map((function(t) {
                return c.VectorFactory.toArray(t)
            }
            ));
            return o.ToolSpec.of(this.type).type === o.ToolType.DISTANCE ? t : this.convertToAreaCoordinates(t)
        }
        ,
        e.prototype.convertToAreaCoordinates = function(t) {
            return t.push(t[0]),
            l.concat([t], [])
        }
        ,
        e
    }(n(102).RepositoryObject);
    e.Measurement = u
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2);
    n(1241),
    n(1243),
    n(131);
    var a = n(584)
      , s = n(8)
      , c = n(40)
      , l = function(t) {
        function e(e, n) {
            var i = t.call(this, e) || this;
            return i.ToolboxMenuService = n,
            i
        }
        return r(e, t),
        e.$inject = ["$element", "ToolboxMenuService"],
        e.prototype.getMenuDefaultWidth = function() {
            return c.isMobileLayout() ? window.innerWidth - e.mobileCollapserWidth : e.menuDefaultWidth
        }
        ,
        e.prototype.getMenuCollapsedWidth = function() {
            return e.menuCollapsedWidth
        }
        ,
        e.prototype.getMenuCollapseThreshold = function() {
            return c.isMobileLayout() ? (window.innerWidth - e.mobileCollapserWidth) * e.collapseFactor : e.menuCollapseThreshold
        }
        ,
        e.prototype.exit = function() {
            this.ToolboxMenuService.isCloseDisabled && this.ToolboxMenuService.isCloseDisabled() || this.ToolboxMenuService.closeMenu().catch(s.handleWarning)
        }
        ,
        e.menuDefaultWidth = 440,
        e.menuCollapsedWidth = 60,
        e.mobileCollapserWidth = 50,
        e.collapseFactor = .75,
        e.verticalToolboxMenuId = "vertical-toolbox-menu",
        e.menuCollapseThreshold = e.menuDefaultWidth * e.collapseFactor,
        e
    }(a.VerticalMenuController);
    e.ToolboxMenuController = l;
    var u = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "MenuUI/ToolboxMenuUI/ToolboxMenu.html",
            this.controller = l,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.ToolboxMenuDirective = u,
    o.module("IVWebApp").directive("toolboxMenu", u.factory())
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return a
    }
    ));
    var i = n(1)
      , r = n(79)
      , o = n(78);
    function a(t) {
        return function(e) {
            return e.lift(new s(t))
        }
    }
    var s = function() {
        function t(t) {
            this.durationSelector = t
        }
        return t.prototype.call = function(t, e) {
            return e.subscribe(new c(t,this.durationSelector))
        }
        ,
        t
    }()
      , c = function(t) {
        function e(e, n) {
            var i = t.call(this, e) || this;
            return i.durationSelector = n,
            i.hasValue = !1,
            i
        }
        return i.c(e, t),
        e.prototype._next = function(t) {
            if (this.value = t,
            this.hasValue = !0,
            !this.throttled) {
                var e = void 0;
                try {
                    e = (0,
                    this.durationSelector)(t)
                } catch (t) {
                    return this.destination.error(t)
                }
                var n = Object(o.a)(this, e);
                !n || n.closed ? this.clearThrottle() : this.add(this.throttled = n)
            }
        }
        ,
        e.prototype.clearThrottle = function() {
            var t = this.value
              , e = this.hasValue
              , n = this.throttled;
            n && (this.remove(n),
            this.throttled = null,
            n.unsubscribe()),
            e && (this.value = null,
            this.hasValue = !1,
            this.destination.next(t))
        }
        ,
        e.prototype.notifyNext = function(t, e, n, i) {
            this.clearThrottle()
        }
        ,
        e.prototype.notifyComplete = function() {
            this.clearThrottle()
        }
        ,
        e
    }(r.a)
}
, function(t, e) {
    t.exports = {
        CSSRuleList: 0,
        CSSStyleDeclaration: 0,
        CSSValueList: 0,
        ClientRectList: 0,
        DOMRectList: 0,
        DOMStringList: 0,
        DOMTokenList: 1,
        DataTransferItemList: 0,
        FileList: 0,
        HTMLAllCollection: 0,
        HTMLCollection: 0,
        HTMLFormElement: 0,
        HTMLSelectElement: 0,
        MediaList: 0,
        MimeTypeArray: 0,
        NamedNodeMap: 0,
        NodeList: 1,
        PaintRequestList: 0,
        Plugin: 0,
        PluginArray: 0,
        SVGLengthList: 0,
        SVGNumberList: 0,
        SVGPathSegList: 0,
        SVGPointList: 0,
        SVGStringList: 0,
        SVGTransformList: 0,
        SourceBufferList: 0,
        StyleSheetList: 0,
        TextTrackCueList: 0,
        TextTrackList: 0,
        TouchList: 0
    }
}
, function(t, e, n) {
    "use strict";
    var i = n(74).forEach
      , r = n(159)
      , o = n(97)
      , a = r("forEach")
      , s = o("forEach");
    t.exports = a && s ? [].forEach : function(t) {
        return i(this, t, arguments.length > 1 ? arguments[1] : void 0)
    }
}
, function(t, e, n) {
    var i = n(34)
      , r = n(350)
      , o = i["__core-js_shared__"] || r("__core-js_shared__", {});
    t.exports = o
}
, function(t, e, n) {
    var i = n(43)
      , r = n(18)
      , o = n(351);
    t.exports = !i && !r((function() {
        return 7 != Object.defineProperty(o("div"), "a", {
            get: function() {
                return 7
            }
        }).a
    }
    ))
}
, function(t, e, n) {
    var i = n(352);
    t.exports = i && !Symbol.sham && "symbol" == typeof Symbol.iterator
}
, function(t, e, n) {
    var i = n(58)
      , r = n(109)
      , o = n(238).indexOf
      , a = n(239);
    t.exports = function(t, e) {
        var n, s = r(t), c = 0, l = [];
        for (n in s)
            !i(a, n) && i(s, n) && l.push(n);
        for (; e.length > c; )
            i(s, n = e[c++]) && (~o(l, n) || l.push(n));
        return l
    }
}
, function(t, e, n) {
    var i = n(161);
    t.exports = i("document", "documentElement")
}
, function(t, e, n) {
    var i = n(34)
      , r = n(464)
      , o = i.WeakMap;
    t.exports = "function" == typeof o && /native code/.test(r(o))
}
, function(t, e, n) {
    var i = n(458)
      , r = Function.toString;
    "function" != typeof i.inspectSource && (i.inspectSource = function(t) {
        return r.call(t)
    }
    ),
    t.exports = i.inspectSource
}
, function(t, e, n) {
    var i = n(58)
      , r = n(356)
      , o = n(82)
      , a = n(48);
    t.exports = function(t, e) {
        for (var n = r(e), s = a.f, c = o.f, l = 0; l < n.length; l++) {
            var u = n[l];
            i(t, u) || s(t, u, c(e, u))
        }
    }
}
, function(t, e, n) {
    "use strict";
    var i, r, o, a = n(99), s = n(88), c = n(58), l = n(45), u = n(158), d = l("iterator"), p = !1;
    [].keys && ("next"in (o = [].keys()) ? (r = a(a(o))) !== Object.prototype && (i = r) : p = !0),
    null == i && (i = {}),
    u || c(i, d) || s(i, d, (function() {
        return this
    }
    )),
    t.exports = {
        IteratorPrototype: i,
        BUGGY_SAFARI_ITERATORS: p
    }
}
, function(t, e, n) {
    var i = n(42);
    t.exports = function(t) {
        if (!i(t) && null !== t)
            throw TypeError("Can't set " + String(t) + " as a prototype");
        return t
    }
}
, function(t, e, n) {
    var i, r, o, a = n(34), s = n(18), c = n(133), l = n(172), u = n(462), d = n(351), p = n(469), h = a.location, f = a.setImmediate, m = a.clearImmediate, g = a.process, v = a.MessageChannel, y = a.Dispatch, b = 0, w = {}, S = function(t) {
        if (w.hasOwnProperty(t)) {
            var e = w[t];
            delete w[t],
            e()
        }
    }, x = function(t) {
        return function() {
            S(t)
        }
    }, M = function(t) {
        S(t.data)
    }, E = function(t) {
        a.postMessage(t + "", h.protocol + "//" + h.host)
    };
    f && m || (f = function(t) {
        for (var e = [], n = 1; arguments.length > n; )
            e.push(arguments[n++]);
        return w[++b] = function() {
            ("function" == typeof t ? t : Function(t)).apply(void 0, e)
        }
        ,
        i(b),
        b
    }
    ,
    m = function(t) {
        delete w[t]
    }
    ,
    "process" == c(g) ? i = function(t) {
        g.nextTick(x(t))
    }
    : y && y.now ? i = function(t) {
        y.now(x(t))
    }
    : v && !p ? (o = (r = new v).port2,
    r.port1.onmessage = M,
    i = l(o.postMessage, o, 1)) : !a.addEventListener || "function" != typeof postMessage || a.importScripts || s(E) || "file:" === h.protocol ? i = "onreadystatechange"in d("script") ? function(t) {
        u.appendChild(d("script")).onreadystatechange = function() {
            u.removeChild(this),
            S(t)
        }
    }
    : function(t) {
        setTimeout(x(t), 0)
    }
    : (i = E,
    a.addEventListener("message", M, !1))),
    t.exports = {
        set: f,
        clear: m
    }
}
, function(t, e, n) {
    var i = n(290);
    t.exports = /(iphone|ipod|ipad).*applewebkit/i.test(i)
}
, function(t, e, n) {
    "use strict";
    var i = n(291).charAt
      , r = n(110)
      , o = n(355)
      , a = r.set
      , s = r.getterFor("String Iterator");
    o(String, "String", (function(t) {
        a(this, {
            type: "String Iterator",
            string: String(t),
            index: 0
        })
    }
    ), (function() {
        var t, e = s(this), n = e.string, r = e.index;
        return r >= n.length ? {
            value: void 0,
            done: !0
        } : (t = i(n, r),
        e.index += t.length,
        {
            value: t,
            done: !1
        })
    }
    ))
}
, function(t, e, n) {
    var i = n(18)
      , r = n(45)
      , o = n(158)
      , a = r("iterator");
    t.exports = !i((function() {
        var t = new URL("b?a=1&b=2&c=3","http://a")
          , e = t.searchParams
          , n = "";
        return t.pathname = "c%20d",
        e.forEach((function(t, i) {
            e.delete("b"),
            n += i + t
        }
        )),
        o && !t.toJSON || !e.sort || "http://a/c%20d?a=1&c=3" !== t.href || "3" !== e.get("c") || "a=1" !== String(new URLSearchParams("?a=1")) || !e[a] || "a" !== new URL("https://a@b").username || "b" !== new URLSearchParams(new URLSearchParams("a=b")).get("a") || "xn--e1aybc" !== new URL("http://тест").host || "#%D0%B1" !== new URL("http://a#б").hash || "a1c3" !== n || "x" !== new URL("http://x",void 0).host
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(43)
      , r = n(18)
      , o = n(237)
      , a = n(357)
      , s = n(288)
      , c = n(53)
      , l = n(234)
      , u = Object.assign
      , d = Object.defineProperty;
    t.exports = !u || r((function() {
        if (i && 1 !== u({
            b: 1
        }, u(d({}, "a", {
            enumerable: !0,
            get: function() {
                d(this, "b", {
                    value: 3,
                    enumerable: !1
                })
            }
        }), {
            b: 2
        })).b)
            return !0;
        var t = {}
          , e = {}
          , n = Symbol();
        return t[n] = 7,
        "abcdefghijklmnopqrst".split("").forEach((function(t) {
            e[t] = t
        }
        )),
        7 != u({}, t)[n] || "abcdefghijklmnopqrst" != o(u({}, e)).join("")
    }
    )) ? function(t, e) {
        for (var n = c(t), r = arguments.length, u = 1, d = a.f, p = s.f; r > u; )
            for (var h, f = l(arguments[u++]), m = d ? o(f).concat(d(f)) : o(f), g = m.length, v = 0; g > v; )
                h = m[v++],
                i && !p.call(f, h) || (n[h] = f[h]);
        return n
    }
    : u
}
, function(t, e, n) {
    "use strict";
    var i = n(172)
      , r = n(53)
      , o = n(474)
      , a = n(360)
      , s = n(44)
      , c = n(193)
      , l = n(241);
    t.exports = function(t) {
        var e, n, u, d, p, h, f = r(t), m = "function" == typeof this ? this : Array, g = arguments.length, v = g > 1 ? arguments[1] : void 0, y = void 0 !== v, b = l(f), w = 0;
        if (y && (v = i(v, g > 2 ? arguments[2] : void 0, 2)),
        null == b || m == Array && a(b))
            for (n = new m(e = s(f.length)); e > w; w++)
                h = y ? v(f[w], w) : f[w],
                c(n, w, h);
        else
            for (p = (d = b.call(f)).next,
            n = new m; !(u = p.call(d)).done; w++)
                h = y ? o(d, v, [u.value, w], !0) : u.value,
                c(n, w, h);
        return n.length = w,
        n
    }
}
, function(t, e, n) {
    var i = n(29);
    t.exports = function(t, e, n, r) {
        try {
            return r ? e(i(n)[0], n[1]) : e(n)
        } catch (e) {
            var o = t.return;
            throw void 0 !== o && i(o.call(t)),
            e
        }
    }
}
, function(t, e, n) {
    "use strict";
    n(285);
    var i = n(5)
      , r = n(161)
      , o = n(471)
      , a = n(98)
      , s = n(243)
      , c = n(162)
      , l = n(358)
      , u = n(110)
      , d = n(192)
      , p = n(58)
      , h = n(172)
      , f = n(242)
      , m = n(29)
      , g = n(42)
      , v = n(160)
      , y = n(173)
      , b = n(663)
      , w = n(241)
      , S = n(45)
      , x = r("fetch")
      , M = r("Headers")
      , E = S("iterator")
      , C = u.set
      , A = u.getterFor("URLSearchParams")
      , T = u.getterFor("URLSearchParamsIterator")
      , O = /\+/g
      , _ = Array(4)
      , P = function(t) {
        return _[t - 1] || (_[t - 1] = RegExp("((?:%[\\da-f]{2}){" + t + "})", "gi"))
    }
      , I = function(t) {
        try {
            return decodeURIComponent(t)
        } catch (e) {
            return t
        }
    }
      , k = function(t) {
        var e = t.replace(O, " ")
          , n = 4;
        try {
            return decodeURIComponent(e)
        } catch (t) {
            for (; n; )
                e = e.replace(P(n--), I);
            return e
        }
    }
      , D = /[!'()~]|%20/g
      , R = {
        "!": "%21",
        "'": "%27",
        "(": "%28",
        ")": "%29",
        "~": "%7E",
        "%20": "+"
    }
      , L = function(t) {
        return R[t]
    }
      , N = function(t) {
        return encodeURIComponent(t).replace(D, L)
    }
      , j = function(t, e) {
        if (e)
            for (var n, i, r = e.split("&"), o = 0; o < r.length; )
                (n = r[o++]).length && (i = n.split("="),
                t.push({
                    key: k(i.shift()),
                    value: k(i.join("="))
                }))
    }
      , V = function(t) {
        this.entries.length = 0,
        j(this.entries, t)
    }
      , F = function(t, e) {
        if (t < e)
            throw TypeError("Not enough arguments")
    }
      , U = l((function(t, e) {
        C(this, {
            type: "URLSearchParamsIterator",
            iterator: b(A(t).entries),
            kind: e
        })
    }
    ), "Iterator", (function() {
        var t = T(this)
          , e = t.kind
          , n = t.iterator.next()
          , i = n.value;
        return n.done || (n.value = "keys" === e ? i.key : "values" === e ? i.value : [i.key, i.value]),
        n
    }
    ))
      , B = function() {
        d(this, B, "URLSearchParams");
        var t, e, n, i, r, o, a, s, c, l = arguments.length > 0 ? arguments[0] : void 0, u = this, h = [];
        if (C(u, {
            type: "URLSearchParams",
            entries: h,
            updateURL: function() {},
            updateSearchParams: V
        }),
        void 0 !== l)
            if (g(l))
                if ("function" == typeof (t = w(l)))
                    for (n = (e = t.call(l)).next; !(i = n.call(e)).done; ) {
                        if ((a = (o = (r = b(m(i.value))).next).call(r)).done || (s = o.call(r)).done || !o.call(r).done)
                            throw TypeError("Expected sequence with length 2");
                        h.push({
                            key: a.value + "",
                            value: s.value + ""
                        })
                    }
                else
                    for (c in l)
                        p(l, c) && h.push({
                            key: c,
                            value: l[c] + ""
                        });
            else
                j(h, "string" == typeof l ? "?" === l.charAt(0) ? l.slice(1) : l : l + "")
    }
      , z = B.prototype;
    s(z, {
        append: function(t, e) {
            F(arguments.length, 2);
            var n = A(this);
            n.entries.push({
                key: t + "",
                value: e + ""
            }),
            n.updateURL()
        },
        delete: function(t) {
            F(arguments.length, 1);
            for (var e = A(this), n = e.entries, i = t + "", r = 0; r < n.length; )
                n[r].key === i ? n.splice(r, 1) : r++;
            e.updateURL()
        },
        get: function(t) {
            F(arguments.length, 1);
            for (var e = A(this).entries, n = t + "", i = 0; i < e.length; i++)
                if (e[i].key === n)
                    return e[i].value;
            return null
        },
        getAll: function(t) {
            F(arguments.length, 1);
            for (var e = A(this).entries, n = t + "", i = [], r = 0; r < e.length; r++)
                e[r].key === n && i.push(e[r].value);
            return i
        },
        has: function(t) {
            F(arguments.length, 1);
            for (var e = A(this).entries, n = t + "", i = 0; i < e.length; )
                if (e[i++].key === n)
                    return !0;
            return !1
        },
        set: function(t, e) {
            F(arguments.length, 1);
            for (var n, i = A(this), r = i.entries, o = !1, a = t + "", s = e + "", c = 0; c < r.length; c++)
                (n = r[c]).key === a && (o ? r.splice(c--, 1) : (o = !0,
                n.value = s));
            o || r.push({
                key: a,
                value: s
            }),
            i.updateURL()
        },
        sort: function() {
            var t, e, n, i = A(this), r = i.entries, o = r.slice();
            for (r.length = 0,
            n = 0; n < o.length; n++) {
                for (t = o[n],
                e = 0; e < n; e++)
                    if (r[e].key > t.key) {
                        r.splice(e, 0, t);
                        break
                    }
                e === n && r.push(t)
            }
            i.updateURL()
        },
        forEach: function(t) {
            for (var e, n = A(this).entries, i = h(t, arguments.length > 1 ? arguments[1] : void 0, 3), r = 0; r < n.length; )
                i((e = n[r++]).value, e.key, this)
        },
        keys: function() {
            return new U(this,"keys")
        },
        values: function() {
            return new U(this,"values")
        },
        entries: function() {
            return new U(this,"entries")
        }
    }, {
        enumerable: !0
    }),
    a(z, E, z.entries),
    a(z, "toString", (function() {
        for (var t, e = A(this).entries, n = [], i = 0; i < e.length; )
            t = e[i++],
            n.push(N(t.key) + "=" + N(t.value));
        return n.join("&")
    }
    ), {
        enumerable: !0
    }),
    c(B, "URLSearchParams"),
    i({
        global: !0,
        forced: !o
    }, {
        URLSearchParams: B
    }),
    o || "function" != typeof x || "function" != typeof M || i({
        global: !0,
        enumerable: !0,
        forced: !0
    }, {
        fetch: function(t) {
            var e, n, i, r = [t];
            return arguments.length > 1 && (e = arguments[1],
            g(e) && (n = e.body,
            "URLSearchParams" === f(n) && ((i = e.headers ? new M(e.headers) : new M).has("content-type") || i.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8"),
            e = v(e, {
                body: y(0, String(n)),
                headers: y(0, i)
            }))),
            r.push(e)),
            x.apply(this, r)
        }
    }),
    t.exports = {
        URLSearchParams: B,
        getState: A
    }
}
, function(t, e, n) {
    var i = n(5)
      , r = n(161)
      , o = n(132)
      , a = n(29)
      , s = n(18)
      , c = r("Reflect", "apply")
      , l = Function.apply;
    i({
        target: "Reflect",
        stat: !0,
        forced: !s((function() {
            c((function() {}
            ))
        }
        ))
    }, {
        apply: function(t, e, n) {
            return o(t),
            a(n),
            c ? c(t, e, n) : l.call(t, e, n)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(161)
      , o = n(132)
      , a = n(29)
      , s = n(42)
      , c = n(160)
      , l = n(478)
      , u = n(18)
      , d = r("Reflect", "construct")
      , p = u((function() {
        function t() {}
        return !(d((function() {}
        ), [], t)instanceof t)
    }
    ))
      , h = !u((function() {
        d((function() {}
        ))
    }
    ))
      , f = p || h;
    i({
        target: "Reflect",
        stat: !0,
        forced: f,
        sham: f
    }, {
        construct: function(t, e) {
            o(t),
            a(e);
            var n = arguments.length < 3 ? t : o(arguments[2]);
            if (h && !p)
                return d(t, e, n);
            if (t == n) {
                switch (e.length) {
                case 0:
                    return new t;
                case 1:
                    return new t(e[0]);
                case 2:
                    return new t(e[0],e[1]);
                case 3:
                    return new t(e[0],e[1],e[2]);
                case 4:
                    return new t(e[0],e[1],e[2],e[3])
                }
                var i = [null];
                return i.push.apply(i, e),
                new (l.apply(t, i))
            }
            var r = n.prototype
              , u = c(s(r) ? r : Object.prototype)
              , f = Function.apply.call(t, u, e);
            return s(f) ? f : u
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(132)
      , r = n(42)
      , o = [].slice
      , a = {}
      , s = function(t, e, n) {
        if (!(e in a)) {
            for (var i = [], r = 0; r < e; r++)
                i[r] = "a[" + r + "]";
            a[e] = Function("C,a", "return new C(" + i.join(",") + ")")
        }
        return a[e](t, n)
    };
    t.exports = Function.bind || function(t) {
        var e = i(this)
          , n = o.call(arguments, 1)
          , a = function() {
            var i = n.concat(o.call(arguments));
            return this instanceof a ? s(e, i.length, i) : e.apply(t, i)
        };
        return r(e.prototype) && (a.prototype = e.prototype),
        a
    }
}
, function(t, e, n) {
    var i = n(5)
      , r = n(43)
      , o = n(29)
      , a = n(134)
      , s = n(48);
    i({
        target: "Reflect",
        stat: !0,
        forced: n(18)((function() {
            Reflect.defineProperty(s.f({}, 1, {
                value: 1
            }), 1, {
                value: 2
            })
        }
        )),
        sham: !r
    }, {
        defineProperty: function(t, e, n) {
            o(t);
            var i = a(e, !0);
            o(n);
            try {
                return s.f(t, i, n),
                !0
            } catch (t) {
                return !1
            }
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(29)
      , o = n(82).f;
    i({
        target: "Reflect",
        stat: !0
    }, {
        deleteProperty: function(t, e) {
            var n = o(r(t), e);
            return !(n && !n.configurable) && delete t[e]
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(42)
      , o = n(29)
      , a = n(58)
      , s = n(82)
      , c = n(99);
    i({
        target: "Reflect",
        stat: !0
    }, {
        get: function t(e, n) {
            var i, l, u = arguments.length < 3 ? e : arguments[2];
            return o(e) === u ? e[n] : (i = s.f(e, n)) ? a(i, "value") ? i.value : void 0 === i.get ? void 0 : i.get.call(u) : r(l = c(e)) ? t(l, n, u) : void 0
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(43)
      , o = n(29)
      , a = n(82);
    i({
        target: "Reflect",
        stat: !0,
        sham: !r
    }, {
        getOwnPropertyDescriptor: function(t, e) {
            return a.f(o(t), e)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(29)
      , o = n(99);
    i({
        target: "Reflect",
        stat: !0,
        sham: !n(359)
    }, {
        getPrototypeOf: function(t) {
            return o(r(t))
        }
    })
}
, function(t, e, n) {
    n(5)({
        target: "Reflect",
        stat: !0
    }, {
        has: function(t, e) {
            return e in t
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(29)
      , o = Object.isExtensible;
    i({
        target: "Reflect",
        stat: !0
    }, {
        isExtensible: function(t) {
            return r(t),
            !o || o(t)
        }
    })
}
, function(t, e, n) {
    n(5)({
        target: "Reflect",
        stat: !0
    }, {
        ownKeys: n(356)
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(161)
      , o = n(29);
    i({
        target: "Reflect",
        stat: !0,
        sham: !n(244)
    }, {
        preventExtensions: function(t) {
            o(t);
            try {
                var e = r("Object", "preventExtensions");
                return e && e(t),
                !0
            } catch (t) {
                return !1
            }
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(29)
      , o = n(42)
      , a = n(58)
      , s = n(18)
      , c = n(48)
      , l = n(82)
      , u = n(99)
      , d = n(173);
    i({
        target: "Reflect",
        stat: !0,
        forced: s((function() {
            var t = c.f({}, "a", {
                configurable: !0
            });
            return !1 !== Reflect.set(u(t), "a", 1, t)
        }
        ))
    }, {
        set: function t(e, n, i) {
            var s, p, h = arguments.length < 4 ? e : arguments[3], f = l.f(r(e), n);
            if (!f) {
                if (o(p = u(e)))
                    return t(p, n, i, h);
                f = d(0)
            }
            if (a(f, "value")) {
                if (!1 === f.writable || !o(h))
                    return !1;
                if (s = l.f(h, n)) {
                    if (s.get || s.set || !1 === s.writable)
                        return !1;
                    s.value = i,
                    c.f(h, n, s)
                } else
                    c.f(h, n, d(0, i));
                return !0
            }
            return void 0 !== f.set && (f.set.call(h, i),
            !0)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(29)
      , o = n(467)
      , a = n(191);
    a && i({
        target: "Reflect",
        stat: !0
    }, {
        setPrototypeOf: function(t, e) {
            r(t),
            o(e);
            try {
                return a(t, e),
                !0
            } catch (t) {
                return !1
            }
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(292)
      , r = n(491);
    t.exports = i("Map", (function(t) {
        return function() {
            return t(this, arguments.length ? arguments[0] : void 0)
        }
    }
    ), r)
}
, function(t, e, n) {
    "use strict";
    var i = n(48).f
      , r = n(160)
      , o = n(243)
      , a = n(172)
      , s = n(192)
      , c = n(245)
      , l = n(355)
      , u = n(246)
      , d = n(43)
      , p = n(194).fastKey
      , h = n(110)
      , f = h.set
      , m = h.getterFor;
    t.exports = {
        getConstructor: function(t, e, n, l) {
            var u = t((function(t, i) {
                s(t, u, e),
                f(t, {
                    type: e,
                    index: r(null),
                    first: void 0,
                    last: void 0,
                    size: 0
                }),
                d || (t.size = 0),
                null != i && c(i, t[l], t, n)
            }
            ))
              , h = m(e)
              , g = function(t, e, n) {
                var i, r, o = h(t), a = v(t, e);
                return a ? a.value = n : (o.last = a = {
                    index: r = p(e, !0),
                    key: e,
                    value: n,
                    previous: i = o.last,
                    next: void 0,
                    removed: !1
                },
                o.first || (o.first = a),
                i && (i.next = a),
                d ? o.size++ : t.size++,
                "F" !== r && (o.index[r] = a)),
                t
            }
              , v = function(t, e) {
                var n, i = h(t), r = p(e);
                if ("F" !== r)
                    return i.index[r];
                for (n = i.first; n; n = n.next)
                    if (n.key == e)
                        return n
            };
            return o(u.prototype, {
                clear: function() {
                    for (var t = h(this), e = t.index, n = t.first; n; )
                        n.removed = !0,
                        n.previous && (n.previous = n.previous.next = void 0),
                        delete e[n.index],
                        n = n.next;
                    t.first = t.last = void 0,
                    d ? t.size = 0 : this.size = 0
                },
                delete: function(t) {
                    var e = h(this)
                      , n = v(this, t);
                    if (n) {
                        var i = n.next
                          , r = n.previous;
                        delete e.index[n.index],
                        n.removed = !0,
                        r && (r.next = i),
                        i && (i.previous = r),
                        e.first == n && (e.first = i),
                        e.last == n && (e.last = r),
                        d ? e.size-- : this.size--
                    }
                    return !!n
                },
                forEach: function(t) {
                    for (var e, n = h(this), i = a(t, arguments.length > 1 ? arguments[1] : void 0, 3); e = e ? e.next : n.first; )
                        for (i(e.value, e.key, this); e && e.removed; )
                            e = e.previous
                },
                has: function(t) {
                    return !!v(this, t)
                }
            }),
            o(u.prototype, n ? {
                get: function(t) {
                    var e = v(this, t);
                    return e && e.value
                },
                set: function(t, e) {
                    return g(this, 0 === t ? 0 : t, e)
                }
            } : {
                add: function(t) {
                    return g(this, t = 0 === t ? 0 : t, t)
                }
            }),
            d && i(u.prototype, "size", {
                get: function() {
                    return h(this).size
                }
            }),
            u
        },
        setStrong: function(t, e, n) {
            var i = e + " Iterator"
              , r = m(e)
              , o = m(i);
            l(t, e, (function(t, e) {
                f(this, {
                    type: i,
                    target: t,
                    state: r(t),
                    kind: e,
                    last: void 0
                })
            }
            ), (function() {
                for (var t = o(this), e = t.kind, n = t.last; n && n.removed; )
                    n = n.previous;
                return t.target && (t.last = n = n ? n.next : t.state.first) ? "keys" == e ? {
                    value: n.key,
                    done: !1
                } : "values" == e ? {
                    value: n.value,
                    done: !1
                } : {
                    value: [n.key, n.value],
                    done: !1
                } : (t.target = void 0,
                {
                    value: void 0,
                    done: !0
                })
            }
            ), n ? "entries" : "values", !n, !0),
            u(e)
        }
    }
}
, function(t, e, n) {
    "use strict";
    var i, r = n(34), o = n(243), a = n(194), s = n(292), c = n(493), l = n(42), u = n(110).enforce, d = n(463), p = !r.ActiveXObject && "ActiveXObject"in r, h = Object.isExtensible, f = function(t) {
        return function() {
            return t(this, arguments.length ? arguments[0] : void 0)
        }
    }, m = t.exports = s("WeakMap", f, c);
    if (d && p) {
        i = c.getConstructor(f, "WeakMap", !0),
        a.REQUIRED = !0;
        var g = m.prototype
          , v = g.delete
          , y = g.has
          , b = g.get
          , w = g.set;
        o(g, {
            delete: function(t) {
                if (l(t) && !h(t)) {
                    var e = u(this);
                    return e.frozen || (e.frozen = new i),
                    v.call(this, t) || e.frozen.delete(t)
                }
                return v.call(this, t)
            },
            has: function(t) {
                if (l(t) && !h(t)) {
                    var e = u(this);
                    return e.frozen || (e.frozen = new i),
                    y.call(this, t) || e.frozen.has(t)
                }
                return y.call(this, t)
            },
            get: function(t) {
                if (l(t) && !h(t)) {
                    var e = u(this);
                    return e.frozen || (e.frozen = new i),
                    y.call(this, t) ? b.call(this, t) : e.frozen.get(t)
                }
                return b.call(this, t)
            },
            set: function(t, e) {
                if (l(t) && !h(t)) {
                    var n = u(this);
                    n.frozen || (n.frozen = new i),
                    y.call(this, t) ? w.call(this, t, e) : n.frozen.set(t, e)
                } else
                    w.call(this, t, e);
                return this
            }
        })
    }
}
, function(t, e, n) {
    "use strict";
    var i = n(243)
      , r = n(194).getWeakData
      , o = n(29)
      , a = n(42)
      , s = n(192)
      , c = n(245)
      , l = n(74)
      , u = n(58)
      , d = n(110)
      , p = d.set
      , h = d.getterFor
      , f = l.find
      , m = l.findIndex
      , g = 0
      , v = function(t) {
        return t.frozen || (t.frozen = new y)
    }
      , y = function() {
        this.entries = []
    }
      , b = function(t, e) {
        return f(t.entries, (function(t) {
            return t[0] === e
        }
        ))
    };
    y.prototype = {
        get: function(t) {
            var e = b(this, t);
            if (e)
                return e[1]
        },
        has: function(t) {
            return !!b(this, t)
        },
        set: function(t, e) {
            var n = b(this, t);
            n ? n[1] = e : this.entries.push([t, e])
        },
        delete: function(t) {
            var e = m(this.entries, (function(e) {
                return e[0] === t
            }
            ));
            return ~e && this.entries.splice(e, 1),
            !!~e
        }
    },
    t.exports = {
        getConstructor: function(t, e, n, l) {
            var d = t((function(t, i) {
                s(t, d, e),
                p(t, {
                    type: e,
                    id: g++,
                    frozen: void 0
                }),
                null != i && c(i, t[l], t, n)
            }
            ))
              , f = h(e)
              , m = function(t, e, n) {
                var i = f(t)
                  , a = r(o(e), !0);
                return !0 === a ? v(i).set(e, n) : a[i.id] = n,
                t
            };
            return i(d.prototype, {
                delete: function(t) {
                    var e = f(this);
                    if (!a(t))
                        return !1;
                    var n = r(t);
                    return !0 === n ? v(e).delete(t) : n && u(n, e.id) && delete n[e.id]
                },
                has: function(t) {
                    var e = f(this);
                    if (!a(t))
                        return !1;
                    var n = r(t);
                    return !0 === n ? v(e).has(t) : n && u(n, e.id)
                }
            }),
            i(d.prototype, n ? {
                get: function(t) {
                    var e = f(this);
                    if (a(t)) {
                        var n = r(t);
                        return !0 === n ? v(e).get(t) : n ? n[e.id] : void 0
                    }
                },
                set: function(t, e) {
                    return m(this, t, e)
                }
            } : {
                add: function(t) {
                    return m(this, t, !0)
                }
            }),
            d
        }
    }
}
, function(t, e, n) {
    "use strict";
    var i = n(292)
      , r = n(491);
    t.exports = i("Set", (function(t) {
        return function() {
            return t(this, arguments.length ? arguments[0] : void 0)
        }
    }
    ), r)
}
, function(t, e, n) {
    var i = n(109)
      , r = n(190).f
      , o = {}.toString
      , a = "object" == typeof window && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];
    t.exports.f = function(t) {
        return a && "[object Window]" == o.call(t) ? function(t) {
            try {
                return r(t)
            } catch (t) {
                return a.slice()
            }
        }(t) : r(i(t))
    }
}
, function(t, e, n) {
    var i = n(45);
    e.f = i
}
, function(t, e, n) {
    var i = n(43)
      , r = n(237)
      , o = n(109)
      , a = n(288).f
      , s = function(t) {
        return function(e) {
            for (var n, s = o(e), c = r(s), l = c.length, u = 0, d = []; l > u; )
                n = c[u++],
                i && !a.call(s, n) || d.push(t ? [n, s[n]] : s[n]);
            return d
        }
    };
    t.exports = {
        entries: s(!0),
        values: s(!1)
    }
}
, function(t, e) {
    t.exports = Object.is || function(t, e) {
        return t === e ? 0 !== t || 1 / t == 1 / e : t != t && e != e
    }
}
, function(t, e, n) {
    var i, r, o = n(34), a = n(290), s = o.process, c = s && s.versions, l = c && c.v8;
    l ? r = (i = l.split("."))[0] + i[1] : a && (!(i = a.match(/Edge\/(\d+)/)) || i[1] >= 74) && (i = a.match(/Chrome\/(\d+)/)) && (r = i[1]),
    t.exports = r && +r
}
, function(t, e, n) {
    "use strict";
    var i = n(53)
      , r = n(175)
      , o = n(44)
      , a = Math.min;
    t.exports = [].copyWithin || function(t, e) {
        var n = i(this)
          , s = o(n.length)
          , c = r(t, s)
          , l = r(e, s)
          , u = arguments.length > 2 ? arguments[2] : void 0
          , d = a((void 0 === u ? s : r(u, s)) - l, s - c)
          , p = 1;
        for (l < c && c < l + d && (p = -1,
        l += d - 1,
        c += d - 1); d-- > 0; )
            l in n ? n[c] = n[l] : delete n[c],
            c += p,
            l += p;
        return n
    }
}
, function(t, e, n) {
    "use strict";
    var i = n(189)
      , r = n(44)
      , o = n(172)
      , a = function(t, e, n, s, c, l, u, d) {
        for (var p, h = c, f = 0, m = !!u && o(u, d, 3); f < s; ) {
            if (f in n) {
                if (p = m ? m(n[f], f, e) : n[f],
                l > 0 && i(p))
                    h = a(t, e, p, r(p.length), h, l - 1) - 1;
                else {
                    if (h >= 9007199254740991)
                        throw TypeError("Exceed the acceptable array length");
                    t[h] = p
                }
                h++
            }
            f++
        }
        return h
    };
    t.exports = a
}
, function(t, e, n) {
    "use strict";
    var i = n(109)
      , r = n(122)
      , o = n(44)
      , a = n(159)
      , s = n(97)
      , c = Math.min
      , l = [].lastIndexOf
      , u = !!l && 1 / [1].lastIndexOf(1, -0) < 0
      , d = a("lastIndexOf")
      , p = s("indexOf", {
        ACCESSORS: !0,
        1: 0
    })
      , h = u || !d || !p;
    t.exports = h ? function(t) {
        if (u)
            return l.apply(this, arguments) || 0;
        var e = i(this)
          , n = o(e.length)
          , a = n - 1;
        for (arguments.length > 1 && (a = c(a, r(arguments[1]))),
        a < 0 && (a = n + a); a >= 0; a--)
            if (a in e && e[a] === t)
                return a || 0;
        return -1
    }
    : l
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(298);
    i({
        target: "RegExp",
        proto: !0,
        forced: /./.exec !== r
    }, {
        exec: r
    })
}
, function(t, e, n) {
    var i = n(290);
    t.exports = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(i)
}
, function(t, e, n) {
    var i = n(34)
      , r = n(214).trim
      , o = n(301)
      , a = i.parseInt
      , s = /^[+-]?0[Xx]/
      , c = 8 !== a(o + "08") || 22 !== a(o + "0x16");
    t.exports = c ? function(t, e) {
        var n = r(String(t));
        return a(n, e >>> 0 || (s.test(n) ? 16 : 10))
    }
    : a
}
, function(t, e, n) {
    var i = n(34)
      , r = n(214).trim
      , o = n(301)
      , a = i.parseFloat
      , s = 1 / a(o + "-0") != -1 / 0;
    t.exports = s ? function(t) {
        var e = r(String(t))
          , n = a(e);
        return 0 === n && "-" == e.charAt(0) ? -0 : n
    }
    : a
}
, function(t, e, n) {
    var i = n(42)
      , r = Math.floor;
    t.exports = function(t) {
        return !i(t) && isFinite(t) && r(t) === t
    }
}
, function(t, e, n) {
    var i = n(133);
    t.exports = function(t) {
        if ("number" != typeof t && "Number" != i(t))
            throw TypeError("Incorrect invocation");
        return +t
    }
}
, function(t, e) {
    var n = Math.log;
    t.exports = Math.log1p || function(t) {
        return (t = +t) > -1e-8 && t < 1e-8 ? t - t * t / 2 : n(1 + t)
    }
}
, function(t, e, n) {
    var i = n(122)
      , r = n(44);
    t.exports = function(t) {
        if (void 0 === t)
            return 0;
        var e = i(t)
          , n = r(e);
        if (e !== n)
            throw RangeError("Wrong length or index");
        return n
    }
}
, function(t, e, n) {
    var i = n(833);
    t.exports = function(t, e) {
        var n = i(t);
        if (n % e)
            throw RangeError("Wrong offset");
        return n
    }
}
, function(t, e, n) {
    var i = n(53)
      , r = n(44)
      , o = n(241)
      , a = n(360)
      , s = n(172)
      , c = n(46).aTypedArrayConstructor;
    t.exports = function(t) {
        var e, n, l, u, d, p, h = i(t), f = arguments.length, m = f > 1 ? arguments[1] : void 0, g = void 0 !== m, v = o(h);
        if (null != v && !a(v))
            for (p = (d = v.call(h)).next,
            h = []; !(u = p.call(d)).done; )
                h.push(u.value);
        for (g && f > 2 && (m = s(m, arguments[2], 2)),
        n = r(h.length),
        l = new (c(this))(n),
        e = 0; n > e; e++)
            l[e] = g ? m(h[e], e) : h[e];
        return l
    }
}
, function(t, e, n) {
    var i, r, o;
    /*!
 * jQuery UI Widget 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */
    r = [n(19), n(249)],
    void 0 === (o = "function" == typeof (i = function(t) {
        var e, n = 0, i = Array.prototype.slice;
        return t.cleanData = (e = t.cleanData,
        function(n) {
            var i, r, o;
            for (o = 0; null != (r = n[o]); o++)
                try {
                    (i = t._data(r, "events")) && i.remove && t(r).triggerHandler("remove")
                } catch (t) {}
            e(n)
        }
        ),
        t.widget = function(e, n, i) {
            var r, o, a, s = {}, c = e.split(".")[0], l = c + "-" + (e = e.split(".")[1]);
            return i || (i = n,
            n = t.Widget),
            t.isArray(i) && (i = t.extend.apply(null, [{}].concat(i))),
            t.expr[":"][l.toLowerCase()] = function(e) {
                return !!t.data(e, l)
            }
            ,
            t[c] = t[c] || {},
            r = t[c][e],
            o = t[c][e] = function(t, e) {
                if (!this._createWidget)
                    return new o(t,e);
                arguments.length && this._createWidget(t, e)
            }
            ,
            t.extend(o, r, {
                version: i.version,
                _proto: t.extend({}, i),
                _childConstructors: []
            }),
            (a = new n).options = t.widget.extend({}, a.options),
            t.each(i, (function(e, i) {
                t.isFunction(i) ? s[e] = function() {
                    function t() {
                        return n.prototype[e].apply(this, arguments)
                    }
                    function r(t) {
                        return n.prototype[e].apply(this, t)
                    }
                    return function() {
                        var e, n = this._super, o = this._superApply;
                        return this._super = t,
                        this._superApply = r,
                        e = i.apply(this, arguments),
                        this._super = n,
                        this._superApply = o,
                        e
                    }
                }() : s[e] = i
            }
            )),
            o.prototype = t.widget.extend(a, {
                widgetEventPrefix: r && a.widgetEventPrefix || e
            }, s, {
                constructor: o,
                namespace: c,
                widgetName: e,
                widgetFullName: l
            }),
            r ? (t.each(r._childConstructors, (function(e, n) {
                var i = n.prototype;
                t.widget(i.namespace + "." + i.widgetName, o, n._proto)
            }
            )),
            delete r._childConstructors) : n._childConstructors.push(o),
            t.widget.bridge(e, o),
            o
        }
        ,
        t.widget.extend = function(e) {
            for (var n, r, o = i.call(arguments, 1), a = 0, s = o.length; a < s; a++)
                for (n in o[a])
                    r = o[a][n],
                    o[a].hasOwnProperty(n) && void 0 !== r && (t.isPlainObject(r) ? e[n] = t.isPlainObject(e[n]) ? t.widget.extend({}, e[n], r) : t.widget.extend({}, r) : e[n] = r);
            return e
        }
        ,
        t.widget.bridge = function(e, n) {
            var r = n.prototype.widgetFullName || e;
            t.fn[e] = function(o) {
                var a = "string" == typeof o
                  , s = i.call(arguments, 1)
                  , c = this;
                return a ? this.length || "instance" !== o ? this.each((function() {
                    var n, i = t.data(this, r);
                    return "instance" === o ? (c = i,
                    !1) : i ? t.isFunction(i[o]) && "_" !== o.charAt(0) ? (n = i[o].apply(i, s)) !== i && void 0 !== n ? (c = n && n.jquery ? c.pushStack(n.get()) : n,
                    !1) : void 0 : t.error("no such method '" + o + "' for " + e + " widget instance") : t.error("cannot call methods on " + e + " prior to initialization; attempted to call method '" + o + "'")
                }
                )) : c = void 0 : (s.length && (o = t.widget.extend.apply(null, [o].concat(s))),
                this.each((function() {
                    var e = t.data(this, r);
                    e ? (e.option(o || {}),
                    e._init && e._init()) : t.data(this, r, new n(o,this))
                }
                ))),
                c
            }
        }
        ,
        t.Widget = function() {}
        ,
        t.Widget._childConstructors = [],
        t.Widget.prototype = {
            widgetName: "widget",
            widgetEventPrefix: "",
            defaultElement: "<div>",
            options: {
                classes: {},
                disabled: !1,
                create: null
            },
            _createWidget: function(e, i) {
                i = t(i || this.defaultElement || this)[0],
                this.element = t(i),
                this.uuid = n++,
                this.eventNamespace = "." + this.widgetName + this.uuid,
                this.bindings = t(),
                this.hoverable = t(),
                this.focusable = t(),
                this.classesElementLookup = {},
                i !== this && (t.data(i, this.widgetFullName, this),
                this._on(!0, this.element, {
                    remove: function(t) {
                        t.target === i && this.destroy()
                    }
                }),
                this.document = t(i.style ? i.ownerDocument : i.document || i),
                this.window = t(this.document[0].defaultView || this.document[0].parentWindow)),
                this.options = t.widget.extend({}, this.options, this._getCreateOptions(), e),
                this._create(),
                this.options.disabled && this._setOptionDisabled(this.options.disabled),
                this._trigger("create", null, this._getCreateEventData()),
                this._init()
            },
            _getCreateOptions: function() {
                return {}
            },
            _getCreateEventData: t.noop,
            _create: t.noop,
            _init: t.noop,
            destroy: function() {
                var e = this;
                this._destroy(),
                t.each(this.classesElementLookup, (function(t, n) {
                    e._removeClass(n, t)
                }
                )),
                this.element.off(this.eventNamespace).removeData(this.widgetFullName),
                this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),
                this.bindings.off(this.eventNamespace)
            },
            _destroy: t.noop,
            widget: function() {
                return this.element
            },
            option: function(e, n) {
                var i, r, o, a = e;
                if (0 === arguments.length)
                    return t.widget.extend({}, this.options);
                if ("string" == typeof e)
                    if (a = {},
                    i = e.split("."),
                    e = i.shift(),
                    i.length) {
                        for (r = a[e] = t.widget.extend({}, this.options[e]),
                        o = 0; o < i.length - 1; o++)
                            r[i[o]] = r[i[o]] || {},
                            r = r[i[o]];
                        if (e = i.pop(),
                        1 === arguments.length)
                            return void 0 === r[e] ? null : r[e];
                        r[e] = n
                    } else {
                        if (1 === arguments.length)
                            return void 0 === this.options[e] ? null : this.options[e];
                        a[e] = n
                    }
                return this._setOptions(a),
                this
            },
            _setOptions: function(t) {
                var e;
                for (e in t)
                    this._setOption(e, t[e]);
                return this
            },
            _setOption: function(t, e) {
                return "classes" === t && this._setOptionClasses(e),
                this.options[t] = e,
                "disabled" === t && this._setOptionDisabled(e),
                this
            },
            _setOptionClasses: function(e) {
                var n, i, r;
                for (n in e)
                    r = this.classesElementLookup[n],
                    e[n] !== this.options.classes[n] && r && r.length && (i = t(r.get()),
                    this._removeClass(r, n),
                    i.addClass(this._classes({
                        element: i,
                        keys: n,
                        classes: e,
                        add: !0
                    })))
            },
            _setOptionDisabled: function(t) {
                this._toggleClass(this.widget(), this.widgetFullName + "-disabled", null, !!t),
                t && (this._removeClass(this.hoverable, null, "ui-state-hover"),
                this._removeClass(this.focusable, null, "ui-state-focus"))
            },
            enable: function() {
                return this._setOptions({
                    disabled: !1
                })
            },
            disable: function() {
                return this._setOptions({
                    disabled: !0
                })
            },
            _classes: function(e) {
                var n = []
                  , i = this;
                function r(r, o) {
                    var a, s;
                    for (s = 0; s < r.length; s++)
                        a = i.classesElementLookup[r[s]] || t(),
                        a = e.add ? t(t.unique(a.get().concat(e.element.get()))) : t(a.not(e.element).get()),
                        i.classesElementLookup[r[s]] = a,
                        n.push(r[s]),
                        o && e.classes[r[s]] && n.push(e.classes[r[s]])
                }
                return e = t.extend({
                    element: this.element,
                    classes: this.options.classes || {}
                }, e),
                this._on(e.element, {
                    remove: "_untrackClassesElement"
                }),
                e.keys && r(e.keys.match(/\S+/g) || [], !0),
                e.extra && r(e.extra.match(/\S+/g) || []),
                n.join(" ")
            },
            _untrackClassesElement: function(e) {
                var n = this;
                t.each(n.classesElementLookup, (function(i, r) {
                    -1 !== t.inArray(e.target, r) && (n.classesElementLookup[i] = t(r.not(e.target).get()))
                }
                ))
            },
            _removeClass: function(t, e, n) {
                return this._toggleClass(t, e, n, !1)
            },
            _addClass: function(t, e, n) {
                return this._toggleClass(t, e, n, !0)
            },
            _toggleClass: function(t, e, n, i) {
                i = "boolean" == typeof i ? i : n;
                var r = "string" == typeof t || null === t
                  , o = {
                    extra: r ? e : n,
                    keys: r ? t : e,
                    element: r ? this.element : t,
                    add: i
                };
                return o.element.toggleClass(this._classes(o), i),
                this
            },
            _on: function(e, n, i) {
                var r, o = this;
                "boolean" != typeof e && (i = n,
                n = e,
                e = !1),
                i ? (n = r = t(n),
                this.bindings = this.bindings.add(n)) : (i = n,
                n = this.element,
                r = this.widget()),
                t.each(i, (function(i, a) {
                    function s() {
                        if (e || !0 !== o.options.disabled && !t(this).hasClass("ui-state-disabled"))
                            return ("string" == typeof a ? o[a] : a).apply(o, arguments)
                    }
                    "string" != typeof a && (s.guid = a.guid = a.guid || s.guid || t.guid++);
                    var c = i.match(/^([\w:-]*)\s*(.*)$/)
                      , l = c[1] + o.eventNamespace
                      , u = c[2];
                    u ? r.on(l, u, s) : n.on(l, s)
                }
                ))
            },
            _off: function(e, n) {
                n = (n || "").split(" ").join(this.eventNamespace + " ") + this.eventNamespace,
                e.off(n).off(n),
                this.bindings = t(this.bindings.not(e).get()),
                this.focusable = t(this.focusable.not(e).get()),
                this.hoverable = t(this.hoverable.not(e).get())
            },
            _delay: function(t, e) {
                var n = this;
                return setTimeout((function() {
                    return ("string" == typeof t ? n[t] : t).apply(n, arguments)
                }
                ), e || 0)
            },
            _hoverable: function(e) {
                this.hoverable = this.hoverable.add(e),
                this._on(e, {
                    mouseenter: function(e) {
                        this._addClass(t(e.currentTarget), null, "ui-state-hover")
                    },
                    mouseleave: function(e) {
                        this._removeClass(t(e.currentTarget), null, "ui-state-hover")
                    }
                })
            },
            _focusable: function(e) {
                this.focusable = this.focusable.add(e),
                this._on(e, {
                    focusin: function(e) {
                        this._addClass(t(e.currentTarget), null, "ui-state-focus")
                    },
                    focusout: function(e) {
                        this._removeClass(t(e.currentTarget), null, "ui-state-focus")
                    }
                })
            },
            _trigger: function(e, n, i) {
                var r, o, a = this.options[e];
                if (i = i || {},
                (n = t.Event(n)).type = (e === this.widgetEventPrefix ? e : this.widgetEventPrefix + e).toLowerCase(),
                n.target = this.element[0],
                o = n.originalEvent)
                    for (r in o)
                        r in n || (n[r] = o[r]);
                return this.element.trigger(n, i),
                !(t.isFunction(a) && !1 === a.apply(this.element[0], [n].concat(i)) || n.isDefaultPrevented())
            }
        },
        t.each({
            show: "fadeIn",
            hide: "fadeOut"
        }, (function(e, n) {
            t.Widget.prototype["_" + e] = function(i, r, o) {
                var a;
                "string" == typeof r && (r = {
                    effect: r
                });
                var s = r ? !0 === r || "number" == typeof r ? n : r.effect || n : e;
                "number" == typeof (r = r || {}) && (r = {
                    duration: r
                }),
                a = !t.isEmptyObject(r),
                r.complete = o,
                r.delay && i.delay(r.delay),
                a && t.effects && t.effects.effect[s] ? i[e](r) : s !== e && i[s] ? i[s](r.duration, r.easing, o) : i.queue((function(n) {
                    t(this)[e](),
                    o && o.call(i[0]),
                    n()
                }
                ))
            }
        }
        )),
        t.widget
    }
    ) ? i.apply(e, r) : i) || (t.exports = o)
}
, function(t, e, n) {
    "use strict";
    function i(t, e) {
        function n() {
            return !n.pred.apply(n.thisArg, arguments)
        }
        return n.pred = t,
        n.thisArg = e,
        n
    }
    n.d(e, "a", (function() {
        return i
    }
    ))
}
, function(t, e) {
    t.exports = "data:font/woff;base64, "
}
, function(t, e) {
    t.exports = "data:font/woff;base64, "
}
, function(t, e) {
    t.exports = "data:font/woff;base64, "
}
, function(t, e) {
    var n, i, r = t.exports = {};
    function o() {
        throw new Error("setTimeout has not been defined")
    }
    function a() {
        throw new Error("clearTimeout has not been defined")
    }
    function s(t) {
        if (n === setTimeout)
            return setTimeout(t, 0);
        if ((n === o || !n) && setTimeout)
            return n = setTimeout,
            setTimeout(t, 0);
        try {
            return n(t, 0)
        } catch (e) {
            try {
                return n.call(null, t, 0)
            } catch (e) {
                return n.call(this, t, 0)
            }
        }
    }
    !function() {
        try {
            n = "function" == typeof setTimeout ? setTimeout : o
        } catch (t) {
            n = o
        }
        try {
            i = "function" == typeof clearTimeout ? clearTimeout : a
        } catch (t) {
            i = a
        }
    }();
    var c, l = [], u = !1, d = -1;
    function p() {
        u && c && (u = !1,
        c.length ? l = c.concat(l) : d = -1,
        l.length && h())
    }
    function h() {
        if (!u) {
            var t = s(p);
            u = !0;
            for (var e = l.length; e; ) {
                for (c = l,
                l = []; ++d < e; )
                    c && c[d].run();
                d = -1,
                e = l.length
            }
            c = null,
            u = !1,
            function(t) {
                if (i === clearTimeout)
                    return clearTimeout(t);
                if ((i === a || !i) && clearTimeout)
                    return i = clearTimeout,
                    clearTimeout(t);
                try {
                    i(t)
                } catch (e) {
                    try {
                        return i.call(null, t)
                    } catch (e) {
                        return i.call(this, t)
                    }
                }
            }(t)
        }
    }
    function f(t, e) {
        this.fun = t,
        this.array = e
    }
    function m() {}
    r.nextTick = function(t) {
        var e = new Array(arguments.length - 1);
        if (arguments.length > 1)
            for (var n = 1; n < arguments.length; n++)
                e[n - 1] = arguments[n];
        l.push(new f(t,e)),
        1 !== l.length || u || s(h)
    }
    ,
    f.prototype.run = function() {
        this.fun.apply(null, this.array)
    }
    ,
    r.title = "browser",
    r.browser = !0,
    r.env = {},
    r.argv = [],
    r.version = "",
    r.versions = {},
    r.on = m,
    r.addListener = m,
    r.once = m,
    r.off = m,
    r.removeListener = m,
    r.removeAllListeners = m,
    r.emit = m,
    r.prependListener = m,
    r.prependOnceListener = m,
    r.listeners = function(t) {
        return []
    }
    ,
    r.binding = function(t) {
        throw new Error("process.binding is not supported")
    }
    ,
    r.cwd = function() {
        return "/"
    }
    ,
    r.chdir = function(t) {
        throw new Error("process.chdir is not supported")
    }
    ,
    r.umask = function() {
        return 0
    }
}
, function(t, e, n) {
    var i = {
        "../Modules/MeshModule": [1672, 20],
        "../Modules/PointCloud/PointCloudModule": [1671, 25, 19],
        "../PoiUI/CKEWrapper/CKEWrapperModule": [1673, 23, 21],
        "../ThemePanelUI/ThemePanelModule": [1678, 0, 1, 2, 3, 16],
        "./AuditPanelModule": [1677, 0, 1, 3, 18],
        "./CloudProcessingModule": [1675, 0, 1, 2, 3, 15],
        "./DeveloperModule": [1676, 14, 22],
        "./MeasurementsModule": [1674, 0, 2, 24, 17]
    };
    function r(t) {
        if (!n.o(i, t))
            return Promise.resolve().then((function() {
                var e = new Error("Cannot find module '" + t + "'");
                throw e.code = "MODULE_NOT_FOUND",
                e
            }
            ));
        var e = i[t]
          , r = e[0];
        return Promise.all(e.slice(1).map(n.e)).then((function() {
            return n.t(r, 7)
        }
        ))
    }
    r.keys = function() {
        return Object.keys(i)
    }
    ,
    r.id = 519,
    t.exports = r
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    e.stylesLoaded = function() {
        var t = document.getElementsByClassName("indoorViewer")[0];
        return window.getComputedStyle(t, ":before").getPropertyValue("content").includes("styles-loaded")
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t() {
            this.detectors = [],
            this.reporters = []
        }
        return t.prototype.addDetectors = function() {
            for (var t, e = [], n = 0; n < arguments.length; n++)
                e[n] = arguments[n];
            (t = this.detectors).push.apply(t, e)
        }
        ,
        t.prototype.addReporters = function() {
            for (var t, e = [], n = 0; n < arguments.length; n++)
                e[n] = arguments[n];
            (t = this.reporters).push.apply(t, e)
        }
        ,
        t.prototype.wrap = function(t) {
            var e = this;
            return t.then((function(t) {
                return e.chainReset(t)
            }
            )).catch((function(t) {
                return e.chainHandle(t)
            }
            ))
        }
        ,
        t.prototype.reset = function() {}
        ,
        t.prototype.handle = function(t) {
            for (var e = 0, n = this.detectors; e < n.length; e++) {
                var i = n[e];
                if (i.applies(t)) {
                    for (var r = 0, o = this.reporters; r < o.length; r++) {
                        o[r].report(i.report())
                    }
                    break
                }
            }
        }
        ,
        t.prototype.chainHandle = function(t) {
            return this.handle(t),
            Promise.reject(t)
        }
        ,
        t.prototype.chainReset = function(t) {
            return this.reset(),
            t
        }
        ,
        t
    }();
    e.ErrorWrapper = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t(t, e) {
            this.gettextCatalog = t,
            this.message = e
        }
        return t.prototype.applies = function(t) {
            return !0
        }
        ,
        t.prototype.report = function() {
            return this.gettextCatalog.getString(this.message)
        }
        ,
        t
    }();
    e.GenericDetector = i
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    ), o = this && this.__assign || function() {
        return (o = Object.assign || function(t) {
            for (var e, n = 1, i = arguments.length; n < i; n++)
                for (var r in e = arguments[n])
                    Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]);
            return t
        }
        ).apply(this, arguments)
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var a = function() {
        function t() {}
        return t.prototype.toData = function() {
            return {
                offset: this.offset,
                site_model_entity: this.siteModelEntityIds,
                dataset: this.datasetIds,
                lon_min: this.lonMin,
                lon_max: this.lonMax,
                lat_min: this.latMin,
                lat_max: this.latMax,
                step: this.step,
                limit: this.limit,
                lon: this.lon,
                lat: this.lat,
                z: this.z,
                radius: this.radius,
                sort_by: this.sortBy,
                sort_order: this.sortOrder
            }
        }
        ,
        t
    }();
    e.RestFilter = a;
    var s = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.toData = function() {
            return o(o({}, t.prototype.toData.call(this)), {
                hidden: this.hidden,
                spacing: this.spacing
            })
        }
        ,
        e
    }(a);
    e.ImageRestFilter = s;
    var c = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.toData = function() {
            return o(o({}, t.prototype.toData.call(this)), {
                poi_type: this.poiTypeIds,
                poi_type_group: this.poiTypeGroupIds
            })
        }
        ,
        e
    }(a);
    e.PoiRestFilter = c
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function(t) {
        t && (this.canWrite = t.can_write,
        this.groupRead = t.group_read,
        this.groupWrite = t.group_write)
    };
    e.SecurityInfo = i
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o, a = n(198);
    !function(t) {
        t.NUMBER = "number",
        t.BOOLEAN = "boolean",
        t.STRING = "string",
        t.CSV = "csv",
        t.MULTILINE = "multiline",
        t.ENUM = "enum"
    }(o = e.ConfigType || (e.ConfigType = {})),
    function(t) {
        t.APPEARANCE = "appearance",
        t.CUSTOMIZABLE_CONTENT = "customizable.content",
        t.FEEDBACK_TO_EMAIL = "feedback.to.email",
        t.FUNCTIONALITY = "functionality",
        t.LAYER_VISIBILITY = "layer.visibility",
        t.MAIN_SCENE = "main.scene",
        t.MAP_APPEARANCE = "map.appearance",
        t.MENU_VISIBILITY = "menu.visibility",
        t.OAUTH = "oauth",
        t.STARTUP_VIEW = "startup.view",
        t.UI_ELEMENTS = "ui.elements",
        t.SECURITY = "security"
    }(e.ConfigCategory || (e.ConfigCategory = {}));
    var s = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.possibleValues = [],
            e
        }
        return r(e, t),
        e.prototype.copy = function(e, n) {
            return void 0 === n && (n = !1),
            t.prototype.fill.call(this, e),
            this.name = e.name,
            this.value = e.value,
            this.type = e.type,
            this.length = e.length,
            this.category = e.category,
            this.possibleValues = e.possibleValues,
            this.editInForm = e.editInForm,
            this
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.name = e.name,
            this.value = e.value,
            this.type = e.type,
            this.length = e.length,
            this.category = e.category,
            this.possibleValues = e.type === o.ENUM ? e.possible_values.split(",") : this.possibleValues,
            this.editInForm = e.edit_in_form
        }
        ,
        e.prototype.toData = function() {
            var e = {};
            return t.prototype.fillDto.call(this, e),
            e.name = this.name,
            e.value = this.value && this.value.toString(),
            e.type = this.type,
            e.length = this.length,
            e.category = this.category,
            e.possible_values = this.possibleValues.join(),
            e.edit_in_form = this.editInForm,
            e
        }
        ,
        e
    }(a.SecureRepositoryObject);
    e.ConfigEntity = s
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t() {}
        return t.dateFromEpochSeconds = function(e) {
            return new Date(e * t.MILISECONDS_IN_SECOND)
        }
        ,
        t.epochSecondsFromDate = function(e) {
            return e.getTime() / t.MILISECONDS_IN_SECOND
        }
        ,
        t.differenceInDays = function(e, n) {
            var i = e.getTime() - n.getTime()
              , r = t.MILISECONDS_IN_SECOND * t.SECONDS_IN_MINUTE * t.MINUTES_IN_HOUR * t.HOURS_IN_DAY;
            return Math.ceil(i / r)
        }
        ,
        t.MILISECONDS_IN_SECOND = 1e3,
        t.SECONDS_IN_MINUTE = 60,
        t.MINUTES_IN_HOUR = 60,
        t.HOURS_IN_DAY = 24,
        t
    }();
    e.DateUtilities = i
}
, function(t, e, n) {
    t.exports = n.p + "e2266fec7968df82769dcc02eb218d15.generic_poi.png"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(96)
      , a = n(7)
      , s = n(377)
      , c = n(1042)
      , l = n(55);
    n(379);
    var u = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.children = [],
            e.attributes = {},
            e.dimensionsChanged = !1,
            e.globalNeedsUpdate = !1,
            e
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "label", {
            get: function() {
                if (this.type === l.SiteModelType.CUSTOM || this.type === l.SiteModelType.FREE_SPACE_NAVIGATION)
                    return this.name;
                var t = this.gettextCatalog.getString(this.getTypeDisplayName());
                return this.name ? t + " " + this.name : t
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.copy = function(e, n) {
            return void 0 === n && (n = !1),
            t.prototype.fill.call(this, e),
            this.parent = e.parent,
            this.children = a.clone(e.children),
            this.type = e.type,
            this.name = e.name,
            this.polygon = a.cloneDeep(e.polygon),
            this.globalPolygon = a.cloneDeep(e.globalPolygon),
            this.zMin = e.zMin,
            this.globalzMin = e.globalzMin,
            this.zMax = e.zMax,
            this.globalzMax = e.globalzMax,
            this.center = this.center ? this.center.clone() : void 0,
            this._globalCenter = e._globalCenter ? e._globalCenter.clone() : void 0,
            this.height = e.height,
            this.attributes = a.cloneDeep(e.attributes),
            this.dimensionsChanged = e.dimensionsChanged,
            this.globalNeedsUpdate = e.globalNeedsUpdate,
            this._area = e._area,
            this._volume = e._volume,
            n || (this.drawing = e.drawing,
            this.selected = e.selected),
            this
        }
        ,
        e.prototype.resolveInjectables = function() {
            this.GeoTransformationService = this.injectables.GeoTransformationService,
            this.SiteModelTypeService = this.injectables.SiteModelTypeService,
            this.gettextCatalog = this.injectables.gettextCatalog
        }
        ,
        e.prototype.fillFromData = function(n) {
            t.prototype.fillFromData.call(this, n),
            this.type = n.type,
            this.name = n.name,
            this.globalPolygon = n.polygon,
            this.globalzMin = n.z_min,
            this.globalzMax = n.z_max,
            this._globalCenter = o.VectorFactory.fromArray3(n.center),
            this.computeLocalFromGlobal(),
            this.height = void 0 !== this.zMax && void 0 !== this.zMin ? Math.abs(this.zMax - this.zMin) : void 0,
            this.attributes = a.cloneDeep(n.attributes),
            this._area = n.area,
            this._volume = n.volume,
            this.dimensionsChanged = !1,
            this.globalNeedsUpdate = !1,
            this.children = [];
            for (var i = 0, r = n.children; i < r.length; i++) {
                var s = r[i]
                  , c = new e(this.injectables);
                c.parent = this,
                c.fillFromData(s),
                this.children.push(c)
            }
        }
        ,
        e.prototype.computeLocalFromGlobal = function() {
            this.polygon = void 0 === this.globalPolygon ? void 0 : new s.LocalPolygon(this.GeoTransformationService,this.globalPolygon),
            this.zMin = void 0 === this.globalzMin ? void 0 : this.GeoTransformationService.toLocalHeight(this.globalzMin),
            this.zMax = void 0 === this.globalzMax ? void 0 : this.GeoTransformationService.toLocalHeight(this.globalzMax);
            var t = this.globalCenter;
            this.center = t ? this.GeoTransformationService.vectorToLocal(t) : void 0
        }
        ,
        e.prototype.toData = function() {
            var t, e, n, i = [];
            t = !this.globalNeedsUpdate && this.globalPolygon ? this.globalPolygon : void 0 !== this.polygon && this.polygon.boundary.length ? this.polygon.toData() : void 0,
            e = this.globalNeedsUpdate || void 0 === this.globalzMin ? void 0 === this.zMin ? void 0 : this.GeoTransformationService.toGlobalHeight(this.zMin) : this.globalzMin,
            n = this.globalNeedsUpdate || void 0 === this.globalzMax ? void 0 === this.zMax ? void 0 : this.GeoTransformationService.toGlobalHeight(this.zMax) : this.globalzMax;
            for (var r = {
                id: this.id,
                type: this.type,
                name: this.name,
                polygon: t,
                z_min: e,
                z_max: n,
                children: i,
                center: void 0 === this._globalCenter ? void 0 : this._globalCenter.toArray(),
                attributes: a.cloneDeep(this.attributes) || {},
                area: this._area,
                volume: this._volume
            }, o = 0, s = this.children; o < s.length; o++) {
                var c = s[o];
                i.push(c.toData())
            }
            return r
        }
        ,
        Object.defineProperty(e.prototype, "hashKey", {
            get: function() {
                return this.$$hashKey ? this.$$hashKey.replace(":", "_") : void 0
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "inherited", {
            get: function() {
                return void 0 !== this.parent && void 0 === this.polygon
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "globalCenter", {
            get: function() {
                if (!this.dimensionsChanged) {
                    var t;
                    this._globalCenter ? t = this._globalCenter : this.parent && (t = this.parent.globalCenter);
                    var e = 0;
                    return void 0 !== this.globalzMin && void 0 !== this.globalzMax && (e = this.globalzMax - (this.globalzMax - this.globalzMin) / 2),
                    t && t.setZ(e),
                    t
                }
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.getPath = function() {
            return this.polygon && this.polygon.boundary ? this.polygon.boundary : this.parent ? this.parent.getPath() : void 0
        }
        ,
        e.prototype.getHoles = function() {
            return this.polygon && this.polygon.boundary ? this.polygon.holes : this.parent ? this.parent.getHoles() : void 0
        }
        ,
        Object.defineProperty(e.prototype, "area", {
            get: function() {
                if (!this.dimensionsChanged)
                    return void 0 === this._area && this.parent ? this.parent.area : this._area
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "volume", {
            get: function() {
                if (!this.dimensionsChanged)
                    return void 0 !== this.zMin && void 0 !== this.zMax ? this.area * (this.zMax - this.zMin) : void 0
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.onBeforeReferenceSystemChangedEvent = function() {
            if (this.globalNeedsUpdate && (this.globalPolygon = void 0 !== this.polygon && this.polygon.boundary.length ? this.polygon.toData() : void 0,
            this.globalzMin = void 0 === this.zMin ? void 0 : this.GeoTransformationService.toGlobalHeight(this.zMin),
            this.globalzMax = void 0 === this.zMax ? void 0 : this.GeoTransformationService.toGlobalHeight(this.zMax),
            this.globalNeedsUpdate = !1),
            this.children && this.children.length)
                for (var t = 0, e = this.children; t < e.length; t++) {
                    e[t].onBeforeReferenceSystemChangedEvent()
                }
        }
        ,
        e.prototype.onReferenceSystemChangedEvent = function() {
            if (this.computeLocalFromGlobal(),
            this.children && this.children.length)
                for (var t = 0, e = this.children; t < e.length; t++) {
                    e[t].onReferenceSystemChangedEvent()
                }
        }
        ,
        e.prototype.getGlobalZMin = function() {
            return void 0 !== this.globalzMin ? this.globalzMin : this.GeoTransformationService.toGlobalHeight(this.zMin)
        }
        ,
        e.prototype.getGlobalZMax = function() {
            return void 0 !== this.globalzMax ? this.globalzMax : this.GeoTransformationService.toGlobalHeight(this.zMax)
        }
        ,
        e.prototype.getEntityOfType = function(t) {
            return t === this.type ? this : this.parent ? this.parent.getEntityOfType(t) : void 0
        }
        ,
        e.prototype.getChildrenOfType = function(t, e) {
            e || (e = []);
            for (var n = 0, i = this.children; n < i.length; n++) {
                var r = i[n];
                t === r.type ? e.push(r) : r.getChildrenOfType(t, e)
            }
            return e
        }
        ,
        e.prototype.getAllChildren = function() {
            for (var t = [], e = 0, n = this.children; e < n.length; e++) {
                var i = n[e];
                t.push(i),
                t.push.apply(t, i.getAllChildren())
            }
            return t
        }
        ,
        e.prototype.getTypeDisplayName = function() {
            return this.SiteModelTypeService.getTypeAttributes(this.type).displayName
        }
        ,
        e.prototype.getTypeIsChangeable = function() {
            return this.SiteModelTypeService.getTypeAttributes(this.type).isChangeable
        }
        ,
        e.prototype.getTypeIcon = function() {
            return this.SiteModelTypeService.getTypeAttributes(this.type).icon
        }
        ,
        e.prototype.getTypeIconWithBg = function() {
            return this.SiteModelTypeService.getTypeAttributes(this.type).iconWithBg
        }
        ,
        e
    }(c.TreeRepositoryObject);
    e.SiteModelEntity = u
}
, function(t, e, n) {
    t.exports = n.p + "c25767434b48e05a84a7384257d53f88.custom.svg"
}
, function(t, e, n) {
    t.exports = n.p + "b4f2d7448828d258f94d1819ef85364f.custom_bg.svg"
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(4)
      , r = n(532)
      , o = n(381)
      , a = function() {
        function t(t, e) {
            if (this.source = t,
            this.target = e,
            !t.geodetic || !e.geodetic)
                throw new o.TransformException("Geodetic transform requires two geodetic reference systems");
            try {
                this.projection = r.proj4(t.proj4def ? t.proj4def : t.name, e.proj4def ? e.proj4def : e.name)
            } catch (t) {
                throw new o.ReferenceSystemNotFoundException('Proj.4 cannot find reference system "' + t + '"')
            }
        }
        return t.prototype.getInverse = function() {
            return new t(this.target,this.source)
        }
        ,
        t.prototype.transform = function(t) {
            return i.Vector2,
            this.projection.forward(t)
        }
        ,
        t.prototype.transformQuaternion = function(t) {
            return t
        }
        ,
        t
    }();
    e.GeodeticTransform = a
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(1669);
    e.proj4Factory = i.default,
    e.proj4Factory.defs("EPSG:31468", "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +units=m +no_defs");
    var r = function() {
        function t(t) {
            this.proj4Transformer = t
        }
        return t.prototype.forward = function(t) {
            var e = this.proj4Transformer.forward(t);
            return t.x = e.x,
            t.y = e.y,
            t
        }
        ,
        t.prototype.inverse = function(t) {
            var e = this.proj4Transformer.inverse(t);
            return t.x = e.x,
            t.y = e.y,
            t
        }
        ,
        t
    }();
    e.Proj4 = r,
    e.proj4 = function(t, n) {
        return new r(e.proj4Factory(t, n))
    }
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__spreadArrays || function() {
        for (var t = 0, e = 0, n = arguments.length; e < n; e++)
            t += arguments[e].length;
        var i = Array(t)
          , r = 0;
        for (e = 0; e < n; e++)
            for (var o = arguments[e], a = 0, s = o.length; a < s; a++,
            r++)
                i[r] = o[a];
        return i
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var r = n(4)
      , o = function() {
        function t(t) {
            this.transforms = t
        }
        return Object.defineProperty(t.prototype, "source", {
            get: function() {
                return this.transforms[0].source
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "target", {
            get: function() {
                return this.transforms[this.transforms.length - 1].target
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.getInverse = function() {
            return new t(i(this.transforms).reverse().map((function(t) {
                return t.getInverse()
            }
            )))
        }
        ,
        t.prototype.transform = function(t) {
            return r.Vector2,
            this.transforms.forEach((function(e) {
                return e.transform(t)
            }
            )),
            t
        }
        ,
        t.prototype.transformQuaternion = function(t) {
            return this.transforms.forEach((function(e) {
                return e.transformQuaternion(t)
            }
            )),
            t
        }
        ,
        t
    }();
    e.TransformChain = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e(e) {
            var n = t.call(this, e) || this;
            return n.repository = e,
            n
        }
        return r(e, t),
        e.prototype.action = function() {
            this.repository.data.forEach((function(t) {
                return t.onReferenceSystemChangedEvent()
            }
            ))
        }
        ,
        e
    }(n(1049).RepositoryAction);
    e.TransformLocationRepositoryAction = o
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return s
    }
    ));
    var i = n(1)
      , r = n(26)
      , o = n(117)
      , a = n(142);
    function s(t, e, n) {
        return function(i) {
            return i.lift(new c(t,e,n))
        }
    }
    var c = function() {
        function t(t, e, n) {
            this.nextOrObserver = t,
            this.error = e,
            this.complete = n
        }
        return t.prototype.call = function(t, e) {
            return e.subscribe(new l(t,this.nextOrObserver,this.error,this.complete))
        }
        ,
        t
    }()
      , l = function(t) {
        function e(e, n, i, r) {
            var s = t.call(this, e) || this;
            return s._tapNext = o.a,
            s._tapError = o.a,
            s._tapComplete = o.a,
            s._tapError = i || o.a,
            s._tapComplete = r || o.a,
            Object(a.a)(n) ? (s._context = s,
            s._tapNext = n) : n && (s._context = n,
            s._tapNext = n.next || o.a,
            s._tapError = n.error || o.a,
            s._tapComplete = n.complete || o.a),
            s
        }
        return i.c(e, t),
        e.prototype._next = function(t) {
            try {
                this._tapNext.call(this._context, t)
            } catch (t) {
                return void this.destination.error(t)
            }
            this.destination.next(t)
        }
        ,
        e.prototype._error = function(t) {
            try {
                this._tapError.call(this._context, t)
            } catch (t) {
                return void this.destination.error(t)
            }
            this.destination.error(t)
        }
        ,
        e.prototype._complete = function() {
            try {
                this._tapComplete.call(this._context)
            } catch (t) {
                return void this.destination.error(t)
            }
            return this.destination.complete()
        }
        ,
        e
    }(r.a)
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return r
    }
    ));
    var i = n(305);
    function r(t, e, n) {
        var r;
        return r = t && "object" == typeof t ? t : {
            bufferSize: t,
            windowTime: e,
            refCount: !1,
            scheduler: n
        },
        function(t) {
            return t.lift(function(t) {
                var e, n, r = t.bufferSize, o = void 0 === r ? Number.POSITIVE_INFINITY : r, a = t.windowTime, s = void 0 === a ? Number.POSITIVE_INFINITY : a, c = t.refCount, l = t.scheduler, u = 0, d = !1, p = !1;
                return function(t) {
                    var r;
                    u++,
                    !e || d ? (d = !1,
                    e = new i.a(o,s,l),
                    r = e.subscribe(this),
                    n = t.subscribe({
                        next: function(t) {
                            e.next(t)
                        },
                        error: function(t) {
                            d = !0,
                            e.error(t)
                        },
                        complete: function() {
                            p = !0,
                            n = void 0,
                            e.complete()
                        }
                    })) : r = e.subscribe(this),
                    this.add((function() {
                        u--,
                        r.unsubscribe(),
                        n && !p && c && 0 === u && (n.unsubscribe(),
                        n = void 0,
                        e = void 0)
                    }
                    ))
                }
            }(r))
        }
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        this.message = "WebGL could not be initialized."
    };
    e.WebGlFailedException = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(7)
      , r = n(1068)
      , o = n(67)
      , a = n(101)
      , s = n(4)
      , c = n(210)
      , l = n(157)
      , u = {
        modifier: "bold",
        face: "Open Sans",
        size: 18,
        color: "rgba(255,255,255,1)",
        strokeWidth: 0,
        strokeColor: "rgba(0,0,0,1)"
    }
      , d = {
        color: void 0,
        blurColor: void 0
    }
      , p = {
        width: 0,
        color: "rgba(255,255,255,1)",
        cornerRadius: 3
    }
      , h = {
        position: new s.Vector2(8,8),
        size: new s.Vector2(32,32),
        onLoad: void 0
    }
      , f = function() {
        function t(t, e, n) {
            this.text = t,
            this.iconPath = e,
            this.resource = n,
            this._padding = {
                top: 0,
                left: 0,
                right: 0,
                bottom: 0
            },
            this.pivot = new s.Vector3(.5,.5,.5),
            this.offset = new s.Vector3(0,0,0),
            this.font = i.clone(u),
            this.background = i.clone(d),
            this.border = i.clone(p),
            this.icon = i.clone(h),
            this.fontSizeFactor = 1.3,
            this.debugMode = !1
        }
        return Object.defineProperty(t.prototype, "padding", {
            get: function() {
                return this._padding
            },
            set: function(t) {
                this._padding = t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t, "initialized", {
            get: function() {
                return void 0 !== t._initialized || (t._initialized = new Promise((function(t) {
                    new r(u.face,{
                        weight: u.modifier
                    }).load().then((function() {
                        t(!0)
                    }
                    )).catch((function() {
                        t(!1)
                    }
                    ))
                }
                ))),
                t._initialized
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.createSpriteObject = function() {
            this.spriteObject && this.removeSpriteObject();
            var e = this.createMaterial()
              , n = this.visibleSize.x / this.canvasSize.x
              , i = this.visibleSize.y / this.canvasSize.y
              , r = t.getPlaneGeometry(n, i);
            return this.spriteObject = new s.Mesh(r,e),
            this.alignPlaneGeometry(this.spriteObject.geometry, this.visibleSize.x, this.visibleSize.y),
            this.spriteObject.name = "sprite",
            this.spriteObject.scale.set(this.visibleSize.x / this.visibleSize.y, 1, 1),
            this.spriteObject
        }
        ,
        t.prototype.updateSpriteObject = function(t) {
            if (this.spriteObject) {
                var e = t.getCamera();
                this.spriteObject.quaternion.copy(e.quaternion);
                var n = this.spriteObject.material.map.image;
                o.setMeshScreenSize(t, this.spriteObject, n.height)
            }
        }
        ,
        t.prototype.updateSpriteTexture = function() {
            l.disposeMeshMaterial(this.spriteObject),
            this.spriteObject.material = this.createMaterial()
        }
        ,
        t.prototype.removeSpriteObject = function() {
            this.spriteObject && this.spriteObject.parent && (this.spriteObject.material.map.dispose(),
            l.disposeMeshMaterial(this.spriteObject),
            this.spriteObject.geometry.dispose(),
            this.spriteObject.parent.remove(this.spriteObject),
            this.spriteObject = void 0)
        }
        ,
        t.prototype.createMaterial = function() {
            var e = this.createCanvas()
              , n = e.getContext("2d");
            n.font = this.font.modifier + " " + String(this.font.size) + "px " + this.font.face;
            var i = n.measureText(this.text)
              , r = i.width > 0 ? this._padding.right : 0
              , a = o.nearestPow2(2 * this.border.width + this._padding.left + i.width + r, "ceiling")
              , c = o.nearestPow2(2 * this.border.width + this._padding.top + this.font.size * this.fontSizeFactor + this._padding.bottom, "ceiling");
            this.canvasSize = new s.Vector2(a,c),
            e.width = a,
            e.height = c,
            e.style.width = "" + a,
            e.style.height = "" + c,
            this.debugMode && (n.fillStyle = "rgba(255,0,0,0.5)",
            n.fillRect(0, 0, e.width, e.height));
            var l = Math.round(2 * this.border.width + this._padding.left + i.width + r)
              , u = Math.round(2 * this.border.width + this._padding.top + this.font.size * this.fontSizeFactor + this._padding.bottom);
            this.visibleSize = new s.Vector2(l,u);
            var d = Math.round(this.border.width)
              , p = Math.round(c - u)
              , h = Math.round(this.border.width + this._padding.left)
              , f = Math.round(c - .5 * u + .5 * this.font.size / this.fontSizeFactor);
            return (this.background.color || this.border.width > 0) && (n.fillStyle = this.background.color,
            n.strokeStyle = this.border.color,
            o.drawRect(n, d, p, l - 2 * this.border.width, u - 2 * this.border.width, this.border.cornerRadius, void 0 !== this.background.color, this.border.width > 0)),
            n.font = this.font.modifier + " " + String(this.font.size) + "px " + this.font.face,
            this.background.blurColor && (n.shadowColor = this.background.blurColor,
            n.shadowBlur = 2,
            n.lineWidth = 1,
            n.strokeStyle = this.background.blurColor,
            n.strokeText(this.text, h, f),
            n.fillText(this.text, h, f),
            n.shadowBlur = 0),
            this.font.strokeWidth > 0 && (n.lineWidth = this.font.strokeWidth,
            n.strokeStyle = this.font.strokeColor,
            n.strokeText(this.text, h, f)),
            n.lineWidth = 1,
            n.fillStyle = this.font.color,
            n.fillText(this.text, h, f),
            this.iconPath && this.loadImage(e, n),
            new s.MeshBasicMaterial({
                map: t.createTexture(e),
                depthTest: !1,
                depthWrite: !1,
                transparent: !0
            })
        }
        ,
        t.prototype.loadImage = function(t, e) {
            var i = this
              , r = new Image
              , o = a.getTextureLoader().crossOrigin;
            o && (r.crossOrigin = o),
            r.onload = function() {
                i.setSpriteIconTextureFromImage(r, t, e),
                i.icon.onLoad && i.icon.onLoad()
            }
            ,
            r.onerror = function() {
                var t = n(1069);
                r.src && !r.src.endsWith(t) && (r.src = c.makeUrlAbsolute(t))
            }
            ,
            r.src = this.iconPath
        }
        ,
        Object.defineProperty(t.prototype, "fontProperties", {
            set: function(t) {
                t.modifier && (this.font.modifier = t.modifier),
                t.size && (this.font.size = t.size),
                t.color && (this.font.color = t.color),
                t.strokeWidth && (this.font.strokeWidth = t.strokeWidth),
                t.strokeColor && (this.font.strokeColor = t.strokeColor)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "backgroundProperties", {
            get: function() {
                return this.background
            },
            set: function(t) {
                t.color && (this.background.color = t.color),
                t.blurColor && (this.background.blurColor = t.blurColor)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "borderProperties", {
            set: function(t) {
                t.width && (this.border.width = t.width),
                t.color && (this.border.color = t.color),
                t.cornerRadius && (this.border.cornerRadius = t.cornerRadius)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "iconProperties", {
            set: function(t) {
                t.position && (this.icon.position = t.position),
                t.size && (this.icon.size = t.size),
                t.onLoad && (this.icon.onLoad = t.onLoad)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "position", {
            set: function(t) {
                this.spriteObject.position.copy(t)
            },
            enumerable: !0,
            configurable: !0
        }),
        t.getPlaneGeometry = function(t, e) {
            for (var n = new s.PlaneGeometry(1,1,1), i = 0; i < n.faces.length / 2; ++i)
                n.faceVertexUvs[0][0] = [new s.Vector2(0,e), new s.Vector2(0,0), new s.Vector2(t,e)],
                n.faceVertexUvs[0][1] = [new s.Vector2(0,0), new s.Vector2(t,0), new s.Vector2(t,e)];
            return n
        }
        ,
        t.createTexture = function(t) {
            var e = new s.Texture(t);
            return e.generateMipmaps = !1,
            e.magFilter = s.LinearFilter,
            e.minFilter = s.LinearFilter,
            e.needsUpdate = !0,
            e
        }
        ,
        t.prototype.alignPlaneGeometry = function(t, e, n) {
            var i = this.offset.clone();
            i.x = i.x / e,
            i.y = i.y / n;
            var r = new s.Vector3(.5,.5,.5).sub(this.pivot);
            r.add(i),
            t.translate(r.x, r.y, r.z)
        }
        ,
        t.prototype.setSpriteIconTextureFromImage = function(e, n, i, r, o) {
            void 0 === r && (r = this.icon.position),
            void 0 === o && (o = this.icon.size),
            this.spriteObject && (i.drawImage(e, r.x, r.y, o.x, o.y),
            this.spriteObject.material.map = t.createTexture(n),
            this.spriteObject.material.needsUpdate = !0)
        }
        ,
        t.prototype.createCanvas = function() {
            return document.createElement("canvas")
        }
        ,
        t
    }();
    e.PlaneSprite = f
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(4)
      , a = n(312)
      , s = function(t) {
        function e(n) {
            var i = t.call(this, {
                depthTest: !1,
                depthWrite: !1,
                transparent: !0,
                side: o.DoubleSide
            }) || this;
            return i.setUniforms = a.createSetUniformsFunc(i),
            i.uniforms.color = {
                value: n.color
            },
            i.uniforms.opacity = {
                value: n.opacity
            },
            i.uniforms.obscuredColor = {
                value: n.obscuredColor
            },
            i.uniforms.obscuredOpacity = {
                value: n.obscuredOpacity
            },
            i.uniforms.map = {
                value: n.map
            },
            i.uniforms.readMap = {
                value: void 0 !== n.map
            },
            i.uniforms.occlusionDistance = {
                value: n.occlusionDistance
            },
            i.uniforms.clipDistance = {
                value: n.clipDistance
            },
            i.uniforms.disableDepthTesting = {
                value: !1
            },
            i.vertexShader = e.vertexShader,
            i.fragmentShader = e.fragmentShader,
            i._map = n.map,
            i.extensions.fragDepth = !0,
            i
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "map", {
            get: function() {
                return this._map
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "disableDepthTesting", {
            get: function() {
                return this.uniforms.disableDepthTesting.value
            },
            set: function(t) {
                this.uniforms.disableDepthTesting.value = t
            },
            enumerable: !0,
            configurable: !0
        }),
        e.vertexShader = n(1073),
        e.fragmentShader = n(1074),
        e
    }(o.ShaderMaterial);
    e.MeasurementMaterial = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(146)
      , a = n(4)
      , s = n(137)
      , c = n(52)
      , l = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.createIcon = function() {
            e.icon || (e.icon = s.MeasurementObject3D.createSpriteIcon(n(1082)))
        }
        ,
        e.prototype.canCreatePlane = function() {
            return this.points.length >= 2
        }
        ,
        e.prototype.createPlane = function() {
            var t = this.points[0].position
              , e = t.clone().add(o.AreaMeasurementObject3D.Z_NORMAL);
            this.plane = (new a.Plane).setFromCoplanarPoints(t, this.points[1].position, e)
        }
        ,
        e.prototype.getIcon = function() {
            return e.icon
        }
        ,
        e.prototype.isInteractionWithPointsAllowed = function(t) {
            return t.name !== c.SplitViewportName.TOP_VIEW
        }
        ,
        e
    }(o.AreaMeasurementObject3D);
    e.VerticalAreaMeasurementObject3D = l
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(146)
      , a = n(4)
      , s = function(t) {
        function e(e, n, i) {
            var r = t.call(this, e instanceof Array ? e.slice(0, 3) : e, n, i) || this;
            return r.completionMechanismNeeded = !1,
            r
        }
        return r(e, t),
        e.prototype.addPoint = function(e, n) {
            t.prototype.addPoint.call(this, e, n),
            3 === this.points.length && (t.prototype.addPoint.call(this, e, n),
            t.prototype.finishCreation.call(this))
        }
        ,
        e.prototype.putPointer = function(e) {
            if (this.numberOfPoints < 2)
                return t.prototype.putPointer.call(this, e);
            this.removeMeshes(this.projectionLine, this.helpLine, this.helpLine2, this.helpLine3, this.filling),
            this.removeTextSprite();
            var n = this.calculateCirclePosition(e)
              , i = this.projectOnRectangleSide(n, this.points[0].position);
            this.addGuideElements(e, n, i)
        }
        ,
        e.prototype.addGuideElements = function(t, e, n) {
            this.addProjectionLine(t, e),
            this.helpLine = this.addLine(this.points[1].position, e),
            this.helpLine2 = this.addLine(e, n),
            this.helpLine3 = this.addLine(n, this.points[0].position),
            this.addFilling(e, n),
            this.addTextSprite(e, n),
            this.addEdgeLabels(4, e, n)
        }
        ,
        e.prototype.dragObject = function(e, n) {
            var i = this.points.findIndex((function(t) {
                return t === e
            }
            ))
              , r = this.points[this.getPointIndex(i - 2)]
              , o = this.points[this.getPointIndex(i - 1)]
              , s = new a.Line3(r.position,o.position)
              , c = this.points[this.getPointIndex(i + 1)]
              , l = new a.Line3(r.position,c.position)
              , u = t.prototype.calculateCirclePosition.call(this, n);
            return e.position.copy(u),
            s.closestPointToPoint(u, !1, o.position),
            l.closestPointToPoint(u, !1, c.position),
            this.recreateAreaWithLinesFromPoints(),
            this.removeMeshes(this.projectionLine),
            this.addProjectionLine(u, n),
            this.addEdgeLabels(),
            !0
        }
        ,
        e.prototype.getPointIndex = function(t) {
            var e = this.points.length;
            return (t + e) % e
        }
        ,
        e.prototype.calculateCirclePosition = function(e) {
            switch (this.numberOfPoints) {
            case 0:
                return t.prototype.calculateCirclePosition.call(this, e);
            case 1:
                var n = e.clone();
                return n.z = this.points[0].position.z,
                n;
            case 2:
                return this.projectOnRectangleSide(e, this.points[1].position);
            case 3:
                return this.projectOnRectangleSide(this.points[2].position, this.points[0].position);
            default:
                throw new Error("No more points are allowed!")
            }
        }
        ,
        e.prototype.projectOnRectangleSide = function(t, e) {
            var n = e.clone().add((new a.Vector3).crossVectors(this.points[1].position.clone().sub(this.points[0].position), this.plane.normal));
            return new a.Line3(e,n).closestPointToPoint(t, !1, new a.Vector3)
        }
        ,
        e
    }(o.AreaMeasurementObject3D);
    e.RectangleMeasurementObject3D = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(4)
      , a = n(541)
      , s = n(137)
      , c = n(146)
      , l = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.createIcon = function() {
            e.icon || (e.icon = s.MeasurementObject3D.createSpriteIcon(n(1085)))
        }
        ,
        e.prototype.putPointer = function(e) {
            if (this.numberOfPoints < 2)
                return t.prototype.putPointer.call(this, e);
            this.removeMeshes(this.projectionLine, this.helpLine, this.helpLine2, this.helpLine3, this.filling),
            this.removeTextSprite();
            var n = this.points[1].position
              , i = this.firstPoint.position
              , r = this.calculateCirclePosition(e);
            this.addGuideElements(e, r, this.finalPoint(n, i, r))
        }
        ,
        e.prototype.calculateCirclePosition = function(e) {
            switch (this.numberOfPoints) {
            case 1:
                return this.secondPoint(e);
            case 2:
                return this.thirdPoint(e);
            default:
                return t.prototype.calculateCirclePosition.call(this, e)
            }
        }
        ,
        e.prototype.secondPoint = function(t) {
            var e = this.firstPoint.position
              , n = t.clone()
              , i = e.clone();
            return n.z = e.z,
            i.z = t.z,
            e.distanceTo(n) > e.distanceTo(i) ? n : i
        }
        ,
        e.prototype.thirdPoint = function(t) {
            var e = this.points[1].position;
            if (this.firstPoint.position.z === e.z)
                return this.projectOnRectangleSide(t, e);
            var n = t.clone();
            return n.z = e.z,
            n
        }
        ,
        e.prototype.finalPoint = function(t, e, n) {
            return t.z === e.z ? this.projectOnRectangleSide(n, e) : new o.Vector3(n.x,n.y,e.z)
        }
        ,
        e.prototype.canCreatePlane = function() {
            var t = this.points[1];
            return this.points.length > 2 || t && this.firstPoint.position.z === t.position.z
        }
        ,
        e.prototype.createPlane = function() {
            if (this.canCreatePlane()) {
                var t = this.points[1].position
                  , e = this.firstPoint.position.z === t.z ? this.points[0].position.clone().add(c.AreaMeasurementObject3D.Z_NORMAL) : this.points[2].position;
                this.plane = (new o.Plane).setFromCoplanarPoints(this.firstPoint.position, t, e)
            }
        }
        ,
        e.prototype.getIcon = function() {
            return e.icon
        }
        ,
        e
    }(a.RectangleMeasurementObject3D);
    e.VerticalRectangleMeasurementObject3D = l
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(217)
      , a = n(137)
      , s = n(4)
      , c = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.getIcon = function() {
            return e.icon
        }
        ,
        e.prototype.createIcon = function() {
            e.icon || (e.icon = a.MeasurementObject3D.createSpriteIcon(n(1090)))
        }
        ,
        e.prototype.calculateCirclePosition = function(t) {
            return new s.Vector3(this.startPoint.x,this.startPoint.y,t.z)
        }
        ,
        e
    }(o.DistanceMeasurementObject3D);
    e.VerticalDistanceMeasurementObject3D = c
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , r = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(230)
      , a = n(1107)
      , s = n(0)
      , c = (n(313),
    n(388))
      , l = n(384)
      , u = n(0)
      , d = n(313)
      , p = function() {
        function t(t) {
            this.LanguageDetectionService = t,
            this.fontMap = new Map,
            this.fontMap.set(c.SupportedFont.JAPANESE, new a.TrueTypeFont("NotoSansCJKjp")),
            this.fontMap.set(c.SupportedFont.CHINESE_TRADITIONAL, new a.TrueTypeFont("NotoSansCJKtc")),
            this.fontMap.set(c.SupportedFont.CHINESE_SIMPLIFIED, new a.TrueTypeFont("NotoSansCJKsc")),
            this.fontMap.set(c.SupportedFont.CYRILLIC, new a.TrueTypeFont("PTSans")),
            this.fontMap.set(c.SupportedFont.DEFAULT, new a.TrueTypeFont("Helvetica"))
        }
        return t.prototype.getTrueTypeFontFromText = function(t) {
            var e = this.LanguageDetectionService.getFontForText(t);
            return this.getTrueTypeFont(e)
        }
        ,
        t.prototype.getTrueTypeFont = function(t) {
            return this.fontMap.get(t)
        }
        ,
        t.prototype.getTrueTypeFontFromUiLanguage = function(t) {
            var e = this.mapUiLanguageToSupportedFont(t);
            return this.getTrueTypeFont(e)
        }
        ,
        t.prototype.loadFontFromUILanguage = function(t) {
            return i(this, void 0, void 0, (function() {
                var e;
                return r(this, (function(n) {
                    return (e = this.mapUiLanguageToSupportedFont(t)) === c.SupportedFont.DEFAULT && this.getTrueTypeFont(c.SupportedFont.DEFAULT),
                    [2, this.loadFont(e)]
                }
                ))
            }
            ))
        }
        ,
        t.prototype.loadFont = function(t) {
            return i(this, void 0, void 0, (function() {
                var e, n, i, o, a;
                return r(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        if ((e = this.fontMap.get(t)).data)
                            return [2, e];
                        switch (t) {
                        case c.SupportedFont.CHINESE_SIMPLIFIED:
                            return [3, 1];
                        case c.SupportedFont.CHINESE_TRADITIONAL:
                            return [3, 3];
                        case c.SupportedFont.JAPANESE:
                            return [3, 5];
                        case c.SupportedFont.CYRILLIC:
                            return [3, 7];
                        case c.SupportedFont.DEFAULT:
                            return [3, 9]
                        }
                        return [3, 10];
                    case 1:
                        return n = e,
                        [4, this.loadChineseSimplifiedFont()];
                    case 2:
                        return n.data = r.sent(),
                        [3, 10];
                    case 3:
                        return i = e,
                        [4, this.loadChineseTraditionalFont()];
                    case 4:
                        return i.data = r.sent(),
                        [3, 10];
                    case 5:
                        return o = e,
                        [4, this.loadJapaneseFont()];
                    case 6:
                        return o.data = r.sent(),
                        [3, 10];
                    case 7:
                        return a = e,
                        [4, this.loadCyrillicFont()];
                    case 8:
                        return a.data = r.sent(),
                        [3, 10];
                    case 9:
                        return [3, 10];
                    case 10:
                        return [2, e]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.mapUiLanguageToSupportedFont = function(t) {
            return l.UiLanguage.CHINESE === t.key ? c.SupportedFont.CHINESE_SIMPLIFIED : l.UiLanguage.CHINESE_TRADITIONAL === t.key ? c.SupportedFont.CHINESE_TRADITIONAL : l.UiLanguage.JAPANESE === t.key ? c.SupportedFont.JAPANESE : c.SupportedFont.DEFAULT
        }
        ,
        t.prototype.loadJapaneseFont = function() {
            return new Promise((function(t, e) {
                o.runWithBaseHref((function() {
                    return n.e(4).then(function() {
                        t(n(1680))
                    }
                    .bind(null, n)).catch(e)
                }
                ))
            }
            ))
        }
        ,
        t.prototype.loadChineseSimplifiedFont = function() {
            return new Promise((function(t, e) {
                o.runWithBaseHref((function() {
                    return n.e(5).then(function() {
                        t(n(1681))
                    }
                    .bind(null, n)).catch(e)
                }
                ))
            }
            ))
        }
        ,
        t.prototype.loadChineseTraditionalFont = function() {
            return new Promise((function(t, e) {
                o.runWithBaseHref((function() {
                    return n.e(6).then(function() {
                        t(n(1682))
                    }
                    .bind(null, n)).catch(e)
                }
                ))
            }
            ))
        }
        ,
        t.prototype.loadCyrillicFont = function() {
            return new Promise((function(t, e) {
                o.runWithBaseHref((function() {
                    return n.e(7).then(function() {
                        t(n(1683))
                    }
                    .bind(null, n)).catch(e)
                }
                ))
            }
            ))
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(u.ɵɵinject(d.LanguageDetectionService))
        }
        ,
        t.ɵprov = u.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.FontLoaderService = p,
    u.ɵsetClassMetadata(p, [{
        type: s.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: d.LanguageDetectionService
        }]
    }
    ), null)
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.toData = function() {
            throw new Error("Method not implemented.")
        }
        ,
        e.prototype.fill = function(e) {
            t.prototype.fill.call(this, e),
            this.matchingTitle = e.matchingTitle,
            this.matchingDescription = e.matchingDescription
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.title = void 0 !== e.title ? e.title : "",
            this.matchingTitle = e.matching_title,
            this.matchingDescription = e.matching_description
        }
        ,
        e
    }(n(102).RepositoryObject);
    e.SearchResultEntity = o
}
, function(t, e, n) {
    "use strict";
    n.r(e),
    n.d(e, "InvisibleRaycaster", (function() {
        return r
    }
    ));
    var i = n(4);
    function r(t, e, n, r) {
        this.ray = new i.Ray(t,e),
        this.near = n || 0,
        this.far = r || 1 / 0,
        this.camera = null,
        this.params = {
            Mesh: {},
            Line: {
                threshold: 1
            },
            LOD: {},
            Points: {
                threshold: 1
            },
            Sprite: {}
        },
        Object.defineProperties(this.params, {
            PointCloud: {
                get: function() {
                    return console.warn("THREE.Raycaster: params.PointCloud has been renamed to params.Points."),
                    this.Points
                }
            }
        })
    }
    function o(t, e) {
        return t.distance - e.distance
    }
    function a(t, e, n, i, r) {
        if ((void 0 !== r && !0 !== r || !1 !== t.visible) && !1 !== t.userData.raycastable && (t.raycast(e, n),
        !0 === i))
            for (var o = t.children, s = 0, c = o.length; s < c; s++)
                a(o[s], e, n, !0, r)
    }
    Object.assign(r.prototype, {
        set: function(t, e) {
            this.ray.set(t, e)
        },
        setFromCamera: function(t, e) {
            e && e.isPerspectiveCamera ? (this.ray.origin.setFromMatrixPosition(e.matrixWorld),
            this.ray.direction.set(t.x, t.y, .5).unproject(e).sub(this.ray.origin).normalize(),
            this.camera = e) : e && e.isOrthographicCamera ? (this.ray.origin.set(t.x, t.y, (e.near + e.far) / (e.near - e.far)).unproject(e),
            this.ray.direction.set(0, 0, -1).transformDirection(e.matrixWorld),
            this.camera = e) : console.error("THREE.InvisibleRaycaster: Unsupported camera type.")
        },
        intersectObject: function(t, e, n, i) {
            void 0 !== n && console.error("optionalTarget is not supported by InvisibleRaycaster");
            var r = [];
            return a(t, this, r, e, i),
            r.sort(o),
            r
        },
        intersectObjects: function(t, e, n, i) {
            void 0 !== n && console.error("optionalTarget is not supported by InvisibleRaycaster");
            var r = [];
            if (!1 === Array.isArray(t))
                return console.warn("THREE.InvisibleRaycaster.intersectObjects: objects is not an Array."),
                r;
            for (var s = 0, c = t.length; s < c; s++)
                a(t[s], this, r, e, i);
            return r.sort(o),
            r
        }
    })
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(1128)
      , r = n(4)
      , o = function() {
        function t(t, e, n) {
            this.TransformService = t,
            this.mapLayer = e,
            this.tileColor = n,
            this.bias = 0,
            this.zIndex = -1,
            this.objectGroup = new r.Object3D,
            this.objectGroupAdded = !1,
            this.baseTile = new i.MapTile(this.mapLayer,this.objectGroup,this.tileColor),
            this.isTileVisibleBox = new r.Box3,
            this.isTileVisibleVec = new r.Vector3
        }
        return Object.defineProperty(t.prototype, "tilePresenceMap", {
            get: function() {},
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "position", {
            get: function() {},
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "quaternion", {
            get: function() {},
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.updateObjectGroup = function() {
            this.position && this.objectGroup.position.copy(this.position),
            this.quaternion && this.objectGroup.quaternion.copy(this.quaternion),
            this.objectGroup.updateMatrixWorld(!0)
        }
        ,
        t.prototype.updateProjection = function() {
            this.transformMapToLocal || (this.transformMapToLocal = this.TransformService.getTransform(this.projection, this.TransformService.crsLocal))
        }
        ,
        t.prototype.clearProjection = function() {
            this.transformMapToLocal = void 0,
            this.projection.name !== this.TransformService.NAVVIS_LOCAL && this.baseTile.remove()
        }
        ,
        t.prototype.update = function(t, e, n) {
            if (this.updateProjection(),
            !this.isTileVisible(new r.Vector3(0,0,0), this.mapSizeM, e))
                return this.removeFromSceneGroup(n),
                !0;
            var i = new r.Vector3(-.5 * this.mapSizeM,0,0);
            i.applyMatrix4(this.objectGroup.matrixWorld),
            i.project(t.getCamera());
            var o = new r.Vector3(.5 * this.mapSizeM,0,0);
            o.applyMatrix4(this.objectGroup.matrixWorld),
            o.project(t.getCamera());
            var a = t.getWidth()
              , s = t.getHeight();
            if (a <= 0 || s <= 0 || isNaN(i.x) || isNaN(o.x))
                return !1;
            i.sub(o),
            i.x *= a / 2,
            i.y *= s / 2;
            var c = this.tileSizePx / i.length()
              , l = Math.ceil(-Math.log(c) / Math.log(2) - this.bias);
            return l = Math.max(l, 0),
            l = Math.min(l, void 0 === this.maxDepth ? 1 / 0 : this.maxDepth),
            this.addToSceneGroup(n),
            this.baseTile.update(this, e, l, this.mapSizeM, 0, 0, "")
        }
        ,
        t.prototype.isTileVisible = function(e, n, i) {
            if (n > t.HALF_WORLD_SIZE)
                return !0;
            var r = .5 * n;
            return this.transformMapToLocal.transform(e),
            this.isTileVisibleBox.makeEmpty(),
            this.isTileVisibleVec.set(e.x - r, e.y - r, e.z).applyMatrix4(this.objectGroup.matrixWorld),
            this.isTileVisibleBox.expandByPoint(this.isTileVisibleVec),
            this.isTileVisibleVec.set(e.x - r, e.y + r, e.z).applyMatrix4(this.objectGroup.matrixWorld),
            this.isTileVisibleBox.expandByPoint(this.isTileVisibleVec),
            this.isTileVisibleVec.set(e.x + r, e.y - r, e.z).applyMatrix4(this.objectGroup.matrixWorld),
            this.isTileVisibleBox.expandByPoint(this.isTileVisibleVec),
            this.isTileVisibleVec.set(e.x + r, e.y + r, e.z).applyMatrix4(this.objectGroup.matrixWorld),
            this.isTileVisibleBox.expandByPoint(this.isTileVisibleVec),
            i.intersectsBox(this.isTileVisibleBox)
        }
        ,
        t.prototype.addToSceneGroup = function(t) {
            this.objectGroupAdded || (t.add(this.objectGroup),
            this.objectGroupAdded = !0)
        }
        ,
        t.prototype.removeFromSceneGroup = function(t) {
            this.baseTile.remove(),
            this.objectGroupAdded && (t.remove(this.objectGroup),
            this.objectGroupAdded = !1)
        }
        ,
        t.HALF_WORLD_SIZE = 21e6,
        t
    }();
    e.TiledMapBase = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(96)
      , a = n(252)
      , s = n(102);
    !function(t) {
        t.TILED_PYRAMID = "TILED_PYRAMID"
    }(e.TiledMapType || (e.TiledMapType = {}));
    var c = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.resolveInjectables = function() {
            this.GeoTransformationService = this.injectables.GeoTransformationService
        }
        ,
        e.prototype.copy = function(e) {
            return t.prototype.fill.call(this, e),
            this.globalLocation = e.globalLocation ? e.globalLocation.clone() : void 0,
            this.location = e.location ? e.location.clone() : void 0,
            this.orientation = e.orientation ? e.orientation.clone() : void 0,
            this.filePath = e.filePath,
            this.fileName = e.fileName,
            this.type = e.type,
            this.mapSizeM = e.mapSizeM,
            this.tileSizePx = e.tileSizePx,
            this.maxDepth = e.maxDepth,
            this.quadtree = e.quadtree,
            this.floor = e.floor,
            this.floorId = e.floorId,
            this.bundle = e.bundle,
            this.bundleId = e.bundleId,
            this
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.globalLocation = o.VectorFactory.fromArray3(e.location),
            this.orientation = a.QuaternionFactory.fromArray(e.orientation),
            this.filePath = ossPrefix+sceneNum+'/'+e.file_path,
            this.fileName = e.file_name,
            this.type = e.type,
            this.mapSizeM = e.map_size_m,
            this.tileSizePx = e.tile_size_px,
            this.maxDepth = e.max_depth,
            this.quadtree = e.quadtree,
            this.floorId = e.floor_id,
            this.bundleId = e.bundle_id,
            this.computeLocalCoordinates()
        }
        ,
        e.prototype.toData = function() {
            var t = {};
            return this.fillDto(t),
            t.location = o.VectorFactory.toArray(this.globalLocation),
            t.orientation = a.QuaternionFactory.toArray(this.orientation),
            t.file_path = this.filePath,
            t.file_name = this.fileName,
            t.type = this.type,
            t.map_size_m = this.mapSizeM,
            t.tile_size_px = this.tileSizePx,
            t.max_depth = this.maxDepth,
            t.quadtree = this.quadtree,
            t.floor_id = this.floor ? this.floor.id : void 0,
            t.bundle_id = this.bundle.id ? this.bundle.id : void 0,
            t
        }
        ,
        e.prototype.onReferenceSystemChangedEvent = function() {
            this.computeLocalCoordinates()
        }
        ,
        e.prototype.computeLocalCoordinates = function() {
            this.location = this.GeoTransformationService.vectorToLocal(this.globalLocation)
        }
        ,
        e
    }(s.RepositoryObject);
    e.TiledMapEntity = c
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.ID = "ID",
        t.IMPORTANCE = "IMPORTANCE",
        t.FILE_ID = "FILE_ID"
    }(e.SortableField || (e.SortableField = {})),
    function(t) {
        t.ASCENDING = "ASC",
        t.DESCENDING = "DESC"
    }(e.SortOrder || (e.SortOrder = {}))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    ), o = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
    , a = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    , s = this && this.__spreadArrays || function() {
        for (var t = 0, e = 0, n = arguments.length; e < n; e++)
            t += arguments[e].length;
        var i = Array(t)
          , r = 0;
        for (e = 0; e < n; e++)
            for (var o = arguments[e], a = 0, s = o.length; a < s; a++,
            r++)
                i[r] = o[a];
        return i
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var c = n(397)
      , l = n(398)
      , u = n(40)
      , d = n(212)
      , p = n(639)
      , h = n(264)
      , f = n(399)
      , m = n(200)
      , g = n(25)
      , v = n(4)
      , y = n(24)
      , b = n(230)
      , w = n(52);
    n(320);
    var S = n(255)
      , x = n(8)
      , M = n(105)
      , E = n(68)
      , C = n(16)
      , A = n(261)
      , T = n(560)
      , O = n(233)
      , _ = n(7)
      , P = n(218)
      , I = n(124)
      , k = n(349)
      , D = n(642)
      , R = n(20)
      , L = n(67)
      , N = function(t) {
        function e(e, n, i, r, o, a, s, c, l, d, p, h, f, m, g, v, y, b, w, M, E, A, O, _, P, I, k, D, R, L, N, j, V, F, U, B, z, G, H, W, q) {
            var X = t.call(this, e) || this;
            return X.ViewService = n,
            X.AlignmentHelpersFactory = i,
            X.IvCameraImageLayerFactory = r,
            X.VolumeClippingLayerFactory = o,
            X.MeasurementsLayerFactory = a,
            X.MagnificationLayerFactory = s,
            X.CursorLayerFactory = c,
            X.ImageService = l,
            X.IV = d,
            X.LocationMarkerLayerFactory = p,
            X.NavGraphLayerFactory = h,
            X.PolygonLayerFactory = f,
            X.PoiLayerFactory = m,
            X.PoiService = g,
            X.RaycastService = v,
            X.RouteLayerFactory = y,
            X.UrlService = b,
            X.ViewMenuService = w,
            X.ConfigService = M,
            X.PointCloudMenuService = E,
            X.MapLayerFactory = A,
            X.SiteModelLayerFactory = O,
            X.hotkeys = _,
            X.gettext = P,
            X.FloorChangerService = I,
            X.CameraFOVLayerFactory = k,
            X.ErrorService = D,
            X.ModeService = R,
            X.CursorService = L,
            X.ProgressReportService = N,
            X.SiteModelRepository = j,
            X.SystemJsNgModuleLoader = V,
            X.DownloadPointCloudService = F,
            X.TrackingService = U,
            X.TiledMapRepository = B,
            X.gettextCatalog = z,
            X.UserService = G,
            X.DatasetRepository = H,
            X.SiteModelService = W,
            X.injector = q,
            X.viewModeChanged = new C.Signal,
            X.viewportDimensionsChanged = new C.Signal,
            X.mapBoundingBoxPoints = void 0,
            X.shortcutsBound = !1,
            X.switchViewModeInProgress = !1,
            X.boundHotkeys = [],
            X.stateBeforeScreenshot = void 0,
            M.initialized.then((function() {
                return X.init()
            }
            )).catch((function() {}
            )),
            window.addEventListener("resize", (function() {
                return X.windowResize()
            }
            ), !1),
            X.scene.name = "MainScene",
            window.scene = X.scene,
            X.createPerspectiveView(),
            X.setCameraControlsOnDefault(T.CameraControlsMode.FIRST_PERSON),
            E.configShowPointCloudChanged.connect((function() {
                X.updateKeyboardShortcuts(),
                X.loadPointCloudModule().catch(x.handleWarning)
            }
            )),
            X.ModeService.modeChanged.connect((function() {
                return X.updateKeyboardShortcuts()
            }
            )),
            X.ViewMenuService.onShowMeshesChanged.connect((function(t) {
                t && X.loadMeshModule().catch(x.handleWarning)
            }
            )),
            X.errorHandler = X.ErrorService.newWrapper().report().network().generic(X.gettext("An error occurred when retrieving the cursor location to create the temporary POI.")).build(),
            n.onViewSwap.connect((function(t) {
                X.active = !u.isMobileLayout() || t === S.ViewType.PANORAMA,
                t === S.ViewType.MAP ? X.closeContextMenu() : u.isMobileLayout() || E.isCloudVisible() || d.moveToImage(X.currentImage).catch(x.handleWarning)
            }
            )),
            n.secondaryViewVisibilityChanged.connect((function() {
                X.active = n.isPanoVisible()
            }
            )),
            n.onTransitionStart.connect((function(t) {
                return X.transitionStart(t)
            }
            )),
            n.onTransitionEnd.connect((function(t) {
                return X.transitionEnd(t)
            }
            )),
            X
        }
        return r(e, t),
        e.prototype.onViewModeChange = function(t) {
            this.updateKeyboardShortcuts(),
            this.adaptPointCloudVisibilityForDownloadPointCloudMode(t)
        }
        ,
        e.prototype.adaptPointCloudVisibilityForDownloadPointCloudMode = function(t) {
            this.ModeService.isDownloadPointCloudMode() && (t === M.SceneViewMode.Perspective && (this.PointCloudMenuService.showPointClouds(!0),
            this.ViewMenuService.showPanoramas(!1)),
            t === M.SceneViewMode.Map && this.showPointCloudWhenSomeFloorsDoNotHaveMaps())
        }
        ,
        e.prototype.showPointCloudWhenSomeFloorsDoNotHaveMaps = function() {
            var t = this;
            this.checkAllDatasetFloorsHaveMaps().then((function(e) {
                return t.PointCloudMenuService.showPointClouds(!e)
            }
            )).catch(x.handleWarning)
        }
        ,
        Object.defineProperty(e.prototype, "viewMode", {
            get: function() {
                return this._viewMode
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.switchViewMode = function(t, e, n) {
            return void 0 === e && (e = !0),
            void 0 === n && (n = this.getCamera().position),
            o(this, void 0, void 0, (function() {
                var i;
                return a(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        if (this.switchViewModeInProgress)
                            return [2];
                        this.switchViewModeInProgress = !0,
                        this.unsetFullscreenViewport(),
                        i = this.ProgressReportService.addTask("", 1, !0, !0, !1, !0, 100),
                        r.label = 1;
                    case 1:
                        switch (r.trys.push([1, , 7, 8]),
                        t) {
                        case M.SceneViewMode.Map:
                            return [3, 2];
                        case M.SceneViewMode.Perspective:
                            return [3, 3]
                        }
                        return [3, 3];
                    case 2:
                        return this.getMapLayer().targetViewport.cameraController.centerOn(n),
                        this.setViewportFullscreen(this.getMapLayer().targetViewport, !0),
                        this.switchViewModeInProgress = !1,
                        [3, 6];
                    case 3:
                        return e ? [4, this.move3dCameraTo2dCameraLocation()] : [3, 5];
                    case 4:
                        r.sent(),
                        r.label = 5;
                    case 5:
                        this.setViewportFullscreen(this.getDefaultViewport(), !0),
                        r.label = 6;
                    case 6:
                        return [3, 8];
                    case 7:
                        return i.itemDone(),
                        this.switchViewModeInProgress = !1,
                        [7];
                    case 8:
                        return this.setViewMode(t),
                        [2]
                    }
                }
                ))
            }
            ))
        }
        ,
        e.prototype.setViewMode = function(t) {
            this._viewMode = t,
            this.onViewModeChange(t),
            this.viewModeChanged.emit(t)
        }
        ,
        e.prototype.onContextMenu = function() {
            var t = this;
            if (this.ModeService.currentMode === y.ModeState.NORMAL && this.UserService.canCropAndDownloadPointCloud())
                return {
                    name: this.gettextCatalog.getString("Crop and Download Point Cloud", void 0, "title"),
                    icon: "fa-download",
                    callback: function() {
                        t.TrackingService.trackPointCloudDownloadEntered(P.MenuType.MainViewContext),
                        t.DownloadPointCloudService.enterDownloadPointCloudMode(t.getCurrentCursorPosition() ? t.getCurrentCursorPosition().location : t.getCamera().position)
                    }
                }
        }
        ,
        e.prototype.move3dCameraTo2dCameraLocation = function() {
            return o(this, void 0, void 0, (function() {
                var t, e, n, i, r, o = this;
                return a(this, (function(a) {
                    switch (a.label) {
                    case 0:
                        return (t = this.getMapLayer().targetViewport) ? (e = t.cameraController.camera.position,
                        this.PointCloudMenuService.config.showPointCloud && this.FloorChangerService.currentFloors.length > 0 ? (n = this.currentImage ? this.currentImage.location.z - this.currentImage.floorLocation.z : E.DEFAULT_CAMERA_HEIGHT,
                        i = this.FloorChangerService.currentFloors[0].zMin,
                        r = new v.Vector3(e.x,e.y,i + n),
                        [4, this.SiteModelRepository.findWithin(r)]) : [3, 2]) : [2];
                    case 1:
                        if (a.sent().length > 0)
                            return this.IV.moveToGeoLocation(r, !0, void 0, void 0, void 0, void 0, !0).catch(x.handleWarning),
                            [2];
                        a.label = 2;
                    case 2:
                        return this.ImageService.getClosestImage(e, void 0, this.FloorChangerService.currentFloors).then((function(t) {
                            return o.IV.moveToImage(t)
                        }
                        )).catch(x.handleWarning),
                        [2]
                    }
                }
                ))
            }
            ))
        }
        ,
        e.prototype.updateOrientation = function(t) {
            this.currViewingDir.lon = t.lon,
            this.currViewingDir.lat = t.lat,
            this.invalidateScene(),
            this.ViewService.mapView.invalidateScene()
        }
        ,
        Object.defineProperty(e.prototype, "currViewingDir", {
            get: function() {
                if (!(this.cameraController instanceof A.OrbitCameraController))
                    return this.cameraController.orientation
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.getViewDir = function() {
            return this.currViewingDir
        }
        ,
        e.prototype.updatefov = function(t) {
            console.warn('Deprecated usage of "updatefov", use "updateFov" instead.'),
            this.updateFov(t)
        }
        ,
        e.prototype.updateFov = function(t) {
            this.cameraController.fov = t,
            this.invalidateScene(),
            this.ViewService.mapView.invalidateScene()
        }
        ,
        e.prototype.getfov = function() {
            return console.warn('Deprecated usage of "getfov", use "getFov" instead.'),
            this.getFov()
        }
        ,
        e.prototype.getFov = function() {
            return this.cameraController.fov
        }
        ,
        e.prototype.centerOn = function(e, n) {
            var i = this;
            t.prototype.centerOn.call(this, e, n),
            this.PointCloudMenuService.config.showPanosInPerspective && this.ImageService.getClosestImage(this.getDefaultViewport().cameraController.camera.position).then((function(t) {
                return i.IV.moveToImage(t, void 0)
            }
            )).catch((function() {}
            ))
        }
        ,
        e.prototype.getCurrentCursorPosition = function() {
            return this.CursorService.getCursorData()
        }
        ,
        e.prototype.setCurrentCursorPositionForScreenPosition = function(t) {
            return this.getCursorLayer().pickNextPointForScreenCoordinate(t)
        }
        ,
        e.prototype.getLocationMarkerLayer = function() {
            return this.layerLocationMarker
        }
        ,
        e.prototype.getPoiLayer = function() {
            return this.layerPoi
        }
        ,
        e.prototype.getCameraImageLayer = function() {
            return this.layerCameraImage
        }
        ,
        e.prototype.getPointCloudLayer = function() {
            return this.layerPointCloud
        }
        ,
        e.prototype.getPointCloudV2Layer = function() {
            return this.layerPointCloudV2
        }
        ,
        e.prototype.getRouteLayer = function() {
            return this.layerRoute
        }
        ,
        e.prototype.getNavGraphLayer = function() {
            return this.layerNavGraph
        }
        ,
        e.prototype.getMeasurementsLayer = function() {
            return this.layerMeasurements
        }
        ,
        e.prototype.getCursorLayer = function() {
            return this.layerCursor
        }
        ,
        e.prototype.getAlignmentHelpersLayer = function() {
            return this.layerAlignmentHelpers
        }
        ,
        e.prototype.getMapLayer = function() {
            return this.layerMap
        }
        ,
        e.prototype.getVectorMapLayer = function() {
            return this.layerPolygon
        }
        ,
        e.prototype.getVolumeClippingLayer = function() {
            return this.layerVolumeClipping
        }
        ,
        e.prototype.getCameraFOVLayer = function() {
            return this.layerCameraFOV
        }
        ,
        e.prototype.onBeforeRender = function() {
            var t = this.PointCloudMenuService.isCloudVisible()
              , e = !!this.layerMesh && this.layerMesh.visible;
            this.cameraController.keyboardInput = t || e,
            this.cameraController instanceof p.FirstPersonCameraController && (this.cameraController.translationZoom = t || e,
            this.cameraController.allowTranslation = t || e)
        }
        ,
        e.prototype.onDragViewStart = function(e) {
            var n = t.prototype.onDragViewStart.call(this, e);
            return n && this.ViewService.isMapPrimaryView() && (this.ViewService.secondaryViewHovered = !0),
            n
        }
        ,
        e.prototype.onDragView = function(e, n, i) {
            t.prototype.onDragView.call(this, e, n, i),
            this.getViewport(i.x, i.y).camera instanceof v.PerspectiveCamera && this.ViewService.mapView.invalidateScene()
        }
        ,
        e.prototype.onDragViewEnd = function(e) {
            return this.ViewService.isMapPrimaryView() && (this.ViewService.secondaryViewHovered = !1),
            t.prototype.onDragViewEnd.call(this, e)
        }
        ,
        e.prototype.onSustainedDragViewEnd = function() {
            this.UrlService.updateUrl(void 0, !0)
        }
        ,
        e.prototype.onZoomView = function(e, n, i) {
            var r = this;
            t.prototype.onZoomView.call(this, e, n, i),
            this.getViewport(e.x, e.y).camera instanceof v.PerspectiveCamera && (window.clearTimeout(this.zoomViewTimer),
            this.zoomViewTimer = window.setTimeout((function() {
                return r.UrlService.updateUrl()
            }
            ), 1e3),
            this.ViewService.mapView.invalidateScene())
        }
        ,
        e.prototype.onCameraMoveEnd = function() {
            return o(this, void 0, void 0, (function() {
                var t;
                return a(this, (function(e) {
                    return this.isInScreenshotMode() ? [2] : (t = this.getCamera().position,
                    this.currentImage && this.currentImage.isAtPosition(t) || this.UrlService.updateUrl(),
                    this.areOrbitCameraControlsUsed() ? [2] : this.ViewService.isPanoPrimaryView() ? [2, this.FloorChangerService.updateFloors(!1)] : [2, this.FloorChangerService.changeFloorByMainViewPosition()])
                }
                ))
            }
            ))
        }
        ,
        e.prototype.onDoubleClick = function(t) {
            var e, n = this;
            if (!this.IV.isMoving() && (!this.ModeService.isNavGraphEditorMode() && !this.ModeService.isDownloadPointCloudMode() || this.viewMode !== M.SceneViewMode.Map)) {
                var i = w.SplitViewportName.TOP_VIEW === (null === (e = this.getViewport(t.x, t.y)) || void 0 === e ? void 0 : e.info.name);
                this.getTargetPosition(i, t).then((function(t) {
                    return n.moveViewports.apply(n, s([i], t))
                }
                )).catch((function() {
                    n.moveTowardsEvent(t)
                }
                ))
            }
        }
        ,
        e.prototype.getTargetPosition = function(t, e) {
            return o(this, void 0, void 0, (function() {
                var n;
                return a(this, (function(i) {
                    switch (i.label) {
                    case 0:
                        return t ? [2, [this.getPositionOnGroundPlane(e.x, e.y, this.floorHeight, this.getViewportByName(w.SplitViewportName.TOP_VIEW)), void 0]] : [4, this.RaycastService.getCoordinates(this, this.unprojectScreenCoordinates(e.x, e.y), !0)];
                    case 1:
                        return [2, [(n = i.sent()).position, n]]
                    }
                }
                ))
            }
            ))
        }
        ,
        e.prototype.moveViewports = function(t, n, i) {
            return o(this, void 0, void 0, (function() {
                var r;
                return a(this, (function(o) {
                    switch (o.label) {
                    case 0:
                        return i && !i.dataset.hasImages && this.PointCloudMenuService.isCloudVisible() ? [2, this.IV.moveToGeoLocation(n, !0, this.getViewDir(), void 0, void 0, i.normal, !0, void 0)] : t ? [3, 2] : [4, this.ImageService.getClosestImageOnFloor(n)];
                    case 1:
                        return r = o.sent(),
                        [3, 4];
                    case 2:
                        return [4, this.ImageService.getClosestImage(new v.Vector2(n.x,n.y), e.IMAGE_SEARCH_RADIUS, s(this.FloorChangerService.currentFloors, [void 0]))];
                    case 3:
                        r = o.sent(),
                        o.label = 4;
                    case 4:
                        return [2, this.IV.moveToImage(r, this.getViewDir())]
                    }
                }
                ))
            }
            ))
        }
        ,
        e.prototype.transitionStart = function(e) {
            var n = this.getViewportByName(w.SplitViewportName.TOP_VIEW);
            if (n && n.active) {
                var i = e.image ? e.image.location : e.location;
                if (this.mapBoundingBoxPoints) {
                    var r = [];
                    this.mapBoundingBoxPoints.forEach((function(t) {
                        return r.push(t, new v.Line3(t,i).at(2, new v.Vector3))
                    }
                    )),
                    this.mapBoundingBoxPoints = void 0;
                    var o = L.calcCamParamsToFitBoxIntoScreen((new v.Box3).setFromPoints(r), n.screenWidth, n.screenHeight);
                    this.tweenViewZoom(n.cameraController, o.resolution, void 0, {
                        duration: e.duration
                    })
                }
                this.tweenViewPosition(n.cameraController, i, {
                    duration: e.duration
                })
            }
            t.prototype.transitionStart.call(this, e)
        }
        ,
        e.prototype.onHold = function(t) {
            return !!this.ModeService.isNormalMode() && (this.createCustomPoiOnPosition(t),
            !0)
        }
        ,
        e.prototype.onKeyDown = function(t) {
            return this.invalidateScene(),
            !1
        }
        ,
        e.prototype.onKeyUp = function(t) {
            return this.invalidateScene(),
            t.keyCode !== d.KeyEvent.DOM_VK_LEFT && t.keyCode !== d.KeyEvent.DOM_VK_RIGHT || this.UrlService.updateUrl(void 0, !0),
            !1
        }
        ,
        e.prototype.onKeyboardInputApplied = function() {
            this.ViewService.mapView.invalidateScene()
        }
        ,
        e.prototype.init = function() {
            var t = this;
            this.ViewMenuService.onShowPanoramasChanged.connect((function(e, n) {
                return t.onShowPanoramasChanged(e, n)
            }
            )),
            this.FloorChangerService.onFloorChange.connect((function(e) {
                return t.onFloorChangedEvent(e)
            }
            )),
            this.ViewService.onTransitionEnd.connect((function(e) {
                return t.onTransitionEndEvent(e)
            }
            )),
            this.ConfigService.updated.connect((function() {
                return t.layerPoi.setPoiVisibilityCheck(t.ConfigService.getBoolean(g.Configs.POI_VISIBILITYCHECK_ENABLED, !0))
            }
            )),
            this.layerLocationMarker = this.LocationMarkerLayerFactory.create(this, this.overlayScene, {
                isMoveMouseToShowEnabled: function() {
                    return !1
                },
                isVisibilityToggleEnabled: u.isMobileBrowser,
                locationMarkerPng: n(561),
                locationMarkerHighlightPng: n(1192)
            }),
            this.layerPoi = this.PoiLayerFactory.create(this, this.overlayScene, {
                poiVisibilityCheck: this.ConfigService.getBoolean(g.Configs.POI_VISIBILITYCHECK_ENABLED, !0),
                doubleTapInterval: k.InputHandler.DOUBLE_CLICK_INTERVAL,
                poiNames: function() {
                    return t.ConfigService.getBoolean(g.Configs.POI_NAMES_PANORAMAS, !1)
                },
                showCustomRoutePoints: function() {
                    return t.PoiService.isRoutePickingPhase() || !t.PoiService.wasRouteFound
                }
            }),
            this.layerCameraImage = this.IvCameraImageLayerFactory.create(this, this.underlayScene),
            this.layerRoute = this.RouteLayerFactory.create(this, this.overlayScene, {
                visualization: m.RouteViewType.PANORAMA
            }),
            this.layerNavGraph = this.NavGraphLayerFactory.create(this, this.scene),
            this.layerCursor = this.CursorLayerFactory.create(this, this.overlayScene),
            this.layerAlignmentHelpers = this.AlignmentHelpersFactory.create(this, this.overlayScene),
            this.layerMap = this.MapLayerFactory.create(this, this.underlayScene, {
                visible: !1,
                tileColor: new v.Color(8355711)
            }),
            this.layerSiteModelPolygon = this.SiteModelLayerFactory.create(this, this.underlayScene),
            this.layerPolygon = this.PolygonLayerFactory.create(this, this.underlayScene, {
                loadEntities: !1,
                manualVisibility: !0
            }),
            this.layerCameraFOV = this.CameraFOVLayerFactory.create(this, this.overlayScene),
            this.layerMagnification = this.MagnificationLayerFactory.create(this, this.overlayScene),
            this.layerMeasurements = this.MeasurementsLayerFactory.create(this, this.overlayScene, {
                visible: !1
            }),
            this.addToScene(this.layerLocationMarker),
            this.addToScene(this.layerPoi),
            this.addToScene(this.layerCameraImage),
            this.addToScene(this.layerRoute),
            this.addToScene(this.layerNavGraph),
            this.addToScene(this.layerAlignmentHelpers),
            this.addToScene(this.layerMap),
            this.addToScene(this.layerSiteModelPolygon),
            this.addToScene(this.layerPolygon),
            this.addToScene(this.layerCameraFOV),
            this.addToScene(this.layerMeasurements),
            this.addToScene(this.layerCursor),
            this.addToScene(this.layerMagnification),
            this.enableKeyboardShortcuts(!0)
        }
        ,
        e.prototype.updateKeyboardShortcuts = function() {
            this.enableKeyboardShortcuts(!1),
            this.enableKeyboardShortcuts(!0)
        }
        ,
        e.prototype.enableKeyboardShortcuts = function(t) {
            t !== this.shortcutsBound && (this.inputHandler.ignoreKeyboardEvents = !t,
            this.shortcutsBound = t,
            t ? this.bindHotkeys() : this.unbindHotkeys())
        }
        ,
        e.prototype.bindHotkeys = function() {
            var t = this;
            this.hotkeys.unpause(),
            (this.ModeService.isNavGraphEditorMode() || this.ModeService.isDownloadPointCloudMode()) && this.viewMode === M.SceneViewMode.Map || (this.areOrbitCameraControlsUsed() || (this.bindHotkey({
                combo: "up",
                description: this.gettext("Move forward"),
                action: "keydown",
                callback: function() {
                    return t.moveStraight(1)
                }
            }),
            this.bindHotkey({
                combo: "down",
                description: this.gettext("Move backward"),
                action: "keydown",
                callback: function() {
                    return t.moveStraight(-1)
                }
            })),
            this.bindHotkey({
                combo: "left",
                description: this.gettext("Rotate left"),
                action: "keydown",
                callback: function() {
                    return t.cameraController.drag(20, 0)
                }
            }),
            this.bindHotkey({
                combo: "right",
                description: this.gettext("Rotate right"),
                action: "keydown",
                callback: function() {
                    return t.cameraController.drag(-20, 0)
                }
            })),
            this.viewMode === M.SceneViewMode.Map ? (this.bindHotkey({
                combo: ["A", "a"],
                description: this.gettext("Pan left"),
                callback: function() {}
            }),
            this.bindHotkey({
                combo: ["D", "d"],
                description: this.gettext("Pan right"),
                callback: function() {}
            }),
            this.bindHotkey({
                combo: ["W", "w"],
                description: this.gettext("Pan up"),
                callback: function() {}
            }),
            this.bindHotkey({
                combo: ["S", "s"],
                description: this.gettext("Pan down"),
                callback: function() {}
            }),
            this.bindHotkey({
                combo: "shift+*",
                description: this.gettext("Fast panning"),
                callback: function() {}
            })) : this.PointCloudMenuService.isCloudVisible() && !this.areOrbitCameraControlsUsed() && (this.bindHotkey({
                combo: ["A", "a"],
                description: this.gettext("Free flight left"),
                callback: function() {}
            }),
            this.bindHotkey({
                combo: ["D", "d"],
                description: this.gettext("Free flight right"),
                callback: function() {}
            }),
            this.bindHotkey({
                combo: ["W", "w"],
                description: this.gettext("Free flight forward"),
                callback: function() {}
            }),
            this.bindHotkey({
                combo: ["S", "s"],
                description: this.gettext("Free flight backward"),
                callback: function() {}
            }),
            this.bindHotkey({
                combo: ["Q", "q"],
                description: this.gettext("Free flight up"),
                callback: function() {}
            }),
            this.bindHotkey({
                combo: ["E", "e"],
                description: this.gettext("Free flight down"),
                callback: function() {}
            }),
            this.bindHotkey({
                combo: "shift+*",
                description: this.gettext("Fast free flight"),
                callback: function() {}
            }))
        }
        ,
        e.prototype.unbindHotkeys = function() {
            this.hotkeys.del(this.boundHotkeys),
            this.boundHotkeys.length = 0,
            this.hotkeys.pause()
        }
        ,
        e.prototype.bindHotkey = function(t) {
            var e;
            this.hotkeys.add(t),
            t.combo instanceof Array ? (e = this.boundHotkeys).push.apply(e, t.combo) : this.boundHotkeys.push(t.combo)
        }
        ,
        e.prototype.moveStraight = function(t) {
            var n = this;
            !this.IV.isMoving() && this.currentImage && this.ImageService.getClosestImageInDir(this.currentImage, this.currViewingDir, t, e.MOVE_FORWARD_DISTANCE).then((function(t) {
                return n.IV.moveToImage(t, void 0)
            }
            )).catch((function() {}
            ))
        }
        ,
        e.prototype.moveTowardsEvent = function(t) {
            var n = this
              , i = this.unprojectScreenCoordinates(t.x, t.y).sub(this.getCamera().position);
            i.z = 0,
            i.normalize(),
            i.multiplyScalar(e.RAYCAST_FAIL_ASSUMED_DISTANCE),
            i.add(this.getCamera().position),
            this.ImageService.getClosestImageOnFloor(i).then((function(t) {
                return n.IV.moveToImage(t, void 0)
            }
            )).catch((function() {}
            ))
        }
        ,
        e.prototype.windowResize = function() {
            this.PoiService.recalculateTextEditorSize()
        }
        ,
        e.prototype.onTransitionEndEvent = function(t) {
            t.image && (this.floorHeight = t.image.floorLocation.z),
            this.FloorChangerService.updateFloors(this.ViewService.isMapPrimaryView() || this.viewMode === M.SceneViewMode.Map).catch((function() {}
            ))
        }
        ,
        e.prototype.onShowPanoramasChanged = function(t, e) {
            var n = this;
            if (!e && t) {
                var i = this.getCamera().position;
                this.ImageService.getClosestImage(i, void 0, s(this.FloorChangerService.currentFloors, [void 0])).then((function(t) {
                    return n.IV.moveToImage(t)
                }
                )).catch(x.handleWarning)
            }
        }
        ,
        e.prototype.onFloorChangedEvent = function(t) {
            var e = this;
            if (t.currentFloors.length > 0 && (this.floorHeight = t.currentFloors[0].zMin),
            t.mayChangeLocation) {
                var n = new v.Vector2(this.getCamera().position.x,this.getCamera().position.y);
                this.ImageService.getClosestImage(n, void 0, t.currentFloors).then((function(t) {
                    return e.IV.moveToImage(t, void 0)
                }
                )).catch((function() {
                    0 !== t.currentFloors.length && e.PointCloudMenuService.isCloudVisible() && e.IV.moveToGeoLocation(t.currentFloors[0].globalCenter, !1, void 0, void 0, void 0, void 0, !0, !1).catch((function() {}
                    ))
                }
                ))
            }
        }
        ,
        e.prototype.createCustomPoiOnPosition = function(t) {
            var e = this
              , n = this.unprojectScreenCoordinates(t.x, t.y);
            this.PoiService.closeAndUnhighlightPoi(),
            this.errorHandler.wrap(this.RaycastService.getCoordinates(this, n, !0).then((function(t) {
                var n = e.PoiService.getLocationAsPoi(t.position);
                e.CursorService.updateCursor(t),
                e.CursorService.copyCursorPose(n),
                e.PoiService.openPoi(n)
            }
            ))).catch((function() {}
            ))
        }
        ,
        e.prototype.createPerspectiveView = function() {
            var t = new l.Viewport(this.divContainer,new f.ViewportInfo("defaultCamera",this.gettext("Perspective camera"),39219));
            t.bgColor = 1644825,
            t.cameraController = this.cameraController,
            this.viewports[0] = t
        }
        ,
        e.prototype.setCameraControlsOnDefault = function(t) {
            var e = this.getDefaultViewport();
            this.createCameraControls(e, t),
            e.cameraController = this.cameraController
        }
        ,
        e.prototype.createCameraControls = function(t, e) {
            e !== T.CameraControlsMode.FIRST_PERSON || this.firstPersonCameraController ? e !== T.CameraControlsMode.ORBIT || this.orbitCameraController || (this.orbitCameraController = new A.OrbitCameraController(t,this.inputHandler),
            t.cameraController = this.orbitCameraController) : (this.firstPersonCameraController = new p.FirstPersonCameraController(t,this.inputHandler,this.RaycastService),
            t.cameraController = this.firstPersonCameraController),
            this.cameraController = e === T.CameraControlsMode.ORBIT ? this.orbitCameraController : this.firstPersonCameraController
        }
        ,
        e.prototype.areOrbitCameraControlsUsed = function() {
            return this.cameraController instanceof A.OrbitCameraController
        }
        ,
        e.prototype.enableSplitScreen = function(t, e) {
            this.setCameraControlsOnDefault(t),
            1 === this.viewports.length && this.createOrthographicViews(),
            this.setSplitViewportDimensions(e),
            e === w.SplitViewportMode.FOUR_VIEWPORTS || e === w.SplitViewportMode.TWO_VIEWPORTS ? this.unsetFullscreenViewport() : this.setViewportFullscreen(this.getDefaultViewport(), !0),
            this.currentViewportMode = e,
            this.invalidateScene()
        }
        ,
        e.prototype.disableSplitScreen = function(t) {
            var e = this;
            this.setCameraControlsOnDefault(t),
            this.viewports.forEach((function(t) {
                return e.setViewportFullscreen(t, !1)
            }
            )),
            this.viewports.length = 1,
            this.viewports[0].setDimensions(0, 0, 1, 1),
            this.viewports[0].active = !0,
            this.currentViewportMode = w.SplitViewportMode.FULLSCREEN,
            this.invalidateScene()
        }
        ,
        e.prototype.createOrthographicViews = function() {
            this.createOrthographicView(new v.Vector3(0,1,0), new v.Vector3(0,0,-1), new f.ViewportInfo(w.SplitViewportName.TOP_VIEW,this.gettext("Top view"),16711680)),
            this.createOrthographicView(new v.Vector3(0,0,1), new v.Vector3(-1,0,0), new f.ViewportInfo(w.SplitViewportName.EAST_WEST_VIEW,this.gettext("Side view (E->W)"),16776960)),
            this.createOrthographicView(new v.Vector3(0,0,1), new v.Vector3(0,-1,0), new f.ViewportInfo(w.SplitViewportName.NORTH_SOUTH_VIEW,this.gettext("Side view (N->S)"),52479))
        }
        ,
        e.prototype.createOrthographicView = function(t, e, n) {
            var i = new l.Viewport(this.divContainer,n)
              , r = new h.PanningCameraController(i,this.inputHandler);
            r.resolution = .11,
            r.dragButtons.add(O.MouseButton.MIDDLE),
            r.keyboardInput = !0,
            i.cameraController = r,
            r.camera.near = 0,
            r.camera.far = 50,
            r.camera.up = t,
            r.camera.lookAt(e),
            this.viewports.push(i)
        }
        ,
        e.prototype.setSplitViewportDimensions = function(t) {
            var e = this.getDefaultViewport()
              , n = this.getViewportByName(w.SplitViewportName.TOP_VIEW)
              , i = this.getViewportByName(w.SplitViewportName.EAST_WEST_VIEW)
              , r = this.getViewportByName(w.SplitViewportName.NORTH_SOUTH_VIEW);
            t === w.SplitViewportMode.TWO_VIEWPORTS ? (e.setDimensions(.5, 0, .5, 1),
            n.setDimensions(0, 0, .5, 1),
            e.active = !0,
            n.active = !0,
            i.active = !1,
            r.active = !1) : t === w.SplitViewportMode.FULLSCREEN ? (e.setDimensions(0, 0, 1, 1),
            this.viewports.forEach((function(t) {
                return t.active = t === e
            }
            ))) : (e.setDimensions(.5, .5, .5, .5),
            n.setDimensions(0, .5, .5, .5),
            i.setDimensions(.5, 0, .5, .5),
            r.setDimensions(0, 0, .5, .5),
            this.viewports.forEach((function(t) {
                return t.active = !0
            }
            ))),
            this.viewportDimensionsChanged.emit()
        }
        ,
        e.prototype.loadPointCloudModule = function() {
            var t = this;
            return this.pointCloudModule ? Promise.resolve() : b.runWithBaseHref((function() {
                return t.SystemJsNgModuleLoader.load("../Modules/PointCloud/PointCloudModule#PointCloudModule").then((function(e) {
                    if (t.pointCloudModule)
                        return Promise.resolve();
                    var n = e.create(t.injector)
                      , i = n.injector.get(n.instance.entry);
                    return t.pointCloudModule = i,
                    t.layerPointCloudV2 = i.createLayer(t, t.scene),
                    t.addToScene(t.layerPointCloudV2),
                    t.createVolumeClippingLayer(),
                    i.createLegacyLayer(t, t.scene).then((function(e) {
                        t.layerPointCloud = e,
                        t.addToScene(t.layerPointCloud)
                    }
                    )).catch((function(t) {
                        "SecurityError" === t.name ? console.log("PointCloudWorker not available") : console.log("PointCloudLegacy failed to load", t)
                    }
                    ))
                }
                ))
            }
            ))
        }
        ,
        e.prototype.loadMeshModule = function() {
            var t = this;
            return this.meshModule ? Promise.resolve() : b.runWithBaseHref((function() {
                return t.SystemJsNgModuleLoader.load("../Modules/MeshModule#MeshModule").then((function(e) {
                    if (!t.meshModule) {
                        var n = e.create(t.injector)
                          , i = n.injector.get(n.instance.entry);
                        t.meshModule = i,
                        t.layerMesh = i.createLayer(t, t.scene),
                        t.addToScene(t.layerMesh),
                        t.ViewMenuService.onShowMeshesChanged.emit(!0)
                    }
                }
                ))
            }
            ))
        }
        ,
        e.prototype.isPointCloudModuleLoaded = function() {
            return void 0 !== this.pointCloudModule
        }
        ,
        e.prototype.getCurrentViewState = function() {
            var t, e = this.cameraController instanceof p.FirstPersonCameraController ? _.cloneDeep(this.cameraController.orientation) : void 0;
            return {
                location: this.getCamera().position.clone(),
                orientation: e,
                imageId: null === (t = this.currentImage) || void 0 === t ? void 0 : t.id,
                image: this.currentImage,
                fov: this.cameraController.fov
            }
        }
        ,
        e.prototype.setCurrentViewState = function(t) {
            return o(this, void 0, void 0, (function() {
                var e;
                return a(this, (function(n) {
                    switch (n.label) {
                    case 0:
                        return e = [],
                        this.updateOrientation(t.orientation),
                        t.fov && this.updateFov(t.fov),
                        this.getCamera().position.copy(t.location),
                        this.PointCloudMenuService.config.showPointCloud && e.push(R.signalEmitted(this.getPointCloudV2Layer().loadComplete)),
                        t.mapBoundingBox && this.fitMapToBounds(t.mapBoundingBox),
                        e.push(this.updateFloorPlansForScreenshot(t.location)),
                        this.layerCameraImage.clear(),
                        t.image && (this.layerCameraImage.show(t.image, void 0, 0, 0),
                        e.push(R.signalEmitted(this.layerCameraImage.loadComplete))),
                        [4, Promise.all(e)];
                    case 1:
                        return n.sent(),
                        [2]
                    }
                }
                ))
            }
            ))
        }
        ,
        e.prototype.updateFloorPlansForScreenshot = function(t) {
            return o(this, void 0, void 0, (function() {
                var e;
                return a(this, (function(n) {
                    switch (n.label) {
                    case 0:
                        return [4, this.SiteModelService.getCurrentFloorByPosition(t)];
                    case 1:
                        return e = n.sent(),
                        [4, this.layerMap.displayFloorForScreenshot(this.getViewportByName(w.SplitViewportName.TOP_VIEW), e)];
                    case 2:
                        return n.sent(),
                        [4, R.signalEmitted(this.getMapLayer().loadComplete)];
                    case 3:
                        return n.sent(),
                        [2]
                    }
                }
                ))
            }
            ))
        }
        ,
        e.prototype.fitMapToBounds = function(t) {
            var e = this.getMapLayer().targetViewport
              , n = L.calcCamParamsToFitBoxIntoScreen(t, e.screenWidth, e.screenHeight)
              , i = e.cameraController
              , r = Math.min(h.PanningCameraController.RES_MAX, Math.max(i.resMin, n.resolution));
            i.camera.position.copy(n.position),
            i.resolution = r
        }
        ,
        e.prototype.setTopViewFullscreen = function() {
            var t = this.getViewportByName(w.SplitViewportName.TOP_VIEW);
            t.setDimensions(0, 0, 1, 1),
            t.active = !0,
            this.getDefaultViewport().active = !1
        }
        ,
        e.prototype.setTopAndPerspectiveSplit = function() {
            var t = this.getDefaultViewport()
              , e = this.getViewportByName(w.SplitViewportName.TOP_VIEW);
            t.setDimensions(.5, 0, .5, 1),
            e.setDimensions(0, 0, .5, 1),
            t.active = !0,
            e.active = !0
        }
        ,
        e.prototype.enableScreenshotMode = function() {
            var e;
            t.prototype.enableScreenshotMode.call(this);
            var n = this.getDefaultViewport()
              , i = this.getViewportByName(w.SplitViewportName.TOP_VIEW)
              , r = i.cameraController;
            this.stateBeforeScreenshot = {
                defaultViewportDimensions: n.getDimensions(),
                topViewportDimensions: i.getDimensions(),
                defaultViewportActive: n.active,
                topViewportActive: i.active,
                locationMarkersVisible: this.getLocationMarkerLayer().visible,
                magnifyingGlassVisible: this.layerMagnification.visible,
                cursorVisible: this.getCursorLayer().visible,
                cameraFovVisible: this.getCameraFOVLayer().visible,
                datasetsVisibility: this.DatasetRepository.data.reduce((function(t, e) {
                    return t.set(e.id, e.pointCloudVisible)
                }
                ), new Map),
                panningCameraResolution: r.resolution,
                panningCameraPosition: null === (e = this.getMapLayer().targetViewport) || void 0 === e ? void 0 : e.camera.position.clone()
            },
            this.getLocationMarkerLayer().visible = !1,
            this.layerMagnification.visible = !1,
            this.getCursorLayer().visible = !1,
            this.getCameraFOVLayer().visible = !1
        }
        ,
        e.prototype.disableScreenshotMode = function() {
            var e = this;
            t.prototype.disableScreenshotMode.call(this),
            this.layerMap.disableScreenshotMode();
            var n = this.getDefaultViewport()
              , i = this.getViewportByName(w.SplitViewportName.TOP_VIEW);
            n.setDimensions(this.stateBeforeScreenshot.defaultViewportDimensions.left, this.stateBeforeScreenshot.defaultViewportDimensions.bottom, this.stateBeforeScreenshot.defaultViewportDimensions.width, this.stateBeforeScreenshot.defaultViewportDimensions.height),
            i.setDimensions(this.stateBeforeScreenshot.topViewportDimensions.left, this.stateBeforeScreenshot.topViewportDimensions.bottom, this.stateBeforeScreenshot.topViewportDimensions.width, this.stateBeforeScreenshot.topViewportDimensions.height),
            n.active = this.stateBeforeScreenshot.defaultViewportActive,
            i.active = this.stateBeforeScreenshot.topViewportActive,
            i.cameraController.resolution = this.stateBeforeScreenshot.panningCameraResolution,
            this.getMapLayer().targetViewport.camera.position.copy(this.stateBeforeScreenshot.panningCameraPosition),
            this.getLocationMarkerLayer().visible = this.stateBeforeScreenshot.locationMarkersVisible,
            this.layerMagnification.visible = this.stateBeforeScreenshot.magnifyingGlassVisible,
            this.getCursorLayer().visible = this.stateBeforeScreenshot.cursorVisible,
            this.getCameraFOVLayer().visible = this.stateBeforeScreenshot.cameraFovVisible,
            this.DatasetRepository.data.forEach((function(t) {
                return t.pointCloudVisible = e.stateBeforeScreenshot.datasetsVisibility.get(t.id)
            }
            ))
        }
        ,
        e.prototype.createVolumeClippingLayer = function() {
            var t = {
                pointCloudLayer: this.layerPointCloudV2,
                visible: this.ModeService.isDownloadPointCloudMode() && !this.ModeService.isSwitchingMode
            };
            this.layerVolumeClipping = this.VolumeClippingLayerFactory.create(this, this.overlayScene, t),
            this.addToScene(this.layerVolumeClipping)
        }
        ,
        e.prototype.adjustViewportDimensions = function(t, e) {
            void 0 === e && (e = !1),
            t /= this.divContainer.getCurrentWidth(),
            this.adjustVerticalViewportDimensions(t, e),
            this.invalidateScene()
        }
        ,
        e.prototype.adjustVerticalViewportDimensions = function(t, e) {
            var n = this.getDefaultViewport()
              , i = this.getViewportByName(w.SplitViewportName.TOP_VIEW);
            e ? (this.tweenViewportDimensions(i, i.left, i.bottom, this.clampDimension(i.width + t), i.height),
            this.tweenViewportDimensions(n, this.clampDimension(n.left + t), n.bottom, this.clampDimension(n.width - t), n.height)) : (i.setDimensions(i.left, i.bottom, this.clampDimension(i.width + t), i.height),
            n.setDimensions(this.clampDimension(n.left + t), n.bottom, this.clampDimension(n.width - t), n.height),
            this.updateViewportActiveFlag(i),
            this.updateViewportActiveFlag(n),
            this.viewportDimensionsChanged.emit())
        }
        ,
        e.prototype.updateViewportActiveFlag = function(t) {
            t.active = t.width > .001
        }
        ,
        e.prototype.tweenViewportDimensions = function(t, e, n, i, r) {
            var o = this
              , a = new I.Tween(t).to({
                left: e,
                bottom: n,
                width: i,
                height: r
            }, 400).easing(I.Easing.Sinusoidal.InOut).onUpdate((function() {
                o.viewportDimensionsChanged.emit(),
                o.invalidateScene()
            }
            )).onComplete((function() {
                o.forgetTween(a),
                o.updateViewportActiveFlag(t),
                o.viewportDimensionsChanged.emit(),
                o.invalidateScene()
            }
            )).start();
            this.watchTween(a)
        }
        ,
        e.prototype.resetTwoViewportModeDimensions = function() {
            var t = this.getDefaultViewport()
              , e = this.getViewportByName(w.SplitViewportName.TOP_VIEW);
            t.active = !0,
            e.active = !0,
            this.tweenViewportDimensions(t, .5, 0, .5, 1),
            this.tweenViewportDimensions(e, 0, 0, .5, 1),
            this.TrackingService.trackPreDefinedEvent((new D.MultiViewportResizedEvent).withViewports(0, e, t))
        }
        ,
        e.prototype.maximizeViewport = function(t) {
            var e = this.getViewportByName(t)
              , n = this.getViewportByName(t === w.SplitViewportName.TOP_VIEW ? w.SplitViewportName.DEFAULT_VIEW : w.SplitViewportName.TOP_VIEW);
            e.active = !0,
            n.active = !1,
            e.setDimensions(0, 0, 1, 1),
            n.setDimensions(0, 0, 0, 1),
            this.viewportDimensionsChanged.emit(),
            this.invalidateScene()
        }
        ,
        e.prototype.checkAllDatasetFloorsHaveMaps = function() {
            var t = this;
            return this.currentFloorMaps.then((function(e) {
                return e.length === t.FloorChangerService.currentFloors.length
            }
            ))
        }
        ,
        e.prototype.atLeastOneFloorHasMaps = function() {
            return this.currentFloorMaps.then((function(t) {
                return t.length > 0
            }
            ))
        }
        ,
        Object.defineProperty(e.prototype, "currentFloorMaps", {
            get: function() {
                return this.TiledMapRepository.getMapForFloors(this.FloorChangerService.currentFloors)
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.clampDimension = function(t) {
            return Math.max(0, Math.min(t, 1))
        }
        ,
        e.RAYCAST_FAIL_ASSUMED_DISTANCE = 5,
        e.IMAGE_SEARCH_RADIUS = 10,
        e.MOVE_FORWARD_DISTANCE = 3,
        e
    }(c.AbstractView);
    e.MainView = N
}
, function(t, e, n) {
    "use strict";
    function i(t) {
        return t.offsetParent
    }
    function r(t, e) {
        var n = {
            x: 0,
            y: 0,
            event: t
        };
        if (void 0 === t.offsetX || navigator.userAgent.toLowerCase().indexOf("firefox") > -1) {
            n.x = t.pageX,
            n.y = t.pageY;
            for (var r = e || i(t.target); r; )
                n.x -= r.offsetLeft,
                n.y -= r.offsetTop,
                r = i(r)
        } else
            n.x = t.offsetX,
            n.y = t.offsetY;
        return n
    }
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    e.getEventPosition = function(t) {
        var e = t;
        return void 0 !== e.offsetX || void 0 !== e.pageX ? r(e) : e.originalEvent ? r(e.originalEvent) : e.gesture && e.gesture.center ? r(e.gesture.center, e.target) : e.touches && e.touches.length ? r(e.touches[0]) : r(e.gesture.srcEvent)
    }
    ;
    e.getMouseWheelDelta = function(t) {
        var e = t.originalEvent || t;
        return e.deltaY ? e.deltaY / 40 : void 0 !== e && "wheelDelta"in e ? -e.wheelDelta / 120 : e.detail / 3
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = function() {
        function t(t) {
            this.container = t,
            this.dimensions = {
                width: 1,
                height: 1,
                aspectRatio: 1
            },
            this.onResize()
        }
        return t.prototype.onResize = function() {
            var t = Math.floor(this.container.getBoundingClientRect().width);
            isNaN(t) || (this.dimensions.width = t);
            var e = Math.floor(this.container.getBoundingClientRect().height);
            isNaN(e) || (this.dimensions.height = e);
            var n = this.container.offsetWidth / this.container.offsetHeight;
            isFinite(n) && (this.dimensions.aspectRatio = n)
        }
        ,
        t.prototype.appendChild = function(t) {
            this.container.appendChild(t)
        }
        ,
        t.prototype.addEventCallback = function(t, e) {
            i.element(this.container).bind(t, e)
        }
        ,
        t.prototype.getCurrentWidth = function() {
            return this.dimensions.width
        }
        ,
        t.prototype.getCurrentHeight = function() {
            return this.dimensions.height
        }
        ,
        t.prototype.getAspectRatio = function() {
            return this.dimensions.aspectRatio
        }
        ,
        t
    }();
    e.HTMLContainer = r
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    e.swallowExceptions = function(t) {
        try {
            return t()
        } catch (t) {
            return void console.error("Unhandled exception", t.stack)
        }
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t() {}
        return t.prototype.fillFromData = function(t) {
            this.type = t.type,
            this.siteModelEntityId = t.building,
            this.fromSiteModelEntityId = t.from,
            this.toSiteModelEntityId = t.to
        }
        ,
        t
    }();
    e.InstructionEntity = i
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(138)
      , a = n(113)
      , s = function(t) {
        function e(e, n, i, r) {
            return t.call(this, e, n, i, r) || this
        }
        return r(e, t),
        e.prototype.buildText = function() {
            return this.isStartPoi() ? this.poi.title : this.gettextCatalog.getString("Start here", void 0, "navigation instruction")
        }
        ,
        e.prototype.buildIcons = function() {
            var t = this.isStartPoi() ? this.poi.icon : n(1144)
              , e = this.isStartPoi() ? this.poi.icon : n(1145);
            return {
                map: n(1146),
                panorama: e,
                text: t
            }
        }
        ,
        e.prototype.isStartPoi = function() {
            return this.poi && !this.poi.isLocationAsPoi
        }
        ,
        Object.defineProperty(e.prototype, "type", {
            get: function() {
                return a.InstructionType.START
            },
            enumerable: !0,
            configurable: !0
        }),
        e
    }(o.SpecialInstruction);
    e.StartInstruction = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(138)
      , a = n(113)
      , s = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e, n, i, r) || this;
            return o.poi = r,
            o
        }
        return r(e, t),
        e.prototype.buildText = function() {
            return this.isEndPoi() ? this.poi.title : this.gettextCatalog.getString("Destination reached", void 0, "navigation instruction")
        }
        ,
        e.prototype.buildIcons = function() {
            var t = this.isEndPoi() ? this.poi.icon : n(1147)
              , e = this.isEndPoi() ? this.poi.icon : n(1148);
            return {
                map: n(1149),
                panorama: e,
                text: t
            }
        }
        ,
        e.prototype.isEndPoi = function() {
            return this.poi && !this.poi.isLocationAsPoi
        }
        ,
        Object.defineProperty(e.prototype, "type", {
            get: function() {
                return a.InstructionType.END
            },
            enumerable: !0,
            configurable: !0
        }),
        e
    }(o.SpecialInstruction);
    e.EndInstruction = s
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(315)
      , r = n(4)
      , o = n(85)
      , a = function() {
        function t() {}
        return t.exportMeasurementsToByteStream = function(t) {
            var e = this
              , n = []
              , r = 0;
            t.forEach((function(t) {
                var i = e.exportMeasurementToByteStream(t);
                r += i.length,
                n.push(i)
            }
            ));
            var o = i.Buffer.allocUnsafe(r + this.SIZEOF_FORMAT_VERSION);
            o.writeUInt8(this.FORMAT_VERSION, this.FORMAT_VERSION_OFFSET);
            var a = this.SIZEOF_FORMAT_VERSION;
            return n.forEach((function(t) {
                t.copy(o, a),
                a += t.length
            }
            )),
            o
        }
        ,
        t.exportMeasurementToByteStream = function(t) {
            var e = (new TextEncoder).encode(t.name).length
              , n = i.Buffer.allocUnsafe((t.points.length + 1) * this.BYTES_PER_POINT + this.SIZEOF_ALL + this.SIZEOF_NAME_LENGTH + e);
            t.povLocation ? (n.writeDoubleLE(t.povLocation.x, this.X_OFFSET),
            n.writeDoubleLE(t.povLocation.y, this.Y_OFFSET),
            n.writeDoubleLE(t.povLocation.z, this.Z_OFFSET)) : (n.writeDoubleLE(0, this.X_OFFSET),
            n.writeDoubleLE(0, this.Y_OFFSET),
            n.writeDoubleLE(0, this.Z_OFFSET)),
            t.povImageId ? n.writeDoubleLE(t.povImageId, this.IMAGE_ID_OFFSET) : n.writeDoubleLE(0, this.IMAGE_ID_OFFSET),
            n.writeInt8(o.ToolSpec.of(t.type).id, this.MEASUREMENT_TYPE_OFFSET),
            n.writeInt16LE(t.points.length, this.LENGTH_HEADER_OFFSET);
            for (var r = 0; r < t.points.length; r++) {
                var a = (r + 1) * this.BYTES_PER_POINT + this.SIZEOF_ALL;
                n.writeDoubleLE(t.points[r].x, a + this.X_OFFSET),
                n.writeDoubleLE(t.points[r].y, a + this.Y_OFFSET),
                n.writeDoubleLE(t.points[r].z, a + this.Z_OFFSET)
            }
            var s = (t.points.length + 1) * this.BYTES_PER_POINT + this.SIZEOF_ALL;
            return n.writeUInt16LE(e, s),
            n.write(t.name, s + this.SIZEOF_NAME_LENGTH, "utf-8"),
            n
        }
        ,
        t.importMeasurementsFromByteStream = function(t) {
            var e = []
              , n = t.readUInt8(this.FORMAT_VERSION_OFFSET);
            if (n > this.FORMAT_VERSION)
                return console.log("Unsupported measurement binary format version: %d", n),
                e;
            for (var i = this.SIZEOF_FORMAT_VERSION; i < t.length; ) {
                var a = new r.Vector3(t.readDoubleLE(i + this.X_OFFSET),t.readDoubleLE(i + this.Y_OFFSET),t.readDoubleLE(i + this.Z_OFFSET));
                0 === a.x && 0 === a.y && 0 === a.z && (a = void 0);
                var s = t.readDoubleLE(i + this.IMAGE_ID_OFFSET);
                0 === s && (s = void 0);
                for (var c = t.readInt16LE(i + this.LENGTH_HEADER_OFFSET), l = t.readInt8(i + this.MEASUREMENT_TYPE_OFFSET), u = o.ToolSpec.getForId(l).tool, d = [], p = 0; p < c; p++) {
                    var h = (p + 1) * this.BYTES_PER_POINT + this.SIZEOF_ALL + i;
                    d.push(new r.Vector3(t.readDoubleLE(h + this.X_OFFSET),t.readDoubleLE(h + this.Y_OFFSET),t.readDoubleLE(h + this.Z_OFFSET)))
                }
                i += (d.length + 1) * this.BYTES_PER_POINT + this.SIZEOF_ALL;
                var f = void 0;
                if (2 === n) {
                    var m = t.readUInt16LE(i);
                    i += this.SIZEOF_NAME_LENGTH,
                    f = t.toString("utf-8", i, i += m)
                }
                e.push({
                    type: u,
                    povLocation: a,
                    povImageId: s,
                    points: d,
                    name: f
                })
            }
            return e
        }
        ,
        t.FORMAT_VERSION = 2,
        t.FORMAT_VERSION_OFFSET = 0,
        t.X_OFFSET = 0,
        t.Y_OFFSET = 8,
        t.Z_OFFSET = 16,
        t.IMAGE_ID_OFFSET = 24,
        t.MEASUREMENT_TYPE_OFFSET = 32,
        t.LENGTH_HEADER_OFFSET = 33,
        t.BYTES_PER_POINT = 24,
        t.SIZEOF_FORMAT_VERSION = 1,
        t.SIZEOF_IMAGE_ID = 8,
        t.SIZEOF_MEASUREMENT_TYPE = 1,
        t.SIZEOF_LENGTH_HEADER = 2,
        t.SIZEOF_NAME_LENGTH = 2,
        t.SIZEOF_ALL = t.SIZEOF_IMAGE_ID + t.SIZEOF_LENGTH_HEADER + t.SIZEOF_MEASUREMENT_TYPE,
        t
    }();
    e.MeasurementsBinarySerializer = a
}
, function(t, e, n) {
    t.exports = n(1190).default,
    t.exports.default = t.exports
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(4)
      , r = function() {
        function t(t) {
            var e = document.createElement("canvas");
            e.width = t.width,
            e.height = t.height,
            this.context = e.getContext("2d"),
            this.context.drawImage(t, 0, 0)
        }
        return t.prototype.getDepth = function(t, e) {
            var n = Math.round(t)
              , i = Math.round(e);
            if (!(n < 0 || i < 0 || n >= this.width || i >= this.height)) {
                var r = this.context.getImageData(n, i, 1, 1).data;
                return .001 * (r[0] + 256 * (r[1] + 256 * r[2]))
            }
        }
        ,
        Object.defineProperty(t.prototype, "width", {
            get: function() {
                return this.context.canvas.width
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "height", {
            get: function() {
                return this.context.canvas.height
            },
            enumerable: !0,
            configurable: !0
        }),
        t
    }();
    e.CanvasDepthImage = r;
    var o = function() {
        function t() {}
        return t.sample = function(e, n, r, o, a) {
            var s = n.uv
              , c = s.x * (e.width - 1)
              , l = (1 - s.y) * (e.height - 1)
              , u = e.getDepth(c, l);
            if (!u)
                return !1;
            o.copy(n.point).sub(r).normalize().multiplyScalar(u).add(r);
            var d = new i.Matrix3
              , p = new i.Vector3
              , h = new i.Vector3;
            t.makeUvToPosMap(n, d, p, h);
            var f = this.getNearbyPoint(e, n.point, r, s, d, p, h, -1, 0)
              , m = this.getNearbyPoint(e, n.point, r, s, d, p, h, 1, 0)
              , g = this.getNearbyPoint(e, n.point, r, s, d, p, h, 0, -1)
              , v = this.getNearbyPoint(e, n.point, r, s, d, p, h, 0, 1);
            return this.planeFit(o, r, f, m, g, v, a)
        }
        ,
        t.makeUvToPosMap = function(t, e, n, r) {
            var o = t.object.geometry
              , a = o.attributes.position.array
              , s = new i.Vector3(a[3 * t.face.a],a[3 * t.face.a + 1],a[3 * t.face.a + 2]).applyMatrix4(t.object.matrixWorld)
              , c = new i.Vector3(a[3 * t.face.b],a[3 * t.face.b + 1],a[3 * t.face.b + 2]).applyMatrix4(t.object.matrixWorld)
              , l = new i.Vector3(a[3 * t.face.c],a[3 * t.face.c + 1],a[3 * t.face.c + 2]).applyMatrix4(t.object.matrixWorld);
            n.subVectors(s, c),
            r.subVectors(l, c);
            var u = o.attributes.uv.array
              , d = new i.Vector2(u[2 * t.face.a],u[2 * t.face.a + 1])
              , p = new i.Vector2(u[2 * t.face.b],u[2 * t.face.b + 1])
              , h = new i.Vector2(u[2 * t.face.c],u[2 * t.face.c + 1])
              , f = d.sub(p)
              , m = h.sub(p);
            e.set(f.x, m.x, 0, f.y, m.y, 0, 0, 0, 1),
            e.getInverse(e)
        }
        ,
        t.getNearbyPoint = function(t, e, n, r, o, a, s, c, l) {
            var u = new i.Vector3(c / (t.width - 1),l / (t.height - 1))
              , d = (r.x + u.x) * (t.width - 1)
              , p = (1 - (r.y + u.y)) * (t.height - 1)
              , h = t.getDepth(d, p);
            if (void 0 !== h) {
                var f = u.applyMatrix3(o);
                return (new i.Vector3).addScaledVector(a, f.x).addScaledVector(s, f.y).add(e).sub(n).normalize().multiplyScalar(h).add(n)
            }
        }
        ,
        t.planeFit = function(t, e, n, r, o, a, s) {
            s.set(0, 0, 0);
            var c = t.clone().sub(e)
              , l = new i.Plane;
            function u(e, n) {
                e && n && (l.setFromCoplanarPoints(t, e, n),
                s.addScaledVector(l.normal, c.dot(l.normal) < 0 ? 1 : -1))
            }
            return u(n, o),
            u(n, a),
            u(r, o),
            u(r, a),
            (0 !== s.x || 0 !== s.y || 0 !== s.z) && (s.normalize(),
            !0)
        }
        ,
        t
    }();
    e.DepthImageSampler = o
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.ORBIT = "ORBIT",
        t.FIRST_PERSON = "FIRST_PERSON"
    }(e.CameraControlsMode || (e.CameraControlsMode = {}))
}
, function(t, e, n) {
    t.exports = n.p + "c87e88d87bbf2a8cced1ff0de447470e.circle.png"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(124)
      , s = n(40)
      , c = n(101)
      , l = n(80)
      , u = (n(41),
    n(9),
    n(15),
    n(157))
      , d = n(559)
      , p = n(4)
      , h = n(1193)
      , f = n(25)
      , m = n(8)
      , g = n(6)
      , v = n(0)
      , y = n(7)
      , b = n(16)
      , w = n(0)
      , S = n(15)
      , x = n(41)
      , M = n(9)
      , E = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e, n, i) || this;
            return o.depthOverlaySettings = {
                depthOpacity: 0,
                halfDistance: 5,
                maxDistance: 50,
                hsv: !0
            },
            o.loadComplete = new b.Signal,
            o.factory = r,
            o.errorHandler = o.factory.ErrorService.newOnceWrapper().report().generic(o.factory.gettext("An error occurred when downloading panoramas. Please check your network connection.")).build(),
            o.currentView = o.createViewState(),
            o.prevView = o.createViewState(),
            o.factory.ConfigService.initialized.then((function() {
                o.mobileMaxRes = o.factory.ConfigService.getInteger(f.Configs.LAYERS_PANORAMA_MOBILE_MAX_RES, void 0)
            }
            )).catch(m.handleWarning),
            o
        }
        return r(e, t),
        e.prototype.onDestroy = function() {
            h.ImageMaterial.disposeSharedTextures(),
            t.prototype.onDestroy.call(this)
        }
        ,
        e.prototype.show = function(t, n, i, r) {
            var o = this;
            void 0 === i && (i = e.FADE_DURATION),
            void 0 === r && (r = e.FADE_DELAY_TIME),
            t.cameraHead.fetchHeadData((function() {
                return o.view.invalidateScene()
            }
            )).then((function() {
                return o.createNewImageSet(t, n, i, r)
            }
            )).catch(m.handleWarning)
        }
        ,
        e.prototype.clear = function() {
            this.destroyObjGroup(this.currentView.meshes),
            this.currentView = this.createViewState(),
            this.clearPrevious(),
            this.view.invalidateScene()
        }
        ,
        e.prototype.clearPrevious = function() {
            this.prevView.meshes.length > 0 && (this.destroyObjGroup(this.prevView.meshes),
            this.prevView = this.createViewState())
        }
        ,
        e.prototype.createNewImageSet = function(t, n, i, r) {
            void 0 === i && (i = e.FADE_DURATION),
            void 0 === r && (r = e.FADE_DELAY_TIME);
            var o, a = t.cameraHead, s = this.view.getCamera(), c = n < .9 * s.far ? n : .9 * s.far;
            if (this.currentView.meshes.length > 0 && (this.destroyObjGroup(this.prevView.meshes),
            this.prevView = this.currentView),
            this.createImageSet(t, a, c),
            this.prevView.meshes.length > 0 && (o = this.getScaleFromRadius(this.prevView.meshes[0].geometry, c)),
            this.prevView.image !== t)
                for (var l = 0, u = this.prevView.meshes; l < u.length; l++) {
                    var d = u[l];
                    this.tweenMeshOpacity(d, 0, i, r),
                    o && d.scale.copy(o)
                }
            for (var p = 0, h = this.currentView.meshes; p < h.length; p++) {
                d = h[p];
                this.tweenMeshOpacity(d, 1, i, r)
            }
        }
        ,
        e.prototype.getScaleFromRadius = function(t, e) {
            var n = t.getAttribute("position").array[0]
              , i = t.getAttribute("position").array[1]
              , r = t.getAttribute("position").array[2]
              , o = e / Math.sqrt(n * n + i * i + r * r);
            return new p.Vector3(o,o,o)
        }
        ,
        e.prototype.onAfterRender = function(t) {
            this.updateImageResolution(t),
            this.currentView.resolutions.some((function(t) {
                return t > 0
            }
            )) && y.isEqual(this.currentView.resolutions, this.currentView.resolutionsQueued) ? this.loadComplete.emit(!0) : this.currentView.resolutionsQueued.some((function(t) {
                return t === e.LOAD_FAILED_RESOLUTION
            }
            )) && this.loadComplete.emit(!1)
        }
        ,
        e.prototype.updateImageResolution = function(t) {
            var e = new p.Frustum;
            e.setFromProjectionMatrix((new p.Matrix4).multiplyMatrices(t.projectionMatrix, t.matrixWorldInverse));
            for (var n = [], i = 0; i < this.currentView.meshes.length; i++)
                e.intersectsObject(this.currentView.meshes[i]) && n.push(i);
            n.length > 0 && this.loadImages(this.currentView.image, this.currentView.head, !0, this.onLoadComplete.bind(this), n)
        }
        ,
        e.prototype.createImageSet = function(t, e, n) {
            this.currentView = this.createViewState(),
            this.currentView.image = t,
            this.currentView.head = e;
            for (var i = this.getScaleFromRadius(e.getMeshGeometries()[0], n), r = 0; r < e.getMeshGeometries().length; r++) {
                var o = this.createMesh(t, e.getMeshGeometries()[r], e.getAlphaMaskTextures()[r], r, "+" === e.blending ? p.AdditiveBlending : p.NormalBlending, i);
                this.currentView.meshes.push(o)
            }
            for (var a = 0, s = this.loadImages(t, e, !1, this.onLoadComplete.bind(this)); a < s.length; a++) {
                var c = s[a];
                this.sceneGroup.add(this.currentView.meshes[c.index])
            }
        }
        ,
        e.prototype.loadImages = function(t, n, i, r, o) {
            var a = this
              , l = this.view.getCamera()
              , u = new p.Vector3(0,0,-1);
            u.transformDirection(l.matrixWorld);
            var d = (new p.Quaternion).copy(t.orientation).inverse().normalize();
            u.applyQuaternion(d);
            var h = [];
            if (i) {
                var f = this.getHighestRes(n);
                l.fov * l.aspect > e.FOV_THRESHOLD && f > 0 && (s.isMobileBrowser() || this.addToLoadQueue(h, t, n, f, u, o),
                f--),
                this.addToLoadQueue(h, t, n, f, u, o)
            } else
                this.addToLoadQueue(h, t, n, 0, u, o);
            h.sort((function(t, e) {
                return t.resolution !== e.resolution ? t.resolution - e.resolution : t.dist - e.dist
            }
            ));
            for (var m = function(n) {
                var i = g.getImageFilename(t, n.index, n.resolution, !1);
                g.currentView.resolutionsQueued[n.index] = n.resolution,
                i = g.factory.RestService.addAuthorizationQueryParameter(i),
                c.getTextureLoader().load(i, (function(t) {
                    a.errorHandler.reset(),
                    r(n, t)
                }
                ), void 0, (function(t) {
                    a.errorHandler.handle(t),
                    a.currentView.resolutionsQueued[n.index] = e.LOAD_FAILED_RESOLUTION
                }
                ))
            }, g = this, v = 0, y = h; v < y.length; v++) {
                m(S = y[v])
            }
            if (t.dataset && t.dataset.hasDepthImages)
                for (var b = 0, w = h; b < w.length; b++) {
                    var S = w[b]
                      , x = this.currentView.meshes[S.index];
                    x.userData.depthImagePromise || this.loadDepthImage(S, x)
                }
            return h
        }
        ,
        e.prototype.loadDepthImage = function(t, e) {
            var n = this
              , i = this.getImageFilename(t.image, t.index, 0, !0);
            i = this.factory.RestService.addAuthorizationQueryParameter(i),
            e.userData.depthImagePromise = c.getTextureLoader().loadPromise(i, (function(t) {
                t.minFilter = p.NearestFilter,
                t.magFilter = p.NearestFilter,
                t.generateMipmaps = !1
            }
            )).then((function(t) {
                return e.material.depthMap = t,
                n.view.invalidateScene(),
                new d.CanvasDepthImage(t.image)
            }
            )),
            this.errorHandler.wrap(e.userData.depthImagePromise).catch((function() {}
            ))
        }
        ,
        e.prototype.getHighestRes = function(t) {
            var e = Math.floor(Math.log(t.resolutions) / Math.log(2));
            return void 0 !== this.mobileMaxRes && s.isMobileBrowser() && (e = Math.min(e, this.mobileMaxRes)),
            e
        }
        ,
        e.prototype.addToLoadQueue = function(t, e, n, i, r, o) {
            for (var a = n.getMeshGeometries(), s = 0; s < a.length; s++)
                if (!(o && o.indexOf(s) < 0 || s in this.currentView.resolutions && this.currentView.resolutions[s] >= i || s in this.currentView.resolutionsQueued && this.currentView.resolutionsQueued[s] >= i)) {
                    var c = a[s].boundingBox
                      , l = c.min.x
                      , u = c.min.y
                      , d = c.min.z
                      , h = c.max.x
                      , f = c.max.y
                      , m = c.max.z
                      , g = new p.Vector3((l + h) / 2,(u + f) / 2,(d + m) / 2)
                      , v = Math.abs(g.angleTo(r));
                    t.push({
                        dist: v,
                        index: s,
                        image: e,
                        resolution: i
                    })
                }
        }
        ,
        e.prototype.getImageFilename = function(t, e, n, i) {
            var r = t.cameraHead.tiles > 0 ? Math.floor(e / t.cameraHead.tiles) : 0
              , o = t.cameraHead.tiles > 0 ? e % t.cameraHead.tiles : 0
              , a = (i ? t.cameraHead.depthFnFormat : t.cameraHead.fnFormat).replace(/\$ID100/g, (Number.parseInt(t.fileId, 10) / 100 | 0).toString()).replace(/\$ID/g, t.fileId).replace(/\$INDEX/g, e.toString()).replace(/\$CAM/g, r.toString()).replace(/\$RES/g, n.toString()).replace(/\$TILE/g, ("00" + o.toString()).slice(-2))
              , s = "";
            return i && t.dataset.depthImageVersion && (s = "?v=" + t.dataset.depthImageVersion),
            t.filePath + "/" + a + s
        }
        ,
        e.prototype.onLoadComplete = function(t, e) {
            if (this.currentView.image === t.image) {
                var n = t.index
                  , i = this.currentView.meshes[n].material;
                if (void 0 === this.currentView.resolutions[n])
                    i.map = e,
                    this.currentView.resolutions[n] = t.resolution,
                    this.view.invalidateScene();
                else {
                    var r = this.currentView.resolutions[n]
                      , o = t.resolution;
                    r < o ? (i.map.dispose(),
                    i.map = e,
                    this.currentView.resolutions[n] = o,
                    this.view.invalidateScene()) : e.dispose()
                }
            } else
                e.dispose()
        }
        ,
        e.prototype.createViewState = function() {
            return {
                meshes: [],
                resolutions: [],
                resolutionsQueued: [],
                image: void 0,
                head: void 0
            }
        }
        ,
        e.prototype.createMesh = function(t, e, n, i, r, o) {
            var a = this
              , s = new p.Mesh(e);
            s.position.copy(t.location),
            s.quaternion.copy(t.orientation),
            s.scale.copy(o),
            s.renderOrder = -(1e6 - i - Math.random()),
            s.name = "cam-" + t.filePath + "-" + t.fileId + "-" + i.toString(),
            s.userData.image = t;
            var c = new h.ImageMaterial(r,n,this.depthOverlaySettings);
            return s.material = c,
            s.onBeforeRender = function() {
                c.updateCustomUniforms(a.view.renderer, a.view.getCamera())
            }
            ,
            s
        }
        ,
        e.prototype.destroyObjGroup = function(t) {
            if (t)
                for (var e = 0, n = t; e < n.length; e++) {
                    var i = n[e]
                      , r = i.material;
                    void 0 !== r && (r.disposeTextures(),
                    u.disposeMeshMaterial(i)),
                    this.sceneGroup.remove(i)
                }
        }
        ,
        e.prototype.tweenMeshOpacity = function(t, e, n, i) {
            var r = this;
            void 0 === i && (i = 0);
            var o = t.material;
            if (0 !== n || 0 !== i) {
                var s = new a.Tween(o).to({
                    imageOpacity: e
                }, n).easing(a.Easing.Cubic.InOut.bind(this)).delay(i).onComplete((function() {
                    return r.view.forgetTween(s)
                }
                )).start();
                this.view.watchTween(s)
            } else
                o.imageOpacity = e
        }
        ,
        e.prototype.updateDepthOverlay = function() {
            for (var t = 0, e = this.currentView.meshes; t < e.length; t++) {
                var n = e[t].material;
                void 0 !== n && (n.depthOverlay = this.depthOverlaySettings)
            }
            this.view.invalidateScene()
        }
        ,
        e.FADE_DURATION = 1e3,
        e.FADE_DELAY_TIME = 1e3,
        e.FOV_THRESHOLD = 60,
        e.LOAD_FAILED_RESOLUTION = -1,
        e
    }(l.SceneLayer);
    e.CameraImageLayer = E;
    var C = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this) || this;
            return o.ConfigService = e,
            o.ErrorService = n,
            o.RestService = i,
            o.gettext = r,
            o
        }
        return r(e, t),
        e.prototype.create = function(t, e, n) {
            return new E(t,e,n,this)
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(w.ɵɵinject(S.ConfigService),w.ɵɵinject(x.ErrorService),w.ɵɵinject(M.RestService),w.ɵɵinject("gettext"))
        }
        ,
        e.ɵprov = w.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(l.SceneLayerFactory);
    e.CameraImageLayerFactory = C,
    w.ɵsetClassMetadata(C, [{
        type: v.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: S.ConfigService
        }, {
            type: x.ErrorService
        }, {
            type: M.RestService
        }, {
            type: void 0,
            decorators: [{
                type: v.Inject,
                args: ["gettext"]
            }]
        }]
    }
    ), null),
    o.module("IVWebApp").service("CameraImageLayerFactory", g.downgradeInjectable(C))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t[t.DISK = 0] = "DISK",
        t[t.CROSS = 1] = "CROSS"
    }(e.CursorStyle || (e.CursorStyle = {}))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    e.comparePoiImportance = function(t, e, n) {
        return t.isLocationAsPoi ? -1 : e.isLocationAsPoi ? 1 : n.has(t) ? -1 : n.has(e) ? 1 : t.importance > e.importance ? -1 : t.importance < e.importance ? 1 : t.id < e.id ? -1 : 1
    }
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "canWrite", {
            get: function() {
                return this.bundle.canWrite
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.resolveInjectables = function() {
            this.BundleRepository = this.injectables.BundleRepository
        }
        ,
        e.prototype.copy = function(e, n) {
            return void 0 === n && (n = !1),
            t.prototype.fill.call(this, e),
            this.bundle = e.bundle,
            this
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.bundle = this.BundleRepository.dataMap[e.bundle_id]
        }
        ,
        e.prototype.fillDto = function(e) {
            t.prototype.fillDto.call(this, e),
            e.bundle_id = this.bundle.id
        }
        ,
        e
    }(n(102).RepositoryObject);
    e.AbstractNavGraphEntity = o
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t() {}
        return t.prototype.merge = function(t) {
            return !1
        }
        ,
        t
    }();
    e.EditingOperation = i
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(183)
      , a = n(68)
      , s = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, a.NavGraphEditingConstantsType.NODE) || this;
            return o.NavGraphService = e,
            o.position = n,
            o.bundle = i,
            o.undoCallback = r,
            o
        }
        return r(e, t),
        e.prototype.apply = function() {
            this.resource = this.NavGraphService.NodeRepository.create(),
            this.resource.id = this.NavGraphService.adjacencyList.createLocalId(),
            this.resource.location = this.position,
            this.resource.bundle = this.bundle,
            this.NavGraphService.adjacencyList.addNode(this.resource),
            this.NavGraphService.nodeCreated.emit(this.resource)
        }
        ,
        e.prototype.commit = function() {
            var t = this;
            return this.NavGraphService.NodeRepository.save(this.createNodeForServer(this.resource)).then((function(e) {
                var n = e[0]
                  , i = t.resource.id;
                t.resource.copy(n),
                t.NavGraphService.adjacencyList.addNode(t.resource);
                var r = t.NavGraphService.adjacencyList.getNodeMesh(i);
                r && (r.userData.id = t.resource.id,
                t.NavGraphService.adjacencyList.setNodeMesh(r));
                for (var o = 0, a = t.NavGraphService.adjacencyList.getEdgesOfNode(i); o < a.length; o++) {
                    var s = a[o]
                      , c = s
                      , l = t.NavGraphService.adjacencyList.getEdgeMeshBetweenNodes(s.source.id, s.target.id);
                    t.NavGraphService.adjacencyList.removeEdge(s.source.id, s.target.id),
                    c.source = c.source.id === i ? n : c.source,
                    c.target = c.target.id === i ? n : c.target,
                    l.userData.source = c.source,
                    l.userData.target = c.target,
                    t.NavGraphService.adjacencyList.addEdge(c),
                    t.NavGraphService.adjacencyList.setEdgeMesh(l)
                }
                return t.NavGraphService.adjacencyList.removeNode(i),
                Promise.resolve()
            }
            ))
        }
        ,
        e.prototype.undo = function() {
            var t = this.NavGraphService.adjacencyList.getNodeMesh(this.resource.id);
            t && (this.NavGraphService.nodeRemoved.emit(t),
            this.undoCallback && this.undoCallback(t)),
            this.NavGraphService.adjacencyList.removeNode(this.resource.id)
        }
        ,
        e.prototype.getDescription = function() {
            return this.NavGraphService.gettextCatalog.getString("Node created") + " | " + this.NavGraphService.gettextCatalog.getString("Bundle: {{bundle}}", {
                bundle: this.bundle.displayName
            })
        }
        ,
        e.prototype.getTitle = function() {
            return this.getDescription()
        }
        ,
        e.prototype.createNodeForServer = function(t) {
            var e = this.NavGraphService.NodeRepository.create();
            return e.copy(t),
            e.id = void 0,
            e
        }
        ,
        e
    }(o.NavGraphEditingOperation);
    e.NavGraphEditingNodeCreateOperation = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(183)
      , a = n(68)
      , s = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, a.NavGraphEditingConstantsType.EDGE) || this;
            return o.NavGraphService = e,
            o.bundle = n,
            o.sourceNode = i,
            o.targetNode = r,
            o
        }
        return r(e, t),
        e.prototype.apply = function() {
            this.resource = this.NavGraphService.EdgeRepository.create(),
            this.resource.id = this.NavGraphService.adjacencyList.createLocalId(),
            this.resource.bundle = this.bundle,
            this.resource.source = this.NavGraphService.NodeRepository.create(),
            this.resource.source.copy(this.sourceNode),
            this.resource.target = this.NavGraphService.NodeRepository.create(),
            this.resource.target.copy(this.targetNode),
            this.NavGraphService.adjacencyList.addEdge(this.resource),
            this.NavGraphService.edgeCreated.emit(this.sourceNode, this.targetNode)
        }
        ,
        e.prototype.commit = function() {
            var t = this;
            return this.NavGraphService.EdgeRepository.save(this.createEdgeForServer(this.resource)).then((function(e) {
                var n = e[0]
                  , i = t.resource.source.id
                  , r = t.resource.target.id;
                t.resource.copy(n);
                var o = t.NavGraphService.adjacencyList.getEdgeMeshBetweenNodes(t.resource.source.id, t.resource.target.id);
                t.NavGraphService.adjacencyList.addEdge(t.resource),
                o && (o.userData.id = t.resource.id,
                o.userData.source = t.resource.source,
                o.userData.target = t.resource.target,
                t.NavGraphService.adjacencyList.setEdgeMesh(o)),
                (i < 0 || r < 0) && t.NavGraphService.adjacencyList.removeEdge(i, r)
            }
            ))
        }
        ,
        e.prototype.undo = function() {
            var t = this.NavGraphService.adjacencyList.getEdgeMeshBetweenNodes(this.sourceNode.id, this.targetNode.id);
            t && this.NavGraphService.edgeRemoved.emit(t),
            this.NavGraphService.adjacencyList.removeEdge(this.sourceNode.id, this.targetNode.id)
        }
        ,
        e.prototype.getDescription = function() {
            return this.NavGraphService.gettextCatalog.getString("Edge created") + " | " + this.NavGraphService.gettextCatalog.getString("Bundle: {{bundle}}", {
                bundle: this.bundle.displayName
            })
        }
        ,
        e.prototype.createEdgeForServer = function(t) {
            var e = this.NavGraphService.EdgeRepository.create();
            return e.copy(t),
            e.id = void 0,
            e.source.copy(this.sourceNode),
            e.target.copy(this.targetNode),
            e
        }
        ,
        e
    }(o.NavGraphEditingOperation);
    e.NavGraphEditingEdgeCreateOperation = s
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(7)
      , r = function() {
        function t() {
            this.history = []
        }
        return t.prototype.apply = function(t) {
            this.history.length > 0 && this.history[this.history.length - 1].merge(t) || (t.apply(),
            this.history.push(t))
        }
        ,
        t.prototype.undo = function() {
            if (this.history.length > 0) {
                var t = this.history.pop();
                return t.undo(),
                t
            }
        }
        ,
        t.prototype.undoAll = function() {
            i.eachRight(this.history, (function(t) {
                return t.undo()
            }
            )),
            this.history.length = 0
        }
        ,
        t.prototype.commit = function() {
            return t.commitInOrder(this.history)
        }
        ,
        t.commitInOrder = function(e) {
            return 0 === e.length ? Promise.resolve() : e[0].commit().then((function() {
                return e.shift(),
                t.commitInOrder(e)
            }
            ))
        }
        ,
        t
    }();
    e.EditingHistory = r
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(566)
      , a = n(569)
      , s = n(7)
      , c = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.editingOperations = [],
            e
        }
        return r(e, t),
        e.prototype.addOperation = function(t) {
            this.editingOperations.push(t)
        }
        ,
        e.prototype.undo = function() {
            s.eachRight(this.editingOperations, (function(t) {
                return t.undo()
            }
            ))
        }
        ,
        e.prototype.apply = function() {
            this.editingOperations.forEach((function(t) {
                return t.apply()
            }
            ))
        }
        ,
        e.prototype.commit = function() {
            return a.EditingHistory.commitInOrder(this.editingOperations)
        }
        ,
        e
    }(o.EditingOperation);
    e.EditingOperationCollection = c
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(80)
      , a = n(4)
      , s = n(2)
      , c = n(6)
      , l = n(322)
      , u = n(0)
      , d = n(67)
      , p = n(184)
      , h = n(124)
      , f = (n(140),
    n(550))
      , m = n(105)
      , g = (n(28),
    n(52))
      , v = n(7)
      , y = n(395)
      , b = n(261)
      , w = n(573)
      , S = n(0)
      , x = n(140)
      , M = n(28)
      , E = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e, n, i) || this;
            return o.params = i,
            o.factory = r,
            o.debouncedFloorUpdate = v.debounce((function(t) {
                return o.factory.FloorChangerService.updateByFloorsInView(t.camera).catch((function() {}
                ))
            }
            ), y.AbstractSceneLayer.ORTHO_DEBOUNCE),
            o.quaternionBackup = new a.Quaternion,
            o.positionBackup = new a.Vector3,
            o.PERSPECTIVE_ARCS_PIXEL_SIZE = 142,
            o.axisNames = [l.ClipVolume.AXIS_X, l.ClipVolume.AXIS_Y, l.ClipVolume.AXIS_Z],
            o.circleNames = [l.ClipVolume.CIRCLE_X_POSITIVE, l.ClipVolume.CIRCLE_X_NEGATIVE, l.ClipVolume.CIRCLE_Y_POSITIVE, l.ClipVolume.CIRCLE_Y_NEGATIVE, l.ClipVolume.CIRCLE_Z_POSITIVE, l.ClipVolume.CIRCLE_Z_NEGATIVE, l.ClipVolume.NEGATIVE_X_POSITIVE_Y_CORNER, l.ClipVolume.POSITIVE_X_POSITIVE_Y_CORNER, l.ClipVolume.NEGATIVE_X_NEGATIVE_Y_CORNER, l.ClipVolume.POSITIVE_X_NEGATIVE_Y_CORNER],
            o.perspectiveArcsNames = [l.ClipVolume.ROTATION_ARC_X, l.ClipVolume.ROTATION_ARC_Y, l.ClipVolume.ROTATION_ARC_Z],
            o.rotationCirclesNames = [l.ClipVolume.ROTATION_CIRCLE],
            o.volume = new l.ClipVolume(e,(function() {
                return o.factory.DownloadPointCloudService.onVolumeChange.emit(o.volume)
            }
            ),(function() {
                o.factory.DownloadPointCloudService.onVolumeChangeEnd.emit(o.volume)
            }
            )),
            o.trackSignal(o.factory.DownloadPointCloudService.onVolumeChangeEnd).connect((function() {
                o.recenterCamera()
            }
            )),
            o.sceneGroup.add(o.volume),
            o.visible = i.visible,
            o.visible && (o.addClipBoxToPointCloud(),
            o.reinitObjectsVisibility()),
            e instanceof f.MainView && e.viewModeChanged.connect((function() {
                o.visible && o.reinitObjectsVisibility()
            }
            )),
            o
        }
        return r(e, t),
        e.prototype.onBeforeRenderViewport = function(e) {
            this.visible && (t.prototype.onBeforeRenderViewport.call(this, e),
            this.adjustForCurrentCamera(e),
            this.scaleHandlesAccordingToZoomLevel(e),
            e.getCamera()instanceof a.OrthographicCamera ? this.setRotationCirclePosition(e) : this.rotateRotationArcsToCamera(e.getCamera()),
            this.hasTheClippingVolumeChanged() && (this.updateVolumeObjectsPositions(),
            this.addClipBoxToPointCloud()))
        }
        ,
        e.prototype.onViewportCameraMoveEnd = function(t, e) {
            this.visible && t.name === g.SplitViewportName.TOP_VIEW && this.debouncedFloorUpdate(t)
        }
        ,
        e.prototype.setVolumePositionAndScale = function(t, e) {
            this.volume.position.equals(t) && e && this.volume.getObjectByName(l.ClipVolume.BOX_NAME).scale.equals(e) || (this.volume.position.copy(t),
            e && (this.volume.getObjectByName(l.ClipVolume.BOX_NAME).scale.copy(e),
            this.volume.getObjectByName(l.ClipVolume.BOX_FRAME_NAME).scale.copy(e),
            this.volume.getObjectByName(l.ClipVolume.CIRCLE_X_POSITIVE).position.copy(new a.Vector3(e.x / 2,0,0)),
            this.volume.getObjectByName(l.ClipVolume.CIRCLE_X_NEGATIVE).position.copy(new a.Vector3(-e.x / 2,0,0)),
            this.volume.getObjectByName(l.ClipVolume.CIRCLE_Y_POSITIVE).position.copy(new a.Vector3(0,e.y / 2,0)),
            this.volume.getObjectByName(l.ClipVolume.CIRCLE_Y_NEGATIVE).position.copy(new a.Vector3(0,-e.y / 2,0)),
            this.volume.getObjectByName(l.ClipVolume.CIRCLE_Z_POSITIVE).position.copy(new a.Vector3(0,0,e.z / 2)),
            this.volume.getObjectByName(l.ClipVolume.CIRCLE_Z_NEGATIVE).position.copy(new a.Vector3(0,0,-e.z / 2)),
            this.volume.getObjectByName(l.ClipVolume.NEGATIVE_X_POSITIVE_Y_CORNER).position.copy(new a.Vector3(-e.x / 2,e.y / 2,e.z / 2)),
            this.volume.getObjectByName(l.ClipVolume.POSITIVE_X_POSITIVE_Y_CORNER).position.copy(new a.Vector3(e.x / 2,e.y / 2,e.z / 2)),
            this.volume.getObjectByName(l.ClipVolume.NEGATIVE_X_NEGATIVE_Y_CORNER).position.copy(new a.Vector3(-e.x / 2,-e.y / 2,e.z / 2)),
            this.volume.getObjectByName(l.ClipVolume.POSITIVE_X_NEGATIVE_Y_CORNER).position.copy(new a.Vector3(e.x / 2,-e.y / 2,e.z / 2))),
            this.volume.updateMatrixWorld(!0),
            this.factory.DownloadPointCloudService.onVolumeChangeEnd.emit(this.volume))
        }
        ,
        e.prototype.reinitObjectsVisibility = function() {
            this.visibilityChangeRequested = !0,
            this.view.invalidateScene()
        }
        ,
        e.prototype.setRotationCirclePosition = function(t) {
            var n = this.volume.getObjectByName(l.ClipVolume.ROTATION_CIRCLE)
              , i = this.volume.getObjectByName(l.ClipVolume.BOX_NAME).scale
              , r = t.getCamera();
            if (r instanceof a.OrthographicCamera) {
                var o = r.right - r.left
                  , s = t.getWidth()
                  , c = e.ROTATION_CIRCLE_DISTANCE_PIXEL_SIZE / s * o;
                n.position.copy(new a.Vector3(0,i.y / 2 + c,0))
            }
        }
        ,
        e.prototype.adjustForCurrentCamera = function(t) {
            this.visibilityChangeRequested && (this.visibilityChangeRequested = !1,
            t.getCamera()instanceof a.PerspectiveCamera ? (this.setObjectVisibility(l.ClipVolume.AXIS_X, !0),
            this.setObjectVisibility(l.ClipVolume.AXIS_Y, !0),
            this.setObjectVisibility(l.ClipVolume.AXIS_Z, !0),
            this.setObjectVisibility(l.ClipVolume.CIRCLE_X_POSITIVE, !0),
            this.setObjectVisibility(l.ClipVolume.CIRCLE_X_NEGATIVE, !0),
            this.setObjectVisibility(l.ClipVolume.CIRCLE_Y_POSITIVE, !0),
            this.setObjectVisibility(l.ClipVolume.CIRCLE_Y_NEGATIVE, !0),
            this.setObjectVisibility(l.ClipVolume.CIRCLE_Z_POSITIVE, !0),
            this.setObjectVisibility(l.ClipVolume.CIRCLE_Z_NEGATIVE, !0),
            this.setObjectVisibility(l.ClipVolume.ROTATION_ARC_X, !0),
            this.setObjectVisibility(l.ClipVolume.ROTATION_ARC_Y, !0),
            this.setObjectVisibility(l.ClipVolume.ROTATION_ARC_Z, !0),
            this.setObjectVisibility(l.ClipVolume.NEGATIVE_X_POSITIVE_Y_CORNER, !1),
            this.setObjectVisibility(l.ClipVolume.POSITIVE_X_POSITIVE_Y_CORNER, !1),
            this.setObjectVisibility(l.ClipVolume.NEGATIVE_X_NEGATIVE_Y_CORNER, !1),
            this.setObjectVisibility(l.ClipVolume.POSITIVE_X_NEGATIVE_Y_CORNER, !1),
            this.setObjectVisibility(l.ClipVolume.ROTATION_CIRCLE, !1),
            this.setObjectVisibility(l.ClipVolume.BOX_NAME, !1),
            this.volume.getObjectByName(l.ClipVolume.CIRCLE_X_NEGATIVE).changeColor(l.ClipVolume.COLOR_RED),
            this.volume.getObjectByName(l.ClipVolume.CIRCLE_X_POSITIVE).changeColor(l.ClipVolume.COLOR_RED),
            this.volume.getObjectByName(l.ClipVolume.CIRCLE_Y_NEGATIVE).changeColor(l.ClipVolume.COLOR_GREEN),
            this.volume.getObjectByName(l.ClipVolume.CIRCLE_Y_POSITIVE).changeColor(l.ClipVolume.COLOR_GREEN)) : t.getCamera()instanceof a.OrthographicCamera ? (this.setObjectVisibility(l.ClipVolume.AXIS_X, !1),
            this.setObjectVisibility(l.ClipVolume.AXIS_Y, !1),
            this.setObjectVisibility(l.ClipVolume.AXIS_Z, !1),
            this.setObjectVisibility(l.ClipVolume.CIRCLE_X_POSITIVE, !0),
            this.setObjectVisibility(l.ClipVolume.CIRCLE_X_NEGATIVE, !0),
            this.setObjectVisibility(l.ClipVolume.CIRCLE_Y_POSITIVE, !0),
            this.setObjectVisibility(l.ClipVolume.CIRCLE_Y_NEGATIVE, !0),
            this.setObjectVisibility(l.ClipVolume.CIRCLE_Z_POSITIVE, !1),
            this.setObjectVisibility(l.ClipVolume.CIRCLE_Z_NEGATIVE, !1),
            this.setObjectVisibility(l.ClipVolume.ROTATION_ARC_X, !1),
            this.setObjectVisibility(l.ClipVolume.ROTATION_ARC_Y, !1),
            this.setObjectVisibility(l.ClipVolume.ROTATION_ARC_Z, !1),
            this.setObjectVisibility(l.ClipVolume.NEGATIVE_X_POSITIVE_Y_CORNER, !0),
            this.setObjectVisibility(l.ClipVolume.POSITIVE_X_POSITIVE_Y_CORNER, !0),
            this.setObjectVisibility(l.ClipVolume.NEGATIVE_X_NEGATIVE_Y_CORNER, !0),
            this.setObjectVisibility(l.ClipVolume.POSITIVE_X_NEGATIVE_Y_CORNER, !0),
            this.setObjectVisibility(l.ClipVolume.ROTATION_CIRCLE, !0),
            this.setObjectVisibility(l.ClipVolume.BOX_NAME, !0),
            this.volume.getObjectByName(l.ClipVolume.CIRCLE_X_NEGATIVE).changeColor(l.ClipVolume.COLOR_YELLOW),
            this.volume.getObjectByName(l.ClipVolume.CIRCLE_X_POSITIVE).changeColor(l.ClipVolume.COLOR_YELLOW),
            this.volume.getObjectByName(l.ClipVolume.CIRCLE_Y_NEGATIVE).changeColor(l.ClipVolume.COLOR_YELLOW),
            this.volume.getObjectByName(l.ClipVolume.CIRCLE_Y_POSITIVE).changeColor(l.ClipVolume.COLOR_YELLOW)) : this.visible = !1)
        }
        ,
        e.prototype.setObjectVisibility = function(t, e) {
            var n = this.volume.getObjectByName(t);
            n.visible = e,
            n.userData.raycastable = e
        }
        ,
        e.prototype.getBoxFrame = function() {
            return this.volume.getObjectByName(l.ClipVolume.BOX_FRAME_NAME)
        }
        ,
        e.prototype.scaleHandlesAccordingToZoomLevel = function(t) {
            var n = this.collectMeshesToScale(this.axisNames)
              , i = this.collectMeshesToScale(this.circleNames)
              , r = this.collectMeshesToScale(this.perspectiveArcsNames)
              , o = this.collectMeshesToScale(this.rotationCirclesNames);
            t.getCamera().updateMatrixWorld(!0),
            d.setMeshScreenSize(t, n, e.AXIS_PIXEL_SIZE, !1, !0),
            d.setMeshScreenSize(t, i, e.CIRCLES_PIXEL_SIZE, !1, !0),
            d.setMeshScreenSize(t, r, this.PERSPECTIVE_ARCS_PIXEL_SIZE, !1, !0),
            d.setMeshScreenSize(t, o, e.ROTATION_CIRCLE_PIXEL_SIZE)
        }
        ,
        e.prototype.collectMeshesToScale = function(t) {
            for (var e = [], n = 0, i = t; n < i.length; n++) {
                var r = i[n]
                  , o = this.volume.getObjectByName(r);
                o && e.push(o.children[0])
            }
            return e
        }
        ,
        e.prototype.rotateRotationArcsToCamera = function(t) {
            if (!p.HighlightableObject3D.isDragging) {
                var n = (new a.Matrix4).getInverse(this.volume.matrixWorld)
                  , i = t.getWorldPosition(this.volume.position.clone()).applyMatrix4(n)
                  , r = this.volume.getObjectByName(this.perspectiveArcsNames[0])
                  , o = this.volume.getObjectByName(this.perspectiveArcsNames[1])
                  , s = this.volume.getObjectByName(this.perspectiveArcsNames[2]);
                e.adjustHorizontalRotation(i, r, o, s),
                e.adjustVerticalRotation(i, r, o, s)
            }
        }
        ,
        e.prototype.updateVolumeObjectsPositions = function() {
            var t = this.volume.getObjectByName(l.ClipVolume.BOX_NAME).scale;
            this.volume.getObjectByName(l.ClipVolume.NEGATIVE_X_POSITIVE_Y_CORNER).position.set(-t.x / 2, t.y / 2, t.z / 2),
            this.volume.getObjectByName(l.ClipVolume.POSITIVE_X_POSITIVE_Y_CORNER).position.set(t.x / 2, t.y / 2, t.z / 2),
            this.volume.getObjectByName(l.ClipVolume.NEGATIVE_X_NEGATIVE_Y_CORNER).position.set(-t.x / 2, -t.y / 2, t.z / 2),
            this.volume.getObjectByName(l.ClipVolume.POSITIVE_X_NEGATIVE_Y_CORNER).position.set(t.x / 2, -t.y / 2, t.z / 2),
            this.volume.getObjectByName(l.ClipVolume.CIRCLE_X_POSITIVE).position.set(t.x / 2, 0, 0),
            this.volume.getObjectByName(l.ClipVolume.CIRCLE_X_NEGATIVE).position.set(-t.x / 2, 0, 0),
            this.volume.getObjectByName(l.ClipVolume.CIRCLE_Y_POSITIVE).position.set(0, t.y / 2, 0),
            this.volume.getObjectByName(l.ClipVolume.CIRCLE_Y_NEGATIVE).position.set(0, -t.y / 2, 0),
            this.volume.getObjectByName(l.ClipVolume.CIRCLE_Z_POSITIVE).position.set(0, 0, t.z / 2),
            this.volume.getObjectByName(l.ClipVolume.CIRCLE_Z_NEGATIVE).position.set(0, 0, -t.z / 2)
        }
        ,
        e.adjustHorizontalRotation = function(t, e, n, i) {
            t.x > 0 && t.y >= 0 ? (e.children[0].rotation.x = 0,
            n.children[0].rotation.x = 0,
            i.children[0].rotation.z = 0,
            e.rotationOrientationAdjustment = -1,
            n.rotationOrientationAdjustment = -1) : t.x <= 0 && t.y > 0 ? (e.children[0].rotation.x = -Math.PI,
            n.children[0].rotation.x = 0,
            i.children[0].rotation.z = Math.PI / 2,
            e.rotationOrientationAdjustment = -1,
            n.rotationOrientationAdjustment = 1) : t.x < 0 && t.y <= 0 ? (e.children[0].rotation.x = -Math.PI,
            n.children[0].rotation.x = -Math.PI,
            i.children[0].rotation.z = Math.PI,
            e.rotationOrientationAdjustment = 1,
            n.rotationOrientationAdjustment = 1) : t.x >= 0 && t.y < 0 && (e.children[0].rotation.x = 0,
            n.children[0].rotation.x = -Math.PI,
            i.children[0].rotation.z = 3 * Math.PI / 2,
            e.rotationOrientationAdjustment = 1,
            n.rotationOrientationAdjustment = -1)
        }
        ,
        e.adjustVerticalRotation = function(t, e, n, i) {
            t.z >= 0 ? (e.children[0].rotation.z = 0,
            n.children[0].rotation.z = 0,
            i.rotationOrientationAdjustment = -1) : (e.children[0].rotation.z = Math.PI / 2,
            n.children[0].rotation.z = Math.PI / 2,
            i.rotationOrientationAdjustment = 1)
        }
        ,
        e.prototype.addClipBoxToPointCloud = function() {
            var t = this.getBoxFrame();
            if (t) {
                t.updateWorldMatrix(!0, !1);
                var e = {
                    matrix: t.matrixWorld,
                    inverse: (new a.Matrix4).getInverse(t.matrixWorld),
                    box: void 0,
                    position: void 0
                };
                this.params.pointCloudLayer.setClipBoxes([e])
            }
        }
        ,
        e.prototype.removeClipBoxes = function() {
            this.params.pointCloudLayer.setClipBoxes([])
        }
        ,
        e.prototype.hasTheClippingVolumeChanged = function() {
            var t = this.volume.quaternion.x !== this.quaternionBackup.x || this.volume.quaternion.y !== this.quaternionBackup.y || this.volume.quaternion.z !== this.quaternionBackup.z || this.volume.quaternion.w !== this.quaternionBackup.w || this.volume.position.x !== this.positionBackup.x || this.volume.position.y !== this.positionBackup.y || this.volume.position.z !== this.positionBackup.z;
            return t && (this.positionBackup = this.volume.position.clone(),
            this.quaternionBackup = this.volume.quaternion.clone()),
            t
        }
        ,
        e.prototype.recenterCamera = function() {
            var t = this
              , n = this.view.getDefaultViewport().cameraController;
            if (n instanceof b.OrbitCameraController) {
                var i = new h.Tween(n.target).to({
                    x: this.volume.position.x,
                    y: this.volume.position.y,
                    z: this.volume.position.z
                }, e.CAMERA_MOVE_DURATION).easing((function(t) {
                    return h.Easing.Sinusoidal.InOut(t)
                }
                )).onComplete((function() {
                    return t.view.forgetTween(i)
                }
                )).start();
                if (this.view.watchTween(i),
                this.view instanceof f.MainView && this.view.viewMode === m.SceneViewMode.Map) {
                    var r = this.view.getMapLayer()
                      , o = new h.Tween(r.targetViewport.camera.position).to({
                        x: this.volume.position.x,
                        y: this.volume.position.y
                    }, e.CAMERA_MOVE_DURATION).easing((function(t) {
                        return h.Easing.Sinusoidal.InOut(t)
                    }
                    )).onComplete((function() {
                        return t.view.forgetTween(o)
                    }
                    )).start();
                    this.view.watchTween(o)
                }
            }
        }
        ,
        e.prototype.visibilityChanged = function() {
            var t = this;
            this.visible && this.reinitObjectsVisibility(),
            setTimeout((function() {
                t.updateHotkeys()
            }
            ))
        }
        ,
        e.prototype.updateHotkeys = function() {
            this.visible ? this.factory.hotkeys.add({
                combo: ["esc"],
                description: this.factory.gettext("Cancel drag"),
                callback: function() {}
            }) : this.factory.hotkeys.del(["esc"])
        }
        ,
        e.prototype.resetCube = function() {
            var t = new a.Vector3(l.ClipVolume.VOLUME_START_SCALE_X,l.ClipVolume.VOLUME_START_SCALE_Y,l.ClipVolume.VOLUME_START_SCALE_Z)
              , e = new a.Quaternion;
            this.volume.quaternion.set(e.x, e.y, e.z, e.w),
            this.setVolumePositionAndScale(new a.Vector3(0,0,0), t)
        }
        ,
        e.CAMERA_MOVE_DURATION = 500,
        e.AXIS_PIXEL_SIZE = 190,
        e.CIRCLES_PIXEL_SIZE = 15,
        e.ROTATION_CIRCLE_PIXEL_SIZE = 35,
        e.ROTATION_CIRCLE_DISTANCE_PIXEL_SIZE = e.ROTATION_CIRCLE_PIXEL_SIZE * w.RotationCircle.EDGE_TO_CIRCLE_RATIO,
        e
    }(o.SceneLayer);
    e.VolumeClippingLayer = E;
    var C = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this) || this;
            return o.DownloadPointCloudService = e,
            o.hotkeys = n,
            o.gettext = i,
            o.FloorChangerService = r,
            o
        }
        return r(e, t),
        e.prototype.create = function(t, e, n) {
            return new E(t,e,n,this)
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(S.ɵɵinject(x.DownloadPointCloudService),S.ɵɵinject("hotkeys"),S.ɵɵinject("gettext"),S.ɵɵinject(M.FloorChangerService))
        }
        ,
        e.ɵprov = S.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(o.SceneLayerFactory);
    e.VolumeClippingLayerFactory = C,
    S.ɵsetClassMetadata(C, [{
        type: u.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: x.DownloadPointCloudService
        }, {
            type: void 0,
            decorators: [{
                type: u.Inject,
                args: ["hotkeys"]
            }]
        }, {
            type: void 0,
            decorators: [{
                type: u.Inject,
                args: ["gettext"]
            }]
        }, {
            type: M.FloorChangerService
        }]
    }
    ), null),
    s.module("IVWebApp").service("VolumeClippingLayerFactory", c.downgradeInjectable(C))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(323)
      , a = n(4)
      , s = n(184)
      , c = function(t) {
        function e(e, n, i, r, o) {
            var s = t.call(this, e, i, r) || this;
            return s.direction = n,
            s.mapViewMode = o,
            s.rotationOrientationAdjustment = -1,
            s.center = new a.Vector3(0,0,0),
            s
        }
        return r(e, t),
        e.prototype.onDragStart = function(t, e) {
            var n;
            this.axisLine = this.findAxisLine(this.direction.clone()),
            s.HighlightableObject3D.isUsedInMapViewMode(e) ? n = this.view.getPositionOnGroundPlane(t.x, t.y, void 0, e) : (this.planeOnTheAxis = this.findPlaneOnTheAxis(e.getCamera().position, this.axisLine),
            n = o.DraggableObject3D.getMousePositionOnPlane(t, this.planeOnTheAxis, e)),
            n && (this.centerToStartDraggingPosition = this.getDistanceFromCenter(n),
            this.parentInitialQuaternion = this.parent.quaternion.clone())
        }
        ,
        e.prototype.onDrag = function(t, e) {
            var n = s.HighlightableObject3D.isUsedInMapViewMode(e) ? this.view.getPositionOnGroundPlane(t.x, t.y, void 0, e) : o.DraggableObject3D.getMousePositionOnPlane(t, this.planeOnTheAxis, e);
            if (n) {
                var i = this.getDistanceFromCenter(n)
                  , r = this.getOrientatedAngle(e, i);
                this.rotateParentCube(r),
                this.view.invalidateScene()
            }
        }
        ,
        e.prototype.onDragCancel = function() {
            this.unsetRotateCursor(),
            this.parent.quaternion.copy(this.parentInitialQuaternion),
            this.parent.updateMatrixWorld(!0),
            this.view.invalidateScene()
        }
        ,
        e.prototype.onDragEnd = function() {
            this.unsetRotateCursor()
        }
        ,
        e.prototype.onMouseOver = function() {
            this.mapViewMode && !s.HighlightableObject3D.isDragging && this.setRotateCursor()
        }
        ,
        e.prototype.onMouseOut = function() {
            s.HighlightableObject3D.isDragging || this.unsetRotateCursor()
        }
        ,
        e.prototype.setRotateCursor = function() {
            var t = this.view.divContainer.container;
            t.classList.contains("rotate-cursor") || t.classList.add("rotate-cursor")
        }
        ,
        e.prototype.unsetRotateCursor = function() {
            var t = this.view.divContainer.container;
            t && t.classList.remove("rotate-cursor")
        }
        ,
        e.prototype.getDistanceFromCenter = function(t) {
            this.center.set(0, 0, 0);
            var e = this.center.applyMatrix4(this.parent.matrixWorld);
            return t.clone().sub(e)
        }
        ,
        e.prototype.getOrientatedAngle = function(t, e) {
            var n, i;
            return s.HighlightableObject3D.isUsedInMapViewMode(t) ? (n = Math.atan2(this.centerToStartDraggingPosition.clone().cross(e).dot(this.direction), this.centerToStartDraggingPosition.clone().setZ(0).dot(e.setZ(0))),
            i = -1) : (n = this.centerToStartDraggingPosition.angleTo(e),
            i = Math.sign(this.centerToStartDraggingPosition.clone().cross(e).dot(this.distanceToCameraFromAxisLine.clone()))),
            n * i * this.rotationOrientationAdjustment
        }
        ,
        e.prototype.rotateParentCube = function(t) {
            this.parent.quaternion.copy(this.parentInitialQuaternion),
            this.parent.rotateOnAxis(this.direction, t)
        }
        ,
        e
    }(o.DraggableObject3D);
    e.RotationObject = c
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(4)
      , a = n(184)
      , s = n(101)
      , c = function(t) {
        function e(n, i, r, a, s) {
            var c = t.call(this, n, i, a, s, !0) || this;
            return c.circleGeometry = new o.CircleGeometry(e.RADIUS,16),
            c.circleOutlineGeometry = new o.CircleGeometry(e.RADIUS + .02,32),
            c.circlePickGeometry = new o.CircleGeometry(e.RADIUS + .1,8),
            c.edgeGeometry = new o.CylinderGeometry(e.EDGE_WIDTH,e.EDGE_WIDTH,e.EDGE_LENGTH),
            c.createObject(r),
            c.createObjectOutline(),
            c.createPickObject(),
            c.createEdge(r),
            c
        }
        return r(e, t),
        e.prototype.createObject = function(t) {
            var e = this
              , i = new o.MeshBasicMaterial({
                map: s.getTextureLoader().load(n(1222), (function() {
                    return e.view.invalidateScene()
                }
                )),
                opacity: a.HighlightableObject3D.NON_HIGHLIGHTED_OPACITY,
                transparent: !0
            });
            this.object = new o.Mesh(this.circleGeometry,i),
            this.object.renderOrder = 1,
            this.add(this.object)
        }
        ,
        e.prototype.createObjectOutline = function() {
            var t = new o.MeshBasicMaterial({
                color: a.HighlightableObject3D.OUTLINE_COLOR,
                opacity: a.HighlightableObject3D.NON_HIGHLIGHTED_OPACITY,
                transparent: !0
            });
            this.objectOutline = new o.Mesh(this.circleOutlineGeometry,t),
            this.objectOutline.renderOrder = 0,
            this.object.add(this.objectOutline)
        }
        ,
        e.prototype.createPickObject = function() {
            var t = new o.MeshBasicMaterial({
                visible: !1
            });
            this.pickObject = new o.Mesh(this.circlePickGeometry,t),
            this.object.add(this.pickObject)
        }
        ,
        e.prototype.createEdge = function(t) {
            var n = new o.MeshBasicMaterial({
                color: t,
                opacity: a.HighlightableObject3D.NON_HIGHLIGHTED_OPACITY,
                transparent: !0
            })
              , i = new o.Mesh(this.edgeGeometry,n);
            i.name = e.EDGE_NAME,
            i.position.y = -e.RADIUS - e.EDGE_LENGTH / 2,
            this.object.add(i)
        }
        ,
        e.EDGE_TO_CIRCLE_RATIO = 1.25,
        e.RADIUS = .3,
        e.EDGE_LENGTH = e.RADIUS * e.EDGE_TO_CIRCLE_RATIO,
        e.EDGE_WIDTH = .01,
        e.EDGE_NAME = "edge",
        e
    }(n(572).RotationObject);
    e.RotationCircle = c
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    ), o = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
    , a = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var s = n(80)
      , c = n(0)
      , l = n(4)
      , u = n(2)
      , d = n(6)
      , p = n(171)
      , h = n(85)
      , f = (n(91),
    n(52))
      , m = n(563)
      , g = n(8)
      , v = n(137)
      , y = (n(41),
    n(121),
    n(1228))
      , b = (n(24),
    n(14),
    n(17),
    n(253))
      , w = n(7)
      , S = (n(130),
    n(28),
    n(21),
    n(1229))
      , x = n(1230)
      , M = n(543)
      , E = n(540)
      , C = n(542)
      , A = n(643)
      , T = (n(259),
    n(22),
    n(644))
      , O = n(645)
      , _ = n(627)
      , P = n(628)
      , I = (n(447),
    n(146))
      , k = (n(27),
    n(387))
      , D = n(0)
      , R = n(171)
      , L = n(91)
      , N = n(41)
      , j = n(24)
      , V = n(14)
      , F = n(17)
      , U = n(28)
      , B = n(121)
      , z = n(21)
      , G = n(130)
      , H = n(259)
      , W = n(27)
      , q = n(22)
      , X = n(447)
      , Y = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e, n, i) || this;
            return o.factory = r,
            o.topViewPlane = new l.Plane(new l.Vector3(0,0,1),-p.MeasurementsService.DEFAULT_MEASUREMENT_HEIGHT),
            o.overrideCursorMovement = !1,
            o.measurementGroup = new l.Group,
            o.isTransitioning = !1,
            o.initFields(),
            o.assignSignalCallbacks(),
            o.sceneGroup.add(o.measurementGroup),
            o
        }
        return r(e, t),
        e.prototype.initFields = function() {
            var t = this;
            this.sceneGroup.name = "MeasurementsLayer",
            this.errorWrapper = this.factory.ErrorService.createDefaultWrapper(),
            this.onPointHover = function(e, n) {
                return t.factory.MeasurementsService.onMeasurementPointHovered.emit(e, n)
            }
            ,
            this.onPointClick = function(e, n) {
                return t.factory.MeasurementsService.onMeasurementPointClicked.emit(e, n)
            }
            ,
            this.onPointDragStart = function(e, n, i, r) {
                return !t.isToolActive() && !t.isMeasurementForbidden(i, n.parent) && (t.draggedMeasurement = e,
                t.draggedPointInitCoords = n.position.clone(),
                t.dragMeasurementObjectStart(e, n, i, r),
                !0)
            }
            ,
            this.onPointDrag = function(e, n, i, r) {
                t.draggedMeasurement === e && t.dragMeasurementObject(e, n, i, r)
            }
            ,
            this.onPointDragEnd = function(e, n) {
                t.draggedMeasurement === e && (t.draggedPointInitCoords.equals(n.position) || (t.factory.TrackingService.trackPreDefinedEvent((new A.MeasurementModifiedEvent).withModification(A.ModificationType.POINT_CHANGED)),
                e.markDirty()),
                t.draggedMeasurement = void 0,
                t.draggedPointInitCoords = void 0,
                t.dragMeasurementObjectEnd(e, n))
            }
        }
        ,
        e.prototype.assignSignalCallbacks = function() {
            var t = this;
            this.trackSignal(this.factory.MeasurementsService.onMeasurementHovered).connect((function() {
                return t.updateMeasurementObjects()
            }
            )),
            this.trackSignal(this.factory.MeasurementsService.onMeasurementPointClicked).connect((function(e, n) {
                return t.doMeasurement(e, n, !0).catch(g.handleWarning)
            }
            )),
            this.trackSignal(this.factory.MeasurementsService.onMeasurementPointHovered).connect((function(e, n) {
                t.overrideCursorMovement = e,
                t.isToolActive() || (t.hoveredMeasurementObject = e ? n.parent : void 0),
                e && t.onCursorUpdate(n ? n.position : void 0)
            }
            )),
            this.trackSignal(this.factory.MeasurementsService.measurementToolSelectionChanged).connect((function(e) {
                return t.onToolSelectionChanged(e)
            }
            )),
            this.trackSignal(this.factory.MeasurementsService.measurementsUpdated).connect((function(e) {
                t.factory.ModeService.isMeasurementsMode() && t.updateObjects(e)
            }
            )),
            this.trackSignal(this.factory.CursorService.cursorChanged).connect((function() {
                var e;
                if (!t.overrideCursorMovement && t.factory.ModeService.isMeasurementsMode() && t.visible) {
                    var n = null === (e = t.factory.CursorService.getCursorData()) || void 0 === e ? void 0 : e.location;
                    t.onCursorUpdate(n)
                }
            }
            )),
            this.trackSignal(this.factory.UnitService.unitChanged).connect((function() {
                t.visible && t.updateObjects(!0)
            }
            )),
            this.trackSignal(this.factory.ViewService.mainView.screenshotModeToggled).connect((function(e) {
                var n;
                e && t.visible ? (t.measurementGroup.children.length = 0,
                (n = t.measurementGroup).add.apply(n, t.factory.MeasurementsService.measurements.map((function(t) {
                    return t.object
                }
                )))) : t.updateMeasurementObjects()
            }
            ))
        }
        ,
        e.prototype.updateObjects = function(t) {
            t && (this.measurementGroup.children = [],
            this.factory.MeasurementsService.measurements.forEach((function(t) {
                return t.disposeObject()
            }
            ))),
            this.updateMeasurementObjects()
        }
        ,
        e.prototype.onToolSelectionChanged = function(t) {
            this.factory.ModeService.isMeasurementsMode() && (this.removeTemporaryMeasurement(),
            document.body.style.cursor = "auto",
            void 0 === t ? this.factory.CursorService.setCursorStyle(m.CursorStyle.DISK) : (this.factory.MeasurementsService.measurements.forEach((function(t) {
                return t.object.markNotFresh()
            }
            )),
            this.factory.CursorService.setCursorStyle(m.CursorStyle.CROSS)),
            this.currentTool = t,
            this.updateMeasurementObjects())
        }
        ,
        e.prototype.isToolActive = function() {
            return void 0 !== this.factory.MeasurementsService.currentMeasurementMode
        }
        ,
        e.prototype.onBeforeRenderViewport = function(e) {
            this.visible && (t.prototype.onBeforeRenderViewport.call(this, e),
            this.measurementGroup.visible = !this.isTransitioning || e.name !== f.SplitViewportName.DEFAULT_VIEW || this.factory.PointCloudMenuService.isCloudVisible(),
            this.factory.MeasurementsService.measurements.forEach((function(t) {
                t.updateOrientationForViewport(e),
                t.updateScaleForViewport(e)
            }
            )),
            this.temporaryMeasurement && (this.temporaryMeasurement.updateOrientationForViewport(e),
            this.temporaryMeasurement.updateMeshScaleForViewport(e)),
            this.updateMeasurementsVisibility(),
            this.measurementGroup.updateWorldMatrix(!1, !0))
        }
        ,
        e.prototype.updateMeasurementObjects = function() {
            var t, e;
            if (this.visible && !this.factory.ViewService.mainView.isInScreenshotMode()) {
                var n = this.factory.MeasurementsService
                  , i = n.measurements.filter((function(t) {
                    return t.object && t.visible
                }
                )).map((function(t) {
                    return t.object
                }
                ));
                this.temporaryMeasurement && i.push(this.temporaryMeasurement);
                var r = this.measurementGroup.children.filter((function(t) {
                    return t instanceof v.MeasurementObject3D
                }
                ))
                  , o = w.xor(r, i)
                  , a = w.intersection(o, r);
                0 !== a.length && (t = this.measurementGroup).remove.apply(t, a);
                var s = w.intersection(o, i);
                0 !== s.length && (e = this.measurementGroup).add.apply(e, s);
                var c = n.measurements.filter((function(t) {
                    return !t.object
                }
                ));
                this.createAndAddMeasurements(c),
                this.setUpVisibleObject3DMouseListeners(),
                this.view.invalidateScene()
            }
        }
        ,
        e.prototype.createAndAddMeasurements = function(t) {
            for (var e = this, n = this.factory.MeasurementsService, i = this.factory.TrackingService, r = function(t) {
                t.createObject(),
                t.isSaved() && t.object.markNotFresh();
                t.object.setMouseEventCallbacks(o.onPointHover, o.onPointClick, o.onPointDragStart, o.onPointDrag, o.onPointDragEnd, (function() {
                    return n.setMeasurementHovered(t, !t.isHovered)
                }
                )),
                t.object.onDeleteButtonClicked = function() {
                    return n.deleteMeasurements([t]).then((function() {
                        return i.trackPreDefinedEvent((new T.MeasurementsDeletedEvent).numberOfMeasurements(1).interactionArea(P.InteractionArea.MeasurementLabel))
                    }
                    )).catch(g.handleWarning)
                }
                ,
                t.object.onHideButtonClicked = function() {
                    return n.toggleVisibility([t]),
                    i.trackPreDefinedEvent((new O.MeasurementsHiddenEvent).numberOfMeasurements(1).interactionArea(P.InteractionArea.MeasurementLabel)),
                    Promise.resolve()
                }
                ,
                t.object.onSaveButtonClicked = function() {
                    return n.saveMeasurements([t]).then((function() {
                        return i.trackPreDefinedEvent((new _.MeasurementsSavedEvent).numberOfMeasurements(1).interactionArea(P.InteractionArea.MeasurementLabel))
                    }
                    )).catch(g.handleWarning)
                }
                ,
                t.object.canUserSaveMeasurements = function() {
                    return e.factory.UserService.canSaveMeasurements()
                }
                ,
                o.measurementGroup.add(t.object)
            }, o = this, a = 0, s = t; a < s.length; a++) {
                r(s[a])
            }
        }
        ,
        e.prototype.setUpVisibleObject3DMouseListeners = function() {
            for (var t = this.factory.MeasurementsService, e = t.measurements.filter((function(t) {
                return t.object && t.visible
            }
            )), n = function(e) {
                e.object.cleanUpMouseListeners(),
                e.isHovered && t.measurements.forEach((function(t) {
                    e !== t && t.object.markNotFresh()
                }
                )),
                i.isToolActive() ? e.object.setUpPointsMouseListeners() : (e.object.setHovered(e.isHovered),
                e.object.setUpMouseListeners(e))
            }, i = this, r = 0, o = e; r < o.length; r++) {
                n(o[r])
            }
        }
        ,
        e.prototype.updateMeasurementsVisibility = function() {
            if (!this.factory.ViewService.mainView.isInScreenshotMode()) {
                var t = this.factory.SiteModelRepository.data.length > 0
                  , e = this.factory.FloorChangerService.currentFloors;
                this.factory.MeasurementsService.measurements.forEach((function(n) {
                    n.object && (n.object.visible = n.visible && (!t || n.isMeasurementVisibleInFloors(e)))
                }
                ))
            }
        }
        ,
        e.prototype.onTransitionStart = function(t) {
            this.isTransitioning = t.previousImage !== t.image
        }
        ,
        e.prototype.onTransitionEnd = function(t) {
            this.isTransitioning = !1
        }
        ,
        e.prototype.onMouseMove = function(t) {
            this.factory.ModeService.isMeasurementsMode() && (this.updateCursorOnMouseMove(t),
            this.updateCursorService(t),
            this.isMeasurementAllowed = this.isToolActive() && this.factory.MeasurementsService.lastMeasurementPoint() && !this.isMeasurementForbidden(t))
        }
        ,
        e.prototype.onCursorUpdate = function(t) {
            this.isMeasurementAllowed && (this.temporaryMeasurement.putPointer(t),
            this.view.invalidateScene())
        }
        ,
        e.prototype.onClick = function(e, n) {
            return this.visible && this.factory.ModeService.isMeasurementsMode() ? (this.handleMeasurementsClick(e, n).catch(g.handleWarning),
            t.prototype.onClick.call(this, e, n)) : t.prototype.onClick.call(this, e, n)
        }
        ,
        e.prototype.handleMeasurementsClick = function(t, e) {
            return o(this, void 0, void 0, (function() {
                return a(this, (function(n) {
                    if (!e)
                        throw Error("Cursor Position is undefined.");
                    return [2, this.doMeasurement(e, t, !1)]
                }
                ))
            }
            ))
        }
        ,
        e.prototype.visibilityChanged = function() {
            var t = this;
            this.visible ? (this.updateMeasurementObjects(),
            this.view.invalidateScene()) : (this.factory.CursorService.planeLock = void 0,
            this.measurementGroup.children.length = 0,
            this.factory.MeasurementsService.measurements.forEach((function(t) {
                return t.disposeObject()
            }
            ))),
            setTimeout((function() {
                t.updateHotkeys()
            }
            ))
        }
        ,
        e.prototype.pointOfView = function() {
            var t = this.factory.ViewService.mainView;
            return new b.PointOfView(this.factory.GeoTransformationService.vectorToGlobal(t.getCamera().position),void 0,void 0,t.getImage() && t.getImage().isAtPosition(t.getCamera().position) ? t.getImage().id : void 0)
        }
        ,
        e.prototype.removeTemporaryMeasurement = function() {
            this.temporaryMeasurement && (this.measurementGroup.remove(this.temporaryMeasurement),
            this.temporaryMeasurement.dispose(),
            this.temporaryMeasurement = void 0)
        }
        ,
        e.prototype.updateCursorOnMouseMove = function(t) {
            this.isMeasurementForbidden(t, this.hoveredMeasurementObject) ? document.body.style.cursor !== k.MouseCursorStyle.NOT_ALLOWED && (this.prevCursor = document.body.style.cursor,
            this.updateMouseCursorStyle(k.MouseCursorStyle.NOT_ALLOWED)) : document.body.style.cursor === k.MouseCursorStyle.NOT_ALLOWED && this.updateMouseCursorStyle(this.prevCursor)
        }
        ,
        e.prototype.updateMouseCursorStyle = function(t) {
            document.body.style.cursor = t
        }
        ,
        e.prototype.isMeasurementForbidden = function(t, e) {
            var n = this.factory.MeasurementsService.currentMeasurementMode
              , i = this.isTopView(this.view.getViewport(t.x, t.y));
            return n ? h.ToolSpec.of(n).vertical && i : (e instanceof M.VerticalDistanceMeasurementObject3D || e instanceof E.VerticalAreaMeasurementObject3D || e instanceof C.VerticalRectangleMeasurementObject3D) && i
        }
        ,
        e.prototype.doMeasurement = function(t, e, n) {
            return o(this, void 0, void 0, (function() {
                var i, r;
                return a(this, (function(o) {
                    switch (o.label) {
                    case 0:
                        return i = this.factory.MeasurementsService,
                        this.factory.ModeService.isMeasurementsMode() && this.isToolActive() && !this.isMeasurementForbidden(e) ? (r = this.view.getViewport(e.x, e.y),
                        [4, this.errorWrapper.wrap(i.addLastMeasurementPoint(t, r, n).catch(g.handleWarning))]) : [2];
                    case 1:
                        return o.sent(),
                        this.temporaryMeasurement ? (this.factory.TrackingService.trackPreDefinedEvent((new x.PointAddedToMeasurementEvent).withMagnifyingGlass(this.factory.MagnificationService.isEnabled).withTool(i.currentMeasurementMode).withPointEnteredIn(r.name).withNumberOfPointInMeasurement(this.temporaryMeasurement.numberOfPoints + 1)),
                        this.temporaryMeasurement.addPoint(i.lastMeasurementPoint(), this.isTopView(r) ? void 0 : this.pointOfView()),
                        this.view.invalidateScene(),
                        [2]) : (this.temporaryMeasurement = this.createMeasurementObject3D(),
                        this.temporaryMeasurement.setMouseEventCallbacks(this.onPointHover, this.onPointClick, (function() {
                            return !1
                        }
                        ), (function() {}
                        ), (function() {}
                        ), (function() {}
                        )),
                        this.measurementGroup.add(this.temporaryMeasurement),
                        this.factory.TrackingService.trackPreDefinedEvent((new S.MeasurementStartedEvent).pointEnteredIn(r.name).withTool(i.currentMeasurementMode).withMagnifyingGlass(this.factory.MagnificationService.isEnabled)),
                        this.view.invalidateScene(),
                        [2])
                    }
                }
                ))
            }
            ))
        }
        ,
        e.prototype.dragMeasurementObjectStart = function(t, e, n, i) {
            this.factory.CursorService.setCursorStyle(m.CursorStyle.CROSS),
            this.dragStartView = this.view.getViewport(n.x, n.y),
            this.updateMouseCursorStyle(k.MouseCursorStyle.AUTO),
            t.object.dragObjectStart(e)
        }
        ,
        e.prototype.dragMeasurementObject = function(t, e, n, i) {
            var r = this;
            this.dragStartView.name === this.view.getViewport(n.x, n.y).name ? this.factory.CursorService.getCoordinatesForScreenPosition(this.view, n).then((function(n) {
                var o = r.isTopView(i)
                  , a = new l.Vector3(n.x,n.y,o ? e.position.z : n.z)
                  , s = t.object.dragObject(e, a, o);
                r.updateMouseCursorStyle(s ? k.MouseCursorStyle.AUTO : k.MouseCursorStyle.NOT_ALLOWED),
                t.updateFromObject(),
                r.view.invalidateScene()
            }
            )).catch(g.handleWarning) : this.updateMouseCursorStyle(k.MouseCursorStyle.NOT_ALLOWED)
        }
        ,
        e.prototype.dragMeasurementObjectEnd = function(t, e) {
            this.updateMouseCursorStyle(k.MouseCursorStyle.AUTO),
            t.object.dragObjectEnd(e),
            t.updateFromObject(),
            this.factory.CursorService.setCursorStyle(m.CursorStyle.DISK),
            this.view.invalidateScene()
        }
        ,
        e.prototype.createMeasurementObject3D = function() {
            var t = this
              , e = this.factory.MeasurementsService;
            return new (0,
            h.ToolSpec.of(e.currentMeasurementMode).initializer)(e.lastMeasurementPoint(),this.factory.UoMService,(function(n) {
                e.endMeasurement(n),
                t.removeTemporaryMeasurement()
            }
            ))
        }
        ,
        e.prototype.updateCursorService = function(t) {
            var e = this.factory.MeasurementsService
              , n = this.factory.CursorService;
            if (this.isTopView(this.view.getViewport(t.x, t.y))) {
                n.planeLock = this.topViewPlane;
                var i = e.lastMeasurementPoint();
                n.planeLock.constant = i ? -i.z : -p.MeasurementsService.DEFAULT_MEASUREMENT_HEIGHT
            } else
                n.planeLock = void 0
        }
        ,
        e.prototype.updateHotkeys = function() {
            var t = this
              , e = new y.HotKeyConfiguration(this.factory.MeasurementToolChanger,this);
            this.visible ? e.keyBindings.forEach((function(e) {
                return t.factory.hotkeys.add(e)
            }
            )) : e.keyBindings.forEach((function(e) {
                return t.factory.hotkeys.del(e.combo)
            }
            ))
        }
        ,
        e.prototype.removeMostRecentPoint = function() {
            return this.factory.TrackingService.trackPreDefinedEvent((new x.PointRemovedFromMeasurementEvent).withTool(this.currentTool)),
            this.temporaryMeasurement.undoPoint()
        }
        ,
        e.prototype.cancelCurrentMeasurement = function() {
            return this.draggedMeasurement ? (this.draggedMeasurement.object.dragObjectCancel(),
            this.dragMeasurementObjectEnd(this.draggedMeasurement, void 0),
            this.draggedMeasurement = void 0,
            this.draggedPointInitCoords = void 0,
            !1) : !!this.temporaryMeasurement && (this.removeTemporaryMeasurement(),
            this.factory.MeasurementsService.removeCurrentMeasurement(),
            this.view.invalidateScene(),
            !0)
        }
        ,
        e.prototype.completeCurrentAreaMeasurement = function() {
            return this.temporaryMeasurement instanceof I.AreaMeasurementObject3D && this.temporaryMeasurement.finishCreation()
        }
        ,
        e.prototype.isTopView = function(t) {
            return t.name === f.SplitViewportName.TOP_VIEW
        }
        ,
        e
    }(s.SceneLayer);
    e.MeasurementsLayer = Y;
    var K = function(t) {
        function e(e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g) {
            var v = t.call(this) || this;
            return v.MeasurementsService = e,
            v.CursorService = n,
            v.ErrorService = i,
            v.ModeService = r,
            v.GeoTransformationService = o,
            v.ViewService = a,
            v.FloorChangerService = s,
            v.MagnificationService = c,
            v.TrackingService = l,
            v.UoMService = u,
            v.UnitService = d,
            v.UserService = p,
            v.SiteModelRepository = h,
            v.MeasurementToolChanger = f,
            v.hotkeys = m,
            v.PointCloudMenuService = g,
            v
        }
        return r(e, t),
        e.prototype.create = function(t, e, n) {
            return new Y(t,e,n,this)
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(D.ɵɵinject(R.MeasurementsService),D.ɵɵinject(L.CursorService),D.ɵɵinject(N.ErrorService),D.ɵɵinject(j.ModeService),D.ɵɵinject(V.GeoTransformationService),D.ɵɵinject(F.ViewService),D.ɵɵinject(U.FloorChangerService),D.ɵɵinject(B.MagnificationService),D.ɵɵinject(z.TrackingService),D.ɵɵinject(G.UoMService),D.ɵɵinject(H.UnitService),D.ɵɵinject(W.UserService),D.ɵɵinject(q.SiteModelRepository),D.ɵɵinject(X.MeasurementToolChanger),D.ɵɵinject("hotkeys"),D.ɵɵinject("PointCloudMenuService"))
        }
        ,
        e.ɵprov = D.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(s.SceneLayerFactory);
    e.MeasurementsLayerFactory = K,
    D.ɵsetClassMetadata(K, [{
        type: c.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: R.MeasurementsService
        }, {
            type: L.CursorService
        }, {
            type: N.ErrorService
        }, {
            type: j.ModeService
        }, {
            type: V.GeoTransformationService
        }, {
            type: F.ViewService
        }, {
            type: U.FloorChangerService
        }, {
            type: B.MagnificationService
        }, {
            type: z.TrackingService
        }, {
            type: G.UoMService
        }, {
            type: H.UnitService
        }, {
            type: W.UserService
        }, {
            type: q.SiteModelRepository
        }, {
            type: X.MeasurementToolChanger
        }, {
            type: void 0,
            decorators: [{
                type: c.Inject,
                args: ["hotkeys"]
            }]
        }, {
            type: void 0,
            decorators: [{
                type: c.Inject,
                args: ["PointCloudMenuService"]
            }]
        }]
    }
    ), null),
    u.module("IVWebApp").service("MeasurementsLayerFactory", d.downgradeInjectable(K))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(453)
      , a = n(217)
      , s = n(85)
      , c = function(t) {
        function e(e, n, i, r, o) {
            var a = t.call(this, e, n, i, r) || this;
            return a.object = n,
            a.startPoint = n.getStartPoint(),
            a.endPoint = n.getEndPoint(),
            o && 2 === o.length && (a.globalStartPoint = o[0],
            a.globalEndpoint = o[1]),
            a.value = a.length(),
            a.disposeObject(),
            a
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "nameIfEmpty", {
            get: function() {
                return e.DEFAULT_NAME
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "globalEndpoint", {
            get: function() {
                return this._globalEndpoint ? this._globalEndpoint : this.injectables.TransformService.localToGlobal.transform(this.endPoint.clone())
            },
            set: function(t) {
                this._globalEndpoint = t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "globalStartPoint", {
            get: function() {
                return this._globalStartPoint ? this._globalStartPoint : this.injectables.TransformService.localToGlobal.transform(this.startPoint.clone())
            },
            set: function(t) {
                this._globalStartPoint = t
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.onReferenceSystemChangedEvent = function() {
            this.startPoint = this.injectables.TransformService.globalToLocal.transform(this.globalStartPoint.clone()),
            this.endPoint = this.injectables.TransformService.globalToLocal.transform(this.globalEndpoint.clone())
        }
        ,
        e.prototype.onBeforeReferenceSystemChangedEvent = function() {
            this._globalStartPoint || (this._globalStartPoint = this.injectables.TransformService.localToGlobal.transform(this.startPoint.clone())),
            this._globalEndpoint || (this._globalEndpoint = this.injectables.TransformService.localToGlobal.transform(this.endPoint.clone()))
        }
        ,
        e.prototype.updateFromObject = function() {
            this.startPoint = this.object.getStartPoint(),
            this.endPoint = this.object.getEndPoint(),
            this.globalStartPoint = this.injectables.TransformService.localToGlobal.transform(this.startPoint.clone()),
            this.globalEndpoint = this.injectables.TransformService.localToGlobal.transform(this.endPoint.clone()),
            this.value = this.length()
        }
        ,
        e.prototype.disposeObject = function() {
            this.object && (this.object.dispose(),
            this.object = void 0)
        }
        ,
        e.prototype.createObject = function() {
            if (!this.object) {
                var t = new (0,
                s.ToolSpec.of(this.type).initializer)(this.startPoint,this.UoMService);
                t instanceof a.DistanceMeasurementObject3D && (this.object = t,
                this.object.addPoint(this.endPoint)),
                this.object.measurement = this
            }
        }
        ,
        e.prototype.getPoints = function() {
            return [this.startPoint, this.endPoint]
        }
        ,
        e.prototype.getGlobalPoints = function() {
            return [this.globalStartPoint, this.globalEndpoint]
        }
        ,
        e.prototype.copy = function(e, n, i) {
            return t.prototype.fill.call(this, e, n, i),
            this.startPoint = e.startPoint.clone(),
            this.endPoint = e.endPoint.clone(),
            this
        }
        ,
        e.prototype.length = function() {
            if (this.globalStartPoint && this.globalEndpoint) {
                var t = this.injectables.TransformService.getTemporaryTransform(this.globalStartPoint.x, this.globalStartPoint.y)
                  , e = t.transform(this.globalStartPoint.clone())
                  , n = t.transform(this.globalEndpoint.clone());
                return e.distanceTo(n)
            }
        }
        ,
        e.DEFAULT_NAME = "Distance",
        e
    }(o.Measurement);
    e.DistanceMeasurement = c
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(453)
      , a = n(4)
      , s = n(146)
      , c = n(85)
      , l = n(258)
      , u = function(t) {
        function e(e, n, i, r, o) {
            var a = t.call(this, e, n, i, r) || this;
            return a.points = a.object.getPointsPositions(),
            o && o.length > 2 && (a.globalPoints = o),
            a.value = a.area(),
            a.disposeObject(),
            a
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "nameIfEmpty", {
            get: function() {
                return e.DEFAULT_NAME
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "globalPoints", {
            get: function() {
                var t = this;
                return this._globalPoints ? this._globalPoints : this.points.map((function(e) {
                    return t.injectables.TransformService.localToGlobal.transform(e.clone())
                }
                ))
            },
            set: function(t) {
                this._globalPoints = t
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.onReferenceSystemChangedEvent = function() {
            var t = this;
            this.points = this.globalPoints.map((function(e) {
                return t.injectables.TransformService.globalToLocal.transform(e.clone())
            }
            ))
        }
        ,
        e.prototype.onBeforeReferenceSystemChangedEvent = function() {
            var t = this;
            this._globalPoints || (this._globalPoints = this.points.map((function(e) {
                return t.injectables.TransformService.localToGlobal.transform(e.clone())
            }
            )))
        }
        ,
        e.prototype.updateFromObject = function() {
            var t = this;
            this.points = this.object.getPointsPositions(),
            this.globalPoints = this.points.map((function(e) {
                return t.injectables.TransformService.localToGlobal.transform(e.clone())
            }
            )),
            this.value = this.area()
        }
        ,
        e.prototype.disposeObject = function() {
            this.object && (this.object.dispose(),
            this.object = void 0)
        }
        ,
        e.prototype.createObject = function() {
            if (!this.object) {
                var t = new (0,
                c.ToolSpec.of(this.type).initializer)(this.points,this.UoMService);
                t instanceof s.AreaMeasurementObject3D && (this.object = t),
                this.object.measurement = this
            }
        }
        ,
        e.prototype.getPoints = function() {
            return this.points
        }
        ,
        e.prototype.getGlobalPoints = function() {
            return this.globalPoints
        }
        ,
        e.prototype.copy = function(e, n, i) {
            return t.prototype.fill.call(this, e, n, i),
            this.points = e.points.map((function(t) {
                return t.clone()
            }
            )),
            this
        }
        ,
        e.prototype.area = function() {
            if (!(this.globalPoints.length < 3)) {
                var t = this.injectables.TransformService.getTemporaryTransform(this.globalPoints[0].x, this.globalPoints[0].y)
                  , e = this.globalPoints.map((function(e) {
                    return t.transform(e.clone())
                }
                ))
                  , n = l.rotateToHorizontalPlane(e).points
                  , i = a.ShapeUtils.area(n);
                return Math.abs(i)
            }
        }
        ,
        e.DEFAULT_NAME = "Area",
        e
    }(o.Measurement);
    e.AreaMeasurement = u
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.elapsedTime = function(t) {
            return this.withData("elapsedTime", t),
            this
        }
        ,
        e
    }(n(64).TrackingEvent);
    e.ScreenshotRenderingEvent = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(64)
      , a = n(85)
      , s = function(t) {
        function e() {
            return t.call(this, "MeasurementToolChanged") || this
        }
        return r(e, t),
        e.prototype.withTool = function(t) {
            return this.withData("tool", a.Tool[t]),
            this
        }
        ,
        e.prototype.withStatus = function(t) {
            return this.withData("status", t ? "selected" : "deselected"),
            this
        }
        ,
        e.prototype.withEventSource = function(t) {
            return this.withData("eventSource", t),
            this
        }
        ,
        e
    }(o.TrackingEvent);
    e.MeasurementToolChangedEvent = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    ), o = this && this.__spreadArrays || function() {
        for (var t = 0, e = 0, n = arguments.length; e < n; e++)
            t += arguments[e].length;
        var i = Array(t)
          , r = 0;
        for (e = 0; e < n; e++)
            for (var o = arguments[e], a = 0, s = o.length; a < s; a++,
            r++)
                i[r] = o[a];
        return i
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var a = n(80)
      , s = n(0)
      , c = n(4)
      , l = (n(91),
    n(121),
    n(41),
    n(2))
      , u = n(6)
      , d = (n(31),
    n(101))
      , p = n(67)
      , h = (n(139),
    n(1231))
      , f = n(311)
      , m = n(8)
      , g = n(0)
      , v = n(121)
      , y = n(91)
      , b = n(41)
      , w = n(31)
      , S = n(139)
      , x = function(t) {
        function e(e, n, i) {
            var r = t.call(this, e, n) || this;
            return r.factory = i,
            r.tempPosition = new c.Vector3,
            r.tempPosition2 = new c.Vector3,
            r.sceneChildren = [],
            r.MAGNIFIER_SIZE = 200,
            r.MAGNIFICATION_CROSSHAIR_RENDER_ORDER = f.RenderOrder.MAGNIFICATION_CROSSHAIR,
            r.MAGNIFICATION_MESH_RENDER_ORDER = f.RenderOrder.MAGNIFICATION,
            r.MESH_JUMP_DISTANCE = 300,
            r.POINT_MESH_DISTANCE = 200,
            r.MAGNIFICATION_CAMERA_FAR = 1.9,
            r.MAGNIFICATION_CAMERA_NEAR = .01,
            r.CIRCLE_SEGMENTS = 32,
            r.CIRCLE_RADIUS = .5,
            r.MAX_LOD = 8,
            r.MAGNIFICATION_CAMERA_DEFAULT_DISTANCE = .7,
            r.EMPTY_SCENE = [],
            r.HIGHLIGHT_COLOR = new c.Vector4(1,0,0,.6),
            r.sceneGroup.name = "MagnificationLayer",
            r.setupMagnificationCameraAndMeshes(),
            r.loadMagnificationCrossHairTexture(),
            r.addSignalHandlers(),
            r.sceneChildren = [r.magnifier, r.magnifierCrossHair],
            r
        }
        return r(e, t),
        e.prototype.onBeforeRenderViewport = function(t) {
            var e = this;
            if (this.shouldRenderForViewport(t)) {
                this.updateMagnificationCameraFOV(),
                this.adjustMagnificationTexturePosition(this.lastCursorData),
                this.sceneGroup.children = this.sceneChildren;
                var n = this.getDatasetsWithSceneNodes()
                  , i = n.map((function(t) {
                    return t.pointCloudSceneNode
                }
                ))
                  , r = n.find((function(t) {
                    return t.id === e.lastCursorData.datasetId
                }
                ));
                this.pointCloudOnlyScene.children = o(i),
                this.renderMagnificationRenderTarget(r),
                p.setMeshScreenSize(t, this.magnifier, this.MAGNIFIER_SIZE),
                p.setMeshScreenSize(t, this.magnifierCrossHair, this.MAGNIFIER_SIZE)
            } else
                this.sceneGroup.children = this.EMPTY_SCENE
        }
        ,
        e.prototype.onMouseMove = function(e) {
            t.prototype.onMouseMove.call(this, e),
            this.mouseInDefaultViewport = this.view.getDefaultViewport().contains(e.x, e.y)
        }
        ,
        e.prototype.renderMagnificationRenderTarget = function(t) {
            this.view.renderer.setRenderTarget(this.magnificationRenderTarget),
            this.factory.MagnificationService.updatePointCloudsForMagnification.emit(),
            this.view.renderer.clear(),
            this.saveMaterialBlendingAndTransparency(t),
            this.updateMaterialsForMagnificationRender(t, c.NormalBlending, !0, !0),
            this.view.twoPassRenderer ? this.view.twoPassRenderer.render(this.pointCloudOnlyScene, this.magnificationCamera) : this.view.renderer.render(this.pointCloudOnlyScene, this.magnificationCamera),
            this.restoreMaterialsForMainRender(t),
            this.view.renderStats.update(this.view.renderer),
            this.view.renderer.setRenderTarget(null)
        }
        ,
        e.prototype.updateMagnificationCameraFOV = function() {
            var t = this.view.getCamera();
            t instanceof c.PerspectiveCamera && this.magnificationCamera.fov !== t.fov && (this.magnificationCamera.fov = t.fov / 2,
            this.magnificationCamera.updateProjectionMatrix(),
            this.factory.MagnificationService.updateRayCastingCameraFrustumAndPosition())
        }
        ,
        e.prototype.updateMagnificationCamera = function(t) {
            for (var e = t.location, n = 0, i = this.getDatasetsWithSceneNodes(); n < i.length; n++) {
                var r = i[n];
                r.pointCloudSceneNode.pointCloudObject && r.pointCloudSceneNode.pointCloudObject.perspectiveMaterial.highlightedPointCoordinate.copy(e)
            }
            this.tempPosition.copy(e);
            var o = this.tempPosition.sub(this.view.getCamera().position).normalize()
              , a = this.tempPosition2.copy(e)
              , s = this.view.getCamera().position.distanceTo(e)
              , c = s > 1 ? this.MAGNIFICATION_CAMERA_DEFAULT_DISTANCE : s / 2;
            this.magnificationCamera.position.copy(a.sub(o.multiplyScalar(c))),
            this.magnificationCamera.updateWorldMatrix(!1, !1),
            this.magnificationCamera.lookAt(e)
        }
        ,
        e.prototype.loadMagnificationCrossHairTexture = function() {
            var t = this;
            d.getTextureLoader().load(n(1232), (function(e) {
                t.magnifierCrossHair.material.map = e,
                t.magnifierCrossHair.material.needsUpdate = !0,
                t.view.invalidateScene()
            }
            ), void 0, (function(t) {
                return m.handleWarning(t.message)
            }
            ))
        }
        ,
        e.prototype.setupMagnificationCameraAndMeshes = function() {
            this.magnificationCamera = new c.PerspectiveCamera(0,1,this.MAGNIFICATION_CAMERA_NEAR,this.MAGNIFICATION_CAMERA_FAR),
            this.magnificationCamera.up = new c.Vector3(0,0,1),
            this.magnificationRenderTarget = new c.WebGLRenderTarget(this.MAGNIFIER_SIZE,this.MAGNIFIER_SIZE),
            this.pointCloudOnlyScene = new c.Scene,
            this.factory.MagnificationService.magnificationViewport.cameraController = new h.NoOpCameraController(this.factory.MagnificationService.magnificationViewport,this.magnificationCamera),
            e.CIRCLE_MATERIAL.map = this.magnificationRenderTarget.texture,
            e.CIRCLE_MATERIAL.needsUpdate = !0;
            var t = new c.CircleGeometry(this.CIRCLE_RADIUS,this.CIRCLE_SEGMENTS);
            this.magnifier = new c.Mesh(t,e.CIRCLE_MATERIAL),
            this.magnifierCrossHair = new c.Mesh(t,new c.MeshBasicMaterial({
                color: new c.Color(16777215),
                depthTest: !1,
                depthWrite: !1,
                transparent: !0
            })),
            this.magnifier.up = new c.Vector3(0,0,1),
            this.magnifierCrossHair.up = new c.Vector3(0,0,1),
            this.magnifier.renderOrder = this.MAGNIFICATION_MESH_RENDER_ORDER,
            this.magnifierCrossHair.renderOrder = this.MAGNIFICATION_CROSSHAIR_RENDER_ORDER
        }
        ,
        e.prototype.addSignalHandlers = function() {
            var t = this;
            this.trackSignal(this.factory.CursorService.cursorChanged).connect((function() {
                t.factory.MagnificationService.isEnabled && (t.lastCursorData = t.factory.CursorService.getCursorData(),
                t.enablePointCloudsIfNotEnabled(t.lastCursorData),
                t.factory.MagnificationService.updateRayCastingCameraFrustumAndPosition(),
                t.updateMagnificationCamera(t.lastCursorData),
                t.enablePointHighlighting(t.lastCursorData),
                t.view.invalidateScene())
            }
            )),
            this.trackSignal(this.factory.MagnificationService.magnificationModeChanged).connect((function(e) {
                e ? t.setupMagnificationMode() : t.cleanUpMagnificationMode()
            }
            ))
        }
        ,
        e.prototype.setupMagnificationMode = function() {
            this.sceneGroup.children = this.sceneChildren,
            this.pointCloudLOD = this.factory.PointCloudMenuService.config.maxDepth,
            this.factory.PointCloudMenuService.config.maxDepth = this.MAX_LOD
        }
        ,
        e.prototype.cleanUpMagnificationMode = function() {
            this.sceneGroup.children = this.EMPTY_SCENE,
            this.pointCloudOnlyScene.children = [],
            this.factory.PointCloudMenuService.config.maxDepth = this.pointCloudLOD;
            var t = this.getDatasetsWithSceneNodes().map((function(t) {
                return t.pointCloudSceneNode
            }
            ));
            this.updatePickedPointHighlighting(t, !1),
            this.factory.PointCloudMenuService.config.showPointCloud || this.factory.PointCloudMenuService.configShowPointCloudChanged.emit(this.factory.PointCloudMenuService.config.showPointCloud)
        }
        ,
        e.prototype.enablePointHighlighting = function(t) {
            var e = this.getDatasetsWithSceneNodes().filter((function(e) {
                return e.id === t.datasetId
            }
            )).map((function(t) {
                return t.pointCloudSceneNode
            }
            ));
            this.updatePickedPointHighlighting(e, !0)
        }
        ,
        e.prototype.adjustMagnificationTexturePosition = function(t) {
            var e = t.location;
            this.tempPosition.copy(e);
            var n = this.view.getDefaultViewport().projectScreenCoordinates(this.tempPosition);
            n.y - this.MESH_JUMP_DISTANCE > 0 ? n.y = n.y - this.POINT_MESH_DISTANCE : n.y = n.y + this.POINT_MESH_DISTANCE,
            n.z = 0;
            var i = this.view.getDefaultViewport().unprojectScreenCoordinates(n.x, n.y, n.z);
            this.magnifier.position.copy(e),
            this.magnifierCrossHair.position.copy(e),
            this.magnifierCrossHair.lookAt(this.view.getCamera().position),
            this.magnifier.lookAt(this.view.getCamera().position),
            this.magnifier.position.copy(i),
            this.magnifierCrossHair.position.copy(i)
        }
        ,
        e.prototype.updatePickedPointHighlighting = function(t, e) {
            for (var n = 0, i = t; n < i.length; n++) {
                var r = i[n];
                r.pointCloudObject && (r.pointCloudObject.perspectiveMaterial.highlightPoint = e,
                r.pointCloudObject.perspectiveMaterial.highlightedPointColor.copy(this.HIGHLIGHT_COLOR))
            }
        }
        ,
        e.prototype.getDatasetsWithSceneNodes = function() {
            return this.factory.DatasetRepository.data.filter((function(t) {
                return !!t.pointCloudSceneNode
            }
            ))
        }
        ,
        e.prototype.enablePointCloudsIfNotEnabled = function(t) {
            for (var e = 0, n = this.factory.DatasetRepository.data.filter((function(e) {
                return e.id === t.datasetId
            }
            )); e < n.length; e++) {
                var i = n[e];
                i.pointCloudVisible || (i.pointCloudVisible = !0)
            }
        }
        ,
        e.prototype.updateMaterialsForMagnificationRender = function(t, e, n, i) {
            if (t && t.pointCloudSceneNode && t.pointCloudSceneNode.pointCloudObject) {
                var r = t.pointCloudSceneNode;
                this.view.twoPassRenderer || (r.pointCloudObject.perspectiveMaterial.blending = e,
                r.pointCloudObject.perspectiveMaterial.transparent = n),
                r.pointCloudObject.perspectiveMaterial.enablePointHighlighting = i
            }
        }
        ,
        e.prototype.saveMaterialBlendingAndTransparency = function(t) {
            if (t && t.pointCloudSceneNode && t.pointCloudSceneNode.pointCloudObject) {
                var e = t.pointCloudSceneNode.pointCloudObject;
                this.currentBlending = e.perspectiveMaterial.blending,
                this.currentTransparency = e.perspectiveMaterial.transparent
            }
        }
        ,
        e.prototype.restoreMaterialsForMainRender = function(t) {
            if (t && t.pointCloudSceneNode && t.pointCloudSceneNode.pointCloudObject) {
                var e = t.pointCloudSceneNode;
                e.pointCloudObject.perspectiveMaterial.blending = this.currentBlending,
                e.pointCloudObject.perspectiveMaterial.transparent = this.currentTransparency,
                e.pointCloudObject.perspectiveMaterial.enablePointHighlighting = !1
            }
        }
        ,
        e.prototype.shouldRenderForViewport = function(t) {
            return this.visible && this.factory.MagnificationService.isEnabled && this.mouseInDefaultViewport && this.lastCursorData && this.lastCursorData.datasetId && t.camera instanceof c.PerspectiveCamera
        }
        ,
        e.CIRCLE_MATERIAL = new c.MeshBasicMaterial({
            color: new c.Color(16777215),
            opacity: 1,
            depthTest: !1,
            depthWrite: !1,
            transparent: !0
        }),
        e
    }(a.SceneLayer);
    e.MagnificationLayer = x;
    var M = function(t) {
        function e(e, n, i, r, o, a) {
            var s = t.call(this) || this;
            return s.MagnificationService = e,
            s.CursorService = n,
            s.ErrorService = i,
            s.DatasetRepository = r,
            s.RaycastService = o,
            s.PointCloudMenuService = a,
            s
        }
        return r(e, t),
        e.prototype.create = function(t, e) {
            return new x(t,e,this)
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(g.ɵɵinject(v.MagnificationService),g.ɵɵinject(y.CursorService),g.ɵɵinject(b.ErrorService),g.ɵɵinject(w.DatasetRepository),g.ɵɵinject(S.RaycastService),g.ɵɵinject("PointCloudMenuService"))
        }
        ,
        e.ɵprov = g.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(a.SceneLayerFactory);
    e.MagnificationLayerFactory = M,
    g.ɵsetClassMetadata(M, [{
        type: s.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: v.MagnificationService
        }, {
            type: y.CursorService
        }, {
            type: b.ErrorService
        }, {
            type: w.DatasetRepository
        }, {
            type: S.RaycastService
        }, {
            type: void 0,
            decorators: [{
                type: s.Inject,
                args: ["PointCloudMenuService"]
            }]
        }]
    }
    ), null),
    l.module("IVWebApp").service("MagnificationLayerFactory", u.downgradeInjectable(M))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(198)
      , a = n(7)
      , s = function() {
        function t() {
            this.features = 0,
            this.vertices = 0
        }
        return t.prototype.copy = function(t) {
            this.features = t.features,
            this.vertices = t.vertices
        }
        ,
        t
    }();
    e.VectorMapStats = s;
    var c = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.vectorLayers = [],
            e.stats = new s,
            e.selected = !1,
            e.expanded = !1,
            e.editing = !1,
            e.manualVisibility = !1,
            e
        }
        return r(e, t),
        e.prototype.copy = function(e, n) {
            return void 0 === n && (n = !1),
            t.prototype.fill.call(this, e),
            this.name = e.name,
            this.zMin = e.zMin,
            this.zMax = e.zMax,
            this.vectorLayers = a.clone(e.vectorLayers),
            n || (this.stats.copy(e.stats),
            this.selected = e.selected,
            this.expanded = e.expanded,
            this.editing = e.editing),
            this
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.name = e.name,
            this.zMin = e.z_min,
            this.zMax = e.z_max
        }
        ,
        e.prototype.toData = function() {
            var e = {};
            return t.prototype.fillDto.call(this, e),
            e.name = this.name,
            e.z_min = this.zMin,
            e.z_max = this.zMax,
            e
        }
        ,
        e
    }(o.SecureRepositoryObject);
    e.VectorMapEntity = c
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(70)
      , a = (n(9),
    n(1233))
      , s = n(2)
      , c = n(6)
      , l = n(0)
      , u = n(0)
      , d = n(9)
      , p = function(t) {
        function e(e) {
            var n = t.call(this, a.VectorLayerEntity, e) || this;
            return n.RestService = e,
            n.path = "vector_layers",
            n
        }
        return r(e, t),
        e.ɵfac = function(t) {
            return new (t || e)(u.ɵɵinject(d.RestService))
        }
        ,
        e.ɵprov = u.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(o.RestRepository);
    e.VectorLayerRepository = p,
    u.ɵsetClassMetadata(p, [{
        type: l.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: d.RestService
        }]
    }
    ), null),
    s.module("IVWebApp").service("VectorLayerRepository", c.downgradeInjectable(p))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(6)
      , o = n(0)
      , a = n(4)
      , s = n(25)
      , c = n(52)
      , l = (n(201),
    n(17),
    n(15),
    n(423))
      , u = n(403)
      , d = n(20)
      , p = n(0)
      , h = n(17)
      , f = n(15)
      , m = n(201)
      , g = function() {
        function t(t, e, n) {
            this.ViewService = t,
            this.ConfigService = e,
            this.LocationMarkerLayerFactory = n
        }
        return t.prototype.addExtraLocationMarkerLayer = function() {
            this.locationMarkerLayer || (this.locationMarkerLayer = this.createExtraLocationMarkerLayer(),
            this.ViewService.mainView.addToScene(this.locationMarkerLayer),
            this.loadLocationMarkersImmediately())
        }
        ,
        t.prototype.removeExtraLocationMarkerLayer = function() {
            this.locationMarkerLayer && (this.ViewService.mainView.removeFromScene(this.locationMarkerLayer),
            this.locationMarkerLayer.onDestroy(),
            this.locationMarkerLayer = void 0)
        }
        ,
        t.prototype.createExtraLocationMarkerLayer = function() {
            var t = this.ViewService.mainView
              , e = this.LocationMarkerLayerFactory.create(t, t.overlayScene, {
                circleSegments: l.MapView.CIRCLE_SEGMENTS,
                hideMarkersTimeout: l.MapView.HIDE_MARKERS_TIMEOUT,
                markerColor: new a.Color(this.ConfigService.getInteger(s.Configs.CORE_MAP_MARKER_COLOR, 16777215)),
                markerOpacity: l.MapView.MARKER_OPACITY,
                locationMarkerPng: n(325),
                locationMarkerHighlightPng: n(325),
                markerHighlightOpacity: l.MapView.MARKER_HIGHLIGHT_OPACITY,
                markerBlending: this.ConfigService.getInteger(s.Configs.CORE_MAP_MARKER_BLENDING, a.NormalBlending),
                isMoveMouseToShowEnabled: function() {
                    return !0
                },
                isVisibilityToggleEnabled: function() {
                    return !1
                },
                isClickToShowEnabled: function() {
                    return !0
                },
                isSwappingViewsEnabled: function() {
                    return !1
                },
                viewportEventMask: d.buildHashMap([[c.SplitViewportName.DEFAULT_VIEW, [u.EventType.MOUSE_MOVE, u.EventType.CLICK]]])
            });
            return e.targetViewport = t.getViewportByName(c.SplitViewportName.TOP_VIEW),
            e
        }
        ,
        t.prototype.loadLocationMarkersImmediately = function() {
            var t = this
              , e = this.ViewService.onTransitionEnd.connect((function() {
                t.locationMarkerLayer.onCameraMoveEnd(Promise.reject("hack")),
                e.disconnect()
            }
            ))
        }
        ,
        t.MEASUREMENT_MODE_CONFIG_STORAGE_KEY = "measurementModeConfig",
        t.ɵfac = function(e) {
            return new (e || t)(p.ɵɵinject(h.ViewService),p.ɵɵinject(f.ConfigService),p.ɵɵinject(m.LocationMarkerLayerFactory))
        }
        ,
        t.ɵprov = p.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.MeasurementModeService = g,
    p.ɵsetClassMetadata(g, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: h.ViewService
        }, {
            type: f.ConfigService
        }, {
            type: m.LocationMarkerLayerFactory
        }]
    }
    ), null),
    i.module("IVWebApp").service("MeasurementModeService", r.downgradeInjectable(g))
}
, function(t, e, n) {
    t.exports = n.p + "3e431823cfdc005a6f586ce9ac2c1f2b.ic_close_sideMenu.svg"
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(40)
      , r = function() {
        function t(t) {
            this.$element = t,
            t.children(".vertical-menu").on("scroll", (function(t) {
                t.target.scrollLeft = 0
            }
            ))
        }
        return Object.defineProperty(t.prototype, "displayStickyHeaders", {
            get: function() {
                return !i.isPlatform(i.Platform.IOS)
            },
            enumerable: !0,
            configurable: !0
        }),
        t
    }();
    e.VerticalMenuController = r
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(80)
      , a = n(4)
      , s = n(2)
      , c = n(6)
      , l = n(0)
      , u = (n(140),
    n(322))
      , d = n(124)
      , p = n(423)
      , h = n(264)
      , f = n(0)
      , m = n(140)
      , g = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e, n) || this;
            return o.view = e,
            o.factory = r,
            o.CUBE_Z_INDEX_ON_MAP = 1e3,
            o.currentTween = void 0,
            o.addCubeVolumeToScene(),
            o.trackSignal(o.factory.DownloadPointCloudService.onVolumeChange).connect((function(t) {
                o.updateCubeVolumePositionOnMap(t),
                o.recenterMapOnCubePosition()
            }
            )),
            o.visible = i.visible,
            o
        }
        return r(e, t),
        e.prototype.recenterMapOnCubePosition = function() {
            var t = this;
            this.view.getDefaultViewport().cameraController instanceof h.PanningCameraController && this.view instanceof p.MapView && (this.currentTween && (this.currentTween.stop(),
            this.view.forgetTween(this.currentTween)),
            this.currentTween = new d.Tween(this.view.getCamera().position).to({
                x: this.cubeSelection.position.x,
                y: this.cubeSelection.position.y
            }, e.CAMERA_MOVE_DURATION).easing((function(t) {
                return d.Easing.Sinusoidal.InOut(t)
            }
            )).onComplete((function() {
                t.view.forgetTween(t.currentTween),
                t.currentTween = void 0
            }
            )).start(),
            this.view.watchTween(this.currentTween))
        }
        ,
        e.prototype.updateCubeVolumePositionOnMap = function(t) {
            var e = t.getObjectByName(u.ClipVolume.BOX_NAME);
            this.cubeSelection.scale.copy(e.scale),
            this.cubeSelection.quaternion.copy(t.quaternion),
            this.cubeSelection.position.copy(t.position),
            this.cubeSelection.position.z = this.CUBE_Z_INDEX_ON_MAP,
            this.view.invalidateScene()
        }
        ,
        e.prototype.addCubeVolumeToScene = function() {
            var t = new a.BoxGeometry(1,1,1)
              , n = new a.MeshBasicMaterial({
                color: e.COLOR_BLUE,
                transparent: !0,
                opacity: .5
            });
            this.cubeSelection = new a.Mesh(t,n),
            this.sceneGroup.add(this.cubeSelection),
            this.visible = !0
        }
        ,
        e.COLOR_BLUE = new a.Color(3381704),
        e.CAMERA_MOVE_DURATION = 500,
        e
    }(o.SceneLayer);
    e.VolumeClippingMapLayer = g;
    var v = function(t) {
        function e(e) {
            var n = t.call(this) || this;
            return n.DownloadPointCloudService = e,
            n
        }
        return r(e, t),
        e.prototype.create = function(t, e, n) {
            return new g(t,e,n,this)
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(f.ɵɵinject(m.DownloadPointCloudService))
        }
        ,
        e.ɵprov = f.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(o.SceneLayerFactory);
    e.VolumeClippingMapLayerFactory = v,
    f.ɵsetClassMetadata(v, [{
        type: l.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: m.DownloadPointCloudService
        }]
    }
    ), null),
    s.module("IVWebApp").service("VolumeClippingLayerFactory", c.downgradeInjectable(v))
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1259);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    n(1270);
    var i = function() {
        function t() {}
        return t.prototype.createView = function(t) {
            try {
                this.view = this.create(t),
                this.deferred && this.deferred.resolve(this.view)
            } catch (t) {
                console.error("Cannot create view: " + t.message, t),
                this.deferred && this.deferred.reject(t)
            }
        }
        ,
        t
    }();
    e.ViewComponent = i;
    var r = function() {
        function t() {
            this.restrict = "E",
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                deferred: "="
            }
        }
        return t.prototype.link = function(t, e, n, i, r) {
            e.addClass("iv-view"),
            i.createView(e[0])
        }
        ,
        t
    }();
    e.ViewDirective = r
}
, function(t, e, n) {
    t.exports = n.p + "8cb759d0cce1070852cf832cca6738f8.navvis_logo_black.svg"
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t(t, e, n, i, r, o, a, s) {
            void 0 === a && (a = []),
            void 0 === s && (s = !0),
            this.title = t,
            this.icon = e,
            this.template = i,
            this.getClass = r,
            this.onClick = o,
            this.items = a,
            this.compileTemplate = s
        }
        return Object.defineProperty(t.prototype, "isVisible", {
            get: function() {
                var t = this;
                return function() {
                    return t._isVisible() && (!!t.template || !!t.onClick || void 0 !== t.items && t.items.some((function(t) {
                        return t.isVisible()
                    }
                    )))
                }
            },
            set: function(t) {
                this._isVisible = t
            },
            enumerable: !0,
            configurable: !0
        }),
        t
    }();
    e.MenuItem = i
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var i = n(2)
          , r = n(7)
          , o = function() {
            function e() {
                this.restrict = "E"
            }
            return e.factory = function() {
                return function() {
                    return new e
                }
            }
            ,
            e.prototype.link = function(t, e, n) {
                var i = this;
                this.buildElement(e, n),
                n.$observe("iconClass", (function() {
                    return i.buildElement(e, n)
                }
                )),
                n.$observe("iconLigature", (function() {
                    return i.buildElement(e, n)
                }
                )),
                n.$observe("iconPath", (function() {
                    return i.buildElement(e, n)
                }
                ))
            }
            ,
            e.prototype.buildElement = function(e, n) {
                var i = t(document.createElement("i"));
                r.forIn(n, (function(t, e) {
                    if (!e.startsWith("$")) {
                        var r = n.$attr[e];
                        i.attr(r, t)
                    }
                }
                )),
                n.iconClass && i.addClass(n.iconClass),
                n.iconLigature && i.text(n.iconLigature),
                n.iconPath && i.css("background", "url(" + n.iconPath + ") no-repeat center"),
                e.empty().append(i)
            }
            ,
            e
        }();
        e.IconDirective = o,
        i.module("IVWebApp").directive("icon", o.factory())
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    t.exports = n.p + "606a77b9d6426329b81015af4b45f29a.ic_share_blue.svg"
}
, function(t, e, n) {
    t.exports = n.p + "77cb7d1ad94c7c7caad89b9503345a92.ic_pc_blue.svg"
}
, function(t, e, n) {
    t.exports = n.p + "ec16ee612335d8901c6527564b6f564d.ic_edit_blue.svg"
}
, function(t, e, n) {
    t.exports = n.p + "65e22ac2d38885a923e35844f4cd014d.ic_walk_blue.svg"
}
, function(t, e) {
    var n = "I18N/TranslationEditor.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="form-group form-group-translations">\n\t<label class="control-label col-xs-12 {{ \'col-sm-\' + vm.COL_SPAN }}"\n\t       translate>Language</label>\n\n\t\x3c!-- used languages --\x3e\n\t<ul class="nav nav-pills nav-pills-used-langs col-xs-6 {{ \'col-sm-\' + (8 - vm.COL_SPAN) }}"\n\t    role="tablist">\n\t\t<li role="presentation"\n\t\t    ng-repeat="language in vm.getUsedLanguages() | orderBy: \'key\'"\n\t\t    ng-class="vm.getClass(language)"\n\t\t    ng-click="vm.select(language)">\n\t\t\t<a href aria-controls="{{language.key}}"\n\t\t\t   role="tab" data-toggle="tab"\n\t\t\t   title="{{language.name}}">\n\t\t\t\t{{language.key.toUpperCase()}}\n\t\t\t</a>\n\t\t</li>\n\t</ul>\n\n\t<ul class="dropdown nav nav-pills nav-pills-lang-controls col-xs-6 col-sm-4">\n\t\t\x3c!-- remove an active language --\x3e\n\t\t<button type="button" class="btn btn-danger"\n\t\t        ng-disabled="!vm.canRemove()"\n\t\t        ng-click="vm.remove()"\n\t\t        title="{{\'Delete selected language\' | translate}}">\n\t\t\t<span class="glyphicon glyphicon-trash"></span>\n\t\t</button>\n\n\t\t\x3c!-- add a new language dropdown --\x3e\n\t\t<button type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"\n\t\t        class="btn btn-default" ng-click="vm.add()" ng-disabled="!vm.canAdd()">\n\t\t\t<i class="fa fa-plus"></i> <span translate>Add language</span>\n\t\t</button>\n\n\t\t\x3c!-- search input background --\x3e\n\t\t<div class="dropdown-menu"></div>\n\n\t\t\x3c!-- search language input --\x3e\n\t\t<input ng-show="vm.dropdownOpened" class="dropdown-menu"\n\t\t       ng-model="vm.query"\n\t\t       placeholder="{{\'Find a language\' | translate}}"\n\t\t       ng-click="$event.stopPropagation()" init-focus keep-focus>\n\n\t\t\x3c!-- list of the unused languages --\x3e\n\t\t<ul class="dropdown-menu" role="menu" aria-labelledby="add-language-button">\n\t\t\t<li ng-repeat="language in vm.allDataLanguages | orderBy: \'key\' | filter: {name: vm.query} : false"\n\t\t\t    ng-click=\'vm.create(language)\'>\n\t\t\t\t<a href>{{language.name}}</a>\n\t\t\t</li>\n\t\t</ul>\n\t</ul>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1338);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var i = n(2);
        n(1340),
        n(1341),
        n(598),
        n(1343),
        n(599);
        var r = n(40)
          , o = n(89)
          , a = n(180)
          , s = n(25)
          , c = n(153)
          , l = n(136)
          , u = n(20)
          , d = n(16)
          , p = n(8)
          , h = n(57)
          , f = n(428)
          , m = n(92)
          , g = n(321)
          , v = n(316)
          , y = function() {
            function e(t, e, n, i, a, s, l, u, h, f, m, g, v) {
                var y = this;
                this.ConfigService = t,
                this.LicenseService = e,
                this.ViewMenuService = n,
                this.UserService = i,
                this.IV = a,
                this.PoiService = s,
                this.SiteModelService = l,
                this.SiteModelRepository = u,
                this.PoiRepository = h,
                this.SearchService = f,
                this.$timeout = m,
                this.UnitService = g,
                this.ViewService = v,
                this.isMobileLayout = r.isMobileLayout,
                this.resultsList = this.SearchService.resultsList,
                this.MeasurementDomain = c.MeasurementDomain,
                this.clearPaging = new d.Signal,
                this.allPoisFetched = !1,
                this.promiseWrapper = new o.PromiseProgressWrapper,
                this.contentExpanded = !1,
                m((function() {
                    s.onPoiOpen.connect((function() {
                        return y.SiteModelService.deselectModel()
                    }
                    )),
                    s.onPoiClose.connect((function() {
                        return y.SiteModelService.resetPreviouslySelectedModel()
                    }
                    ))
                }
                )).catch(p.handleWarning)
            }
            return e.$inject = ["ConfigService", "LicenseService", "ViewMenuService", "UserService", "IV", "PoiService", "SiteModelService", "SiteModelRepository", "PoiRepository", "SearchService", "$timeout", "UnitService", "ViewService"],
            Object.defineProperty(e.prototype, "model", {
                get: function() {
                    return this._model
                },
                set: function(t) {
                    this._model = t,
                    this.clearPois(),
                    this._model && this.fetchPage()
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(e.prototype, "currentUoMSystem", {
                get: function() {
                    return this.UnitService.currentSystem
                },
                enumerable: !0,
                configurable: !0
            }),
            e.prototype.isSharingEnabled = function() {
                return this.ConfigService.getBoolean(s.Configs.POI_SHARE_ENABLED, !0)
            }
            ,
            e.prototype.isRoutingEnabled = function() {
                return this.LicenseService.isFeatureEnabled(m.LicenseFeatureType.ROUTING) && this.ConfigService.getBoolean(s.Configs.ROUTING_ENABLED, !1)
            }
            ,
            e.prototype.arePanoramasEnabled = function() {
                return this.ViewMenuService.config.showPanoramas
            }
            ,
            e.prototype.isEntityEditable = function() {
                return this.UserService.canEditSiteModelAttributes()
            }
            ,
            e.prototype.isFullscreenEnabled = function() {
                return this.ConfigService.getBoolean(s.Configs.POI_FULLSCREEN, !1)
            }
            ,
            e.prototype.isTopFloatingPanel = function() {
                return !this.isFullscreenEnabled() && !this.PoiService.isRouteMode && !this.SearchService.isSearchBoxVisible()
            }
            ,
            e.prototype.isEntityOpenedFromResultList = function() {
                return this.model && this.resultsList.selectedResult && this.resultsList.selectedResult instanceof f.SiteModelSearchEntity && this.resultsList.selectedResult.id === this.model.id
            }
            ,
            e.prototype.hasContent = function(t) {
                return this.hasDimensions(t) || this.hasAttributes(t) || this.pois.length > 0
            }
            ,
            e.prototype.hasDimensions = function(t) {
                return this.UserService.canViewSiteModelAttributes() && !t.dimensionsChanged
            }
            ,
            e.prototype.hasAttributes = function(t) {
                return (this.UserService.canEditSiteModelAttributes() || this.UserService.canViewSiteModelAttributes()) && Object.keys(t.attributes).length > 0
            }
            ,
            e.prototype.canToggleContentExpansion = function(t) {
                return r.isMobileLayout() && this.hasContent(t) && !this.isFullscreenEnabled()
            }
            ,
            e.prototype.toggleExpandedContent = function() {
                this.contentExpanded = !this.contentExpanded
            }
            ,
            e.prototype.isContentExpanded = function(t) {
                return !!this.isFullscreenEnabled() || !!this.hasContent(t) && (!r.isMobileLayout() || this.contentExpanded)
            }
            ,
            e.prototype.canSwapViews = function() {
                return this.ViewService.canSwapViews()
            }
            ,
            e.prototype.canJumpToMainView = function() {
                return r.isMobileLayout() && this.canSwapViews() && this.isMapMain()
            }
            ,
            e.prototype.canJumpToMapView = function() {
                return r.isMobileLayout() && this.canSwapViews() && !this.isMapMain()
            }
            ,
            e.prototype.isMapMain = function() {
                return this.ViewService.isMapPrimaryView()
            }
            ,
            e.prototype.goToEntity = function(t) {
                this.IV.moveToSiteModelEntity(t, !0).catch(p.handleWarning)
            }
            ,
            e.prototype.swapViews = function() {
                this.ViewService.swapViews()
            }
            ,
            e.prototype.editEntity = function() {
                t("#editEntityFromDetails").modal()
            }
            ,
            e.prototype.routeToEntity = function(t) {
                this.SiteModelService.routeToEntity(t, v.RoutePoint.END)
            }
            ,
            e.prototype.goToPoi = function(t) {
                this.SiteModelService.previouslySelectedModel = this.SiteModelService.selectedModel,
                this.PoiService.clickPoi(t, g.PoiClickOrigin.SITE_MODEL_DETAILS)
            }
            ,
            e.prototype.closeResult = function() {
                this.SearchService.closeResult(!0, a.SearchResultType.SITE_MODEL)
            }
            ,
            e.prototype.saveSitemodel = function() {
                !this.UserService.isAdmin() && this.UserService.userInfo.checkAttribute(h.GroupAttributes.CAN_EDIT_SITE_MODEL_ATTRIBUTES) ? this.promiseWrapper.wrap(this.SiteModelRepository.updateAttributes(this.SiteModelRepository.data)).catch((function() {}
                )) : this.promiseWrapper.wrap(this.SiteModelRepository.save(this.SiteModelRepository.data)).catch((function() {}
                ))
            }
            ,
            e.prototype.exportSiteModel = function(t, e) {
                this.SiteModelRepository.exportSiteModel(t, e)
            }
            ,
            e.prototype.areAllPagesFetched = function() {
                return this.allPoisFetched
            }
            ,
            e.prototype.fetchPage = function(t) {
                var n = this;
                void 0 === t && (t = 0),
                this.PoiRepository.filter((new l.PoiRestFilterBuilder).siteModel([this._model]).limit(e.POIS_PER_PAGE).offset(t * e.POIS_PER_PAGE).build()).then((function(t) {
                    n.pois = n.pois.concat(t),
                    n.allPoisFetched = t.length < e.POIS_PER_PAGE,
                    u.invalidateAngular()
                }
                )).catch(p.handleWarning)
            }
            ,
            e.prototype.clearPois = function() {
                this.pois = [],
                this.allPoisFetched = !1,
                this.clearPaging.emit()
            }
            ,
            e.POIS_PER_PAGE = 30,
            e
        }();
        e.SiteModelDetailsController = y;
        var b = function() {
            function t() {
                this.restrict = "E",
                this.templateUrl = "SiteModelUI/SiteModelDetails.html",
                this.controller = y,
                this.controllerAs = "vm",
                this.scope = !0,
                this.bindToController = {
                    model: "="
                }
            }
            return t.factory = function() {
                return function() {
                    return new t
                }
            }
            ,
            t
        }();
        e.SiteModelDetailsDirective = b,
        i.module("IVWebApp").directive("siteModelDetails", b.factory())
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(130);
    var r = function() {
        function t() {}
        return t.filter = ["UoMService", function(t) {
            var e = t.scopedConvert;
            return e.$stateful = !0,
            e
        }
        ],
        t
    }();
    i.module("IVWebApp").filter("uom", r.filter)
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1344),
    n(1345);
    var r = n(180)
      , o = function() {
        function t(t, e) {
            this.SearchService = t,
            this.SiteModelService = e
        }
        return t.$inject = ["SearchService", "SiteModelService"],
        Object.defineProperty(t.prototype, "entity", {
            get: function() {
                return this._entity
            },
            set: function(t) {
                this._entity = t,
                this.siteData = this.SiteModelService.getSiteModelData(t)
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.showEntity = function(t) {
            return t && t.name && t.name.length > 0 && (!this.skipEntity || t !== this.entity)
        }
        ,
        t.prototype.selectModel = function(t) {
            this.clickable && (this.SearchService.closeResult(!1, r.SearchResultType.POI),
            this.SiteModelService.selectModel(t, !0))
        }
        ,
        t
    }();
    e.SiteDataController = o;
    var a = function() {
        function t() {
            this.controller = o,
            this.controllerAs = "vm",
            this.restrict = "E",
            this.templateUrl = "SiteModelUI/SiteData.html",
            this.scope = !0,
            this.bindToController = {
                entity: "=",
                clickable: "=?",
                skipEntity: "=?"
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.SiteDataDirective = a,
    i.module("IVWebApp").directive("siteData", a.factory())
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(70)
      , s = n(428)
      , c = (n(9),
    n(22),
    n(50),
    n(6))
      , l = n(0)
      , u = n(0)
      , d = n(9)
      , p = n(22)
      , h = n(50)
      , f = function(t) {
        function e(e, n, i) {
            var r = t.call(this, s.SiteModelSearchEntity, e) || this;
            return r.RestService = e,
            r.SiteModelRepository = n,
            r.LanguageService = i,
            r.path = "search/site_model",
            r
        }
        return r(e, t),
        e.prototype.search = function(t, e, n) {
            var i = this;
            return this.RestService.getApi(this.path, {
                query: t,
                size: e,
                from: n,
                lang: this.LanguageService.getCurrentLanguage()
            }, void 0, !1).then((function(t) {
                for (var e = [], n = 0, r = i.transformResponse(t); n < r.length; n++) {
                    var o = r[n]
                      , a = i.SiteModelRepository.dataMap[o.id];
                    a && (o.entity = a,
                    o.title = a.label,
                    e.push(o))
                }
                return e
            }
            ))
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(u.ɵɵinject(d.RestService),u.ɵɵinject(p.SiteModelRepository),u.ɵɵinject(h.LanguageService))
        }
        ,
        e.ɵprov = u.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(a.RestRepository);
    e.SiteModelSearchRepository = f,
    u.ɵsetClassMetadata(f, [{
        type: l.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: d.RestService
        }, {
            type: p.SiteModelRepository
        }, {
            type: h.LanguageService
        }]
    }
    ), null),
    o.module("IVWebApp").service("SiteModelSearchRepository", c.downgradeInjectable(f))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    n(586);
    var i = n(2)
      , r = n(210)
      , o = function() {
        function t() {
            this.restrict = "A",
            this.scope = {
                loadingIndicator: "=loadingIndicator"
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t.prototype.link = function(t, e, i) {
            var o, a = parseInt(i.loadingIndicatorDelay, 10) || 0, s = document.createElement("img");
            s.src = r.makeUrlAbsolute(n(94)),
            s.classList.add("loading-indicator"),
            e.parent().append(s),
            t.$watch("loadingIndicator", (function(t) {
                t ? o = window.setTimeout((function() {
                    s.classList.remove("hide"),
                    e.addClass("loading-indicator-shown")
                }
                ), a) : (s.classList.add("hide"),
                e.removeClass("loading-indicator-shown"),
                o && (window.clearTimeout(o),
                o = void 0))
            }
            ))
        }
        ,
        t
    }();
    e.LoadingIndicatorDirective = o,
    i.module("IVWebApp").directive("loadingIndicator", o.factory())
}
, function(t, e, n) {
    t.exports = n.p + "779c92686f7ce1a44c37d5bd94191f4b.ic_search_grey.svg"
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1364);
    var r = function() {
        function t(t) {
            this.SearchService = t
        }
        return t.$inject = ["SearchService"],
        Object.defineProperty(t.prototype, "resultsList", {
            get: function() {
                return this.SearchService.resultsList
            },
            enumerable: !0,
            configurable: !0
        }),
        t
    }();
    e.TypeaheadTemplatesComponent = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "SearchUI/TypeaheadTemplates.html",
            this.controller = r,
            this.controllerAs = "vm",
            this.scope = {}
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.TypeaheadTemplatesDirective = o,
    i.module("IVWebApp").directive("typeaheadTemplates", o.factory())
}
, function(t, e, n) {
    t.exports = n.p + "ea1161a0e33d6133a32c4838dc059398.ic_panorama_grey.svg"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(70)
      , s = n(57)
      , c = (n(9),
    n(27),
    n(6))
      , l = n(0)
      , u = n(0)
      , d = n(9)
      , p = n(27)
      , h = function(t) {
        function e(e, n) {
            var i = t.call(this, s.GroupEntity, e) || this;
            return i.UserService = n,
            i.path = "groups",
            i
        }
        return r(e, t),
        e.prototype.create = function() {
            var e = t.prototype.create.call(this);
            return e.fillCurrentUsersGroups(this.UserService),
            e
        }
        ,
        e.prototype.findByGroupIds = function(t) {
            var e = this;
            return this.RestService.getApi(this.path, {
                groups: t.join()
            }).then((function(t) {
                return e.transformResponse(t)
            }
            ))
        }
        ,
        e.ɵfac = function(t) {
            return new (t || e)(u.ɵɵinject(d.RestService),u.ɵɵinject(p.UserService))
        }
        ,
        e.ɵprov = u.ɵɵdefineInjectable({
            token: e,
            factory: e.ɵfac,
            providedIn: "root"
        }),
        e
    }(a.RestRepository);
    e.GroupRepository = h,
    u.ɵsetClassMetadata(h, [{
        type: l.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: d.RestService
        }, {
            type: p.UserService
        }]
    }
    ), null),
    o.module("IVWebApp").service("GroupRepository", c.downgradeInjectable(h))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(81);
    n(1407);
    var o = n(8)
      , a = function() {
        function t(t, e) {
            this.LicenseService = t,
            this.SidebarMenuService = e,
            this.LINK = '<a class="alert-link" ng-click="vm.goToInstanceKeyPage()" translate translate-context="This string will be concatenated with another one, so needs to be left lowercase.">upgrade your plan</a>'
        }
        return t.$inject = ["LicenseService", "SidebarMenuService"],
        Object.defineProperty(t.prototype, "maxUsersWithgroups", {
            get: function() {
                return this.LicenseService.license.maxUsersWithGroups
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.isUserLimitReached = function() {
            return this.LicenseService.isLicenseRegisteredUsersReached()
        }
        ,
        t.prototype.isUserLimitMinusOneReached = function() {
            return this.LicenseService.isLicenseRegisteredUsersAvailable() && this.LicenseService.license.currentUsersWithGroups === this.LicenseService.license.maxUsersWithGroups - 1
        }
        ,
        t.prototype.goToInstanceKeyPage = function() {
            this.SidebarMenuService.isMenuHidden = !1,
            this.SidebarMenuService.goToItem(this.SidebarMenuService.getItem(r.SidebarMenuItemsKey.SETTINGS_SUBSCRIPTION)).catch(o.handleWarning)
        }
        ,
        t
    }();
    e.LicenseUserLimitWarningController = a;
    var s = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "LicenseWarning/LicenseUserLimitWarning.html",
            this.controller = a,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.LicenseUserLimitWarningDirective = s,
    i.module("IVWebApp").directive("licenseUserLimitWarning", s.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1460),
    n(1461),
    n(266);
    var r = n(143)
      , o = function() {
        function t(t, e, n) {
            this.PointCloudMenuService = t,
            this.AlignmentHelperService = e,
            this.ViewService = n,
            this.pointCloudConfig = this.PointCloudMenuService.config,
            this.AlignmentHelperService.updateViewports()
        }
        return t.$inject = ["PointCloudMenuService", "AlignmentHelperService", "ViewService"],
        Object.defineProperty(t.prototype, "helperDefault", {
            get: function() {
                return this.AlignmentHelperService.helperDefault
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "helperTV", {
            get: function() {
                return this.AlignmentHelperService.helperTV
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "helperSV1", {
            get: function() {
                return this.AlignmentHelperService.helperSV1
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "helperSV2", {
            get: function() {
                return this.AlignmentHelperService.helperSV2
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.alignmentHelperChanged = function() {
            this.ViewService.mainView.invalidateScene()
        }
        ,
        t.prototype.settingShowPanosInPerspectiveChangedCallback = function() {
            this.PointCloudMenuService.configShowPanosInPerspectiveChanged.emit(this.pointCloudConfig[r.PointCloudConfig.SHOW_PANOS_IN_PERSPECTIVE])
        }
        ,
        t
    }();
    e.AlignmentHelperController = o;
    var a = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "Alignment/AlignmentHelper.html",
            this.controller = o,
            this.controllerAs = "vmAlignmentHelper"
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.AlignmentHelperDirective = a,
    i.module("IVWebApp").directive("alignmentHelper", a.factory())
}
, function(t, e, n) {
    var i = "PoiTypeUI/PoiTypeEditor.html"
      , r = '\x3c!-- POI Type Editor --\x3e\n<div class="modal fade" id="PoiTypeEditor" tabindex="-1" role="dialog"\n     aria-labelledby="PoiTypeEditor" aria-hidden="true" data-backdrop="static">\n\t<div class="modal-dialog">\n\t\t<div class="modal-content">\n\n\t\t\t<div class="modal-header">\n\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}"\n\t\t\t\t     data-dismiss="modal">\n\n\t\t\t\t<h4 ng-if="!vm.model.id" translate translate-context="title">\n\t\t\t\t\tAdd a New Category\n\t\t\t\t</h4>\n\t\t\t\t<h4 ng-if="vm.model.id" translate translate-context="title">\n\t\t\t\t\tEdit Category\n\t\t\t\t</h4>\n\t\t\t</div>\n\n\t\t\t<div class="modal-body">\n\t\t\t\t<div class="form-horizontal">\n\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\x3c!-- Type name --\x3e\n\t\t\t\t\t\t<label class="col-sm-4 control-label" for="PoiTypeGroupName" translate>\n\t\t\t\t\t\t\tCategory group\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<div class="col-sm-8">\n\t\t\t\t\t\t\t<select id="PoiTypeGroupName"\n\t\t\t\t\t\t\t        class="form-control"\n\t\t\t\t\t\t\t        ng-model="vm.model.poiTypeGroup"\n\t\t\t\t\t\t\t        ng-options="group as vm.localize(group.name) for group in vm.writablePoiTypeGroups"\n\t\t\t\t\t\t\t        style="display:block; width:100%; margin-bottom:15px">\n\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\x3c!-- Language --\x3e\n\t\t\t\t\t<translation-editor translations="vm.model.name"\n\t\t\t\t\t                    selected-language="selectedLanguage">\n\t\t\t\t\t</translation-editor>\n\n\t\t\t\t\t\x3c!-- Category name --\x3e\n\t\t\t\t\t<div class="form-group" ng-class="{\'has-error\': vm.isEmpty}">\n\t\t\t\t\t\t<label class="col-sm-4 control-label" translate>\n\t\t\t\t\t\t\tName\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<div class="col-sm-8">\n\t\t\t\t\t\t\t<input type="text" class="form-control"\n\t\t\t\t\t\t\t       ng-model="vm.model.name[selectedLanguage.key]"\n\t\t\t\t\t\t\t       init-focus>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="form-group" ng-if="vm.isUploadAvailable()">\n\t\t\t\t\t\t<label class="col-sm-4 control-label"\n\t\t\t\t\t\t       translate>\n\t\t\t\t\t\t\tIcon\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<div class="col-sm-8">\n\t\t\t\t\t\t\t<img class="poiIcon"\n\t\t\t\t\t\t\t     style="display: inline-block"\n\t\t\t\t\t\t\t     ng-if="!!vm.model.icon"\n\t\t\t\t\t\t\t     ng-src="{{vm.model.icon}}">\n\t\t\t\t\t\t\t<input-button class="btn-file panel-control-button"\n\t\t\t\t\t\t\t              in-progress="vm.isUploadInProgress()">\n\t\t\t\t\t\t\t\t<i class="fa fa-upload"></i>\n\t\t\t\t\t\t\t\t<span translate>Upload icon</span>\n\t\t\t\t\t\t\t\t<input type="file"\n\t\t\t\t\t\t\t\t       accept="image/jpeg, image/gif, image/png"\n\t\t\t\t\t\t\t\t       ngf-select="vm.uploadIcon($files, $event)"\n\t\t\t\t\t\t\t\t       ng-disabled="vm.isUploadInProgress()">\n\t\t\t\t\t\t\t</input-button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<label class="col-sm-4 control-label" for="PoiTypeVisibilityZoomMin"\n\t\t\t\t\t\t       translate>\n\t\t\t\t\t\t\tVisible from zoom\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<div class="col-sm-8">\n\t\t\t\t\t\t\t<input id="PoiTypeVisibilityZoomMin"\n\t\t\t\t\t\t\t       class="form-control"\n\t\t\t\t\t\t\t       style="width: 90%; display: inline-block"\n\t\t\t\t\t\t\t       type="number"\n\t\t\t\t\t\t\t       min="0" max="100" step="any"\n\t\t\t\t\t\t\t       ng-model="vm.model.visibilityZoomMin">\n\t\t\t\t\t\t\t<i class="fa fa-files-o"\n\t\t\t\t\t\t\t   ng-click="vm.model.visibilityZoomMin = vm.zoomLevel"\n\t\t\t\t\t\t\t   title="{{\'Copy current zoom\'|translate}}"\n\t\t\t\t\t\t\t   style="margin-left: 5px; cursor: pointer"></i>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<label class="col-sm-4 control-label" for="PoiTypeVisibilityZoomMax"\n\t\t\t\t\t\t       translate>\n\t\t\t\t\t\t\tVisible up to zoom\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<div class="col-sm-8">\n\t\t\t\t\t\t\t<input id="PoiTypeVisibilityZoomMax"\n\t\t\t\t\t\t\t       class="form-control"\n\t\t\t\t\t\t\t       style="width: 90%; display: inline-block"\n\t\t\t\t\t\t\t       type="number"\n\t\t\t\t\t\t\t       min="0" max="100" step="any"\n\t\t\t\t\t\t\t       ng-model="vm.model.visibilityZoomMax">\n\t\t\t\t\t\t\t<i class="fa fa-files-o"\n\t\t\t\t\t\t\t   ng-click="vm.model.visibilityZoomMax = vm.zoomLevel"\n\t\t\t\t\t\t\t   title="{{\'Copy current zoom\'|translate}}"\n\t\t\t\t\t\t\t   style="margin-left: 5px; cursor: pointer"></i>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="form-group" ng-if="vm.model.id">\n\t\t\t\t\t\t<label class="col-sm-4 control-label" translate>\n\t\t\t\t\t\t\tId\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<div class="col-sm-8 radio">\x3c!-- radio to get Bootstrap\'s top padding --\x3e\n\t\t\t\t\t\t\t{{vm.model.id}}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<span class="text-danger" ng-show="vm.isEmpty" translate>\n\t\t\t\t\tName cannot be empty\n\t\t\t\t</span>\n\t\t\t\t<span class="text-danger" ng-if="vm.error">\n\t\t\t\t\t{{vm.error.text}}: {{vm.error.statusText}} ({{vm.error.status}})\n\t\t\t\t</span>\n\t\t\t\t<div ng-if="!!vm.error.details">\n\t\t\t\t\t{{vm.error.details}}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="modal-footer">\n\t\t\t\t<delete-confirmation class="float-left" ng-show="vm.model.id"\n\t\t\t\t                     ng-click="vm.countAssociatedPois()"\n\t\t\t\t                     on-confirm-callback="vm.remove()">\n\t\t\t\t\t<span translate>Are you sure you want to delete this category?</span>\n\t\t\t\t\t<span ng-if="vm.isCountInProgress()" translate\n\t\t\t\t\t      translate-context="As in: counting the number of items">\n\t\t\t\t\t\tCounting...\n\t\t\t\t\t</span>\n\t\t\t\t\t<span ng-if="!vm.isCountInProgress()">\n\t\t\t\t\t\t<span translate translate-n="vm.associatedPoisCount"\n\t\t\t\t\t\t      translate-plural="{{$count}} POIs associated with this category will also be deleted.">\n\t\t\t\t\t\t\t1 POI associated with this category will also be deleted.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\t\t\t\t</delete-confirmation>\n\n\t\t\t\t<cancel-button data-dismiss="modal" ng-click="vm.cancel()"></cancel-button>\n\t\t\t\t<ok-button ng-disabled="vm.isUploadInProgress()" ng-click="vm.save()"></ok-button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e) {
    var n = "PoiTypeUI/PoiTypeGroupList.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '\x3c!-- Modals --\x3e\n<modal>\n\t<poi-type-group-editor model="vm.typeGroupEditorModel"></poi-type-group-editor>\n</modal>\n<modal>\n\t<poi-type-editor model="vm.typeEditorModel"></poi-type-editor>\n</modal>\n\n\x3c!-- Panel --\x3e\n<div class="panel panel-default panel-sticky-header no-border no-shadow"\n     ng-class="{\'panel-ios\':vm.isPlatformIos()}">\n\t\x3c!-- Heading --\x3e\n\t<div class="panel-heading">\n\t\t\x3c!-- Add a new POI Type Group --\x3e\n\t\t<span ng-if="vm.canCreateGroups"\n\t\t      class="poi-group-add-btn fa fa-plus"\n\t\t      ng-click="vm.edit()"\n\t\t      title="{{\'Add a new category group\'|translate}}"\n\t\t      data-toggle="modal" data-target="#PoiTypeGroupEditor"\n\t\t      aria-hidden="true">\n\t\t</span>\n\t\t\x3c!--Select/hide all types--\x3e\n\t\t<div class="btn-group float-right">\n\t\t\t\x3c!--select all types i.e. render all POIs--\x3e\n\t\t\t<button title="{{\'Select all\'|translate}}" type="button" class="btn btn-default"\n\t\t\t        ng-click="vm.showAll()">\n\t\t\t\t<span class="fa fa-check-square-o" aria-hidden="true"></span>\n\t\t\t</button>\n\n\t\t\t\x3c!--hide all types i.e. dont render any POIs--\x3e\n\t\t\t<button title="{{\'Deselect all\'|translate}}" type="button" class="btn btn-default"\n\t\t\t        ng-click="vm.hideAll()">\n\t\t\t\t<span class="fa fa-square-o" aria-hidden="true"></span>\n\t\t\t</button>\n\t\t</div>\n\t</div>\n\n\t\x3c!-- Body --\x3e\n\t<div class="panel-body list-group poi-type-list">\n\t\t\x3c!-- List of all the POI Type Groups --\x3e\n\t\t<div class="list-group-item poi-group"\n\t\t     data-ng-repeat="group in vm.typeGroups | orderBy: vm.getPoiTypeGroupName">\n\n\t\t\t<div class="list-group-item-heading">\n\t\t\t\t\x3c!--click to setup and open a modal for editing an existing group--\x3e\n\t\t\t\t<span ng-if="group.canWrite" title="{{\'Edit category group\'|translate}}"\n\t\t\t\t      ng-click="vm.edit(group)"\n\t\t\t\t      data-toggle="modal" data-target="#PoiTypeGroupEditor"\n\t\t\t\t      class="poi-group-edit-btn fa fa-pencil" aria-hidden="true"></span>\n\n\t\t\t\t\x3c!--group name--\x3e\n\t\t\t\t<span class="long-title poi-type-group-title" title="{{vm.localize(group.name)}}">\n\t\t\t\t\t{{vm.localize(group.name)}}\n\t\t\t\t</span>\n\t\t\t</div>\n\n\t\t\t\x3c!-- Existing POI Group with its children types.\n\t\t\t     Editing types and groups and selecting which to render in 3d scene --\x3e\n\t\t\t<poi-type-list group="group" editor-model="vm.typeEditorModel"></poi-type-list>\n\t\t</div>\n\t</div>\n\t<poi-export-import></poi-export-import>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.PRESERVE = "preserve",
        t.UPDATE = "update",
        t.ASSIGN_NEW = "assign_new"
    }(e.PoiImportMode || (e.PoiImportMode = {}))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(230);
    e.loadOpenLayersMap = function() {
        return new Promise((function(t, e) {
            i.runWithBaseHref((function() {
                return Promise.all([n.e(13), n.e(11)]).then(function() {
                    t(n(1684).OpenLayersMap)
                }
                .bind(null, n)).catch(e)
            }
            ))
        }
        ))
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(4)
      , r = n(7)
      , o = function() {
        function t(t, e, n, i, r, o, a, s, c) {
            this.AlignmentManagerService = t,
            this.$scope = e,
            this.AlignmentService = n,
            this.DatasetRepository = i,
            this.ModeService = r,
            this.ViewService = o,
            this.gettextCatalog = a,
            this.gettext = s,
            this.hotkeys = c,
            (this.ModeService.isGeoRegistrationMode() || this.ModeService.isDatasetAlignmentMode()) && this.initHotkeys()
        }
        return t.prototype.initHotkeys = function() {
            var e = this;
            this.hotkeys.bindTo(this.$scope).add({
                combo: "8",
                description: this.gettext("Translate -x"),
                callback: function() {
                    return e.AlignmentManagerService.translate(new i.Vector3(-t.TRANSLATE_DISTANCE,0,0))
                }
            }).add({
                combo: "2",
                description: this.gettext("Translate +x"),
                callback: function() {
                    return e.AlignmentManagerService.translate(new i.Vector3(t.TRANSLATE_DISTANCE,0,0))
                }
            }).add({
                combo: "4",
                description: this.gettext("Translate -y"),
                callback: function() {
                    return e.AlignmentManagerService.translate(new i.Vector3(0,-t.TRANSLATE_DISTANCE,0))
                }
            }).add({
                combo: "6",
                description: this.gettext("Translate +y"),
                callback: function() {
                    return e.AlignmentManagerService.translate(new i.Vector3(0,t.TRANSLATE_DISTANCE,0))
                }
            }).add({
                combo: "+",
                description: this.gettext("Translate -z"),
                callback: function() {
                    return e.AlignmentManagerService.translate(new i.Vector3(0,0,-t.TRANSLATE_DISTANCE))
                }
            }).add({
                combo: "-",
                description: this.gettext("Translate +z"),
                callback: function() {
                    return e.AlignmentManagerService.translate(new i.Vector3(0,0,t.TRANSLATE_DISTANCE))
                }
            }).add({
                combo: "7",
                description: this.gettext("Rotate 10° counterclockwise"),
                callback: function() {
                    return e.AlignmentManagerService.rotate(.174532925)
                }
            }).add({
                combo: "1",
                description: this.gettext("Rotate 0.1° counterclockwise"),
                callback: function() {
                    return e.AlignmentManagerService.rotate(.00174532925)
                }
            }).add({
                combo: "3",
                description: this.gettext("Rotate 0.1° clockwise"),
                callback: function() {
                    return e.AlignmentManagerService.rotate(-.00174532925)
                }
            }).add({
                combo: "9",
                description: this.gettext("Rotate 10° clockwise"),
                callback: function() {
                    return e.AlignmentManagerService.rotate(-.174532925)
                }
            }).add({
                combo: ["G", "g"],
                description: this.gettext("Show hovered scene in fullscreen"),
                callback: function() {
                    var t = e.ViewService.mainView.getLastMousePosition()
                      , n = e.ViewService.mainView.getViewport(t.x, t.y);
                    n && e.ViewService.mainView.toggleViewportFullscreen(n)
                }
            })
        }
        ,
        t.prototype.toggleSelection = function(t) {
            this.AlignmentService.toggleSelection(t)
        }
        ,
        t.prototype.zoomToDatasets = function(t) {
            this.AlignmentService.zoomToDatasets(t)
        }
        ,
        t.prototype.selectDatasets = function(t) {
            this.AlignmentService.selectAll(t)
        }
        ,
        t.prototype.deselectDatasets = function(t) {
            this.AlignmentService.deselectAll(t)
        }
        ,
        t.prototype.areAllDatasetsSelected = function(t) {
            return this.AlignmentService.areAllDatasetsSelected(t)
        }
        ,
        t.prototype.areNoDatasetsSelected = function(t) {
            return this.AlignmentService.areNoDatasetsSelected(t)
        }
        ,
        t.prototype.isDatasetSelected = function(t) {
            return this.AlignmentService.isDatasetSelected(t)
        }
        ,
        t.prototype.lockDatasets = function(t) {
            for (var e = 0, n = t; e < n.length; e++) {
                n[e].locked = !0
            }
        }
        ,
        t.prototype.unlockDatasets = function(t) {
            for (var e = 0, n = t; e < n.length; e++) {
                n[e].locked = !1
            }
        }
        ,
        t.prototype.areAllDatasetsLocked = function(t) {
            return r.every(t, (function(t) {
                return t.locked
            }
            ))
        }
        ,
        t.prototype.setAsPrimary = function(t) {
            this.AlignmentService.setAsPrimary(t)
        }
        ,
        t.prototype.toggleLock = function(t) {
            t.locked = !t.locked
        }
        ,
        t.prototype.save = function() {
            return this.AlignmentManagerService.save()
        }
        ,
        t.prototype.isSavingInProgress = function() {
            return this.AlignmentManagerService.isSavingInProgress()
        }
        ,
        t.TRANSLATE_DISTANCE = .02,
        t
    }();
    e.AlignmentController = o
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = (n(106),
    n(4))
      , o = (n(9),
    n(188),
    n(107));
    n(188);
    n(155);
    var a = n(8)
      , s = n(6)
      , c = n(0)
      , l = n(0)
      , u = n(106)
      , d = n(9)
      , p = n(188)
      , h = n(155)
      , f = function() {
        this.verticalAlignment = !0,
        this.applied = !1,
        this.inProgress = !1
    };
    e.AutomaticAlignmentState = f;
    var m = function() {
        function t(t, e, n, i, r) {
            this.ProgressReportService = t,
            this.gettextCatalog = e,
            this.RestService = n,
            this.JobService = i,
            this.DatasetAlignmentService = r
        }
        return t.prototype.fetch = function(t) {
            var e = this.ProgressReportService.addTask(this.gettextCatalog.getString("Automatic alignment"), 1, !1, !0, !1);
            return t.sourceBackupMatrix = t.source.m2w_.clone(),
            t.inProgress = !0,
            o.promiseFinally(this.align(t), (function() {
                t.inProgress = !1,
                e.itemDone()
            }
            ))
        }
        ,
        t.prototype.apply = function(t) {
            var e = new r.Matrix4;
            e.set.apply(e, t.result.transform),
            t.source.m2w_.multiplyMatrices(t.target.m2w_, e),
            t.applied = !0,
            this.afterSourceMatrixUpdate(t)
        }
        ,
        t.prototype.undo = function(t) {
            t.source.m2w_.copy(t.sourceBackupMatrix),
            t.applied = !1,
            this.afterSourceMatrixUpdate(t)
        }
        ,
        t.prototype.afterSourceMatrixUpdate = function(t) {
            t.source.m2wInv_.getInverse(t.source.m2w_),
            t.source.updateLocationsFromMatrix(),
            this.DatasetAlignmentService.updateImageCoordinates(t.source).catch(a.handleWarning),
            t.source.updatePose(),
            t.source.invalidate()
        }
        ,
        t.prototype.align = function(t) {
            var e = this
              , n = Array.prototype.slice.call(this.getSourceInTargetWorld(t.source, t.target).elements)
              , i = {
                source_dataset_name: t.source.name,
                target_dataset_name: t.target.name,
                align_vertically: t.verticalAlignment,
                coarse_alignment: n
            };
            return this.JobService.makeJobPromise(this.RestService.postApi("pointcloud/auto_align", i)).then((function(n) {
                return n.success ? (t.result = e.extractConverged(n.output),
                t.result ? e.apply(t) : Promise.reject(n)) : Promise.reject(n)
            }
            ))
        }
        ,
        t.prototype.extractConverged = function(e) {
            var n = t.OUTPUT_REGEX.exec(e);
            if (n && n[0])
                try {
                    return JSON.parse(n[0])
                } catch (t) {
                    return
                }
        }
        ,
        t.prototype.getSourceInTargetWorld = function(t, e) {
            var n = new r.Matrix4;
            return n.multiplyMatrices(e.m2wInv_, t.m2w_),
            n.transpose()
        }
        ,
        t.OUTPUT_REGEX = /^{.+}$/m,
        t.ɵfac = function(e) {
            return new (e || t)(l.ɵɵinject(u.ProgressReportService),l.ɵɵinject("gettextCatalog"),l.ɵɵinject(d.RestService),l.ɵɵinject(p.JobService),l.ɵɵinject(h.DatasetAlignmentService))
        }
        ,
        t.ɵprov = l.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.AutomaticAlignmentService = m,
    l.ɵsetClassMetadata(m, [{
        type: c.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: u.ProgressReportService
        }, {
            type: void 0,
            decorators: [{
                type: c.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: d.RestService
        }, {
            type: p.JobService
        }, {
            type: h.DatasetAlignmentService
        }]
    }
    ), null),
    i.module("IVWebApp").service("AutomaticAlignmentService", s.downgradeInjectable(m))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(7);
    n(1562),
    n(1563);
    var s = n(185)
      , c = n(223)
      , l = n(4)
      , u = function(t) {
        function e(e, n, i, r, o, a, s, c, l, u, d) {
            var p = t.call(this, c, l, u, d) || this;
            return p.VectorMapService = e,
            p.FloorChangerService = n,
            p.GroupService = i,
            p.VectorEntityRepository = r,
            p.IV = o,
            p.ViewService = a,
            p.GeoTransformationService = s,
            p.vectorEntities = r.data,
            p
        }
        return r(e, t),
        e.$inject = ["VectorMapService", "FloorChangerService", "GroupService", "VectorEntityRepository", "IV", "ViewService", "GeoTransformationService", "VectorMapRepository", "gettextCatalog", "$element", "ErrorService"],
        e.prototype.toggleMapSelection = function(t) {
            if (!t.editing) {
                t.selected = !t.selected;
                for (var e = 0, n = t.vectorLayers; e < n.length; e++) {
                    n[e].selected = t.selected
                }
            }
        }
        ,
        e.prototype.toggleLayerSelection = function(t) {
            t.selected = !t.selected;
            for (var e = 0, n = this.vectorMaps; e < n.length; e++) {
                n[e].selected = !1
            }
        }
        ,
        e.prototype.toggleMapExpansion = function(t) {
            t.editing || (t.expanded = !t.expanded)
        }
        ,
        e.prototype.toggleLayerVisibility = function(t) {
            t.visible = !t.visible,
            this.VectorMapService.updateVisibility()
        }
        ,
        e.prototype.startEditing = function(t) {
            t.selected && this.toggleMapSelection(t),
            t.expanded = !1,
            t.editing = !0,
            this.model = a.clone(t),
            this.model.security = a.cloneDeep(t.security)
        }
        ,
        e.prototype.acceptEditing = function(t) {
            var e = this;
            this.save().then((function() {
                e.VectorMapService.updateZ(e.model),
                e.cancelEditing(t)
            }
            )).catch((function() {}
            ))
        }
        ,
        e.prototype.cancelEditing = function(t) {
            this.model = void 0,
            t.editing = !1
        }
        ,
        e.prototype.isAnyEditing = function() {
            return e.isAnyEditing(this.vectorMaps)
        }
        ,
        e.prototype.jumpToMap = function(t) {
            var e = t.vectorLayers[0];
            if (e) {
                var n = e.vectorEntities[0];
                if (n) {
                    var i = n.type === c.VectorEntityType.POLYGON ? n.vectorEntity.boundary[0] : n.vectorEntity.coordinates[0]
                      , r = this.ViewService.mapView.getImage() ? this.ViewService.mapView.getImage().location.z : this.ViewService.mapView.getCamera().position.z;
                    r = a.clamp(this.GeoTransformationService.toGlobalHeight(r), void 0 !== t.zMin ? t.zMin : -1 / 0, void 0 !== t.zMax ? t.zMax : 1 / 0);
                    var o = new l.Vector3(i.x,i.y,r);
                    if (this.IV.moveToGeoLocation(o).catch((function() {}
                    )),
                    void 0 !== t.zMin && void 0 !== t.zMax) {
                        var s = this.GeoTransformationService.toLocalHeight(t.zMin)
                          , u = this.FloorChangerService.getFloorForHeight(s);
                        u && this.FloorChangerService.changeFloorByName(u.name).catch((function() {}
                        ))
                    } else
                        this.FloorChangerService.changeFloorByName(t.name).catch((function() {}
                        ))
                }
            }
        }
        ,
        e.getSelectedMaps = function(t) {
            return t.filter((function(t) {
                return t.selected
            }
            ))
        }
        ,
        e.getSelectedLayers = function(t, e) {
            return t.filter((function(t) {
                if (e)
                    for (var n = 0, i = e; n < i.length; n++) {
                        var r = i[n];
                        if (t.vectorMap.id === r.id)
                            return !1
                    }
                return t.selected
            }
            ))
        }
        ,
        e.isAnyEditing = function(t) {
            return t.some((function(t) {
                return t.editing
            }
            ))
        }
        ,
        e
    }(s.EntityEditorController);
    e.VectorMapListController = u;
    var d = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "VectorMapUI/VectorMapList.html",
            this.controller = u,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                model: "=?",
                vectorMaps: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.VectorMapListDirective = d,
    o.module("IVWebApp").directive("vectorMapList", d.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1599),
    n(1600);
    var r = n(153)
      , o = function() {
        function t() {
            this.DATA = r.MeasurementDomain.DATA,
            this.isData = !1
        }
        return Object.defineProperty(t.prototype, "percent", {
            get: function() {
                return this.used / (this.total / 100)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "isWarning", {
            get: function() {
                return this.percent > t.LIMIT_WARN_THRESHOLD
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "isDanger", {
            get: function() {
                return this.percent > t.LIMIT_DANGER_THRESHOLD
            },
            enumerable: !0,
            configurable: !0
        }),
        t.LIMIT_WARN_THRESHOLD = 75,
        t.LIMIT_DANGER_THRESHOLD = 90,
        t
    }();
    e.LimitDisplayController = o;
    var a = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "LimitDisplay/LimitDisplay.html",
            this.controller = o,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                total: "=",
                used: "=",
                isData: "="
            },
            this.transclude = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.LimitDisplayDirective = a,
    i.module("IVWebApp").directive("limitDisplay", a.factory())
}
, function(t, e, n) {
    (function(t) {
        angular.module("flow.provider", []).provider("flowFactory", (function() {
            "use strict";
            this.defaults = {},
            this.factory = function(e) {
                return new t(e)
            }
            ,
            this.events = [],
            this.on = function(t, e) {
                this.events.push([t, e])
            }
            ,
            this.$get = function() {
                var t = this.factory
                  , e = this.defaults
                  , n = this.events;
                return {
                    create: function(i) {
                        var r = t(angular.extend({}, e, i));
                        return angular.forEach(n, (function(t) {
                            r.on(t[0], t[1])
                        }
                        )),
                        r
                    }
                }
            }
        }
        )),
        angular.module("flow.init", ["flow.provider"]).controller("flowCtrl", ["$scope", "$attrs", "$parse", "flowFactory", function(t, e, n, i) {
            var r = angular.extend({}, t.$eval(e.flowInit))
              , o = t.$eval(e.flowObject) || i.create(r)
              , a = function(e) {
                var n = Array.prototype.slice.call(arguments);
                n.shift();
                var i = t.$broadcast.apply(t, ["flow::" + e, o].concat(n));
                if ({
                    progress: 1,
                    filesSubmitted: 1,
                    fileSuccess: 1,
                    fileError: 1,
                    complete: 1
                }[e] && t.$applyAsync(),
                i.defaultPrevented)
                    return !1
            };
            o.on("catchAll", a),
            t.$on("$destroy", (function() {
                o.off("catchAll", a)
            }
            )),
            t.$flow = o,
            e.hasOwnProperty("flowName") && (n(e.flowName).assign(t, o),
            t.$on("$destroy", (function() {
                n(e.flowName).assign(t)
            }
            )))
        }
        ]).directive("flowInit", [function() {
            return {
                scope: !0,
                controller: "flowCtrl"
            }
        }
        ]),
        angular.module("flow.btn", ["flow.init"]).directive("flowBtn", [function() {
            return {
                restrict: "EA",
                scope: !1,
                require: "^flowInit",
                link: function(t, e, n) {
                    var i = n.hasOwnProperty("flowDirectory")
                      , r = n.hasOwnProperty("flowSingleFile")
                      , o = n.hasOwnProperty("flowAttrs") && t.$eval(n.flowAttrs);
                    t.$flow.assignBrowse(e, i, r, o)
                }
            }
        }
        ]),
        angular.module("flow.dragEvents", ["flow.init"]).directive("flowPreventDrop", (function() {
            return {
                scope: !1,
                link: function(t, e, n) {
                    e.bind("drop dragover", (function(t) {
                        t.preventDefault()
                    }
                    ))
                }
            }
        }
        )).directive("flowDragEnter", ["$timeout", function(t) {
            return {
                scope: !1,
                link: function(e, n, i) {
                    var r, o = !1;
                    n.bind("dragover", (function(n) {
                        var a, s, c;
                        (s = !1,
                        c = (a = n).dataTransfer || a.originalEvent.dataTransfer,
                        angular.forEach(c && c.types, (function(t) {
                            "Files" === t && (s = !0)
                        }
                        )),
                        s) && (o || (e.$apply(i.flowDragEnter),
                        o = !0),
                        t.cancel(r),
                        n.preventDefault())
                    }
                    )),
                    n.bind("dragleave drop", (function(n) {
                        t.cancel(r),
                        r = t((function() {
                            e.$eval(i.flowDragLeave),
                            r = null,
                            o = !1
                        }
                        ), 100)
                    }
                    ))
                }
            }
        }
        ]),
        angular.module("flow.drop", ["flow.init"]).directive("flowDrop", (function() {
            return {
                scope: !1,
                require: "^flowInit",
                link: function(t, e, n) {
                    function i() {
                        t.$flow.assignDrop(e)
                    }
                    n.flowDropEnabled ? t.$watch(n.flowDropEnabled, (function(n) {
                        n ? i() : t.$flow.unAssignDrop(e)
                    }
                    )) : i()
                }
            }
        }
        )),
        function(t) {
            "use strict";
            var e = t.module("flow.events", ["flow.init"]);
            t.forEach({
                fileSuccess: ["$file", "$message"],
                fileProgress: ["$file"],
                fileAdded: ["$file", "$event"],
                filesAdded: ["$files", "$event"],
                filesSubmitted: ["$files", "$event"],
                fileRetry: ["$file"],
                fileRemoved: ["$file"],
                fileError: ["$file", "$message"],
                uploadStart: [],
                complete: [],
                progress: [],
                error: ["$message", "$file"]
            }, (function(n, i) {
                var r, o = "flow" + ((r = i).charAt(0).toUpperCase() + r.slice(1));
                "flowUploadStart" == o && (o = "flowUploadStarted"),
                e.directive(o, [function() {
                    return {
                        require: "^flowInit",
                        controller: ["$scope", "$attrs", function(e, r) {
                            e.$on("flow::" + i, (function() {
                                var i = Array.prototype.slice.call(arguments)
                                  , a = i.shift();
                                if (e.$flow === i.shift()) {
                                    var s = {};
                                    t.forEach(n, (function(t, e) {
                                        s[t] = i[e]
                                    }
                                    )),
                                    !1 === e.$eval(r[o], s) && a.preventDefault()
                                }
                            }
                            ))
                        }
                        ]
                    }
                }
                ])
            }
            ))
        }(angular),
        angular.module("flow.img", ["flow.init"]).directive("flowImg", [function() {
            return {
                scope: !1,
                require: "^flowInit",
                link: function(t, e, n) {
                    var i = n.flowImg;
                    t.$watch(i, (function(e) {
                        if (e) {
                            var i = new FileReader;
                            i.readAsDataURL(e.file),
                            i.onload = function(e) {
                                t.$apply((function() {
                                    n.$set("src", e.target.result)
                                }
                                ))
                            }
                        }
                    }
                    ))
                }
            }
        }
        ]),
        angular.module("flow.transfers", ["flow.init"]).directive("flowTransfers", [function() {
            return {
                scope: !0,
                require: "^flowInit",
                link: function(t) {
                    t.transfers = t.$flow.files
                }
            }
        }
        ]),
        angular.module("flow", ["flow.provider", "flow.init", "flow.events", "flow.btn", "flow.drop", "flow.transfers", "flow.img", "flow.dragEvents"])
    }
    ).call(this, n(435))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.coloredMaps = function() {
            return this.withData("type", "colored"),
            this
        }
        ,
        e.prototype.nonColoredMaps = function() {
            return this.withData("type", "non-colored"),
            this
        }
        ,
        e
    }(n(64).TrackingEvent);
    e.AbstractMapGenerationEvent = o
}
, function(t, e) {
    var n = "Upload/Upload.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div flow-init\n     flow-object="vm.uploader"\n     flow-file-error="vm.uploadError($file, $message)"\n     flow-file-success="vm.uploadSuccess($file, $message)"\n     flow-file-progress="vm.fileProgress($file)"\n     flow-files-submitted="vm.uploadFilesSubmitted($files)"\n     flow-error="vm.uploadError($file, $message)">\n\n\t\x3c!-- Files selection --\x3e\n\t<div class="form-group">\n\t\t<button type="button"\n\t\t        class="btn btn-primary"\n\t\t        flow-btn\n\t\t        flow-attrs="{accept: \'{{vm.acceptedFileTypes}}\'}">\n\t\t\t<span class="fa fa-upload" aria-hidden="true"></span>\n\t\t\t<span ng-bind-html="vm.buttonTitle">\n\t\t\t</span>\n\t\t</button>\n\t\t<em translate translate-params-accepted-file-types="vm.acceptedFileTypes">\n\t\t\tSupported formats: {{acceptedFileTypes}}\n\t\t</em>\n\t</div>\n    <upload-progress uploader="vm.uploader">\n    </upload-progress>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1624),
    n(1625);
    var r, o = n(20), a = n(611);
    !function(t) {
        t.CUSTOM = "custom",
        t.DATASET = "dataset"
    }(r = e.LocationPickerMode || (e.LocationPickerMode = {}));
    var s = function() {
        function t(t, e, n, o, a) {
            var s = this;
            this.ConfigService = t,
            this.DatasetRepository = e,
            this.GeoRegistrationService = n,
            this.RestService = o,
            this.AlignmentService = a,
            this.LOCATION_PICKER_MODE_CUSTOM = r.CUSTOM,
            this.LOCATION_PICKER_MODE_DATASET = r.DATASET,
            this.addingLocation = {
                longitude: void 0,
                latitude: void 0,
                height: void 0,
                orientation: void 0,
                referenceDatasetId: void 0
            },
            this.addressNotFound = !1,
            this.addressToSearch = "",
            this.GeoRegistrationService.fetchGoogleMapsLibrary(),
            this.locationPickerMode = this.getDatasetsWithLocation().length ? r.DATASET : r.CUSTOM,
            window.setTimeout((function() {
                i.element("#" + s.locationPickerId).on("shown.bs.modal", (function() {
                    s.initMap()
                }
                ))
            }
            ))
        }
        return t.$inject = ["ConfigService", "DatasetRepository", "GeoRegistrationService", "RestService", "AlignmentService"],
        t.prototype.initMap = function() {
            var t = this;
            this.GeoRegistrationService.initialized.then((function() {
                t.olMap || t.initOLM(),
                t.locationPickerMode === r.DATASET ? t.initDatasetMode() : t.initCustomMode(),
                o.invalidateAngular()
            }
            )).catch((function() {}
            ))
        }
        ,
        t.prototype.initOLM = function() {
            var t = this;
            a.loadOpenLayersMap().then((function(e) {
                t.olMap = new e(t.locationPickerId + "-open-layers-map",t.GeoRegistrationService,t.ConfigService,t.RestService,t.AlignmentService),
                document.getElementById(t.locationPickerId).addEventListener("scroll", (function() {
                    return t.olMap.updateMapSize()
                }
                )),
                t.olMap.addClickHandler((function(e) {
                    return t.mapClicked(e)
                }
                )),
                t.locationReferenceDataset ? t.updateMapForReferenceDataset() : t.updateMapForCustomLocation(!0, !0)
            }
            )).catch((function() {}
            ))
        }
        ,
        t.prototype.initDatasetMode = function() {
            this.locationReferenceDataset = this.getDatasetsWithLocation()[0],
            this.updateMapForReferenceDataset()
        }
        ,
        t.prototype.initCustomMode = function() {
            this.addressToSearch = "",
            this.addressNotFound = !1,
            this.addingLocation.referenceDatasetId = void 0,
            this.olMap.updateMapSize(),
            this.updateMapForCustomLocation(!0, !0)
        }
        ,
        t.prototype.mapClicked = function(t) {
            this.updateAddingLocation(t.longitude, t.latitude),
            this.updateMapForCustomLocation(!1, !1)
        }
        ,
        t.prototype.updateAddingLocation = function(t, e, n, i, r) {
            this.addingLocation = {
                longitude: t,
                latitude: e,
                height: n || 0,
                orientation: i || 0,
                referenceDatasetId: r
            },
            o.invalidateAngular()
        }
        ,
        t.prototype.updateMapForReferenceDataset = function() {
            this.locationReferenceDataset && (this.locationPickerMode = r.DATASET,
            this.focusOnDataset(this.locationReferenceDataset),
            this.olMap && this.olMap.toggleControl("click", !1))
        }
        ,
        t.prototype.updateMapForCustomLocation = function(t, e) {
            this.locationPickerMode = r.CUSTOM,
            this.focusOnLocation(this.addingLocation, t, e),
            this.olMap && this.olMap.toggleControl("click", !0)
        }
        ,
        t.prototype.focusOnDataset = function(t) {
            this.updateAddingLocation(t.globalLocation.x, t.globalLocation.y, t.globalLocation.z, o.radiansToDegrees(t.orientation), t.id),
            this.focusOnLocation(this.addingLocation, !0, !0)
        }
        ,
        t.prototype.focusOnLocation = function(t, e, n) {
            this.olMap && (this.olMap.moveLocationMarkerTo(t),
            e && this.olMap.zoomToLocation(t, n ? this.getZoomLevel() : void 0))
        }
        ,
        t.prototype.getZoomLevel = function() {
            return this.addingLocation && this.isLocationFieldValid("longitude") && this.isLocationFieldValid("latitude") ? t.DEFAULT_ZOOM_LEVEL : 0
        }
        ,
        t.prototype.isAddingLocationValid = function() {
            return this.isLocationFieldValid("longitude") && this.isLocationFieldValid("latitude") && this.isLocationFieldValid("height") && this.isLocationFieldValid("orientation")
        }
        ,
        t.prototype.isLocationFieldValid = function(t) {
            return Number.isFinite(this.addingLocation[t])
        }
        ,
        t.prototype.searchAddress = function() {
            var t = this;
            this.addressToSearch && (this.addressNotFound = !1,
            this.GeoRegistrationService.searchAddress(this.addressToSearch).then((function(e) {
                e.length ? (t.updateAddingLocation(Number.parseFloat(e[0].longitude), Number.parseFloat(e[0].latitude)),
                t.updateMapForCustomLocation(!0, !0)) : t.addressNotFound = !0
            }
            )).catch((function() {
                return t.addressNotFound = !0
            }
            )))
        }
        ,
        t.prototype.getDatasetsWithLocation = function() {
            return this.DatasetRepository.data
        }
        ,
        t.DEFAULT_ZOOM_LEVEL = 17,
        t
    }();
    e.DatasetLocationPickerController = s;
    var c = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DatasetManagementUI/DatasetLocationPicker.html",
            this.controller = s,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                locationPickerId: "@",
                datasetsToAddNames: "@",
                addingLocation: "=",
                onAdd: "&",
                onCancel: "&?"
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.DatasetLocationPickerDirective = c,
    i.module("IVWebApp").directive("datasetLocationPicker", c.factory())
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2);
    n(618),
    n(1629);
    var a = n(330)
      , s = n(8)
      , c = function(t) {
        function e(e, n, i, r, o) {
            return t.call(this, e, n, i, r, o) || this
        }
        return r(e, t),
        e.$inject = ["JobListService", "FlowService", "StatusCheckService", "MessageReportingService", "gettextCatalog"],
        e.prototype.uploadFilesSubmitted = function(e) {
            t.prototype.filesSubmitted.call(this, e).catch(s.handleWarning)
        }
        ,
        e
    }(a.AbstractUploadController);
    e.UploadController = c;
    var l = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "Upload/Upload.html",
            this.controller = c,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                buttonTitle: "@",
                targetUrl: "@",
                acceptedFileTypes: "@",
                onFilePicked: "&?",
                onUploadError: "&?",
                onUploadSuccess: "&?"
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.UploadDirective = l,
    o.module("IVWebApp").directive("upload", l.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.PROVIDE_CONFIG = "PROVIDE_CONFIG",
        t.IN_PROGRESS = "IN_PROGRESS",
        t.SUCCESS = "SUCCESS",
        t.ERROR = "ERROR"
    }(e.ConfigState || (e.ConfigState = {}))
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , r = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(25)
      , a = n(7)
      , s = n(20)
      , c = n(8)
      , l = n(152)
      , u = function() {
        function t(t) {
            this.configService = t,
            this.lastPersistedState = {}
        }
        return t.prototype.toDictionary = function() {
            var t;
            return (t = {})[o.Configs.OAUTH_HOST_URL] = this.oauthHostUrl,
            t[o.Configs.OAUTH_ISSUER_URL] = this.oauthIssuerUrl,
            t[o.Configs.OAUTH_CLIENT_ID] = this.oauthClientId,
            t[o.Configs.OAUTH_CLIENT_SECRET] = this.oauthClientSecret,
            t[o.Configs.OAUTH_REDIRECT_URLS] = this.oauthRedirectUrls,
            t[o.Configs.OAUTH_USE_TOKEN_GROUPS] = this.oauthUseGroupsInToken,
            t[o.Configs.OAUTH_GROUPS_CLAIM_ARRAY_KEY] = this.oauthGroupsClaimArrayKey,
            t[o.Configs.FEDERATED_USE_TOKEN_GROUPS] = this.federatedUseGroupsInToken,
            t[o.Configs.FEDERATED_JWK_SET_URI] = this.federatedJwkSetUri,
            t[o.Configs.FEDERATED_GROUPS_CLAIM_ARRAY_KEY] = this.federatedGroupsClaimArrayKey,
            t[o.Configs.PRIVATE_MODE_ENABLED] = this.isPrivateModeEnabled,
            t
        }
        ,
        t.prototype.initialize = function() {
            return i(this, void 0, void 0, (function() {
                return r(this, (function(t) {
                    switch (t.label) {
                    case 0:
                        return [4, this.configService.initialized.catch(c.handleWarning)];
                    case 1:
                        return t.sent(),
                        this.isPrivateModeEnabled = this.configService.getBoolean(o.Configs.PRIVATE_MODE_ENABLED, !1),
                        this.oauthHostUrl = this.configService.getString(o.Configs.OAUTH_HOST_URL, ""),
                        this.oauthIssuerUrl = this.configService.getString(o.Configs.OAUTH_ISSUER_URL, ""),
                        this.oauthClientId = this.configService.getString(o.Configs.OAUTH_CLIENT_ID, ""),
                        this.oauthClientSecret = this.configService.getString(o.Configs.OAUTH_CLIENT_SECRET, ""),
                        this.oauthRedirectUrls = this.configService.getString(o.Configs.OAUTH_REDIRECT_URLS, ""),
                        this.oauthUseGroupsInToken = this.configService.getBoolean(o.Configs.OAUTH_USE_TOKEN_GROUPS, !1),
                        this.oauthGroupsClaimArrayKey = this.configService.getString(o.Configs.OAUTH_GROUPS_CLAIM_ARRAY_KEY, ""),
                        this.federatedUseGroupsInToken = this.configService.getBoolean(o.Configs.FEDERATED_USE_TOKEN_GROUPS, !1),
                        this.federatedJwkSetUri = this.configService.getString(o.Configs.FEDERATED_JWK_SET_URI, ""),
                        this.federatedGroupsClaimArrayKey = this.configService.getString(o.Configs.FEDERATED_GROUPS_CLAIM_ARRAY_KEY, ""),
                        this.savedHostPrefix = this.configService.getString(o.Configs.OAUTH_HOST_PREFIX, ""),
                        this.urlHostPrefix = l.getBaseUrl().replace(/^(?:https?:\/\/)?/i, ""),
                        this.lastPersistedState = this.toDictionary(),
                        [2, this]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.clearOpenIdConfiguration = function() {
            this.oauthHostUrl = "",
            this.oauthIssuerUrl = "",
            this.oauthClientId = "",
            this.oauthClientSecret = "",
            this.oauthRedirectUrls = "",
            this.oauthUseGroupsInToken = !1
        }
        ,
        t.prototype.isOpenIdAuthenticationConfigEmpty = function() {
            return [this.oauthHostUrl, this.oauthClientSecret, this.oauthIssuerUrl, this.oauthClientId].every((function(t) {
                return s.isBlank(t)
            }
            )) && !this.oauthUseGroupsInToken
        }
        ,
        t.prototype.canSave = function() {
            var t = [this.oauthHostUrl, this.oauthClientSecret, this.oauthIssuerUrl, this.oauthClientId].every((function(t) {
                return !s.isBlank(t)
            }
            ));
            return this.isDirty() && (this.isOpenIdAuthenticationConfigEmpty() || t)
        }
        ,
        t.prototype.save = function() {
            var t = this;
            return this.canSave() ? (this.oauthUseGroupsInToken || this.federatedUseGroupsInToken ? "" === this.savedHostPrefix && (this.configService.saveConfig(o.Configs.OAUTH_HOST_PREFIX, this.urlHostPrefix).catch(c.handleWarning),
            this.savedHostPrefix = this.urlHostPrefix) : (this.configService.saveConfig(o.Configs.OAUTH_HOST_PREFIX, "").catch(c.handleWarning),
            this.savedHostPrefix = ""),
            this.configService.saveConfigs(this.getDelta()).then((function() {
                return t.lastPersistedState = t.toDictionary(),
                t
            }
            ))) : Promise.resolve(this)
        }
        ,
        t.prototype.isDirty = function() {
            return a.size(this.getDelta()) > 0
        }
        ,
        t.prototype.getDelta = function() {
            var t = this;
            return a.omitBy(this.toDictionary(), (function(e, n) {
                return t.lastPersistedState[n] === e
            }
            ))
        }
        ,
        t.factory = function() {
            return function(e) {
                return new t(e).initialize()
            }
        }
        ,
        t
    }();
    e.AuthenticationConfiguration = u
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return a
    }
    ));
    var i = n(1)
      , r = n(26)
      , o = n(119);
    function a(t, e) {
        return void 0 === e && (e = o.a),
        function(n) {
            return n.lift(new s(t,e))
        }
    }
    var s = function() {
        function t(t, e) {
            this.dueTime = t,
            this.scheduler = e
        }
        return t.prototype.call = function(t, e) {
            return e.subscribe(new c(t,this.dueTime,this.scheduler))
        }
        ,
        t
    }()
      , c = function(t) {
        function e(e, n, i) {
            var r = t.call(this, e) || this;
            return r.dueTime = n,
            r.scheduler = i,
            r.debouncedSubscription = null,
            r.lastValue = null,
            r.hasValue = !1,
            r
        }
        return i.c(e, t),
        e.prototype._next = function(t) {
            this.clearDebounce(),
            this.lastValue = t,
            this.hasValue = !0,
            this.add(this.debouncedSubscription = this.scheduler.schedule(l, this.dueTime, this))
        }
        ,
        e.prototype._complete = function() {
            this.debouncedNext(),
            this.destination.complete()
        }
        ,
        e.prototype.debouncedNext = function() {
            if (this.clearDebounce(),
            this.hasValue) {
                var t = this.lastValue;
                this.lastValue = null,
                this.hasValue = !1,
                this.destination.next(t)
            }
        }
        ,
        e.prototype.clearDebounce = function() {
            var t = this.debouncedSubscription;
            null !== t && (this.remove(t),
            t.unsubscribe(),
            this.debouncedSubscription = null)
        }
        ,
        e
    }(r.a);
    function l(t) {
        t.debouncedNext()
    }
}
, function(t, e, n) {
    "use strict";
    n.r(e),
    n.d(e, "AbstractControl", (function() {
        return vt
    }
    )),
    n.d(e, "AbstractControlDirective", (function() {
        return m
    }
    )),
    n.d(e, "AbstractFormGroupDirective", (function() {
        return Et
    }
    )),
    n.d(e, "COMPOSITION_BUFFER_MODE", (function() {
        return h
    }
    )),
    n.d(e, "CheckboxControlValueAccessor", (function() {
        return d
    }
    )),
    n.d(e, "CheckboxRequiredValidator", (function() {
        return Xt
    }
    )),
    n.d(e, "ControlContainer", (function() {
        return g
    }
    )),
    n.d(e, "DefaultValueAccessor", (function() {
        return f
    }
    )),
    n.d(e, "EmailValidator", (function() {
        return Kt
    }
    )),
    n.d(e, "FormArray", (function() {
        return wt
    }
    )),
    n.d(e, "FormArrayName", (function() {
        return Ut
    }
    )),
    n.d(e, "FormBuilder", (function() {
        return ae
    }
    )),
    n.d(e, "FormControl", (function() {
        return yt
    }
    )),
    n.d(e, "FormControlDirective", (function() {
        return Rt
    }
    )),
    n.d(e, "FormControlName", (function() {
        return Gt
    }
    )),
    n.d(e, "FormGroup", (function() {
        return bt
    }
    )),
    n.d(e, "FormGroupDirective", (function() {
        return Nt
    }
    )),
    n.d(e, "FormGroupName", (function() {
        return Vt
    }
    )),
    n.d(e, "FormsModule", (function() {
        return ce
    }
    )),
    n.d(e, "MaxLengthValidator", (function() {
        return $t
    }
    )),
    n.d(e, "MinLengthValidator", (function() {
        return Jt
    }
    )),
    n.d(e, "NG_ASYNC_VALIDATORS", (function() {
        return C
    }
    )),
    n.d(e, "NG_VALIDATORS", (function() {
        return E
    }
    )),
    n.d(e, "NG_VALUE_ACCESSOR", (function() {
        return l
    }
    )),
    n.d(e, "NgControl", (function() {
        return y
    }
    )),
    n.d(e, "NgControlStatus", (function() {
        return S
    }
    )),
    n.d(e, "NgControlStatusGroup", (function() {
        return x
    }
    )),
    n.d(e, "NgForm", (function() {
        return Mt
    }
    )),
    n.d(e, "NgModel", (function() {
        return Pt
    }
    )),
    n.d(e, "NgModelGroup", (function() {
        return Tt
    }
    )),
    n.d(e, "NgSelectOption", (function() {
        return K
    }
    )),
    n.d(e, "NumberValueAccessor", (function() {
        return R
    }
    )),
    n.d(e, "PatternValidator", (function() {
        return ee
    }
    )),
    n.d(e, "RadioControlValueAccessor", (function() {
        return j
    }
    )),
    n.d(e, "RangeValueAccessor", (function() {
        return F
    }
    )),
    n.d(e, "ReactiveFormsModule", (function() {
        return le
    }
    )),
    n.d(e, "RequiredValidator", (function() {
        return qt
    }
    )),
    n.d(e, "SelectControlValueAccessor", (function() {
        return Y
    }
    )),
    n.d(e, "SelectMultipleControlValueAccessor", (function() {
        return Q
    }
    )),
    n.d(e, "VERSION", (function() {
        return se
    }
    )),
    n.d(e, "Validators", (function() {
        return T
    }
    )),
    n.d(e, "ɵInternalFormsSharedModule", (function() {
        return oe
    }
    )),
    n.d(e, "ɵNgNoValidate", (function() {
        return It
    }
    )),
    n.d(e, "ɵNgSelectMultipleOption", (function() {
        return $
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_a", (function() {
        return ne
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_b", (function() {
        return ie
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_ba", (function() {
        return Wt
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_bb", (function() {
        return Yt
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_bc", (function() {
        return Zt
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_bd", (function() {
        return Qt
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_be", (function() {
        return te
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_c", (function() {
        return re
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_d", (function() {
        return oe
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_e", (function() {
        return u
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_f", (function() {
        return p
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_g", (function() {
        return b
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_h", (function() {
        return w
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_i", (function() {
        return St
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_j", (function() {
        return Ot
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_k", (function() {
        return At
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_l", (function() {
        return D
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_m", (function() {
        return L
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_n", (function() {
        return N
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_o", (function() {
        return V
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_p", (function() {
        return kt
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_q", (function() {
        return Dt
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_r", (function() {
        return zt
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_s", (function() {
        return Lt
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_t", (function() {
        return jt
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_u", (function() {
        return Ft
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_v", (function() {
        return q
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_w", (function() {
        return Z
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_x", (function() {
        return $
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_y", (function() {
        return It
    }
    )),
    n.d(e, "ɵangular_packages_forms_forms_z", (function() {
        return Ht
    }
    ));
    var i = n(1)
      , r = n(0)
      , o = n(3)
      , a = n(228)
      , s = n(76)
      , c = n(62)
      , l = new r.InjectionToken("NgValueAccessor")
      , u = {
        provide: l,
        useExisting: Object(r.forwardRef)((function() {
            return d
        }
        )),
        multi: !0
    }
      , d = function() {
        function t(t, e) {
            this._renderer = t,
            this._elementRef = e,
            this.onChange = function(t) {}
            ,
            this.onTouched = function() {}
        }
        return t.prototype.writeValue = function(t) {
            this._renderer.setProperty(this._elementRef.nativeElement, "checked", t)
        }
        ,
        t.prototype.registerOnChange = function(t) {
            this.onChange = t
        }
        ,
        t.prototype.registerOnTouched = function(t) {
            this.onTouched = t
        }
        ,
        t.prototype.setDisabledState = function(t) {
            this._renderer.setProperty(this._elementRef.nativeElement, "disabled", t)
        }
        ,
        (t = Object(i.b)([Object(i.d)("design:paramtypes", [r.Renderer2, r.ElementRef])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.Renderer2),r["ɵɵdirectiveInject"](r.ElementRef))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["input", "type", "checkbox", "formControlName", ""], ["input", "type", "checkbox", "formControl", ""], ["input", "type", "checkbox", "ngModel", ""]],
            hostBindings: function(t, e) {
                1 & t && r["ɵɵlistener"]("change", (function(t) {
                    return e.onChange(t.target.checked)
                }
                ))("blur", (function() {
                    return e.onTouched()
                }
                ))
            },
            features: [r["ɵɵProvidersFeature"]([u])]
        }),
        t
    }()
      , p = {
        provide: l,
        useExisting: Object(r.forwardRef)((function() {
            return f
        }
        )),
        multi: !0
    };
    var h = new r.InjectionToken("CompositionEventMode")
      , f = function() {
        function t(t, e, n) {
            var i;
            this._renderer = t,
            this._elementRef = e,
            this._compositionMode = n,
            this.onChange = function(t) {}
            ,
            this.onTouched = function() {}
            ,
            this._composing = !1,
            null == this._compositionMode && (this._compositionMode = (i = Object(o["ɵgetDOM"])() ? Object(o["ɵgetDOM"])().getUserAgent() : "",
            !/android (\d+)/.test(i.toLowerCase())))
        }
        return t.prototype.writeValue = function(t) {
            var e = null == t ? "" : t;
            this._renderer.setProperty(this._elementRef.nativeElement, "value", e)
        }
        ,
        t.prototype.registerOnChange = function(t) {
            this.onChange = t
        }
        ,
        t.prototype.registerOnTouched = function(t) {
            this.onTouched = t
        }
        ,
        t.prototype.setDisabledState = function(t) {
            this._renderer.setProperty(this._elementRef.nativeElement, "disabled", t)
        }
        ,
        t.prototype._handleInput = function(t) {
            (!this._compositionMode || this._compositionMode && !this._composing) && this.onChange(t)
        }
        ,
        t.prototype._compositionStart = function() {
            this._composing = !0
        }
        ,
        t.prototype._compositionEnd = function(t) {
            this._composing = !1,
            this._compositionMode && this.onChange(t)
        }
        ,
        (t = Object(i.b)([Object(i.e)(2, Object(r.Optional)()), Object(i.e)(2, Object(r.Inject)(h)), Object(i.d)("design:paramtypes", [r.Renderer2, r.ElementRef, Boolean])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.Renderer2),r["ɵɵdirectiveInject"](r.ElementRef),r["ɵɵdirectiveInject"](h, 8))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["input", "formControlName", "", 3, "type", "checkbox"], ["textarea", "formControlName", ""], ["input", "formControl", "", 3, "type", "checkbox"], ["textarea", "formControl", ""], ["input", "ngModel", "", 3, "type", "checkbox"], ["textarea", "ngModel", ""], ["", "ngDefaultControl", ""]],
            hostBindings: function(t, e) {
                1 & t && r["ɵɵlistener"]("input", (function(t) {
                    return e._handleInput(t.target.value)
                }
                ))("blur", (function() {
                    return e.onTouched()
                }
                ))("compositionstart", (function() {
                    return e._compositionStart()
                }
                ))("compositionend", (function(t) {
                    return e._compositionEnd(t.target.value)
                }
                ))
            },
            features: [r["ɵɵProvidersFeature"]([p])]
        }),
        t
    }()
      , m = function() {
        function t() {}
        return Object.defineProperty(t.prototype, "value", {
            get: function() {
                return this.control ? this.control.value : null
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "valid", {
            get: function() {
                return this.control ? this.control.valid : null
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "invalid", {
            get: function() {
                return this.control ? this.control.invalid : null
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "pending", {
            get: function() {
                return this.control ? this.control.pending : null
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "disabled", {
            get: function() {
                return this.control ? this.control.disabled : null
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "enabled", {
            get: function() {
                return this.control ? this.control.enabled : null
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "errors", {
            get: function() {
                return this.control ? this.control.errors : null
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "pristine", {
            get: function() {
                return this.control ? this.control.pristine : null
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "dirty", {
            get: function() {
                return this.control ? this.control.dirty : null
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "touched", {
            get: function() {
                return this.control ? this.control.touched : null
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "status", {
            get: function() {
                return this.control ? this.control.status : null
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "untouched", {
            get: function() {
                return this.control ? this.control.untouched : null
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "statusChanges", {
            get: function() {
                return this.control ? this.control.statusChanges : null
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "valueChanges", {
            get: function() {
                return this.control ? this.control.valueChanges : null
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "path", {
            get: function() {
                return null
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.reset = function(t) {
            void 0 === t && (t = void 0),
            this.control && this.control.reset(t)
        }
        ,
        t.prototype.hasError = function(t, e) {
            return !!this.control && this.control.hasError(t, e)
        }
        ,
        t.prototype.getError = function(t, e) {
            return this.control ? this.control.getError(t, e) : null
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t
        }),
        t
    }()
      , g = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        Object(i.c)(e, t),
        Object.defineProperty(e.prototype, "formDirective", {
            get: function() {
                return null
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "path", {
            get: function() {
                return null
            },
            enumerable: !0,
            configurable: !0
        }),
        e.ɵfac = function(t) {
            return n(t || e)
        }
        ,
        e.ɵdir = r["ɵɵdefineDirective"]({
            type: e,
            features: [r["ɵɵInheritDefinitionFeature"]]
        });
        var n = r["ɵɵgetInheritedFactory"](e);
        return e
    }(m);
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function v() {
        throw new Error("unimplemented")
    }
    var y = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e._parent = null,
            e.name = null,
            e.valueAccessor = null,
            e._rawValidators = [],
            e._rawAsyncValidators = [],
            e
        }
        return Object(i.c)(e, t),
        Object.defineProperty(e.prototype, "validator", {
            get: function() {
                return v()
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "asyncValidator", {
            get: function() {
                return v()
            },
            enumerable: !0,
            configurable: !0
        }),
        e
    }(m)
      , b = function() {
        function t(t) {
            this._cd = t
        }
        return Object.defineProperty(t.prototype, "ngClassUntouched", {
            get: function() {
                return !!this._cd.control && this._cd.control.untouched
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "ngClassTouched", {
            get: function() {
                return !!this._cd.control && this._cd.control.touched
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "ngClassPristine", {
            get: function() {
                return !!this._cd.control && this._cd.control.pristine
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "ngClassDirty", {
            get: function() {
                return !!this._cd.control && this._cd.control.dirty
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "ngClassValid", {
            get: function() {
                return !!this._cd.control && this._cd.control.valid
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "ngClassInvalid", {
            get: function() {
                return !!this._cd.control && this._cd.control.invalid
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "ngClassPending", {
            get: function() {
                return !!this._cd.control && this._cd.control.pending
            },
            enumerable: !0,
            configurable: !0
        }),
        t
    }()
      , w = {
        "[class.ng-untouched]": "ngClassUntouched",
        "[class.ng-touched]": "ngClassTouched",
        "[class.ng-pristine]": "ngClassPristine",
        "[class.ng-dirty]": "ngClassDirty",
        "[class.ng-valid]": "ngClassValid",
        "[class.ng-invalid]": "ngClassInvalid",
        "[class.ng-pending]": "ngClassPending"
    }
      , S = function(t) {
        function e(e) {
            return t.call(this, e) || this
        }
        return Object(i.c)(e, t),
        (e = Object(i.b)([Object(i.e)(0, Object(r.Self)()), Object(i.d)("design:paramtypes", [y])], e)).ɵfac = function(t) {
            return new (t || e)(r["ɵɵdirectiveInject"](y, 2))
        }
        ,
        e.ɵdir = r["ɵɵdefineDirective"]({
            type: e,
            selectors: [["", "formControlName", ""], ["", "ngModel", ""], ["", "formControl", ""]],
            hostVars: 14,
            hostBindings: function(t, e) {
                2 & t && r["ɵɵclassProp"]("ng-untouched", e.ngClassUntouched)("ng-touched", e.ngClassTouched)("ng-pristine", e.ngClassPristine)("ng-dirty", e.ngClassDirty)("ng-valid", e.ngClassValid)("ng-invalid", e.ngClassInvalid)("ng-pending", e.ngClassPending)
            },
            features: [r["ɵɵInheritDefinitionFeature"]]
        }),
        e
    }(b)
      , x = function(t) {
        function e(e) {
            return t.call(this, e) || this
        }
        return Object(i.c)(e, t),
        (e = Object(i.b)([Object(i.e)(0, Object(r.Self)()), Object(i.d)("design:paramtypes", [g])], e)).ɵfac = function(t) {
            return new (t || e)(r["ɵɵdirectiveInject"](g, 2))
        }
        ,
        e.ɵdir = r["ɵɵdefineDirective"]({
            type: e,
            selectors: [["", "formGroupName", ""], ["", "formArrayName", ""], ["", "ngModelGroup", ""], ["", "formGroup", ""], ["form", 3, "ngNoForm", ""], ["", "ngForm", ""]],
            hostVars: 14,
            hostBindings: function(t, e) {
                2 & t && r["ɵɵclassProp"]("ng-untouched", e.ngClassUntouched)("ng-touched", e.ngClassTouched)("ng-pristine", e.ngClassPristine)("ng-dirty", e.ngClassDirty)("ng-valid", e.ngClassValid)("ng-invalid", e.ngClassInvalid)("ng-pending", e.ngClassPending)
            },
            features: [r["ɵɵInheritDefinitionFeature"]]
        }),
        e
    }(b);
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function M(t) {
        return null == t || 0 === t.length
    }
    var E = new r.InjectionToken("NgValidators")
      , C = new r.InjectionToken("NgAsyncValidators")
      , A = /^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/
      , T = function() {
        function t() {}
        return t.min = function(t) {
            return function(e) {
                if (M(e.value) || M(t))
                    return null;
                var n = parseFloat(e.value);
                return !isNaN(n) && n < t ? {
                    min: {
                        min: t,
                        actual: e.value
                    }
                } : null
            }
        }
        ,
        t.max = function(t) {
            return function(e) {
                if (M(e.value) || M(t))
                    return null;
                var n = parseFloat(e.value);
                return !isNaN(n) && n > t ? {
                    max: {
                        max: t,
                        actual: e.value
                    }
                } : null
            }
        }
        ,
        t.required = function(t) {
            return M(t.value) ? {
                required: !0
            } : null
        }
        ,
        t.requiredTrue = function(t) {
            return !0 === t.value ? null : {
                required: !0
            }
        }
        ,
        t.email = function(t) {
            return M(t.value) || A.test(t.value) ? null : {
                email: !0
            }
        }
        ,
        t.minLength = function(t) {
            return function(e) {
                if (M(e.value))
                    return null;
                var n = e.value ? e.value.length : 0;
                return n < t ? {
                    minlength: {
                        requiredLength: t,
                        actualLength: n
                    }
                } : null
            }
        }
        ,
        t.maxLength = function(t) {
            return function(e) {
                var n = e.value ? e.value.length : 0;
                return n > t ? {
                    maxlength: {
                        requiredLength: t,
                        actualLength: n
                    }
                } : null
            }
        }
        ,
        t.pattern = function(e) {
            return e ? ("string" == typeof e ? (i = "",
            "^" !== e.charAt(0) && (i += "^"),
            i += e,
            "$" !== e.charAt(e.length - 1) && (i += "$"),
            n = new RegExp(i)) : (i = e.toString(),
            n = e),
            function(t) {
                if (M(t.value))
                    return null;
                var e = t.value;
                return n.test(e) ? null : {
                    pattern: {
                        requiredPattern: i,
                        actualValue: e
                    }
                }
            }
            ) : t.nullValidator;
            var n, i
        }
        ,
        t.nullValidator = function(t) {
            return null
        }
        ,
        t.compose = function(t) {
            if (!t)
                return null;
            var e = t.filter(O);
            return 0 == e.length ? null : function(t) {
                return P(function(t, e) {
                    return e.map((function(e) {
                        return e(t)
                    }
                    ))
                }(t, e))
            }
        }
        ,
        t.composeAsync = function(t) {
            if (!t)
                return null;
            var e = t.filter(O);
            return 0 == e.length ? null : function(t) {
                var n = function(t, e) {
                    return e.map((function(e) {
                        return e(t)
                    }
                    ))
                }(t, e).map(_);
                return Object(a.a)(n).pipe(Object(c.a)(P))
            }
        }
        ,
        t
    }();
    function O(t) {
        return null != t
    }
    function _(t) {
        var e = Object(r["ɵisPromise"])(t) ? Object(s.a)(t) : t;
        if (!Object(r["ɵisObservable"])(e))
            throw new Error("Expected validator to return Promise or Observable.");
        return e
    }
    function P(t) {
        var e = {};
        return t.forEach((function(t) {
            e = null != t ? Object(i.a)(Object(i.a)({}, e), t) : e
        }
        )),
        0 === Object.keys(e).length ? null : e
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function I(t) {
        return t.validate ? function(e) {
            return t.validate(e)
        }
        : t
    }
    function k(t) {
        return t.validate ? function(e) {
            return t.validate(e)
        }
        : t
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var D = {
        provide: l,
        useExisting: Object(r.forwardRef)((function() {
            return R
        }
        )),
        multi: !0
    }
      , R = function() {
        function t(t, e) {
            this._renderer = t,
            this._elementRef = e,
            this.onChange = function(t) {}
            ,
            this.onTouched = function() {}
        }
        return t.prototype.writeValue = function(t) {
            var e = null == t ? "" : t;
            this._renderer.setProperty(this._elementRef.nativeElement, "value", e)
        }
        ,
        t.prototype.registerOnChange = function(t) {
            this.onChange = function(e) {
                t("" == e ? null : parseFloat(e))
            }
        }
        ,
        t.prototype.registerOnTouched = function(t) {
            this.onTouched = t
        }
        ,
        t.prototype.setDisabledState = function(t) {
            this._renderer.setProperty(this._elementRef.nativeElement, "disabled", t)
        }
        ,
        (t = Object(i.b)([Object(i.d)("design:paramtypes", [r.Renderer2, r.ElementRef])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.Renderer2),r["ɵɵdirectiveInject"](r.ElementRef))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["input", "type", "number", "formControlName", ""], ["input", "type", "number", "formControl", ""], ["input", "type", "number", "ngModel", ""]],
            hostBindings: function(t, e) {
                1 & t && r["ɵɵlistener"]("change", (function(t) {
                    return e.onChange(t.target.value)
                }
                ))("input", (function(t) {
                    return e.onChange(t.target.value)
                }
                ))("blur", (function() {
                    return e.onTouched()
                }
                ))
            },
            features: [r["ɵɵProvidersFeature"]([D])]
        }),
        t
    }()
      , L = {
        provide: l,
        useExisting: Object(r.forwardRef)((function() {
            return j
        }
        )),
        multi: !0
    }
      , N = function() {
        function t() {
            this._accessors = []
        }
        return t.prototype.add = function(t, e) {
            this._accessors.push([t, e])
        }
        ,
        t.prototype.remove = function(t) {
            for (var e = this._accessors.length - 1; e >= 0; --e)
                if (this._accessors[e][1] === t)
                    return void this._accessors.splice(e, 1)
        }
        ,
        t.prototype.select = function(t) {
            var e = this;
            this._accessors.forEach((function(n) {
                e._isSameGroup(n, t) && n[1] !== t && n[1].fireUncheck(t.value)
            }
            ))
        }
        ,
        t.prototype._isSameGroup = function(t, e) {
            return !!t[0].control && (t[0]._parent === e._control._parent && t[1].name === e.name)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵprov = r["ɵɵdefineInjectable"]({
            token: t,
            factory: function(e) {
                return t.ɵfac(e)
            }
        }),
        t
    }()
      , j = function() {
        function t(t, e, n, i) {
            this._renderer = t,
            this._elementRef = e,
            this._registry = n,
            this._injector = i,
            this.onChange = function() {}
            ,
            this.onTouched = function() {}
        }
        return t.prototype.ngOnInit = function() {
            this._control = this._injector.get(y),
            this._checkName(),
            this._registry.add(this._control, this)
        }
        ,
        t.prototype.ngOnDestroy = function() {
            this._registry.remove(this)
        }
        ,
        t.prototype.writeValue = function(t) {
            this._state = t === this.value,
            this._renderer.setProperty(this._elementRef.nativeElement, "checked", this._state)
        }
        ,
        t.prototype.registerOnChange = function(t) {
            var e = this;
            this._fn = t,
            this.onChange = function() {
                t(e.value),
                e._registry.select(e)
            }
        }
        ,
        t.prototype.fireUncheck = function(t) {
            this.writeValue(t)
        }
        ,
        t.prototype.registerOnTouched = function(t) {
            this.onTouched = t
        }
        ,
        t.prototype.setDisabledState = function(t) {
            this._renderer.setProperty(this._elementRef.nativeElement, "disabled", t)
        }
        ,
        t.prototype._checkName = function() {
            this.name && this.formControlName && this.name !== this.formControlName && this._throwNameError(),
            !this.name && this.formControlName && (this.name = this.formControlName)
        }
        ,
        t.prototype._throwNameError = function() {
            throw new Error('\n      If you define both a name and a formControlName attribute on your radio button, their values\n      must match. Ex: <input type="radio" formControlName="food" name="food">\n    ')
        }
        ,
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", String)], t.prototype, "name", void 0),
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", String)], t.prototype, "formControlName", void 0),
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", Object)], t.prototype, "value", void 0),
        (t = Object(i.b)([Object(i.d)("design:paramtypes", [r.Renderer2, r.ElementRef, N, r.Injector])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.Renderer2),r["ɵɵdirectiveInject"](r.ElementRef),r["ɵɵdirectiveInject"](N),r["ɵɵdirectiveInject"](r.Injector))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["input", "type", "radio", "formControlName", ""], ["input", "type", "radio", "formControl", ""], ["input", "type", "radio", "ngModel", ""]],
            hostBindings: function(t, e) {
                1 & t && r["ɵɵlistener"]("change", (function() {
                    return e.onChange()
                }
                ))("blur", (function() {
                    return e.onTouched()
                }
                ))
            },
            inputs: {
                name: "name",
                formControlName: "formControlName",
                value: "value"
            },
            features: [r["ɵɵProvidersFeature"]([L])]
        }),
        t
    }()
      , V = {
        provide: l,
        useExisting: Object(r.forwardRef)((function() {
            return F
        }
        )),
        multi: !0
    }
      , F = function() {
        function t(t, e) {
            this._renderer = t,
            this._elementRef = e,
            this.onChange = function(t) {}
            ,
            this.onTouched = function() {}
        }
        return t.prototype.writeValue = function(t) {
            this._renderer.setProperty(this._elementRef.nativeElement, "value", parseFloat(t))
        }
        ,
        t.prototype.registerOnChange = function(t) {
            this.onChange = function(e) {
                t("" == e ? null : parseFloat(e))
            }
        }
        ,
        t.prototype.registerOnTouched = function(t) {
            this.onTouched = t
        }
        ,
        t.prototype.setDisabledState = function(t) {
            this._renderer.setProperty(this._elementRef.nativeElement, "disabled", t)
        }
        ,
        (t = Object(i.b)([Object(i.d)("design:paramtypes", [r.Renderer2, r.ElementRef])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.Renderer2),r["ɵɵdirectiveInject"](r.ElementRef))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["input", "type", "range", "formControlName", ""], ["input", "type", "range", "formControl", ""], ["input", "type", "range", "ngModel", ""]],
            hostBindings: function(t, e) {
                1 & t && r["ɵɵlistener"]("change", (function(t) {
                    return e.onChange(t.target.value)
                }
                ))("input", (function(t) {
                    return e.onChange(t.target.value)
                }
                ))("blur", (function() {
                    return e.onTouched()
                }
                ))
            },
            features: [r["ɵɵProvidersFeature"]([V])]
        }),
        t
    }()
      , U = '\n    <div [formGroup]="myGroup">\n      <input formControlName="firstName">\n    </div>\n\n    In your class:\n\n    this.myGroup = new FormGroup({\n       firstName: new FormControl()\n    });'
      , B = '\n    <div [formGroup]="myGroup">\n       <div formGroupName="person">\n          <input formControlName="firstName">\n       </div>\n    </div>\n\n    In your class:\n\n    this.myGroup = new FormGroup({\n       person: new FormGroup({ firstName: new FormControl() })\n    });'
      , z = '\n    <div [formGroup]="myGroup">\n      <div formArrayName="cities">\n        <div *ngFor="let city of cityArray.controls; index as i">\n          <input [formControlName]="i">\n        </div>\n      </div>\n    </div>\n\n    In your class:\n\n    this.cityArray = new FormArray([new FormControl(\'SF\')]);\n    this.myGroup = new FormGroup({\n      cities: this.cityArray\n    });'
      , G = '\n    <form>\n       <div ngModelGroup="person">\n          <input [(ngModel)]="person.name" name="firstName">\n       </div>\n    </form>'
      , H = '\n    <div [formGroup]="myGroup">\n       <input formControlName="firstName">\n       <input [(ngModel)]="showMoreControls" [ngModelOptions]="{standalone: true}">\n    </div>\n  '
      , W = function() {
        function t() {}
        return t.controlParentException = function() {
            throw new Error("formControlName must be used with a parent formGroup directive.  You'll want to add a formGroup\n       directive and pass it an existing FormGroup instance (you can create one in your class).\n\n      Example:\n\n      " + U)
        }
        ,
        t.ngModelGroupException = function() {
            throw new Error('formControlName cannot be used with an ngModelGroup parent. It is only compatible with parents\n       that also have a "form" prefix: formGroupName, formArrayName, or formGroup.\n\n       Option 1:  Update the parent to be formGroupName (reactive form strategy)\n\n        ' + B + "\n\n        Option 2: Use ngModel instead of formControlName (template-driven strategy)\n\n        " + G)
        }
        ,
        t.missingFormException = function() {
            throw new Error("formGroup expects a FormGroup instance. Please pass one in.\n\n       Example:\n\n       " + U)
        }
        ,
        t.groupParentException = function() {
            throw new Error("formGroupName must be used with a parent formGroup directive.  You'll want to add a formGroup\n      directive and pass it an existing FormGroup instance (you can create one in your class).\n\n      Example:\n\n      " + B)
        }
        ,
        t.arrayParentException = function() {
            throw new Error("formArrayName must be used with a parent formGroup directive.  You'll want to add a formGroup\n       directive and pass it an existing FormGroup instance (you can create one in your class).\n\n        Example:\n\n        " + z)
        }
        ,
        t.disabledAttrWarning = function() {
            console.warn("\n      It looks like you're using the disabled attribute with a reactive form directive. If you set disabled to true\n      when you set up this control in your component class, the disabled attribute will actually be set in the DOM for\n      you. We recommend using this approach to avoid 'changed after checked' errors.\n       \n      Example: \n      form = new FormGroup({\n        first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),\n        last: new FormControl('Drew', Validators.required)\n      });\n    ")
        }
        ,
        t.ngModelWarning = function(t) {
            console.warn("\n    It looks like you're using ngModel on the same form field as " + t + ". \n    Support for using the ngModel input property and ngModelChange event with \n    reactive form directives has been deprecated in Angular v6 and will be removed \n    in Angular v7.\n    \n    For more information on this, see our API docs here:\n    https://angular.io/api/forms/" + ("formControl" === t ? "FormControlDirective" : "FormControlName") + "#use-with-ngmodel\n    ")
        }
        ,
        t
    }()
      , q = {
        provide: l,
        useExisting: Object(r.forwardRef)((function() {
            return Y
        }
        )),
        multi: !0
    };
    function X(t, e) {
        return null == t ? "" + e : (e && "object" == typeof e && (e = "Object"),
        (t + ": " + e).slice(0, 50))
    }
    var Y = function() {
        function t(t, e) {
            this._renderer = t,
            this._elementRef = e,
            this._optionMap = new Map,
            this._idCounter = 0,
            this.onChange = function(t) {}
            ,
            this.onTouched = function() {}
            ,
            this._compareWith = r["ɵlooseIdentical"]
        }
        return Object.defineProperty(t.prototype, "compareWith", {
            set: function(t) {
                if ("function" != typeof t)
                    throw new Error("compareWith must be a function, but received " + JSON.stringify(t));
                this._compareWith = t
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.writeValue = function(t) {
            this.value = t;
            var e = this._getOptionId(t);
            null == e && this._renderer.setProperty(this._elementRef.nativeElement, "selectedIndex", -1);
            var n = X(e, t);
            this._renderer.setProperty(this._elementRef.nativeElement, "value", n)
        }
        ,
        t.prototype.registerOnChange = function(t) {
            var e = this;
            this.onChange = function(n) {
                e.value = e._getOptionValue(n),
                t(e.value)
            }
        }
        ,
        t.prototype.registerOnTouched = function(t) {
            this.onTouched = t
        }
        ,
        t.prototype.setDisabledState = function(t) {
            this._renderer.setProperty(this._elementRef.nativeElement, "disabled", t)
        }
        ,
        t.prototype._registerOption = function() {
            return (this._idCounter++).toString()
        }
        ,
        t.prototype._getOptionId = function(t) {
            var e, n;
            try {
                for (var r = Object(i.j)(Array.from(this._optionMap.keys())), o = r.next(); !o.done; o = r.next()) {
                    var a = o.value;
                    if (this._compareWith(this._optionMap.get(a), t))
                        return a
                }
            } catch (t) {
                e = {
                    error: t
                }
            } finally {
                try {
                    o && !o.done && (n = r.return) && n.call(r)
                } finally {
                    if (e)
                        throw e.error
                }
            }
            return null
        }
        ,
        t.prototype._getOptionValue = function(t) {
            var e = function(t) {
                return t.split(":")[0]
            }(t);
            return this._optionMap.has(e) ? this._optionMap.get(e) : t
        }
        ,
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", Function), Object(i.d)("design:paramtypes", [Function])], t.prototype, "compareWith", null),
        (t = Object(i.b)([Object(i.d)("design:paramtypes", [r.Renderer2, r.ElementRef])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.Renderer2),r["ɵɵdirectiveInject"](r.ElementRef))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["select", "formControlName", "", 3, "multiple", ""], ["select", "formControl", "", 3, "multiple", ""], ["select", "ngModel", "", 3, "multiple", ""]],
            hostBindings: function(t, e) {
                1 & t && r["ɵɵlistener"]("change", (function(t) {
                    return e.onChange(t.target.value)
                }
                ))("blur", (function() {
                    return e.onTouched()
                }
                ))
            },
            inputs: {
                compareWith: "compareWith"
            },
            features: [r["ɵɵProvidersFeature"]([q])]
        }),
        t
    }()
      , K = function() {
        function t(t, e, n) {
            this._element = t,
            this._renderer = e,
            this._select = n,
            this._select && (this.id = this._select._registerOption())
        }
        return Object.defineProperty(t.prototype, "ngValue", {
            set: function(t) {
                null != this._select && (this._select._optionMap.set(this.id, t),
                this._setElementValue(X(this.id, t)),
                this._select.writeValue(this._select.value))
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "value", {
            set: function(t) {
                this._setElementValue(t),
                this._select && this._select.writeValue(this._select.value)
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype._setElementValue = function(t) {
            this._renderer.setProperty(this._element.nativeElement, "value", t)
        }
        ,
        t.prototype.ngOnDestroy = function() {
            this._select && (this._select._optionMap.delete(this.id),
            this._select.writeValue(this._select.value))
        }
        ,
        Object(i.b)([Object(r.Input)("ngValue"), Object(i.d)("design:type", Object), Object(i.d)("design:paramtypes", [Object])], t.prototype, "ngValue", null),
        Object(i.b)([Object(r.Input)("value"), Object(i.d)("design:type", Object), Object(i.d)("design:paramtypes", [Object])], t.prototype, "value", null),
        (t = Object(i.b)([Object(i.e)(2, Object(r.Optional)()), Object(i.e)(2, Object(r.Host)()), Object(i.d)("design:paramtypes", [r.ElementRef, r.Renderer2, Y])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.ElementRef),r["ɵɵdirectiveInject"](r.Renderer2),r["ɵɵdirectiveInject"](Y, 9))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["option"]],
            inputs: {
                ngValue: "ngValue",
                value: "value"
            }
        }),
        t
    }()
      , Z = {
        provide: l,
        useExisting: Object(r.forwardRef)((function() {
            return Q
        }
        )),
        multi: !0
    };
    function J(t, e) {
        return null == t ? "" + e : ("string" == typeof e && (e = "'" + e + "'"),
        e && "object" == typeof e && (e = "Object"),
        (t + ": " + e).slice(0, 50))
    }
    var Q = function() {
        function t(t, e) {
            this._renderer = t,
            this._elementRef = e,
            this._optionMap = new Map,
            this._idCounter = 0,
            this.onChange = function(t) {}
            ,
            this.onTouched = function() {}
            ,
            this._compareWith = r["ɵlooseIdentical"]
        }
        return Object.defineProperty(t.prototype, "compareWith", {
            set: function(t) {
                if ("function" != typeof t)
                    throw new Error("compareWith must be a function, but received " + JSON.stringify(t));
                this._compareWith = t
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.writeValue = function(t) {
            var e, n = this;
            if (this.value = t,
            Array.isArray(t)) {
                var i = t.map((function(t) {
                    return n._getOptionId(t)
                }
                ));
                e = function(t, e) {
                    t._setSelected(i.indexOf(e.toString()) > -1)
                }
            } else
                e = function(t, e) {
                    t._setSelected(!1)
                }
                ;
            this._optionMap.forEach(e)
        }
        ,
        t.prototype.registerOnChange = function(t) {
            var e = this;
            this.onChange = function(n) {
                var i = [];
                if (n.hasOwnProperty("selectedOptions"))
                    for (var r = n.selectedOptions, o = 0; o < r.length; o++) {
                        var a = r.item(o)
                          , s = e._getOptionValue(a.value);
                        i.push(s)
                    }
                else
                    for (r = n.options,
                    o = 0; o < r.length; o++) {
                        if ((a = r.item(o)).selected) {
                            s = e._getOptionValue(a.value);
                            i.push(s)
                        }
                    }
                e.value = i,
                t(i)
            }
        }
        ,
        t.prototype.registerOnTouched = function(t) {
            this.onTouched = t
        }
        ,
        t.prototype.setDisabledState = function(t) {
            this._renderer.setProperty(this._elementRef.nativeElement, "disabled", t)
        }
        ,
        t.prototype._registerOption = function(t) {
            var e = (this._idCounter++).toString();
            return this._optionMap.set(e, t),
            e
        }
        ,
        t.prototype._getOptionId = function(t) {
            var e, n;
            try {
                for (var r = Object(i.j)(Array.from(this._optionMap.keys())), o = r.next(); !o.done; o = r.next()) {
                    var a = o.value;
                    if (this._compareWith(this._optionMap.get(a)._value, t))
                        return a
                }
            } catch (t) {
                e = {
                    error: t
                }
            } finally {
                try {
                    o && !o.done && (n = r.return) && n.call(r)
                } finally {
                    if (e)
                        throw e.error
                }
            }
            return null
        }
        ,
        t.prototype._getOptionValue = function(t) {
            var e = function(t) {
                return t.split(":")[0]
            }(t);
            return this._optionMap.has(e) ? this._optionMap.get(e)._value : t
        }
        ,
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", Function), Object(i.d)("design:paramtypes", [Function])], t.prototype, "compareWith", null),
        (t = Object(i.b)([Object(i.d)("design:paramtypes", [r.Renderer2, r.ElementRef])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.Renderer2),r["ɵɵdirectiveInject"](r.ElementRef))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["select", "multiple", "", "formControlName", ""], ["select", "multiple", "", "formControl", ""], ["select", "multiple", "", "ngModel", ""]],
            hostBindings: function(t, e) {
                1 & t && r["ɵɵlistener"]("change", (function(t) {
                    return e.onChange(t.target)
                }
                ))("blur", (function() {
                    return e.onTouched()
                }
                ))
            },
            inputs: {
                compareWith: "compareWith"
            },
            features: [r["ɵɵProvidersFeature"]([Z])]
        }),
        t
    }()
      , $ = function() {
        function t(t, e, n) {
            this._element = t,
            this._renderer = e,
            this._select = n,
            this._select && (this.id = this._select._registerOption(this))
        }
        return Object.defineProperty(t.prototype, "ngValue", {
            set: function(t) {
                null != this._select && (this._value = t,
                this._setElementValue(J(this.id, t)),
                this._select.writeValue(this._select.value))
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "value", {
            set: function(t) {
                this._select ? (this._value = t,
                this._setElementValue(J(this.id, t)),
                this._select.writeValue(this._select.value)) : this._setElementValue(t)
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype._setElementValue = function(t) {
            this._renderer.setProperty(this._element.nativeElement, "value", t)
        }
        ,
        t.prototype._setSelected = function(t) {
            this._renderer.setProperty(this._element.nativeElement, "selected", t)
        }
        ,
        t.prototype.ngOnDestroy = function() {
            this._select && (this._select._optionMap.delete(this.id),
            this._select.writeValue(this._select.value))
        }
        ,
        Object(i.b)([Object(r.Input)("ngValue"), Object(i.d)("design:type", Object), Object(i.d)("design:paramtypes", [Object])], t.prototype, "ngValue", null),
        Object(i.b)([Object(r.Input)("value"), Object(i.d)("design:type", Object), Object(i.d)("design:paramtypes", [Object])], t.prototype, "value", null),
        (t = Object(i.b)([Object(i.e)(2, Object(r.Optional)()), Object(i.e)(2, Object(r.Host)()), Object(i.d)("design:paramtypes", [r.ElementRef, r.Renderer2, Q])], t)).ɵfac = function(e) {
            return new (e || t)(r["ɵɵdirectiveInject"](r.ElementRef),r["ɵɵdirectiveInject"](r.Renderer2),r["ɵɵdirectiveInject"](Q, 9))
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["option"]],
            inputs: {
                ngValue: "ngValue",
                value: "value"
            }
        }),
        t
    }();
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function tt(t, e) {
        return Object(i.h)(e.path, [t])
    }
    function et(t, e) {
        t || ot(e, "Cannot find control with"),
        e.valueAccessor || ot(e, "No value accessor for form control with"),
        t.validator = T.compose([t.validator, e.validator]),
        t.asyncValidator = T.composeAsync([t.asyncValidator, e.asyncValidator]),
        e.valueAccessor.writeValue(t.value),
        function(t, e) {
            e.valueAccessor.registerOnChange((function(n) {
                t._pendingValue = n,
                t._pendingChange = !0,
                t._pendingDirty = !0,
                "change" === t.updateOn && nt(t, e)
            }
            ))
        }(t, e),
        function(t, e) {
            t.registerOnChange((function(t, n) {
                e.valueAccessor.writeValue(t),
                n && e.viewToModelUpdate(t)
            }
            ))
        }(t, e),
        function(t, e) {
            e.valueAccessor.registerOnTouched((function() {
                t._pendingTouched = !0,
                "blur" === t.updateOn && t._pendingChange && nt(t, e),
                "submit" !== t.updateOn && t.markAsTouched()
            }
            ))
        }(t, e),
        e.valueAccessor.setDisabledState && t.registerOnDisabledChange((function(t) {
            e.valueAccessor.setDisabledState(t)
        }
        )),
        e._rawValidators.forEach((function(e) {
            e.registerOnValidatorChange && e.registerOnValidatorChange((function() {
                return t.updateValueAndValidity()
            }
            ))
        }
        )),
        e._rawAsyncValidators.forEach((function(e) {
            e.registerOnValidatorChange && e.registerOnValidatorChange((function() {
                return t.updateValueAndValidity()
            }
            ))
        }
        ))
    }
    function nt(t, e) {
        t._pendingDirty && t.markAsDirty(),
        t.setValue(t._pendingValue, {
            emitModelToViewChange: !1
        }),
        e.viewToModelUpdate(t._pendingValue),
        t._pendingChange = !1
    }
    function it(t, e) {
        null == t && ot(e, "Cannot find control with"),
        t.validator = T.compose([t.validator, e.validator]),
        t.asyncValidator = T.composeAsync([t.asyncValidator, e.asyncValidator])
    }
    function rt(t) {
        return ot(t, "There is no FormControl instance attached to form control element with")
    }
    function ot(t, e) {
        var n;
        throw n = t.path.length > 1 ? "path: '" + t.path.join(" -> ") + "'" : t.path[0] ? "name: '" + t.path + "'" : "unspecified name attribute",
        new Error(e + " " + n)
    }
    function at(t) {
        return null != t ? T.compose(t.map(I)) : null
    }
    function st(t) {
        return null != t ? T.composeAsync(t.map(k)) : null
    }
    function ct(t, e) {
        if (!t.hasOwnProperty("model"))
            return !1;
        var n = t.model;
        return !!n.isFirstChange() || !Object(r["ɵlooseIdentical"])(e, n.currentValue)
    }
    var lt = [d, F, R, Y, Q, j];
    function ut(t, e) {
        t._syncPendingControls(),
        e.forEach((function(t) {
            var e = t.control;
            "submit" === e.updateOn && e._pendingChange && (t.viewToModelUpdate(e._pendingValue),
            e._pendingChange = !1)
        }
        ))
    }
    function dt(t, e) {
        if (!e)
            return null;
        Array.isArray(e) || ot(t, "Value accessor was not provided as an array for form control with");
        var n = void 0
          , i = void 0
          , r = void 0;
        return e.forEach((function(e) {
            var o;
            e.constructor === f ? n = e : (o = e,
            lt.some((function(t) {
                return o.constructor === t
            }
            )) ? (i && ot(t, "More than one built-in value accessor matches form control with"),
            i = e) : (r && ot(t, "More than one custom value accessor matches form control with"),
            r = e))
        }
        )),
        r || (i || (n || (ot(t, "No valid value accessor for form control with"),
        null)))
    }
    function pt(t, e) {
        var n = t.indexOf(e);
        n > -1 && t.splice(n, 1)
    }
    function ht(t, e, n, i) {
        Object(r.isDevMode)() && "never" !== i && ((null !== i && "once" !== i || e._ngModelWarningSentOnce) && ("always" !== i || n._ngModelWarningSent) || (W.ngModelWarning(t),
        e._ngModelWarningSentOnce = !0,
        n._ngModelWarningSent = !0))
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    function ft(t) {
        var e = gt(t) ? t.validators : t;
        return Array.isArray(e) ? at(e) : e || null
    }
    function mt(t, e) {
        var n = gt(e) ? e.asyncValidators : t;
        return Array.isArray(n) ? st(n) : n || null
    }
    function gt(t) {
        return null != t && !Array.isArray(t) && "object" == typeof t
    }
    var vt = function() {
        function t(t, e) {
            this.validator = t,
            this.asyncValidator = e,
            this._onCollectionChange = function() {}
            ,
            this.pristine = !0,
            this.touched = !1,
            this._onDisabledChange = []
        }
        return Object.defineProperty(t.prototype, "parent", {
            get: function() {
                return this._parent
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "valid", {
            get: function() {
                return "VALID" === this.status
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "invalid", {
            get: function() {
                return "INVALID" === this.status
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "pending", {
            get: function() {
                return "PENDING" == this.status
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "disabled", {
            get: function() {
                return "DISABLED" === this.status
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "enabled", {
            get: function() {
                return "DISABLED" !== this.status
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "dirty", {
            get: function() {
                return !this.pristine
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "untouched", {
            get: function() {
                return !this.touched
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "updateOn", {
            get: function() {
                return this._updateOn ? this._updateOn : this.parent ? this.parent.updateOn : "change"
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.setValidators = function(t) {
            this.validator = ft(t)
        }
        ,
        t.prototype.setAsyncValidators = function(t) {
            this.asyncValidator = mt(t)
        }
        ,
        t.prototype.clearValidators = function() {
            this.validator = null
        }
        ,
        t.prototype.clearAsyncValidators = function() {
            this.asyncValidator = null
        }
        ,
        t.prototype.markAsTouched = function(t) {
            void 0 === t && (t = {}),
            this.touched = !0,
            this._parent && !t.onlySelf && this._parent.markAsTouched(t)
        }
        ,
        t.prototype.markAllAsTouched = function() {
            this.markAsTouched({
                onlySelf: !0
            }),
            this._forEachChild((function(t) {
                return t.markAllAsTouched()
            }
            ))
        }
        ,
        t.prototype.markAsUntouched = function(t) {
            void 0 === t && (t = {}),
            this.touched = !1,
            this._pendingTouched = !1,
            this._forEachChild((function(t) {
                t.markAsUntouched({
                    onlySelf: !0
                })
            }
            )),
            this._parent && !t.onlySelf && this._parent._updateTouched(t)
        }
        ,
        t.prototype.markAsDirty = function(t) {
            void 0 === t && (t = {}),
            this.pristine = !1,
            this._parent && !t.onlySelf && this._parent.markAsDirty(t)
        }
        ,
        t.prototype.markAsPristine = function(t) {
            void 0 === t && (t = {}),
            this.pristine = !0,
            this._pendingDirty = !1,
            this._forEachChild((function(t) {
                t.markAsPristine({
                    onlySelf: !0
                })
            }
            )),
            this._parent && !t.onlySelf && this._parent._updatePristine(t)
        }
        ,
        t.prototype.markAsPending = function(t) {
            void 0 === t && (t = {}),
            this.status = "PENDING",
            !1 !== t.emitEvent && this.statusChanges.emit(this.status),
            this._parent && !t.onlySelf && this._parent.markAsPending(t)
        }
        ,
        t.prototype.disable = function(t) {
            void 0 === t && (t = {});
            var e = this._parentMarkedDirty(t.onlySelf);
            this.status = "DISABLED",
            this.errors = null,
            this._forEachChild((function(e) {
                e.disable(Object(i.a)(Object(i.a)({}, t), {
                    onlySelf: !0
                }))
            }
            )),
            this._updateValue(),
            !1 !== t.emitEvent && (this.valueChanges.emit(this.value),
            this.statusChanges.emit(this.status)),
            this._updateAncestors(Object(i.a)(Object(i.a)({}, t), {
                skipPristineCheck: e
            })),
            this._onDisabledChange.forEach((function(t) {
                return t(!0)
            }
            ))
        }
        ,
        t.prototype.enable = function(t) {
            void 0 === t && (t = {});
            var e = this._parentMarkedDirty(t.onlySelf);
            this.status = "VALID",
            this._forEachChild((function(e) {
                e.enable(Object(i.a)(Object(i.a)({}, t), {
                    onlySelf: !0
                }))
            }
            )),
            this.updateValueAndValidity({
                onlySelf: !0,
                emitEvent: t.emitEvent
            }),
            this._updateAncestors(Object(i.a)(Object(i.a)({}, t), {
                skipPristineCheck: e
            })),
            this._onDisabledChange.forEach((function(t) {
                return t(!1)
            }
            ))
        }
        ,
        t.prototype._updateAncestors = function(t) {
            this._parent && !t.onlySelf && (this._parent.updateValueAndValidity(t),
            t.skipPristineCheck || this._parent._updatePristine(),
            this._parent._updateTouched())
        }
        ,
        t.prototype.setParent = function(t) {
            this._parent = t
        }
        ,
        t.prototype.updateValueAndValidity = function(t) {
            void 0 === t && (t = {}),
            this._setInitialStatus(),
            this._updateValue(),
            this.enabled && (this._cancelExistingSubscription(),
            this.errors = this._runValidator(),
            this.status = this._calculateStatus(),
            "VALID" !== this.status && "PENDING" !== this.status || this._runAsyncValidator(t.emitEvent)),
            !1 !== t.emitEvent && (this.valueChanges.emit(this.value),
            this.statusChanges.emit(this.status)),
            this._parent && !t.onlySelf && this._parent.updateValueAndValidity(t)
        }
        ,
        t.prototype._updateTreeValidity = function(t) {
            void 0 === t && (t = {
                emitEvent: !0
            }),
            this._forEachChild((function(e) {
                return e._updateTreeValidity(t)
            }
            )),
            this.updateValueAndValidity({
                onlySelf: !0,
                emitEvent: t.emitEvent
            })
        }
        ,
        t.prototype._setInitialStatus = function() {
            this.status = this._allControlsDisabled() ? "DISABLED" : "VALID"
        }
        ,
        t.prototype._runValidator = function() {
            return this.validator ? this.validator(this) : null
        }
        ,
        t.prototype._runAsyncValidator = function(t) {
            var e = this;
            if (this.asyncValidator) {
                this.status = "PENDING";
                var n = _(this.asyncValidator(this));
                this._asyncValidationSubscription = n.subscribe((function(n) {
                    return e.setErrors(n, {
                        emitEvent: t
                    })
                }
                ))
            }
        }
        ,
        t.prototype._cancelExistingSubscription = function() {
            this._asyncValidationSubscription && this._asyncValidationSubscription.unsubscribe()
        }
        ,
        t.prototype.setErrors = function(t, e) {
            void 0 === e && (e = {}),
            this.errors = t,
            this._updateControlsErrors(!1 !== e.emitEvent)
        }
        ,
        t.prototype.get = function(t) {
            return function(t, e, n) {
                if (null == e)
                    return null;
                if (Array.isArray(e) || (e = e.split(n)),
                Array.isArray(e) && 0 === e.length)
                    return null;
                var i = t;
                return e.forEach((function(t) {
                    i = i instanceof bt ? i.controls.hasOwnProperty(t) ? i.controls[t] : null : i instanceof wt && i.at(t) || null
                }
                )),
                i
            }(this, t, ".")
        }
        ,
        t.prototype.getError = function(t, e) {
            var n = e ? this.get(e) : this;
            return n && n.errors ? n.errors[t] : null
        }
        ,
        t.prototype.hasError = function(t, e) {
            return !!this.getError(t, e)
        }
        ,
        Object.defineProperty(t.prototype, "root", {
            get: function() {
                for (var t = this; t._parent; )
                    t = t._parent;
                return t
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype._updateControlsErrors = function(t) {
            this.status = this._calculateStatus(),
            t && this.statusChanges.emit(this.status),
            this._parent && this._parent._updateControlsErrors(t)
        }
        ,
        t.prototype._initObservables = function() {
            this.valueChanges = new r.EventEmitter,
            this.statusChanges = new r.EventEmitter
        }
        ,
        t.prototype._calculateStatus = function() {
            return this._allControlsDisabled() ? "DISABLED" : this.errors ? "INVALID" : this._anyControlsHaveStatus("PENDING") ? "PENDING" : this._anyControlsHaveStatus("INVALID") ? "INVALID" : "VALID"
        }
        ,
        t.prototype._anyControlsHaveStatus = function(t) {
            return this._anyControls((function(e) {
                return e.status === t
            }
            ))
        }
        ,
        t.prototype._anyControlsDirty = function() {
            return this._anyControls((function(t) {
                return t.dirty
            }
            ))
        }
        ,
        t.prototype._anyControlsTouched = function() {
            return this._anyControls((function(t) {
                return t.touched
            }
            ))
        }
        ,
        t.prototype._updatePristine = function(t) {
            void 0 === t && (t = {}),
            this.pristine = !this._anyControlsDirty(),
            this._parent && !t.onlySelf && this._parent._updatePristine(t)
        }
        ,
        t.prototype._updateTouched = function(t) {
            void 0 === t && (t = {}),
            this.touched = this._anyControlsTouched(),
            this._parent && !t.onlySelf && this._parent._updateTouched(t)
        }
        ,
        t.prototype._isBoxedValue = function(t) {
            return "object" == typeof t && null !== t && 2 === Object.keys(t).length && "value"in t && "disabled"in t
        }
        ,
        t.prototype._registerOnCollectionChange = function(t) {
            this._onCollectionChange = t
        }
        ,
        t.prototype._setUpdateStrategy = function(t) {
            gt(t) && null != t.updateOn && (this._updateOn = t.updateOn)
        }
        ,
        t.prototype._parentMarkedDirty = function(t) {
            var e = this._parent && this._parent.dirty;
            return !t && e && !this._parent._anyControlsDirty()
        }
        ,
        t
    }()
      , yt = function(t) {
        function e(e, n, i) {
            void 0 === e && (e = null);
            var r = t.call(this, ft(n), mt(i, n)) || this;
            return r._onChange = [],
            r._applyFormState(e),
            r._setUpdateStrategy(n),
            r.updateValueAndValidity({
                onlySelf: !0,
                emitEvent: !1
            }),
            r._initObservables(),
            r
        }
        return Object(i.c)(e, t),
        e.prototype.setValue = function(t, e) {
            var n = this;
            void 0 === e && (e = {}),
            this.value = this._pendingValue = t,
            this._onChange.length && !1 !== e.emitModelToViewChange && this._onChange.forEach((function(t) {
                return t(n.value, !1 !== e.emitViewToModelChange)
            }
            )),
            this.updateValueAndValidity(e)
        }
        ,
        e.prototype.patchValue = function(t, e) {
            void 0 === e && (e = {}),
            this.setValue(t, e)
        }
        ,
        e.prototype.reset = function(t, e) {
            void 0 === t && (t = null),
            void 0 === e && (e = {}),
            this._applyFormState(t),
            this.markAsPristine(e),
            this.markAsUntouched(e),
            this.setValue(this.value, e),
            this._pendingChange = !1
        }
        ,
        e.prototype._updateValue = function() {}
        ,
        e.prototype._anyControls = function(t) {
            return !1
        }
        ,
        e.prototype._allControlsDisabled = function() {
            return this.disabled
        }
        ,
        e.prototype.registerOnChange = function(t) {
            this._onChange.push(t)
        }
        ,
        e.prototype._clearChangeFns = function() {
            this._onChange = [],
            this._onDisabledChange = [],
            this._onCollectionChange = function() {}
        }
        ,
        e.prototype.registerOnDisabledChange = function(t) {
            this._onDisabledChange.push(t)
        }
        ,
        e.prototype._forEachChild = function(t) {}
        ,
        e.prototype._syncPendingControls = function() {
            return !("submit" !== this.updateOn || (this._pendingDirty && this.markAsDirty(),
            this._pendingTouched && this.markAsTouched(),
            !this._pendingChange)) && (this.setValue(this._pendingValue, {
                onlySelf: !0,
                emitModelToViewChange: !1
            }),
            !0)
        }
        ,
        e.prototype._applyFormState = function(t) {
            this._isBoxedValue(t) ? (this.value = this._pendingValue = t.value,
            t.disabled ? this.disable({
                onlySelf: !0,
                emitEvent: !1
            }) : this.enable({
                onlySelf: !0,
                emitEvent: !1
            })) : this.value = this._pendingValue = t
        }
        ,
        e
    }(vt)
      , bt = function(t) {
        function e(e, n, i) {
            var r = t.call(this, ft(n), mt(i, n)) || this;
            return r.controls = e,
            r._initObservables(),
            r._setUpdateStrategy(n),
            r._setUpControls(),
            r.updateValueAndValidity({
                onlySelf: !0,
                emitEvent: !1
            }),
            r
        }
        return Object(i.c)(e, t),
        e.prototype.registerControl = function(t, e) {
            return this.controls[t] ? this.controls[t] : (this.controls[t] = e,
            e.setParent(this),
            e._registerOnCollectionChange(this._onCollectionChange),
            e)
        }
        ,
        e.prototype.addControl = function(t, e) {
            this.registerControl(t, e),
            this.updateValueAndValidity(),
            this._onCollectionChange()
        }
        ,
        e.prototype.removeControl = function(t) {
            this.controls[t] && this.controls[t]._registerOnCollectionChange((function() {}
            )),
            delete this.controls[t],
            this.updateValueAndValidity(),
            this._onCollectionChange()
        }
        ,
        e.prototype.setControl = function(t, e) {
            this.controls[t] && this.controls[t]._registerOnCollectionChange((function() {}
            )),
            delete this.controls[t],
            e && this.registerControl(t, e),
            this.updateValueAndValidity(),
            this._onCollectionChange()
        }
        ,
        e.prototype.contains = function(t) {
            return this.controls.hasOwnProperty(t) && this.controls[t].enabled
        }
        ,
        e.prototype.setValue = function(t, e) {
            var n = this;
            void 0 === e && (e = {}),
            this._checkAllValuesPresent(t),
            Object.keys(t).forEach((function(i) {
                n._throwIfControlMissing(i),
                n.controls[i].setValue(t[i], {
                    onlySelf: !0,
                    emitEvent: e.emitEvent
                })
            }
            )),
            this.updateValueAndValidity(e)
        }
        ,
        e.prototype.patchValue = function(t, e) {
            var n = this;
            void 0 === e && (e = {}),
            Object.keys(t).forEach((function(i) {
                n.controls[i] && n.controls[i].patchValue(t[i], {
                    onlySelf: !0,
                    emitEvent: e.emitEvent
                })
            }
            )),
            this.updateValueAndValidity(e)
        }
        ,
        e.prototype.reset = function(t, e) {
            void 0 === t && (t = {}),
            void 0 === e && (e = {}),
            this._forEachChild((function(n, i) {
                n.reset(t[i], {
                    onlySelf: !0,
                    emitEvent: e.emitEvent
                })
            }
            )),
            this._updatePristine(e),
            this._updateTouched(e),
            this.updateValueAndValidity(e)
        }
        ,
        e.prototype.getRawValue = function() {
            return this._reduceChildren({}, (function(t, e, n) {
                return t[n] = e instanceof yt ? e.value : e.getRawValue(),
                t
            }
            ))
        }
        ,
        e.prototype._syncPendingControls = function() {
            var t = this._reduceChildren(!1, (function(t, e) {
                return !!e._syncPendingControls() || t
            }
            ));
            return t && this.updateValueAndValidity({
                onlySelf: !0
            }),
            t
        }
        ,
        e.prototype._throwIfControlMissing = function(t) {
            if (!Object.keys(this.controls).length)
                throw new Error("\n        There are no form controls registered with this group yet.  If you're using ngModel,\n        you may want to check next tick (e.g. use setTimeout).\n      ");
            if (!this.controls[t])
                throw new Error("Cannot find form control with name: " + t + ".")
        }
        ,
        e.prototype._forEachChild = function(t) {
            var e = this;
            Object.keys(this.controls).forEach((function(n) {
                return t(e.controls[n], n)
            }
            ))
        }
        ,
        e.prototype._setUpControls = function() {
            var t = this;
            this._forEachChild((function(e) {
                e.setParent(t),
                e._registerOnCollectionChange(t._onCollectionChange)
            }
            ))
        }
        ,
        e.prototype._updateValue = function() {
            this.value = this._reduceValue()
        }
        ,
        e.prototype._anyControls = function(t) {
            var e = this
              , n = !1;
            return this._forEachChild((function(i, r) {
                n = n || e.contains(r) && t(i)
            }
            )),
            n
        }
        ,
        e.prototype._reduceValue = function() {
            var t = this;
            return this._reduceChildren({}, (function(e, n, i) {
                return (n.enabled || t.disabled) && (e[i] = n.value),
                e
            }
            ))
        }
        ,
        e.prototype._reduceChildren = function(t, e) {
            var n = t;
            return this._forEachChild((function(t, i) {
                n = e(n, t, i)
            }
            )),
            n
        }
        ,
        e.prototype._allControlsDisabled = function() {
            var t, e;
            try {
                for (var n = Object(i.j)(Object.keys(this.controls)), r = n.next(); !r.done; r = n.next()) {
                    var o = r.value;
                    if (this.controls[o].enabled)
                        return !1
                }
            } catch (e) {
                t = {
                    error: e
                }
            } finally {
                try {
                    r && !r.done && (e = n.return) && e.call(n)
                } finally {
                    if (t)
                        throw t.error
                }
            }
            return Object.keys(this.controls).length > 0 || this.disabled
        }
        ,
        e.prototype._checkAllValuesPresent = function(t) {
            this._forEachChild((function(e, n) {
                if (void 0 === t[n])
                    throw new Error("Must supply a value for form control with name: '" + n + "'.")
            }
            ))
        }
        ,
        e
    }(vt)
      , wt = function(t) {
        function e(e, n, i) {
            var r = t.call(this, ft(n), mt(i, n)) || this;
            return r.controls = e,
            r._initObservables(),
            r._setUpdateStrategy(n),
            r._setUpControls(),
            r.updateValueAndValidity({
                onlySelf: !0,
                emitEvent: !1
            }),
            r
        }
        return Object(i.c)(e, t),
        e.prototype.at = function(t) {
            return this.controls[t]
        }
        ,
        e.prototype.push = function(t) {
            this.controls.push(t),
            this._registerControl(t),
            this.updateValueAndValidity(),
            this._onCollectionChange()
        }
        ,
        e.prototype.insert = function(t, e) {
            this.controls.splice(t, 0, e),
            this._registerControl(e),
            this.updateValueAndValidity()
        }
        ,
        e.prototype.removeAt = function(t) {
            this.controls[t] && this.controls[t]._registerOnCollectionChange((function() {}
            )),
            this.controls.splice(t, 1),
            this.updateValueAndValidity()
        }
        ,
        e.prototype.setControl = function(t, e) {
            this.controls[t] && this.controls[t]._registerOnCollectionChange((function() {}
            )),
            this.controls.splice(t, 1),
            e && (this.controls.splice(t, 0, e),
            this._registerControl(e)),
            this.updateValueAndValidity(),
            this._onCollectionChange()
        }
        ,
        Object.defineProperty(e.prototype, "length", {
            get: function() {
                return this.controls.length
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.setValue = function(t, e) {
            var n = this;
            void 0 === e && (e = {}),
            this._checkAllValuesPresent(t),
            t.forEach((function(t, i) {
                n._throwIfControlMissing(i),
                n.at(i).setValue(t, {
                    onlySelf: !0,
                    emitEvent: e.emitEvent
                })
            }
            )),
            this.updateValueAndValidity(e)
        }
        ,
        e.prototype.patchValue = function(t, e) {
            var n = this;
            void 0 === e && (e = {}),
            t.forEach((function(t, i) {
                n.at(i) && n.at(i).patchValue(t, {
                    onlySelf: !0,
                    emitEvent: e.emitEvent
                })
            }
            )),
            this.updateValueAndValidity(e)
        }
        ,
        e.prototype.reset = function(t, e) {
            void 0 === t && (t = []),
            void 0 === e && (e = {}),
            this._forEachChild((function(n, i) {
                n.reset(t[i], {
                    onlySelf: !0,
                    emitEvent: e.emitEvent
                })
            }
            )),
            this._updatePristine(e),
            this._updateTouched(e),
            this.updateValueAndValidity(e)
        }
        ,
        e.prototype.getRawValue = function() {
            return this.controls.map((function(t) {
                return t instanceof yt ? t.value : t.getRawValue()
            }
            ))
        }
        ,
        e.prototype.clear = function() {
            this.controls.length < 1 || (this._forEachChild((function(t) {
                return t._registerOnCollectionChange((function() {}
                ))
            }
            )),
            this.controls.splice(0),
            this.updateValueAndValidity())
        }
        ,
        e.prototype._syncPendingControls = function() {
            var t = this.controls.reduce((function(t, e) {
                return !!e._syncPendingControls() || t
            }
            ), !1);
            return t && this.updateValueAndValidity({
                onlySelf: !0
            }),
            t
        }
        ,
        e.prototype._throwIfControlMissing = function(t) {
            if (!this.controls.length)
                throw new Error("\n        There are no form controls registered with this array yet.  If you're using ngModel,\n        you may want to check next tick (e.g. use setTimeout).\n      ");
            if (!this.at(t))
                throw new Error("Cannot find form control at index " + t)
        }
        ,
        e.prototype._forEachChild = function(t) {
            this.controls.forEach((function(e, n) {
                t(e, n)
            }
            ))
        }
        ,
        e.prototype._updateValue = function() {
            var t = this;
            this.value = this.controls.filter((function(e) {
                return e.enabled || t.disabled
            }
            )).map((function(t) {
                return t.value
            }
            ))
        }
        ,
        e.prototype._anyControls = function(t) {
            return this.controls.some((function(e) {
                return e.enabled && t(e)
            }
            ))
        }
        ,
        e.prototype._setUpControls = function() {
            var t = this;
            this._forEachChild((function(e) {
                return t._registerControl(e)
            }
            ))
        }
        ,
        e.prototype._checkAllValuesPresent = function(t) {
            this._forEachChild((function(e, n) {
                if (void 0 === t[n])
                    throw new Error("Must supply a value for form control at index: " + n + ".")
            }
            ))
        }
        ,
        e.prototype._allControlsDisabled = function() {
            var t, e;
            try {
                for (var n = Object(i.j)(this.controls), r = n.next(); !r.done; r = n.next()) {
                    if (r.value.enabled)
                        return !1
                }
            } catch (e) {
                t = {
                    error: e
                }
            } finally {
                try {
                    r && !r.done && (e = n.return) && e.call(n)
                } finally {
                    if (t)
                        throw t.error
                }
            }
            return this.controls.length > 0 || this.disabled
        }
        ,
        e.prototype._registerControl = function(t) {
            t.setParent(this),
            t._registerOnCollectionChange(this._onCollectionChange)
        }
        ,
        e
    }(vt)
      , St = {
        provide: g,
        useExisting: Object(r.forwardRef)((function() {
            return Mt
        }
        ))
    }
      , xt = Promise.resolve(null)
      , Mt = function(t) {
        function e(e, n) {
            var i = t.call(this) || this;
            return i.submitted = !1,
            i._directives = [],
            i.ngSubmit = new r.EventEmitter,
            i.form = new bt({},at(e),st(n)),
            i
        }
        return Object(i.c)(e, t),
        e.prototype.ngAfterViewInit = function() {
            this._setUpdateStrategy()
        }
        ,
        Object.defineProperty(e.prototype, "formDirective", {
            get: function() {
                return this
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "control", {
            get: function() {
                return this.form
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "path", {
            get: function() {
                return []
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "controls", {
            get: function() {
                return this.form.controls
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.addControl = function(t) {
            var e = this;
            xt.then((function() {
                var n = e._findContainer(t.path);
                t.control = n.registerControl(t.name, t.control),
                et(t.control, t),
                t.control.updateValueAndValidity({
                    emitEvent: !1
                }),
                e._directives.push(t)
            }
            ))
        }
        ,
        e.prototype.getControl = function(t) {
            return this.form.get(t.path)
        }
        ,
        e.prototype.removeControl = function(t) {
            var e = this;
            xt.then((function() {
                var n = e._findContainer(t.path);
                n && n.removeControl(t.name),
                pt(e._directives, t)
            }
            ))
        }
        ,
        e.prototype.addFormGroup = function(t) {
            var e = this;
            xt.then((function() {
                var n = e._findContainer(t.path)
                  , i = new bt({});
                it(i, t),
                n.registerControl(t.name, i),
                i.updateValueAndValidity({
                    emitEvent: !1
                })
            }
            ))
        }
        ,
        e.prototype.removeFormGroup = function(t) {
            var e = this;
            xt.then((function() {
                var n = e._findContainer(t.path);
                n && n.removeControl(t.name)
            }
            ))
        }
        ,
        e.prototype.getFormGroup = function(t) {
            return this.form.get(t.path)
        }
        ,
        e.prototype.updateModel = function(t, e) {
            var n = this;
            xt.then((function() {
                n.form.get(t.path).setValue(e)
            }
            ))
        }
        ,
        e.prototype.setValue = function(t) {
            this.control.setValue(t)
        }
        ,
        e.prototype.onSubmit = function(t) {
            return this.submitted = !0,
            ut(this.form, this._directives),
            this.ngSubmit.emit(t),
            !1
        }
        ,
        e.prototype.onReset = function() {
            this.resetForm()
        }
        ,
        e.prototype.resetForm = function(t) {
            void 0 === t && (t = void 0),
            this.form.reset(t),
            this.submitted = !1
        }
        ,
        e.prototype._setUpdateStrategy = function() {
            this.options && null != this.options.updateOn && (this.form._updateOn = this.options.updateOn)
        }
        ,
        e.prototype._findContainer = function(t) {
            return t.pop(),
            t.length ? this.form.get(t) : this.form
        }
        ,
        Object(i.b)([Object(r.Input)("ngFormOptions"), Object(i.d)("design:type", Object)], e.prototype, "options", void 0),
        (e = Object(i.b)([Object(i.e)(0, Object(r.Optional)()), Object(i.e)(0, Object(r.Self)()), Object(i.e)(0, Object(r.Inject)(E)), Object(i.e)(1, Object(r.Optional)()), Object(i.e)(1, Object(r.Self)()), Object(i.e)(1, Object(r.Inject)(C)), Object(i.d)("design:paramtypes", [Array, Array])], e)).ɵfac = function(t) {
            return new (t || e)(r["ɵɵdirectiveInject"](E, 10),r["ɵɵdirectiveInject"](C, 10))
        }
        ,
        e.ɵdir = r["ɵɵdefineDirective"]({
            type: e,
            selectors: [["form", 3, "ngNoForm", "", 3, "formGroup", ""], ["ng-form"], ["", "ngForm", ""]],
            hostBindings: function(t, e) {
                1 & t && r["ɵɵlistener"]("submit", (function(t) {
                    return e.onSubmit(t)
                }
                ))("reset", (function() {
                    return e.onReset()
                }
                ))
            },
            inputs: {
                options: ["ngFormOptions", "options"]
            },
            outputs: {
                ngSubmit: "ngSubmit"
            },
            exportAs: ["ngForm"],
            features: [r["ɵɵProvidersFeature"]([St]), r["ɵɵInheritDefinitionFeature"]]
        }),
        e
    }(g)
      , Et = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        Object(i.c)(e, t),
        e.prototype.ngOnInit = function() {
            this._checkParentType(),
            this.formDirective.addFormGroup(this)
        }
        ,
        e.prototype.ngOnDestroy = function() {
            this.formDirective && this.formDirective.removeFormGroup(this)
        }
        ,
        Object.defineProperty(e.prototype, "control", {
            get: function() {
                return this.formDirective.getFormGroup(this)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "path", {
            get: function() {
                return tt(null == this.name ? this.name : this.name.toString(), this._parent)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "formDirective", {
            get: function() {
                return this._parent ? this._parent.formDirective : null
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "validator", {
            get: function() {
                return at(this._validators)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "asyncValidator", {
            get: function() {
                return st(this._asyncValidators)
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype._checkParentType = function() {}
        ,
        e.ɵfac = function(t) {
            return n(t || e)
        }
        ,
        e.ɵdir = r["ɵɵdefineDirective"]({
            type: e,
            features: [r["ɵɵInheritDefinitionFeature"]]
        });
        var n = r["ɵɵgetInheritedFactory"](e);
        return e
    }(g)
      , Ct = function() {
        function t() {}
        return t.modelParentException = function() {
            throw new Error('\n      ngModel cannot be used to register form controls with a parent formGroup directive.  Try using\n      formGroup\'s partner directive "formControlName" instead.  Example:\n\n      ' + U + "\n\n      Or, if you'd like to avoid registering this form control, indicate that it's standalone in ngModelOptions:\n\n      Example:\n\n      " + H)
        }
        ,
        t.formGroupNameException = function() {
            throw new Error("\n      ngModel cannot be used to register form controls with a parent formGroupName or formArrayName directive.\n\n      Option 1: Use formControlName instead of ngModel (reactive strategy):\n\n      " + B + "\n\n      Option 2:  Update ngModel's parent be ngModelGroup (template-driven strategy):\n\n      " + G)
        }
        ,
        t.missingNameException = function() {
            throw new Error('If ngModel is used within a form tag, either the name attribute must be set or the form\n      control must be defined as \'standalone\' in ngModelOptions.\n\n      Example 1: <input [(ngModel)]="person.firstName" name="first">\n      Example 2: <input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}">')
        }
        ,
        t.modelGroupParentException = function() {
            throw new Error("\n      ngModelGroup cannot be used with a parent formGroup directive.\n\n      Option 1: Use formGroupName instead of ngModelGroup (reactive strategy):\n\n      " + B + "\n\n      Option 2:  Use a regular form tag instead of the formGroup directive (template-driven strategy):\n\n      " + G)
        }
        ,
        t
    }()
      , At = {
        provide: g,
        useExisting: Object(r.forwardRef)((function() {
            return Tt
        }
        ))
    }
      , Tt = function(t) {
        function e(e, n, i) {
            var r = t.call(this) || this;
            return r._parent = e,
            r._validators = n,
            r._asyncValidators = i,
            r
        }
        var n;
        return Object(i.c)(e, t),
        n = e,
        e.prototype._checkParentType = function() {
            this._parent instanceof n || this._parent instanceof Mt || Ct.modelGroupParentException()
        }
        ,
        Object(i.b)([Object(r.Input)("ngModelGroup"), Object(i.d)("design:type", String)], e.prototype, "name", void 0),
        (e = n = Object(i.b)([Object(i.e)(0, Object(r.Host)()), Object(i.e)(0, Object(r.SkipSelf)()), Object(i.e)(1, Object(r.Optional)()), Object(i.e)(1, Object(r.Self)()), Object(i.e)(1, Object(r.Inject)(E)), Object(i.e)(2, Object(r.Optional)()), Object(i.e)(2, Object(r.Self)()), Object(i.e)(2, Object(r.Inject)(C)), Object(i.d)("design:paramtypes", [g, Array, Array])], e)).ɵfac = function(t) {
            return new (t || e)(r["ɵɵdirectiveInject"](g, 5),r["ɵɵdirectiveInject"](E, 10),r["ɵɵdirectiveInject"](C, 10))
        }
        ,
        e.ɵdir = r["ɵɵdefineDirective"]({
            type: e,
            selectors: [["", "ngModelGroup", ""]],
            inputs: {
                name: ["ngModelGroup", "name"]
            },
            exportAs: ["ngModelGroup"],
            features: [r["ɵɵProvidersFeature"]([At]), r["ɵɵInheritDefinitionFeature"]]
        }),
        e
    }(Et)
      , Ot = {
        provide: y,
        useExisting: Object(r.forwardRef)((function() {
            return Pt
        }
        ))
    }
      , _t = Promise.resolve(null)
      , Pt = function(t) {
        function e(e, n, i, o) {
            var a = t.call(this) || this;
            return a.control = new yt,
            a._registered = !1,
            a.update = new r.EventEmitter,
            a._parent = e,
            a._rawValidators = n || [],
            a._rawAsyncValidators = i || [],
            a.valueAccessor = dt(a, o),
            a
        }
        return Object(i.c)(e, t),
        e.prototype.ngOnChanges = function(t) {
            this._checkForErrors(),
            this._registered || this._setUpControl(),
            "isDisabled"in t && this._updateDisabled(t),
            ct(t, this.viewModel) && (this._updateValue(this.model),
            this.viewModel = this.model)
        }
        ,
        e.prototype.ngOnDestroy = function() {
            this.formDirective && this.formDirective.removeControl(this)
        }
        ,
        Object.defineProperty(e.prototype, "path", {
            get: function() {
                return this._parent ? tt(this.name, this._parent) : [this.name]
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "formDirective", {
            get: function() {
                return this._parent ? this._parent.formDirective : null
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "validator", {
            get: function() {
                return at(this._rawValidators)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "asyncValidator", {
            get: function() {
                return st(this._rawAsyncValidators)
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.viewToModelUpdate = function(t) {
            this.viewModel = t,
            this.update.emit(t)
        }
        ,
        e.prototype._setUpControl = function() {
            this._setUpdateStrategy(),
            this._isStandalone() ? this._setUpStandalone() : this.formDirective.addControl(this),
            this._registered = !0
        }
        ,
        e.prototype._setUpdateStrategy = function() {
            this.options && null != this.options.updateOn && (this.control._updateOn = this.options.updateOn)
        }
        ,
        e.prototype._isStandalone = function() {
            return !this._parent || !(!this.options || !this.options.standalone)
        }
        ,
        e.prototype._setUpStandalone = function() {
            et(this.control, this),
            this.control.updateValueAndValidity({
                emitEvent: !1
            })
        }
        ,
        e.prototype._checkForErrors = function() {
            this._isStandalone() || this._checkParentType(),
            this._checkName()
        }
        ,
        e.prototype._checkParentType = function() {
            !(this._parent instanceof Tt) && this._parent instanceof Et ? Ct.formGroupNameException() : this._parent instanceof Tt || this._parent instanceof Mt || Ct.modelParentException()
        }
        ,
        e.prototype._checkName = function() {
            this.options && this.options.name && (this.name = this.options.name),
            this._isStandalone() || this.name || Ct.missingNameException()
        }
        ,
        e.prototype._updateValue = function(t) {
            var e = this;
            _t.then((function() {
                e.control.setValue(t, {
                    emitViewToModelChange: !1
                })
            }
            ))
        }
        ,
        e.prototype._updateDisabled = function(t) {
            var e = this
              , n = t.isDisabled.currentValue
              , i = "" === n || n && "false" !== n;
            _t.then((function() {
                i && !e.control.disabled ? e.control.disable() : !i && e.control.disabled && e.control.enable()
            }
            ))
        }
        ,
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", String)], e.prototype, "name", void 0),
        Object(i.b)([Object(r.Input)("disabled"), Object(i.d)("design:type", Boolean)], e.prototype, "isDisabled", void 0),
        Object(i.b)([Object(r.Input)("ngModel"), Object(i.d)("design:type", Object)], e.prototype, "model", void 0),
        Object(i.b)([Object(r.Input)("ngModelOptions"), Object(i.d)("design:type", Object)], e.prototype, "options", void 0),
        Object(i.b)([Object(r.Output)("ngModelChange"), Object(i.d)("design:type", Object)], e.prototype, "update", void 0),
        (e = Object(i.b)([Object(i.e)(0, Object(r.Optional)()), Object(i.e)(0, Object(r.Host)()), Object(i.e)(1, Object(r.Optional)()), Object(i.e)(1, Object(r.Self)()), Object(i.e)(1, Object(r.Inject)(E)), Object(i.e)(2, Object(r.Optional)()), Object(i.e)(2, Object(r.Self)()), Object(i.e)(2, Object(r.Inject)(C)), Object(i.e)(3, Object(r.Optional)()), Object(i.e)(3, Object(r.Self)()), Object(i.e)(3, Object(r.Inject)(l)), Object(i.d)("design:paramtypes", [g, Array, Array, Array])], e)).ɵfac = function(t) {
            return new (t || e)(r["ɵɵdirectiveInject"](g, 9),r["ɵɵdirectiveInject"](E, 10),r["ɵɵdirectiveInject"](C, 10),r["ɵɵdirectiveInject"](l, 10))
        }
        ,
        e.ɵdir = r["ɵɵdefineDirective"]({
            type: e,
            selectors: [["", "ngModel", "", 3, "formControlName", "", 3, "formControl", ""]],
            inputs: {
                name: "name",
                isDisabled: ["disabled", "isDisabled"],
                model: ["ngModel", "model"],
                options: ["ngModelOptions", "options"]
            },
            outputs: {
                update: "ngModelChange"
            },
            exportAs: ["ngModel"],
            features: [r["ɵɵProvidersFeature"]([Ot]), r["ɵɵInheritDefinitionFeature"], r["ɵɵNgOnChangesFeature"]]
        }),
        e
    }(y)
      , It = function() {
        function t() {}
        return t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["form", 3, "ngNoForm", "", 3, "ngNativeValidate", ""]],
            hostAttrs: ["novalidate", ""]
        }),
        t
    }()
      , kt = new r.InjectionToken("NgModelWithFormControlWarning")
      , Dt = {
        provide: y,
        useExisting: Object(r.forwardRef)((function() {
            return Rt
        }
        ))
    }
      , Rt = function(t) {
        function e(e, n, i, o) {
            var a = t.call(this) || this;
            return a._ngModelWarningConfig = o,
            a.update = new r.EventEmitter,
            a._ngModelWarningSent = !1,
            a._rawValidators = e || [],
            a._rawAsyncValidators = n || [],
            a.valueAccessor = dt(a, i),
            a
        }
        var n;
        return Object(i.c)(e, t),
        n = e,
        Object.defineProperty(e.prototype, "isDisabled", {
            set: function(t) {
                W.disabledAttrWarning()
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.ngOnChanges = function(t) {
            this._isControlChanged(t) && (et(this.form, this),
            this.control.disabled && this.valueAccessor.setDisabledState && this.valueAccessor.setDisabledState(!0),
            this.form.updateValueAndValidity({
                emitEvent: !1
            })),
            ct(t, this.viewModel) && (ht("formControl", n, this, this._ngModelWarningConfig),
            this.form.setValue(this.model),
            this.viewModel = this.model)
        }
        ,
        Object.defineProperty(e.prototype, "path", {
            get: function() {
                return []
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "validator", {
            get: function() {
                return at(this._rawValidators)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "asyncValidator", {
            get: function() {
                return st(this._rawAsyncValidators)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "control", {
            get: function() {
                return this.form
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.viewToModelUpdate = function(t) {
            this.viewModel = t,
            this.update.emit(t)
        }
        ,
        e.prototype._isControlChanged = function(t) {
            return t.hasOwnProperty("form")
        }
        ,
        e._ngModelWarningSentOnce = !1,
        Object(i.b)([Object(r.Input)("formControl"), Object(i.d)("design:type", yt)], e.prototype, "form", void 0),
        Object(i.b)([Object(r.Input)("disabled"), Object(i.d)("design:type", Boolean), Object(i.d)("design:paramtypes", [Boolean])], e.prototype, "isDisabled", null),
        Object(i.b)([Object(r.Input)("ngModel"), Object(i.d)("design:type", Object)], e.prototype, "model", void 0),
        Object(i.b)([Object(r.Output)("ngModelChange"), Object(i.d)("design:type", Object)], e.prototype, "update", void 0),
        (e = n = Object(i.b)([Object(i.e)(0, Object(r.Optional)()), Object(i.e)(0, Object(r.Self)()), Object(i.e)(0, Object(r.Inject)(E)), Object(i.e)(1, Object(r.Optional)()), Object(i.e)(1, Object(r.Self)()), Object(i.e)(1, Object(r.Inject)(C)), Object(i.e)(2, Object(r.Optional)()), Object(i.e)(2, Object(r.Self)()), Object(i.e)(2, Object(r.Inject)(l)), Object(i.e)(3, Object(r.Optional)()), Object(i.e)(3, Object(r.Inject)(kt)), Object(i.d)("design:paramtypes", [Array, Array, Array, Object])], e)).ɵfac = function(t) {
            return new (t || e)(r["ɵɵdirectiveInject"](E, 10),r["ɵɵdirectiveInject"](C, 10),r["ɵɵdirectiveInject"](l, 10),r["ɵɵdirectiveInject"](kt, 8))
        }
        ,
        e.ɵdir = r["ɵɵdefineDirective"]({
            type: e,
            selectors: [["", "formControl", ""]],
            inputs: {
                isDisabled: ["disabled", "isDisabled"],
                form: ["formControl", "form"],
                model: ["ngModel", "model"]
            },
            outputs: {
                update: "ngModelChange"
            },
            exportAs: ["ngForm"],
            features: [r["ɵɵProvidersFeature"]([Dt]), r["ɵɵInheritDefinitionFeature"], r["ɵɵNgOnChangesFeature"]]
        }),
        e
    }(y)
      , Lt = {
        provide: g,
        useExisting: Object(r.forwardRef)((function() {
            return Nt
        }
        ))
    }
      , Nt = function(t) {
        function e(e, n) {
            var i = t.call(this) || this;
            return i._validators = e,
            i._asyncValidators = n,
            i.submitted = !1,
            i.directives = [],
            i.form = null,
            i.ngSubmit = new r.EventEmitter,
            i
        }
        return Object(i.c)(e, t),
        e.prototype.ngOnChanges = function(t) {
            this._checkFormPresent(),
            t.hasOwnProperty("form") && (this._updateValidators(),
            this._updateDomValue(),
            this._updateRegistrations())
        }
        ,
        Object.defineProperty(e.prototype, "formDirective", {
            get: function() {
                return this
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "control", {
            get: function() {
                return this.form
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "path", {
            get: function() {
                return []
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.addControl = function(t) {
            var e = this.form.get(t.path);
            return et(e, t),
            e.updateValueAndValidity({
                emitEvent: !1
            }),
            this.directives.push(t),
            e
        }
        ,
        e.prototype.getControl = function(t) {
            return this.form.get(t.path)
        }
        ,
        e.prototype.removeControl = function(t) {
            pt(this.directives, t)
        }
        ,
        e.prototype.addFormGroup = function(t) {
            var e = this.form.get(t.path);
            it(e, t),
            e.updateValueAndValidity({
                emitEvent: !1
            })
        }
        ,
        e.prototype.removeFormGroup = function(t) {}
        ,
        e.prototype.getFormGroup = function(t) {
            return this.form.get(t.path)
        }
        ,
        e.prototype.addFormArray = function(t) {
            var e = this.form.get(t.path);
            it(e, t),
            e.updateValueAndValidity({
                emitEvent: !1
            })
        }
        ,
        e.prototype.removeFormArray = function(t) {}
        ,
        e.prototype.getFormArray = function(t) {
            return this.form.get(t.path)
        }
        ,
        e.prototype.updateModel = function(t, e) {
            this.form.get(t.path).setValue(e)
        }
        ,
        e.prototype.onSubmit = function(t) {
            return this.submitted = !0,
            ut(this.form, this.directives),
            this.ngSubmit.emit(t),
            !1
        }
        ,
        e.prototype.onReset = function() {
            this.resetForm()
        }
        ,
        e.prototype.resetForm = function(t) {
            void 0 === t && (t = void 0),
            this.form.reset(t),
            this.submitted = !1
        }
        ,
        e.prototype._updateDomValue = function() {
            var t = this;
            this.directives.forEach((function(e) {
                var n = t.form.get(e.path);
                e.control !== n && (!function(t, e) {
                    e.valueAccessor.registerOnChange((function() {
                        return rt(e)
                    }
                    )),
                    e.valueAccessor.registerOnTouched((function() {
                        return rt(e)
                    }
                    )),
                    e._rawValidators.forEach((function(t) {
                        t.registerOnValidatorChange && t.registerOnValidatorChange(null)
                    }
                    )),
                    e._rawAsyncValidators.forEach((function(t) {
                        t.registerOnValidatorChange && t.registerOnValidatorChange(null)
                    }
                    )),
                    t && t._clearChangeFns()
                }(e.control, e),
                n && et(n, e),
                e.control = n)
            }
            )),
            this.form._updateTreeValidity({
                emitEvent: !1
            })
        }
        ,
        e.prototype._updateRegistrations = function() {
            var t = this;
            this.form._registerOnCollectionChange((function() {
                return t._updateDomValue()
            }
            )),
            this._oldForm && this._oldForm._registerOnCollectionChange((function() {}
            )),
            this._oldForm = this.form
        }
        ,
        e.prototype._updateValidators = function() {
            var t = at(this._validators);
            this.form.validator = T.compose([this.form.validator, t]);
            var e = st(this._asyncValidators);
            this.form.asyncValidator = T.composeAsync([this.form.asyncValidator, e])
        }
        ,
        e.prototype._checkFormPresent = function() {
            this.form || W.missingFormException()
        }
        ,
        Object(i.b)([Object(r.Input)("formGroup"), Object(i.d)("design:type", bt)], e.prototype, "form", void 0),
        Object(i.b)([Object(r.Output)(), Object(i.d)("design:type", Object)], e.prototype, "ngSubmit", void 0),
        (e = Object(i.b)([Object(i.e)(0, Object(r.Optional)()), Object(i.e)(0, Object(r.Self)()), Object(i.e)(0, Object(r.Inject)(E)), Object(i.e)(1, Object(r.Optional)()), Object(i.e)(1, Object(r.Self)()), Object(i.e)(1, Object(r.Inject)(C)), Object(i.d)("design:paramtypes", [Array, Array])], e)).ɵfac = function(t) {
            return new (t || e)(r["ɵɵdirectiveInject"](E, 10),r["ɵɵdirectiveInject"](C, 10))
        }
        ,
        e.ɵdir = r["ɵɵdefineDirective"]({
            type: e,
            selectors: [["", "formGroup", ""]],
            hostBindings: function(t, e) {
                1 & t && r["ɵɵlistener"]("submit", (function(t) {
                    return e.onSubmit(t)
                }
                ))("reset", (function() {
                    return e.onReset()
                }
                ))
            },
            inputs: {
                form: ["formGroup", "form"]
            },
            outputs: {
                ngSubmit: "ngSubmit"
            },
            exportAs: ["ngForm"],
            features: [r["ɵɵProvidersFeature"]([Lt]), r["ɵɵInheritDefinitionFeature"], r["ɵɵNgOnChangesFeature"]]
        }),
        e
    }(g)
      , jt = {
        provide: g,
        useExisting: Object(r.forwardRef)((function() {
            return Vt
        }
        ))
    }
      , Vt = function(t) {
        function e(e, n, i) {
            var r = t.call(this) || this;
            return r._parent = e,
            r._validators = n,
            r._asyncValidators = i,
            r
        }
        return Object(i.c)(e, t),
        e.prototype._checkParentType = function() {
            Bt(this._parent) && W.groupParentException()
        }
        ,
        Object(i.b)([Object(r.Input)("formGroupName"), Object(i.d)("design:type", Object)], e.prototype, "name", void 0),
        (e = Object(i.b)([Object(i.e)(0, Object(r.Optional)()), Object(i.e)(0, Object(r.Host)()), Object(i.e)(0, Object(r.SkipSelf)()), Object(i.e)(1, Object(r.Optional)()), Object(i.e)(1, Object(r.Self)()), Object(i.e)(1, Object(r.Inject)(E)), Object(i.e)(2, Object(r.Optional)()), Object(i.e)(2, Object(r.Self)()), Object(i.e)(2, Object(r.Inject)(C)), Object(i.d)("design:paramtypes", [g, Array, Array])], e)).ɵfac = function(t) {
            return new (t || e)(r["ɵɵdirectiveInject"](g, 13),r["ɵɵdirectiveInject"](E, 10),r["ɵɵdirectiveInject"](C, 10))
        }
        ,
        e.ɵdir = r["ɵɵdefineDirective"]({
            type: e,
            selectors: [["", "formGroupName", ""]],
            inputs: {
                name: ["formGroupName", "name"]
            },
            features: [r["ɵɵProvidersFeature"]([jt]), r["ɵɵInheritDefinitionFeature"]]
        }),
        e
    }(Et)
      , Ft = {
        provide: g,
        useExisting: Object(r.forwardRef)((function() {
            return Ut
        }
        ))
    }
      , Ut = function(t) {
        function e(e, n, i) {
            var r = t.call(this) || this;
            return r._parent = e,
            r._validators = n,
            r._asyncValidators = i,
            r
        }
        return Object(i.c)(e, t),
        e.prototype.ngOnInit = function() {
            this._checkParentType(),
            this.formDirective.addFormArray(this)
        }
        ,
        e.prototype.ngOnDestroy = function() {
            this.formDirective && this.formDirective.removeFormArray(this)
        }
        ,
        Object.defineProperty(e.prototype, "control", {
            get: function() {
                return this.formDirective.getFormArray(this)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "formDirective", {
            get: function() {
                return this._parent ? this._parent.formDirective : null
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "path", {
            get: function() {
                return tt(null == this.name ? this.name : this.name.toString(), this._parent)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "validator", {
            get: function() {
                return at(this._validators)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "asyncValidator", {
            get: function() {
                return st(this._asyncValidators)
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype._checkParentType = function() {
            Bt(this._parent) && W.arrayParentException()
        }
        ,
        Object(i.b)([Object(r.Input)("formArrayName"), Object(i.d)("design:type", Object)], e.prototype, "name", void 0),
        (e = Object(i.b)([Object(i.e)(0, Object(r.Optional)()), Object(i.e)(0, Object(r.Host)()), Object(i.e)(0, Object(r.SkipSelf)()), Object(i.e)(1, Object(r.Optional)()), Object(i.e)(1, Object(r.Self)()), Object(i.e)(1, Object(r.Inject)(E)), Object(i.e)(2, Object(r.Optional)()), Object(i.e)(2, Object(r.Self)()), Object(i.e)(2, Object(r.Inject)(C)), Object(i.d)("design:paramtypes", [g, Array, Array])], e)).ɵfac = function(t) {
            return new (t || e)(r["ɵɵdirectiveInject"](g, 13),r["ɵɵdirectiveInject"](E, 10),r["ɵɵdirectiveInject"](C, 10))
        }
        ,
        e.ɵdir = r["ɵɵdefineDirective"]({
            type: e,
            selectors: [["", "formArrayName", ""]],
            inputs: {
                name: ["formArrayName", "name"]
            },
            features: [r["ɵɵProvidersFeature"]([Ft]), r["ɵɵInheritDefinitionFeature"]]
        }),
        e
    }(g);
    function Bt(t) {
        return !(t instanceof Vt || t instanceof Nt || t instanceof Ut)
    }
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
    var zt = {
        provide: y,
        useExisting: Object(r.forwardRef)((function() {
            return Gt
        }
        ))
    }
      , Gt = function(t) {
        function e(e, n, i, o, a) {
            var s = t.call(this) || this;
            return s._ngModelWarningConfig = a,
            s._added = !1,
            s.update = new r.EventEmitter,
            s._ngModelWarningSent = !1,
            s._parent = e,
            s._rawValidators = n || [],
            s._rawAsyncValidators = i || [],
            s.valueAccessor = dt(s, o),
            s
        }
        var n;
        return Object(i.c)(e, t),
        n = e,
        Object.defineProperty(e.prototype, "isDisabled", {
            set: function(t) {
                W.disabledAttrWarning()
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.ngOnChanges = function(t) {
            this._added || this._setUpControl(),
            ct(t, this.viewModel) && (ht("formControlName", n, this, this._ngModelWarningConfig),
            this.viewModel = this.model,
            this.formDirective.updateModel(this, this.model))
        }
        ,
        e.prototype.ngOnDestroy = function() {
            this.formDirective && this.formDirective.removeControl(this)
        }
        ,
        e.prototype.viewToModelUpdate = function(t) {
            this.viewModel = t,
            this.update.emit(t)
        }
        ,
        Object.defineProperty(e.prototype, "path", {
            get: function() {
                return tt(null == this.name ? this.name : this.name.toString(), this._parent)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "formDirective", {
            get: function() {
                return this._parent ? this._parent.formDirective : null
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "validator", {
            get: function() {
                return at(this._rawValidators)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "asyncValidator", {
            get: function() {
                return st(this._rawAsyncValidators)
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype._checkParentType = function() {
            !(this._parent instanceof Vt) && this._parent instanceof Et ? W.ngModelGroupException() : this._parent instanceof Vt || this._parent instanceof Nt || this._parent instanceof Ut || W.controlParentException()
        }
        ,
        e.prototype._setUpControl = function() {
            this._checkParentType(),
            this.control = this.formDirective.addControl(this),
            this.control.disabled && this.valueAccessor.setDisabledState && this.valueAccessor.setDisabledState(!0),
            this._added = !0
        }
        ,
        e._ngModelWarningSentOnce = !1,
        Object(i.b)([Object(r.Input)("formControlName"), Object(i.d)("design:type", Object)], e.prototype, "name", void 0),
        Object(i.b)([Object(r.Input)("disabled"), Object(i.d)("design:type", Boolean), Object(i.d)("design:paramtypes", [Boolean])], e.prototype, "isDisabled", null),
        Object(i.b)([Object(r.Input)("ngModel"), Object(i.d)("design:type", Object)], e.prototype, "model", void 0),
        Object(i.b)([Object(r.Output)("ngModelChange"), Object(i.d)("design:type", Object)], e.prototype, "update", void 0),
        (e = n = Object(i.b)([Object(i.e)(0, Object(r.Optional)()), Object(i.e)(0, Object(r.Host)()), Object(i.e)(0, Object(r.SkipSelf)()), Object(i.e)(1, Object(r.Optional)()), Object(i.e)(1, Object(r.Self)()), Object(i.e)(1, Object(r.Inject)(E)), Object(i.e)(2, Object(r.Optional)()), Object(i.e)(2, Object(r.Self)()), Object(i.e)(2, Object(r.Inject)(C)), Object(i.e)(3, Object(r.Optional)()), Object(i.e)(3, Object(r.Self)()), Object(i.e)(3, Object(r.Inject)(l)), Object(i.e)(4, Object(r.Optional)()), Object(i.e)(4, Object(r.Inject)(kt)), Object(i.d)("design:paramtypes", [g, Array, Array, Array, Object])], e)).ɵfac = function(t) {
            return new (t || e)(r["ɵɵdirectiveInject"](g, 13),r["ɵɵdirectiveInject"](E, 10),r["ɵɵdirectiveInject"](C, 10),r["ɵɵdirectiveInject"](l, 10),r["ɵɵdirectiveInject"](kt, 8))
        }
        ,
        e.ɵdir = r["ɵɵdefineDirective"]({
            type: e,
            selectors: [["", "formControlName", ""]],
            inputs: {
                isDisabled: ["disabled", "isDisabled"],
                name: ["formControlName", "name"],
                model: ["ngModel", "model"]
            },
            outputs: {
                update: "ngModelChange"
            },
            features: [r["ɵɵProvidersFeature"]([zt]), r["ɵɵInheritDefinitionFeature"], r["ɵɵNgOnChangesFeature"]]
        }),
        e
    }(y)
      , Ht = {
        provide: E,
        useExisting: Object(r.forwardRef)((function() {
            return qt
        }
        )),
        multi: !0
    }
      , Wt = {
        provide: E,
        useExisting: Object(r.forwardRef)((function() {
            return Xt
        }
        )),
        multi: !0
    }
      , qt = function() {
        function t() {}
        return Object.defineProperty(t.prototype, "required", {
            get: function() {
                return this._required
            },
            set: function(t) {
                this._required = null != t && !1 !== t && "" + t != "false",
                this._onChange && this._onChange()
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.validate = function(t) {
            return this.required ? T.required(t) : null
        }
        ,
        t.prototype.registerOnValidatorChange = function(t) {
            this._onChange = t
        }
        ,
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", Object), Object(i.d)("design:paramtypes", [Object])], t.prototype, "required", null),
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "required", "", "formControlName", "", 3, "type", "checkbox"], ["", "required", "", "formControl", "", 3, "type", "checkbox"], ["", "required", "", "ngModel", "", 3, "type", "checkbox"]],
            hostVars: 1,
            hostBindings: function(t, e) {
                2 & t && r["ɵɵattribute"]("required", e.required ? "" : null)
            },
            inputs: {
                required: "required"
            },
            features: [r["ɵɵProvidersFeature"]([Ht])]
        }),
        t
    }()
      , Xt = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        Object(i.c)(e, t),
        e.prototype.validate = function(t) {
            return this.required ? T.requiredTrue(t) : null
        }
        ,
        e.ɵfac = function(t) {
            return n(t || e)
        }
        ,
        e.ɵdir = r["ɵɵdefineDirective"]({
            type: e,
            selectors: [["input", "type", "checkbox", "required", "", "formControlName", ""], ["input", "type", "checkbox", "required", "", "formControl", ""], ["input", "type", "checkbox", "required", "", "ngModel", ""]],
            hostVars: 1,
            hostBindings: function(t, e) {
                2 & t && r["ɵɵattribute"]("required", e.required ? "" : null)
            },
            features: [r["ɵɵProvidersFeature"]([Wt]), r["ɵɵInheritDefinitionFeature"]]
        });
        var n = r["ɵɵgetInheritedFactory"](e);
        return e
    }(qt)
      , Yt = {
        provide: E,
        useExisting: Object(r.forwardRef)((function() {
            return Kt
        }
        )),
        multi: !0
    }
      , Kt = function() {
        function t() {}
        return Object.defineProperty(t.prototype, "email", {
            set: function(t) {
                this._enabled = "" === t || !0 === t || "true" === t,
                this._onChange && this._onChange()
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.validate = function(t) {
            return this._enabled ? T.email(t) : null
        }
        ,
        t.prototype.registerOnValidatorChange = function(t) {
            this._onChange = t
        }
        ,
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", Object), Object(i.d)("design:paramtypes", [Object])], t.prototype, "email", null),
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "email", "", "formControlName", ""], ["", "email", "", "formControl", ""], ["", "email", "", "ngModel", ""]],
            inputs: {
                email: "email"
            },
            features: [r["ɵɵProvidersFeature"]([Yt])]
        }),
        t
    }()
      , Zt = {
        provide: E,
        useExisting: Object(r.forwardRef)((function() {
            return Jt
        }
        )),
        multi: !0
    }
      , Jt = function() {
        function t() {}
        return t.prototype.ngOnChanges = function(t) {
            "minlength"in t && (this._createValidator(),
            this._onChange && this._onChange())
        }
        ,
        t.prototype.validate = function(t) {
            return null == this.minlength ? null : this._validator(t)
        }
        ,
        t.prototype.registerOnValidatorChange = function(t) {
            this._onChange = t
        }
        ,
        t.prototype._createValidator = function() {
            this._validator = T.minLength("number" == typeof this.minlength ? this.minlength : parseInt(this.minlength, 10))
        }
        ,
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", Object)], t.prototype, "minlength", void 0),
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "minlength", "", "formControlName", ""], ["", "minlength", "", "formControl", ""], ["", "minlength", "", "ngModel", ""]],
            hostVars: 1,
            hostBindings: function(t, e) {
                2 & t && r["ɵɵattribute"]("minlength", e.minlength ? e.minlength : null)
            },
            inputs: {
                minlength: "minlength"
            },
            features: [r["ɵɵProvidersFeature"]([Zt]), r["ɵɵNgOnChangesFeature"]]
        }),
        t
    }()
      , Qt = {
        provide: E,
        useExisting: Object(r.forwardRef)((function() {
            return $t
        }
        )),
        multi: !0
    }
      , $t = function() {
        function t() {}
        return t.prototype.ngOnChanges = function(t) {
            "maxlength"in t && (this._createValidator(),
            this._onChange && this._onChange())
        }
        ,
        t.prototype.validate = function(t) {
            return null != this.maxlength ? this._validator(t) : null
        }
        ,
        t.prototype.registerOnValidatorChange = function(t) {
            this._onChange = t
        }
        ,
        t.prototype._createValidator = function() {
            this._validator = T.maxLength("number" == typeof this.maxlength ? this.maxlength : parseInt(this.maxlength, 10))
        }
        ,
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", Object)], t.prototype, "maxlength", void 0),
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "maxlength", "", "formControlName", ""], ["", "maxlength", "", "formControl", ""], ["", "maxlength", "", "ngModel", ""]],
            hostVars: 1,
            hostBindings: function(t, e) {
                2 & t && r["ɵɵattribute"]("maxlength", e.maxlength ? e.maxlength : null)
            },
            inputs: {
                maxlength: "maxlength"
            },
            features: [r["ɵɵProvidersFeature"]([Qt]), r["ɵɵNgOnChangesFeature"]]
        }),
        t
    }()
      , te = {
        provide: E,
        useExisting: Object(r.forwardRef)((function() {
            return ee
        }
        )),
        multi: !0
    }
      , ee = function() {
        function t() {}
        return t.prototype.ngOnChanges = function(t) {
            "pattern"in t && (this._createValidator(),
            this._onChange && this._onChange())
        }
        ,
        t.prototype.validate = function(t) {
            return this._validator(t)
        }
        ,
        t.prototype.registerOnValidatorChange = function(t) {
            this._onChange = t
        }
        ,
        t.prototype._createValidator = function() {
            this._validator = T.pattern(this.pattern)
        }
        ,
        Object(i.b)([Object(r.Input)(), Object(i.d)("design:type", Object)], t.prototype, "pattern", void 0),
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵdir = r["ɵɵdefineDirective"]({
            type: t,
            selectors: [["", "pattern", "", "formControlName", ""], ["", "pattern", "", "formControl", ""], ["", "pattern", "", "ngModel", ""]],
            hostVars: 1,
            hostBindings: function(t, e) {
                2 & t && r["ɵɵattribute"]("pattern", e.pattern ? e.pattern : null)
            },
            inputs: {
                pattern: "pattern"
            },
            features: [r["ɵɵProvidersFeature"]([te]), r["ɵɵNgOnChangesFeature"]]
        }),
        t
    }()
      , ne = [It, K, $, f, R, F, d, Y, Q, j, S, x, qt, Jt, $t, ee, Xt, Kt]
      , ie = [Pt, Tt, Mt]
      , re = [Rt, Nt, Gt, Vt, Ut]
      , oe = function() {
        function t() {}
        return t.ɵmod = r["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = r["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            }
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && r["ɵɵsetNgModuleScope"](t, {
            declarations: [It, K, $, f, R, F, d, Y, Q, j, S, x, qt, Jt, $t, ee, Xt, Kt],
            exports: [It, K, $, f, R, F, d, Y, Q, j, S, x, qt, Jt, $t, ee, Xt, Kt]
        }),
        t
    }();
    var ae = function() {
        function t() {}
        return t.prototype.group = function(t, e) {
            void 0 === e && (e = null);
            var n = this._reduceControls(t)
              , i = null
              , r = null
              , o = void 0;
            return null != e && (!/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
            function(t) {
                return void 0 !== t.asyncValidators || void 0 !== t.validators || void 0 !== t.updateOn
            }(e) ? (i = null != e.validator ? e.validator : null,
            r = null != e.asyncValidator ? e.asyncValidator : null) : (i = null != e.validators ? e.validators : null,
            r = null != e.asyncValidators ? e.asyncValidators : null,
            o = null != e.updateOn ? e.updateOn : void 0)),
            new bt(n,{
                asyncValidators: r,
                updateOn: o,
                validators: i
            })
        }
        ,
        t.prototype.control = function(t, e, n) {
            return new yt(t,e,n)
        }
        ,
        t.prototype.array = function(t, e, n) {
            var i = this
              , r = t.map((function(t) {
                return i._createControl(t)
            }
            ));
            return new wt(r,e,n)
        }
        ,
        t.prototype._reduceControls = function(t) {
            var e = this
              , n = {};
            return Object.keys(t).forEach((function(i) {
                n[i] = e._createControl(t[i])
            }
            )),
            n
        }
        ,
        t.prototype._createControl = function(t) {
            if (t instanceof yt || t instanceof bt || t instanceof wt)
                return t;
            if (Array.isArray(t)) {
                var e = t[0]
                  , n = t.length > 1 ? t[1] : null
                  , i = t.length > 2 ? t[2] : null;
                return this.control(e, n, i)
            }
            return this.control(t)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵprov = r["ɵɵdefineInjectable"]({
            token: t,
            factory: function(e) {
                return t.ɵfac(e)
            }
        }),
        t
    }()
      , se = new r.Version("9.1.9")
      , ce = function() {
        function t() {}
        return t.ɵmod = r["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = r["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            },
            providers: [N],
            imports: [oe]
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && r["ɵɵsetNgModuleScope"](t, {
            declarations: [Pt, Tt, Mt],
            exports: [oe, Pt, Tt, Mt]
        }),
        t
    }()
      , le = function() {
        function t() {}
        var e;
        return e = t,
        t.withConfig = function(t) {
            return {
                ngModule: e,
                providers: [{
                    provide: kt,
                    useValue: t.warnOnNgModelWithFormControl
                }]
            }
        }
        ,
        t.ɵmod = r["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = r["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            },
            providers: [ae, N],
            imports: [oe]
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && r["ɵɵsetNgModuleScope"](t, {
            declarations: [Rt, Nt, Gt, Vt, Ut],
            exports: [oe, Rt, Nt, Gt, Vt, Ut]
        }),
        t
    }();
    /**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
}
, function(t, e, n) {
    "use strict";
    n.r(e),
    n.d(e, "MatAnchor", (function() {
        return h
    }
    )),
    n.d(e, "MatButton", (function() {
        return p
    }
    )),
    n.d(e, "MatButtonModule", (function() {
        return f
    }
    ));
    var i = n(0)
      , r = n(47)
      , o = n(1)
      , a = n(63)
      , s = n(95)
      , c = ["mat-button", ""]
      , l = ["*"]
      , u = ["mat-button", "mat-flat-button", "mat-icon-button", "mat-raised-button", "mat-stroked-button", "mat-mini-fab", "mat-fab"]
      , d = function(t) {
        this._elementRef = t
    }
      , p = function(t) {
        function e(e, n, i) {
            var r, a, s = t.call(this, e) || this;
            s._focusMonitor = n,
            s._animationMode = i,
            s.isRoundButton = s._hasHostAttributes("mat-fab", "mat-mini-fab"),
            s.isIconButton = s._hasHostAttributes("mat-icon-button");
            try {
                for (var c = Object(o.j)(u), l = c.next(); !l.done; l = c.next()) {
                    var d = l.value;
                    s._hasHostAttributes(d) && s._getHostElement().classList.add(d)
                }
            } catch (t) {
                r = {
                    error: t
                }
            } finally {
                try {
                    l && !l.done && (a = c.return) && a.call(c)
                } finally {
                    if (r)
                        throw r.error
                }
            }
            return e.nativeElement.classList.add("mat-button-base"),
            s._focusMonitor.monitor(s._elementRef, !0),
            s.isRoundButton && (s.color = "accent"),
            s
        }
        return Object(o.c)(e, t),
        e.prototype.ngOnDestroy = function() {
            this._focusMonitor.stopMonitoring(this._elementRef)
        }
        ,
        e.prototype.focus = function(t, e) {
            void 0 === t && (t = "program"),
            this._focusMonitor.focusVia(this._getHostElement(), t, e)
        }
        ,
        e.prototype._getHostElement = function() {
            return this._elementRef.nativeElement
        }
        ,
        e.prototype._isRippleDisabled = function() {
            return this.disableRipple || this.disabled
        }
        ,
        e.prototype._hasHostAttributes = function() {
            for (var t = this, e = [], n = 0; n < arguments.length; n++)
                e[n] = arguments[n];
            return e.some((function(e) {
                return t._getHostElement().hasAttribute(e)
            }
            ))
        }
        ,
        e.ctorParameters = function() {
            return [{
                type: i.ElementRef
            }, {
                type: a.h
            }, {
                type: String,
                decorators: [{
                    type: i.Optional
                }, {
                    type: i.Inject,
                    args: [s.ANIMATION_MODULE_TYPE]
                }]
            }]
        }
        ,
        e.propDecorators = {
            ripple: [{
                type: i.ViewChild,
                args: [r.MatRipple]
            }]
        },
        e.ɵfac = function(t) {
            return new (t || e)(i["ɵɵdirectiveInject"](i.ElementRef),i["ɵɵdirectiveInject"](a.h),i["ɵɵdirectiveInject"](s.ANIMATION_MODULE_TYPE, 8))
        }
        ,
        e.ɵcmp = i["ɵɵdefineComponent"]({
            type: e,
            selectors: [["button", "mat-button", ""], ["button", "mat-raised-button", ""], ["button", "mat-icon-button", ""], ["button", "mat-fab", ""], ["button", "mat-mini-fab", ""], ["button", "mat-stroked-button", ""], ["button", "mat-flat-button", ""]],
            viewQuery: function(t, e) {
                var n;
                (1 & t && i["ɵɵviewQuery"](r.MatRipple, !0),
                2 & t) && (i["ɵɵqueryRefresh"](n = i["ɵɵloadQuery"]()) && (e.ripple = n.first))
            },
            hostAttrs: [1, "mat-focus-indicator"],
            hostVars: 3,
            hostBindings: function(t, e) {
                2 & t && (i["ɵɵattribute"]("disabled", e.disabled || null),
                i["ɵɵclassProp"]("_mat-animation-noopable", "NoopAnimations" === e._animationMode))
            },
            inputs: {
                disabled: "disabled",
                disableRipple: "disableRipple",
                color: "color"
            },
            exportAs: ["matButton"],
            features: [i["ɵɵInheritDefinitionFeature"]],
            attrs: c,
            ngContentSelectors: l,
            decls: 4,
            vars: 5,
            consts: [[1, "mat-button-wrapper"], ["matRipple", "", 1, "mat-button-ripple", 3, "matRippleDisabled", "matRippleCentered", "matRippleTrigger"], [1, "mat-button-focus-overlay"]],
            template: function(t, e) {
                1 & t && (i["ɵɵprojectionDef"](),
                i["ɵɵelementStart"](0, "span", 0),
                i["ɵɵprojection"](1),
                i["ɵɵelementEnd"](),
                i["ɵɵelement"](2, "div", 1),
                i["ɵɵelement"](3, "div", 2)),
                2 & t && (i["ɵɵadvance"](2),
                i["ɵɵclassProp"]("mat-button-ripple-round", e.isRoundButton || e.isIconButton),
                i["ɵɵproperty"]("matRippleDisabled", e._isRippleDisabled())("matRippleCentered", e.isIconButton)("matRippleTrigger", e._getHostElement()))
            },
            directives: [r.MatRipple],
            styles: [".mat-button .mat-button-focus-overlay,.mat-icon-button .mat-button-focus-overlay{opacity:0}.mat-button:hover .mat-button-focus-overlay,.mat-stroked-button:hover .mat-button-focus-overlay{opacity:.04}@media(hover: none){.mat-button:hover .mat-button-focus-overlay,.mat-stroked-button:hover .mat-button-focus-overlay{opacity:0}}.mat-button,.mat-icon-button,.mat-stroked-button,.mat-flat-button{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible}.mat-button::-moz-focus-inner,.mat-icon-button::-moz-focus-inner,.mat-stroked-button::-moz-focus-inner,.mat-flat-button::-moz-focus-inner{border:0}.mat-button[disabled],.mat-icon-button[disabled],.mat-stroked-button[disabled],.mat-flat-button[disabled]{cursor:default}.mat-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-button.cdk-program-focused .mat-button-focus-overlay,.mat-icon-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-icon-button.cdk-program-focused .mat-button-focus-overlay,.mat-stroked-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-stroked-button.cdk-program-focused .mat-button-focus-overlay,.mat-flat-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-flat-button.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-button::-moz-focus-inner,.mat-icon-button::-moz-focus-inner,.mat-stroked-button::-moz-focus-inner,.mat-flat-button::-moz-focus-inner{border:0}.mat-raised-button{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible;transform:translate3d(0, 0, 0);transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-raised-button::-moz-focus-inner{border:0}.mat-raised-button[disabled]{cursor:default}.mat-raised-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-raised-button.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-raised-button::-moz-focus-inner{border:0}._mat-animation-noopable.mat-raised-button{transition:none;animation:none}.mat-stroked-button{border:1px solid currentColor;padding:0 15px;line-height:34px}.mat-stroked-button .mat-button-ripple.mat-ripple,.mat-stroked-button .mat-button-focus-overlay{top:-1px;left:-1px;right:-1px;bottom:-1px}.mat-fab{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible;transform:translate3d(0, 0, 0);transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);min-width:0;border-radius:50%;width:56px;height:56px;padding:0;flex-shrink:0}.mat-fab::-moz-focus-inner{border:0}.mat-fab[disabled]{cursor:default}.mat-fab.cdk-keyboard-focused .mat-button-focus-overlay,.mat-fab.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-fab::-moz-focus-inner{border:0}._mat-animation-noopable.mat-fab{transition:none;animation:none}.mat-fab .mat-button-wrapper{padding:16px 0;display:inline-block;line-height:24px}.mat-mini-fab{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible;transform:translate3d(0, 0, 0);transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);min-width:0;border-radius:50%;width:40px;height:40px;padding:0;flex-shrink:0}.mat-mini-fab::-moz-focus-inner{border:0}.mat-mini-fab[disabled]{cursor:default}.mat-mini-fab.cdk-keyboard-focused .mat-button-focus-overlay,.mat-mini-fab.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-mini-fab::-moz-focus-inner{border:0}._mat-animation-noopable.mat-mini-fab{transition:none;animation:none}.mat-mini-fab .mat-button-wrapper{padding:8px 0;display:inline-block;line-height:24px}.mat-icon-button{padding:0;min-width:0;width:40px;height:40px;flex-shrink:0;line-height:40px;border-radius:50%}.mat-icon-button i,.mat-icon-button .mat-icon{line-height:24px}.mat-button-ripple.mat-ripple,.mat-button-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-button-ripple.mat-ripple:not(:empty){transform:translateZ(0)}.mat-button-focus-overlay{opacity:0;transition:opacity 200ms cubic-bezier(0.35, 0, 0.25, 1),background-color 200ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable .mat-button-focus-overlay{transition:none}.cdk-high-contrast-active .mat-button-focus-overlay{background-color:#fff}.cdk-high-contrast-black-on-white .mat-button-focus-overlay{background-color:#000}.mat-button-ripple-round{border-radius:50%;z-index:1}.mat-button .mat-button-wrapper>*,.mat-flat-button .mat-button-wrapper>*,.mat-stroked-button .mat-button-wrapper>*,.mat-raised-button .mat-button-wrapper>*,.mat-icon-button .mat-button-wrapper>*,.mat-fab .mat-button-wrapper>*,.mat-mini-fab .mat-button-wrapper>*{vertical-align:middle}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button{display:block;font-size:inherit;width:2.5em;height:2.5em}.cdk-high-contrast-active .mat-button,.cdk-high-contrast-active .mat-flat-button,.cdk-high-contrast-active .mat-raised-button,.cdk-high-contrast-active .mat-icon-button,.cdk-high-contrast-active .mat-fab,.cdk-high-contrast-active .mat-mini-fab{outline:solid 1px}\n"],
            encapsulation: 2,
            changeDetection: 0
        }),
        e
    }(Object(r.mixinColor)(Object(r.mixinDisabled)(Object(r.mixinDisableRipple)(d))))
      , h = function(t) {
        function e(e, n, i) {
            return t.call(this, n, e, i) || this
        }
        return Object(o.c)(e, t),
        e.prototype._haltDisabledEvents = function(t) {
            this.disabled && (t.preventDefault(),
            t.stopImmediatePropagation())
        }
        ,
        e.ctorParameters = function() {
            return [{
                type: a.h
            }, {
                type: i.ElementRef
            }, {
                type: String,
                decorators: [{
                    type: i.Optional
                }, {
                    type: i.Inject,
                    args: [s.ANIMATION_MODULE_TYPE]
                }]
            }]
        }
        ,
        e.propDecorators = {
            tabIndex: [{
                type: i.Input
            }]
        },
        e.ɵfac = function(t) {
            return new (t || e)(i["ɵɵdirectiveInject"](a.h),i["ɵɵdirectiveInject"](i.ElementRef),i["ɵɵdirectiveInject"](s.ANIMATION_MODULE_TYPE, 8))
        }
        ,
        e.ɵcmp = i["ɵɵdefineComponent"]({
            type: e,
            selectors: [["a", "mat-button", ""], ["a", "mat-raised-button", ""], ["a", "mat-icon-button", ""], ["a", "mat-fab", ""], ["a", "mat-mini-fab", ""], ["a", "mat-stroked-button", ""], ["a", "mat-flat-button", ""]],
            hostAttrs: [1, "mat-focus-indicator"],
            hostVars: 5,
            hostBindings: function(t, e) {
                1 & t && i["ɵɵlistener"]("click", (function(t) {
                    return e._haltDisabledEvents(t)
                }
                )),
                2 & t && (i["ɵɵattribute"]("tabindex", e.disabled ? -1 : e.tabIndex || 0)("disabled", e.disabled || null)("aria-disabled", e.disabled.toString()),
                i["ɵɵclassProp"]("_mat-animation-noopable", "NoopAnimations" === e._animationMode))
            },
            inputs: {
                disabled: "disabled",
                disableRipple: "disableRipple",
                color: "color",
                tabIndex: "tabIndex"
            },
            exportAs: ["matButton", "matAnchor"],
            features: [i["ɵɵInheritDefinitionFeature"]],
            attrs: c,
            ngContentSelectors: l,
            decls: 4,
            vars: 5,
            consts: [[1, "mat-button-wrapper"], ["matRipple", "", 1, "mat-button-ripple", 3, "matRippleDisabled", "matRippleCentered", "matRippleTrigger"], [1, "mat-button-focus-overlay"]],
            template: function(t, e) {
                1 & t && (i["ɵɵprojectionDef"](),
                i["ɵɵelementStart"](0, "span", 0),
                i["ɵɵprojection"](1),
                i["ɵɵelementEnd"](),
                i["ɵɵelement"](2, "div", 1),
                i["ɵɵelement"](3, "div", 2)),
                2 & t && (i["ɵɵadvance"](2),
                i["ɵɵclassProp"]("mat-button-ripple-round", e.isRoundButton || e.isIconButton),
                i["ɵɵproperty"]("matRippleDisabled", e._isRippleDisabled())("matRippleCentered", e.isIconButton)("matRippleTrigger", e._getHostElement()))
            },
            directives: [r.MatRipple],
            styles: [".mat-button .mat-button-focus-overlay,.mat-icon-button .mat-button-focus-overlay{opacity:0}.mat-button:hover .mat-button-focus-overlay,.mat-stroked-button:hover .mat-button-focus-overlay{opacity:.04}@media(hover: none){.mat-button:hover .mat-button-focus-overlay,.mat-stroked-button:hover .mat-button-focus-overlay{opacity:0}}.mat-button,.mat-icon-button,.mat-stroked-button,.mat-flat-button{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible}.mat-button::-moz-focus-inner,.mat-icon-button::-moz-focus-inner,.mat-stroked-button::-moz-focus-inner,.mat-flat-button::-moz-focus-inner{border:0}.mat-button[disabled],.mat-icon-button[disabled],.mat-stroked-button[disabled],.mat-flat-button[disabled]{cursor:default}.mat-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-button.cdk-program-focused .mat-button-focus-overlay,.mat-icon-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-icon-button.cdk-program-focused .mat-button-focus-overlay,.mat-stroked-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-stroked-button.cdk-program-focused .mat-button-focus-overlay,.mat-flat-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-flat-button.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-button::-moz-focus-inner,.mat-icon-button::-moz-focus-inner,.mat-stroked-button::-moz-focus-inner,.mat-flat-button::-moz-focus-inner{border:0}.mat-raised-button{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible;transform:translate3d(0, 0, 0);transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-raised-button::-moz-focus-inner{border:0}.mat-raised-button[disabled]{cursor:default}.mat-raised-button.cdk-keyboard-focused .mat-button-focus-overlay,.mat-raised-button.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-raised-button::-moz-focus-inner{border:0}._mat-animation-noopable.mat-raised-button{transition:none;animation:none}.mat-stroked-button{border:1px solid currentColor;padding:0 15px;line-height:34px}.mat-stroked-button .mat-button-ripple.mat-ripple,.mat-stroked-button .mat-button-focus-overlay{top:-1px;left:-1px;right:-1px;bottom:-1px}.mat-fab{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible;transform:translate3d(0, 0, 0);transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);min-width:0;border-radius:50%;width:56px;height:56px;padding:0;flex-shrink:0}.mat-fab::-moz-focus-inner{border:0}.mat-fab[disabled]{cursor:default}.mat-fab.cdk-keyboard-focused .mat-button-focus-overlay,.mat-fab.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-fab::-moz-focus-inner{border:0}._mat-animation-noopable.mat-fab{transition:none;animation:none}.mat-fab .mat-button-wrapper{padding:16px 0;display:inline-block;line-height:24px}.mat-mini-fab{box-sizing:border-box;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;display:inline-block;white-space:nowrap;text-decoration:none;vertical-align:baseline;text-align:center;margin:0;min-width:64px;line-height:36px;padding:0 16px;border-radius:4px;overflow:visible;transform:translate3d(0, 0, 0);transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);min-width:0;border-radius:50%;width:40px;height:40px;padding:0;flex-shrink:0}.mat-mini-fab::-moz-focus-inner{border:0}.mat-mini-fab[disabled]{cursor:default}.mat-mini-fab.cdk-keyboard-focused .mat-button-focus-overlay,.mat-mini-fab.cdk-program-focused .mat-button-focus-overlay{opacity:.12}.mat-mini-fab::-moz-focus-inner{border:0}._mat-animation-noopable.mat-mini-fab{transition:none;animation:none}.mat-mini-fab .mat-button-wrapper{padding:8px 0;display:inline-block;line-height:24px}.mat-icon-button{padding:0;min-width:0;width:40px;height:40px;flex-shrink:0;line-height:40px;border-radius:50%}.mat-icon-button i,.mat-icon-button .mat-icon{line-height:24px}.mat-button-ripple.mat-ripple,.mat-button-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-button-ripple.mat-ripple:not(:empty){transform:translateZ(0)}.mat-button-focus-overlay{opacity:0;transition:opacity 200ms cubic-bezier(0.35, 0, 0.25, 1),background-color 200ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable .mat-button-focus-overlay{transition:none}.cdk-high-contrast-active .mat-button-focus-overlay{background-color:#fff}.cdk-high-contrast-black-on-white .mat-button-focus-overlay{background-color:#000}.mat-button-ripple-round{border-radius:50%;z-index:1}.mat-button .mat-button-wrapper>*,.mat-flat-button .mat-button-wrapper>*,.mat-stroked-button .mat-button-wrapper>*,.mat-raised-button .mat-button-wrapper>*,.mat-icon-button .mat-button-wrapper>*,.mat-fab .mat-button-wrapper>*,.mat-mini-fab .mat-button-wrapper>*{vertical-align:middle}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button{display:block;font-size:inherit;width:2.5em;height:2.5em}.cdk-high-contrast-active .mat-button,.cdk-high-contrast-active .mat-flat-button,.cdk-high-contrast-active .mat-raised-button,.cdk-high-contrast-active .mat-icon-button,.cdk-high-contrast-active .mat-fab,.cdk-high-contrast-active .mat-mini-fab{outline:solid 1px}\n"],
            encapsulation: 2,
            changeDetection: 0
        }),
        e
    }(p)
      , f = function() {
        function t() {}
        return t.ɵmod = i["ɵɵdefineNgModule"]({
            type: t
        }),
        t.ɵinj = i["ɵɵdefineInjector"]({
            factory: function(e) {
                return new (e || t)
            },
            imports: [[r.MatRippleModule, r.MatCommonModule], r.MatCommonModule]
        }),
        ("undefined" == typeof ngJitMode || ngJitMode) && i["ɵɵsetNgModuleScope"](t, {
            declarations: function() {
                return [p, h]
            },
            imports: function() {
                return [r.MatRippleModule, r.MatCommonModule]
            },
            exports: function() {
                return [p, h, r.MatCommonModule]
            }
        }),
        t
    }()
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , r = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(0)
      , a = n(85)
      , s = (n(130),
    n(3))
      , c = (n(313),
    n(544),
    n(388))
      , l = (n(50),
    n(20))
      , u = n(1108)
      , d = n(0)
      , p = n(130)
      , h = n(313)
      , f = n(544)
      , m = n(50)
      , g = function() {
        function t(t, e, i, r, o) {
            this.UoMService = t,
            this.LanguageDetectionService = e,
            this.FontLoaderService = i,
            this.LanguageService = r,
            this.gettextCatalog = o,
            this.buildingIcon = new Uint8Array(n(1109)),
            this.roomIcon = new Uint8Array(n(1113)),
            this.floorIcon = new Uint8Array(n(1114)),
            this.navvisLogo = new Uint8Array(n(1115)),
            this.DATE_FORMAT = "yyyy-MM-dd HH:mm:ss",
            this.FILENAME_DATE_FORMAT = "yyyy-MM-dd_HH_mm_ss",
            this.DOCUMENT_SIZE = [2480, 3508],
            this.BORDER = 110,
            this.CONTENT_INITIAL_V_OFFSET = 280,
            this.FOOTER_V_OFFSET = 2540,
            this.MEASUREMENT_ENTRY_V_OFFSET = 1140,
            this.TITLE_IV_V_OFFSET = this.BORDER + 60,
            this.NAVVIS_LOGO_H_OFFSET = 1400,
            this.NAVVIS_LOGO_DIM_W = 364,
            this.NAVVIS_LOGO_DIM_H = 88,
            this.EXPORT_ALL_V_OFFSET = 220,
            this.MTEXT_H_OFFSET = this.BORDER + 30,
            this.MLINK_V_OFFSET = 80,
            this.MLINK_H_OFFSET = this.BORDER + 30,
            this.ICON_DIM_WH = 64,
            this.ICON_TEXT_V_OFFSET = 40,
            this.BUILDING_ICON_H_OFFSET = this.BORDER + 15,
            this.BUILDING_TEXT_H_OFFSET = this.BORDER + 80,
            this.FLOOR_ICON_H_OFFSET = this.BORDER + 535,
            this.FLOOR_TEXT_H_OFFSET = this.BORDER + 610,
            this.ROOM_ICON_H_OFFSET = this.BORDER + 1055,
            this.ROOM_TEXT_H_OFFSET = this.BORDER + 1130,
            this.FRAME_V_OFFSET = 10,
            this.FRAME_H_OFFSET = this.BORDER + 30,
            this.FRAME_DIM_W = 1560,
            this.FRAME_DIM_H = 920,
            this.MEASUREMENT_V_OFFSET = 10,
            this.MEASUREMENT_H_OFFSET = this.BORDER + 40,
            this.MEASUREMENT_DIM_W = 1200,
            this.MEASUREMENT_DIM_H = 900,
            this.NOTES_FRAME_H_OFFSET = this.MEASUREMENT_H_OFFSET + this.MEASUREMENT_DIM_W + 10,
            this.NOTES_FRAME_V_OFFSET = 30,
            this.NOTES_FRAME_DIM_W = 330,
            this.NOTES_FRAME_DIM_H = 870,
            this.NOTES_TEXT_H_OFFSET = this.BORDER + 1260,
            this.NOTES_TITLE_V_OFFSET = 20,
            this.NOTES_TEXT_V_OFFSET = 60,
            this.NOTEST_TEXT_MAX_WIDTH = 310,
            this.FOOTER_LINE_LENGTH = 1620,
            this.FOOTER_TEXT_V_OFFSET = 40,
            this.FOOTER_DATE_H_OFFSET = this.BORDER + 30,
            this.FOOTER_PAGE_H_OFFSET = this.BORDER + 1460,
            this.CORDER_RADIUS = 10,
            this.TITLE_IV_TEXT_COLOR = "#333333",
            this.TITLE_IV_TEXT_SIZE = 90,
            this.EXPORT_ALL_TEXT_SIZE = 40,
            this.EXPORT_ALL_TEXT_COLOR = "#0066BB",
            this.ICON_TEXT_COLOR = "#555555",
            this.ICON_TEXT_SIZE = 30,
            this.FRAME_FILL_COLOR = "#DDDDDD",
            this.NOTES_FILL_COLOR = "#EFEFEF",
            this.NOTES_TITLE_TEXT_SIZE = 40,
            this.NOTES_TITLE_TEXT_COLOR = "#444444",
            this.NOTES_CONTENT_TEXT_SIZE = 30,
            this.NOTES_CONTENT_TEXT_COLOR = "#666666",
            this.MTEXT_TEXT_SIZE = 40,
            this.MTEXT_TEXT_COLOR = "#555555",
            this.MLINK_TEXT_SIZE = 30,
            this.MLINK_TEXT_COLOR = "#0066BB",
            this.FOOTER_LINE_COLOR = "#BBBBBB",
            this.FOOTER_TEXT_SIZE = 30,
            this.FOOTER_TEXT_COLOR = "#333333",
            this.DOCUMENT_FONT = "Helvetica"
        }
        return t.prototype.exportMeasurements = function(t, e) {
            return i(this, void 0, void 0, (function() {
                var n, i, o, a, c, l, d, p, h = this;
                return r(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        return n = new u({
                            orientation: "p",
                            unit: "px",
                            format: this.DOCUMENT_SIZE,
                            putOnlyUsedFonts: !0
                        }),
                        [4, this.resolveFonts(t, n)];
                    case 1:
                        return r.sent(),
                        i = Math.ceil(t.length / 2),
                        o = new s.DatePipe("en").transform(new Date, this.DATE_FORMAT),
                        a = "measurement_export_" + new s.DatePipe("en").transform(new Date, this.FILENAME_DATE_FORMAT) + ".pdf",
                        c = this.addGtmMetadataForTracking(e),
                        this.renderExportAllLink(n, c, this.EXPORT_ALL_V_OFFSET),
                        l = this.CONTENT_INITIAL_V_OFFSET,
                        d = 0,
                        p = !1,
                        t.forEach((function(e) {
                            d++,
                            h.renderMeasurement(n, e, l),
                            p || (h.renderHeader(n),
                            h.renderFooter(n, Math.ceil(d / 2), i, o, h.FOOTER_V_OFFSET),
                            p = !0),
                            l += h.MEASUREMENT_ENTRY_V_OFFSET,
                            d % 2 == 0 && d < t.length && (p = !1,
                            n.addPage(h.DOCUMENT_SIZE, "p"),
                            l = h.CONTENT_INITIAL_V_OFFSET)
                        }
                        )),
                        n.save(a),
                        [2]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.addGtmMetadataForTracking = function(e) {
            var n = new URL(e);
            return n.searchParams.append(t.SHARE_LINK_SOURCE, "true"),
            n.toString()
        }
        ,
        t.prototype.renderHeader = function(t) {
            t.setFont(this.DOCUMENT_FONT, "normal"),
            t.setFontSize(this.TITLE_IV_TEXT_SIZE),
            t.setTextColor(this.TITLE_IV_TEXT_COLOR),
            t.text("4dkankan", this.BORDER, this.TITLE_IV_V_OFFSET),
            t.addImage(this.navvisLogo, "PNG", this.NAVVIS_LOGO_H_OFFSET, this.BORDER, this.NAVVIS_LOGO_DIM_W, this.NAVVIS_LOGO_DIM_H)
        }
        ,
        t.prototype.renderExportAllLink = function(t, e, n) {
            l.isBlank(e) || (this.setFontFromUiLanguage(t),
            t.setTextColor(this.EXPORT_ALL_TEXT_COLOR),
            t.setFontSize(this.EXPORT_ALL_TEXT_SIZE),
            t.textWithLink(this.gettextCatalog.getString("Open all measurements in 4dkankan"), this.BORDER, n, {
                url: e
            }))
        }
        ,
        t.prototype.renderMeasurement = function(t, e, n) {
            var i = e.location && (e.location.floor || e.location.room || e.location.building);
            t.setFontSize(this.MTEXT_TEXT_SIZE),
            t.setTextColor(this.MTEXT_TEXT_COLOR),
            this.setFontForText(e.measurement.name, t);
            var r = a.ToolSpec.of(e.measurement.type).type === a.ToolType.AREA ? "area" : "distance"
              , o = e.measurement.name + ": " + this.UoMService.convert(e.measurement.value, r, 2, void 0, void 0, !0);
            t.text(o, this.MTEXT_H_OFFSET, n, {
                maxWidth: this.FRAME_DIM_W
            }),
            n += (Math.ceil((t.getTextWidth(o) + 15) / this.FRAME_DIM_W) - 1) * this.MTEXT_TEXT_SIZE,
            t.setFontSize(this.ICON_TEXT_SIZE),
            t.setTextColor(this.ICON_TEXT_COLOR),
            this.setFontFromUiLanguage(t),
            i && (e.location.building && (t.addImage(this.buildingIcon, "PNG", this.BUILDING_ICON_H_OFFSET, n, this.ICON_DIM_WH, this.ICON_DIM_WH),
            t.text(e.location.building, this.BUILDING_TEXT_H_OFFSET, n + this.ICON_TEXT_V_OFFSET)),
            e.location.floor && (t.addImage(this.floorIcon, "PNG", this.FLOOR_ICON_H_OFFSET, n, this.ICON_DIM_WH, this.ICON_DIM_WH),
            t.text(e.location.floor, this.FLOOR_TEXT_H_OFFSET, n + this.ICON_TEXT_V_OFFSET)),
            e.location.room && (t.addImage(this.roomIcon, "PNG", this.ROOM_ICON_H_OFFSET, n, this.ICON_DIM_WH, this.ICON_DIM_WH),
            t.text(e.location.room, this.ROOM_TEXT_H_OFFSET, n + this.ICON_TEXT_V_OFFSET))),
            n += this.MLINK_V_OFFSET,
            this.setFontFromUiLanguage(t),
            t.setTextColor(this.MLINK_TEXT_COLOR),
            t.setFontSize(this.MLINK_TEXT_SIZE);
            var s = this.addGtmMetadataForTracking(e.url.value);
            t.textWithLink(this.gettextCatalog.getString("Open this measurement in 4dkankan"), this.MLINK_H_OFFSET, n, {
                url: s
            }),
            n += this.FRAME_V_OFFSET,
            t.setFillColor(this.FRAME_FILL_COLOR),
            t.roundedRect(this.FRAME_H_OFFSET, n, this.FRAME_DIM_W, this.FRAME_DIM_H, this.CORDER_RADIUS, this.CORDER_RADIUS, "F"),
            n += this.MEASUREMENT_V_OFFSET,
            t.addImage(e.screenshot.data, "image/jpeg;base64", this.MEASUREMENT_H_OFFSET, n, this.MEASUREMENT_DIM_W, this.MEASUREMENT_DIM_H),
            t.setFillColor(this.NOTES_FILL_COLOR),
            t.roundedRect(this.NOTES_FRAME_H_OFFSET, n + this.NOTES_FRAME_V_OFFSET, this.NOTES_FRAME_DIM_W, this.NOTES_FRAME_DIM_H, this.CORDER_RADIUS, this.CORDER_RADIUS, "F"),
            this.setFontFromUiLanguage(t),
            t.setFontSize(this.NOTES_TITLE_TEXT_SIZE),
            t.setTextColor(this.NOTES_TITLE_TEXT_COLOR),
            t.text(this.gettextCatalog.getString("Notes"), this.NOTES_TEXT_H_OFFSET, n + this.NOTES_TITLE_V_OFFSET),
            this.setFontForText(e.measurement.note, t),
            t.setFontSize(this.NOTES_CONTENT_TEXT_SIZE),
            t.setTextColor(this.NOTES_CONTENT_TEXT_COLOR),
            t.text(e.measurement.note, this.NOTES_TEXT_H_OFFSET, n + this.NOTES_TEXT_V_OFFSET, {
                maxWidth: this.NOTEST_TEXT_MAX_WIDTH
            })
        }
        ,
        t.prototype.renderFooter = function(t, e, n, i, r) {
            t.setDrawColor(this.FOOTER_LINE_COLOR),
            this.setFontFromUiLanguage(t),
            t.line(this.BORDER, r, this.BORDER + this.FOOTER_LINE_LENGTH, r),
            r += this.FOOTER_TEXT_V_OFFSET,
            t.setFontSize(this.FOOTER_TEXT_SIZE),
            t.setTextColor(this.FOOTER_TEXT_COLOR),
            t.text(i, this.FOOTER_DATE_H_OFFSET, r),
            t.text(this.gettextCatalog.getString("Page {{page}} of {{pageCount}}", {
                page: e,
                pageCount: n
            }), this.FOOTER_PAGE_H_OFFSET, r)
        }
        ,
        t.prototype.resolveFonts = function(t, e) {
            return i(this, void 0, void 0, (function() {
                var n, i, o, a, s, l, u, d, p, h, f, m, g = this;
                return r(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        for (n = t.map((function(t) {
                            return g.LanguageDetectionService.getFontForText(t.measurement.note)
                        }
                        )),
                        i = t.map((function(t) {
                            return g.LanguageDetectionService.getFontForText(t.measurement.name)
                        }
                        )),
                        o = i.concat(n).filter((function(t, e, n) {
                            return n.indexOf(t) === e
                        }
                        )),
                        a = [],
                        s = 0,
                        l = o; s < l.length; s++)
                            (u = l[s]) !== c.SupportedFont.DEFAULT && a.push(this.FontLoaderService.loadFont(u));
                        return d = this.LanguageService.getCurrentUiLanguage(),
                        a.push(this.FontLoaderService.loadFontFromUILanguage(d)),
                        [4, Promise.all(a)];
                    case 1:
                        for (p = r.sent(),
                        h = 0,
                        f = p; h < f.length; h++)
                            m = f[h],
                            !e.existsFileInVFS(m.name + ".ttf") && m.data && (e.addFileToVFS(m.name + ".ttf", m.data),
                            e.addFont(m.name + ".ttf", m.name, m.weight));
                        return [2]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.setFontForText = function(t, e) {
            var n = this.FontLoaderService.getTrueTypeFontFromText(t);
            e.setFont(n.name, n.weight)
        }
        ,
        t.prototype.setFontFromUiLanguage = function(t) {
            var e = this.LanguageService.getCurrentUiLanguage()
              , n = this.FontLoaderService.getTrueTypeFontFromUiLanguage(e);
            t.setFont(n.name, n.weight)
        }
        ,
        t.SHARE_LINK_SOURCE = "pdf",
        t.ɵfac = function(e) {
            return new (e || t)(d.ɵɵinject(p.UoMService),d.ɵɵinject(h.LanguageDetectionService),d.ɵɵinject(f.FontLoaderService),d.ɵɵinject(m.LanguageService),d.ɵɵinject("gettextCatalog"))
        }
        ,
        t.ɵprov = d.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.MeasurementPdfExportService = g,
    d.ɵsetClassMetadata(g, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: p.UoMService
        }, {
            type: h.LanguageDetectionService
        }, {
            type: f.FontLoaderService
        }, {
            type: m.LanguageService
        }, {
            type: void 0,
            decorators: [{
                type: o.Inject,
                args: ["gettextCatalog"]
            }]
        }]
    }
    ), null)
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return t.call(this, "MeasurementsSaved") || this
        }
        return r(e, t),
        e.prototype.numberOfMeasurements = function(t) {
            return this.withData("numberOfMeasurementsSaved", t),
            this
        }
        ,
        e.prototype.interactionArea = function(t) {
            return this.withData("interactionArea", t),
            this
        }
        ,
        e
    }(n(64).TrackingEvent);
    e.MeasurementsSavedEvent = o
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.SideMenu = "side-menu",
        t.MeasurementLabel = "measurement-label",
        t.SaveDiscardDialog = "save-discard-dialog"
    }(e.InteractionArea || (e.InteractionArea = {}))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(0)
      , r = (n(31),
    n(22),
    n(7))
      , o = n(2)
      , a = n(6)
      , s = n(16)
      , c = (n(28),
    n(0))
      , l = n(31)
      , u = n(22)
      , d = n(28)
      , p = function() {
        function t(t, e, n) {
            var i = this;
            this.DatasetRepository = t,
            this.FloorChangerService = n,
            this.mappingUpdated = new s.Signal,
            this.datasetsBySiteModelId = {},
            t.entityCreated.connect((function() {
                return i.updateMapping()
            }
            )),
            t.entityRemoved.connect((function() {
                return i.updateMapping()
            }
            )),
            e.entityCreated.connect((function() {
                return i.updateMapping()
            }
            )),
            e.entityRemoved.connect((function() {
                return i.updateMapping()
            }
            )),
            this.updateMapping()
        }
        return t.prototype.getDatasetsFromChildren = function(t) {
            for (var e = t.getAllChildren(), n = new Set, i = 0, r = e; i < r.length; i++) {
                var o = r[i];
                (this.datasetsBySiteModelId[o.id] || []).forEach((function(t) {
                    return n.add(t)
                }
                ))
            }
            return Array.from(n)
        }
        ,
        t.prototype.getDatasetsFromCurrentFloors = function() {
            for (var t = new Set, e = 0, n = this.FloorChangerService.currentFloors; e < n.length; e++) {
                var i = n[e];
                this.datasetsBySiteModelId[i.id].forEach((function(e) {
                    return t.add(e)
                }
                ))
            }
            return Array.from(t)
        }
        ,
        t.prototype.getDatasetsWhereMostSpecificIs = function(t) {
            var e = this.datasetsBySiteModelId[t.id];
            return e = r.filter(e, (function(e) {
                return !r.some(e.siteModelEntities, (function(e) {
                    return t.children.indexOf(e) >= 0
                }
                ))
            }
            ))
        }
        ,
        t.prototype.updateMapping = function() {
            this.datasetsBySiteModelId = {};
            for (var t = 0, e = this.DatasetRepository.data; t < e.length; t++)
                for (var n = e[t], i = 0, r = n.siteModelEntities; i < r.length; i++) {
                    var o = r[i];
                    this.setDatasetMapping(o, n);
                    for (var a = o.parent; void 0 !== a; a = a.parent)
                        this.setDatasetMapping(a, n)
                }
            this.mappingUpdated.emit()
        }
        ,
        t.prototype.setDatasetMapping = function(t, e) {
            var n = this.datasetsBySiteModelId[t.id] || [];
            n.push(e),
            this.datasetsBySiteModelId[t.id] = n
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(c.ɵɵinject(l.DatasetRepository),c.ɵɵinject(u.SiteModelRepository),c.ɵɵinject(d.FloorChangerService))
        }
        ,
        t.ɵprov = c.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.SiteModelToDatasetsService = p,
    c.ɵsetClassMetadata(p, [{
        type: i.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: l.DatasetRepository
        }, {
            type: u.SiteModelRepository
        }, {
            type: d.FloorChangerService
        }]
    }
    ), null),
    o.module("IVWebApp").service("SiteModelToDatasetsService", a.downgradeInjectable(p))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.COMMA = ",",
        t.TAB = "t",
        t.SEMICOLON = ";"
    }(e.CsvSeparators || (e.CsvSeparators = {}))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return o
    }
    ));
    var i = n(1)
      , r = n(26);
    function o(t, e) {
        return function(n) {
            return n.lift(new a(t,e))
        }
    }
    var a = function() {
        function t(t, e) {
            this.compare = t,
            this.keySelector = e
        }
        return t.prototype.call = function(t, e) {
            return e.subscribe(new s(t,this.compare,this.keySelector))
        }
        ,
        t
    }()
      , s = function(t) {
        function e(e, n, i) {
            var r = t.call(this, e) || this;
            return r.keySelector = i,
            r.hasKey = !1,
            "function" == typeof n && (r.compare = n),
            r
        }
        return i.c(e, t),
        e.prototype.compare = function(t, e) {
            return t === e
        }
        ,
        e.prototype._next = function(t) {
            var e;
            try {
                var n = this.keySelector;
                e = n ? n(t) : t
            } catch (t) {
                return this.destination.error(t)
            }
            var i = !1;
            if (this.hasKey)
                try {
                    i = (0,
                    this.compare)(this.key, e)
                } catch (t) {
                    return this.destination.error(t)
                }
            else
                this.hasKey = !0;
            i || (this.key = e,
            this.destination.next(t))
        }
        ,
        e
    }(r.a)
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return s
    }
    ));
    var i = n(442)
      , r = n(304)
      , o = n(32);
    function a() {
        return new o.a
    }
    function s() {
        return function(t) {
            return Object(r.a)()(Object(i.a)(a)(t))
        }
    }
}
, function(t, e, n) {
    t.exports = n.p + "26d42670fca53057cc00c607b592274b.building.svg"
}
, function(t, e, n) {
    t.exports = n.p + "361e54c9d7f4cc3587719df1a583dcd2.floor.svg"
}
, function(t, e, n) {
    t.exports = n.p + "3b09f08ed2cb099cda5e3ba021ef52a6.room.svg"
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return o
    }
    ));
    var i = n(1)
      , r = n(26);
    function o(t) {
        return void 0 === t && (t = -1),
        function(e) {
            return e.lift(new a(t,e))
        }
    }
    var a = function() {
        function t(t, e) {
            this.count = t,
            this.source = e
        }
        return t.prototype.call = function(t, e) {
            return e.subscribe(new s(t,this.count,this.source))
        }
        ,
        t
    }()
      , s = function(t) {
        function e(e, n, i) {
            var r = t.call(this, e) || this;
            return r.count = n,
            r.source = i,
            r
        }
        return i.c(e, t),
        e.prototype.error = function(e) {
            if (!this.isStopped) {
                var n = this.source
                  , i = this.count;
                if (0 === i)
                    return t.prototype.error.call(this, e);
                i > -1 && (this.count = i - 1),
                n.subscribe(this._unsubscribeAndRecycle())
            }
        }
        ,
        e
    }(r.a)
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return s
    }
    ));
    var i = n(1)
      , r = n(79)
      , o = n(176)
      , a = n(78);
    function s(t) {
        return function(e) {
            var n = new c(t)
              , i = e.lift(n);
            return n.caught = i
        }
    }
    var c = function() {
        function t(t) {
            this.selector = t
        }
        return t.prototype.call = function(t, e) {
            return e.subscribe(new l(t,this.selector,this.caught))
        }
        ,
        t
    }()
      , l = function(t) {
        function e(e, n, i) {
            var r = t.call(this, e) || this;
            return r.selector = n,
            r.caught = i,
            r
        }
        return i.c(e, t),
        e.prototype.error = function(e) {
            if (!this.isStopped) {
                var n = void 0;
                try {
                    n = this.selector(e, this.caught)
                } catch (e) {
                    return void t.prototype.error.call(this, e)
                }
                this._unsubscribeAndRecycle();
                var i = new o.a(this,void 0,void 0);
                this.add(i);
                var r = Object(a.a)(this, n, void 0, void 0, i);
                r !== i && this.add(r)
            }
        }
        ,
        e
    }(r.a)
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.PROCESSING_TASKS = "processing-tasks"
    }(e.UrlRouteParameter || (e.UrlRouteParameter = {}))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o, a = n(317), s = n(393), c = n(4), l = n(233), u = n(8), d = n(20), p = n(7);
    !function(t) {
        t[t.ROTATE = 0] = "ROTATE",
        t[t.ORBIT = 1] = "ORBIT",
        t[t.PAN = 2] = "PAN"
    }(o || (o = {}));
    var h = function(t) {
        function e(e, n, i) {
            var r, a, s = t.call(this, e) || this;
            return s.inputHandler = n,
            s.RaycastService = i,
            s.orientation = {
                lon: 0,
                lat: 0
            },
            s.fov = 100,
            s.keyboardInput = !1,
            s.allowTranslation = !1,
            s.translationZoom = !1,
            s.dragStartMethods = ((r = {})[o.ROTATE] = function() {
                return !0
            }
            ,
            r[o.ORBIT] = function() {
                for (var t = [], e = 0; e < arguments.length; e++)
                    t[e] = arguments[e];
                return s.orbitStart.apply(s, t)
            }
            ,
            r[o.PAN] = function() {
                for (var t = [], e = 0; e < arguments.length; e++)
                    t[e] = arguments[e];
                return s.panStart.apply(s, t)
            }
            ,
            r),
            s.dragMethods = ((a = {})[o.ROTATE] = function() {
                for (var t = [], e = 0; e < arguments.length; e++)
                    t[e] = arguments[e];
                return s.rotate.apply(s, t)
            }
            ,
            a[o.ORBIT] = function() {
                for (var t = [], e = 0; e < arguments.length; e++)
                    t[e] = arguments[e];
                return s.orbit.apply(s, t)
            }
            ,
            a[o.PAN] = function() {
                for (var t = [], e = 0; e < arguments.length; e++)
                    t[e] = arguments[e];
                return s.pan.apply(s, t)
            }
            ,
            a),
            s.tempVector = new c.Vector3,
            s.tempMatrixT = new c.Matrix4,
            s.tempMatrixTi = new c.Matrix4,
            s.tempMatrixRz = new c.Matrix4,
            s.tempMatrixRxy = new c.Matrix4,
            s._camera = new c.PerspectiveCamera(s.verticalFOV,e.aspect,.1,100),
            s._camera.up = new c.Vector3(0,0,1),
            s
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "camera", {
            get: function() {
                return this._camera
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.updateCamera = function() {
            var t = Math.PI / 2 - this.orientation.lat
              , e = this.orientation.lon
              , n = this.tempVector.set(this._camera.position.x + Math.sin(t) * Math.cos(e), this._camera.position.y + Math.sin(t) * Math.sin(e), this._camera.position.z + Math.cos(t));
            this._camera.lookAt(n),
            this.clampFOV(),
            this._camera.fov = this.verticalFOV,
            this._camera.aspect = this.viewport.aspect,
            this._camera.updateProjectionMatrix()
        }
        ,
        Object.defineProperty(e.prototype, "horizontalFOV", {
            get: function() {
                var t = this.viewport.aspect;
                return t >= 1 ? this.fov : this.fov * t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "verticalFOV", {
            get: function() {
                var t = this.viewport.aspect;
                return t >= 1 ? this.fov / t : this.fov
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.dragStart = function(t) {
            var e = void 0 === t.event.button || t.event.button === l.MouseButton.LEFT;
            return e && t.event.shiftKey || t.event.button === l.MouseButton.RIGHT ? this.dragOperation = o.PAN : e && (t.event.metaKey || t.event.ctrlKey) || t.event.button === l.MouseButton.MIDDLE ? this.dragOperation = o.ORBIT : this.dragOperation = o.ROTATE,
            this.dragStartMethods[this.dragOperation](t)
        }
        ,
        e.prototype.drag = function(t, e, n) {
            this.dragMethods[this.dragOperation](t, e, n)
        }
        ,
        e.prototype.zoomTo = function(t, e, n) {
            !this.translationZoom || t.event.shiftKey ? this.zoomWithFOV(n, e, t) : this.zoomWithTranslation(n, e, t)
        }
        ,
        e.prototype.centerOn = function(t) {
            this._camera.position.copy(t)
        }
        ,
        e.prototype.applyKeyboardInput = function() {
            return !!this.keyboardInput && s.applyKeyboardInputToCamera(this.inputHandler, this.camera)
        }
        ,
        e.prototype.rotate = function(t, n, i) {
            if (0 !== this.viewport.screenWidth && 0 !== this.viewport.screenHeight) {
                var r = t / this.viewport.screenWidth
                  , o = n / this.viewport.screenHeight
                  , a = this.horizontalFOV / 180 * Math.PI
                  , s = a / this.viewport.aspect;
                this.orientation.lon += r * a,
                this.orientation.lat += o * s,
                this.orientation.lat = p.clamp(this.orientation.lat, e.MIN_ELEVATION, e.MAX_ELEVATION)
            }
        }
        ,
        e.prototype.orbitStart = function(t) {
            var e = this;
            if (!this.allowTranslation)
                return !1;
            var n = this.viewport.unprojectScreenCoordinates(t.x, t.y);
            return this.orbitPoint = void 0,
            this.RaycastService.getCoordinates(this.inputHandler.view, n, !0).then((function(t) {
                return e.orbitPoint = t.position
            }
            )).catch(u.handleWarning),
            !0
        }
        ,
        e.prototype.orbit = function(t, n, i) {
            if (this.orbitPoint) {
                var r = this.horizontalFOV / 180 * Math.PI * e.ORBIT_SCALE
                  , o = r / this.viewport.aspect
                  , a = -n / this.viewport.screenHeight * o;
                a + this.orientation.lat > e.MAX_ELEVATION ? a = e.MAX_ELEVATION - this.orientation.lat : a + this.orientation.lat < e.MIN_ELEVATION && (a = e.MIN_ELEVATION - this.orientation.lat);
                var s = this.tempMatrixT.makeTranslation(this.orbitPoint.x, this.orbitPoint.y, this.orbitPoint.z)
                  , c = this.tempMatrixTi.getInverse(s)
                  , l = this.tempMatrixRz.makeRotationZ(-t / this.viewport.screenWidth * r)
                  , u = this.tempMatrixRxy.makeRotationAxis(this.tempVector.setFromMatrixColumn(this.camera.matrixWorld, 0), a)
                  , d = s.multiply(l).multiply(u).multiply(c);
                this.camera.applyMatrix4(d);
                var p = this.camera.getWorldDirection(this.tempVector);
                this.orientation.lon = Math.atan2(p.y, p.x),
                this.orientation.lat = Math.asin(p.z)
            }
        }
        ,
        e.prototype.panStart = function(t) {
            var n = this;
            if (!this.allowTranslation)
                return !1;
            var i = this.viewport.normalizeCoordinates(t.x, t.y, 1).clone().unproject(this.viewport.camera);
            return this.panDistancePerPixel = void 0,
            this.RaycastService.getCoordinates(this.inputHandler.view, i, !0).then((function(t) {
                var e = t.position.clone().project(n.camera);
                e.x += 2 / n.viewport.screenWidth,
                e.unproject(n.camera),
                n.panDistancePerPixel = t.position.distanceTo(e)
            }
            )).catch((function() {
                return n.panDistancePerPixel = e.DEFAULT_PAN_DISTANCE_PER_PIXEL
            }
            )),
            !0
        }
        ,
        e.prototype.pan = function(t, e, n) {
            this.panDistancePerPixel && (this.camera.position.addScaledVector(this.tempVector.setFromMatrixColumn(this.camera.matrixWorld, 0), -t * this.panDistancePerPixel),
            this.camera.position.addScaledVector(this.tempVector.setFromMatrixColumn(this.camera.matrixWorld, 1), e * this.panDistancePerPixel))
        }
        ,
        e.prototype.zoomWithFOV = function(t, n, i) {
            var r = this.fov;
            this.fov = t ? r / n : r + n * e.WHEEL_SCALE_FOV,
            this.clampFOV();
            var o = (this.fov - r) / 180 * Math.PI
              , a = this.viewport.normalizeCoordinates(i.x, i.y, 0)
              , s = this.viewport.aspect;
            this.orientation.lon += .5 * (s >= 1 ? o : o * s) * a.x,
            this.orientation.lat -= .5 * (s >= 1 ? o / s : o) * a.y
        }
        ,
        e.prototype.zoomWithTranslation = function(t, n, i) {
            var r, o = this.inputHandler.view.unprojectScreenCoordinates(i.x, i.y).sub(this.camera.position);
            (o.normalize(),
            t) ? r = (n >= 1 ? n - 1 : -1 / n + 1) * e.PINCH_SPEED : r = -n / e.WHEEL_SCALE_TRANSLATE;
            this.camera.position.addScaledVector(o, r)
        }
        ,
        e.prototype.clampFOV = function() {
            var t = this.viewport.aspect;
            if (t >= 1) {
                var n = Math.min(e.MAX_HFOV, this.fov)
                  , i = Math.min(e.MAX_VFOV, this.fov / t);
                this.fov = Math.max(Math.min(n, i * t), e.MIN_FOV)
            } else {
                n = Math.min(e.MAX_HFOV, this.fov * t),
                i = Math.min(e.MAX_VFOV, this.fov);
                this.fov = Math.max(Math.min(n / t, i), e.MIN_FOV)
            }
        }
        ,
        e.MIN_FOV = 20,
        e.MAX_HFOV = 150,
        e.MAX_VFOV = 100,
        e.WHEEL_SCALE_FOV = 6,
        e.WHEEL_SCALE_TRANSLATE = 2,
        e.PINCH_SPEED = 10,
        e.DEFAULT_PAN_DISTANCE_PER_PIXEL = .01,
        e.ORBIT_SCALE = 5,
        e.MAX_ELEVATION = d.degreesToRadians(85),
        e.MIN_ELEVATION = d.degreesToRadians(-85),
        e
    }(a.CameraController);
    e.FirstPersonCameraController = h
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(20)
      , r = function() {
        function t(t, e, n, i, r, o, a, s) {
            this.taskId = t,
            this.name = e,
            this.doneItems = 0,
            this.numItems = n,
            this.percentage = 0,
            this.modal = i,
            this.hideProgress = r,
            this.compact = o,
            this.removeCallback = s,
            this.transparent = a
        }
        return t.prototype.setName = function(t) {
            this.name = t,
            i.invalidateAngular()
        }
        ,
        t.prototype.itemDone = function(t) {
            this.doneItems += void 0 === t ? 1 : t,
            this.percentage = 100 * this.doneItems / this.numItems,
            this.percentage >= 100 && this.removeCallback(this)
        }
        ,
        t.prototype.addItems = function(t) {
            this.numItems += t,
            this.percentage = 100 * this.doneItems / this.numItems,
            i.invalidateAngular()
        }
        ,
        t.prototype.setPercentage = function(t) {
            this.percentage = t,
            this.percentage >= 100 && this.removeCallback(this)
        }
        ,
        t.prototype.incrementPercentage = function(t) {
            var e = this.percentage + t;
            this.setPercentage(e)
        }
        ,
        t.prototype.isComplete = function() {
            return this.percentage >= 100
        }
        ,
        t
    }();
    e.ProgressReportTask = r
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t(t, e) {
            this.count = t,
            this.value = e
        }
        return Object.defineProperty(t.prototype, "length", {
            get: function() {
                return this.value.length
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "isValidLengthForAllBrowsers", {
            get: function() {
                return this.length <= t.MAX_LENGTH
            },
            enumerable: !0,
            configurable: !0
        }),
        t.MAX_LENGTH = 2048,
        t
    }();
    e.MeasurementUrl = i
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return t.call(this, "MultiViewportResized") || this
        }
        return r(e, t),
        e.prototype.withViewports = function(t) {
            for (var e = this, n = [], i = 1; i < arguments.length; i++)
                n[i - 1] = arguments[i];
            return n.forEach((function(n) {
                return e.withData(n.name, n.screenWidth >= t ? "shown" : "hidden")
            }
            )),
            this
        }
        ,
        e
    }(n(64).TrackingEvent);
    e.MultiViewportResizedEvent = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o, a = n(64);
    !function(t) {
        t[t.RENAME = 0] = "RENAME",
        t[t.POINT_CHANGED = 1] = "POINT_CHANGED",
        t[t.ANNOTATED = 2] = "ANNOTATED"
    }(o = e.ModificationType || (e.ModificationType = {}));
    var s = function(t) {
        function e() {
            return t.call(this, "MeasurementModified") || this
        }
        return r(e, t),
        e.prototype.withModification = function(t) {
            return this.withData("modification", o[t]),
            this
        }
        ,
        e
    }(a.TrackingEvent);
    e.MeasurementModifiedEvent = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return t.call(this, "MeasurementsDeleted") || this
        }
        return r(e, t),
        e.prototype.numberOfMeasurements = function(t) {
            return this.withData("numberOfMeasurementsDeleted", t),
            this
        }
        ,
        e.prototype.interactionArea = function(t) {
            return this.withData("interactionArea", t),
            this
        }
        ,
        e
    }(n(64).TrackingEvent);
    e.MeasurementsDeletedEvent = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return t.call(this, "MeasurementHidden") || this
        }
        return r(e, t),
        e.prototype.numberOfMeasurements = function(t) {
            return this.withData("numberOfMeasurementsHidden", t),
            this
        }
        ,
        e.prototype.interactionArea = function(t) {
            return this.withData("interactionArea", t),
            this
        }
        ,
        e
    }(n(64).TrackingEvent);
    e.MeasurementsHiddenEvent = o
}
, function(t, e, n) {
    "use strict";
    function i(t, e, n, i, o, s, c) {
        this.queue = [],
        this.max_depth = e,
        this.res = n;
        var l = 0;
        this.root = new r(1,o,s,c),
        this.queue.push(this.root);
        for (var u = 0, d = 0, p = 0, h = 0; this.queue.length; ) {
            var f = this.queue.shift();
            if (l >= t.length)
                throw "Premature end of octree data";
            var m = f.keys[3];
            m < e ? a(f, m, this.queue, t[l++]) : m == e ? (u = t[l++],
            d = f.keys[0] << 1,
            p = f.keys[1] << 1,
            h = f.keys[2] << 1,
            1 & u && i(this, f.children[0], d, p, h),
            2 & u && i(this, f.children[1], d, p, h + 1),
            4 & u && i(this, f.children[2], d, p + 1, h),
            8 & u && i(this, f.children[3], d, p + 1, h + 1),
            16 & u && i(this, f.children[4], d + 1, p, h),
            32 & u && i(this, f.children[5], d + 1, p, h + 1),
            64 & u && i(this, f.children[6], d + 1, p + 1, h),
            128 & u && i(this, f.children[7], d + 1, p + 1, h + 1)) : console.error("shouldn't be here...")
        }
    }
    function r(t, e, n, i) {
        this.children = new Array(8),
        this.keys = new Int32Array(4),
        this.keys[0] = e,
        this.keys[1] = n,
        this.keys[2] = i,
        this.keys[3] = t
    }
    function o(t) {
        return t.keys[3]
    }
    function a(t, e, n, i) {
        var o = t.keys[0] << 1
          , a = t.keys[1] << 1
          , s = t.keys[2] << 1
          , c = null
          , l = e + 1;
        1 & i && (c = new r(l,o,a,s),
        t.children[0] = c,
        n.push(c)),
        2 & i && (c = new r(l,o,a,s + 1),
        t.children[1] = c,
        n.push(c)),
        4 & i && (c = new r(l,o,a + 1,s),
        t.children[2] = c,
        n.push(c)),
        8 & i && (c = new r(l,o,a + 1,s + 1),
        t.children[3] = c,
        n.push(c)),
        16 & i && (c = new r(l,o + 1,a,s),
        t.children[4] = c,
        n.push(c)),
        32 & i && (c = new r(l,o + 1,a,s + 1),
        t.children[5] = c,
        n.push(c)),
        64 & i && (c = new r(l,o + 1,a + 1,s),
        t.children[6] = c,
        n.push(c)),
        128 & i && (c = new r(l,o + 1,a + 1,s + 1),
        t.children[7] = c,
        n.push(c))
    }
    n.r(e),
    n.d(e, "Octree", (function() {
        return i
    }
    )),
    n.d(e, "getDepth", (function() {
        return o
    }
    ))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(0)
      , r = n(2)
      , o = n(6)
      , a = n(610)
      , s = n(0)
      , c = n(168)
      , l = n(624);
    function u(t, e) {
        if (1 & t) {
            var n = s.ɵɵgetCurrentView();
            s.ɵɵelementStart(0, "div", 1),
            s.ɵɵelementStart(1, "label", 2),
            s.ɵɵtext(2),
            s.ɵɵelementEnd(),
            s.ɵɵelementStart(3, "form", 3),
            s.ɵɵelementStart(4, "label", 4),
            s.ɵɵelementStart(5, "input", 5),
            s.ɵɵlistener("click", (function() {
                s.ɵɵrestoreView(n);
                var t = s.ɵɵnextContext();
                return t.onImportModeChange.emit(t.modes.PRESERVE)
            }
            )),
            s.ɵɵelementEnd(),
            s.ɵɵelementStart(6, "span"),
            s.ɵɵtext(7),
            s.ɵɵelementEnd(),
            s.ɵɵelementEnd(),
            s.ɵɵelementStart(8, "label", 4),
            s.ɵɵelementStart(9, "input", 5),
            s.ɵɵlistener("click", (function() {
                s.ɵɵrestoreView(n);
                var t = s.ɵɵnextContext();
                return t.onImportModeChange.emit(t.modes.UPDATE)
            }
            )),
            s.ɵɵelementEnd(),
            s.ɵɵelementStart(10, "span"),
            s.ɵɵtext(11),
            s.ɵɵelementEnd(),
            s.ɵɵelementEnd(),
            s.ɵɵelementStart(12, "label", 4),
            s.ɵɵelementStart(13, "input", 5),
            s.ɵɵlistener("click", (function() {
                s.ɵɵrestoreView(n);
                var t = s.ɵɵnextContext();
                return t.onImportModeChange.emit(t.modes.ASSIGN_NEW)
            }
            )),
            s.ɵɵelementEnd(),
            s.ɵɵelementStart(14, "span"),
            s.ɵɵtext(15),
            s.ɵɵelementEnd(),
            s.ɵɵelementEnd(),
            s.ɵɵelementEnd(),
            s.ɵɵelementEnd()
        }
        if (2 & t) {
            var i = e.$implicit
              , r = s.ɵɵnextContext();
            s.ɵɵadvance(2),
            s.ɵɵtextInterpolate1(" ", i("Import IDs"), " "),
            s.ɵɵadvance(3),
            s.ɵɵproperty("checked", r.selectedMode == r.modes.PRESERVE),
            s.ɵɵadvance(2),
            s.ɵɵtextInterpolate1(" ", i("Yes, abort import if ID exists"), " "),
            s.ɵɵadvance(2),
            s.ɵɵproperty("checked", r.selectedMode == r.modes.UPDATE),
            s.ɵɵadvance(2),
            s.ɵɵtextInterpolate1(" ", i("Yes, update existing POI with same ID"), " "),
            s.ɵɵadvance(2),
            s.ɵɵproperty("checked", r.selectedMode == r.modes.ASSIGN_NEW),
            s.ɵɵadvance(2),
            s.ɵɵtextInterpolate1(" ", i("No, assign new IDs"), " ")
        }
    }
    var d = function() {
        function t() {
            this.onImportModeChange = new i.EventEmitter,
            this.selectedMode = a.PoiImportMode.PRESERVE,
            this.modes = a.PoiImportMode
        }
        return t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵcmp = s.ɵɵdefineComponent({
            type: t,
            selectors: [["poi-import"]],
            inputs: {
                selectedMode: "selectedMode"
            },
            outputs: {
                onImportModeChange: "onImportModeChange"
            },
            decls: 1,
            vars: 0,
            consts: [["class", "form-group", 4, "transloco"], [1, "form-group"], [1, "col-sm-3", "control-label"], [1, "col-sm-9"], [1, "id-radio"], ["type", "radio", "name", "ids", 3, "checked", "click"]],
            template: function(t, e) {
                1 & t && s.ɵɵtemplate(0, u, 16, 7, "div", 0)
            },
            directives: [c.TranslocoDirective, l.ɵangular_packages_forms_forms_y, l.NgControlStatusGroup, l.NgForm],
            styles: [".id-radio[_ngcontent-%COMP%]{display:block;padding-top:7px;position:relative;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}"]
        }),
        t
    }();
    e.PoiImportModeComponent = d,
    s.ɵsetClassMetadata(d, [{
        type: i.Component,
        args: [{
            selector: "poi-import",
            templateUrl: "PoiImportMode.ng.html",
            styleUrls: ["PoiImportMode.ng.scss"]
        }]
    }], null, {
        onImportModeChange: [{
            type: i.Output
        }],
        selectedMode: [{
            type: i.Input
        }]
    }),
    r.module("IVWebApp").directive("poiImportMode", o.downgradeComponent({
        component: d
    }))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(0)
      , r = n(2)
      , o = n(6)
      , a = (n(121),
    n(578))
      , s = n(85)
      , c = (n(21),
    n(0))
      , l = n(121)
      , u = n(21)
      , d = n(168);
    function p(t, e) {
        if (1 & t) {
            var n = c.ɵɵgetCurrentView();
            c.ɵɵelementContainerStart(0),
            c.ɵɵelementStart(1, "button", 1),
            c.ɵɵlistener("click", (function() {
                return c.ɵɵrestoreView(n),
                c.ɵɵnextContext().toggleMagnificationGlass()
            }
            )),
            c.ɵɵelementStart(2, "div", 2),
            c.ɵɵnamespaceSVG(),
            c.ɵɵelementStart(3, "svg", 3),
            c.ɵɵelement(4, "path", 4),
            c.ɵɵelementEnd(),
            c.ɵɵelementEnd(),
            c.ɵɵelementEnd(),
            c.ɵɵelementContainerEnd()
        }
        if (2 & t) {
            var i = e.$implicit
              , r = c.ɵɵnextContext();
            c.ɵɵadvance(1),
            c.ɵɵclassProp("active", r.isActive()),
            c.ɵɵproperty("title", i("Magnifier")),
            c.ɵɵadvance(1),
            c.ɵɵclassProp("active", r.isActive())
        }
    }
    var h = function() {
        function t(t, e) {
            this.MagnificationService = t,
            this.TrackingService = e
        }
        return t.prototype.toggleMagnificationGlass = function() {
            this.MagnificationService.toggleMagnification(),
            this.TrackingService.trackPreDefinedEvent((new a.MeasurementToolChangedEvent).withTool(s.Tool.MAGNIFIER).withStatus(this.isActive()))
        }
        ,
        t.prototype.isActive = function() {
            return this.MagnificationService.isEnabled
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(c.ɵɵdirectiveInject(l.MagnificationService),c.ɵɵdirectiveInject(u.TrackingService))
        }
        ,
        t.ɵcmp = c.ɵɵdefineComponent({
            type: t,
            selectors: [["magnification-toggle"]],
            decls: 1,
            vars: 0,
            consts: [[4, "transloco"], [1, "btn", "btn-default", 3, "title", "click"], [1, "magnification-icon"], ["width", "20", "height", "20", "viewBox", "0 0 20 20", "fill", "none", "xmlns", "http://www.w3.org/2000/svg"], ["fill-rule", "evenodd", "clip-rule", "evenodd", "d", "M9 17.9381V13H11V17.9381C14.6187 17.4869 17.4869 14.6187 17.9381 11H13V9H17.9381C17.4869 5.38128 14.6187 2.51314 11 2.06189V7H9V2.06189C5.38128 2.51314 2.51314 5.38128 2.06189 9H7V11H2.06189C2.51314 14.6187 5.38128 17.4869 9 17.9381ZM10 20C15.5228 20 20 15.5228 20 10C20 4.47715 15.5228 0 10 0C4.47715 0 0 4.47715 0 10C0 15.5228 4.47715 20 10 20Z", "fill", "currentColor"]],
            template: function(t, e) {
                1 & t && c.ɵɵtemplate(0, p, 5, 5, "ng-container", 0)
            },
            directives: [d.TranslocoDirective],
            styles: [".magnification-icon[_ngcontent-%COMP%]{color:#333332}.magnification-icon.active[_ngcontent-%COMP%]{color:#3398c7}"]
        }),
        t
    }();
    e.MagnificationToggleComponent = h,
    c.ɵsetClassMetadata(h, [{
        type: i.Component,
        args: [{
            selector: "magnification-toggle",
            templateUrl: "MagnificationToggle.ng.html",
            styleUrls: ["MagnificationToggle.ng.scss"]
        }]
    }], (function() {
        return [{
            type: l.MagnificationService
        }, {
            type: u.TrackingService
        }]
    }
    ), null),
    r.module("IVWebApp").directive("magnificationToggle", o.downgradeComponent({
        component: h
    }))
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__spreadArrays || function() {
        for (var t = 0, e = 0, n = arguments.length; e < n; e++)
            t += arguments[e].length;
        var i = Array(t)
          , r = 0;
        for (e = 0; e < n; e++)
            for (var o = arguments[e], a = 0, s = o.length; a < s; a++,
            r++)
                i[r] = o[a];
        return i
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var r = n(0)
      , o = (n(440),
    n(114),
    n(1658))
      , a = n(2)
      , s = n(6)
      , c = n(197)
      , l = (n(622),
    n(0))
      , u = n(114)
      , d = n(440)
      , p = n(168)
      , h = n(3)
      , f = n(625)
      , m = ["groupMappingInfoModalBody"];
    function g(t, e) {
        if (1 & t && (l.ɵɵelementStart(0, "li"),
        l.ɵɵtext(1),
        l.ɵɵelementEnd()),
        2 & t) {
            var n = e.$implicit;
            l.ɵɵadvance(1),
            l.ɵɵtextInterpolate1(" ", n, " ")
        }
    }
    function v(t, e) {
        if (1 & t && (l.ɵɵelementContainerStart(0),
        l.ɵɵelementStart(1, "h2", 3),
        l.ɵɵtext(2),
        l.ɵɵelementEnd(),
        l.ɵɵelementStart(3, "mat-dialog-content"),
        l.ɵɵelementStart(4, "p"),
        l.ɵɵtext(5),
        l.ɵɵelementEnd(),
        l.ɵɵelementStart(6, "p"),
        l.ɵɵtext(7),
        l.ɵɵelementEnd(),
        l.ɵɵelementStart(8, "div", 4),
        l.ɵɵelementStart(9, "div", 5),
        l.ɵɵelementStart(10, "h4"),
        l.ɵɵtext(11),
        l.ɵɵelementEnd(),
        l.ɵɵelementStart(12, "ul"),
        l.ɵɵtemplate(13, g, 2, 1, "li", 6),
        l.ɵɵelementEnd(),
        l.ɵɵelementEnd(),
        l.ɵɵelementEnd(),
        l.ɵɵelementEnd(),
        l.ɵɵelementStart(14, "mat-dialog-actions", 7),
        l.ɵɵelementStart(15, "button", 8),
        l.ɵɵtext(16),
        l.ɵɵelementEnd(),
        l.ɵɵelementStart(17, "button", 9),
        l.ɵɵtext(18),
        l.ɵɵelementEnd(),
        l.ɵɵelementStart(19, "button", 9),
        l.ɵɵtext(20),
        l.ɵɵelementEnd(),
        l.ɵɵelementEnd(),
        l.ɵɵelementContainerEnd()),
        2 & t) {
            var n = e.$implicit
              , i = l.ɵɵnextContext(2);
            l.ɵɵadvance(2),
            l.ɵɵtextInterpolate(n("Open ID group mapping")),
            l.ɵɵadvance(3),
            l.ɵɵtextInterpolate1(" ", n("Create these groups in your OIDC system of record ensuring you create a mapper to a claim array matching your selector in BOTH your identity and access tokens."), " "),
            l.ɵɵadvance(2),
            l.ɵɵtextInterpolate1(" ", n("Your administrator may then assign membership within the OIDC system of record. Users will have the rights and privileges assigned to members of that group when they log in."), " "),
            l.ɵɵadvance(4),
            l.ɵɵtextInterpolate(n("4dkankan Groups")),
            l.ɵɵadvance(2),
            l.ɵɵproperty("ngForOf", i.qualifiedGroups),
            l.ɵɵadvance(3),
            l.ɵɵtextInterpolate(n("Cancel")),
            l.ɵɵadvance(1),
            l.ɵɵproperty("mat-dialog-close", i.fileType.CSV),
            l.ɵɵadvance(1),
            l.ɵɵtextInterpolate1(" ", n("Export CSV"), ""),
            l.ɵɵadvance(1),
            l.ɵɵproperty("mat-dialog-close", i.fileType.JSON),
            l.ɵɵadvance(1),
            l.ɵɵtextInterpolate1(" ", n("Export JSON"), "")
        }
    }
    function y(t, e) {
        1 & t && l.ɵɵtemplate(0, v, 21, 10, "ng-container", 2)
    }
    var b = function() {
        function t(t, e) {
            this.GroupService = t,
            this.MatDialog = e,
            this.fileType = c.FileType
        }
        return Object.defineProperty(t.prototype, "qualifiedGroups", {
            get: function() {
                var t = this;
                return this.GroupService.getGroupsAsArray().map((function(e) {
                    return t.instancePrefix + e.name
                }
                ))
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "qualifiedGroupsJson", {
            get: function() {
                return JSON.stringify({
                    groups: this.qualifiedGroups
                })
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "qualifiedGroupsCsv", {
            get: function() {
                return i(["groupName"], this.qualifiedGroups).join("\n")
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.openGroupDigest = function(t) {
            var e = this;
            this.MatDialog.open(this.groupMappingInfoModalBody, o.ModalStyleLarge.default()).afterClosed().subscribe((function(t) {
                t && e.exportFile(t)
            }
            )),
            t.preventDefault()
        }
        ,
        Object.defineProperty(t.prototype, "instancePrefix", {
            get: function() {
                return "" !== this.config.savedHostPrefix ? this.config.savedHostPrefix : this.config.urlHostPrefix
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.exportFile = function(t) {
            var e = t === c.FileType.JSON ? this.qualifiedGroupsJson : this.qualifiedGroupsCsv
              , n = document.createElement("a")
              , i = new Blob([e],{
                type: "text/plain"
            });
            n.href = URL.createObjectURL(i),
            n.download = "groups." + t,
            n.click()
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(l.ɵɵdirectiveInject(u.GroupService),l.ɵɵdirectiveInject(d.MatDialog))
        }
        ,
        t.ɵcmp = l.ɵɵdefineComponent({
            type: t,
            selectors: [["user-auth-group-digest"]],
            viewQuery: function(t, e) {
                var n;
                (1 & t && l.ɵɵviewQuery(m, !0),
                2 & t) && (l.ɵɵqueryRefresh(n = l.ɵɵloadQuery()) && (e.groupMappingInfoModalBody = n.first))
            },
            inputs: {
                config: "config"
            },
            decls: 4,
            vars: 0,
            consts: [[1, "material-icons", 3, "click"], ["groupMappingInfoModalBody", ""], [4, "transloco"], ["mat-dialog-title", ""], ["layout", "row", 1, "group-container"], ["layout", "column"], [4, "ngFor", "ngForOf"], ["align", "end"], ["mat-stroked-button", "", "mat-dialog-close", ""], ["mat-flat-button", "", "color", "primary", 3, "mat-dialog-close"]],
            template: function(t, e) {
                1 & t && (l.ɵɵelementStart(0, "i", 0),
                l.ɵɵlistener("click", (function(t) {
                    return e.openGroupDigest(t)
                }
                )),
                l.ɵɵtext(1, "info"),
                l.ɵɵelementEnd(),
                l.ɵɵtemplate(2, y, 1, 0, "ng-template", null, 1, l.ɵɵtemplateRefExtractor))
            },
            directives: [p.TranslocoDirective, d.MatDialogTitle, d.MatDialogContent, h.NgForOf, d.MatDialogActions, f.MatButton, d.MatDialogClose],
            styles: ["i[_ngcontent-%COMP%]{margin-left:5px;vertical-align:middle}ul[_ngcontent-%COMP%]{border-radius:10px;background-color:#f5f5f5;padding:20px}li[_ngcontent-%COMP%]{list-style:none}div.group-container[_ngcontent-%COMP%]{margin-top:18px}"]
        }),
        t
    }();
    e.UserAuthGroupDigestComponent = b,
    l.ɵsetClassMetadata(b, [{
        type: r.Component,
        args: [{
            selector: "user-auth-group-digest",
            templateUrl: "./UserAuthGroupDigest.ng.html",
            styleUrls: ["./UserAuthGroupDigest.ng.scss"]
        }]
    }], (function() {
        return [{
            type: u.GroupService
        }, {
            type: d.MatDialog
        }]
    }
    ), {
        config: [{
            type: r.Input
        }],
        groupMappingInfoModalBody: [{
            type: r.ViewChild,
            args: ["groupMappingInfoModalBody", {
                static: !1
            }]
        }]
    }),
    a.module("IVWebApp").directive("userAuthGroupDigest", s.downgradeComponent({
        component: b
    }))
}
, function(t, e, n) {
    "use strict";
    n.d(e, "a", (function() {
        return o
    }
    ));
    var i = n(1)
      , r = n(26);
    function o() {
        return function(t) {
            return t.lift(new a)
        }
    }
    var a = function() {
        function t() {}
        return t.prototype.call = function(t, e) {
            return e.subscribe(new s(t))
        }
        ,
        t
    }()
      , s = function(t) {
        function e(e) {
            var n = t.call(this, e) || this;
            return n.hasPrev = !1,
            n
        }
        return i.c(e, t),
        e.prototype._next = function(t) {
            var e;
            this.hasPrev ? e = [this.prev, t] : this.hasPrev = !0,
            this.prev = t,
            e && this.destination.next(e)
        }
        ,
        e
    }(r.a)
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    n(652);
    var i = n(230)
      , r = [];
    window.IV = {
        loaded: function(t) {
            return r.push(t)
        },
        bootstrapped: function(t) {
            return window.IV.bootstrapCallbacks.push(t)
        },
        bootstrapCallbacks: []
    },
    n(869),
    n(948),
    n(1667),
    i.runWithBaseHref((function() {
        return Promise.all([n.e(0), n.e(1), n.e(2), n.e(12), n.e(10)]).then(function() {
            window.IV.bootstrapApp = n(1670).bootstrapApp,
            window.IV.loaded = function(t) {
                return t()
            }
            ,
            r.forEach((function(t) {
                return t()
            }
            )),
            r.length = 0
        }
        .bind(null, n)).catch(void 0)
    }
    ))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    n(653),
    n(654),
    n(665),
    n(666),
    n(667),
    n(678),
    n(867),
    n(868)
}
, function(t, e, n) {
    var i = function(t) {
        "use strict";
        var e = Object.prototype
          , n = e.hasOwnProperty
          , i = "function" == typeof Symbol ? Symbol : {}
          , r = i.iterator || "@@iterator"
          , o = i.asyncIterator || "@@asyncIterator"
          , a = i.toStringTag || "@@toStringTag";
        function s(t, e, n) {
            return Object.defineProperty(t, e, {
                value: n,
                enumerable: !0,
                configurable: !0,
                writable: !0
            }),
            t[e]
        }
        try {
            s({}, "")
        } catch (t) {
            s = function(t, e, n) {
                return t[e] = n
            }
        }
        function c(t, e, n, i) {
            var r = e && e.prototype instanceof d ? e : d
              , o = Object.create(r.prototype)
              , a = new M(i || []);
            return o._invoke = function(t, e, n) {
                var i = "suspendedStart";
                return function(r, o) {
                    if ("executing" === i)
                        throw new Error("Generator is already running");
                    if ("completed" === i) {
                        if ("throw" === r)
                            throw o;
                        return C()
                    }
                    for (n.method = r,
                    n.arg = o; ; ) {
                        var a = n.delegate;
                        if (a) {
                            var s = w(a, n);
                            if (s) {
                                if (s === u)
                                    continue;
                                return s
                            }
                        }
                        if ("next" === n.method)
                            n.sent = n._sent = n.arg;
                        else if ("throw" === n.method) {
                            if ("suspendedStart" === i)
                                throw i = "completed",
                                n.arg;
                            n.dispatchException(n.arg)
                        } else
                            "return" === n.method && n.abrupt("return", n.arg);
                        i = "executing";
                        var c = l(t, e, n);
                        if ("normal" === c.type) {
                            if (i = n.done ? "completed" : "suspendedYield",
                            c.arg === u)
                                continue;
                            return {
                                value: c.arg,
                                done: n.done
                            }
                        }
                        "throw" === c.type && (i = "completed",
                        n.method = "throw",
                        n.arg = c.arg)
                    }
                }
            }(t, n, a),
            o
        }
        function l(t, e, n) {
            try {
                return {
                    type: "normal",
                    arg: t.call(e, n)
                }
            } catch (t) {
                return {
                    type: "throw",
                    arg: t
                }
            }
        }
        t.wrap = c;
        var u = {};
        function d() {}
        function p() {}
        function h() {}
        var f = {};
        f[r] = function() {
            return this
        }
        ;
        var m = Object.getPrototypeOf
          , g = m && m(m(E([])));
        g && g !== e && n.call(g, r) && (f = g);
        var v = h.prototype = d.prototype = Object.create(f);
        function y(t) {
            ["next", "throw", "return"].forEach((function(e) {
                s(t, e, (function(t) {
                    return this._invoke(e, t)
                }
                ))
            }
            ))
        }
        function b(t, e) {
            var i;
            this._invoke = function(r, o) {
                function a() {
                    return new e((function(i, a) {
                        !function i(r, o, a, s) {
                            var c = l(t[r], t, o);
                            if ("throw" !== c.type) {
                                var u = c.arg
                                  , d = u.value;
                                return d && "object" == typeof d && n.call(d, "__await") ? e.resolve(d.__await).then((function(t) {
                                    i("next", t, a, s)
                                }
                                ), (function(t) {
                                    i("throw", t, a, s)
                                }
                                )) : e.resolve(d).then((function(t) {
                                    u.value = t,
                                    a(u)
                                }
                                ), (function(t) {
                                    return i("throw", t, a, s)
                                }
                                ))
                            }
                            s(c.arg)
                        }(r, o, i, a)
                    }
                    ))
                }
                return i = i ? i.then(a, a) : a()
            }
        }
        function w(t, e) {
            var n = t.iterator[e.method];
            if (void 0 === n) {
                if (e.delegate = null,
                "throw" === e.method) {
                    if (t.iterator.return && (e.method = "return",
                    e.arg = void 0,
                    w(t, e),
                    "throw" === e.method))
                        return u;
                    e.method = "throw",
                    e.arg = new TypeError("The iterator does not provide a 'throw' method")
                }
                return u
            }
            var i = l(n, t.iterator, e.arg);
            if ("throw" === i.type)
                return e.method = "throw",
                e.arg = i.arg,
                e.delegate = null,
                u;
            var r = i.arg;
            return r ? r.done ? (e[t.resultName] = r.value,
            e.next = t.nextLoc,
            "return" !== e.method && (e.method = "next",
            e.arg = void 0),
            e.delegate = null,
            u) : r : (e.method = "throw",
            e.arg = new TypeError("iterator result is not an object"),
            e.delegate = null,
            u)
        }
        function S(t) {
            var e = {
                tryLoc: t[0]
            };
            1 in t && (e.catchLoc = t[1]),
            2 in t && (e.finallyLoc = t[2],
            e.afterLoc = t[3]),
            this.tryEntries.push(e)
        }
        function x(t) {
            var e = t.completion || {};
            e.type = "normal",
            delete e.arg,
            t.completion = e
        }
        function M(t) {
            this.tryEntries = [{
                tryLoc: "root"
            }],
            t.forEach(S, this),
            this.reset(!0)
        }
        function E(t) {
            if (t) {
                var e = t[r];
                if (e)
                    return e.call(t);
                if ("function" == typeof t.next)
                    return t;
                if (!isNaN(t.length)) {
                    var i = -1
                      , o = function e() {
                        for (; ++i < t.length; )
                            if (n.call(t, i))
                                return e.value = t[i],
                                e.done = !1,
                                e;
                        return e.value = void 0,
                        e.done = !0,
                        e
                    };
                    return o.next = o
                }
            }
            return {
                next: C
            }
        }
        function C() {
            return {
                value: void 0,
                done: !0
            }
        }
        return p.prototype = v.constructor = h,
        h.constructor = p,
        p.displayName = s(h, a, "GeneratorFunction"),
        t.isGeneratorFunction = function(t) {
            var e = "function" == typeof t && t.constructor;
            return !!e && (e === p || "GeneratorFunction" === (e.displayName || e.name))
        }
        ,
        t.mark = function(t) {
            return Object.setPrototypeOf ? Object.setPrototypeOf(t, h) : (t.__proto__ = h,
            s(t, a, "GeneratorFunction")),
            t.prototype = Object.create(v),
            t
        }
        ,
        t.awrap = function(t) {
            return {
                __await: t
            }
        }
        ,
        y(b.prototype),
        b.prototype[o] = function() {
            return this
        }
        ,
        t.AsyncIterator = b,
        t.async = function(e, n, i, r, o) {
            void 0 === o && (o = Promise);
            var a = new b(c(e, n, i, r),o);
            return t.isGeneratorFunction(n) ? a : a.next().then((function(t) {
                return t.done ? t.value : a.next()
            }
            ))
        }
        ,
        y(v),
        s(v, a, "Generator"),
        v[r] = function() {
            return this
        }
        ,
        v.toString = function() {
            return "[object Generator]"
        }
        ,
        t.keys = function(t) {
            var e = [];
            for (var n in t)
                e.push(n);
            return e.reverse(),
            function n() {
                for (; e.length; ) {
                    var i = e.pop();
                    if (i in t)
                        return n.value = i,
                        n.done = !1,
                        n
                }
                return n.done = !0,
                n
            }
        }
        ,
        t.values = E,
        M.prototype = {
            constructor: M,
            reset: function(t) {
                if (this.prev = 0,
                this.next = 0,
                this.sent = this._sent = void 0,
                this.done = !1,
                this.delegate = null,
                this.method = "next",
                this.arg = void 0,
                this.tryEntries.forEach(x),
                !t)
                    for (var e in this)
                        "t" === e.charAt(0) && n.call(this, e) && !isNaN(+e.slice(1)) && (this[e] = void 0)
            },
            stop: function() {
                this.done = !0;
                var t = this.tryEntries[0].completion;
                if ("throw" === t.type)
                    throw t.arg;
                return this.rval
            },
            dispatchException: function(t) {
                if (this.done)
                    throw t;
                var e = this;
                function i(n, i) {
                    return a.type = "throw",
                    a.arg = t,
                    e.next = n,
                    i && (e.method = "next",
                    e.arg = void 0),
                    !!i
                }
                for (var r = this.tryEntries.length - 1; r >= 0; --r) {
                    var o = this.tryEntries[r]
                      , a = o.completion;
                    if ("root" === o.tryLoc)
                        return i("end");
                    if (o.tryLoc <= this.prev) {
                        var s = n.call(o, "catchLoc")
                          , c = n.call(o, "finallyLoc");
                        if (s && c) {
                            if (this.prev < o.catchLoc)
                                return i(o.catchLoc, !0);
                            if (this.prev < o.finallyLoc)
                                return i(o.finallyLoc)
                        } else if (s) {
                            if (this.prev < o.catchLoc)
                                return i(o.catchLoc, !0)
                        } else {
                            if (!c)
                                throw new Error("try statement without catch or finally");
                            if (this.prev < o.finallyLoc)
                                return i(o.finallyLoc)
                        }
                    }
                }
            },
            abrupt: function(t, e) {
                for (var i = this.tryEntries.length - 1; i >= 0; --i) {
                    var r = this.tryEntries[i];
                    if (r.tryLoc <= this.prev && n.call(r, "finallyLoc") && this.prev < r.finallyLoc) {
                        var o = r;
                        break
                    }
                }
                o && ("break" === t || "continue" === t) && o.tryLoc <= e && e <= o.finallyLoc && (o = null);
                var a = o ? o.completion : {};
                return a.type = t,
                a.arg = e,
                o ? (this.method = "next",
                this.next = o.finallyLoc,
                u) : this.complete(a)
            },
            complete: function(t, e) {
                if ("throw" === t.type)
                    throw t.arg;
                return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg,
                this.method = "return",
                this.next = "end") : "normal" === t.type && e && (this.next = e),
                u
            },
            finish: function(t) {
                for (var e = this.tryEntries.length - 1; e >= 0; --e) {
                    var n = this.tryEntries[e];
                    if (n.finallyLoc === t)
                        return this.complete(n.completion, n.afterLoc),
                        x(n),
                        u
                }
            },
            catch: function(t) {
                for (var e = this.tryEntries.length - 1; e >= 0; --e) {
                    var n = this.tryEntries[e];
                    if (n.tryLoc === t) {
                        var i = n.completion;
                        if ("throw" === i.type) {
                            var r = i.arg;
                            x(n)
                        }
                        return r
                    }
                }
                throw new Error("illegal catch attempt")
            },
            delegateYield: function(t, e, n) {
                return this.delegate = {
                    iterator: E(t),
                    resultName: e,
                    nextLoc: n
                },
                "next" === this.method && (this.arg = void 0),
                u
            }
        },
        t
    }(t.exports);
    try {
        regeneratorRuntime = i
    } catch (t) {
        Function("r", "regeneratorRuntime = r")(i)
    }
}
, function(t, e, n) {
    n(655),
    n(656),
    n(657),
    n(658),
    n(660),
    n(661),
    n(664),
    n(475);
    var i = n(286);
    t.exports = i
}
, function(t, e, n) {
    var i = n(34)
      , r = n(456)
      , o = n(457)
      , a = n(88);
    for (var s in r) {
        var c = i[s]
          , l = c && c.prototype;
        if (l && l.forEach !== o)
            try {
                a(l, "forEach", o)
            } catch (t) {
                l.forEach = o
            }
    }
}
, function(t, e, n) {
    var i = n(34)
      , r = n(456)
      , o = n(285)
      , a = n(88)
      , s = n(45)
      , c = s("iterator")
      , l = s("toStringTag")
      , u = o.values;
    for (var d in r) {
        var p = i[d]
          , h = p && p.prototype;
        if (h) {
            if (h[c] !== u)
                try {
                    a(h, c, u)
                } catch (t) {
                    h[c] = u
                }
            if (h[l] || a(h, l, d),
            r[d])
                for (var f in o)
                    if (h[f] !== o[f])
                        try {
                            a(h, f, o[f])
                        } catch (t) {
                            h[f] = o[f]
                        }
        }
    }
}
, function(t, e, n) {
    var i = n(5)
      , r = n(34)
      , o = n(468);
    i({
        global: !0,
        bind: !0,
        enumerable: !0,
        forced: !r.setImmediate || !r.clearImmediate
    }, {
        setImmediate: o.set,
        clearImmediate: o.clear
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(34)
      , o = n(659)
      , a = n(133)
      , s = r.process
      , c = "process" == a(s);
    i({
        global: !0,
        enumerable: !0,
        noTargetGet: !0
    }, {
        queueMicrotask: function(t) {
            var e = c && s.domain;
            o(e ? e.bind(t) : t)
        }
    })
}
, function(t, e, n) {
    var i, r, o, a, s, c, l, u, d = n(34), p = n(82).f, h = n(133), f = n(468).set, m = n(469), g = d.MutationObserver || d.WebKitMutationObserver, v = d.process, y = d.Promise, b = "process" == h(v), w = p(d, "queueMicrotask"), S = w && w.value;
    S || (i = function() {
        var t, e;
        for (b && (t = v.domain) && t.exit(); r; ) {
            e = r.fn,
            r = r.next;
            try {
                e()
            } catch (t) {
                throw r ? a() : o = void 0,
                t
            }
        }
        o = void 0,
        t && t.enter()
    }
    ,
    b ? a = function() {
        v.nextTick(i)
    }
    : g && !m ? (s = !0,
    c = document.createTextNode(""),
    new g(i).observe(c, {
        characterData: !0
    }),
    a = function() {
        c.data = s = !s
    }
    ) : y && y.resolve ? (l = y.resolve(void 0),
    u = l.then,
    a = function() {
        u.call(l, i)
    }
    ) : a = function() {
        f.call(d, i)
    }
    ),
    t.exports = S || function(t) {
        var e = {
            fn: t,
            next: void 0
        };
        o && (o.next = e),
        r || (r = e,
        a()),
        o = e
    }
}
, function(t, e, n) {
    var i = n(5)
      , r = n(34)
      , o = n(290)
      , a = [].slice
      , s = function(t) {
        return function(e, n) {
            var i = arguments.length > 2
              , r = i ? a.call(arguments, 2) : void 0;
            return t(i ? function() {
                ("function" == typeof e ? e : Function(e)).apply(this, r)
            }
            : e, n)
        }
    };
    i({
        global: !0,
        bind: !0,
        forced: /MSIE .\./.test(o)
    }, {
        setTimeout: s(r.setTimeout),
        setInterval: s(r.setInterval)
    })
}
, function(t, e, n) {
    "use strict";
    n(470);
    var i, r = n(5), o = n(43), a = n(471), s = n(34), c = n(353), l = n(98), u = n(192), d = n(58), p = n(472), h = n(473), f = n(291).codeAt, m = n(662), g = n(162), v = n(475), y = n(110), b = s.URL, w = v.URLSearchParams, S = v.getState, x = y.set, M = y.getterFor("URL"), E = Math.floor, C = Math.pow, A = /[A-Za-z]/, T = /[\d+-.A-Za-z]/, O = /\d/, _ = /^(0x|0X)/, P = /^[0-7]+$/, I = /^\d+$/, k = /^[\dA-Fa-f]+$/, D = /[\u0000\u0009\u000A\u000D #%/:?@[\\]]/, R = /[\u0000\u0009\u000A\u000D #/:?@[\\]]/, L = /^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g, N = /[\u0009\u000A\u000D]/g, j = function(t, e) {
        var n, i, r;
        if ("[" == e.charAt(0)) {
            if ("]" != e.charAt(e.length - 1))
                return "Invalid host";
            if (!(n = F(e.slice(1, -1))))
                return "Invalid host";
            t.host = n
        } else if (X(t)) {
            if (e = m(e),
            D.test(e))
                return "Invalid host";
            if (null === (n = V(e)))
                return "Invalid host";
            t.host = n
        } else {
            if (R.test(e))
                return "Invalid host";
            for (n = "",
            i = h(e),
            r = 0; r < i.length; r++)
                n += W(i[r], B);
            t.host = n
        }
    }, V = function(t) {
        var e, n, i, r, o, a, s, c = t.split(".");
        if (c.length && "" == c[c.length - 1] && c.pop(),
        (e = c.length) > 4)
            return t;
        for (n = [],
        i = 0; i < e; i++) {
            if ("" == (r = c[i]))
                return t;
            if (o = 10,
            r.length > 1 && "0" == r.charAt(0) && (o = _.test(r) ? 16 : 8,
            r = r.slice(8 == o ? 1 : 2)),
            "" === r)
                a = 0;
            else {
                if (!(10 == o ? I : 8 == o ? P : k).test(r))
                    return t;
                a = parseInt(r, o)
            }
            n.push(a)
        }
        for (i = 0; i < e; i++)
            if (a = n[i],
            i == e - 1) {
                if (a >= C(256, 5 - e))
                    return null
            } else if (a > 255)
                return null;
        for (s = n.pop(),
        i = 0; i < n.length; i++)
            s += n[i] * C(256, 3 - i);
        return s
    }, F = function(t) {
        var e, n, i, r, o, a, s, c = [0, 0, 0, 0, 0, 0, 0, 0], l = 0, u = null, d = 0, p = function() {
            return t.charAt(d)
        };
        if (":" == p()) {
            if (":" != t.charAt(1))
                return;
            d += 2,
            u = ++l
        }
        for (; p(); ) {
            if (8 == l)
                return;
            if (":" != p()) {
                for (e = n = 0; n < 4 && k.test(p()); )
                    e = 16 * e + parseInt(p(), 16),
                    d++,
                    n++;
                if ("." == p()) {
                    if (0 == n)
                        return;
                    if (d -= n,
                    l > 6)
                        return;
                    for (i = 0; p(); ) {
                        if (r = null,
                        i > 0) {
                            if (!("." == p() && i < 4))
                                return;
                            d++
                        }
                        if (!O.test(p()))
                            return;
                        for (; O.test(p()); ) {
                            if (o = parseInt(p(), 10),
                            null === r)
                                r = o;
                            else {
                                if (0 == r)
                                    return;
                                r = 10 * r + o
                            }
                            if (r > 255)
                                return;
                            d++
                        }
                        c[l] = 256 * c[l] + r,
                        2 != ++i && 4 != i || l++
                    }
                    if (4 != i)
                        return;
                    break
                }
                if (":" == p()) {
                    if (d++,
                    !p())
                        return
                } else if (p())
                    return;
                c[l++] = e
            } else {
                if (null !== u)
                    return;
                d++,
                u = ++l
            }
        }
        if (null !== u)
            for (a = l - u,
            l = 7; 0 != l && a > 0; )
                s = c[l],
                c[l--] = c[u + a - 1],
                c[u + --a] = s;
        else if (8 != l)
            return;
        return c
    }, U = function(t) {
        var e, n, i, r;
        if ("number" == typeof t) {
            for (e = [],
            n = 0; n < 4; n++)
                e.unshift(t % 256),
                t = E(t / 256);
            return e.join(".")
        }
        if ("object" == typeof t) {
            for (e = "",
            i = function(t) {
                for (var e = null, n = 1, i = null, r = 0, o = 0; o < 8; o++)
                    0 !== t[o] ? (r > n && (e = i,
                    n = r),
                    i = null,
                    r = 0) : (null === i && (i = o),
                    ++r);
                return r > n && (e = i,
                n = r),
                e
            }(t),
            n = 0; n < 8; n++)
                r && 0 === t[n] || (r && (r = !1),
                i === n ? (e += n ? ":" : "::",
                r = !0) : (e += t[n].toString(16),
                n < 7 && (e += ":")));
            return "[" + e + "]"
        }
        return t
    }, B = {}, z = p({}, B, {
        " ": 1,
        '"': 1,
        "<": 1,
        ">": 1,
        "`": 1
    }), G = p({}, z, {
        "#": 1,
        "?": 1,
        "{": 1,
        "}": 1
    }), H = p({}, G, {
        "/": 1,
        ":": 1,
        ";": 1,
        "=": 1,
        "@": 1,
        "[": 1,
        "\\": 1,
        "]": 1,
        "^": 1,
        "|": 1
    }), W = function(t, e) {
        var n = f(t, 0);
        return n > 32 && n < 127 && !d(e, t) ? t : encodeURIComponent(t)
    }, q = {
        ftp: 21,
        file: null,
        http: 80,
        https: 443,
        ws: 80,
        wss: 443
    }, X = function(t) {
        return d(q, t.scheme)
    }, Y = function(t) {
        return "" != t.username || "" != t.password
    }, K = function(t) {
        return !t.host || t.cannotBeABaseURL || "file" == t.scheme
    }, Z = function(t, e) {
        var n;
        return 2 == t.length && A.test(t.charAt(0)) && (":" == (n = t.charAt(1)) || !e && "|" == n)
    }, J = function(t) {
        var e;
        return t.length > 1 && Z(t.slice(0, 2)) && (2 == t.length || "/" === (e = t.charAt(2)) || "\\" === e || "?" === e || "#" === e)
    }, Q = function(t) {
        var e = t.path
          , n = e.length;
        !n || "file" == t.scheme && 1 == n && Z(e[0], !0) || e.pop()
    }, $ = function(t) {
        return "." === t || "%2e" === t.toLowerCase()
    }, tt = {}, et = {}, nt = {}, it = {}, rt = {}, ot = {}, at = {}, st = {}, ct = {}, lt = {}, ut = {}, dt = {}, pt = {}, ht = {}, ft = {}, mt = {}, gt = {}, vt = {}, yt = {}, bt = {}, wt = {}, St = function(t, e, n, r) {
        var o, a, s, c, l, u = n || tt, p = 0, f = "", m = !1, g = !1, v = !1;
        for (n || (t.scheme = "",
        t.username = "",
        t.password = "",
        t.host = null,
        t.port = null,
        t.path = [],
        t.query = null,
        t.fragment = null,
        t.cannotBeABaseURL = !1,
        e = e.replace(L, "")),
        e = e.replace(N, ""),
        o = h(e); p <= o.length; ) {
            switch (a = o[p],
            u) {
            case tt:
                if (!a || !A.test(a)) {
                    if (n)
                        return "Invalid scheme";
                    u = nt;
                    continue
                }
                f += a.toLowerCase(),
                u = et;
                break;
            case et:
                if (a && (T.test(a) || "+" == a || "-" == a || "." == a))
                    f += a.toLowerCase();
                else {
                    if (":" != a) {
                        if (n)
                            return "Invalid scheme";
                        f = "",
                        u = nt,
                        p = 0;
                        continue
                    }
                    if (n && (X(t) != d(q, f) || "file" == f && (Y(t) || null !== t.port) || "file" == t.scheme && !t.host))
                        return;
                    if (t.scheme = f,
                    n)
                        return void (X(t) && q[t.scheme] == t.port && (t.port = null));
                    f = "",
                    "file" == t.scheme ? u = ht : X(t) && r && r.scheme == t.scheme ? u = it : X(t) ? u = st : "/" == o[p + 1] ? (u = rt,
                    p++) : (t.cannotBeABaseURL = !0,
                    t.path.push(""),
                    u = yt)
                }
                break;
            case nt:
                if (!r || r.cannotBeABaseURL && "#" != a)
                    return "Invalid scheme";
                if (r.cannotBeABaseURL && "#" == a) {
                    t.scheme = r.scheme,
                    t.path = r.path.slice(),
                    t.query = r.query,
                    t.fragment = "",
                    t.cannotBeABaseURL = !0,
                    u = wt;
                    break
                }
                u = "file" == r.scheme ? ht : ot;
                continue;
            case it:
                if ("/" != a || "/" != o[p + 1]) {
                    u = ot;
                    continue
                }
                u = ct,
                p++;
                break;
            case rt:
                if ("/" == a) {
                    u = lt;
                    break
                }
                u = vt;
                continue;
            case ot:
                if (t.scheme = r.scheme,
                a == i)
                    t.username = r.username,
                    t.password = r.password,
                    t.host = r.host,
                    t.port = r.port,
                    t.path = r.path.slice(),
                    t.query = r.query;
                else if ("/" == a || "\\" == a && X(t))
                    u = at;
                else if ("?" == a)
                    t.username = r.username,
                    t.password = r.password,
                    t.host = r.host,
                    t.port = r.port,
                    t.path = r.path.slice(),
                    t.query = "",
                    u = bt;
                else {
                    if ("#" != a) {
                        t.username = r.username,
                        t.password = r.password,
                        t.host = r.host,
                        t.port = r.port,
                        t.path = r.path.slice(),
                        t.path.pop(),
                        u = vt;
                        continue
                    }
                    t.username = r.username,
                    t.password = r.password,
                    t.host = r.host,
                    t.port = r.port,
                    t.path = r.path.slice(),
                    t.query = r.query,
                    t.fragment = "",
                    u = wt
                }
                break;
            case at:
                if (!X(t) || "/" != a && "\\" != a) {
                    if ("/" != a) {
                        t.username = r.username,
                        t.password = r.password,
                        t.host = r.host,
                        t.port = r.port,
                        u = vt;
                        continue
                    }
                    u = lt
                } else
                    u = ct;
                break;
            case st:
                if (u = ct,
                "/" != a || "/" != f.charAt(p + 1))
                    continue;
                p++;
                break;
            case ct:
                if ("/" != a && "\\" != a) {
                    u = lt;
                    continue
                }
                break;
            case lt:
                if ("@" == a) {
                    m && (f = "%40" + f),
                    m = !0,
                    s = h(f);
                    for (var y = 0; y < s.length; y++) {
                        var b = s[y];
                        if (":" != b || v) {
                            var w = W(b, H);
                            v ? t.password += w : t.username += w
                        } else
                            v = !0
                    }
                    f = ""
                } else if (a == i || "/" == a || "?" == a || "#" == a || "\\" == a && X(t)) {
                    if (m && "" == f)
                        return "Invalid authority";
                    p -= h(f).length + 1,
                    f = "",
                    u = ut
                } else
                    f += a;
                break;
            case ut:
            case dt:
                if (n && "file" == t.scheme) {
                    u = mt;
                    continue
                }
                if (":" != a || g) {
                    if (a == i || "/" == a || "?" == a || "#" == a || "\\" == a && X(t)) {
                        if (X(t) && "" == f)
                            return "Invalid host";
                        if (n && "" == f && (Y(t) || null !== t.port))
                            return;
                        if (c = j(t, f))
                            return c;
                        if (f = "",
                        u = gt,
                        n)
                            return;
                        continue
                    }
                    "[" == a ? g = !0 : "]" == a && (g = !1),
                    f += a
                } else {
                    if ("" == f)
                        return "Invalid host";
                    if (c = j(t, f))
                        return c;
                    if (f = "",
                    u = pt,
                    n == dt)
                        return
                }
                break;
            case pt:
                if (!O.test(a)) {
                    if (a == i || "/" == a || "?" == a || "#" == a || "\\" == a && X(t) || n) {
                        if ("" != f) {
                            var S = parseInt(f, 10);
                            if (S > 65535)
                                return "Invalid port";
                            t.port = X(t) && S === q[t.scheme] ? null : S,
                            f = ""
                        }
                        if (n)
                            return;
                        u = gt;
                        continue
                    }
                    return "Invalid port"
                }
                f += a;
                break;
            case ht:
                if (t.scheme = "file",
                "/" == a || "\\" == a)
                    u = ft;
                else {
                    if (!r || "file" != r.scheme) {
                        u = vt;
                        continue
                    }
                    if (a == i)
                        t.host = r.host,
                        t.path = r.path.slice(),
                        t.query = r.query;
                    else if ("?" == a)
                        t.host = r.host,
                        t.path = r.path.slice(),
                        t.query = "",
                        u = bt;
                    else {
                        if ("#" != a) {
                            J(o.slice(p).join("")) || (t.host = r.host,
                            t.path = r.path.slice(),
                            Q(t)),
                            u = vt;
                            continue
                        }
                        t.host = r.host,
                        t.path = r.path.slice(),
                        t.query = r.query,
                        t.fragment = "",
                        u = wt
                    }
                }
                break;
            case ft:
                if ("/" == a || "\\" == a) {
                    u = mt;
                    break
                }
                r && "file" == r.scheme && !J(o.slice(p).join("")) && (Z(r.path[0], !0) ? t.path.push(r.path[0]) : t.host = r.host),
                u = vt;
                continue;
            case mt:
                if (a == i || "/" == a || "\\" == a || "?" == a || "#" == a) {
                    if (!n && Z(f))
                        u = vt;
                    else if ("" == f) {
                        if (t.host = "",
                        n)
                            return;
                        u = gt
                    } else {
                        if (c = j(t, f))
                            return c;
                        if ("localhost" == t.host && (t.host = ""),
                        n)
                            return;
                        f = "",
                        u = gt
                    }
                    continue
                }
                f += a;
                break;
            case gt:
                if (X(t)) {
                    if (u = vt,
                    "/" != a && "\\" != a)
                        continue
                } else if (n || "?" != a)
                    if (n || "#" != a) {
                        if (a != i && (u = vt,
                        "/" != a))
                            continue
                    } else
                        t.fragment = "",
                        u = wt;
                else
                    t.query = "",
                    u = bt;
                break;
            case vt:
                if (a == i || "/" == a || "\\" == a && X(t) || !n && ("?" == a || "#" == a)) {
                    if (".." === (l = (l = f).toLowerCase()) || "%2e." === l || ".%2e" === l || "%2e%2e" === l ? (Q(t),
                    "/" == a || "\\" == a && X(t) || t.path.push("")) : $(f) ? "/" == a || "\\" == a && X(t) || t.path.push("") : ("file" == t.scheme && !t.path.length && Z(f) && (t.host && (t.host = ""),
                    f = f.charAt(0) + ":"),
                    t.path.push(f)),
                    f = "",
                    "file" == t.scheme && (a == i || "?" == a || "#" == a))
                        for (; t.path.length > 1 && "" === t.path[0]; )
                            t.path.shift();
                    "?" == a ? (t.query = "",
                    u = bt) : "#" == a && (t.fragment = "",
                    u = wt)
                } else
                    f += W(a, G);
                break;
            case yt:
                "?" == a ? (t.query = "",
                u = bt) : "#" == a ? (t.fragment = "",
                u = wt) : a != i && (t.path[0] += W(a, B));
                break;
            case bt:
                n || "#" != a ? a != i && ("'" == a && X(t) ? t.query += "%27" : t.query += "#" == a ? "%23" : W(a, B)) : (t.fragment = "",
                u = wt);
                break;
            case wt:
                a != i && (t.fragment += W(a, z))
            }
            p++
        }
    }, xt = function(t) {
        var e, n, i = u(this, xt, "URL"), r = arguments.length > 1 ? arguments[1] : void 0, a = String(t), s = x(i, {
            type: "URL"
        });
        if (void 0 !== r)
            if (r instanceof xt)
                e = M(r);
            else if (n = St(e = {}, String(r)))
                throw TypeError(n);
        if (n = St(s, a, null, e))
            throw TypeError(n);
        var c = s.searchParams = new w
          , l = S(c);
        l.updateSearchParams(s.query),
        l.updateURL = function() {
            s.query = String(c) || null
        }
        ,
        o || (i.href = Et.call(i),
        i.origin = Ct.call(i),
        i.protocol = At.call(i),
        i.username = Tt.call(i),
        i.password = Ot.call(i),
        i.host = _t.call(i),
        i.hostname = Pt.call(i),
        i.port = It.call(i),
        i.pathname = kt.call(i),
        i.search = Dt.call(i),
        i.searchParams = Rt.call(i),
        i.hash = Lt.call(i))
    }, Mt = xt.prototype, Et = function() {
        var t = M(this)
          , e = t.scheme
          , n = t.username
          , i = t.password
          , r = t.host
          , o = t.port
          , a = t.path
          , s = t.query
          , c = t.fragment
          , l = e + ":";
        return null !== r ? (l += "//",
        Y(t) && (l += n + (i ? ":" + i : "") + "@"),
        l += U(r),
        null !== o && (l += ":" + o)) : "file" == e && (l += "//"),
        l += t.cannotBeABaseURL ? a[0] : a.length ? "/" + a.join("/") : "",
        null !== s && (l += "?" + s),
        null !== c && (l += "#" + c),
        l
    }, Ct = function() {
        var t = M(this)
          , e = t.scheme
          , n = t.port;
        if ("blob" == e)
            try {
                return new URL(e.path[0]).origin
            } catch (t) {
                return "null"
            }
        return "file" != e && X(t) ? e + "://" + U(t.host) + (null !== n ? ":" + n : "") : "null"
    }, At = function() {
        return M(this).scheme + ":"
    }, Tt = function() {
        return M(this).username
    }, Ot = function() {
        return M(this).password
    }, _t = function() {
        var t = M(this)
          , e = t.host
          , n = t.port;
        return null === e ? "" : null === n ? U(e) : U(e) + ":" + n
    }, Pt = function() {
        var t = M(this).host;
        return null === t ? "" : U(t)
    }, It = function() {
        var t = M(this).port;
        return null === t ? "" : String(t)
    }, kt = function() {
        var t = M(this)
          , e = t.path;
        return t.cannotBeABaseURL ? e[0] : e.length ? "/" + e.join("/") : ""
    }, Dt = function() {
        var t = M(this).query;
        return t ? "?" + t : ""
    }, Rt = function() {
        return M(this).searchParams
    }, Lt = function() {
        var t = M(this).fragment;
        return t ? "#" + t : ""
    }, Nt = function(t, e) {
        return {
            get: t,
            set: e,
            configurable: !0,
            enumerable: !0
        }
    };
    if (o && c(Mt, {
        href: Nt(Et, (function(t) {
            var e = M(this)
              , n = String(t)
              , i = St(e, n);
            if (i)
                throw TypeError(i);
            S(e.searchParams).updateSearchParams(e.query)
        }
        )),
        origin: Nt(Ct),
        protocol: Nt(At, (function(t) {
            var e = M(this);
            St(e, String(t) + ":", tt)
        }
        )),
        username: Nt(Tt, (function(t) {
            var e = M(this)
              , n = h(String(t));
            if (!K(e)) {
                e.username = "";
                for (var i = 0; i < n.length; i++)
                    e.username += W(n[i], H)
            }
        }
        )),
        password: Nt(Ot, (function(t) {
            var e = M(this)
              , n = h(String(t));
            if (!K(e)) {
                e.password = "";
                for (var i = 0; i < n.length; i++)
                    e.password += W(n[i], H)
            }
        }
        )),
        host: Nt(_t, (function(t) {
            var e = M(this);
            e.cannotBeABaseURL || St(e, String(t), ut)
        }
        )),
        hostname: Nt(Pt, (function(t) {
            var e = M(this);
            e.cannotBeABaseURL || St(e, String(t), dt)
        }
        )),
        port: Nt(It, (function(t) {
            var e = M(this);
            K(e) || ("" == (t = String(t)) ? e.port = null : St(e, t, pt))
        }
        )),
        pathname: Nt(kt, (function(t) {
            var e = M(this);
            e.cannotBeABaseURL || (e.path = [],
            St(e, t + "", gt))
        }
        )),
        search: Nt(Dt, (function(t) {
            var e = M(this);
            "" == (t = String(t)) ? e.query = null : ("?" == t.charAt(0) && (t = t.slice(1)),
            e.query = "",
            St(e, t, bt)),
            S(e.searchParams).updateSearchParams(e.query)
        }
        )),
        searchParams: Nt(Rt),
        hash: Nt(Lt, (function(t) {
            var e = M(this);
            "" != (t = String(t)) ? ("#" == t.charAt(0) && (t = t.slice(1)),
            e.fragment = "",
            St(e, t, wt)) : e.fragment = null
        }
        ))
    }),
    l(Mt, "toJSON", (function() {
        return Et.call(this)
    }
    ), {
        enumerable: !0
    }),
    l(Mt, "toString", (function() {
        return Et.call(this)
    }
    ), {
        enumerable: !0
    }),
    b) {
        var jt = b.createObjectURL
          , Vt = b.revokeObjectURL;
        jt && l(xt, "createObjectURL", (function(t) {
            return jt.apply(b, arguments)
        }
        )),
        Vt && l(xt, "revokeObjectURL", (function(t) {
            return Vt.apply(b, arguments)
        }
        ))
    }
    g(xt, "URL"),
    r({
        global: !0,
        forced: !a,
        sham: !o
    }, {
        URL: xt
    })
}
, function(t, e, n) {
    "use strict";
    var i = /[^\0-\u007E]/
      , r = /[.\u3002\uFF0E\uFF61]/g
      , o = "Overflow: input needs wider integers to process"
      , a = Math.floor
      , s = String.fromCharCode
      , c = function(t) {
        return t + 22 + 75 * (t < 26)
    }
      , l = function(t, e, n) {
        var i = 0;
        for (t = n ? a(t / 700) : t >> 1,
        t += a(t / e); t > 455; i += 36)
            t = a(t / 35);
        return a(i + 36 * t / (t + 38))
    }
      , u = function(t) {
        var e, n, i = [], r = (t = function(t) {
            for (var e = [], n = 0, i = t.length; n < i; ) {
                var r = t.charCodeAt(n++);
                if (r >= 55296 && r <= 56319 && n < i) {
                    var o = t.charCodeAt(n++);
                    56320 == (64512 & o) ? e.push(((1023 & r) << 10) + (1023 & o) + 65536) : (e.push(r),
                    n--)
                } else
                    e.push(r)
            }
            return e
        }(t)).length, u = 128, d = 0, p = 72;
        for (e = 0; e < t.length; e++)
            (n = t[e]) < 128 && i.push(s(n));
        var h = i.length
          , f = h;
        for (h && i.push("-"); f < r; ) {
            var m = 2147483647;
            for (e = 0; e < t.length; e++)
                (n = t[e]) >= u && n < m && (m = n);
            var g = f + 1;
            if (m - u > a((2147483647 - d) / g))
                throw RangeError(o);
            for (d += (m - u) * g,
            u = m,
            e = 0; e < t.length; e++) {
                if ((n = t[e]) < u && ++d > 2147483647)
                    throw RangeError(o);
                if (n == u) {
                    for (var v = d, y = 36; ; y += 36) {
                        var b = y <= p ? 1 : y >= p + 26 ? 26 : y - p;
                        if (v < b)
                            break;
                        var w = v - b
                          , S = 36 - b;
                        i.push(s(c(b + w % S))),
                        v = a(w / S)
                    }
                    i.push(s(c(v))),
                    p = l(d, g, f == h),
                    d = 0,
                    ++f
                }
            }
            ++d,
            ++u
        }
        return i.join("")
    };
    t.exports = function(t) {
        var e, n, o = [], a = t.toLowerCase().replace(r, ".").split(".");
        for (e = 0; e < a.length; e++)
            n = a[e],
            o.push(i.test(n) ? "xn--" + u(n) : n);
        return o.join(".")
    }
}
, function(t, e, n) {
    var i = n(29)
      , r = n(241);
    t.exports = function(t) {
        var e = r(t);
        if ("function" != typeof e)
            throw TypeError(String(t) + " is not iterable");
        return i(e.call(t))
    }
}
, function(t, e, n) {
    "use strict";
    n(5)({
        target: "URL",
        proto: !0,
        enumerable: !0
    }, {
        toJSON: function() {
            return URL.prototype.toString.call(this)
        }
    })
}
, function(t, e) {
    [Element.prototype, CharacterData.prototype, DocumentType.prototype].filter(Boolean).forEach((function(t) {
        t.hasOwnProperty("remove") || Object.defineProperty(t, "remove", {
            configurable: !0,
            enumerable: !0,
            writable: !0,
            value: function() {
                this.parentNode && this.parentNode.removeChild(this)
            }
        })
    }
    ))
}
, function(t, e, n) {
    "use strict";
    n.r(e),
    n.d(e, "Headers", (function() {
        return f
    }
    )),
    n.d(e, "Request", (function() {
        return S
    }
    )),
    n.d(e, "Response", (function() {
        return M
    }
    )),
    n.d(e, "DOMException", (function() {
        return C
    }
    )),
    n.d(e, "fetch", (function() {
        return A
    }
    ));
    var i = "undefined" != typeof self ? self : void 0
      , r = "URLSearchParams"in i
      , o = "Symbol"in i && "iterator"in Symbol
      , a = "FileReader"in i && "Blob"in i && function() {
        try {
            return new Blob,
            !0
        } catch (t) {
            return !1
        }
    }()
      , s = "FormData"in i
      , c = "ArrayBuffer"in i;
    if (c)
        var l = ["[object Int8Array]", "[object Uint8Array]", "[object Uint8ClampedArray]", "[object Int16Array]", "[object Uint16Array]", "[object Int32Array]", "[object Uint32Array]", "[object Float32Array]", "[object Float64Array]"]
          , u = ArrayBuffer.isView || function(t) {
            return t && l.indexOf(Object.prototype.toString.call(t)) > -1
        }
        ;
    function d(t) {
        if ("string" != typeof t && (t = String(t)),
        /[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(t) || "" === t)
            throw new TypeError("Invalid character in header field name");
        return t.toLowerCase()
    }
    function p(t) {
        return "string" != typeof t && (t = String(t)),
        t
    }
    function h(t) {
        var e = {
            next: function() {
                var e = t.shift();
                return {
                    done: void 0 === e,
                    value: e
                }
            }
        };
        return o && (e[Symbol.iterator] = function() {
            return e
        }
        ),
        e
    }
    function f(t) {
        this.map = {},
        t instanceof f ? t.forEach((function(t, e) {
            this.append(e, t)
        }
        ), this) : Array.isArray(t) ? t.forEach((function(t) {
            this.append(t[0], t[1])
        }
        ), this) : t && Object.getOwnPropertyNames(t).forEach((function(e) {
            this.append(e, t[e])
        }
        ), this)
    }
    function m(t) {
        if (t.bodyUsed)
            return Promise.reject(new TypeError("Already read"));
        t.bodyUsed = !0
    }
    function g(t) {
        return new Promise((function(e, n) {
            t.onload = function() {
                e(t.result)
            }
            ,
            t.onerror = function() {
                n(t.error)
            }
        }
        ))
    }
    function v(t) {
        var e = new FileReader
          , n = g(e);
        return e.readAsArrayBuffer(t),
        n
    }
    function y(t) {
        if (t.slice)
            return t.slice(0);
        var e = new Uint8Array(t.byteLength);
        return e.set(new Uint8Array(t)),
        e.buffer
    }
    function b() {
        return this.bodyUsed = !1,
        this._initBody = function(t) {
            var e;
            this.bodyUsed = this.bodyUsed,
            this._bodyInit = t,
            t ? "string" == typeof t ? this._bodyText = t : a && Blob.prototype.isPrototypeOf(t) ? this._bodyBlob = t : s && FormData.prototype.isPrototypeOf(t) ? this._bodyFormData = t : r && URLSearchParams.prototype.isPrototypeOf(t) ? this._bodyText = t.toString() : c && a && ((e = t) && DataView.prototype.isPrototypeOf(e)) ? (this._bodyArrayBuffer = y(t.buffer),
            this._bodyInit = new Blob([this._bodyArrayBuffer])) : c && (ArrayBuffer.prototype.isPrototypeOf(t) || u(t)) ? this._bodyArrayBuffer = y(t) : this._bodyText = t = Object.prototype.toString.call(t) : this._bodyText = "",
            this.headers.get("content-type") || ("string" == typeof t ? this.headers.set("content-type", "text/plain;charset=UTF-8") : this._bodyBlob && this._bodyBlob.type ? this.headers.set("content-type", this._bodyBlob.type) : r && URLSearchParams.prototype.isPrototypeOf(t) && this.headers.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8"))
        }
        ,
        a && (this.blob = function() {
            var t = m(this);
            if (t)
                return t;
            if (this._bodyBlob)
                return Promise.resolve(this._bodyBlob);
            if (this._bodyArrayBuffer)
                return Promise.resolve(new Blob([this._bodyArrayBuffer]));
            if (this._bodyFormData)
                throw new Error("could not read FormData body as blob");
            return Promise.resolve(new Blob([this._bodyText]))
        }
        ,
        this.arrayBuffer = function() {
            return this._bodyArrayBuffer ? m(this) || Promise.resolve(this._bodyArrayBuffer) : this.blob().then(v)
        }
        ),
        this.text = function() {
            var t, e, n, i = m(this);
            if (i)
                return i;
            if (this._bodyBlob)
                return t = this._bodyBlob,
                e = new FileReader,
                n = g(e),
                e.readAsText(t),
                n;
            if (this._bodyArrayBuffer)
                return Promise.resolve(function(t) {
                    for (var e = new Uint8Array(t), n = new Array(e.length), i = 0; i < e.length; i++)
                        n[i] = String.fromCharCode(e[i]);
                    return n.join("")
                }(this._bodyArrayBuffer));
            if (this._bodyFormData)
                throw new Error("could not read FormData body as text");
            return Promise.resolve(this._bodyText)
        }
        ,
        s && (this.formData = function() {
            return this.text().then(x)
        }
        ),
        this.json = function() {
            return this.text().then(JSON.parse)
        }
        ,
        this
    }
    f.prototype.append = function(t, e) {
        t = d(t),
        e = p(e);
        var n = this.map[t];
        this.map[t] = n ? n + ", " + e : e
    }
    ,
    f.prototype.delete = function(t) {
        delete this.map[d(t)]
    }
    ,
    f.prototype.get = function(t) {
        return t = d(t),
        this.has(t) ? this.map[t] : null
    }
    ,
    f.prototype.has = function(t) {
        return this.map.hasOwnProperty(d(t))
    }
    ,
    f.prototype.set = function(t, e) {
        this.map[d(t)] = p(e)
    }
    ,
    f.prototype.forEach = function(t, e) {
        for (var n in this.map)
            this.map.hasOwnProperty(n) && t.call(e, this.map[n], n, this)
    }
    ,
    f.prototype.keys = function() {
        var t = [];
        return this.forEach((function(e, n) {
            t.push(n)
        }
        )),
        h(t)
    }
    ,
    f.prototype.values = function() {
        var t = [];
        return this.forEach((function(e) {
            t.push(e)
        }
        )),
        h(t)
    }
    ,
    f.prototype.entries = function() {
        var t = [];
        return this.forEach((function(e, n) {
            t.push([n, e])
        }
        )),
        h(t)
    }
    ,
    o && (f.prototype[Symbol.iterator] = f.prototype.entries);
    var w = ["DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT"];
    function S(t, e) {
        var n, i, r = (e = e || {}).body;
        if (t instanceof S) {
            if (t.bodyUsed)
                throw new TypeError("Already read");
            this.url = t.url,
            this.credentials = t.credentials,
            e.headers || (this.headers = new f(t.headers)),
            this.method = t.method,
            this.mode = t.mode,
            this.signal = t.signal,
            r || null == t._bodyInit || (r = t._bodyInit,
            t.bodyUsed = !0)
        } else
            this.url = String(t);
        if (this.credentials = e.credentials || this.credentials || "same-origin",
        !e.headers && this.headers || (this.headers = new f(e.headers)),
        this.method = (n = e.method || this.method || "GET",
        i = n.toUpperCase(),
        w.indexOf(i) > -1 ? i : n),
        this.mode = e.mode || this.mode || null,
        this.signal = e.signal || this.signal,
        this.referrer = null,
        ("GET" === this.method || "HEAD" === this.method) && r)
            throw new TypeError("Body not allowed for GET or HEAD requests");
        if (this._initBody(r),
        !("GET" !== this.method && "HEAD" !== this.method || "no-store" !== e.cache && "no-cache" !== e.cache)) {
            var o = /([?&])_=[^&]*/;
            if (o.test(this.url))
                this.url = this.url.replace(o, "$1_=" + (new Date).getTime());
            else {
                this.url += (/\?/.test(this.url) ? "&" : "?") + "_=" + (new Date).getTime()
            }
        }
    }
    function x(t) {
        var e = new FormData;
        return t.trim().split("&").forEach((function(t) {
            if (t) {
                var n = t.split("=")
                  , i = n.shift().replace(/\+/g, " ")
                  , r = n.join("=").replace(/\+/g, " ");
                e.append(decodeURIComponent(i), decodeURIComponent(r))
            }
        }
        )),
        e
    }
    function M(t, e) {
        e || (e = {}),
        this.type = "default",
        this.status = void 0 === e.status ? 200 : e.status,
        this.ok = this.status >= 200 && this.status < 300,
        this.statusText = "statusText"in e ? e.statusText : "",
        this.headers = new f(e.headers),
        this.url = e.url || "",
        this._initBody(t)
    }
    S.prototype.clone = function() {
        return new S(this,{
            body: this._bodyInit
        })
    }
    ,
    b.call(S.prototype),
    b.call(M.prototype),
    M.prototype.clone = function() {
        return new M(this._bodyInit,{
            status: this.status,
            statusText: this.statusText,
            headers: new f(this.headers),
            url: this.url
        })
    }
    ,
    M.error = function() {
        var t = new M(null,{
            status: 0,
            statusText: ""
        });
        return t.type = "error",
        t
    }
    ;
    var E = [301, 302, 303, 307, 308];
    M.redirect = function(t, e) {
        if (-1 === E.indexOf(e))
            throw new RangeError("Invalid status code");
        return new M(null,{
            status: e,
            headers: {
                location: t
            }
        })
    }
    ;
    var C = i.DOMException;
    function A(t, e) {
        return new Promise((function(n, r) {
            var o = new S(t,e);
            if (o.signal && o.signal.aborted)
                return r(new C("Aborted","AbortError"));
            var s = new XMLHttpRequest;
            function l() {
                s.abort()
            }
            s.onload = function() {
                var t, e, i = {
                    status: s.status,
                    statusText: s.statusText,
                    headers: (t = s.getAllResponseHeaders() || "",
                    e = new f,
                    t.replace(/\r?\n[\t ]+/g, " ").split(/\r?\n/).forEach((function(t) {
                        var n = t.split(":")
                          , i = n.shift().trim();
                        if (i) {
                            var r = n.join(":").trim();
                            e.append(i, r)
                        }
                    }
                    )),
                    e)
                };
                i.url = "responseURL"in s ? s.responseURL : i.headers.get("X-Request-URL");
                var r = "response"in s ? s.response : s.responseText;
                setTimeout((function() {
                    n(new M(r,i))
                }
                ), 0)
            }
            ,
            s.onerror = function() {
                setTimeout((function() {
                    r(new TypeError("Network request failed"))
                }
                ), 0)
            }
            ,
            s.ontimeout = function() {
                setTimeout((function() {
                    r(new TypeError("Network request failed"))
                }
                ), 0)
            }
            ,
            s.onabort = function() {
                setTimeout((function() {
                    r(new C("Aborted","AbortError"))
                }
                ), 0)
            }
            ,
            s.open(o.method, function(t) {
                try {
                    return "" === t && i.location.href ? i.location.href : t
                } catch (e) {
                    return t
                }
            }(o.url), !0),
            "include" === o.credentials ? s.withCredentials = !0 : "omit" === o.credentials && (s.withCredentials = !1),
            "responseType"in s && (a ? s.responseType = "blob" : c && o.headers.get("Content-Type") && -1 !== o.headers.get("Content-Type").indexOf("application/octet-stream") && (s.responseType = "arraybuffer")),
            o.headers.forEach((function(t, e) {
                s.setRequestHeader(e, t)
            }
            )),
            o.signal && (o.signal.addEventListener("abort", l),
            s.onreadystatechange = function() {
                4 === s.readyState && o.signal.removeEventListener("abort", l)
            }
            ),
            s.send(void 0 === o._bodyInit ? null : o._bodyInit)
        }
        ))
    }
    "function" != typeof C && ((C = function(t, e) {
        this.message = t,
        this.name = e;
        var n = Error(t);
        this.stack = n.stack
    }
    ).prototype = Object.create(Error.prototype),
    C.prototype.constructor = C),
    A.polyfill = !0,
    i.fetch || (i.fetch = A,
    i.Headers = f,
    i.Request = S,
    i.Response = M)
}
, function(t, e, n) {
    var i = n(668);
    n(669),
    n(670),
    n(671),
    n(672),
    n(673),
    n(674),
    n(675),
    n(676),
    n(677),
    t.exports = i
}
, function(t, e, n) {
    n(476),
    n(477),
    n(479),
    n(480),
    n(481),
    n(482),
    n(483),
    n(484),
    n(485),
    n(486),
    n(487),
    n(488),
    n(489);
    var i = n(286);
    t.exports = i.Reflect
}
, function(t, e, n) {
    var i = n(5)
      , r = n(163)
      , o = n(29)
      , a = r.toKey
      , s = r.set;
    i({
        target: "Reflect",
        stat: !0
    }, {
        defineMetadata: function(t, e, n) {
            var i = arguments.length < 4 ? void 0 : a(arguments[3]);
            s(t, e, o(n), i)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(163)
      , o = n(29)
      , a = r.toKey
      , s = r.getMap
      , c = r.store;
    i({
        target: "Reflect",
        stat: !0
    }, {
        deleteMetadata: function(t, e) {
            var n = arguments.length < 3 ? void 0 : a(arguments[2])
              , i = s(o(e), n, !1);
            if (void 0 === i || !i.delete(t))
                return !1;
            if (i.size)
                return !0;
            var r = c.get(e);
            return r.delete(n),
            !!r.size || c.delete(e)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(163)
      , o = n(29)
      , a = n(99)
      , s = r.has
      , c = r.get
      , l = r.toKey
      , u = function(t, e, n) {
        if (s(t, e, n))
            return c(t, e, n);
        var i = a(e);
        return null !== i ? u(t, i, n) : void 0
    };
    i({
        target: "Reflect",
        stat: !0
    }, {
        getMetadata: function(t, e) {
            var n = arguments.length < 3 ? void 0 : l(arguments[2]);
            return u(t, o(e), n)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(494)
      , o = n(163)
      , a = n(29)
      , s = n(99)
      , c = n(245)
      , l = o.keys
      , u = o.toKey
      , d = function(t, e) {
        var n = l(t, e)
          , i = s(t);
        if (null === i)
            return n;
        var o, a, u = d(i, e);
        return u.length ? n.length ? (o = new r(n.concat(u)),
        c(o, (a = []).push, a),
        a) : u : n
    };
    i({
        target: "Reflect",
        stat: !0
    }, {
        getMetadataKeys: function(t) {
            var e = arguments.length < 2 ? void 0 : u(arguments[1]);
            return d(a(t), e)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(163)
      , o = n(29)
      , a = r.get
      , s = r.toKey;
    i({
        target: "Reflect",
        stat: !0
    }, {
        getOwnMetadata: function(t, e) {
            var n = arguments.length < 3 ? void 0 : s(arguments[2]);
            return a(t, o(e), n)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(163)
      , o = n(29)
      , a = r.keys
      , s = r.toKey;
    i({
        target: "Reflect",
        stat: !0
    }, {
        getOwnMetadataKeys: function(t) {
            var e = arguments.length < 2 ? void 0 : s(arguments[1]);
            return a(o(t), e)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(163)
      , o = n(29)
      , a = n(99)
      , s = r.has
      , c = r.toKey
      , l = function(t, e, n) {
        if (s(t, e, n))
            return !0;
        var i = a(e);
        return null !== i && l(t, i, n)
    };
    i({
        target: "Reflect",
        stat: !0
    }, {
        hasMetadata: function(t, e) {
            var n = arguments.length < 3 ? void 0 : c(arguments[2]);
            return l(t, o(e), n)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(163)
      , o = n(29)
      , a = r.has
      , s = r.toKey;
    i({
        target: "Reflect",
        stat: !0
    }, {
        hasOwnMetadata: function(t, e) {
            var n = arguments.length < 3 ? void 0 : s(arguments[2]);
            return a(t, o(e), n)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(163)
      , o = n(29)
      , a = r.toKey
      , s = r.set;
    i({
        target: "Reflect",
        stat: !0
    }, {
        metadata: function(t, e) {
            return function(n, i) {
                s(t, e, o(n), a(i))
            }
        }
    })
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    n(679),
    n(680),
    n(681),
    n(682),
    n(683),
    n(684),
    n(685),
    n(686),
    n(687),
    n(688),
    n(689),
    n(690),
    n(691),
    n(692),
    n(693),
    n(694),
    n(695),
    n(696),
    n(697),
    n(698),
    n(699),
    n(700),
    n(701),
    n(702),
    n(703),
    n(704),
    n(705),
    n(706),
    n(707),
    n(708),
    n(709),
    n(710),
    n(711),
    n(712),
    n(713),
    n(714),
    n(716),
    n(717),
    n(718),
    n(719),
    n(720),
    n(721),
    n(722),
    n(723),
    n(724),
    n(725),
    n(726),
    n(727),
    n(728),
    n(729),
    n(730),
    n(731),
    n(732),
    n(733),
    n(734),
    n(735),
    n(736),
    n(737),
    n(738),
    n(739),
    n(740),
    n(741),
    n(742),
    n(743),
    n(744),
    n(745),
    n(746),
    n(747),
    n(748),
    n(749),
    n(750),
    n(285),
    n(751),
    n(752),
    n(753),
    n(754),
    n(755),
    n(756),
    n(757),
    n(758),
    n(759),
    n(760),
    n(761),
    n(762),
    n(763),
    n(764),
    n(765),
    n(766),
    n(767),
    n(470),
    n(768),
    n(769),
    n(770),
    n(771),
    n(772),
    n(773),
    n(774),
    n(775),
    n(776),
    n(777),
    n(778),
    n(779),
    n(780),
    n(781),
    n(503),
    n(782),
    n(783),
    n(784),
    n(785),
    n(786),
    n(787),
    n(788),
    n(790),
    n(791),
    n(792),
    n(793),
    n(794),
    n(795),
    n(796),
    n(797),
    n(798),
    n(799),
    n(800),
    n(801),
    n(802),
    n(803),
    n(804),
    n(805),
    n(806),
    n(808),
    n(809),
    n(810),
    n(811),
    n(812),
    n(813),
    n(814),
    n(815),
    n(816),
    n(817),
    n(818),
    n(819),
    n(820),
    n(822),
    n(823),
    n(825),
    n(490),
    n(494),
    n(492),
    n(826),
    n(827),
    n(829),
    n(830),
    n(831),
    n(832),
    n(834),
    n(835),
    n(836),
    n(837),
    n(838),
    n(839),
    n(840),
    n(841),
    n(842),
    n(843),
    n(844),
    n(845),
    n(846),
    n(847),
    n(848),
    n(849),
    n(850),
    n(851),
    n(852),
    n(853),
    n(854),
    n(855),
    n(856),
    n(857),
    n(858),
    n(859),
    n(860),
    n(861),
    n(862),
    n(863),
    n(864),
    n(865),
    n(866),
    n(476),
    n(477),
    n(479),
    n(480),
    n(481),
    n(482),
    n(483),
    n(484),
    n(485),
    n(486),
    n(487),
    n(488),
    n(489)
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(34)
      , o = n(161)
      , a = n(158)
      , s = n(43)
      , c = n(352)
      , l = n(460)
      , u = n(18)
      , d = n(58)
      , p = n(189)
      , h = n(42)
      , f = n(29)
      , m = n(53)
      , g = n(109)
      , v = n(134)
      , y = n(173)
      , b = n(160)
      , w = n(237)
      , S = n(190)
      , x = n(495)
      , M = n(357)
      , E = n(82)
      , C = n(48)
      , A = n(288)
      , T = n(88)
      , O = n(98)
      , _ = n(284)
      , P = n(287)
      , I = n(239)
      , k = n(236)
      , D = n(45)
      , R = n(496)
      , L = n(100)
      , N = n(162)
      , j = n(110)
      , V = n(74).forEach
      , F = P("hidden")
      , U = D("toPrimitive")
      , B = j.set
      , z = j.getterFor("Symbol")
      , G = Object.prototype
      , H = r.Symbol
      , W = o("JSON", "stringify")
      , q = E.f
      , X = C.f
      , Y = x.f
      , K = A.f
      , Z = _("symbols")
      , J = _("op-symbols")
      , Q = _("string-to-symbol-registry")
      , $ = _("symbol-to-string-registry")
      , tt = _("wks")
      , et = r.QObject
      , nt = !et || !et.prototype || !et.prototype.findChild
      , it = s && u((function() {
        return 7 != b(X({}, "a", {
            get: function() {
                return X(this, "a", {
                    value: 7
                }).a
            }
        })).a
    }
    )) ? function(t, e, n) {
        var i = q(G, e);
        i && delete G[e],
        X(t, e, n),
        i && t !== G && X(G, e, i)
    }
    : X
      , rt = function(t, e) {
        var n = Z[t] = b(H.prototype);
        return B(n, {
            type: "Symbol",
            tag: t,
            description: e
        }),
        s || (n.description = e),
        n
    }
      , ot = l ? function(t) {
        return "symbol" == typeof t
    }
    : function(t) {
        return Object(t)instanceof H
    }
      , at = function(t, e, n) {
        t === G && at(J, e, n),
        f(t);
        var i = v(e, !0);
        return f(n),
        d(Z, i) ? (n.enumerable ? (d(t, F) && t[F][i] && (t[F][i] = !1),
        n = b(n, {
            enumerable: y(0, !1)
        })) : (d(t, F) || X(t, F, y(1, {})),
        t[F][i] = !0),
        it(t, i, n)) : X(t, i, n)
    }
      , st = function(t, e) {
        f(t);
        var n = g(e)
          , i = w(n).concat(dt(n));
        return V(i, (function(e) {
            s && !ct.call(n, e) || at(t, e, n[e])
        }
        )),
        t
    }
      , ct = function(t) {
        var e = v(t, !0)
          , n = K.call(this, e);
        return !(this === G && d(Z, e) && !d(J, e)) && (!(n || !d(this, e) || !d(Z, e) || d(this, F) && this[F][e]) || n)
    }
      , lt = function(t, e) {
        var n = g(t)
          , i = v(e, !0);
        if (n !== G || !d(Z, i) || d(J, i)) {
            var r = q(n, i);
            return !r || !d(Z, i) || d(n, F) && n[F][i] || (r.enumerable = !0),
            r
        }
    }
      , ut = function(t) {
        var e = Y(g(t))
          , n = [];
        return V(e, (function(t) {
            d(Z, t) || d(I, t) || n.push(t)
        }
        )),
        n
    }
      , dt = function(t) {
        var e = t === G
          , n = Y(e ? J : g(t))
          , i = [];
        return V(n, (function(t) {
            !d(Z, t) || e && !d(G, t) || i.push(Z[t])
        }
        )),
        i
    };
    (c || (O((H = function() {
        if (this instanceof H)
            throw TypeError("Symbol is not a constructor");
        var t = arguments.length && void 0 !== arguments[0] ? String(arguments[0]) : void 0
          , e = k(t)
          , n = function(t) {
            this === G && n.call(J, t),
            d(this, F) && d(this[F], e) && (this[F][e] = !1),
            it(this, e, y(1, t))
        };
        return s && nt && it(G, e, {
            configurable: !0,
            set: n
        }),
        rt(e, t)
    }
    ).prototype, "toString", (function() {
        return z(this).tag
    }
    )),
    O(H, "withoutSetter", (function(t) {
        return rt(k(t), t)
    }
    )),
    A.f = ct,
    C.f = at,
    E.f = lt,
    S.f = x.f = ut,
    M.f = dt,
    R.f = function(t) {
        return rt(D(t), t)
    }
    ,
    s && (X(H.prototype, "description", {
        configurable: !0,
        get: function() {
            return z(this).description
        }
    }),
    a || O(G, "propertyIsEnumerable", ct, {
        unsafe: !0
    }))),
    i({
        global: !0,
        wrap: !0,
        forced: !c,
        sham: !c
    }, {
        Symbol: H
    }),
    V(w(tt), (function(t) {
        L(t)
    }
    )),
    i({
        target: "Symbol",
        stat: !0,
        forced: !c
    }, {
        for: function(t) {
            var e = String(t);
            if (d(Q, e))
                return Q[e];
            var n = H(e);
            return Q[e] = n,
            $[n] = e,
            n
        },
        keyFor: function(t) {
            if (!ot(t))
                throw TypeError(t + " is not a symbol");
            if (d($, t))
                return $[t]
        },
        useSetter: function() {
            nt = !0
        },
        useSimple: function() {
            nt = !1
        }
    }),
    i({
        target: "Object",
        stat: !0,
        forced: !c,
        sham: !s
    }, {
        create: function(t, e) {
            return void 0 === e ? b(t) : st(b(t), e)
        },
        defineProperty: at,
        defineProperties: st,
        getOwnPropertyDescriptor: lt
    }),
    i({
        target: "Object",
        stat: !0,
        forced: !c
    }, {
        getOwnPropertyNames: ut,
        getOwnPropertySymbols: dt
    }),
    i({
        target: "Object",
        stat: !0,
        forced: u((function() {
            M.f(1)
        }
        ))
    }, {
        getOwnPropertySymbols: function(t) {
            return M.f(m(t))
        }
    }),
    W) && i({
        target: "JSON",
        stat: !0,
        forced: !c || u((function() {
            var t = H();
            return "[null]" != W([t]) || "{}" != W({
                a: t
            }) || "{}" != W(Object(t))
        }
        ))
    }, {
        stringify: function(t, e, n) {
            for (var i, r = [t], o = 1; arguments.length > o; )
                r.push(arguments[o++]);
            if (i = e,
            (h(e) || void 0 !== t) && !ot(t))
                return p(e) || (e = function(t, e) {
                    if ("function" == typeof i && (e = i.call(this, t, e)),
                    !ot(e))
                        return e
                }
                ),
                r[1] = e,
                W.apply(null, r)
        }
    });
    H.prototype[U] || T(H.prototype, U, H.prototype.valueOf),
    N(H, "Symbol"),
    I[F] = !0
}
, function(t, e, n) {
    n(100)("asyncIterator")
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(43)
      , o = n(34)
      , a = n(58)
      , s = n(42)
      , c = n(48).f
      , l = n(465)
      , u = o.Symbol;
    if (r && "function" == typeof u && (!("description"in u.prototype) || void 0 !== u().description)) {
        var d = {}
          , p = function() {
            var t = arguments.length < 1 || void 0 === arguments[0] ? void 0 : String(arguments[0])
              , e = this instanceof p ? new u(t) : void 0 === t ? u() : u(t);
            return "" === t && (d[e] = !0),
            e
        };
        l(p, u);
        var h = p.prototype = u.prototype;
        h.constructor = p;
        var f = h.toString
          , m = "Symbol(test)" == String(u("test"))
          , g = /^Symbol\((.*)\)[^)]+$/;
        c(h, "description", {
            configurable: !0,
            get: function() {
                var t = s(this) ? this.valueOf() : this
                  , e = f.call(t);
                if (a(d, t))
                    return "";
                var n = m ? e.slice(7, -1) : e.replace(g, "$1");
                return "" === n ? void 0 : n
            }
        }),
        i({
            global: !0,
            forced: !0
        }, {
            Symbol: p
        })
    }
}
, function(t, e, n) {
    n(100)("hasInstance")
}
, function(t, e, n) {
    n(100)("isConcatSpreadable")
}
, function(t, e, n) {
    n(100)("iterator")
}
, function(t, e, n) {
    n(100)("match")
}
, function(t, e, n) {
    n(100)("matchAll")
}
, function(t, e, n) {
    n(100)("replace")
}
, function(t, e, n) {
    n(100)("search")
}
, function(t, e, n) {
    n(100)("species")
}
, function(t, e, n) {
    n(100)("split")
}
, function(t, e, n) {
    n(100)("toPrimitive")
}
, function(t, e, n) {
    n(100)("toStringTag")
}
, function(t, e, n) {
    n(100)("unscopables")
}
, function(t, e, n) {
    var i = n(5)
      , r = n(472);
    i({
        target: "Object",
        stat: !0,
        forced: Object.assign !== r
    }, {
        assign: r
    })
}
, function(t, e, n) {
    n(5)({
        target: "Object",
        stat: !0,
        sham: !n(43)
    }, {
        create: n(160)
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(43);
    i({
        target: "Object",
        stat: !0,
        forced: !r,
        sham: !r
    }, {
        defineProperty: n(48).f
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(43);
    i({
        target: "Object",
        stat: !0,
        forced: !r,
        sham: !r
    }, {
        defineProperties: n(353)
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(497).entries;
    i({
        target: "Object",
        stat: !0
    }, {
        entries: function(t) {
            return r(t)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(244)
      , o = n(18)
      , a = n(42)
      , s = n(194).onFreeze
      , c = Object.freeze;
    i({
        target: "Object",
        stat: !0,
        forced: o((function() {
            c(1)
        }
        )),
        sham: !r
    }, {
        freeze: function(t) {
            return c && a(t) ? c(s(t)) : t
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(245)
      , o = n(193);
    i({
        target: "Object",
        stat: !0
    }, {
        fromEntries: function(t) {
            var e = {};
            return r(t, (function(t, n) {
                o(e, t, n)
            }
            ), void 0, !0),
            e
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(18)
      , o = n(109)
      , a = n(82).f
      , s = n(43)
      , c = r((function() {
        a(1)
    }
    ));
    i({
        target: "Object",
        stat: !0,
        forced: !s || c,
        sham: !s
    }, {
        getOwnPropertyDescriptor: function(t, e) {
            return a(o(t), e)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(43)
      , o = n(356)
      , a = n(109)
      , s = n(82)
      , c = n(193);
    i({
        target: "Object",
        stat: !0,
        sham: !r
    }, {
        getOwnPropertyDescriptors: function(t) {
            for (var e, n, i = a(t), r = s.f, l = o(i), u = {}, d = 0; l.length > d; )
                void 0 !== (n = r(i, e = l[d++])) && c(u, e, n);
            return u
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(18)
      , o = n(495).f;
    i({
        target: "Object",
        stat: !0,
        forced: r((function() {
            return !Object.getOwnPropertyNames(1)
        }
        ))
    }, {
        getOwnPropertyNames: o
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(18)
      , o = n(53)
      , a = n(99)
      , s = n(359);
    i({
        target: "Object",
        stat: !0,
        forced: r((function() {
            a(1)
        }
        )),
        sham: !s
    }, {
        getPrototypeOf: function(t) {
            return a(o(t))
        }
    })
}
, function(t, e, n) {
    n(5)({
        target: "Object",
        stat: !0
    }, {
        is: n(498)
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(18)
      , o = n(42)
      , a = Object.isExtensible;
    i({
        target: "Object",
        stat: !0,
        forced: r((function() {
            a(1)
        }
        ))
    }, {
        isExtensible: function(t) {
            return !!o(t) && (!a || a(t))
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(18)
      , o = n(42)
      , a = Object.isFrozen;
    i({
        target: "Object",
        stat: !0,
        forced: r((function() {
            a(1)
        }
        ))
    }, {
        isFrozen: function(t) {
            return !o(t) || !!a && a(t)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(18)
      , o = n(42)
      , a = Object.isSealed;
    i({
        target: "Object",
        stat: !0,
        forced: r((function() {
            a(1)
        }
        ))
    }, {
        isSealed: function(t) {
            return !o(t) || !!a && a(t)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(53)
      , o = n(237);
    i({
        target: "Object",
        stat: !0,
        forced: n(18)((function() {
            o(1)
        }
        ))
    }, {
        keys: function(t) {
            return o(r(t))
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(42)
      , o = n(194).onFreeze
      , a = n(244)
      , s = n(18)
      , c = Object.preventExtensions;
    i({
        target: "Object",
        stat: !0,
        forced: s((function() {
            c(1)
        }
        )),
        sham: !a
    }, {
        preventExtensions: function(t) {
            return c && r(t) ? c(o(t)) : t
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(42)
      , o = n(194).onFreeze
      , a = n(244)
      , s = n(18)
      , c = Object.seal;
    i({
        target: "Object",
        stat: !0,
        forced: s((function() {
            c(1)
        }
        )),
        sham: !a
    }, {
        seal: function(t) {
            return c && r(t) ? c(o(t)) : t
        }
    })
}
, function(t, e, n) {
    n(5)({
        target: "Object",
        stat: !0
    }, {
        setPrototypeOf: n(191)
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(497).values;
    i({
        target: "Object",
        stat: !0
    }, {
        values: function(t) {
            return r(t)
        }
    })
}
, function(t, e, n) {
    var i = n(361)
      , r = n(98)
      , o = n(715);
    i || r(Object.prototype, "toString", o, {
        unsafe: !0
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(361)
      , r = n(242);
    t.exports = i ? {}.toString : function() {
        return "[object " + r(this) + "]"
    }
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(43)
      , o = n(294)
      , a = n(53)
      , s = n(132)
      , c = n(48);
    r && i({
        target: "Object",
        proto: !0,
        forced: o
    }, {
        __defineGetter__: function(t, e) {
            c.f(a(this), t, {
                get: s(e),
                enumerable: !0,
                configurable: !0
            })
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(43)
      , o = n(294)
      , a = n(53)
      , s = n(132)
      , c = n(48);
    r && i({
        target: "Object",
        proto: !0,
        forced: o
    }, {
        __defineSetter__: function(t, e) {
            c.f(a(this), t, {
                set: s(e),
                enumerable: !0,
                configurable: !0
            })
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(43)
      , o = n(294)
      , a = n(53)
      , s = n(134)
      , c = n(99)
      , l = n(82).f;
    r && i({
        target: "Object",
        proto: !0,
        forced: o
    }, {
        __lookupGetter__: function(t) {
            var e, n = a(this), i = s(t, !0);
            do {
                if (e = l(n, i))
                    return e.get
            } while (n = c(n))
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(43)
      , o = n(294)
      , a = n(53)
      , s = n(134)
      , c = n(99)
      , l = n(82).f;
    r && i({
        target: "Object",
        proto: !0,
        forced: o
    }, {
        __lookupSetter__: function(t) {
            var e, n = a(this), i = s(t, !0);
            do {
                if (e = l(n, i))
                    return e.set
            } while (n = c(n))
        }
    })
}
, function(t, e, n) {
    n(5)({
        target: "Function",
        proto: !0
    }, {
        bind: n(478)
    })
}
, function(t, e, n) {
    var i = n(43)
      , r = n(48).f
      , o = Function.prototype
      , a = o.toString
      , s = /^\s*function ([^ (]*)/;
    i && !("name"in o) && r(o, "name", {
        configurable: !0,
        get: function() {
            try {
                return a.call(this).match(s)[1]
            } catch (t) {
                return ""
            }
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(42)
      , r = n(48)
      , o = n(99)
      , a = n(45)("hasInstance")
      , s = Function.prototype;
    a in s || r.f(s, a, {
        value: function(t) {
            if ("function" != typeof this || !i(t))
                return !1;
            if (!i(this.prototype))
                return t instanceof this;
            for (; t = o(t); )
                if (this.prototype === t)
                    return !0;
            return !1
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(473);
    i({
        target: "Array",
        stat: !0,
        forced: !n(362)((function(t) {
            Array.from(t)
        }
        ))
    }, {
        from: r
    })
}
, function(t, e, n) {
    n(5)({
        target: "Array",
        stat: !0
    }, {
        isArray: n(189)
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(18)
      , o = n(193);
    i({
        target: "Array",
        stat: !0,
        forced: r((function() {
            function t() {}
            return !(Array.of.call(t)instanceof t)
        }
        ))
    }, {
        of: function() {
            for (var t = 0, e = arguments.length, n = new ("function" == typeof this ? this : Array)(e); e > t; )
                o(n, t, arguments[t++]);
            return n.length = e,
            n
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(18)
      , o = n(189)
      , a = n(42)
      , s = n(53)
      , c = n(44)
      , l = n(193)
      , u = n(235)
      , d = n(247)
      , p = n(45)
      , h = n(499)
      , f = p("isConcatSpreadable")
      , m = h >= 51 || !r((function() {
        var t = [];
        return t[f] = !1,
        t.concat()[0] !== t
    }
    ))
      , g = d("concat")
      , v = function(t) {
        if (!a(t))
            return !1;
        var e = t[f];
        return void 0 !== e ? !!e : o(t)
    };
    i({
        target: "Array",
        proto: !0,
        forced: !m || !g
    }, {
        concat: function(t) {
            var e, n, i, r, o, a = s(this), d = u(a, 0), p = 0;
            for (e = -1,
            i = arguments.length; e < i; e++)
                if (o = -1 === e ? a : arguments[e],
                v(o)) {
                    if (p + (r = c(o.length)) > 9007199254740991)
                        throw TypeError("Maximum allowed index exceeded");
                    for (n = 0; n < r; n++,
                    p++)
                        n in o && l(d, p, o[n])
                } else {
                    if (p >= 9007199254740991)
                        throw TypeError("Maximum allowed index exceeded");
                    l(d, p++, o)
                }
            return d.length = p,
            d
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(500)
      , o = n(174);
    i({
        target: "Array",
        proto: !0
    }, {
        copyWithin: r
    }),
    o("copyWithin")
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(74).every
      , o = n(159)
      , a = n(97)
      , s = o("every")
      , c = a("every");
    i({
        target: "Array",
        proto: !0,
        forced: !s || !c
    }, {
        every: function(t) {
            return r(this, t, arguments.length > 1 ? arguments[1] : void 0)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(363)
      , o = n(174);
    i({
        target: "Array",
        proto: !0
    }, {
        fill: r
    }),
    o("fill")
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(74).filter
      , o = n(247)
      , a = n(97)
      , s = o("filter")
      , c = a("filter");
    i({
        target: "Array",
        proto: !0,
        forced: !s || !c
    }, {
        filter: function(t) {
            return r(this, t, arguments.length > 1 ? arguments[1] : void 0)
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(74).find
      , o = n(174)
      , a = n(97)
      , s = !0
      , c = a("find");
    "find"in [] && Array(1).find((function() {
        s = !1
    }
    )),
    i({
        target: "Array",
        proto: !0,
        forced: s || !c
    }, {
        find: function(t) {
            return r(this, t, arguments.length > 1 ? arguments[1] : void 0)
        }
    }),
    o("find")
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(74).findIndex
      , o = n(174)
      , a = n(97)
      , s = !0
      , c = a("findIndex");
    "findIndex"in [] && Array(1).findIndex((function() {
        s = !1
    }
    )),
    i({
        target: "Array",
        proto: !0,
        forced: s || !c
    }, {
        findIndex: function(t) {
            return r(this, t, arguments.length > 1 ? arguments[1] : void 0)
        }
    }),
    o("findIndex")
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(501)
      , o = n(53)
      , a = n(44)
      , s = n(122)
      , c = n(235);
    i({
        target: "Array",
        proto: !0
    }, {
        flat: function() {
            var t = arguments.length ? arguments[0] : void 0
              , e = o(this)
              , n = a(e.length)
              , i = c(e, 0);
            return i.length = r(i, e, e, n, 0, void 0 === t ? 1 : s(t)),
            i
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(501)
      , o = n(53)
      , a = n(44)
      , s = n(132)
      , c = n(235);
    i({
        target: "Array",
        proto: !0
    }, {
        flatMap: function(t) {
            var e, n = o(this), i = a(n.length);
            return s(t),
            (e = c(n, 0)).length = r(e, n, n, i, 0, 1, t, arguments.length > 1 ? arguments[1] : void 0),
            e
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(457);
    i({
        target: "Array",
        proto: !0,
        forced: [].forEach != r
    }, {
        forEach: r
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(238).includes
      , o = n(174);
    i({
        target: "Array",
        proto: !0,
        forced: !n(97)("indexOf", {
            ACCESSORS: !0,
            1: 0
        })
    }, {
        includes: function(t) {
            return r(this, t, arguments.length > 1 ? arguments[1] : void 0)
        }
    }),
    o("includes")
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(238).indexOf
      , o = n(159)
      , a = n(97)
      , s = [].indexOf
      , c = !!s && 1 / [1].indexOf(1, -0) < 0
      , l = o("indexOf")
      , u = a("indexOf", {
        ACCESSORS: !0,
        1: 0
    });
    i({
        target: "Array",
        proto: !0,
        forced: c || !l || !u
    }, {
        indexOf: function(t) {
            return c ? s.apply(this, arguments) || 0 : r(this, t, arguments.length > 1 ? arguments[1] : void 0)
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(234)
      , o = n(109)
      , a = n(159)
      , s = [].join
      , c = r != Object
      , l = a("join", ",");
    i({
        target: "Array",
        proto: !0,
        forced: c || !l
    }, {
        join: function(t) {
            return s.call(o(this), void 0 === t ? "," : t)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(502);
    i({
        target: "Array",
        proto: !0,
        forced: r !== [].lastIndexOf
    }, {
        lastIndexOf: r
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(74).map
      , o = n(247)
      , a = n(97)
      , s = o("map")
      , c = a("map");
    i({
        target: "Array",
        proto: !0,
        forced: !s || !c
    }, {
        map: function(t) {
            return r(this, t, arguments.length > 1 ? arguments[1] : void 0)
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(295).left
      , o = n(159)
      , a = n(97)
      , s = o("reduce")
      , c = a("reduce", {
        1: 0
    });
    i({
        target: "Array",
        proto: !0,
        forced: !s || !c
    }, {
        reduce: function(t) {
            return r(this, t, arguments.length, arguments.length > 1 ? arguments[1] : void 0)
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(295).right
      , o = n(159)
      , a = n(97)
      , s = o("reduceRight")
      , c = a("reduce", {
        1: 0
    });
    i({
        target: "Array",
        proto: !0,
        forced: !s || !c
    }, {
        reduceRight: function(t) {
            return r(this, t, arguments.length, arguments.length > 1 ? arguments[1] : void 0)
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(189)
      , o = [].reverse
      , a = [1, 2];
    i({
        target: "Array",
        proto: !0,
        forced: String(a) === String(a.reverse())
    }, {
        reverse: function() {
            return r(this) && (this.length = this.length),
            o.call(this)
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(42)
      , o = n(189)
      , a = n(175)
      , s = n(44)
      , c = n(109)
      , l = n(193)
      , u = n(45)
      , d = n(247)
      , p = n(97)
      , h = d("slice")
      , f = p("slice", {
        ACCESSORS: !0,
        0: 0,
        1: 2
    })
      , m = u("species")
      , g = [].slice
      , v = Math.max;
    i({
        target: "Array",
        proto: !0,
        forced: !h || !f
    }, {
        slice: function(t, e) {
            var n, i, u, d = c(this), p = s(d.length), h = a(t, p), f = a(void 0 === e ? p : e, p);
            if (o(d) && ("function" != typeof (n = d.constructor) || n !== Array && !o(n.prototype) ? r(n) && null === (n = n[m]) && (n = void 0) : n = void 0,
            n === Array || void 0 === n))
                return g.call(d, h, f);
            for (i = new (void 0 === n ? Array : n)(v(f - h, 0)),
            u = 0; h < f; h++,
            u++)
                h in d && l(i, u, d[h]);
            return i.length = u,
            i
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(74).some
      , o = n(159)
      , a = n(97)
      , s = o("some")
      , c = a("some");
    i({
        target: "Array",
        proto: !0,
        forced: !s || !c
    }, {
        some: function(t) {
            return r(this, t, arguments.length > 1 ? arguments[1] : void 0)
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(132)
      , o = n(53)
      , a = n(18)
      , s = n(159)
      , c = []
      , l = c.sort
      , u = a((function() {
        c.sort(void 0)
    }
    ))
      , d = a((function() {
        c.sort(null)
    }
    ))
      , p = s("sort");
    i({
        target: "Array",
        proto: !0,
        forced: u || !d || !p
    }, {
        sort: function(t) {
            return void 0 === t ? l.call(o(this)) : l.call(o(this), r(t))
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(175)
      , o = n(122)
      , a = n(44)
      , s = n(53)
      , c = n(235)
      , l = n(193)
      , u = n(247)
      , d = n(97)
      , p = u("splice")
      , h = d("splice", {
        ACCESSORS: !0,
        0: 0,
        1: 2
    })
      , f = Math.max
      , m = Math.min;
    i({
        target: "Array",
        proto: !0,
        forced: !p || !h
    }, {
        splice: function(t, e) {
            var n, i, u, d, p, h, g = s(this), v = a(g.length), y = r(t, v), b = arguments.length;
            if (0 === b ? n = i = 0 : 1 === b ? (n = 0,
            i = v - y) : (n = b - 2,
            i = m(f(o(e), 0), v - y)),
            v + n - i > 9007199254740991)
                throw TypeError("Maximum allowed length exceeded");
            for (u = c(g, i),
            d = 0; d < i; d++)
                (p = y + d)in g && l(u, d, g[p]);
            if (u.length = i,
            n < i) {
                for (d = y; d < v - i; d++)
                    h = d + n,
                    (p = d + i)in g ? g[h] = g[p] : delete g[h];
                for (d = v; d > v - i + n; d--)
                    delete g[d - 1]
            } else if (n > i)
                for (d = v - i; d > y; d--)
                    h = d + n - 1,
                    (p = d + i - 1)in g ? g[h] = g[p] : delete g[h];
            for (d = 0; d < n; d++)
                g[d + y] = arguments[d + 2];
            return g.length = v - i + n,
            u
        }
    })
}
, function(t, e, n) {
    n(246)("Array")
}
, function(t, e, n) {
    n(174)("flat")
}
, function(t, e, n) {
    n(174)("flatMap")
}
, function(t, e, n) {
    var i = n(5)
      , r = n(175)
      , o = String.fromCharCode
      , a = String.fromCodePoint;
    i({
        target: "String",
        stat: !0,
        forced: !!a && 1 != a.length
    }, {
        fromCodePoint: function(t) {
            for (var e, n = [], i = arguments.length, a = 0; i > a; ) {
                if (e = +arguments[a++],
                r(e, 1114111) !== e)
                    throw RangeError(e + " is not a valid code point");
                n.push(e < 65536 ? o(e) : o(55296 + ((e -= 65536) >> 10), e % 1024 + 56320))
            }
            return n.join("")
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(109)
      , o = n(44);
    i({
        target: "String",
        stat: !0
    }, {
        raw: function(t) {
            for (var e = r(t.raw), n = o(e.length), i = arguments.length, a = [], s = 0; n > s; )
                a.push(String(e[s++])),
                s < i && a.push(String(arguments[s]));
            return a.join("")
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(291).codeAt;
    i({
        target: "String",
        proto: !0
    }, {
        codePointAt: function(t) {
            return r(this, t)
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i, r = n(5), o = n(82).f, a = n(44), s = n(364), c = n(87), l = n(365), u = n(158), d = "".endsWith, p = Math.min, h = l("endsWith");
    r({
        target: "String",
        proto: !0,
        forced: !!(u || h || (i = o(String.prototype, "endsWith"),
        !i || i.writable)) && !h
    }, {
        endsWith: function(t) {
            var e = String(c(this));
            s(t);
            var n = arguments.length > 1 ? arguments[1] : void 0
              , i = a(e.length)
              , r = void 0 === n ? i : p(a(n), i)
              , o = String(t);
            return d ? d.call(e, o, r) : e.slice(r - o.length, r) === o
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(364)
      , o = n(87);
    i({
        target: "String",
        proto: !0,
        forced: !n(365)("includes")
    }, {
        includes: function(t) {
            return !!~String(o(this)).indexOf(r(t), arguments.length > 1 ? arguments[1] : void 0)
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(297)
      , r = n(29)
      , o = n(44)
      , a = n(87)
      , s = n(299)
      , c = n(300);
    i("match", 1, (function(t, e, n) {
        return [function(e) {
            var n = a(this)
              , i = null == e ? void 0 : e[t];
            return void 0 !== i ? i.call(e, n) : new RegExp(e)[t](String(n))
        }
        , function(t) {
            var i = n(e, t, this);
            if (i.done)
                return i.value;
            var a = r(t)
              , l = String(this);
            if (!a.global)
                return c(a, l);
            var u = a.unicode;
            a.lastIndex = 0;
            for (var d, p = [], h = 0; null !== (d = c(a, l)); ) {
                var f = String(d[0]);
                p[h] = f,
                "" === f && (a.lastIndex = s(l, o(a.lastIndex), u)),
                h++
            }
            return 0 === h ? null : p
        }
        ]
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(358)
      , o = n(87)
      , a = n(44)
      , s = n(132)
      , c = n(29)
      , l = n(133)
      , u = n(296)
      , d = n(248)
      , p = n(88)
      , h = n(18)
      , f = n(45)
      , m = n(195)
      , g = n(299)
      , v = n(110)
      , y = n(158)
      , b = f("matchAll")
      , w = v.set
      , S = v.getterFor("RegExp String Iterator")
      , x = RegExp.prototype
      , M = x.exec
      , E = "".matchAll
      , C = !!E && !h((function() {
        "a".matchAll(/./)
    }
    ))
      , A = r((function(t, e, n, i) {
        w(this, {
            type: "RegExp String Iterator",
            regexp: t,
            string: e,
            global: n,
            unicode: i,
            done: !1
        })
    }
    ), "RegExp String", (function() {
        var t = S(this);
        if (t.done)
            return {
                value: void 0,
                done: !0
            };
        var e = t.regexp
          , n = t.string
          , i = function(t, e) {
            var n, i = t.exec;
            if ("function" == typeof i) {
                if ("object" != typeof (n = i.call(t, e)))
                    throw TypeError("Incorrect exec result");
                return n
            }
            return M.call(t, e)
        }(e, n);
        return null === i ? {
            value: void 0,
            done: t.done = !0
        } : t.global ? ("" == String(i[0]) && (e.lastIndex = g(n, a(e.lastIndex), t.unicode)),
        {
            value: i,
            done: !1
        }) : (t.done = !0,
        {
            value: i,
            done: !1
        })
    }
    ))
      , T = function(t) {
        var e, n, i, r, o, s, l = c(this), u = String(t);
        return e = m(l, RegExp),
        void 0 === (n = l.flags) && l instanceof RegExp && !("flags"in x) && (n = d.call(l)),
        i = void 0 === n ? "" : String(n),
        r = new e(e === RegExp ? l.source : l,i),
        o = !!~i.indexOf("g"),
        s = !!~i.indexOf("u"),
        r.lastIndex = a(l.lastIndex),
        new A(r,u,o,s)
    };
    i({
        target: "String",
        proto: !0,
        forced: C
    }, {
        matchAll: function(t) {
            var e, n, i, r = o(this);
            if (null != t) {
                if (u(t) && !~String(o("flags"in x ? t.flags : d.call(t))).indexOf("g"))
                    throw TypeError("`.matchAll` does not allow non-global regexes");
                if (C)
                    return E.apply(r, arguments);
                if (void 0 === (n = t[b]) && y && "RegExp" == l(t) && (n = T),
                null != n)
                    return s(n).call(t, r)
            } else if (C)
                return E.apply(r, arguments);
            return e = String(r),
            i = new RegExp(t,"g"),
            y ? T.call(i, e) : i[b](e)
        }
    }),
    y || b in x || p(x, b, T)
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(367).end;
    i({
        target: "String",
        proto: !0,
        forced: n(504)
    }, {
        padEnd: function(t) {
            return r(this, t, arguments.length > 1 ? arguments[1] : void 0)
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(367).start;
    i({
        target: "String",
        proto: !0,
        forced: n(504)
    }, {
        padStart: function(t) {
            return r(this, t, arguments.length > 1 ? arguments[1] : void 0)
        }
    })
}
, function(t, e, n) {
    n(5)({
        target: "String",
        proto: !0
    }, {
        repeat: n(368)
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(297)
      , r = n(29)
      , o = n(53)
      , a = n(44)
      , s = n(122)
      , c = n(87)
      , l = n(299)
      , u = n(300)
      , d = Math.max
      , p = Math.min
      , h = Math.floor
      , f = /\$([$&'`]|\d\d?|<[^>]*>)/g
      , m = /\$([$&'`]|\d\d?)/g;
    i("replace", 2, (function(t, e, n, i) {
        var g = i.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE
          , v = i.REPLACE_KEEPS_$0
          , y = g ? "$" : "$0";
        return [function(n, i) {
            var r = c(this)
              , o = null == n ? void 0 : n[t];
            return void 0 !== o ? o.call(n, r, i) : e.call(String(r), n, i)
        }
        , function(t, i) {
            if (!g && v || "string" == typeof i && -1 === i.indexOf(y)) {
                var o = n(e, t, this, i);
                if (o.done)
                    return o.value
            }
            var c = r(t)
              , h = String(this)
              , f = "function" == typeof i;
            f || (i = String(i));
            var m = c.global;
            if (m) {
                var w = c.unicode;
                c.lastIndex = 0
            }
            for (var S = []; ; ) {
                var x = u(c, h);
                if (null === x)
                    break;
                if (S.push(x),
                !m)
                    break;
                "" === String(x[0]) && (c.lastIndex = l(h, a(c.lastIndex), w))
            }
            for (var M, E = "", C = 0, A = 0; A < S.length; A++) {
                x = S[A];
                for (var T = String(x[0]), O = d(p(s(x.index), h.length), 0), _ = [], P = 1; P < x.length; P++)
                    _.push(void 0 === (M = x[P]) ? M : String(M));
                var I = x.groups;
                if (f) {
                    var k = [T].concat(_, O, h);
                    void 0 !== I && k.push(I);
                    var D = String(i.apply(void 0, k))
                } else
                    D = b(T, h, O, _, I, i);
                O >= C && (E += h.slice(C, O) + D,
                C = O + T.length)
            }
            return E + h.slice(C)
        }
        ];
        function b(t, n, i, r, a, s) {
            var c = i + t.length
              , l = r.length
              , u = m;
            return void 0 !== a && (a = o(a),
            u = f),
            e.call(s, u, (function(e, o) {
                var s;
                switch (o.charAt(0)) {
                case "$":
                    return "$";
                case "&":
                    return t;
                case "`":
                    return n.slice(0, i);
                case "'":
                    return n.slice(c);
                case "<":
                    s = a[o.slice(1, -1)];
                    break;
                default:
                    var u = +o;
                    if (0 === u)
                        return e;
                    if (u > l) {
                        var d = h(u / 10);
                        return 0 === d ? e : d <= l ? void 0 === r[d - 1] ? o.charAt(1) : r[d - 1] + o.charAt(1) : e
                    }
                    s = r[u - 1]
                }
                return void 0 === s ? "" : s
            }
            ))
        }
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(297)
      , r = n(29)
      , o = n(87)
      , a = n(498)
      , s = n(300);
    i("search", 1, (function(t, e, n) {
        return [function(e) {
            var n = o(this)
              , i = null == e ? void 0 : e[t];
            return void 0 !== i ? i.call(e, n) : new RegExp(e)[t](String(n))
        }
        , function(t) {
            var i = n(e, t, this);
            if (i.done)
                return i.value;
            var o = r(t)
              , c = String(this)
              , l = o.lastIndex;
            a(l, 0) || (o.lastIndex = 0);
            var u = s(o, c);
            return a(o.lastIndex, l) || (o.lastIndex = l),
            null === u ? -1 : u.index
        }
        ]
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(297)
      , r = n(296)
      , o = n(29)
      , a = n(87)
      , s = n(195)
      , c = n(299)
      , l = n(44)
      , u = n(300)
      , d = n(298)
      , p = n(18)
      , h = [].push
      , f = Math.min
      , m = !p((function() {
        return !RegExp(4294967295, "y")
    }
    ));
    i("split", 2, (function(t, e, n) {
        var i;
        return i = "c" == "abbc".split(/(b)*/)[1] || 4 != "test".split(/(?:)/, -1).length || 2 != "ab".split(/(?:ab)*/).length || 4 != ".".split(/(.?)(.?)/).length || ".".split(/()()/).length > 1 || "".split(/.?/).length ? function(t, n) {
            var i = String(a(this))
              , o = void 0 === n ? 4294967295 : n >>> 0;
            if (0 === o)
                return [];
            if (void 0 === t)
                return [i];
            if (!r(t))
                return e.call(i, t, o);
            for (var s, c, l, u = [], p = (t.ignoreCase ? "i" : "") + (t.multiline ? "m" : "") + (t.unicode ? "u" : "") + (t.sticky ? "y" : ""), f = 0, m = new RegExp(t.source,p + "g"); (s = d.call(m, i)) && !((c = m.lastIndex) > f && (u.push(i.slice(f, s.index)),
            s.length > 1 && s.index < i.length && h.apply(u, s.slice(1)),
            l = s[0].length,
            f = c,
            u.length >= o)); )
                m.lastIndex === s.index && m.lastIndex++;
            return f === i.length ? !l && m.test("") || u.push("") : u.push(i.slice(f)),
            u.length > o ? u.slice(0, o) : u
        }
        : "0".split(void 0, 0).length ? function(t, n) {
            return void 0 === t && 0 === n ? [] : e.call(this, t, n)
        }
        : e,
        [function(e, n) {
            var r = a(this)
              , o = null == e ? void 0 : e[t];
            return void 0 !== o ? o.call(e, r, n) : i.call(String(r), e, n)
        }
        , function(t, r) {
            var a = n(i, t, this, r, i !== e);
            if (a.done)
                return a.value;
            var d = o(t)
              , p = String(this)
              , h = s(d, RegExp)
              , g = d.unicode
              , v = (d.ignoreCase ? "i" : "") + (d.multiline ? "m" : "") + (d.unicode ? "u" : "") + (m ? "y" : "g")
              , y = new h(m ? d : "^(?:" + d.source + ")",v)
              , b = void 0 === r ? 4294967295 : r >>> 0;
            if (0 === b)
                return [];
            if (0 === p.length)
                return null === u(y, p) ? [p] : [];
            for (var w = 0, S = 0, x = []; S < p.length; ) {
                y.lastIndex = m ? S : 0;
                var M, E = u(y, m ? p : p.slice(S));
                if (null === E || (M = f(l(y.lastIndex + (m ? 0 : S)), p.length)) === w)
                    S = c(p, S, g);
                else {
                    if (x.push(p.slice(w, S)),
                    x.length === b)
                        return x;
                    for (var C = 1; C <= E.length - 1; C++)
                        if (x.push(E[C]),
                        x.length === b)
                            return x;
                    S = w = M
                }
            }
            return x.push(p.slice(w)),
            x
        }
        ]
    }
    ), !m)
}
, function(t, e, n) {
    "use strict";
    var i, r = n(5), o = n(82).f, a = n(44), s = n(364), c = n(87), l = n(365), u = n(158), d = "".startsWith, p = Math.min, h = l("startsWith");
    r({
        target: "String",
        proto: !0,
        forced: !!(u || h || (i = o(String.prototype, "startsWith"),
        !i || i.writable)) && !h
    }, {
        startsWith: function(t) {
            var e = String(c(this));
            s(t);
            var n = a(p(arguments.length > 1 ? arguments[1] : void 0, e.length))
              , i = String(t);
            return d ? d.call(e, i, n) : e.slice(n, n + i.length) === i
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(214).trim;
    i({
        target: "String",
        proto: !0,
        forced: n(369)("trim")
    }, {
        trim: function() {
            return r(this)
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(214).start
      , o = n(369)("trimStart")
      , a = o ? function() {
        return r(this)
    }
    : "".trimStart;
    i({
        target: "String",
        proto: !0,
        forced: o
    }, {
        trimStart: a,
        trimLeft: a
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(214).end
      , o = n(369)("trimEnd")
      , a = o ? function() {
        return r(this)
    }
    : "".trimEnd;
    i({
        target: "String",
        proto: !0,
        forced: o
    }, {
        trimEnd: a,
        trimRight: a
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(111);
    i({
        target: "String",
        proto: !0,
        forced: n(112)("anchor")
    }, {
        anchor: function(t) {
            return r(this, "a", "name", t)
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(111);
    i({
        target: "String",
        proto: !0,
        forced: n(112)("big")
    }, {
        big: function() {
            return r(this, "big", "", "")
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(111);
    i({
        target: "String",
        proto: !0,
        forced: n(112)("blink")
    }, {
        blink: function() {
            return r(this, "blink", "", "")
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(111);
    i({
        target: "String",
        proto: !0,
        forced: n(112)("bold")
    }, {
        bold: function() {
            return r(this, "b", "", "")
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(111);
    i({
        target: "String",
        proto: !0,
        forced: n(112)("fixed")
    }, {
        fixed: function() {
            return r(this, "tt", "", "")
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(111);
    i({
        target: "String",
        proto: !0,
        forced: n(112)("fontcolor")
    }, {
        fontcolor: function(t) {
            return r(this, "font", "color", t)
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(111);
    i({
        target: "String",
        proto: !0,
        forced: n(112)("fontsize")
    }, {
        fontsize: function(t) {
            return r(this, "font", "size", t)
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(111);
    i({
        target: "String",
        proto: !0,
        forced: n(112)("italics")
    }, {
        italics: function() {
            return r(this, "i", "", "")
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(111);
    i({
        target: "String",
        proto: !0,
        forced: n(112)("link")
    }, {
        link: function(t) {
            return r(this, "a", "href", t)
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(111);
    i({
        target: "String",
        proto: !0,
        forced: n(112)("small")
    }, {
        small: function() {
            return r(this, "small", "", "")
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(111);
    i({
        target: "String",
        proto: !0,
        forced: n(112)("strike")
    }, {
        strike: function() {
            return r(this, "strike", "", "")
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(111);
    i({
        target: "String",
        proto: !0,
        forced: n(112)("sub")
    }, {
        sub: function() {
            return r(this, "sub", "", "")
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(111);
    i({
        target: "String",
        proto: !0,
        forced: n(112)("sup")
    }, {
        sup: function() {
            return r(this, "sup", "", "")
        }
    })
}
, function(t, e, n) {
    var i = n(43)
      , r = n(34)
      , o = n(289)
      , a = n(293)
      , s = n(48).f
      , c = n(190).f
      , l = n(296)
      , u = n(248)
      , d = n(366)
      , p = n(98)
      , h = n(18)
      , f = n(110).set
      , m = n(246)
      , g = n(45)("match")
      , v = r.RegExp
      , y = v.prototype
      , b = /a/g
      , w = /a/g
      , S = new v(b) !== b
      , x = d.UNSUPPORTED_Y;
    if (i && o("RegExp", !S || x || h((function() {
        return w[g] = !1,
        v(b) != b || v(w) == w || "/a/i" != v(b, "i")
    }
    )))) {
        for (var M = function(t, e) {
            var n, i = this instanceof M, r = l(t), o = void 0 === e;
            if (!i && r && t.constructor === M && o)
                return t;
            S ? r && !o && (t = t.source) : t instanceof M && (o && (e = u.call(t)),
            t = t.source),
            x && (n = !!e && e.indexOf("y") > -1) && (e = e.replace(/y/g, ""));
            var s = a(S ? new v(t,e) : v(t, e), i ? this : y, M);
            return x && n && f(s, {
                sticky: n
            }),
            s
        }, E = function(t) {
            t in M || s(M, t, {
                configurable: !0,
                get: function() {
                    return v[t]
                },
                set: function(e) {
                    v[t] = e
                }
            })
        }, C = c(v), A = 0; C.length > A; )
            E(C[A++]);
        y.constructor = M,
        M.prototype = y,
        p(r, "RegExp", M)
    }
    m("RegExp")
}
, function(t, e, n) {
    var i = n(43)
      , r = n(48)
      , o = n(248)
      , a = n(366).UNSUPPORTED_Y;
    i && ("g" != /./g.flags || a) && r.f(RegExp.prototype, "flags", {
        configurable: !0,
        get: o
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(98)
      , r = n(29)
      , o = n(18)
      , a = n(248)
      , s = RegExp.prototype
      , c = s.toString
      , l = o((function() {
        return "/a/b" != c.call({
            source: "a",
            flags: "b"
        })
    }
    ))
      , u = "toString" != c.name;
    (l || u) && i(RegExp.prototype, "toString", (function() {
        var t = r(this)
          , e = String(t.source)
          , n = t.flags;
        return "/" + e + "/" + String(void 0 === n && t instanceof RegExp && !("flags"in s) ? a.call(t) : n)
    }
    ), {
        unsafe: !0
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(505);
    i({
        global: !0,
        forced: parseInt != r
    }, {
        parseInt: r
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(506);
    i({
        global: !0,
        forced: parseFloat != r
    }, {
        parseFloat: r
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(43)
      , r = n(34)
      , o = n(289)
      , a = n(98)
      , s = n(58)
      , c = n(133)
      , l = n(293)
      , u = n(134)
      , d = n(18)
      , p = n(160)
      , h = n(190).f
      , f = n(82).f
      , m = n(48).f
      , g = n(214).trim
      , v = r.Number
      , y = v.prototype
      , b = "Number" == c(p(y))
      , w = function(t) {
        var e, n, i, r, o, a, s, c, l = u(t, !1);
        if ("string" == typeof l && l.length > 2)
            if (43 === (e = (l = g(l)).charCodeAt(0)) || 45 === e) {
                if (88 === (n = l.charCodeAt(2)) || 120 === n)
                    return NaN
            } else if (48 === e) {
                switch (l.charCodeAt(1)) {
                case 66:
                case 98:
                    i = 2,
                    r = 49;
                    break;
                case 79:
                case 111:
                    i = 8,
                    r = 55;
                    break;
                default:
                    return +l
                }
                for (a = (o = l.slice(2)).length,
                s = 0; s < a; s++)
                    if ((c = o.charCodeAt(s)) < 48 || c > r)
                        return NaN;
                return parseInt(o, i)
            }
        return +l
    };
    if (o("Number", !v(" 0o1") || !v("0b1") || v("+0x1"))) {
        for (var S, x = function(t) {
            var e = arguments.length < 1 ? 0 : t
              , n = this;
            return n instanceof x && (b ? d((function() {
                y.valueOf.call(n)
            }
            )) : "Number" != c(n)) ? l(new v(w(e)), n, x) : w(e)
        }, M = i ? h(v) : "MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","), E = 0; M.length > E; E++)
            s(v, S = M[E]) && !s(x, S) && m(x, S, f(v, S));
        x.prototype = y,
        y.constructor = x,
        a(r, "Number", x)
    }
}
, function(t, e, n) {
    n(5)({
        target: "Number",
        stat: !0
    }, {
        EPSILON: Math.pow(2, -52)
    })
}
, function(t, e, n) {
    n(5)({
        target: "Number",
        stat: !0
    }, {
        isFinite: n(789)
    })
}
, function(t, e, n) {
    var i = n(34).isFinite;
    t.exports = Number.isFinite || function(t) {
        return "number" == typeof t && i(t)
    }
}
, function(t, e, n) {
    n(5)({
        target: "Number",
        stat: !0
    }, {
        isInteger: n(507)
    })
}
, function(t, e, n) {
    n(5)({
        target: "Number",
        stat: !0
    }, {
        isNaN: function(t) {
            return t != t
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(507)
      , o = Math.abs;
    i({
        target: "Number",
        stat: !0
    }, {
        isSafeInteger: function(t) {
            return r(t) && o(t) <= 9007199254740991
        }
    })
}
, function(t, e, n) {
    n(5)({
        target: "Number",
        stat: !0
    }, {
        MAX_SAFE_INTEGER: 9007199254740991
    })
}
, function(t, e, n) {
    n(5)({
        target: "Number",
        stat: !0
    }, {
        MIN_SAFE_INTEGER: -9007199254740991
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(506);
    i({
        target: "Number",
        stat: !0,
        forced: Number.parseFloat != r
    }, {
        parseFloat: r
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(505);
    i({
        target: "Number",
        stat: !0,
        forced: Number.parseInt != r
    }, {
        parseInt: r
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(122)
      , o = n(508)
      , a = n(368)
      , s = n(18)
      , c = 1..toFixed
      , l = Math.floor
      , u = function(t, e, n) {
        return 0 === e ? n : e % 2 == 1 ? u(t, e - 1, n * t) : u(t * t, e / 2, n)
    };
    i({
        target: "Number",
        proto: !0,
        forced: c && ("0.000" !== 8e-5.toFixed(3) || "1" !== .9.toFixed(0) || "1.25" !== 1.255.toFixed(2) || "1000000000000000128" !== (0xde0b6b3a7640080).toFixed(0)) || !s((function() {
            c.call({})
        }
        ))
    }, {
        toFixed: function(t) {
            var e, n, i, s, c = o(this), d = r(t), p = [0, 0, 0, 0, 0, 0], h = "", f = "0", m = function(t, e) {
                for (var n = -1, i = e; ++n < 6; )
                    i += t * p[n],
                    p[n] = i % 1e7,
                    i = l(i / 1e7)
            }, g = function(t) {
                for (var e = 6, n = 0; --e >= 0; )
                    n += p[e],
                    p[e] = l(n / t),
                    n = n % t * 1e7
            }, v = function() {
                for (var t = 6, e = ""; --t >= 0; )
                    if ("" !== e || 0 === t || 0 !== p[t]) {
                        var n = String(p[t]);
                        e = "" === e ? n : e + a.call("0", 7 - n.length) + n
                    }
                return e
            };
            if (d < 0 || d > 20)
                throw RangeError("Incorrect fraction digits");
            if (c != c)
                return "NaN";
            if (c <= -1e21 || c >= 1e21)
                return String(c);
            if (c < 0 && (h = "-",
            c = -c),
            c > 1e-21)
                if (n = (e = function(t) {
                    for (var e = 0, n = t; n >= 4096; )
                        e += 12,
                        n /= 4096;
                    for (; n >= 2; )
                        e += 1,
                        n /= 2;
                    return e
                }(c * u(2, 69, 1)) - 69) < 0 ? c * u(2, -e, 1) : c / u(2, e, 1),
                n *= 4503599627370496,
                (e = 52 - e) > 0) {
                    for (m(0, n),
                    i = d; i >= 7; )
                        m(1e7, 0),
                        i -= 7;
                    for (m(u(10, i, 1), 0),
                    i = e - 1; i >= 23; )
                        g(1 << 23),
                        i -= 23;
                    g(1 << i),
                    m(1, 1),
                    g(2),
                    f = v()
                } else
                    m(0, n),
                    m(1 << -e, 0),
                    f = v() + a.call("0", d);
            return f = d > 0 ? h + ((s = f.length) <= d ? "0." + a.call("0", d - s) + f : f.slice(0, s - d) + "." + f.slice(s - d)) : h + f
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(18)
      , o = n(508)
      , a = 1..toPrecision;
    i({
        target: "Number",
        proto: !0,
        forced: r((function() {
            return "1" !== a.call(1, void 0)
        }
        )) || !r((function() {
            a.call({})
        }
        ))
    }, {
        toPrecision: function(t) {
            return void 0 === t ? a.call(o(this)) : a.call(o(this), t)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(509)
      , o = Math.acosh
      , a = Math.log
      , s = Math.sqrt
      , c = Math.LN2;
    i({
        target: "Math",
        stat: !0,
        forced: !o || 710 != Math.floor(o(Number.MAX_VALUE)) || o(1 / 0) != 1 / 0
    }, {
        acosh: function(t) {
            return (t = +t) < 1 ? NaN : t > 94906265.62425156 ? a(t) + c : r(t - 1 + s(t - 1) * s(t + 1))
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = Math.asinh
      , o = Math.log
      , a = Math.sqrt;
    i({
        target: "Math",
        stat: !0,
        forced: !(r && 1 / r(0) > 0)
    }, {
        asinh: function t(e) {
            return isFinite(e = +e) && 0 != e ? e < 0 ? -t(-e) : o(e + a(e * e + 1)) : e
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = Math.atanh
      , o = Math.log;
    i({
        target: "Math",
        stat: !0,
        forced: !(r && 1 / r(-0) < 0)
    }, {
        atanh: function(t) {
            return 0 == (t = +t) ? t : o((1 + t) / (1 - t)) / 2
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(370)
      , o = Math.abs
      , a = Math.pow;
    i({
        target: "Math",
        stat: !0
    }, {
        cbrt: function(t) {
            return r(t = +t) * a(o(t), 1 / 3)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = Math.floor
      , o = Math.log
      , a = Math.LOG2E;
    i({
        target: "Math",
        stat: !0
    }, {
        clz32: function(t) {
            return (t >>>= 0) ? 31 - r(o(t + .5) * a) : 32
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(302)
      , o = Math.cosh
      , a = Math.abs
      , s = Math.E;
    i({
        target: "Math",
        stat: !0,
        forced: !o || o(710) === 1 / 0
    }, {
        cosh: function(t) {
            var e = r(a(t) - 1) + 1;
            return (e + 1 / (e * s * s)) * (s / 2)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(302);
    i({
        target: "Math",
        stat: !0,
        forced: r != Math.expm1
    }, {
        expm1: r
    })
}
, function(t, e, n) {
    n(5)({
        target: "Math",
        stat: !0
    }, {
        fround: n(807)
    })
}
, function(t, e, n) {
    var i = n(370)
      , r = Math.abs
      , o = Math.pow
      , a = o(2, -52)
      , s = o(2, -23)
      , c = o(2, 127) * (2 - s)
      , l = o(2, -126);
    t.exports = Math.fround || function(t) {
        var e, n, o = r(t), u = i(t);
        return o < l ? u * (o / l / s + 1 / a - 1 / a) * l * s : (n = (e = (1 + s / a) * o) - (e - o)) > c || n != n ? u * (1 / 0) : u * n
    }
}
, function(t, e, n) {
    var i = n(5)
      , r = Math.hypot
      , o = Math.abs
      , a = Math.sqrt;
    i({
        target: "Math",
        stat: !0,
        forced: !!r && r(1 / 0, NaN) !== 1 / 0
    }, {
        hypot: function(t, e) {
            for (var n, i, r = 0, s = 0, c = arguments.length, l = 0; s < c; )
                l < (n = o(arguments[s++])) ? (r = r * (i = l / n) * i + 1,
                l = n) : r += n > 0 ? (i = n / l) * i : n;
            return l === 1 / 0 ? 1 / 0 : l * a(r)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(18)
      , o = Math.imul;
    i({
        target: "Math",
        stat: !0,
        forced: r((function() {
            return -5 != o(4294967295, 5) || 2 != o.length
        }
        ))
    }, {
        imul: function(t, e) {
            var n = +t
              , i = +e
              , r = 65535 & n
              , o = 65535 & i;
            return 0 | r * o + ((65535 & n >>> 16) * o + r * (65535 & i >>> 16) << 16 >>> 0)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = Math.log
      , o = Math.LOG10E;
    i({
        target: "Math",
        stat: !0
    }, {
        log10: function(t) {
            return r(t) * o
        }
    })
}
, function(t, e, n) {
    n(5)({
        target: "Math",
        stat: !0
    }, {
        log1p: n(509)
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = Math.log
      , o = Math.LN2;
    i({
        target: "Math",
        stat: !0
    }, {
        log2: function(t) {
            return r(t) / o
        }
    })
}
, function(t, e, n) {
    n(5)({
        target: "Math",
        stat: !0
    }, {
        sign: n(370)
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(18)
      , o = n(302)
      , a = Math.abs
      , s = Math.exp
      , c = Math.E;
    i({
        target: "Math",
        stat: !0,
        forced: r((function() {
            return -2e-17 != Math.sinh(-2e-17)
        }
        ))
    }, {
        sinh: function(t) {
            return a(t = +t) < 1 ? (o(t) - o(-t)) / 2 : (s(t - 1) - s(-t - 1)) * (c / 2)
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(302)
      , o = Math.exp;
    i({
        target: "Math",
        stat: !0
    }, {
        tanh: function(t) {
            var e = r(t = +t)
              , n = r(-t);
            return e == 1 / 0 ? 1 : n == 1 / 0 ? -1 : (e - n) / (o(t) + o(-t))
        }
    })
}
, function(t, e, n) {
    n(162)(Math, "Math", !0)
}
, function(t, e, n) {
    var i = n(5)
      , r = Math.ceil
      , o = Math.floor;
    i({
        target: "Math",
        stat: !0
    }, {
        trunc: function(t) {
            return (t > 0 ? o : r)(t)
        }
    })
}
, function(t, e, n) {
    n(5)({
        target: "Date",
        stat: !0
    }, {
        now: function() {
            return (new Date).getTime()
        }
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(18)
      , o = n(53)
      , a = n(134);
    i({
        target: "Date",
        proto: !0,
        forced: r((function() {
            return null !== new Date(NaN).toJSON() || 1 !== Date.prototype.toJSON.call({
                toISOString: function() {
                    return 1
                }
            })
        }
        ))
    }, {
        toJSON: function(t) {
            var e = o(this)
              , n = a(e);
            return "number" != typeof n || isFinite(n) ? e.toISOString() : null
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(821);
    i({
        target: "Date",
        proto: !0,
        forced: Date.prototype.toISOString !== r
    }, {
        toISOString: r
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(18)
      , r = n(367).start
      , o = Math.abs
      , a = Date.prototype
      , s = a.getTime
      , c = a.toISOString;
    t.exports = i((function() {
        return "0385-07-25T07:06:39.999Z" != c.call(new Date(-50000000000001))
    }
    )) || !i((function() {
        c.call(new Date(NaN))
    }
    )) ? function() {
        if (!isFinite(s.call(this)))
            throw RangeError("Invalid time value");
        var t = this.getUTCFullYear()
          , e = this.getUTCMilliseconds()
          , n = t < 0 ? "-" : t > 9999 ? "+" : "";
        return n + r(o(t), n ? 6 : 4, 0) + "-" + r(this.getUTCMonth() + 1, 2, 0) + "-" + r(this.getUTCDate(), 2, 0) + "T" + r(this.getUTCHours(), 2, 0) + ":" + r(this.getUTCMinutes(), 2, 0) + ":" + r(this.getUTCSeconds(), 2, 0) + "." + r(e, 3, 0) + "Z"
    }
    : c
}
, function(t, e, n) {
    var i = n(98)
      , r = Date.prototype
      , o = r.toString
      , a = r.getTime;
    new Date(NaN) + "" != "Invalid Date" && i(r, "toString", (function() {
        var t = a.call(this);
        return t == t ? o.call(this) : "Invalid Date"
    }
    ))
}
, function(t, e, n) {
    var i = n(88)
      , r = n(824)
      , o = n(45)("toPrimitive")
      , a = Date.prototype;
    o in a || i(a, o, r)
}
, function(t, e, n) {
    "use strict";
    var i = n(29)
      , r = n(134);
    t.exports = function(t) {
        if ("string" !== t && "number" !== t && "default" !== t)
            throw TypeError("Incorrect hint");
        return r(i(this), "number" !== t)
    }
}
, function(t, e, n) {
    var i = n(34);
    n(162)(i.JSON, "JSON", !0)
}
, function(t, e, n) {
    "use strict";
    n(292)("WeakSet", (function(t) {
        return function() {
            return t(this, arguments.length ? arguments[0] : void 0)
        }
    }
    ), n(493))
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(34)
      , o = n(303)
      , a = n(246)
      , s = o.ArrayBuffer;
    i({
        global: !0,
        forced: r.ArrayBuffer !== s
    }, {
        ArrayBuffer: s
    }),
    a("ArrayBuffer")
}
, function(t, e) {
    var n = Math.abs
      , i = Math.pow
      , r = Math.floor
      , o = Math.log
      , a = Math.LN2;
    t.exports = {
        pack: function(t, e, s) {
            var c, l, u, d = new Array(s), p = 8 * s - e - 1, h = (1 << p) - 1, f = h >> 1, m = 23 === e ? i(2, -24) - i(2, -77) : 0, g = t < 0 || 0 === t && 1 / t < 0 ? 1 : 0, v = 0;
            for ((t = n(t)) != t || t === 1 / 0 ? (l = t != t ? 1 : 0,
            c = h) : (c = r(o(t) / a),
            t * (u = i(2, -c)) < 1 && (c--,
            u *= 2),
            (t += c + f >= 1 ? m / u : m * i(2, 1 - f)) * u >= 2 && (c++,
            u /= 2),
            c + f >= h ? (l = 0,
            c = h) : c + f >= 1 ? (l = (t * u - 1) * i(2, e),
            c += f) : (l = t * i(2, f - 1) * i(2, e),
            c = 0)); e >= 8; d[v++] = 255 & l,
            l /= 256,
            e -= 8)
                ;
            for (c = c << e | l,
            p += e; p > 0; d[v++] = 255 & c,
            c /= 256,
            p -= 8)
                ;
            return d[--v] |= 128 * g,
            d
        },
        unpack: function(t, e) {
            var n, r = t.length, o = 8 * r - e - 1, a = (1 << o) - 1, s = a >> 1, c = o - 7, l = r - 1, u = t[l--], d = 127 & u;
            for (u >>= 7; c > 0; d = 256 * d + t[l],
            l--,
            c -= 8)
                ;
            for (n = d & (1 << -c) - 1,
            d >>= -c,
            c += e; c > 0; n = 256 * n + t[l],
            l--,
            c -= 8)
                ;
            if (0 === d)
                d = 1 - s;
            else {
                if (d === a)
                    return n ? NaN : u ? -1 / 0 : 1 / 0;
                n += i(2, e),
                d -= s
            }
            return (u ? -1 : 1) * n * i(2, d - e)
        }
    }
}
, function(t, e, n) {
    var i = n(5)
      , r = n(46);
    i({
        target: "ArrayBuffer",
        stat: !0,
        forced: !r.NATIVE_ARRAY_BUFFER_VIEWS
    }, {
        isView: r.isView
    })
}
, function(t, e, n) {
    "use strict";
    var i = n(5)
      , r = n(18)
      , o = n(303)
      , a = n(29)
      , s = n(175)
      , c = n(44)
      , l = n(195)
      , u = o.ArrayBuffer
      , d = o.DataView
      , p = u.prototype.slice;
    i({
        target: "ArrayBuffer",
        proto: !0,
        unsafe: !0,
        forced: r((function() {
            return !new u(2).slice(1, void 0).byteLength
        }
        ))
    }, {
        slice: function(t, e) {
            if (void 0 !== p && void 0 === e)
                return p.call(a(this), t);
            for (var n = a(this).byteLength, i = s(t, n), r = s(void 0 === e ? n : e, n), o = new (l(this, u))(c(r - i)), h = new d(this), f = new d(o), m = 0; i < r; )
                f.setUint8(m++, h.getUint8(i++));
            return o
        }
    })
}
, function(t, e, n) {
    var i = n(5)
      , r = n(303);
    i({
        global: !0,
        forced: !n(371)
    }, {
        DataView: r.DataView
    })
}
, function(t, e, n) {
    n(164)("Int8", (function(t) {
        return function(e, n, i) {
            return t(this, e, n, i)
        }
    }
    ))
}
, function(t, e, n) {
    var i = n(122);
    t.exports = function(t) {
        var e = i(t);
        if (e < 0)
            throw RangeError("The argument can't be less than 0");
        return e
    }
}
, function(t, e, n) {
    n(164)("Uint8", (function(t) {
        return function(e, n, i) {
            return t(this, e, n, i)
        }
    }
    ))
}
, function(t, e, n) {
    n(164)("Uint8", (function(t) {
        return function(e, n, i) {
            return t(this, e, n, i)
        }
    }
    ), !0)
}
, function(t, e, n) {
    n(164)("Int16", (function(t) {
        return function(e, n, i) {
            return t(this, e, n, i)
        }
    }
    ))
}
, function(t, e, n) {
    n(164)("Uint16", (function(t) {
        return function(e, n, i) {
            return t(this, e, n, i)
        }
    }
    ))
}
, function(t, e, n) {
    n(164)("Int32", (function(t) {
        return function(e, n, i) {
            return t(this, e, n, i)
        }
    }
    ))
}
, function(t, e, n) {
    n(164)("Uint32", (function(t) {
        return function(e, n, i) {
            return t(this, e, n, i)
        }
    }
    ))
}
, function(t, e, n) {
    n(164)("Float32", (function(t) {
        return function(e, n, i) {
            return t(this, e, n, i)
        }
    }
    ))
}
, function(t, e, n) {
    n(164)("Float64", (function(t) {
        return function(e, n, i) {
            return t(this, e, n, i)
        }
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(372);
    (0,
    n(46).exportTypedArrayStaticMethod)("from", n(512), i)
}
, function(t, e, n) {
    "use strict";
    var i = n(46)
      , r = n(372)
      , o = i.aTypedArrayConstructor;
    (0,
    i.exportTypedArrayStaticMethod)("of", (function() {
        for (var t = 0, e = arguments.length, n = new (o(this))(e); e > t; )
            n[t] = arguments[t++];
        return n
    }
    ), r)
}
, function(t, e, n) {
    "use strict";
    var i = n(46)
      , r = n(500)
      , o = i.aTypedArray;
    (0,
    i.exportTypedArrayMethod)("copyWithin", (function(t, e) {
        return r.call(o(this), t, e, arguments.length > 2 ? arguments[2] : void 0)
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(46)
      , r = n(74).every
      , o = i.aTypedArray;
    (0,
    i.exportTypedArrayMethod)("every", (function(t) {
        return r(o(this), t, arguments.length > 1 ? arguments[1] : void 0)
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(46)
      , r = n(363)
      , o = i.aTypedArray;
    (0,
    i.exportTypedArrayMethod)("fill", (function(t) {
        return r.apply(o(this), arguments)
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(46)
      , r = n(74).filter
      , o = n(195)
      , a = i.aTypedArray
      , s = i.aTypedArrayConstructor;
    (0,
    i.exportTypedArrayMethod)("filter", (function(t) {
        for (var e = r(a(this), t, arguments.length > 1 ? arguments[1] : void 0), n = o(this, this.constructor), i = 0, c = e.length, l = new (s(n))(c); c > i; )
            l[i] = e[i++];
        return l
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(46)
      , r = n(74).find
      , o = i.aTypedArray;
    (0,
    i.exportTypedArrayMethod)("find", (function(t) {
        return r(o(this), t, arguments.length > 1 ? arguments[1] : void 0)
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(46)
      , r = n(74).findIndex
      , o = i.aTypedArray;
    (0,
    i.exportTypedArrayMethod)("findIndex", (function(t) {
        return r(o(this), t, arguments.length > 1 ? arguments[1] : void 0)
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(46)
      , r = n(74).forEach
      , o = i.aTypedArray;
    (0,
    i.exportTypedArrayMethod)("forEach", (function(t) {
        r(o(this), t, arguments.length > 1 ? arguments[1] : void 0)
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(46)
      , r = n(238).includes
      , o = i.aTypedArray;
    (0,
    i.exportTypedArrayMethod)("includes", (function(t) {
        return r(o(this), t, arguments.length > 1 ? arguments[1] : void 0)
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(46)
      , r = n(238).indexOf
      , o = i.aTypedArray;
    (0,
    i.exportTypedArrayMethod)("indexOf", (function(t) {
        return r(o(this), t, arguments.length > 1 ? arguments[1] : void 0)
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(34)
      , r = n(46)
      , o = n(285)
      , a = n(45)("iterator")
      , s = i.Uint8Array
      , c = o.values
      , l = o.keys
      , u = o.entries
      , d = r.aTypedArray
      , p = r.exportTypedArrayMethod
      , h = s && s.prototype[a]
      , f = !!h && ("values" == h.name || null == h.name)
      , m = function() {
        return c.call(d(this))
    };
    p("entries", (function() {
        return u.call(d(this))
    }
    )),
    p("keys", (function() {
        return l.call(d(this))
    }
    )),
    p("values", m, !f),
    p(a, m, !f)
}
, function(t, e, n) {
    "use strict";
    var i = n(46)
      , r = i.aTypedArray
      , o = i.exportTypedArrayMethod
      , a = [].join;
    o("join", (function(t) {
        return a.apply(r(this), arguments)
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(46)
      , r = n(502)
      , o = i.aTypedArray;
    (0,
    i.exportTypedArrayMethod)("lastIndexOf", (function(t) {
        return r.apply(o(this), arguments)
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(46)
      , r = n(74).map
      , o = n(195)
      , a = i.aTypedArray
      , s = i.aTypedArrayConstructor;
    (0,
    i.exportTypedArrayMethod)("map", (function(t) {
        return r(a(this), t, arguments.length > 1 ? arguments[1] : void 0, (function(t, e) {
            return new (s(o(t, t.constructor)))(e)
        }
        ))
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(46)
      , r = n(295).left
      , o = i.aTypedArray;
    (0,
    i.exportTypedArrayMethod)("reduce", (function(t) {
        return r(o(this), t, arguments.length, arguments.length > 1 ? arguments[1] : void 0)
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(46)
      , r = n(295).right
      , o = i.aTypedArray;
    (0,
    i.exportTypedArrayMethod)("reduceRight", (function(t) {
        return r(o(this), t, arguments.length, arguments.length > 1 ? arguments[1] : void 0)
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(46)
      , r = i.aTypedArray
      , o = i.exportTypedArrayMethod
      , a = Math.floor;
    o("reverse", (function() {
        for (var t, e = r(this).length, n = a(e / 2), i = 0; i < n; )
            t = this[i],
            this[i++] = this[--e],
            this[e] = t;
        return this
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(46)
      , r = n(44)
      , o = n(511)
      , a = n(53)
      , s = n(18)
      , c = i.aTypedArray;
    (0,
    i.exportTypedArrayMethod)("set", (function(t) {
        c(this);
        var e = o(arguments.length > 1 ? arguments[1] : void 0, 1)
          , n = this.length
          , i = a(t)
          , s = r(i.length)
          , l = 0;
        if (s + e > n)
            throw RangeError("Wrong length");
        for (; l < s; )
            this[e + l] = i[l++]
    }
    ), s((function() {
        new Int8Array(1).set({})
    }
    )))
}
, function(t, e, n) {
    "use strict";
    var i = n(46)
      , r = n(195)
      , o = n(18)
      , a = i.aTypedArray
      , s = i.aTypedArrayConstructor
      , c = i.exportTypedArrayMethod
      , l = [].slice;
    c("slice", (function(t, e) {
        for (var n = l.call(a(this), t, e), i = r(this, this.constructor), o = 0, c = n.length, u = new (s(i))(c); c > o; )
            u[o] = n[o++];
        return u
    }
    ), o((function() {
        new Int8Array(1).slice()
    }
    )))
}
, function(t, e, n) {
    "use strict";
    var i = n(46)
      , r = n(74).some
      , o = i.aTypedArray;
    (0,
    i.exportTypedArrayMethod)("some", (function(t) {
        return r(o(this), t, arguments.length > 1 ? arguments[1] : void 0)
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(46)
      , r = i.aTypedArray
      , o = i.exportTypedArrayMethod
      , a = [].sort;
    o("sort", (function(t) {
        return a.call(r(this), t)
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(46)
      , r = n(44)
      , o = n(175)
      , a = n(195)
      , s = i.aTypedArray;
    (0,
    i.exportTypedArrayMethod)("subarray", (function(t, e) {
        var n = s(this)
          , i = n.length
          , c = o(t, i);
        return new (a(n, n.constructor))(n.buffer,n.byteOffset + c * n.BYTES_PER_ELEMENT,r((void 0 === e ? i : o(e, i)) - c))
    }
    ))
}
, function(t, e, n) {
    "use strict";
    var i = n(34)
      , r = n(46)
      , o = n(18)
      , a = i.Int8Array
      , s = r.aTypedArray
      , c = r.exportTypedArrayMethod
      , l = [].toLocaleString
      , u = [].slice
      , d = !!a && o((function() {
        l.call(new a(1))
    }
    ));
    c("toLocaleString", (function() {
        return l.apply(d ? u.call(s(this)) : s(this), arguments)
    }
    ), o((function() {
        return [1, 2].toLocaleString() != new a([1, 2]).toLocaleString()
    }
    )) || !o((function() {
        a.prototype.toLocaleString.call([1, 2])
    }
    )))
}
, function(t, e, n) {
    "use strict";
    var i = n(46).exportTypedArrayMethod
      , r = n(18)
      , o = n(34).Uint8Array
      , a = o && o.prototype || {}
      , s = [].toString
      , c = [].join;
    r((function() {
        s.call({})
    }
    )) && (s = function() {
        return c.call(this)
    }
    );
    var l = a.toString != s;
    i("toString", s, l)
}
, function(t, e) {
    /*! @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js */
    "document"in self && (!("classList"in document.createElement("_")) || document.createElementNS && !("classList"in document.createElementNS("http://www.w3.org/2000/svg", "g")) ? function(t) {
        "use strict";
        if ("Element"in t) {
            var e = t.Element.prototype
              , n = Object
              , i = String.prototype.trim || function() {
                return this.replace(/^\s+|\s+$/g, "")
            }
              , r = Array.prototype.indexOf || function(t) {
                for (var e = 0, n = this.length; e < n; e++)
                    if (e in this && this[e] === t)
                        return e;
                return -1
            }
              , o = function(t, e) {
                this.name = t,
                this.code = DOMException[t],
                this.message = e
            }
              , a = function(t, e) {
                if ("" === e)
                    throw new o("SYNTAX_ERR","An invalid or illegal string was specified");
                if (/\s/.test(e))
                    throw new o("INVALID_CHARACTER_ERR","String contains an invalid character");
                return r.call(t, e)
            }
              , s = function(t) {
                for (var e = i.call(t.getAttribute("class") || ""), n = e ? e.split(/\s+/) : [], r = 0, o = n.length; r < o; r++)
                    this.push(n[r]);
                this._updateClassName = function() {
                    t.setAttribute("class", this.toString())
                }
            }
              , c = s.prototype = []
              , l = function() {
                return new s(this)
            };
            if (o.prototype = Error.prototype,
            c.item = function(t) {
                return this[t] || null
            }
            ,
            c.contains = function(t) {
                return -1 !== a(this, t += "")
            }
            ,
            c.add = function() {
                var t, e = arguments, n = 0, i = e.length, r = !1;
                do {
                    t = e[n] + "",
                    -1 === a(this, t) && (this.push(t),
                    r = !0)
                } while (++n < i);
                r && this._updateClassName()
            }
            ,
            c.remove = function() {
                var t, e, n = arguments, i = 0, r = n.length, o = !1;
                do {
                    for (t = n[i] + "",
                    e = a(this, t); -1 !== e; )
                        this.splice(e, 1),
                        o = !0,
                        e = a(this, t)
                } while (++i < r);
                o && this._updateClassName()
            }
            ,
            c.toggle = function(t, e) {
                t += "";
                var n = this.contains(t)
                  , i = n ? !0 !== e && "remove" : !1 !== e && "add";
                return i && this[i](t),
                !0 === e || !1 === e ? e : !n
            }
            ,
            c.toString = function() {
                return this.join(" ")
            }
            ,
            n.defineProperty) {
                var u = {
                    get: l,
                    enumerable: !0,
                    configurable: !0
                };
                try {
                    n.defineProperty(e, "classList", u)
                } catch (t) {
                    -2146823252 === t.number && (u.enumerable = !1,
                    n.defineProperty(e, "classList", u))
                }
            } else
                n.prototype.__defineGetter__ && e.__defineGetter__("classList", l)
        }
    }(self) : function() {
        "use strict";
        var t = document.createElement("_");
        if (t.classList.add("c1", "c2"),
        !t.classList.contains("c2")) {
            var e = function(t) {
                var e = DOMTokenList.prototype[t];
                DOMTokenList.prototype[t] = function(t) {
                    var n, i = arguments.length;
                    for (n = 0; n < i; n++)
                        t = arguments[n],
                        e.call(this, t)
                }
            };
            e("add"),
            e("remove")
        }
        if (t.classList.toggle("c3", !1),
        t.classList.contains("c3")) {
            var n = DOMTokenList.prototype.toggle;
            DOMTokenList.prototype.toggle = function(t, e) {
                return 1 in arguments && !this.contains(t) == !e ? e : n.call(this, t)
            }
        }
        t = null
    }())
}
, function(t, e, n) {
    (function(i) {
        var r, o;
        /**
* @license Angular v9.1.0-next.4+61.sha-e552591.with-local-changes
* (c) 2010-2020 Google LLC. https://angular.io/
* License: MIT
*/
        void 0 === (o = "function" == typeof (r = function() {
            "use strict";
            /**
     * @license
     * Copyright Google Inc. All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://angular.io/license
     */
            !function(t) {
                var e = t.performance;
                function n(t) {
                    e && e.mark && e.mark(t)
                }
                function i(t, n) {
                    e && e.measure && e.measure(t, n)
                }
                n("Zone");
                var r = t.__Zone_symbol_prefix || "__zone_symbol__";
                function o(t) {
                    return r + t
                }
                var a = !0 === t[o("forceDuplicateZoneCheck")];
                if (t.Zone) {
                    if (a || "function" != typeof t.Zone.__symbol__)
                        throw new Error("Zone already loaded.");
                    return t.Zone
                }
                var s = function() {
                    function e(t, e) {
                        this._parent = t,
                        this._name = e ? e.name || "unnamed" : "<root>",
                        this._properties = e && e.properties || {},
                        this._zoneDelegate = new u(this,this._parent && this._parent._zoneDelegate,e)
                    }
                    return e.assertZonePatched = function() {
                        if (t.Promise !== _.ZoneAwarePromise)
                            throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")
                    }
                    ,
                    Object.defineProperty(e, "root", {
                        get: function() {
                            for (var t = e.current; t.parent; )
                                t = t.parent;
                            return t
                        },
                        enumerable: !0,
                        configurable: !0
                    }),
                    Object.defineProperty(e, "current", {
                        get: function() {
                            return I.zone
                        },
                        enumerable: !0,
                        configurable: !0
                    }),
                    Object.defineProperty(e, "currentTask", {
                        get: function() {
                            return k
                        },
                        enumerable: !0,
                        configurable: !0
                    }),
                    e.__load_patch = function(r, o) {
                        if (_.hasOwnProperty(r)) {
                            if (a)
                                throw Error("Already loaded patch: " + r)
                        } else if (!t["__Zone_disable_" + r]) {
                            var s = "Zone:" + r;
                            n(s),
                            _[r] = o(t, e, P),
                            i(s, s)
                        }
                    }
                    ,
                    Object.defineProperty(e.prototype, "parent", {
                        get: function() {
                            return this._parent
                        },
                        enumerable: !0,
                        configurable: !0
                    }),
                    Object.defineProperty(e.prototype, "name", {
                        get: function() {
                            return this._name
                        },
                        enumerable: !0,
                        configurable: !0
                    }),
                    e.prototype.get = function(t) {
                        var e = this.getZoneWith(t);
                        if (e)
                            return e._properties[t]
                    }
                    ,
                    e.prototype.getZoneWith = function(t) {
                        for (var e = this; e; ) {
                            if (e._properties.hasOwnProperty(t))
                                return e;
                            e = e._parent
                        }
                        return null
                    }
                    ,
                    e.prototype.fork = function(t) {
                        if (!t)
                            throw new Error("ZoneSpec required!");
                        return this._zoneDelegate.fork(this, t)
                    }
                    ,
                    e.prototype.wrap = function(t, e) {
                        if ("function" != typeof t)
                            throw new Error("Expecting function got: " + t);
                        var n = this._zoneDelegate.intercept(this, t, e)
                          , i = this;
                        return function() {
                            return i.runGuarded(n, this, arguments, e)
                        }
                    }
                    ,
                    e.prototype.run = function(t, e, n, i) {
                        I = {
                            parent: I,
                            zone: this
                        };
                        try {
                            return this._zoneDelegate.invoke(this, t, e, n, i)
                        } finally {
                            I = I.parent
                        }
                    }
                    ,
                    e.prototype.runGuarded = function(t, e, n, i) {
                        void 0 === e && (e = null),
                        I = {
                            parent: I,
                            zone: this
                        };
                        try {
                            try {
                                return this._zoneDelegate.invoke(this, t, e, n, i)
                            } catch (t) {
                                if (this._zoneDelegate.handleError(this, t))
                                    throw t
                            }
                        } finally {
                            I = I.parent
                        }
                    }
                    ,
                    e.prototype.runTask = function(t, e, n) {
                        if (t.zone != this)
                            throw new Error("A task can only be run in the zone of creation! (Creation: " + (t.zone || b).name + "; Execution: " + this.name + ")");
                        if (t.state !== w || t.type !== O && t.type !== T) {
                            var i = t.state != M;
                            i && t._transitionTo(M, x),
                            t.runCount++;
                            var r = k;
                            k = t,
                            I = {
                                parent: I,
                                zone: this
                            };
                            try {
                                t.type == T && t.data && !t.data.isPeriodic && (t.cancelFn = void 0);
                                try {
                                    return this._zoneDelegate.invokeTask(this, t, e, n)
                                } catch (t) {
                                    if (this._zoneDelegate.handleError(this, t))
                                        throw t
                                }
                            } finally {
                                t.state !== w && t.state !== C && (t.type == O || t.data && t.data.isPeriodic ? i && t._transitionTo(x, M) : (t.runCount = 0,
                                this._updateTaskCount(t, -1),
                                i && t._transitionTo(w, M, w))),
                                I = I.parent,
                                k = r
                            }
                        }
                    }
                    ,
                    e.prototype.scheduleTask = function(t) {
                        if (t.zone && t.zone !== this)
                            for (var e = this; e; ) {
                                if (e === t.zone)
                                    throw Error("can not reschedule task to " + this.name + " which is descendants of the original zone " + t.zone.name);
                                e = e.parent
                            }
                        t._transitionTo(S, w);
                        var n = [];
                        t._zoneDelegates = n,
                        t._zone = this;
                        try {
                            t = this._zoneDelegate.scheduleTask(this, t)
                        } catch (e) {
                            throw t._transitionTo(C, S, w),
                            this._zoneDelegate.handleError(this, e),
                            e
                        }
                        return t._zoneDelegates === n && this._updateTaskCount(t, 1),
                        t.state == S && t._transitionTo(x, S),
                        t
                    }
                    ,
                    e.prototype.scheduleMicroTask = function(t, e, n, i) {
                        return this.scheduleTask(new d(A,t,e,n,i,void 0))
                    }
                    ,
                    e.prototype.scheduleMacroTask = function(t, e, n, i, r) {
                        return this.scheduleTask(new d(T,t,e,n,i,r))
                    }
                    ,
                    e.prototype.scheduleEventTask = function(t, e, n, i, r) {
                        return this.scheduleTask(new d(O,t,e,n,i,r))
                    }
                    ,
                    e.prototype.cancelTask = function(t) {
                        if (t.zone != this)
                            throw new Error("A task can only be cancelled in the zone of creation! (Creation: " + (t.zone || b).name + "; Execution: " + this.name + ")");
                        t._transitionTo(E, x, M);
                        try {
                            this._zoneDelegate.cancelTask(this, t)
                        } catch (e) {
                            throw t._transitionTo(C, E),
                            this._zoneDelegate.handleError(this, e),
                            e
                        }
                        return this._updateTaskCount(t, -1),
                        t._transitionTo(w, E),
                        t.runCount = 0,
                        t
                    }
                    ,
                    e.prototype._updateTaskCount = function(t, e) {
                        var n = t._zoneDelegates;
                        -1 == e && (t._zoneDelegates = null);
                        for (var i = 0; i < n.length; i++)
                            n[i]._updateTaskCount(t.type, e)
                    }
                    ,
                    e
                }();
                s.__symbol__ = o;
                var c, l = {
                    name: "",
                    onHasTask: function(t, e, n, i) {
                        return t.hasTask(n, i)
                    },
                    onScheduleTask: function(t, e, n, i) {
                        return t.scheduleTask(n, i)
                    },
                    onInvokeTask: function(t, e, n, i, r, o) {
                        return t.invokeTask(n, i, r, o)
                    },
                    onCancelTask: function(t, e, n, i) {
                        return t.cancelTask(n, i)
                    }
                }, u = function() {
                    function t(t, e, n) {
                        this._taskCounts = {
                            microTask: 0,
                            macroTask: 0,
                            eventTask: 0
                        },
                        this.zone = t,
                        this._parentDelegate = e,
                        this._forkZS = n && (n && n.onFork ? n : e._forkZS),
                        this._forkDlgt = n && (n.onFork ? e : e._forkDlgt),
                        this._forkCurrZone = n && (n.onFork ? this.zone : e._forkCurrZone),
                        this._interceptZS = n && (n.onIntercept ? n : e._interceptZS),
                        this._interceptDlgt = n && (n.onIntercept ? e : e._interceptDlgt),
                        this._interceptCurrZone = n && (n.onIntercept ? this.zone : e._interceptCurrZone),
                        this._invokeZS = n && (n.onInvoke ? n : e._invokeZS),
                        this._invokeDlgt = n && (n.onInvoke ? e : e._invokeDlgt),
                        this._invokeCurrZone = n && (n.onInvoke ? this.zone : e._invokeCurrZone),
                        this._handleErrorZS = n && (n.onHandleError ? n : e._handleErrorZS),
                        this._handleErrorDlgt = n && (n.onHandleError ? e : e._handleErrorDlgt),
                        this._handleErrorCurrZone = n && (n.onHandleError ? this.zone : e._handleErrorCurrZone),
                        this._scheduleTaskZS = n && (n.onScheduleTask ? n : e._scheduleTaskZS),
                        this._scheduleTaskDlgt = n && (n.onScheduleTask ? e : e._scheduleTaskDlgt),
                        this._scheduleTaskCurrZone = n && (n.onScheduleTask ? this.zone : e._scheduleTaskCurrZone),
                        this._invokeTaskZS = n && (n.onInvokeTask ? n : e._invokeTaskZS),
                        this._invokeTaskDlgt = n && (n.onInvokeTask ? e : e._invokeTaskDlgt),
                        this._invokeTaskCurrZone = n && (n.onInvokeTask ? this.zone : e._invokeTaskCurrZone),
                        this._cancelTaskZS = n && (n.onCancelTask ? n : e._cancelTaskZS),
                        this._cancelTaskDlgt = n && (n.onCancelTask ? e : e._cancelTaskDlgt),
                        this._cancelTaskCurrZone = n && (n.onCancelTask ? this.zone : e._cancelTaskCurrZone),
                        this._hasTaskZS = null,
                        this._hasTaskDlgt = null,
                        this._hasTaskDlgtOwner = null,
                        this._hasTaskCurrZone = null;
                        var i = n && n.onHasTask
                          , r = e && e._hasTaskZS;
                        (i || r) && (this._hasTaskZS = i ? n : l,
                        this._hasTaskDlgt = e,
                        this._hasTaskDlgtOwner = this,
                        this._hasTaskCurrZone = t,
                        n.onScheduleTask || (this._scheduleTaskZS = l,
                        this._scheduleTaskDlgt = e,
                        this._scheduleTaskCurrZone = this.zone),
                        n.onInvokeTask || (this._invokeTaskZS = l,
                        this._invokeTaskDlgt = e,
                        this._invokeTaskCurrZone = this.zone),
                        n.onCancelTask || (this._cancelTaskZS = l,
                        this._cancelTaskDlgt = e,
                        this._cancelTaskCurrZone = this.zone))
                    }
                    return t.prototype.fork = function(t, e) {
                        return this._forkZS ? this._forkZS.onFork(this._forkDlgt, this.zone, t, e) : new s(t,e)
                    }
                    ,
                    t.prototype.intercept = function(t, e, n) {
                        return this._interceptZS ? this._interceptZS.onIntercept(this._interceptDlgt, this._interceptCurrZone, t, e, n) : e
                    }
                    ,
                    t.prototype.invoke = function(t, e, n, i, r) {
                        return this._invokeZS ? this._invokeZS.onInvoke(this._invokeDlgt, this._invokeCurrZone, t, e, n, i, r) : e.apply(n, i)
                    }
                    ,
                    t.prototype.handleError = function(t, e) {
                        return !this._handleErrorZS || this._handleErrorZS.onHandleError(this._handleErrorDlgt, this._handleErrorCurrZone, t, e)
                    }
                    ,
                    t.prototype.scheduleTask = function(t, e) {
                        var n = e;
                        if (this._scheduleTaskZS)
                            this._hasTaskZS && n._zoneDelegates.push(this._hasTaskDlgtOwner),
                            (n = this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt, this._scheduleTaskCurrZone, t, e)) || (n = e);
                        else if (e.scheduleFn)
                            e.scheduleFn(e);
                        else {
                            if (e.type != A)
                                throw new Error("Task is missing scheduleFn.");
                            v(e)
                        }
                        return n
                    }
                    ,
                    t.prototype.invokeTask = function(t, e, n, i) {
                        return this._invokeTaskZS ? this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt, this._invokeTaskCurrZone, t, e, n, i) : e.callback.apply(n, i)
                    }
                    ,
                    t.prototype.cancelTask = function(t, e) {
                        var n;
                        if (this._cancelTaskZS)
                            n = this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt, this._cancelTaskCurrZone, t, e);
                        else {
                            if (!e.cancelFn)
                                throw Error("Task is not cancelable");
                            n = e.cancelFn(e)
                        }
                        return n
                    }
                    ,
                    t.prototype.hasTask = function(t, e) {
                        try {
                            this._hasTaskZS && this._hasTaskZS.onHasTask(this._hasTaskDlgt, this._hasTaskCurrZone, t, e)
                        } catch (e) {
                            this.handleError(t, e)
                        }
                    }
                    ,
                    t.prototype._updateTaskCount = function(t, e) {
                        var n = this._taskCounts
                          , i = n[t]
                          , r = n[t] = i + e;
                        if (r < 0)
                            throw new Error("More tasks executed then were scheduled.");
                        if (0 == i || 0 == r) {
                            var o = {
                                microTask: n.microTask > 0,
                                macroTask: n.macroTask > 0,
                                eventTask: n.eventTask > 0,
                                change: t
                            };
                            this.hasTask(this.zone, o)
                        }
                    }
                    ,
                    t
                }(), d = function() {
                    function e(n, i, r, o, a, s) {
                        if (this._zone = null,
                        this.runCount = 0,
                        this._zoneDelegates = null,
                        this._state = "notScheduled",
                        this.type = n,
                        this.source = i,
                        this.data = o,
                        this.scheduleFn = a,
                        this.cancelFn = s,
                        !r)
                            throw new Error("callback is not defined");
                        this.callback = r;
                        var c = this;
                        n === O && o && o.useG ? this.invoke = e.invokeTask : this.invoke = function() {
                            return e.invokeTask.call(t, c, this, arguments)
                        }
                    }
                    return e.invokeTask = function(t, e, n) {
                        t || (t = this),
                        D++;
                        try {
                            return t.runCount++,
                            t.zone.runTask(t, e, n)
                        } finally {
                            1 == D && y(),
                            D--
                        }
                    }
                    ,
                    Object.defineProperty(e.prototype, "zone", {
                        get: function() {
                            return this._zone
                        },
                        enumerable: !0,
                        configurable: !0
                    }),
                    Object.defineProperty(e.prototype, "state", {
                        get: function() {
                            return this._state
                        },
                        enumerable: !0,
                        configurable: !0
                    }),
                    e.prototype.cancelScheduleRequest = function() {
                        this._transitionTo(w, S)
                    }
                    ,
                    e.prototype._transitionTo = function(t, e, n) {
                        if (this._state !== e && this._state !== n)
                            throw new Error(this.type + " '" + this.source + "': can not transition to '" + t + "', expecting state '" + e + "'" + (n ? " or '" + n + "'" : "") + ", was '" + this._state + "'.");
                        this._state = t,
                        t == w && (this._zoneDelegates = null)
                    }
                    ,
                    e.prototype.toString = function() {
                        return this.data && void 0 !== this.data.handleId ? this.data.handleId.toString() : Object.prototype.toString.call(this)
                    }
                    ,
                    e.prototype.toJSON = function() {
                        return {
                            type: this.type,
                            state: this.state,
                            source: this.source,
                            zone: this.zone.name,
                            runCount: this.runCount
                        }
                    }
                    ,
                    e
                }(), p = o("setTimeout"), h = o("Promise"), f = o("then"), m = [], g = !1;
                function v(e) {
                    if (0 === D && 0 === m.length)
                        if (c || t[h] && (c = t[h].resolve(0)),
                        c) {
                            var n = c[f];
                            n || (n = c.then),
                            n.call(c, y)
                        } else
                            t[p](y, 0);
                    e && m.push(e)
                }
                function y() {
                    if (!g) {
                        for (g = !0; m.length; ) {
                            var t = m;
                            m = [];
                            for (var e = 0; e < t.length; e++) {
                                var n = t[e];
                                try {
                                    n.zone.runTask(n, null, null)
                                } catch (t) {
                                    P.onUnhandledError(t)
                                }
                            }
                        }
                        P.microtaskDrainDone(),
                        g = !1
                    }
                }
                var b = {
                    name: "NO ZONE"
                }
                  , w = "notScheduled"
                  , S = "scheduling"
                  , x = "scheduled"
                  , M = "running"
                  , E = "canceling"
                  , C = "unknown"
                  , A = "microTask"
                  , T = "macroTask"
                  , O = "eventTask"
                  , _ = {}
                  , P = {
                    symbol: o,
                    currentZoneFrame: function() {
                        return I
                    },
                    onUnhandledError: R,
                    microtaskDrainDone: R,
                    scheduleMicroTask: v,
                    showUncaughtError: function() {
                        return !s[o("ignoreConsoleErrorUncaughtError")]
                    },
                    patchEventTarget: function() {
                        return []
                    },
                    patchOnProperties: R,
                    patchMethod: function() {
                        return R
                    },
                    bindArguments: function() {
                        return []
                    },
                    patchThen: function() {
                        return R
                    },
                    patchMacroTask: function() {
                        return R
                    },
                    setNativePromise: function(t) {
                        t && "function" == typeof t.resolve && (c = t.resolve(0))
                    },
                    patchEventPrototype: function() {
                        return R
                    },
                    isIEOrEdge: function() {
                        return !1
                    },
                    getGlobalObjects: function() {},
                    ObjectDefineProperty: function() {
                        return R
                    },
                    ObjectGetOwnPropertyDescriptor: function() {},
                    ObjectCreate: function() {},
                    ArraySlice: function() {
                        return []
                    },
                    patchClass: function() {
                        return R
                    },
                    wrapWithCurrentZone: function() {
                        return R
                    },
                    filterProperties: function() {
                        return []
                    },
                    attachOriginToPatched: function() {
                        return R
                    },
                    _redefineProperty: function() {
                        return R
                    },
                    patchCallbacks: function() {
                        return R
                    }
                }
                  , I = {
                    parent: null,
                    zone: new s(null,null)
                }
                  , k = null
                  , D = 0;
                function R() {}
                i("Zone", "Zone"),
                t.Zone = s
            }("undefined" != typeof window && window || "undefined" != typeof self && self || i),
            /**
     * @license
     * Copyright Google Inc. All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://angular.io/license
     */
            Zone.__load_patch("ZoneAwarePromise", (function(t, e, n) {
                var i = Object.getOwnPropertyDescriptor
                  , r = Object.defineProperty
                  , o = n.symbol
                  , a = []
                  , s = !0 === t[o("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")]
                  , c = o("Promise")
                  , l = o("then");
                n.onUnhandledError = function(t) {
                    if (n.showUncaughtError()) {
                        var e = t && t.rejection;
                        e ? console.error("Unhandled Promise rejection:", e instanceof Error ? e.message : e, "; Zone:", t.zone.name, "; Task:", t.task && t.task.source, "; Value:", e, e instanceof Error ? e.stack : void 0) : console.error(t)
                    }
                }
                ,
                n.microtaskDrainDone = function() {
                    for (var t = function() {
                        var t = a.shift();
                        try {
                            t.zone.runGuarded((function() {
                                throw t
                            }
                            ))
                        } catch (t) {
                            !function(t) {
                                n.onUnhandledError(t);
                                try {
                                    var i = e[u];
                                    "function" == typeof i && i.call(this, t)
                                } catch (t) {}
                            }(t)
                        }
                    }; a.length; )
                        t()
                }
                ;
                var u = o("unhandledPromiseRejectionHandler");
                function d(t) {
                    return t && t.then
                }
                function p(t) {
                    return t
                }
                function h(t) {
                    return A.reject(t)
                }
                var f = o("state")
                  , m = o("value")
                  , g = o("finally")
                  , v = o("parentPromiseValue")
                  , y = o("parentPromiseState");
                function b(t, e) {
                    return function(n) {
                        try {
                            S(t, e, n)
                        } catch (e) {
                            S(t, !1, e)
                        }
                    }
                }
                var w = o("currentTaskTrace");
                function S(t, i, o) {
                    var c, l = (c = !1,
                    function(t) {
                        return function() {
                            c || (c = !0,
                            t.apply(null, arguments))
                        }
                    }
                    );
                    if (t === o)
                        throw new TypeError("Promise resolved with itself");
                    if (null === t[f]) {
                        var u = null;
                        try {
                            "object" != typeof o && "function" != typeof o || (u = o && o.then)
                        } catch (e) {
                            return l((function() {
                                S(t, !1, e)
                            }
                            ))(),
                            t
                        }
                        if (!1 !== i && o instanceof A && o.hasOwnProperty(f) && o.hasOwnProperty(m) && null !== o[f])
                            M(o),
                            S(t, o[f], o[m]);
                        else if (!1 !== i && "function" == typeof u)
                            try {
                                u.call(o, l(b(t, i)), l(b(t, !1)))
                            } catch (e) {
                                l((function() {
                                    S(t, !1, e)
                                }
                                ))()
                            }
                        else {
                            t[f] = i;
                            var d = t[m];
                            if (t[m] = o,
                            t[g] === g && !0 === i && (t[f] = t[y],
                            t[m] = t[v]),
                            !1 === i && o instanceof Error) {
                                var p = e.currentTask && e.currentTask.data && e.currentTask.data.__creationTrace__;
                                p && r(o, w, {
                                    configurable: !0,
                                    enumerable: !1,
                                    writable: !0,
                                    value: p
                                })
                            }
                            for (var h = 0; h < d.length; )
                                E(t, d[h++], d[h++], d[h++], d[h++]);
                            if (0 == d.length && 0 == i) {
                                t[f] = 0;
                                var x = o;
                                if (!s)
                                    try {
                                        throw new Error("Uncaught (in promise): " + function(t) {
                                            if (t && t.toString === Object.prototype.toString) {
                                                var e = t.constructor && t.constructor.name;
                                                return (e || "") + ": " + JSON.stringify(t)
                                            }
                                            return t ? t.toString() : Object.prototype.toString.call(t)
                                        }(o) + (o && o.stack ? "\n" + o.stack : ""))
                                    } catch (t) {
                                        x = t
                                    }
                                x.rejection = o,
                                x.promise = t,
                                x.zone = e.current,
                                x.task = e.currentTask,
                                a.push(x),
                                n.scheduleMicroTask()
                            }
                        }
                    }
                    return t
                }
                var x = o("rejectionHandledHandler");
                function M(t) {
                    if (0 === t[f]) {
                        try {
                            var n = e[x];
                            n && "function" == typeof n && n.call(this, {
                                rejection: t[m],
                                promise: t
                            })
                        } catch (t) {}
                        t[f] = !1;
                        for (var i = 0; i < a.length; i++)
                            t === a[i].promise && a.splice(i, 1)
                    }
                }
                function E(t, e, n, i, r) {
                    M(t);
                    var o = t[f]
                      , a = o ? "function" == typeof i ? i : p : "function" == typeof r ? r : h;
                    e.scheduleMicroTask("Promise.then", (function() {
                        try {
                            var i = t[m]
                              , r = !!n && g === n[g];
                            r && (n[v] = i,
                            n[y] = o);
                            var s = e.run(a, void 0, r && a !== h && a !== p ? [] : [i]);
                            S(n, !0, s)
                        } catch (t) {
                            S(n, !1, t)
                        }
                    }
                    ), n)
                }
                var C = function() {}
                  , A = function() {
                    function t(e) {
                        if (!(this instanceof t))
                            throw new Error("Must be an instanceof Promise.");
                        this[f] = null,
                        this[m] = [];
                        try {
                            e && e(b(this, !0), b(this, !1))
                        } catch (t) {
                            S(this, !1, t)
                        }
                    }
                    return t.toString = function() {
                        return "function ZoneAwarePromise() { [native code] }"
                    }
                    ,
                    t.resolve = function(t) {
                        return S(new this(null), !0, t)
                    }
                    ,
                    t.reject = function(t) {
                        return S(new this(null), !1, t)
                    }
                    ,
                    t.race = function(t) {
                        var e, n, i = new this((function(t, i) {
                            e = t,
                            n = i
                        }
                        ));
                        function r(t) {
                            e(t)
                        }
                        function o(t) {
                            n(t)
                        }
                        for (var a = 0, s = t; a < s.length; a++) {
                            var c = s[a];
                            d(c) || (c = this.resolve(c)),
                            c.then(r, o)
                        }
                        return i
                    }
                    ,
                    t.all = function(e) {
                        return t.allWithCallback(e)
                    }
                    ,
                    t.allSettled = function(e) {
                        return (this && this.prototype instanceof t ? this : t).allWithCallback(e, {
                            thenCallback: function(t) {
                                return {
                                    status: "fulfilled",
                                    value: t
                                }
                            },
                            errorCallback: function(t) {
                                return {
                                    status: "rejected",
                                    reason: t
                                }
                            }
                        })
                    }
                    ,
                    t.allWithCallback = function(t, e) {
                        for (var n, i, r = new this((function(t, e) {
                            n = t,
                            i = e
                        }
                        )), o = 2, a = 0, s = [], c = function(t) {
                            d(t) || (t = l.resolve(t));
                            var r = a;
                            try {
                                t.then((function(t) {
                                    s[r] = e ? e.thenCallback(t) : t,
                                    0 == --o && n(s)
                                }
                                ), (function(t) {
                                    e ? (s[r] = e.errorCallback(t),
                                    0 == --o && n(s)) : i(t)
                                }
                                ))
                            } catch (t) {
                                i(t)
                            }
                            o++,
                            a++
                        }, l = this, u = 0, p = t; u < p.length; u++)
                            c(p[u]);
                        return 0 == (o -= 2) && n(s),
                        r
                    }
                    ,
                    Object.defineProperty(t.prototype, Symbol.toStringTag, {
                        get: function() {
                            return "Promise"
                        },
                        enumerable: !0,
                        configurable: !0
                    }),
                    Object.defineProperty(t.prototype, Symbol.species, {
                        get: function() {
                            return t
                        },
                        enumerable: !0,
                        configurable: !0
                    }),
                    t.prototype.then = function(n, i) {
                        var r = this.constructor[Symbol.species];
                        r && "function" == typeof r || (r = this.constructor || t);
                        var o = new r(C)
                          , a = e.current;
                        return null == this[f] ? this[m].push(a, o, n, i) : E(this, a, o, n, i),
                        o
                    }
                    ,
                    t.prototype.catch = function(t) {
                        return this.then(null, t)
                    }
                    ,
                    t.prototype.finally = function(n) {
                        var i = this.constructor[Symbol.species];
                        i && "function" == typeof i || (i = t);
                        var r = new i(C);
                        r[g] = g;
                        var o = e.current;
                        return null == this[f] ? this[m].push(o, r, n, n) : E(this, o, r, n, n),
                        r
                    }
                    ,
                    t
                }();
                A.resolve = A.resolve,
                A.reject = A.reject,
                A.race = A.race,
                A.all = A.all;
                var T = t[c] = t.Promise
                  , O = e.__symbol__("ZoneAwarePromise")
                  , _ = i(t, "Promise");
                _ && !_.configurable || (_ && delete _.writable,
                _ && delete _.value,
                _ || (_ = {
                    configurable: !0,
                    enumerable: !0
                }),
                _.get = function() {
                    return t[O] ? t[O] : t[c]
                }
                ,
                _.set = function(e) {
                    e === A ? t[O] = e : (t[c] = e,
                    e.prototype[l] || k(e),
                    n.setNativePromise(e))
                }
                ,
                r(t, "Promise", _)),
                t.Promise = A;
                var P, I = o("thenPatched");
                function k(t) {
                    var e = t.prototype
                      , n = i(e, "then");
                    if (!n || !1 !== n.writable && n.configurable) {
                        var r = e.then;
                        e[l] = r,
                        t.prototype.then = function(t, e) {
                            var n = this;
                            return new A((function(t, e) {
                                r.call(n, t, e)
                            }
                            )).then(t, e)
                        }
                        ,
                        t[I] = !0
                    }
                }
                if (n.patchThen = k,
                T) {
                    k(T);
                    var D = t.fetch;
                    "function" == typeof D && (t[n.symbol("fetch")] = D,
                    t.fetch = (P = D,
                    function() {
                        var t = P.apply(this, arguments);
                        if (t instanceof A)
                            return t;
                        var e = t.constructor;
                        return e[I] || k(e),
                        t
                    }
                    ))
                }
                return Promise[e.__symbol__("uncaughtPromiseErrors")] = a,
                A
            }
            ));
            /**
     * @license
     * Copyright Google Inc. All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://angular.io/license
     */
            var t = Object.getOwnPropertyDescriptor
              , e = Object.defineProperty
              , n = Object.getPrototypeOf
              , r = Object.create
              , o = Array.prototype.slice
              , a = Zone.__symbol__("addEventListener")
              , s = Zone.__symbol__("removeEventListener")
              , c = Zone.__symbol__("");
            function l(t, e) {
                return Zone.current.wrap(t, e)
            }
            function u(t, e, n, i, r) {
                return Zone.current.scheduleMacroTask(t, e, n, i, r)
            }
            var d = Zone.__symbol__
              , p = "undefined" != typeof window
              , h = p ? window : void 0
              , f = p && h || "object" == typeof self && self || i
              , m = [null];
            function g(t, e) {
                for (var n = t.length - 1; n >= 0; n--)
                    "function" == typeof t[n] && (t[n] = l(t[n], e + "_" + n));
                return t
            }
            function v(t) {
                return !t || !1 !== t.writable && !("function" == typeof t.get && void 0 === t.set)
            }
            var y = "undefined" != typeof WorkerGlobalScope && self instanceof WorkerGlobalScope
              , b = !("nw"in f) && void 0 !== f.process && "[object process]" === {}.toString.call(f.process)
              , w = !b && !y && !(!p || !h.HTMLElement)
              , S = void 0 !== f.process && "[object process]" === {}.toString.call(f.process) && !y && !(!p || !h.HTMLElement)
              , x = {}
              , M = function(t) {
                if (t = t || f.event) {
                    var e = x[t.type];
                    e || (e = x[t.type] = d("ON_PROPERTY" + t.type));
                    var n, i = this || t.target || f, r = i[e];
                    if (w && i === h && "error" === t.type) {
                        var o = t;
                        !0 === (n = r && r.call(this, o.message, o.filename, o.lineno, o.colno, o.error)) && t.preventDefault()
                    } else
                        null == (n = r && r.apply(this, arguments)) || n || t.preventDefault();
                    return n
                }
            };
            function E(n, i, r) {
                var o = t(n, i);
                if (!o && r && t(r, i) && (o = {
                    enumerable: !0,
                    configurable: !0
                }),
                o && o.configurable) {
                    var a = d("on" + i + "patched");
                    if (!n.hasOwnProperty(a) || !n[a]) {
                        delete o.writable,
                        delete o.value;
                        var s = o.get
                          , c = o.set
                          , l = i.substr(2)
                          , u = x[l];
                        u || (u = x[l] = d("ON_PROPERTY" + l)),
                        o.set = function(t) {
                            var e = this;
                            e || n !== f || (e = f),
                            e && (e[u] && e.removeEventListener(l, M),
                            c && c.apply(e, m),
                            "function" == typeof t ? (e[u] = t,
                            e.addEventListener(l, M, !1)) : e[u] = null)
                        }
                        ,
                        o.get = function() {
                            var t = this;
                            if (t || n !== f || (t = f),
                            !t)
                                return null;
                            var e = t[u];
                            if (e)
                                return e;
                            if (s) {
                                var r = s && s.call(this);
                                if (r)
                                    return o.set.call(this, r),
                                    "function" == typeof t.removeAttribute && t.removeAttribute(i),
                                    r
                            }
                            return null
                        }
                        ,
                        e(n, i, o),
                        n[a] = !0
                    }
                }
            }
            function C(t, e, n) {
                if (e)
                    for (var i = 0; i < e.length; i++)
                        E(t, "on" + e[i], n);
                else {
                    var r = [];
                    for (var o in t)
                        "on" == o.substr(0, 2) && r.push(o);
                    for (var a = 0; a < r.length; a++)
                        E(t, r[a], n)
                }
            }
            var A = d("originalInstance");
            function T(t) {
                var n = f[t];
                if (n) {
                    f[d(t)] = n,
                    f[t] = function() {
                        var e = g(arguments, t);
                        switch (e.length) {
                        case 0:
                            this[A] = new n;
                            break;
                        case 1:
                            this[A] = new n(e[0]);
                            break;
                        case 2:
                            this[A] = new n(e[0],e[1]);
                            break;
                        case 3:
                            this[A] = new n(e[0],e[1],e[2]);
                            break;
                        case 4:
                            this[A] = new n(e[0],e[1],e[2],e[3]);
                            break;
                        default:
                            throw new Error("Arg list too long.")
                        }
                    }
                    ,
                    P(f[t], n);
                    var i, r = new n((function() {}
                    ));
                    for (i in r)
                        "XMLHttpRequest" === t && "responseBlob" === i || function(n) {
                            "function" == typeof r[n] ? f[t].prototype[n] = function() {
                                return this[A][n].apply(this[A], arguments)
                            }
                            : e(f[t].prototype, n, {
                                set: function(e) {
                                    "function" == typeof e ? (this[A][n] = l(e, t + "." + n),
                                    P(this[A][n], e)) : this[A][n] = e
                                },
                                get: function() {
                                    return this[A][n]
                                }
                            })
                        }(i);
                    for (i in n)
                        "prototype" !== i && n.hasOwnProperty(i) && (f[t][i] = n[i])
                }
            }
            function O(e, i, r) {
                for (var o = e; o && !o.hasOwnProperty(i); )
                    o = n(o);
                !o && e[i] && (o = e);
                var a = d(i)
                  , s = null;
                if (o && !(s = o[a]) && (s = o[a] = o[i],
                v(o && t(o, i)))) {
                    var c = r(s, a, i);
                    o[i] = function() {
                        return c(this, arguments)
                    }
                    ,
                    P(o[i], s)
                }
                return s
            }
            function _(t, e, n) {
                var i = null;
                function r(t) {
                    var e = t.data;
                    return e.args[e.cbIdx] = function() {
                        t.invoke.apply(this, arguments)
                    }
                    ,
                    i.apply(e.target, e.args),
                    t
                }
                i = O(t, e, (function(t) {
                    return function(e, i) {
                        var o = n(e, i);
                        return o.cbIdx >= 0 && "function" == typeof i[o.cbIdx] ? u(o.name, i[o.cbIdx], o, r) : t.apply(e, i)
                    }
                }
                ))
            }
            function P(t, e) {
                t[d("OriginalDelegate")] = e
            }
            var I = !1
              , k = !1;
            function D() {
                try {
                    var t = h.navigator.userAgent;
                    if (-1 !== t.indexOf("MSIE ") || -1 !== t.indexOf("Trident/"))
                        return !0
                } catch (t) {}
                return !1
            }
            function R() {
                if (I)
                    return k;
                I = !0;
                try {
                    var t = h.navigator.userAgent;
                    -1 === t.indexOf("MSIE ") && -1 === t.indexOf("Trident/") && -1 === t.indexOf("Edge/") || (k = !0)
                } catch (t) {}
                return k
            }
            /**
     * @license
     * Copyright Google Inc. All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://angular.io/license
     */
            Zone.__load_patch("toString", (function(t) {
                var e = Function.prototype.toString
                  , n = d("OriginalDelegate")
                  , i = d("Promise")
                  , r = d("Error")
                  , o = function() {
                    if ("function" == typeof this) {
                        var o = this[n];
                        if (o)
                            return "function" == typeof o ? e.call(o) : Object.prototype.toString.call(o);
                        if (this === Promise) {
                            var a = t[i];
                            if (a)
                                return e.call(a)
                        }
                        if (this === Error) {
                            var s = t[r];
                            if (s)
                                return e.call(s)
                        }
                    }
                    return e.call(this)
                };
                o[n] = e,
                Function.prototype.toString = o;
                var a = Object.prototype.toString;
                Object.prototype.toString = function() {
                    return this instanceof Promise ? "[object Promise]" : a.call(this)
                }
            }
            ));
            /**
     * @license
     * Copyright Google Inc. All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://angular.io/license
     */
            var L = !1;
            if ("undefined" != typeof window)
                try {
                    var N = Object.defineProperty({}, "passive", {
                        get: function() {
                            L = !0
                        }
                    });
                    window.addEventListener("test", N, N),
                    window.removeEventListener("test", N, N)
                } catch (t) {
                    L = !1
                }
            var j = {
                useG: !0
            }
              , V = {}
              , F = {}
              , U = new RegExp("^" + c + "(\\w+)(true|false)$")
              , B = d("propagationStopped");
            function z(t, e) {
                var n = (e ? e(t) : t) + "false"
                  , i = (e ? e(t) : t) + "true"
                  , r = c + n
                  , o = c + i;
                V[t] = {},
                V[t].false = r,
                V[t].true = o
            }
            function G(t, e, i) {
                var r = i && i.add || "addEventListener"
                  , o = i && i.rm || "removeEventListener"
                  , a = i && i.listeners || "eventListeners"
                  , s = i && i.rmAll || "removeAllListeners"
                  , l = d(r)
                  , u = "." + r + ":"
                  , p = function(t, e, n) {
                    if (!t.isRemoved) {
                        var i = t.callback;
                        "object" == typeof i && i.handleEvent && (t.callback = function(t) {
                            return i.handleEvent(t)
                        }
                        ,
                        t.originalDelegate = i),
                        t.invoke(t, e, [n]);
                        var r = t.options;
                        if (r && "object" == typeof r && r.once) {
                            var a = t.originalDelegate ? t.originalDelegate : t.callback;
                            e[o].call(e, n.type, a, r)
                        }
                    }
                }
                  , h = function(e) {
                    if (e = e || t.event) {
                        var n = this || e.target || t
                          , i = n[V[e.type].false];
                        if (i)
                            if (1 === i.length)
                                p(i[0], n, e);
                            else
                                for (var r = i.slice(), o = 0; o < r.length && (!e || !0 !== e[B]); o++)
                                    p(r[o], n, e)
                    }
                }
                  , f = function(e) {
                    if (e = e || t.event) {
                        var n = this || e.target || t
                          , i = n[V[e.type].true];
                        if (i)
                            if (1 === i.length)
                                p(i[0], n, e);
                            else
                                for (var r = i.slice(), o = 0; o < r.length && (!e || !0 !== e[B]); o++)
                                    p(r[o], n, e)
                    }
                };
                function m(e, i) {
                    if (!e)
                        return !1;
                    var p = !0;
                    i && void 0 !== i.useG && (p = i.useG);
                    var m = i && i.vh
                      , g = !0;
                    i && void 0 !== i.chkDup && (g = i.chkDup);
                    var v = !1;
                    i && void 0 !== i.rt && (v = i.rt);
                    for (var y = e; y && !y.hasOwnProperty(r); )
                        y = n(y);
                    if (!y && e[r] && (y = e),
                    !y)
                        return !1;
                    if (y[l])
                        return !1;
                    var w, S = i && i.eventNameToString, x = {}, M = y[l] = y[r], E = y[d(o)] = y[o], C = y[d(a)] = y[a], A = y[d(s)] = y[s];
                    function T(t, e) {
                        return !L && "object" == typeof t && t ? !!t.capture : L && e ? "boolean" == typeof t ? {
                            capture: t,
                            passive: !0
                        } : t ? "object" == typeof t && !1 !== t.passive ? Object.assign(Object.assign({}, t), {
                            passive: !0
                        }) : t : {
                            passive: !0
                        } : t
                    }
                    i && i.prepend && (w = y[d(i.prepend)] = y[i.prepend]);
                    var O = p ? function(t) {
                        if (!x.isExisting)
                            return M.call(x.target, x.eventName, x.capture ? f : h, x.options)
                    }
                    : function(t) {
                        return M.call(x.target, x.eventName, t.invoke, x.options)
                    }
                      , _ = p ? function(t) {
                        if (!t.isRemoved) {
                            var e = V[t.eventName]
                              , n = void 0;
                            e && (n = e[t.capture ? "true" : "false"]);
                            var i = n && t.target[n];
                            if (i)
                                for (var r = 0; r < i.length; r++)
                                    if (i[r] === t) {
                                        i.splice(r, 1),
                                        t.isRemoved = !0,
                                        0 === i.length && (t.allRemoved = !0,
                                        t.target[n] = null);
                                        break
                                    }
                        }
                        if (t.allRemoved)
                            return E.call(t.target, t.eventName, t.capture ? f : h, t.options)
                    }
                    : function(t) {
                        return E.call(t.target, t.eventName, t.invoke, t.options)
                    }
                      , I = i && i.diff ? i.diff : function(t, e) {
                        var n = typeof e;
                        return "function" === n && t.callback === e || "object" === n && t.originalDelegate === e
                    }
                      , k = Zone[d("BLACK_LISTED_EVENTS")]
                      , D = t[d("PASSIVE_EVENTS")]
                      , R = function(e, n, r, o, a, s) {
                        return void 0 === a && (a = !1),
                        void 0 === s && (s = !1),
                        function() {
                            var c = this || t
                              , l = arguments[0];
                            i && i.transferEventName && (l = i.transferEventName(l));
                            var u = arguments[1];
                            if (!u)
                                return e.apply(this, arguments);
                            if (b && "uncaughtException" === l)
                                return e.apply(this, arguments);
                            var d = !1;
                            if ("function" != typeof u) {
                                if (!u.handleEvent)
                                    return e.apply(this, arguments);
                                d = !0
                            }
                            if (!m || m(e, u, c, arguments)) {
                                var h = L && !!D && -1 !== D.indexOf(l)
                                  , f = T(arguments[2], h);
                                if (k)
                                    for (var v = 0; v < k.length; v++)
                                        if (l === k[v])
                                            return h ? e.call(c, l, u, f) : e.apply(this, arguments);
                                var y = !!f && ("boolean" == typeof f || f.capture)
                                  , w = !(!f || "object" != typeof f) && f.once
                                  , M = Zone.current
                                  , E = V[l];
                                E || (z(l, S),
                                E = V[l]);
                                var C, A = E[y ? "true" : "false"], O = c[A], _ = !1;
                                if (O) {
                                    if (_ = !0,
                                    g)
                                        for (v = 0; v < O.length; v++)
                                            if (I(O[v], u))
                                                return
                                } else
                                    O = c[A] = [];
                                var P = c.constructor.name
                                  , R = F[P];
                                R && (C = R[l]),
                                C || (C = P + n + (S ? S(l) : l)),
                                x.options = f,
                                w && (x.options.once = !1),
                                x.target = c,
                                x.capture = y,
                                x.eventName = l,
                                x.isExisting = _;
                                var N = p ? j : void 0;
                                N && (N.taskData = x);
                                var U = M.scheduleEventTask(C, u, N, r, o);
                                return x.target = null,
                                N && (N.taskData = null),
                                w && (f.once = !0),
                                (L || "boolean" != typeof U.options) && (U.options = f),
                                U.target = c,
                                U.capture = y,
                                U.eventName = l,
                                d && (U.originalDelegate = u),
                                s ? O.unshift(U) : O.push(U),
                                a ? c : void 0
                            }
                        }
                    };
                    return y[r] = R(M, u, O, _, v),
                    w && (y.prependListener = R(w, ".prependListener:", (function(t) {
                        return w.call(x.target, x.eventName, t.invoke, x.options)
                    }
                    ), _, v, !0)),
                    y[o] = function() {
                        var e = this || t
                          , n = arguments[0];
                        i && i.transferEventName && (n = i.transferEventName(n));
                        var r = arguments[2]
                          , o = !!r && ("boolean" == typeof r || r.capture)
                          , a = arguments[1];
                        if (!a)
                            return E.apply(this, arguments);
                        if (!m || m(E, a, e, arguments)) {
                            var s, l = V[n];
                            l && (s = l[o ? "true" : "false"]);
                            var u = s && e[s];
                            if (u)
                                for (var d = 0; d < u.length; d++) {
                                    var p = u[d];
                                    if (I(p, a)) {
                                        if (u.splice(d, 1),
                                        p.isRemoved = !0,
                                        0 === u.length && (p.allRemoved = !0,
                                        e[s] = null,
                                        "string" == typeof n)) {
                                            var h = c + "ON_PROPERTY" + n;
                                            e[h] = null
                                        }
                                        return p.zone.cancelTask(p),
                                        v ? e : void 0
                                    }
                                }
                            return E.apply(this, arguments)
                        }
                    }
                    ,
                    y[a] = function() {
                        var e = this || t
                          , n = arguments[0];
                        i && i.transferEventName && (n = i.transferEventName(n));
                        for (var r = [], o = H(e, S ? S(n) : n), a = 0; a < o.length; a++) {
                            var s = o[a]
                              , c = s.originalDelegate ? s.originalDelegate : s.callback;
                            r.push(c)
                        }
                        return r
                    }
                    ,
                    y[s] = function() {
                        var e = this || t
                          , n = arguments[0];
                        if (n) {
                            i && i.transferEventName && (n = i.transferEventName(n));
                            var r = V[n];
                            if (r) {
                                var a = r.false
                                  , c = r.true
                                  , l = e[a]
                                  , u = e[c];
                                if (l) {
                                    var d = l.slice();
                                    for (m = 0; m < d.length; m++) {
                                        var p = (h = d[m]).originalDelegate ? h.originalDelegate : h.callback;
                                        this[o].call(this, n, p, h.options)
                                    }
                                }
                                if (u)
                                    for (d = u.slice(),
                                    m = 0; m < d.length; m++) {
                                        var h;
                                        p = (h = d[m]).originalDelegate ? h.originalDelegate : h.callback,
                                        this[o].call(this, n, p, h.options)
                                    }
                            }
                        } else {
                            for (var f = Object.keys(e), m = 0; m < f.length; m++) {
                                var g = f[m]
                                  , y = U.exec(g)
                                  , b = y && y[1];
                                b && "removeListener" !== b && this[s].call(this, b)
                            }
                            this[s].call(this, "removeListener")
                        }
                        if (v)
                            return this
                    }
                    ,
                    P(y[r], M),
                    P(y[o], E),
                    A && P(y[s], A),
                    C && P(y[a], C),
                    !0
                }
                for (var g = [], v = 0; v < e.length; v++)
                    g[v] = m(e[v], i);
                return g
            }
            function H(t, e) {
                if (!e) {
                    var n = [];
                    for (var i in t) {
                        var r = U.exec(i)
                          , o = r && r[1];
                        if (o && (!e || o === e)) {
                            var a = t[i];
                            if (a)
                                for (var s = 0; s < a.length; s++)
                                    n.push(a[s])
                        }
                    }
                    return n
                }
                var c = V[e];
                c || (z(e),
                c = V[e]);
                var l = t[c.false]
                  , u = t[c.true];
                return l ? u ? l.concat(u) : l.slice() : u ? u.slice() : []
            }
            function W(t, e) {
                var n = t.Event;
                n && n.prototype && e.patchMethod(n.prototype, "stopImmediatePropagation", (function(t) {
                    return function(e, n) {
                        e[B] = !0,
                        t && t.apply(e, n)
                    }
                }
                ))
            }
            /**
     * @license
     * Copyright Google Inc. All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://angular.io/license
     */
            function q(t, e, n, i, r) {
                var o = Zone.__symbol__(i);
                if (!e[o]) {
                    var a = e[o] = e[i];
                    e[i] = function(o, s, c) {
                        return s && s.prototype && r.forEach((function(e) {
                            var r = n + "." + i + "::" + e
                              , o = s.prototype;
                            if (o.hasOwnProperty(e)) {
                                var a = t.ObjectGetOwnPropertyDescriptor(o, e);
                                a && a.value ? (a.value = t.wrapWithCurrentZone(a.value, r),
                                t._redefineProperty(s.prototype, e, a)) : o[e] && (o[e] = t.wrapWithCurrentZone(o[e], r))
                            } else
                                o[e] && (o[e] = t.wrapWithCurrentZone(o[e], r))
                        }
                        )),
                        a.call(e, o, s, c)
                    }
                    ,
                    t.attachOriginToPatched(e[i], a)
                }
            }
            /**
     * @license
     * Copyright Google Inc. All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://angular.io/license
     */
            var X, Y, K, Z, J, Q = ["absolutedeviceorientation", "afterinput", "afterprint", "appinstalled", "beforeinstallprompt", "beforeprint", "beforeunload", "devicelight", "devicemotion", "deviceorientation", "deviceorientationabsolute", "deviceproximity", "hashchange", "languagechange", "message", "mozbeforepaint", "offline", "online", "paint", "pageshow", "pagehide", "popstate", "rejectionhandled", "storage", "unhandledrejection", "unload", "userproximity", "vrdisplayconnected", "vrdisplaydisconnected", "vrdisplaypresentchange"], $ = ["encrypted", "waitingforkey", "msneedkey", "mozinterruptbegin", "mozinterruptend"], tt = ["load"], et = ["blur", "error", "focus", "load", "resize", "scroll", "messageerror"], nt = ["bounce", "finish", "start"], it = ["loadstart", "progress", "abort", "error", "load", "progress", "timeout", "loadend", "readystatechange"], rt = ["upgradeneeded", "complete", "abort", "success", "error", "blocked", "versionchange", "close"], ot = ["close", "error", "open", "message"], at = ["error", "message"], st = ["abort", "animationcancel", "animationend", "animationiteration", "auxclick", "beforeinput", "blur", "cancel", "canplay", "canplaythrough", "change", "compositionstart", "compositionupdate", "compositionend", "cuechange", "click", "close", "contextmenu", "curechange", "dblclick", "drag", "dragend", "dragenter", "dragexit", "dragleave", "dragover", "drop", "durationchange", "emptied", "ended", "error", "focus", "focusin", "focusout", "gotpointercapture", "input", "invalid", "keydown", "keypress", "keyup", "load", "loadstart", "loadeddata", "loadedmetadata", "lostpointercapture", "mousedown", "mouseenter", "mouseleave", "mousemove", "mouseout", "mouseover", "mouseup", "mousewheel", "orientationchange", "pause", "play", "playing", "pointercancel", "pointerdown", "pointerenter", "pointerleave", "pointerlockchange", "mozpointerlockchange", "webkitpointerlockerchange", "pointerlockerror", "mozpointerlockerror", "webkitpointerlockerror", "pointermove", "pointout", "pointerover", "pointerup", "progress", "ratechange", "reset", "resize", "scroll", "seeked", "seeking", "select", "selectionchange", "selectstart", "show", "sort", "stalled", "submit", "suspend", "timeupdate", "volumechange", "touchcancel", "touchmove", "touchstart", "touchend", "transitioncancel", "transitionend", "waiting", "wheel"].concat(["webglcontextrestored", "webglcontextlost", "webglcontextcreationerror"], ["autocomplete", "autocompleteerror"], ["toggle"], ["afterscriptexecute", "beforescriptexecute", "DOMContentLoaded", "freeze", "fullscreenchange", "mozfullscreenchange", "webkitfullscreenchange", "msfullscreenchange", "fullscreenerror", "mozfullscreenerror", "webkitfullscreenerror", "msfullscreenerror", "readystatechange", "visibilitychange", "resume"], Q, ["beforecopy", "beforecut", "beforepaste", "copy", "cut", "paste", "dragstart", "loadend", "animationstart", "search", "transitionrun", "transitionstart", "webkitanimationend", "webkitanimationiteration", "webkitanimationstart", "webkittransitionend"], ["activate", "afterupdate", "ariarequest", "beforeactivate", "beforedeactivate", "beforeeditfocus", "beforeupdate", "cellchange", "controlselect", "dataavailable", "datasetchanged", "datasetcomplete", "errorupdate", "filterchange", "layoutcomplete", "losecapture", "move", "moveend", "movestart", "propertychange", "resizeend", "resizestart", "rowenter", "rowexit", "rowsdelete", "rowsinserted", "command", "compassneedscalibration", "deactivate", "help", "mscontentzoom", "msmanipulationstatechanged", "msgesturechange", "msgesturedoubletap", "msgestureend", "msgesturehold", "msgesturestart", "msgesturetap", "msgotpointercapture", "msinertiastart", "mslostpointercapture", "mspointercancel", "mspointerdown", "mspointerenter", "mspointerhover", "mspointerleave", "mspointermove", "mspointerout", "mspointerover", "mspointerup", "pointerout", "mssitemodejumplistitemremoved", "msthumbnailclick", "stop", "storagecommit"]);
            function ct(t, e, n) {
                if (!n || 0 === n.length)
                    return e;
                var i = n.filter((function(e) {
                    return e.target === t
                }
                ));
                if (!i || 0 === i.length)
                    return e;
                var r = i[0].ignoreProperties;
                return e.filter((function(t) {
                    return -1 === r.indexOf(t)
                }
                ))
            }
            function lt(t, e, n, i) {
                t && C(t, ct(t, e, n), i)
            }
            function ut(t, e) {
                if ((!b || S) && !Zone[t.symbol("patchEvents")]) {
                    var i = "undefined" != typeof WebSocket
                      , r = e.__Zone_ignore_on_properties;
                    if (w) {
                        var o = window
                          , a = D ? [{
                            target: o,
                            ignoreProperties: ["error"]
                        }] : [];
                        lt(o, st.concat(["messageerror"]), r ? r.concat(a) : r, n(o)),
                        lt(Document.prototype, st, r),
                        void 0 !== o.SVGElement && lt(o.SVGElement.prototype, st, r),
                        lt(Element.prototype, st, r),
                        lt(HTMLElement.prototype, st, r),
                        lt(HTMLMediaElement.prototype, $, r),
                        lt(HTMLFrameSetElement.prototype, Q.concat(et), r),
                        lt(HTMLBodyElement.prototype, Q.concat(et), r),
                        lt(HTMLFrameElement.prototype, tt, r),
                        lt(HTMLIFrameElement.prototype, tt, r);
                        var s = o.HTMLMarqueeElement;
                        s && lt(s.prototype, nt, r);
                        var c = o.Worker;
                        c && lt(c.prototype, at, r)
                    }
                    var l = e.XMLHttpRequest;
                    l && lt(l.prototype, it, r);
                    var u = e.XMLHttpRequestEventTarget;
                    u && lt(u && u.prototype, it, r),
                    "undefined" != typeof IDBIndex && (lt(IDBIndex.prototype, rt, r),
                    lt(IDBRequest.prototype, rt, r),
                    lt(IDBOpenDBRequest.prototype, rt, r),
                    lt(IDBDatabase.prototype, rt, r),
                    lt(IDBTransaction.prototype, rt, r),
                    lt(IDBCursor.prototype, rt, r)),
                    i && lt(WebSocket.prototype, ot, r)
                }
            }
            /**
     * @license
     * Copyright Google Inc. All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://angular.io/license
     */
            function dt() {
                X = Zone.__symbol__,
                Y = Object[X("defineProperty")] = Object.defineProperty,
                K = Object[X("getOwnPropertyDescriptor")] = Object.getOwnPropertyDescriptor,
                Z = Object.create,
                J = X("unconfigurables"),
                Object.defineProperty = function(t, e, n) {
                    if (ht(t, e))
                        throw new TypeError("Cannot assign to read only property '" + e + "' of " + t);
                    var i = n.configurable;
                    return "prototype" !== e && (n = ft(t, e, n)),
                    mt(t, e, n, i)
                }
                ,
                Object.defineProperties = function(t, e) {
                    return Object.keys(e).forEach((function(n) {
                        Object.defineProperty(t, n, e[n])
                    }
                    )),
                    t
                }
                ,
                Object.create = function(t, e) {
                    return "object" != typeof e || Object.isFrozen(e) || Object.keys(e).forEach((function(n) {
                        e[n] = ft(t, n, e[n])
                    }
                    )),
                    Z(t, e)
                }
                ,
                Object.getOwnPropertyDescriptor = function(t, e) {
                    var n = K(t, e);
                    return n && ht(t, e) && (n.configurable = !1),
                    n
                }
            }
            function pt(t, e, n) {
                var i = n.configurable;
                return mt(t, e, n = ft(t, e, n), i)
            }
            function ht(t, e) {
                return t && t[J] && t[J][e]
            }
            function ft(t, e, n) {
                return Object.isFrozen(n) || (n.configurable = !0),
                n.configurable || (t[J] || Object.isFrozen(t) || Y(t, J, {
                    writable: !0,
                    value: {}
                }),
                t[J] && (t[J][e] = !0)),
                n
            }
            function mt(t, e, n, i) {
                try {
                    return Y(t, e, n)
                } catch (o) {
                    if (!n.configurable)
                        throw o;
                    void 0 === i ? delete n.configurable : n.configurable = i;
                    try {
                        return Y(t, e, n)
                    } catch (i) {
                        var r = null;
                        try {
                            r = JSON.stringify(n)
                        } catch (t) {
                            r = n.toString()
                        }
                        console.log("Attempting to configure '" + e + "' with descriptor '" + r + "' on object '" + t + "' and got error, giving up: " + i)
                    }
                }
            }
            /**
     * @license
     * Copyright Google Inc. All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://angular.io/license
     */
            function gt(t, e) {
                var n = e.getGlobalObjects()
                  , i = n.eventNames
                  , r = n.globalSources
                  , o = n.zoneSymbolEventNames
                  , a = n.TRUE_STR
                  , s = n.FALSE_STR
                  , c = n.ZONE_SYMBOL_PREFIX
                  , l = "ApplicationCache,EventSource,FileReader,InputMethodContext,MediaController,MessagePort,Node,Performance,SVGElementInstance,SharedWorker,TextTrack,TextTrackCue,TextTrackList,WebKitNamedFlow,Window,Worker,WorkerGlobalScope,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload,IDBRequest,IDBOpenDBRequest,IDBDatabase,IDBTransaction,IDBCursor,DBIndex,WebSocket".split(",")
                  , u = []
                  , d = t.wtf
                  , p = "Anchor,Area,Audio,BR,Base,BaseFont,Body,Button,Canvas,Content,DList,Directory,Div,Embed,FieldSet,Font,Form,Frame,FrameSet,HR,Head,Heading,Html,IFrame,Image,Input,Keygen,LI,Label,Legend,Link,Map,Marquee,Media,Menu,Meta,Meter,Mod,OList,Object,OptGroup,Option,Output,Paragraph,Pre,Progress,Quote,Script,Select,Source,Span,Style,TableCaption,TableCell,TableCol,Table,TableRow,TableSection,TextArea,Title,Track,UList,Unknown,Video".split(",");
                d ? u = p.map((function(t) {
                    return "HTML" + t + "Element"
                }
                )).concat(l) : t.EventTarget ? u.push("EventTarget") : u = l;
                for (var h = t.__Zone_disable_IE_check || !1, f = t.__Zone_enable_cross_context_check || !1, m = e.isIEOrEdge(), g = "function __BROWSERTOOLS_CONSOLE_SAFEFUNC() { [native code] }", v = {
                    MSPointerCancel: "pointercancel",
                    MSPointerDown: "pointerdown",
                    MSPointerEnter: "pointerenter",
                    MSPointerHover: "pointerhover",
                    MSPointerLeave: "pointerleave",
                    MSPointerMove: "pointermove",
                    MSPointerOut: "pointerout",
                    MSPointerOver: "pointerover",
                    MSPointerUp: "pointerup"
                }, y = 0; y < i.length; y++) {
                    var b = c + ((E = i[y]) + s)
                      , w = c + (E + a);
                    o[E] = {},
                    o[E][s] = b,
                    o[E][a] = w
                }
                for (y = 0; y < p.length; y++)
                    for (var S = p[y], x = r[S] = {}, M = 0; M < i.length; M++) {
                        var E;
                        x[E = i[M]] = S + ".addEventListener:" + E
                    }
                var C = [];
                for (y = 0; y < u.length; y++) {
                    var A = t[u[y]];
                    C.push(A && A.prototype)
                }
                return e.patchEventTarget(t, C, {
                    vh: function(t, e, n, i) {
                        if (!h && m) {
                            if (f)
                                try {
                                    var r;
                                    if ("[object FunctionWrapper]" === (r = e.toString()) || r == g)
                                        return t.apply(n, i),
                                        !1
                                } catch (e) {
                                    return t.apply(n, i),
                                    !1
                                }
                            else if ("[object FunctionWrapper]" === (r = e.toString()) || r == g)
                                return t.apply(n, i),
                                !1
                        } else if (f)
                            try {
                                e.toString()
                            } catch (e) {
                                return t.apply(n, i),
                                !1
                            }
                        return !0
                    },
                    transferEventName: function(t) {
                        return v[t] || t
                    }
                }),
                Zone[e.symbol("patchEventTarget")] = !!t.EventTarget,
                !0
            }
            /**
     * @license
     * Copyright Google Inc. All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://angular.io/license
     */
            /**
     * @license
     * Copyright Google Inc. All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://angular.io/license
     */
            function vt(t, e) {
                var n = t.getGlobalObjects()
                  , i = n.isNode
                  , r = n.isMix;
                if ((!i || r) && !function(t, e) {
                    var n = t.getGlobalObjects()
                      , i = n.isBrowser
                      , r = n.isMix;
                    if ((i || r) && !t.ObjectGetOwnPropertyDescriptor(HTMLElement.prototype, "onclick") && "undefined" != typeof Element) {
                        var o = t.ObjectGetOwnPropertyDescriptor(Element.prototype, "onclick");
                        if (o && !o.configurable)
                            return !1;
                        if (o) {
                            t.ObjectDefineProperty(Element.prototype, "onclick", {
                                enumerable: !0,
                                configurable: !0,
                                get: function() {
                                    return !0
                                }
                            });
                            var a = !!document.createElement("div").onclick;
                            return t.ObjectDefineProperty(Element.prototype, "onclick", o),
                            a
                        }
                    }
                    var s = e.XMLHttpRequest;
                    if (!s)
                        return !1;
                    var c = s.prototype
                      , l = t.ObjectGetOwnPropertyDescriptor(c, "onreadystatechange");
                    if (l)
                        return t.ObjectDefineProperty(c, "onreadystatechange", {
                            enumerable: !0,
                            configurable: !0,
                            get: function() {
                                return !0
                            }
                        }),
                        a = !!(d = new s).onreadystatechange,
                        t.ObjectDefineProperty(c, "onreadystatechange", l || {}),
                        a;
                    var u = t.symbol("fake");
                    t.ObjectDefineProperty(c, "onreadystatechange", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return this[u]
                        },
                        set: function(t) {
                            this[u] = t
                        }
                    });
                    var d = new s
                      , p = function() {};
                    return d.onreadystatechange = p,
                    a = d[u] === p,
                    d.onreadystatechange = null,
                    a
                }(t, e)) {
                    var o = "undefined" != typeof WebSocket;
                    !function(t) {
                        for (var e = t.getGlobalObjects().eventNames, n = t.symbol("unbound"), i = function(i) {
                            var r = e[i]
                              , o = "on" + r;
                            self.addEventListener(r, (function(e) {
                                var i, r, a = e.target;
                                for (r = a ? a.constructor.name + "." + o : "unknown." + o; a; )
                                    a[o] && !a[o][n] && ((i = t.wrapWithCurrentZone(a[o], r))[n] = a[o],
                                    a[o] = i),
                                    a = a.parentElement
                            }
                            ), !0)
                        }, r = 0; r < e.length; r++)
                            i(r)
                    }/**
     * @license
     * Copyright Google Inc. All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://angular.io/license
     */
                    (t),
                    t.patchClass("XMLHttpRequest"),
                    o && function(t, e) {
                        var n = t.getGlobalObjects()
                          , i = n.ADD_EVENT_LISTENER_STR
                          , r = n.REMOVE_EVENT_LISTENER_STR
                          , o = e.WebSocket;
                        e.EventTarget || t.patchEventTarget(e, [o.prototype]),
                        e.WebSocket = function(e, n) {
                            var a, s, c = arguments.length > 1 ? new o(e,n) : new o(e), l = t.ObjectGetOwnPropertyDescriptor(c, "onmessage");
                            return l && !1 === l.configurable ? (a = t.ObjectCreate(c),
                            s = c,
                            [i, r, "send", "close"].forEach((function(e) {
                                a[e] = function() {
                                    var n = t.ArraySlice.call(arguments);
                                    if (e === i || e === r) {
                                        var o = n.length > 0 ? n[0] : void 0;
                                        if (o) {
                                            var s = Zone.__symbol__("ON_PROPERTY" + o);
                                            c[s] = a[s]
                                        }
                                    }
                                    return c[e].apply(c, n)
                                }
                            }
                            ))) : a = c,
                            t.patchOnProperties(a, ["close", "error", "message", "open"], s),
                            a
                        }
                        ;
                        var a = e.WebSocket;
                        for (var s in o)
                            a[s] = o[s]
                    }(t, e),
                    Zone[t.symbol("patchEvents")] = !0
                }
            }
            Zone.__load_patch("util", (function(n, i, a) {
                a.patchOnProperties = C,
                a.patchMethod = O,
                a.bindArguments = g,
                a.patchMacroTask = _;
                var s = i.__symbol__("BLACK_LISTED_EVENTS")
                  , u = i.__symbol__("UNPATCHED_EVENTS");
                n[u] && (n[s] = n[u]),
                n[s] && (i[s] = i[u] = n[s]),
                a.patchEventPrototype = W,
                a.patchEventTarget = G,
                a.isIEOrEdge = R,
                a.ObjectDefineProperty = e,
                a.ObjectGetOwnPropertyDescriptor = t,
                a.ObjectCreate = r,
                a.ArraySlice = o,
                a.patchClass = T,
                a.wrapWithCurrentZone = l,
                a.filterProperties = ct,
                a.attachOriginToPatched = P,
                a._redefineProperty = Object.defineProperty,
                a.patchCallbacks = q,
                a.getGlobalObjects = function() {
                    return {
                        globalSources: F,
                        zoneSymbolEventNames: V,
                        eventNames: st,
                        isBrowser: w,
                        isMix: S,
                        isNode: b,
                        TRUE_STR: "true",
                        FALSE_STR: "false",
                        ZONE_SYMBOL_PREFIX: c,
                        ADD_EVENT_LISTENER_STR: "addEventListener",
                        REMOVE_EVENT_LISTENER_STR: "removeEventListener"
                    }
                }
            }
            )),
            /**
     * @license
     * Copyright Google Inc. All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://angular.io/license
     */
            function(t) {
                var e = t.__Zone_symbol_prefix || "__zone_symbol__";
                t[function(t) {
                    return e + t
                }("legacyPatch")] = function() {
                    var e = t.Zone;
                    e.__load_patch("defineProperty", (function(t, e, n) {
                        n._redefineProperty = pt,
                        dt()
                    }
                    )),
                    e.__load_patch("registerElement", (function(t, e, n) {
                        !function(t, e) {
                            var n = e.getGlobalObjects()
                              , i = n.isBrowser
                              , r = n.isMix;
                            (i || r) && "registerElement"in t.document && e.patchCallbacks(e, document, "Document", "registerElement", ["createdCallback", "attachedCallback", "detachedCallback", "attributeChangedCallback"])
                        }(t, n)
                    }
                    )),
                    e.__load_patch("EventTargetLegacy", (function(t, e, n) {
                        gt(t, n),
                        vt(n, t)
                    }
                    ))
                }
            }("undefined" != typeof window ? window : void 0 !== i ? i : "undefined" != typeof self ? self : {});
            /**
     * @license
     * Copyright Google Inc. All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://angular.io/license
     */
            var yt = d("zoneTask");
            function bt(t, e, n, i) {
                var r = null
                  , o = null;
                n += i;
                var a = {};
                function s(e) {
                    var n = e.data;
                    return n.args[0] = function() {
                        try {
                            e.invoke.apply(this, arguments)
                        } finally {
                            e.data && e.data.isPeriodic || ("number" == typeof n.handleId ? delete a[n.handleId] : n.handleId && (n.handleId[yt] = null))
                        }
                    }
                    ,
                    n.handleId = r.apply(t, n.args),
                    e
                }
                function c(t) {
                    return o(t.data.handleId)
                }
                r = O(t, e += i, (function(n) {
                    return function(r, o) {
                        if ("function" == typeof o[0]) {
                            var l = {
                                isPeriodic: "Interval" === i,
                                delay: "Timeout" === i || "Interval" === i ? o[1] || 0 : void 0,
                                args: o
                            }
                              , d = u(e, o[0], l, s, c);
                            if (!d)
                                return d;
                            var p = d.data.handleId;
                            return "number" == typeof p ? a[p] = d : p && (p[yt] = d),
                            p && p.ref && p.unref && "function" == typeof p.ref && "function" == typeof p.unref && (d.ref = p.ref.bind(p),
                            d.unref = p.unref.bind(p)),
                            "number" == typeof p || p ? p : d
                        }
                        return n.apply(t, o)
                    }
                }
                )),
                o = O(t, n, (function(e) {
                    return function(n, i) {
                        var r, o = i[0];
                        "number" == typeof o ? r = a[o] : (r = o && o[yt]) || (r = o),
                        r && "string" == typeof r.type ? "notScheduled" !== r.state && (r.cancelFn && r.data.isPeriodic || 0 === r.runCount) && ("number" == typeof o ? delete a[o] : o && (o[yt] = null),
                        r.zone.cancelTask(r)) : e.apply(t, i)
                    }
                }
                ))
            }
            /**
     * @license
     * Copyright Google Inc. All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://angular.io/license
     */
            /**
     * @license
     * Copyright Google Inc. All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://angular.io/license
     */
            function wt(t, e) {
                if (!Zone[e.symbol("patchEventTarget")]) {
                    for (var n = e.getGlobalObjects(), i = n.eventNames, r = n.zoneSymbolEventNames, o = n.TRUE_STR, a = n.FALSE_STR, s = n.ZONE_SYMBOL_PREFIX, c = 0; c < i.length; c++) {
                        var l = i[c]
                          , u = s + (l + a)
                          , d = s + (l + o);
                        r[l] = {},
                        r[l][a] = u,
                        r[l][o] = d
                    }
                    var p = t.EventTarget;
                    if (p && p.prototype)
                        return e.patchEventTarget(t, [p && p.prototype]),
                        !0
                }
            }
            /**
     * @license
     * Copyright Google Inc. All Rights Reserved.
     *
     * Use of this source code is governed by an MIT-style license that can be
     * found in the LICENSE file at https://angular.io/license
     */
            Zone.__load_patch("legacy", (function(t) {
                var e = t[Zone.__symbol__("legacyPatch")];
                e && e()
            }
            )),
            Zone.__load_patch("timers", (function(t) {
                bt(t, "set", "clear", "Timeout"),
                bt(t, "set", "clear", "Interval"),
                bt(t, "set", "clear", "Immediate")
            }
            )),
            Zone.__load_patch("requestAnimationFrame", (function(t) {
                bt(t, "request", "cancel", "AnimationFrame"),
                bt(t, "mozRequest", "mozCancel", "AnimationFrame"),
                bt(t, "webkitRequest", "webkitCancel", "AnimationFrame")
            }
            )),
            Zone.__load_patch("blocking", (function(t, e) {
                for (var n = ["alert", "prompt", "confirm"], i = 0; i < n.length; i++)
                    O(t, n[i], (function(n, i, r) {
                        return function(i, o) {
                            return e.current.run(n, t, o, r)
                        }
                    }
                    ))
            }
            )),
            Zone.__load_patch("EventTarget", (function(t, e, n) {
                !function(t, e) {
                    e.patchEventPrototype(t, e)
                }(t, n),
                wt(t, n);
                var i = t.XMLHttpRequestEventTarget;
                i && i.prototype && n.patchEventTarget(t, [i.prototype]),
                T("MutationObserver"),
                T("WebKitMutationObserver"),
                T("IntersectionObserver"),
                T("FileReader")
            }
            )),
            Zone.__load_patch("on_property", (function(t, e, n) {
                ut(n, t)
            }
            )),
            Zone.__load_patch("customElements", (function(t, e, n) {
                !function(t, e) {
                    var n = e.getGlobalObjects()
                      , i = n.isBrowser
                      , r = n.isMix;
                    (i || r) && t.customElements && "customElements"in t && e.patchCallbacks(e, t.customElements, "customElements", "define", ["connectedCallback", "disconnectedCallback", "adoptedCallback", "attributeChangedCallback"])
                }(t, n)
            }
            )),
            Zone.__load_patch("XHR", (function(t, e) {
                !function(t) {
                    var p = t.XMLHttpRequest;
                    if (p) {
                        var h = p.prototype
                          , f = h[a]
                          , m = h[s];
                        if (!f) {
                            var g = t.XMLHttpRequestEventTarget;
                            if (g) {
                                var v = g.prototype;
                                f = v[a],
                                m = v[s]
                            }
                        }
                        var y = O(h, "open", (function() {
                            return function(t, e) {
                                return t[i] = 0 == e[2],
                                t[c] = e[1],
                                y.apply(t, e)
                            }
                        }
                        ))
                          , b = d("fetchTaskAborting")
                          , w = d("fetchTaskScheduling")
                          , S = O(h, "send", (function() {
                            return function(t, n) {
                                if (!0 === e.current[w])
                                    return S.apply(t, n);
                                if (t[i])
                                    return S.apply(t, n);
                                var r = {
                                    target: t,
                                    url: t[c],
                                    isPeriodic: !1,
                                    args: n,
                                    aborted: !1
                                }
                                  , o = u("XMLHttpRequest.send", E, r, M, C);
                                t && !0 === t[l] && !r.aborted && "scheduled" === o.state && o.invoke()
                            }
                        }
                        ))
                          , x = O(h, "abort", (function() {
                            return function(t, i) {
                                var r = t[n];
                                if (r && "string" == typeof r.type) {
                                    if (null == r.cancelFn || r.data && r.data.aborted)
                                        return;
                                    r.zone.cancelTask(r)
                                } else if (!0 === e.current[b])
                                    return x.apply(t, i)
                            }
                        }
                        ))
                    }
                    function M(t) {
                        var i = t.data
                          , c = i.target;
                        c[o] = !1,
                        c[l] = !1;
                        var u = c[r];
                        f || (f = c[a],
                        m = c[s]),
                        u && m.call(c, "readystatechange", u);
                        var d = c[r] = function() {
                            if (c.readyState === c.DONE)
                                if (!i.aborted && c[o] && "scheduled" === t.state) {
                                    var n = c[e.__symbol__("loadfalse")];
                                    if (n && n.length > 0) {
                                        var r = t.invoke;
                                        t.invoke = function() {
                                            for (var n = c[e.__symbol__("loadfalse")], o = 0; o < n.length; o++)
                                                n[o] === t && n.splice(o, 1);
                                            i.aborted || "scheduled" !== t.state || r.call(t)
                                        }
                                        ,
                                        n.push(t)
                                    } else
                                        t.invoke()
                                } else
                                    i.aborted || !1 !== c[o] || (c[l] = !0)
                        }
                        ;
                        return f.call(c, "readystatechange", d),
                        c[n] || (c[n] = t),
                        S.apply(c, i.args),
                        c[o] = !0,
                        t
                    }
                    function E() {}
                    function C(t) {
                        var e = t.data;
                        return e.aborted = !0,
                        x.apply(e.target, e.args)
                    }
                }(t);
                var n = d("xhrTask")
                  , i = d("xhrSync")
                  , r = d("xhrListener")
                  , o = d("xhrScheduled")
                  , c = d("xhrURL")
                  , l = d("xhrErrorBeforeScheduled")
            }
            )),
            Zone.__load_patch("geolocation", (function(e) {
                e.navigator && e.navigator.geolocation && function(e, n) {
                    for (var i = e.constructor.name, r = function(r) {
                        var o = n[r]
                          , a = e[o];
                        if (a) {
                            if (!v(t(e, o)))
                                return "continue";
                            e[o] = function(t) {
                                var e = function() {
                                    return t.apply(this, g(arguments, i + "." + o))
                                };
                                return P(e, t),
                                e
                            }(a)
                        }
                    }, o = 0; o < n.length; o++)
                        r(o)
                }(e.navigator.geolocation, ["getCurrentPosition", "watchPosition"])
            }
            )),
            Zone.__load_patch("PromiseRejectionEvent", (function(t, e) {
                function n(e) {
                    return function(n) {
                        H(t, e).forEach((function(i) {
                            var r = t.PromiseRejectionEvent;
                            if (r) {
                                var o = new r(e,{
                                    promise: n.promise,
                                    reason: n.rejection
                                });
                                i.invoke(o)
                            }
                        }
                        ))
                    }
                }
                t.PromiseRejectionEvent && (e[d("unhandledPromiseRejectionHandler")] = n("unhandledrejection"),
                e[d("rejectionHandledHandler")] = n("rejectionhandled"))
            }
            ))
        }
        ) ? r.call(e, n, e, t) : r) || (t.exports = o)
    }
    ).call(this, n(213))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    n(870),
    n(883),
    n(890),
    n(899),
    n(900),
    n(904),
    n(906),
    n(908),
    n(910),
    n(918),
    n(2),
    n(925),
    n(927),
    n(928),
    n(930),
    n(932),
    n(934),
    n(935),
    n(937),
    n(939),
    n(940),
    n(942),
    n(944),
    n(945),
    n(947),
    n(129)
}
, function(t, e, n) {
    n(871),
    n(872),
    n(873),
    n(874),
    n(875),
    n(876),
    n(877),
    n(878),
    n(879),
    n(880),
    n(881),
    n(882)
}
, function(t, e, n) {
    (function(t) {
        !function(t) {
            "use strict";
            t.fn.emulateTransitionEnd = function(e) {
                var n = !1
                  , i = this;
                t(this).one("bsTransitionEnd", (function() {
                    n = !0
                }
                ));
                return setTimeout((function() {
                    n || t(i).trigger(t.support.transition.end)
                }
                ), e),
                this
            }
            ,
            t((function() {
                t.support.transition = function() {
                    var t = document.createElement("bootstrap")
                      , e = {
                        WebkitTransition: "webkitTransitionEnd",
                        MozTransition: "transitionend",
                        OTransition: "oTransitionEnd otransitionend",
                        transition: "transitionend"
                    };
                    for (var n in e)
                        if (void 0 !== t.style[n])
                            return {
                                end: e[n]
                            };
                    return !1
                }(),
                t.support.transition && (t.event.special.bsTransitionEnd = {
                    bindType: t.support.transition.end,
                    delegateType: t.support.transition.end,
                    handle: function(e) {
                        if (t(e.target).is(this))
                            return e.handleObj.handler.apply(this, arguments)
                    }
                })
            }
            ))
        }(t)
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    (function(t) {
        !function(t) {
            "use strict";
            var e = '[data-dismiss="alert"]'
              , n = function(n) {
                t(n).on("click", e, this.close)
            };
            n.VERSION = "3.4.1",
            n.TRANSITION_DURATION = 150,
            n.prototype.close = function(e) {
                var i = t(this)
                  , r = i.attr("data-target");
                r || (r = (r = i.attr("href")) && r.replace(/.*(?=#[^\s]*$)/, "")),
                r = "#" === r ? [] : r;
                var o = t(document).find(r);
                function a() {
                    o.detach().trigger("closed.bs.alert").remove()
                }
                e && e.preventDefault(),
                o.length || (o = i.closest(".alert")),
                o.trigger(e = t.Event("close.bs.alert")),
                e.isDefaultPrevented() || (o.removeClass("in"),
                t.support.transition && o.hasClass("fade") ? o.one("bsTransitionEnd", a).emulateTransitionEnd(n.TRANSITION_DURATION) : a())
            }
            ;
            var i = t.fn.alert;
            t.fn.alert = function(e) {
                return this.each((function() {
                    var i = t(this)
                      , r = i.data("bs.alert");
                    r || i.data("bs.alert", r = new n(this)),
                    "string" == typeof e && r[e].call(i)
                }
                ))
            }
            ,
            t.fn.alert.Constructor = n,
            t.fn.alert.noConflict = function() {
                return t.fn.alert = i,
                this
            }
            ,
            t(document).on("click.bs.alert.data-api", e, n.prototype.close)
        }(t)
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    (function(t) {
        !function(t) {
            "use strict";
            var e = function(n, i) {
                this.$element = t(n),
                this.options = t.extend({}, e.DEFAULTS, i),
                this.isLoading = !1
            };
            function n(n) {
                return this.each((function() {
                    var i = t(this)
                      , r = i.data("bs.button")
                      , o = "object" == typeof n && n;
                    r || i.data("bs.button", r = new e(this,o)),
                    "toggle" == n ? r.toggle() : n && r.setState(n)
                }
                ))
            }
            e.VERSION = "3.4.1",
            e.DEFAULTS = {
                loadingText: "loading..."
            },
            e.prototype.setState = function(e) {
                var n = "disabled"
                  , i = this.$element
                  , r = i.is("input") ? "val" : "html"
                  , o = i.data();
                e += "Text",
                null == o.resetText && i.data("resetText", i[r]()),
                setTimeout(t.proxy((function() {
                    i[r](null == o[e] ? this.options[e] : o[e]),
                    "loadingText" == e ? (this.isLoading = !0,
                    i.addClass(n).attr(n, n).prop(n, !0)) : this.isLoading && (this.isLoading = !1,
                    i.removeClass(n).removeAttr(n).prop(n, !1))
                }
                ), this), 0)
            }
            ,
            e.prototype.toggle = function() {
                var t = !0
                  , e = this.$element.closest('[data-toggle="buttons"]');
                if (e.length) {
                    var n = this.$element.find("input");
                    "radio" == n.prop("type") ? (n.prop("checked") && (t = !1),
                    e.find(".active").removeClass("active"),
                    this.$element.addClass("active")) : "checkbox" == n.prop("type") && (n.prop("checked") !== this.$element.hasClass("active") && (t = !1),
                    this.$element.toggleClass("active")),
                    n.prop("checked", this.$element.hasClass("active")),
                    t && n.trigger("change")
                } else
                    this.$element.attr("aria-pressed", !this.$element.hasClass("active")),
                    this.$element.toggleClass("active")
            }
            ;
            var i = t.fn.button;
            t.fn.button = n,
            t.fn.button.Constructor = e,
            t.fn.button.noConflict = function() {
                return t.fn.button = i,
                this
            }
            ,
            t(document).on("click.bs.button.data-api", '[data-toggle^="button"]', (function(e) {
                var i = t(e.target).closest(".btn");
                n.call(i, "toggle"),
                t(e.target).is('input[type="radio"], input[type="checkbox"]') || (e.preventDefault(),
                i.is("input,button") ? i.trigger("focus") : i.find("input:visible,button:visible").first().trigger("focus"))
            }
            )).on("focus.bs.button.data-api blur.bs.button.data-api", '[data-toggle^="button"]', (function(e) {
                t(e.target).closest(".btn").toggleClass("focus", /^focus(in)?$/.test(e.type))
            }
            ))
        }(t)
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    (function(t) {
        !function(t) {
            "use strict";
            var e = function(e, n) {
                this.$element = t(e),
                this.$indicators = this.$element.find(".carousel-indicators"),
                this.options = n,
                this.paused = null,
                this.sliding = null,
                this.interval = null,
                this.$active = null,
                this.$items = null,
                this.options.keyboard && this.$element.on("keydown.bs.carousel", t.proxy(this.keydown, this)),
                "hover" == this.options.pause && !("ontouchstart"in document.documentElement) && this.$element.on("mouseenter.bs.carousel", t.proxy(this.pause, this)).on("mouseleave.bs.carousel", t.proxy(this.cycle, this))
            };
            function n(n) {
                return this.each((function() {
                    var i = t(this)
                      , r = i.data("bs.carousel")
                      , o = t.extend({}, e.DEFAULTS, i.data(), "object" == typeof n && n)
                      , a = "string" == typeof n ? n : o.slide;
                    r || i.data("bs.carousel", r = new e(this,o)),
                    "number" == typeof n ? r.to(n) : a ? r[a]() : o.interval && r.pause().cycle()
                }
                ))
            }
            e.VERSION = "3.4.1",
            e.TRANSITION_DURATION = 600,
            e.DEFAULTS = {
                interval: 5e3,
                pause: "hover",
                wrap: !0,
                keyboard: !0
            },
            e.prototype.keydown = function(t) {
                if (!/input|textarea/i.test(t.target.tagName)) {
                    switch (t.which) {
                    case 37:
                        this.prev();
                        break;
                    case 39:
                        this.next();
                        break;
                    default:
                        return
                    }
                    t.preventDefault()
                }
            }
            ,
            e.prototype.cycle = function(e) {
                return e || (this.paused = !1),
                this.interval && clearInterval(this.interval),
                this.options.interval && !this.paused && (this.interval = setInterval(t.proxy(this.next, this), this.options.interval)),
                this
            }
            ,
            e.prototype.getItemIndex = function(t) {
                return this.$items = t.parent().children(".item"),
                this.$items.index(t || this.$active)
            }
            ,
            e.prototype.getItemForDirection = function(t, e) {
                var n = this.getItemIndex(e);
                if (("prev" == t && 0 === n || "next" == t && n == this.$items.length - 1) && !this.options.wrap)
                    return e;
                var i = (n + ("prev" == t ? -1 : 1)) % this.$items.length;
                return this.$items.eq(i)
            }
            ,
            e.prototype.to = function(t) {
                var e = this
                  , n = this.getItemIndex(this.$active = this.$element.find(".item.active"));
                if (!(t > this.$items.length - 1 || t < 0))
                    return this.sliding ? this.$element.one("slid.bs.carousel", (function() {
                        e.to(t)
                    }
                    )) : n == t ? this.pause().cycle() : this.slide(t > n ? "next" : "prev", this.$items.eq(t))
            }
            ,
            e.prototype.pause = function(e) {
                return e || (this.paused = !0),
                this.$element.find(".next, .prev").length && t.support.transition && (this.$element.trigger(t.support.transition.end),
                this.cycle(!0)),
                this.interval = clearInterval(this.interval),
                this
            }
            ,
            e.prototype.next = function() {
                if (!this.sliding)
                    return this.slide("next")
            }
            ,
            e.prototype.prev = function() {
                if (!this.sliding)
                    return this.slide("prev")
            }
            ,
            e.prototype.slide = function(n, i) {
                var r = this.$element.find(".item.active")
                  , o = i || this.getItemForDirection(n, r)
                  , a = this.interval
                  , s = "next" == n ? "left" : "right"
                  , c = this;
                if (o.hasClass("active"))
                    return this.sliding = !1;
                var l = o[0]
                  , u = t.Event("slide.bs.carousel", {
                    relatedTarget: l,
                    direction: s
                });
                if (this.$element.trigger(u),
                !u.isDefaultPrevented()) {
                    if (this.sliding = !0,
                    a && this.pause(),
                    this.$indicators.length) {
                        this.$indicators.find(".active").removeClass("active");
                        var d = t(this.$indicators.children()[this.getItemIndex(o)]);
                        d && d.addClass("active")
                    }
                    var p = t.Event("slid.bs.carousel", {
                        relatedTarget: l,
                        direction: s
                    });
                    return t.support.transition && this.$element.hasClass("slide") ? (o.addClass(n),
                    "object" == typeof o && o.length && o[0].offsetWidth,
                    r.addClass(s),
                    o.addClass(s),
                    r.one("bsTransitionEnd", (function() {
                        o.removeClass([n, s].join(" ")).addClass("active"),
                        r.removeClass(["active", s].join(" ")),
                        c.sliding = !1,
                        setTimeout((function() {
                            c.$element.trigger(p)
                        }
                        ), 0)
                    }
                    )).emulateTransitionEnd(e.TRANSITION_DURATION)) : (r.removeClass("active"),
                    o.addClass("active"),
                    this.sliding = !1,
                    this.$element.trigger(p)),
                    a && this.cycle(),
                    this
                }
            }
            ;
            var i = t.fn.carousel;
            t.fn.carousel = n,
            t.fn.carousel.Constructor = e,
            t.fn.carousel.noConflict = function() {
                return t.fn.carousel = i,
                this
            }
            ;
            var r = function(e) {
                var i = t(this)
                  , r = i.attr("href");
                r && (r = r.replace(/.*(?=#[^\s]+$)/, ""));
                var o = i.attr("data-target") || r
                  , a = t(document).find(o);
                if (a.hasClass("carousel")) {
                    var s = t.extend({}, a.data(), i.data())
                      , c = i.attr("data-slide-to");
                    c && (s.interval = !1),
                    n.call(a, s),
                    c && a.data("bs.carousel").to(c),
                    e.preventDefault()
                }
            };
            t(document).on("click.bs.carousel.data-api", "[data-slide]", r).on("click.bs.carousel.data-api", "[data-slide-to]", r),
            t(window).on("load", (function() {
                t('[data-ride="carousel"]').each((function() {
                    var e = t(this);
                    n.call(e, e.data())
                }
                ))
            }
            ))
        }(t)
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    (function(t) {
        !function(t) {
            "use strict";
            var e = function(n, i) {
                this.$element = t(n),
                this.options = t.extend({}, e.DEFAULTS, i),
                this.$trigger = t('[data-toggle="collapse"][href="#' + n.id + '"],[data-toggle="collapse"][data-target="#' + n.id + '"]'),
                this.transitioning = null,
                this.options.parent ? this.$parent = this.getParent() : this.addAriaAndCollapsedClass(this.$element, this.$trigger),
                this.options.toggle && this.toggle()
            };
            function n(e) {
                var n, i = e.attr("data-target") || (n = e.attr("href")) && n.replace(/.*(?=#[^\s]+$)/, "");
                return t(document).find(i)
            }
            function i(n) {
                return this.each((function() {
                    var i = t(this)
                      , r = i.data("bs.collapse")
                      , o = t.extend({}, e.DEFAULTS, i.data(), "object" == typeof n && n);
                    !r && o.toggle && /show|hide/.test(n) && (o.toggle = !1),
                    r || i.data("bs.collapse", r = new e(this,o)),
                    "string" == typeof n && r[n]()
                }
                ))
            }
            e.VERSION = "3.4.1",
            e.TRANSITION_DURATION = 350,
            e.DEFAULTS = {
                toggle: !0
            },
            e.prototype.dimension = function() {
                return this.$element.hasClass("width") ? "width" : "height"
            }
            ,
            e.prototype.show = function() {
                if (!this.transitioning && !this.$element.hasClass("in")) {
                    var n, r = this.$parent && this.$parent.children(".panel").children(".in, .collapsing");
                    if (!(r && r.length && (n = r.data("bs.collapse")) && n.transitioning)) {
                        var o = t.Event("show.bs.collapse");
                        if (this.$element.trigger(o),
                        !o.isDefaultPrevented()) {
                            r && r.length && (i.call(r, "hide"),
                            n || r.data("bs.collapse", null));
                            var a = this.dimension();
                            this.$element.removeClass("collapse").addClass("collapsing")[a](0).attr("aria-expanded", !0),
                            this.$trigger.removeClass("collapsed").attr("aria-expanded", !0),
                            this.transitioning = 1;
                            var s = function() {
                                this.$element.removeClass("collapsing").addClass("collapse in")[a](""),
                                this.transitioning = 0,
                                this.$element.trigger("shown.bs.collapse")
                            };
                            if (!t.support.transition)
                                return s.call(this);
                            var c = t.camelCase(["scroll", a].join("-"));
                            this.$element.one("bsTransitionEnd", t.proxy(s, this)).emulateTransitionEnd(e.TRANSITION_DURATION)[a](this.$element[0][c])
                        }
                    }
                }
            }
            ,
            e.prototype.hide = function() {
                if (!this.transitioning && this.$element.hasClass("in")) {
                    var n = t.Event("hide.bs.collapse");
                    if (this.$element.trigger(n),
                    !n.isDefaultPrevented()) {
                        var i = this.dimension();
                        this.$element[i](this.$element[i]())[0].offsetHeight,
                        this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded", !1),
                        this.$trigger.addClass("collapsed").attr("aria-expanded", !1),
                        this.transitioning = 1;
                        var r = function() {
                            this.transitioning = 0,
                            this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")
                        };
                        if (!t.support.transition)
                            return r.call(this);
                        this.$element[i](0).one("bsTransitionEnd", t.proxy(r, this)).emulateTransitionEnd(e.TRANSITION_DURATION)
                    }
                }
            }
            ,
            e.prototype.toggle = function() {
                this[this.$element.hasClass("in") ? "hide" : "show"]()
            }
            ,
            e.prototype.getParent = function() {
                return t(document).find(this.options.parent).find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]').each(t.proxy((function(e, i) {
                    var r = t(i);
                    this.addAriaAndCollapsedClass(n(r), r)
                }
                ), this)).end()
            }
            ,
            e.prototype.addAriaAndCollapsedClass = function(t, e) {
                var n = t.hasClass("in");
                t.attr("aria-expanded", n),
                e.toggleClass("collapsed", !n).attr("aria-expanded", n)
            }
            ;
            var r = t.fn.collapse;
            t.fn.collapse = i,
            t.fn.collapse.Constructor = e,
            t.fn.collapse.noConflict = function() {
                return t.fn.collapse = r,
                this
            }
            ,
            t(document).on("click.bs.collapse.data-api", '[data-toggle="collapse"]', (function(e) {
                var r = t(this);
                r.attr("data-target") || e.preventDefault();
                var o = n(r)
                  , a = o.data("bs.collapse") ? "toggle" : r.data();
                i.call(o, a)
            }
            ))
        }(t)
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    (function(t) {
        !function(t) {
            "use strict";
            var e = '[data-toggle="dropdown"]'
              , n = function(e) {
                t(e).on("click.bs.dropdown", this.toggle)
            };
            function i(e) {
                var n = e.attr("data-target");
                n || (n = (n = e.attr("href")) && /#[A-Za-z]/.test(n) && n.replace(/.*(?=#[^\s]*$)/, ""));
                var i = "#" !== n ? t(document).find(n) : null;
                return i && i.length ? i : e.parent()
            }
            function r(n) {
                n && 3 === n.which || (t(".dropdown-backdrop").remove(),
                t(e).each((function() {
                    var e = t(this)
                      , r = i(e)
                      , o = {
                        relatedTarget: this
                    };
                    r.hasClass("open") && (n && "click" == n.type && /input|textarea/i.test(n.target.tagName) && t.contains(r[0], n.target) || (r.trigger(n = t.Event("hide.bs.dropdown", o)),
                    n.isDefaultPrevented() || (e.attr("aria-expanded", "false"),
                    r.removeClass("open").trigger(t.Event("hidden.bs.dropdown", o)))))
                }
                )))
            }
            n.VERSION = "3.4.1",
            n.prototype.toggle = function(e) {
                var n = t(this);
                if (!n.is(".disabled, :disabled")) {
                    var o = i(n)
                      , a = o.hasClass("open");
                    if (r(),
                    !a) {
                        "ontouchstart"in document.documentElement && !o.closest(".navbar-nav").length && t(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(t(this)).on("click", r);
                        var s = {
                            relatedTarget: this
                        };
                        if (o.trigger(e = t.Event("show.bs.dropdown", s)),
                        e.isDefaultPrevented())
                            return;
                        n.trigger("focus").attr("aria-expanded", "true"),
                        o.toggleClass("open").trigger(t.Event("shown.bs.dropdown", s))
                    }
                    return !1
                }
            }
            ,
            n.prototype.keydown = function(n) {
                if (/(38|40|27|32)/.test(n.which) && !/input|textarea/i.test(n.target.tagName)) {
                    var r = t(this);
                    if (n.preventDefault(),
                    n.stopPropagation(),
                    !r.is(".disabled, :disabled")) {
                        var o = i(r)
                          , a = o.hasClass("open");
                        if (!a && 27 != n.which || a && 27 == n.which)
                            return 27 == n.which && o.find(e).trigger("focus"),
                            r.trigger("click");
                        var s = o.find(".dropdown-menu li:not(.disabled):visible a");
                        if (s.length) {
                            var c = s.index(n.target);
                            38 == n.which && c > 0 && c--,
                            40 == n.which && c < s.length - 1 && c++,
                            ~c || (c = 0),
                            s.eq(c).trigger("focus")
                        }
                    }
                }
            }
            ;
            var o = t.fn.dropdown;
            t.fn.dropdown = function(e) {
                return this.each((function() {
                    var i = t(this)
                      , r = i.data("bs.dropdown");
                    r || i.data("bs.dropdown", r = new n(this)),
                    "string" == typeof e && r[e].call(i)
                }
                ))
            }
            ,
            t.fn.dropdown.Constructor = n,
            t.fn.dropdown.noConflict = function() {
                return t.fn.dropdown = o,
                this
            }
            ,
            t(document).on("click.bs.dropdown.data-api", r).on("click.bs.dropdown.data-api", ".dropdown form", (function(t) {
                t.stopPropagation()
            }
            )).on("click.bs.dropdown.data-api", e, n.prototype.toggle).on("keydown.bs.dropdown.data-api", e, n.prototype.keydown).on("keydown.bs.dropdown.data-api", ".dropdown-menu", n.prototype.keydown)
        }(t)
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    (function(t) {
        !function(t) {
            "use strict";
            var e = function(e, n) {
                this.options = n,
                this.$body = t(document.body),
                this.$element = t(e),
                this.$dialog = this.$element.find(".modal-dialog"),
                this.$backdrop = null,
                this.isShown = null,
                this.originalBodyPad = null,
                this.scrollbarWidth = 0,
                this.ignoreBackdropClick = !1,
                this.fixedContent = ".navbar-fixed-top, .navbar-fixed-bottom",
                this.options.remote && this.$element.find(".modal-content").load(this.options.remote, t.proxy((function() {
                    this.$element.trigger("loaded.bs.modal")
                }
                ), this))
            };
            function n(n, i) {
                return this.each((function() {
                    var r = t(this)
                      , o = r.data("bs.modal")
                      , a = t.extend({}, e.DEFAULTS, r.data(), "object" == typeof n && n);
                    o || r.data("bs.modal", o = new e(this,a)),
                    "string" == typeof n ? o[n](i) : a.show && o.show(i)
                }
                ))
            }
            e.VERSION = "3.4.1",
            e.TRANSITION_DURATION = 300,
            e.BACKDROP_TRANSITION_DURATION = 150,
            e.DEFAULTS = {
                backdrop: !0,
                keyboard: !0,
                show: !0
            },
            e.prototype.toggle = function(t) {
                return this.isShown ? this.hide() : this.show(t)
            }
            ,
            e.prototype.show = function(n) {
                var i = this
                  , r = t.Event("show.bs.modal", {
                    relatedTarget: n
                });
                this.$element.trigger(r),
                this.isShown || r.isDefaultPrevented() || (this.isShown = !0,
                this.checkScrollbar(),
                this.setScrollbar(),
                this.$body.addClass("modal-open"),
                this.escape(),
                this.resize(),
                this.$element.on("click.dismiss.bs.modal", '[data-dismiss="modal"]', t.proxy(this.hide, this)),
                this.$dialog.on("mousedown.dismiss.bs.modal", (function() {
                    i.$element.one("mouseup.dismiss.bs.modal", (function(e) {
                        t(e.target).is(i.$element) && (i.ignoreBackdropClick = !0)
                    }
                    ))
                }
                )),
                this.backdrop((function() {
                    var r = t.support.transition && i.$element.hasClass("fade");
                    i.$element.parent().length || i.$element.appendTo(i.$body),
                    i.$element.show().scrollTop(0),
                    i.adjustDialog(),
                    r && i.$element[0].offsetWidth,
                    i.$element.addClass("in"),
                    i.enforceFocus();
                    var o = t.Event("shown.bs.modal", {
                        relatedTarget: n
                    });
                    r ? i.$dialog.one("bsTransitionEnd", (function() {
                        i.$element.trigger("focus").trigger(o)
                    }
                    )).emulateTransitionEnd(e.TRANSITION_DURATION) : i.$element.trigger("focus").trigger(o)
                }
                )))
            }
            ,
            e.prototype.hide = function(n) {
                n && n.preventDefault(),
                n = t.Event("hide.bs.modal"),
                this.$element.trigger(n),
                this.isShown && !n.isDefaultPrevented() && (this.isShown = !1,
                this.escape(),
                this.resize(),
                t(document).off("focusin.bs.modal"),
                this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),
                this.$dialog.off("mousedown.dismiss.bs.modal"),
                t.support.transition && this.$element.hasClass("fade") ? this.$element.one("bsTransitionEnd", t.proxy(this.hideModal, this)).emulateTransitionEnd(e.TRANSITION_DURATION) : this.hideModal())
            }
            ,
            e.prototype.enforceFocus = function() {
                t(document).off("focusin.bs.modal").on("focusin.bs.modal", t.proxy((function(t) {
                    document === t.target || this.$element[0] === t.target || this.$element.has(t.target).length || this.$element.trigger("focus")
                }
                ), this))
            }
            ,
            e.prototype.escape = function() {
                this.isShown && this.options.keyboard ? this.$element.on("keydown.dismiss.bs.modal", t.proxy((function(t) {
                    27 == t.which && this.hide()
                }
                ), this)) : this.isShown || this.$element.off("keydown.dismiss.bs.modal")
            }
            ,
            e.prototype.resize = function() {
                this.isShown ? t(window).on("resize.bs.modal", t.proxy(this.handleUpdate, this)) : t(window).off("resize.bs.modal")
            }
            ,
            e.prototype.hideModal = function() {
                var t = this;
                this.$element.hide(),
                this.backdrop((function() {
                    t.$body.removeClass("modal-open"),
                    t.resetAdjustments(),
                    t.resetScrollbar(),
                    t.$element.trigger("hidden.bs.modal")
                }
                ))
            }
            ,
            e.prototype.removeBackdrop = function() {
                this.$backdrop && this.$backdrop.remove(),
                this.$backdrop = null
            }
            ,
            e.prototype.backdrop = function(n) {
                var i = this
                  , r = this.$element.hasClass("fade") ? "fade" : "";
                if (this.isShown && this.options.backdrop) {
                    var o = t.support.transition && r;
                    if (this.$backdrop = t(document.createElement("div")).addClass("modal-backdrop " + r).appendTo(this.$body),
                    this.$element.on("click.dismiss.bs.modal", t.proxy((function(t) {
                        this.ignoreBackdropClick ? this.ignoreBackdropClick = !1 : t.target === t.currentTarget && ("static" == this.options.backdrop ? this.$element[0].focus() : this.hide())
                    }
                    ), this)),
                    o && this.$backdrop[0].offsetWidth,
                    this.$backdrop.addClass("in"),
                    !n)
                        return;
                    o ? this.$backdrop.one("bsTransitionEnd", n).emulateTransitionEnd(e.BACKDROP_TRANSITION_DURATION) : n()
                } else if (!this.isShown && this.$backdrop) {
                    this.$backdrop.removeClass("in");
                    var a = function() {
                        i.removeBackdrop(),
                        n && n()
                    };
                    t.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one("bsTransitionEnd", a).emulateTransitionEnd(e.BACKDROP_TRANSITION_DURATION) : a()
                } else
                    n && n()
            }
            ,
            e.prototype.handleUpdate = function() {
                this.adjustDialog()
            }
            ,
            e.prototype.adjustDialog = function() {
                var t = this.$element[0].scrollHeight > document.documentElement.clientHeight;
                this.$element.css({
                    paddingLeft: !this.bodyIsOverflowing && t ? this.scrollbarWidth : "",
                    paddingRight: this.bodyIsOverflowing && !t ? this.scrollbarWidth : ""
                })
            }
            ,
            e.prototype.resetAdjustments = function() {
                this.$element.css({
                    paddingLeft: "",
                    paddingRight: ""
                })
            }
            ,
            e.prototype.checkScrollbar = function() {
                var t = window.innerWidth;
                if (!t) {
                    var e = document.documentElement.getBoundingClientRect();
                    t = e.right - Math.abs(e.left)
                }
                this.bodyIsOverflowing = document.body.clientWidth < t,
                this.scrollbarWidth = this.measureScrollbar()
            }
            ,
            e.prototype.setScrollbar = function() {
                var e = parseInt(this.$body.css("padding-right") || 0, 10);
                this.originalBodyPad = document.body.style.paddingRight || "";
                var n = this.scrollbarWidth;
                this.bodyIsOverflowing && (this.$body.css("padding-right", e + n),
                t(this.fixedContent).each((function(e, i) {
                    var r = i.style.paddingRight
                      , o = t(i).css("padding-right");
                    t(i).data("padding-right", r).css("padding-right", parseFloat(o) + n + "px")
                }
                )))
            }
            ,
            e.prototype.resetScrollbar = function() {
                this.$body.css("padding-right", this.originalBodyPad),
                t(this.fixedContent).each((function(e, n) {
                    var i = t(n).data("padding-right");
                    t(n).removeData("padding-right"),
                    n.style.paddingRight = i || ""
                }
                ))
            }
            ,
            e.prototype.measureScrollbar = function() {
                var t = document.createElement("div");
                t.className = "modal-scrollbar-measure",
                this.$body.append(t);
                var e = t.offsetWidth - t.clientWidth;
                return this.$body[0].removeChild(t),
                e
            }
            ;
            var i = t.fn.modal;
            t.fn.modal = n,
            t.fn.modal.Constructor = e,
            t.fn.modal.noConflict = function() {
                return t.fn.modal = i,
                this
            }
            ,
            t(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', (function(e) {
                var i = t(this)
                  , r = i.attr("href")
                  , o = i.attr("data-target") || r && r.replace(/.*(?=#[^\s]+$)/, "")
                  , a = t(document).find(o)
                  , s = a.data("bs.modal") ? "toggle" : t.extend({
                    remote: !/#/.test(r) && r
                }, a.data(), i.data());
                i.is("a") && e.preventDefault(),
                a.one("show.bs.modal", (function(t) {
                    t.isDefaultPrevented() || a.one("hidden.bs.modal", (function() {
                        i.is(":visible") && i.trigger("focus")
                    }
                    ))
                }
                )),
                n.call(a, s, this)
            }
            ))
        }(t)
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    (function(t) {
        !function(t) {
            "use strict";
            var e = ["sanitize", "whiteList", "sanitizeFn"]
              , n = ["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"]
              , i = {
                "*": ["class", "dir", "id", "lang", "role", /^aria-[\w-]*$/i],
                a: ["target", "href", "title", "rel"],
                area: [],
                b: [],
                br: [],
                col: [],
                code: [],
                div: [],
                em: [],
                hr: [],
                h1: [],
                h2: [],
                h3: [],
                h4: [],
                h5: [],
                h6: [],
                i: [],
                img: ["src", "alt", "title", "width", "height"],
                li: [],
                ol: [],
                p: [],
                pre: [],
                s: [],
                small: [],
                span: [],
                sub: [],
                sup: [],
                strong: [],
                u: [],
                ul: []
            }
              , r = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi
              , o = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;
            function a(e, i) {
                var a = e.nodeName.toLowerCase();
                if (-1 !== t.inArray(a, i))
                    return -1 === t.inArray(a, n) || Boolean(e.nodeValue.match(r) || e.nodeValue.match(o));
                for (var s = t(i).filter((function(t, e) {
                    return e instanceof RegExp
                }
                )), c = 0, l = s.length; c < l; c++)
                    if (a.match(s[c]))
                        return !0;
                return !1
            }
            function s(e, n, i) {
                if (0 === e.length)
                    return e;
                if (i && "function" == typeof i)
                    return i(e);
                if (!document.implementation || !document.implementation.createHTMLDocument)
                    return e;
                var r = document.implementation.createHTMLDocument("sanitization");
                r.body.innerHTML = e;
                for (var o = t.map(n, (function(t, e) {
                    return e
                }
                )), s = t(r.body).find("*"), c = 0, l = s.length; c < l; c++) {
                    var u = s[c]
                      , d = u.nodeName.toLowerCase();
                    if (-1 !== t.inArray(d, o))
                        for (var p = t.map(u.attributes, (function(t) {
                            return t
                        }
                        )), h = [].concat(n["*"] || [], n[d] || []), f = 0, m = p.length; f < m; f++)
                            a(p[f], h) || u.removeAttribute(p[f].nodeName);
                    else
                        u.parentNode.removeChild(u)
                }
                return r.body.innerHTML
            }
            var c = function(t, e) {
                this.type = null,
                this.options = null,
                this.enabled = null,
                this.timeout = null,
                this.hoverState = null,
                this.$element = null,
                this.inState = null,
                this.init("tooltip", t, e)
            };
            c.VERSION = "3.4.1",
            c.TRANSITION_DURATION = 150,
            c.DEFAULTS = {
                animation: !0,
                placement: "top",
                selector: !1,
                template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
                trigger: "hover focus",
                title: "",
                delay: 0,
                html: !1,
                container: !1,
                viewport: {
                    selector: "body",
                    padding: 0
                },
                sanitize: !0,
                sanitizeFn: null,
                whiteList: i
            },
            c.prototype.init = function(e, n, i) {
                if (this.enabled = !0,
                this.type = e,
                this.$element = t(n),
                this.options = this.getOptions(i),
                this.$viewport = this.options.viewport && t(document).find(t.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : this.options.viewport.selector || this.options.viewport),
                this.inState = {
                    click: !1,
                    hover: !1,
                    focus: !1
                },
                this.$element[0]instanceof document.constructor && !this.options.selector)
                    throw new Error("`selector` option must be specified when initializing " + this.type + " on the window.document object!");
                for (var r = this.options.trigger.split(" "), o = r.length; o--; ) {
                    var a = r[o];
                    if ("click" == a)
                        this.$element.on("click." + this.type, this.options.selector, t.proxy(this.toggle, this));
                    else if ("manual" != a) {
                        var s = "hover" == a ? "mouseenter" : "focusin"
                          , c = "hover" == a ? "mouseleave" : "focusout";
                        this.$element.on(s + "." + this.type, this.options.selector, t.proxy(this.enter, this)),
                        this.$element.on(c + "." + this.type, this.options.selector, t.proxy(this.leave, this))
                    }
                }
                this.options.selector ? this._options = t.extend({}, this.options, {
                    trigger: "manual",
                    selector: ""
                }) : this.fixTitle()
            }
            ,
            c.prototype.getDefaults = function() {
                return c.DEFAULTS
            }
            ,
            c.prototype.getOptions = function(n) {
                var i = this.$element.data();
                for (var r in i)
                    i.hasOwnProperty(r) && -1 !== t.inArray(r, e) && delete i[r];
                return (n = t.extend({}, this.getDefaults(), i, n)).delay && "number" == typeof n.delay && (n.delay = {
                    show: n.delay,
                    hide: n.delay
                }),
                n.sanitize && (n.template = s(n.template, n.whiteList, n.sanitizeFn)),
                n
            }
            ,
            c.prototype.getDelegateOptions = function() {
                var e = {}
                  , n = this.getDefaults();
                return this._options && t.each(this._options, (function(t, i) {
                    n[t] != i && (e[t] = i)
                }
                )),
                e
            }
            ,
            c.prototype.enter = function(e) {
                var n = e instanceof this.constructor ? e : t(e.currentTarget).data("bs." + this.type);
                if (n || (n = new this.constructor(e.currentTarget,this.getDelegateOptions()),
                t(e.currentTarget).data("bs." + this.type, n)),
                e instanceof t.Event && (n.inState["focusin" == e.type ? "focus" : "hover"] = !0),
                n.tip().hasClass("in") || "in" == n.hoverState)
                    n.hoverState = "in";
                else {
                    if (clearTimeout(n.timeout),
                    n.hoverState = "in",
                    !n.options.delay || !n.options.delay.show)
                        return n.show();
                    n.timeout = setTimeout((function() {
                        "in" == n.hoverState && n.show()
                    }
                    ), n.options.delay.show)
                }
            }
            ,
            c.prototype.isInStateTrue = function() {
                for (var t in this.inState)
                    if (this.inState[t])
                        return !0;
                return !1
            }
            ,
            c.prototype.leave = function(e) {
                var n = e instanceof this.constructor ? e : t(e.currentTarget).data("bs." + this.type);
                if (n || (n = new this.constructor(e.currentTarget,this.getDelegateOptions()),
                t(e.currentTarget).data("bs." + this.type, n)),
                e instanceof t.Event && (n.inState["focusout" == e.type ? "focus" : "hover"] = !1),
                !n.isInStateTrue()) {
                    if (clearTimeout(n.timeout),
                    n.hoverState = "out",
                    !n.options.delay || !n.options.delay.hide)
                        return n.hide();
                    n.timeout = setTimeout((function() {
                        "out" == n.hoverState && n.hide()
                    }
                    ), n.options.delay.hide)
                }
            }
            ,
            c.prototype.show = function() {
                var e = t.Event("show.bs." + this.type);
                if (this.hasContent() && this.enabled) {
                    this.$element.trigger(e);
                    var n = t.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]);
                    if (e.isDefaultPrevented() || !n)
                        return;
                    var i = this
                      , r = this.tip()
                      , o = this.getUID(this.type);
                    this.setContent(),
                    r.attr("id", o),
                    this.$element.attr("aria-describedby", o),
                    this.options.animation && r.addClass("fade");
                    var a = "function" == typeof this.options.placement ? this.options.placement.call(this, r[0], this.$element[0]) : this.options.placement
                      , s = /\s?auto?\s?/i
                      , l = s.test(a);
                    l && (a = a.replace(s, "") || "top"),
                    r.detach().css({
                        top: 0,
                        left: 0,
                        display: "block"
                    }).addClass(a).data("bs." + this.type, this),
                    this.options.container ? r.appendTo(t(document).find(this.options.container)) : r.insertAfter(this.$element),
                    this.$element.trigger("inserted.bs." + this.type);
                    var u = this.getPosition()
                      , d = r[0].offsetWidth
                      , p = r[0].offsetHeight;
                    if (l) {
                        var h = a
                          , f = this.getPosition(this.$viewport);
                        a = "bottom" == a && u.bottom + p > f.bottom ? "top" : "top" == a && u.top - p < f.top ? "bottom" : "right" == a && u.right + d > f.width ? "left" : "left" == a && u.left - d < f.left ? "right" : a,
                        r.removeClass(h).addClass(a)
                    }
                    var m = this.getCalculatedOffset(a, u, d, p);
                    this.applyPlacement(m, a);
                    var g = function() {
                        var t = i.hoverState;
                        i.$element.trigger("shown.bs." + i.type),
                        i.hoverState = null,
                        "out" == t && i.leave(i)
                    };
                    t.support.transition && this.$tip.hasClass("fade") ? r.one("bsTransitionEnd", g).emulateTransitionEnd(c.TRANSITION_DURATION) : g()
                }
            }
            ,
            c.prototype.applyPlacement = function(e, n) {
                var i = this.tip()
                  , r = i[0].offsetWidth
                  , o = i[0].offsetHeight
                  , a = parseInt(i.css("margin-top"), 10)
                  , s = parseInt(i.css("margin-left"), 10);
                isNaN(a) && (a = 0),
                isNaN(s) && (s = 0),
                e.top += a,
                e.left += s,
                t.offset.setOffset(i[0], t.extend({
                    using: function(t) {
                        i.css({
                            top: Math.round(t.top),
                            left: Math.round(t.left)
                        })
                    }
                }, e), 0),
                i.addClass("in");
                var c = i[0].offsetWidth
                  , l = i[0].offsetHeight;
                "top" == n && l != o && (e.top = e.top + o - l);
                var u = this.getViewportAdjustedDelta(n, e, c, l);
                u.left ? e.left += u.left : e.top += u.top;
                var d = /top|bottom/.test(n)
                  , p = d ? 2 * u.left - r + c : 2 * u.top - o + l
                  , h = d ? "offsetWidth" : "offsetHeight";
                i.offset(e),
                this.replaceArrow(p, i[0][h], d)
            }
            ,
            c.prototype.replaceArrow = function(t, e, n) {
                this.arrow().css(n ? "left" : "top", 50 * (1 - t / e) + "%").css(n ? "top" : "left", "")
            }
            ,
            c.prototype.setContent = function() {
                var t = this.tip()
                  , e = this.getTitle();
                this.options.html ? (this.options.sanitize && (e = s(e, this.options.whiteList, this.options.sanitizeFn)),
                t.find(".tooltip-inner").html(e)) : t.find(".tooltip-inner").text(e),
                t.removeClass("fade in top bottom left right")
            }
            ,
            c.prototype.hide = function(e) {
                var n = this
                  , i = t(this.$tip)
                  , r = t.Event("hide.bs." + this.type);
                function o() {
                    "in" != n.hoverState && i.detach(),
                    n.$element && n.$element.removeAttr("aria-describedby").trigger("hidden.bs." + n.type),
                    e && e()
                }
                if (this.$element.trigger(r),
                !r.isDefaultPrevented())
                    return i.removeClass("in"),
                    t.support.transition && i.hasClass("fade") ? i.one("bsTransitionEnd", o).emulateTransitionEnd(c.TRANSITION_DURATION) : o(),
                    this.hoverState = null,
                    this
            }
            ,
            c.prototype.fixTitle = function() {
                var t = this.$element;
                (t.attr("title") || "string" != typeof t.attr("data-original-title")) && t.attr("data-original-title", t.attr("title") || "").attr("title", "")
            }
            ,
            c.prototype.hasContent = function() {
                return this.getTitle()
            }
            ,
            c.prototype.getPosition = function(e) {
                var n = (e = e || this.$element)[0]
                  , i = "BODY" == n.tagName
                  , r = n.getBoundingClientRect();
                null == r.width && (r = t.extend({}, r, {
                    width: r.right - r.left,
                    height: r.bottom - r.top
                }));
                var o = window.SVGElement && n instanceof window.SVGElement
                  , a = i ? {
                    top: 0,
                    left: 0
                } : o ? null : e.offset()
                  , s = {
                    scroll: i ? document.documentElement.scrollTop || document.body.scrollTop : e.scrollTop()
                }
                  , c = i ? {
                    width: t(window).width(),
                    height: t(window).height()
                } : null;
                return t.extend({}, r, s, c, a)
            }
            ,
            c.prototype.getCalculatedOffset = function(t, e, n, i) {
                return "bottom" == t ? {
                    top: e.top + e.height,
                    left: e.left + e.width / 2 - n / 2
                } : "top" == t ? {
                    top: e.top - i,
                    left: e.left + e.width / 2 - n / 2
                } : "left" == t ? {
                    top: e.top + e.height / 2 - i / 2,
                    left: e.left - n
                } : {
                    top: e.top + e.height / 2 - i / 2,
                    left: e.left + e.width
                }
            }
            ,
            c.prototype.getViewportAdjustedDelta = function(t, e, n, i) {
                var r = {
                    top: 0,
                    left: 0
                };
                if (!this.$viewport)
                    return r;
                var o = this.options.viewport && this.options.viewport.padding || 0
                  , a = this.getPosition(this.$viewport);
                if (/right|left/.test(t)) {
                    var s = e.top - o - a.scroll
                      , c = e.top + o - a.scroll + i;
                    s < a.top ? r.top = a.top - s : c > a.top + a.height && (r.top = a.top + a.height - c)
                } else {
                    var l = e.left - o
                      , u = e.left + o + n;
                    l < a.left ? r.left = a.left - l : u > a.right && (r.left = a.left + a.width - u)
                }
                return r
            }
            ,
            c.prototype.getTitle = function() {
                var t = this.$element
                  , e = this.options;
                return t.attr("data-original-title") || ("function" == typeof e.title ? e.title.call(t[0]) : e.title)
            }
            ,
            c.prototype.getUID = function(t) {
                do {
                    t += ~~(1e6 * Math.random())
                } while (document.getElementById(t));
                return t
            }
            ,
            c.prototype.tip = function() {
                if (!this.$tip && (this.$tip = t(this.options.template),
                1 != this.$tip.length))
                    throw new Error(this.type + " `template` option must consist of exactly 1 top-level element!");
                return this.$tip
            }
            ,
            c.prototype.arrow = function() {
                return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
            }
            ,
            c.prototype.enable = function() {
                this.enabled = !0
            }
            ,
            c.prototype.disable = function() {
                this.enabled = !1
            }
            ,
            c.prototype.toggleEnabled = function() {
                this.enabled = !this.enabled
            }
            ,
            c.prototype.toggle = function(e) {
                var n = this;
                e && ((n = t(e.currentTarget).data("bs." + this.type)) || (n = new this.constructor(e.currentTarget,this.getDelegateOptions()),
                t(e.currentTarget).data("bs." + this.type, n))),
                e ? (n.inState.click = !n.inState.click,
                n.isInStateTrue() ? n.enter(n) : n.leave(n)) : n.tip().hasClass("in") ? n.leave(n) : n.enter(n)
            }
            ,
            c.prototype.destroy = function() {
                var t = this;
                clearTimeout(this.timeout),
                this.hide((function() {
                    t.$element.off("." + t.type).removeData("bs." + t.type),
                    t.$tip && t.$tip.detach(),
                    t.$tip = null,
                    t.$arrow = null,
                    t.$viewport = null,
                    t.$element = null
                }
                ))
            }
            ,
            c.prototype.sanitizeHtml = function(t) {
                return s(t, this.options.whiteList, this.options.sanitizeFn)
            }
            ;
            var l = t.fn.tooltip;
            t.fn.tooltip = function(e) {
                return this.each((function() {
                    var n = t(this)
                      , i = n.data("bs.tooltip")
                      , r = "object" == typeof e && e;
                    !i && /destroy|hide/.test(e) || (i || n.data("bs.tooltip", i = new c(this,r)),
                    "string" == typeof e && i[e]())
                }
                ))
            }
            ,
            t.fn.tooltip.Constructor = c,
            t.fn.tooltip.noConflict = function() {
                return t.fn.tooltip = l,
                this
            }
        }(t)
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    (function(t) {
        !function(t) {
            "use strict";
            var e = function(t, e) {
                this.init("popover", t, e)
            };
            if (!t.fn.tooltip)
                throw new Error("Popover requires tooltip.js");
            e.VERSION = "3.4.1",
            e.DEFAULTS = t.extend({}, t.fn.tooltip.Constructor.DEFAULTS, {
                placement: "right",
                trigger: "click",
                content: "",
                template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
            }),
            (e.prototype = t.extend({}, t.fn.tooltip.Constructor.prototype)).constructor = e,
            e.prototype.getDefaults = function() {
                return e.DEFAULTS
            }
            ,
            e.prototype.setContent = function() {
                var t = this.tip()
                  , e = this.getTitle()
                  , n = this.getContent();
                if (this.options.html) {
                    var i = typeof n;
                    this.options.sanitize && (e = this.sanitizeHtml(e),
                    "string" === i && (n = this.sanitizeHtml(n))),
                    t.find(".popover-title").html(e),
                    t.find(".popover-content").children().detach().end()["string" === i ? "html" : "append"](n)
                } else
                    t.find(".popover-title").text(e),
                    t.find(".popover-content").children().detach().end().text(n);
                t.removeClass("fade top bottom left right in"),
                t.find(".popover-title").html() || t.find(".popover-title").hide()
            }
            ,
            e.prototype.hasContent = function() {
                return this.getTitle() || this.getContent()
            }
            ,
            e.prototype.getContent = function() {
                var t = this.$element
                  , e = this.options;
                return t.attr("data-content") || ("function" == typeof e.content ? e.content.call(t[0]) : e.content)
            }
            ,
            e.prototype.arrow = function() {
                return this.$arrow = this.$arrow || this.tip().find(".arrow")
            }
            ;
            var n = t.fn.popover;
            t.fn.popover = function(n) {
                return this.each((function() {
                    var i = t(this)
                      , r = i.data("bs.popover")
                      , o = "object" == typeof n && n;
                    !r && /destroy|hide/.test(n) || (r || i.data("bs.popover", r = new e(this,o)),
                    "string" == typeof n && r[n]())
                }
                ))
            }
            ,
            t.fn.popover.Constructor = e,
            t.fn.popover.noConflict = function() {
                return t.fn.popover = n,
                this
            }
        }(t)
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    (function(t) {
        !function(t) {
            "use strict";
            function e(n, i) {
                this.$body = t(document.body),
                this.$scrollElement = t(n).is(document.body) ? t(window) : t(n),
                this.options = t.extend({}, e.DEFAULTS, i),
                this.selector = (this.options.target || "") + " .nav li > a",
                this.offsets = [],
                this.targets = [],
                this.activeTarget = null,
                this.scrollHeight = 0,
                this.$scrollElement.on("scroll.bs.scrollspy", t.proxy(this.process, this)),
                this.refresh(),
                this.process()
            }
            function n(n) {
                return this.each((function() {
                    var i = t(this)
                      , r = i.data("bs.scrollspy")
                      , o = "object" == typeof n && n;
                    r || i.data("bs.scrollspy", r = new e(this,o)),
                    "string" == typeof n && r[n]()
                }
                ))
            }
            e.VERSION = "3.4.1",
            e.DEFAULTS = {
                offset: 10
            },
            e.prototype.getScrollHeight = function() {
                return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
            }
            ,
            e.prototype.refresh = function() {
                var e = this
                  , n = "offset"
                  , i = 0;
                this.offsets = [],
                this.targets = [],
                this.scrollHeight = this.getScrollHeight(),
                t.isWindow(this.$scrollElement[0]) || (n = "position",
                i = this.$scrollElement.scrollTop()),
                this.$body.find(this.selector).map((function() {
                    var e = t(this)
                      , r = e.data("target") || e.attr("href")
                      , o = /^#./.test(r) && t(r);
                    return o && o.length && o.is(":visible") && [[o[n]().top + i, r]] || null
                }
                )).sort((function(t, e) {
                    return t[0] - e[0]
                }
                )).each((function() {
                    e.offsets.push(this[0]),
                    e.targets.push(this[1])
                }
                ))
            }
            ,
            e.prototype.process = function() {
                var t, e = this.$scrollElement.scrollTop() + this.options.offset, n = this.getScrollHeight(), i = this.options.offset + n - this.$scrollElement.height(), r = this.offsets, o = this.targets, a = this.activeTarget;
                if (this.scrollHeight != n && this.refresh(),
                e >= i)
                    return a != (t = o[o.length - 1]) && this.activate(t);
                if (a && e < r[0])
                    return this.activeTarget = null,
                    this.clear();
                for (t = r.length; t--; )
                    a != o[t] && e >= r[t] && (void 0 === r[t + 1] || e < r[t + 1]) && this.activate(o[t])
            }
            ,
            e.prototype.activate = function(e) {
                this.activeTarget = e,
                this.clear();
                var n = this.selector + '[data-target="' + e + '"],' + this.selector + '[href="' + e + '"]'
                  , i = t(n).parents("li").addClass("active");
                i.parent(".dropdown-menu").length && (i = i.closest("li.dropdown").addClass("active")),
                i.trigger("activate.bs.scrollspy")
            }
            ,
            e.prototype.clear = function() {
                t(this.selector).parentsUntil(this.options.target, ".active").removeClass("active")
            }
            ;
            var i = t.fn.scrollspy;
            t.fn.scrollspy = n,
            t.fn.scrollspy.Constructor = e,
            t.fn.scrollspy.noConflict = function() {
                return t.fn.scrollspy = i,
                this
            }
            ,
            t(window).on("load.bs.scrollspy.data-api", (function() {
                t('[data-spy="scroll"]').each((function() {
                    var e = t(this);
                    n.call(e, e.data())
                }
                ))
            }
            ))
        }(t)
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    (function(t) {
        !function(t) {
            "use strict";
            var e = function(e) {
                this.element = t(e)
            };
            function n(n) {
                return this.each((function() {
                    var i = t(this)
                      , r = i.data("bs.tab");
                    r || i.data("bs.tab", r = new e(this)),
                    "string" == typeof n && r[n]()
                }
                ))
            }
            e.VERSION = "3.4.1",
            e.TRANSITION_DURATION = 150,
            e.prototype.show = function() {
                var e = this.element
                  , n = e.closest("ul:not(.dropdown-menu)")
                  , i = e.data("target");
                if (i || (i = (i = e.attr("href")) && i.replace(/.*(?=#[^\s]*$)/, "")),
                !e.parent("li").hasClass("active")) {
                    var r = n.find(".active:last a")
                      , o = t.Event("hide.bs.tab", {
                        relatedTarget: e[0]
                    })
                      , a = t.Event("show.bs.tab", {
                        relatedTarget: r[0]
                    });
                    if (r.trigger(o),
                    e.trigger(a),
                    !a.isDefaultPrevented() && !o.isDefaultPrevented()) {
                        var s = t(document).find(i);
                        this.activate(e.closest("li"), n),
                        this.activate(s, s.parent(), (function() {
                            r.trigger({
                                type: "hidden.bs.tab",
                                relatedTarget: e[0]
                            }),
                            e.trigger({
                                type: "shown.bs.tab",
                                relatedTarget: r[0]
                            })
                        }
                        ))
                    }
                }
            }
            ,
            e.prototype.activate = function(n, i, r) {
                var o = i.find("> .active")
                  , a = r && t.support.transition && (o.length && o.hasClass("fade") || !!i.find("> .fade").length);
                function s() {
                    o.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", !1),
                    n.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded", !0),
                    a ? (n[0].offsetWidth,
                    n.addClass("in")) : n.removeClass("fade"),
                    n.parent(".dropdown-menu").length && n.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded", !0),
                    r && r()
                }
                o.length && a ? o.one("bsTransitionEnd", s).emulateTransitionEnd(e.TRANSITION_DURATION) : s(),
                o.removeClass("in")
            }
            ;
            var i = t.fn.tab;
            t.fn.tab = n,
            t.fn.tab.Constructor = e,
            t.fn.tab.noConflict = function() {
                return t.fn.tab = i,
                this
            }
            ;
            var r = function(e) {
                e.preventDefault(),
                n.call(t(this), "show")
            };
            t(document).on("click.bs.tab.data-api", '[data-toggle="tab"]', r).on("click.bs.tab.data-api", '[data-toggle="pill"]', r)
        }(t)
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    (function(t) {
        !function(t) {
            "use strict";
            var e = function(n, i) {
                this.options = t.extend({}, e.DEFAULTS, i);
                var r = this.options.target === e.DEFAULTS.target ? t(this.options.target) : t(document).find(this.options.target);
                this.$target = r.on("scroll.bs.affix.data-api", t.proxy(this.checkPosition, this)).on("click.bs.affix.data-api", t.proxy(this.checkPositionWithEventLoop, this)),
                this.$element = t(n),
                this.affixed = null,
                this.unpin = null,
                this.pinnedOffset = null,
                this.checkPosition()
            };
            function n(n) {
                return this.each((function() {
                    var i = t(this)
                      , r = i.data("bs.affix")
                      , o = "object" == typeof n && n;
                    r || i.data("bs.affix", r = new e(this,o)),
                    "string" == typeof n && r[n]()
                }
                ))
            }
            e.VERSION = "3.4.1",
            e.RESET = "affix affix-top affix-bottom",
            e.DEFAULTS = {
                offset: 0,
                target: window
            },
            e.prototype.getState = function(t, e, n, i) {
                var r = this.$target.scrollTop()
                  , o = this.$element.offset()
                  , a = this.$target.height();
                if (null != n && "top" == this.affixed)
                    return r < n && "top";
                if ("bottom" == this.affixed)
                    return null != n ? !(r + this.unpin <= o.top) && "bottom" : !(r + a <= t - i) && "bottom";
                var s = null == this.affixed
                  , c = s ? r : o.top;
                return null != n && r <= n ? "top" : null != i && c + (s ? a : e) >= t - i && "bottom"
            }
            ,
            e.prototype.getPinnedOffset = function() {
                if (this.pinnedOffset)
                    return this.pinnedOffset;
                this.$element.removeClass(e.RESET).addClass("affix");
                var t = this.$target.scrollTop()
                  , n = this.$element.offset();
                return this.pinnedOffset = n.top - t
            }
            ,
            e.prototype.checkPositionWithEventLoop = function() {
                setTimeout(t.proxy(this.checkPosition, this), 1)
            }
            ,
            e.prototype.checkPosition = function() {
                if (this.$element.is(":visible")) {
                    var n = this.$element.height()
                      , i = this.options.offset
                      , r = i.top
                      , o = i.bottom
                      , a = Math.max(t(document).height(), t(document.body).height());
                    "object" != typeof i && (o = r = i),
                    "function" == typeof r && (r = i.top(this.$element)),
                    "function" == typeof o && (o = i.bottom(this.$element));
                    var s = this.getState(a, n, r, o);
                    if (this.affixed != s) {
                        null != this.unpin && this.$element.css("top", "");
                        var c = "affix" + (s ? "-" + s : "")
                          , l = t.Event(c + ".bs.affix");
                        if (this.$element.trigger(l),
                        l.isDefaultPrevented())
                            return;
                        this.affixed = s,
                        this.unpin = "bottom" == s ? this.getPinnedOffset() : null,
                        this.$element.removeClass(e.RESET).addClass(c).trigger(c.replace("affix", "affixed") + ".bs.affix")
                    }
                    "bottom" == s && this.$element.offset({
                        top: a - n - o
                    })
                }
            }
            ;
            var i = t.fn.affix;
            t.fn.affix = n,
            t.fn.affix.Constructor = e,
            t.fn.affix.noConflict = function() {
                return t.fn.affix = i,
                this
            }
            ,
            t(window).on("load", (function() {
                t('[data-spy="affix"]').each((function() {
                    var e = t(this)
                      , i = e.data();
                    i.offset = i.offset || {},
                    null != i.offsetBottom && (i.offset.bottom = i.offsetBottom),
                    null != i.offsetTop && (i.offset.top = i.offsetTop),
                    n.call(e, i)
                }
                ))
            }
            ))
        }(t)
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    var i = n(11)
      , r = n(884);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    var i = n(10)
      , r = n(211)
      , o = n(885)
      , a = n(886)
      , s = n(887)
      , c = n(888)
      , l = n(889);
    e = i(!1);
    var u = r(o)
      , d = r(a)
      , p = r(s)
      , h = r(c)
      , f = r(l);
    e.push([t.i, '/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:Glyphicons Halflings;src:url(' + u + ");src:url(" + u + ') format("embedded-opentype"),url(' + d + ') format("woff2"),url(' + p + ') format("woff"),url(' + h + ') format("truetype"),url(' + f + ') format("svg")}.glyphicon{position:relative;top:1px;display:inline-block;font-family:Glyphicons Halflings;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\\002a"}.glyphicon-plus:before{content:"\\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\\20ac"}.glyphicon-minus:before{content:"\\2212"}.glyphicon-cloud:before{content:"\\2601"}.glyphicon-envelope:before{content:"\\2709"}.glyphicon-pencil:before{content:"\\270f"}.glyphicon-glass:before{content:"\\e001"}.glyphicon-music:before{content:"\\e002"}.glyphicon-search:before{content:"\\e003"}.glyphicon-heart:before{content:"\\e005"}.glyphicon-star:before{content:"\\e006"}.glyphicon-star-empty:before{content:"\\e007"}.glyphicon-user:before{content:"\\e008"}.glyphicon-film:before{content:"\\e009"}.glyphicon-th-large:before{content:"\\e010"}.glyphicon-th:before{content:"\\e011"}.glyphicon-th-list:before{content:"\\e012"}.glyphicon-ok:before{content:"\\e013"}.glyphicon-remove:before{content:"\\e014"}.glyphicon-zoom-in:before{content:"\\e015"}.glyphicon-zoom-out:before{content:"\\e016"}.glyphicon-off:before{content:"\\e017"}.glyphicon-signal:before{content:"\\e018"}.glyphicon-cog:before{content:"\\e019"}.glyphicon-trash:before{content:"\\e020"}.glyphicon-home:before{content:"\\e021"}.glyphicon-file:before{content:"\\e022"}.glyphicon-time:before{content:"\\e023"}.glyphicon-road:before{content:"\\e024"}.glyphicon-download-alt:before{content:"\\e025"}.glyphicon-download:before{content:"\\e026"}.glyphicon-upload:before{content:"\\e027"}.glyphicon-inbox:before{content:"\\e028"}.glyphicon-play-circle:before{content:"\\e029"}.glyphicon-repeat:before{content:"\\e030"}.glyphicon-refresh:before{content:"\\e031"}.glyphicon-list-alt:before{content:"\\e032"}.glyphicon-lock:before{content:"\\e033"}.glyphicon-flag:before{content:"\\e034"}.glyphicon-headphones:before{content:"\\e035"}.glyphicon-volume-off:before{content:"\\e036"}.glyphicon-volume-down:before{content:"\\e037"}.glyphicon-volume-up:before{content:"\\e038"}.glyphicon-qrcode:before{content:"\\e039"}.glyphicon-barcode:before{content:"\\e040"}.glyphicon-tag:before{content:"\\e041"}.glyphicon-tags:before{content:"\\e042"}.glyphicon-book:before{content:"\\e043"}.glyphicon-bookmark:before{content:"\\e044"}.glyphicon-print:before{content:"\\e045"}.glyphicon-camera:before{content:"\\e046"}.glyphicon-font:before{content:"\\e047"}.glyphicon-bold:before{content:"\\e048"}.glyphicon-italic:before{content:"\\e049"}.glyphicon-text-height:before{content:"\\e050"}.glyphicon-text-width:before{content:"\\e051"}.glyphicon-align-left:before{content:"\\e052"}.glyphicon-align-center:before{content:"\\e053"}.glyphicon-align-right:before{content:"\\e054"}.glyphicon-align-justify:before{content:"\\e055"}.glyphicon-list:before{content:"\\e056"}.glyphicon-indent-left:before{content:"\\e057"}.glyphicon-indent-right:before{content:"\\e058"}.glyphicon-facetime-video:before{content:"\\e059"}.glyphicon-picture:before{content:"\\e060"}.glyphicon-map-marker:before{content:"\\e062"}.glyphicon-adjust:before{content:"\\e063"}.glyphicon-tint:before{content:"\\e064"}.glyphicon-edit:before{content:"\\e065"}.glyphicon-share:before{content:"\\e066"}.glyphicon-check:before{content:"\\e067"}.glyphicon-move:before{content:"\\e068"}.glyphicon-step-backward:before{content:"\\e069"}.glyphicon-fast-backward:before{content:"\\e070"}.glyphicon-backward:before{content:"\\e071"}.glyphicon-play:before{content:"\\e072"}.glyphicon-pause:before{content:"\\e073"}.glyphicon-stop:before{content:"\\e074"}.glyphicon-forward:before{content:"\\e075"}.glyphicon-fast-forward:before{content:"\\e076"}.glyphicon-step-forward:before{content:"\\e077"}.glyphicon-eject:before{content:"\\e078"}.glyphicon-chevron-left:before{content:"\\e079"}.glyphicon-chevron-right:before{content:"\\e080"}.glyphicon-plus-sign:before{content:"\\e081"}.glyphicon-minus-sign:before{content:"\\e082"}.glyphicon-remove-sign:before{content:"\\e083"}.glyphicon-ok-sign:before{content:"\\e084"}.glyphicon-question-sign:before{content:"\\e085"}.glyphicon-info-sign:before{content:"\\e086"}.glyphicon-screenshot:before{content:"\\e087"}.glyphicon-remove-circle:before{content:"\\e088"}.glyphicon-ok-circle:before{content:"\\e089"}.glyphicon-ban-circle:before{content:"\\e090"}.glyphicon-arrow-left:before{content:"\\e091"}.glyphicon-arrow-right:before{content:"\\e092"}.glyphicon-arrow-up:before{content:"\\e093"}.glyphicon-arrow-down:before{content:"\\e094"}.glyphicon-share-alt:before{content:"\\e095"}.glyphicon-resize-full:before{content:"\\e096"}.glyphicon-resize-small:before{content:"\\e097"}.glyphicon-exclamation-sign:before{content:"\\e101"}.glyphicon-gift:before{content:"\\e102"}.glyphicon-leaf:before{content:"\\e103"}.glyphicon-fire:before{content:"\\e104"}.glyphicon-eye-open:before{content:"\\e105"}.glyphicon-eye-close:before{content:"\\e106"}.glyphicon-warning-sign:before{content:"\\e107"}.glyphicon-plane:before{content:"\\e108"}.glyphicon-calendar:before{content:"\\e109"}.glyphicon-random:before{content:"\\e110"}.glyphicon-comment:before{content:"\\e111"}.glyphicon-magnet:before{content:"\\e112"}.glyphicon-chevron-up:before{content:"\\e113"}.glyphicon-chevron-down:before{content:"\\e114"}.glyphicon-retweet:before{content:"\\e115"}.glyphicon-shopping-cart:before{content:"\\e116"}.glyphicon-folder-close:before{content:"\\e117"}.glyphicon-folder-open:before{content:"\\e118"}.glyphicon-resize-vertical:before{content:"\\e119"}.glyphicon-resize-horizontal:before{content:"\\e120"}.glyphicon-hdd:before{content:"\\e121"}.glyphicon-bullhorn:before{content:"\\e122"}.glyphicon-bell:before{content:"\\e123"}.glyphicon-certificate:before{content:"\\e124"}.glyphicon-thumbs-up:before{content:"\\e125"}.glyphicon-thumbs-down:before{content:"\\e126"}.glyphicon-hand-right:before{content:"\\e127"}.glyphicon-hand-left:before{content:"\\e128"}.glyphicon-hand-up:before{content:"\\e129"}.glyphicon-hand-down:before{content:"\\e130"}.glyphicon-circle-arrow-right:before{content:"\\e131"}.glyphicon-circle-arrow-left:before{content:"\\e132"}.glyphicon-circle-arrow-up:before{content:"\\e133"}.glyphicon-circle-arrow-down:before{content:"\\e134"}.glyphicon-globe:before{content:"\\e135"}.glyphicon-wrench:before{content:"\\e136"}.glyphicon-tasks:before{content:"\\e137"}.glyphicon-filter:before{content:"\\e138"}.glyphicon-briefcase:before{content:"\\e139"}.glyphicon-fullscreen:before{content:"\\e140"}.glyphicon-dashboard:before{content:"\\e141"}.glyphicon-paperclip:before{content:"\\e142"}.glyphicon-heart-empty:before{content:"\\e143"}.glyphicon-link:before{content:"\\e144"}.glyphicon-phone:before{content:"\\e145"}.glyphicon-pushpin:before{content:"\\e146"}.glyphicon-usd:before{content:"\\e148"}.glyphicon-gbp:before{content:"\\e149"}.glyphicon-sort:before{content:"\\e150"}.glyphicon-sort-by-alphabet:before{content:"\\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\\e152"}.glyphicon-sort-by-order:before{content:"\\e153"}.glyphicon-sort-by-order-alt:before{content:"\\e154"}.glyphicon-sort-by-attributes:before{content:"\\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\\e156"}.glyphicon-unchecked:before{content:"\\e157"}.glyphicon-expand:before{content:"\\e158"}.glyphicon-collapse-down:before{content:"\\e159"}.glyphicon-collapse-up:before{content:"\\e160"}.glyphicon-log-in:before{content:"\\e161"}.glyphicon-flash:before{content:"\\e162"}.glyphicon-log-out:before{content:"\\e163"}.glyphicon-new-window:before{content:"\\e164"}.glyphicon-record:before{content:"\\e165"}.glyphicon-save:before{content:"\\e166"}.glyphicon-open:before{content:"\\e167"}.glyphicon-saved:before{content:"\\e168"}.glyphicon-import:before{content:"\\e169"}.glyphicon-export:before{content:"\\e170"}.glyphicon-send:before{content:"\\e171"}.glyphicon-floppy-disk:before{content:"\\e172"}.glyphicon-floppy-saved:before{content:"\\e173"}.glyphicon-floppy-remove:before{content:"\\e174"}.glyphicon-floppy-save:before{content:"\\e175"}.glyphicon-floppy-open:before{content:"\\e176"}.glyphicon-credit-card:before{content:"\\e177"}.glyphicon-transfer:before{content:"\\e178"}.glyphicon-cutlery:before{content:"\\e179"}.glyphicon-header:before{content:"\\e180"}.glyphicon-compressed:before{content:"\\e181"}.glyphicon-earphone:before{content:"\\e182"}.glyphicon-phone-alt:before{content:"\\e183"}.glyphicon-tower:before{content:"\\e184"}.glyphicon-stats:before{content:"\\e185"}.glyphicon-sd-video:before{content:"\\e186"}.glyphicon-hd-video:before{content:"\\e187"}.glyphicon-subtitles:before{content:"\\e188"}.glyphicon-sound-stereo:before{content:"\\e189"}.glyphicon-sound-dolby:before{content:"\\e190"}.glyphicon-sound-5-1:before{content:"\\e191"}.glyphicon-sound-6-1:before{content:"\\e192"}.glyphicon-sound-7-1:before{content:"\\e193"}.glyphicon-copyright-mark:before{content:"\\e194"}.glyphicon-registration-mark:before{content:"\\e195"}.glyphicon-cloud-download:before{content:"\\e197"}.glyphicon-cloud-upload:before{content:"\\e198"}.glyphicon-tree-conifer:before{content:"\\e199"}.glyphicon-tree-deciduous:before{content:"\\e200"}.glyphicon-cd:before{content:"\\e201"}.glyphicon-save-file:before{content:"\\e202"}.glyphicon-open-file:before{content:"\\e203"}.glyphicon-level-up:before{content:"\\e204"}.glyphicon-copy:before{content:"\\e205"}.glyphicon-paste:before{content:"\\e206"}.glyphicon-alert:before{content:"\\e209"}.glyphicon-equalizer:before{content:"\\e210"}.glyphicon-king:before{content:"\\e211"}.glyphicon-queen:before{content:"\\e212"}.glyphicon-pawn:before{content:"\\e213"}.glyphicon-bishop:before{content:"\\e214"}.glyphicon-knight:before{content:"\\e215"}.glyphicon-baby-formula:before{content:"\\e216"}.glyphicon-tent:before{content:"\\26fa"}.glyphicon-blackboard:before{content:"\\e218"}.glyphicon-bed:before{content:"\\e219"}.glyphicon-apple:before{content:"\\f8ff"}.glyphicon-erase:before{content:"\\e221"}.glyphicon-hourglass:before{content:"\\231b"}.glyphicon-lamp:before{content:"\\e223"}.glyphicon-duplicate:before{content:"\\e224"}.glyphicon-piggy-bank:before{content:"\\e225"}.glyphicon-scissors:before{content:"\\e226"}.glyphicon-bitcoin:before,.glyphicon-btc:before,.glyphicon-xbt:before{content:"\\e227"}.glyphicon-jpy:before,.glyphicon-yen:before{content:"\\00a5"}.glyphicon-rub:before,.glyphicon-ruble:before{content:"\\20bd"}.glyphicon-scale:before{content:"\\e230"}.glyphicon-ice-lolly:before{content:"\\e231"}.glyphicon-ice-lolly-tasted:before{content:"\\e232"}.glyphicon-education:before{content:"\\e233"}.glyphicon-option-horizontal:before{content:"\\e234"}.glyphicon-option-vertical:before{content:"\\e235"}.glyphicon-menu-hamburger:before{content:"\\e236"}.glyphicon-modal-window:before{content:"\\e237"}.glyphicon-oil:before{content:"\\e238"}.glyphicon-grain:before{content:"\\e239"}.glyphicon-sunglasses:before{content:"\\e240"}.glyphicon-text-size:before{content:"\\e241"}.glyphicon-text-color:before{content:"\\e242"}.glyphicon-text-background:before{content:"\\e243"}.glyphicon-object-align-top:before{content:"\\e244"}.glyphicon-object-align-bottom:before{content:"\\e245"}.glyphicon-object-align-horizontal:before{content:"\\e246"}.glyphicon-object-align-left:before{content:"\\e247"}.glyphicon-object-align-vertical:before{content:"\\e248"}.glyphicon-object-align-right:before{content:"\\e249"}.glyphicon-triangle-right:before{content:"\\e250"}.glyphicon-triangle-left:before{content:"\\e251"}.glyphicon-triangle-bottom:before{content:"\\e252"}.glyphicon-triangle-top:before{content:"\\e253"}.glyphicon-console:before{content:"\\e254"}.glyphicon-superscript:before{content:"\\e255"}.glyphicon-subscript:before{content:"\\e256"}.glyphicon-menu-left:before{content:"\\e257"}.glyphicon-menu-right:before{content:"\\e258"}.glyphicon-menu-down:before{content:"\\e259"}.glyphicon-menu-up:before{content:"\\e260"}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:"\\2014 \\00A0"}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:""}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:"\\00A0 \\2014"}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Courier New,monospace}code{color:#c7254e;background-color:#f9f2f4;border-radius:4px}code,kbd{padding:2px 4px;font-size:90%}kbd{color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.row-no-gutters{margin-right:0;margin-left:0}.row-no-gutters [class*=col-]{padding-right:0;padding-left:0}.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}caption{padding-top:8px;padding-bottom:8px;color:#777}caption,th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;margin:0}fieldset,legend{padding:0;border:0}legend{display:block;width:100%;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\\9;line-height:normal}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{padding-top:7px}.form-control,output{display:block;font-size:14px;line-height:1.42857143;color:#555}.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox-inline input[type=checkbox],.checkbox input[type=checkbox],.radio-inline input[type=radio],.radio input[type=radio]{position:absolute;margin-top:4px\\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success.checkbox-inline label,.has-success.checkbox label,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.radio-inline label,.has-success.radio label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning.checkbox-inline label,.has-warning.checkbox label,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.radio-inline label,.has-warning.radio label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error.checkbox-inline label,.has-error.checkbox label,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.radio-inline label,.has-error.radio label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);opacity:.65;-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;background-image:none;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;background-image:none;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;background-image:none;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;background-image:none;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;background-image:none;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;background-image:none;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio],[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group .form-control:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group .form-control:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.input-group-btn,.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li,.nav>li>a{position:relative;display:block}.nav>li>a{padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid;border-color:#ddd #ddd transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.1);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-brand{float:left;height:50px;padding:15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container-fluid .navbar-brand,.navbar>.container .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-right:15px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.1),0 1px 0 hsla(0,0%,100%,.1);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.1),0 1px 0 hsla(0,0%,100%,.1);margin:8px -15px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;background-color:#eee}.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container-fluid .jumbotron,.container .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container-fluid .jumbotron,.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{0%{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{0%{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{0%{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-image:-o-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 25%,transparent 50%,hsla(0,0%,100%,.15) 50%,hsla(0,0%,100%,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-image:-o-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 25%,transparent 50%,hsla(0,0%,100%,.15) 50%,hsla(0,0%,100%,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-image:-o-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 25%,transparent 50%,hsla(0,0%,100%,.15) 50%,hsla(0,0%,100%,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-image:-o-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 25%,transparent 50%,hsla(0,0%,100%,.15) 50%,hsla(0,0%,100%,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-image:-o-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 25%,transparent 50%,hsla(0,0%,100%,.15) 50%,hsla(0,0%,100%,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle,.panel-title{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table-responsive>.table caption,.panel>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.modal,.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translateY(-25%);-ms-transform:translateY(-25%);-o-transform:translateY(-25%);transform:translateY(-25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0);-ms-transform:translate(0);-o-transform:translate(0);transform:translate(0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:12px;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px}.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{left:5px}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.42857143;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:14px;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover>.arrow{border-width:11px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.carousel,.carousel-inner{position:relative}.carousel-inner{width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:left .6s ease-in-out;-o-transition:.6s ease-in-out left;transition:left .6s ease-in-out}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media (-webkit-transform-3d),(transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out,-o-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translateZ(0);transform:translateZ(0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:transparent;filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,.0001));background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(90deg,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#80000000",endColorstr="#00000000",GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001),rgba(0,0,0,.5));background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(90deg,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#00000000",endColorstr="#80000000",GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;filter:alpha(opacity=90);opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:"\\2039"}.carousel-control .icon-next:before{content:"\\203a"}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\\9;background-color:transparent;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}', ""]),
    t.exports = e
}
, function(t, e, n) {
    t.exports = n.p + "f4769f9bdb7466be65088239c12046d1.glyphicons-halflings-regular.eot"
}
, function(t, e) {
    t.exports = "data:font/woff2;base64, "
}
, function(t, e) {
    t.exports = "data:font/woff;base64, "
}
, function(t, e, n) {
    t.exports = n.p + "e18bbf611f2a2e43afc071aa2f4e1512.glyphicons-halflings-regular.ttf"
}
, function(t, e, n) {
    t.exports = n.p + "f0ea477ef046ba5fef9249ec3172903e.glyphicons-halflings-regular.svg"
}
, function(t, e, n) {
    n(891)
}
, function(t, e, n) {
    var i = n(11)
      , r = n(892);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    var i = n(10)
      , r = n(211)
      , o = n(893)
      , a = n(894)
      , s = n(895)
      , c = n(896)
      , l = n(897)
      , u = n(898);
    e = i(!1);
    var d = r(o)
      , p = r(a, {
        hash: "?#iefix&v=4.7.0"
    })
      , h = r(s)
      , f = r(c)
      , m = r(l)
      , g = r(u, {
        hash: "#fontawesomeregular"
    });
    e.push([t.i, '.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-fw{width:1.28571em;text-align:center}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before{content:""}.fa-check-circle:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before{content:""}.fa-arrow-circle-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-hotel:before,.fa-bed:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-yc:before,.fa-y-combinator:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-tv:before,.fa-television:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:""}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-signing:before,.fa-sign-language:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-vcard:before,.fa-address-card:before{content:""}.fa-vcard-o:before,.fa-address-card-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}@font-face{font-family:\'FontAwesome\';src:url(' + d + ");src:url(" + p + ') format("embedded-opentype"),url(' + h + ') format("woff2"),url(' + f + ') format("woff"),url(' + m + ') format("truetype"),url(' + g + ') format("svg");font-weight:normal;font-style:normal}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}\n', ""]),
    t.exports = e
}
, function(t, e, n) {
    t.exports = n.p + "674f50d287a8c48dc19ba404d20fe713.fontawesome-webfont.eot"
}
, function(t, e, n) {
    t.exports = n.p + "674f50d287a8c48dc19ba404d20fe713.fontawesome-webfont.eot"
}
, function(t, e) {
    t.exports = "data:font/woff2;base64, "
}
, function(t, e) {
    t.exports = "data:font/woff;base64, "
}
, function(t, e, n) {
    t.exports = n.p + "b06871f281fee6b241d60582ae9369b9.fontawesome-webfont.ttf"
}
, function(t, e, n) {
    t.exports = n.p + "760bd83ee04dff470e0277f3eb7deebe.fontawesome-webfont.svg"
}
, function(t, e, n) {
    /*! iNoBounce - v0.1.6
* https://github.com/lazd/iNoBounce/
* Copyright (c) 2013 Larry Davis <lazdnet@gmail.com>; Licensed BSD */
    !function(e) {
        var n = 0
          , i = !1
          , r = !1;
        try {
            var o = Object.defineProperty({}, "passive", {
                get: function() {
                    r = !0
                }
            });
            window.addEventListener("test", null, o)
        } catch (t) {}
        var a = function(t) {
            var e = t.target
              , i = window.innerWidth / window.document.documentElement.clientWidth;
            if (!(t.touches.length > 1 || 1 !== i)) {
                for (; e !== document.body && e !== document; ) {
                    var r = window.getComputedStyle(e);
                    if (!r)
                        break;
                    if ("INPUT" === e.nodeName && "range" === e.getAttribute("type"))
                        return;
                    var o = r.getPropertyValue("-webkit-overflow-scrolling")
                      , a = r.getPropertyValue("overflow-y")
                      , s = parseInt(r.getPropertyValue("height"), 10)
                      , c = "touch" === o && ("auto" === a || "scroll" === a)
                      , l = e.scrollHeight > e.offsetHeight;
                    if (c && l) {
                        var u = t.touches ? t.touches[0].screenY : t.screenY
                          , d = n <= u && 0 === e.scrollTop
                          , p = n >= u && e.scrollHeight - e.scrollTop === s;
                        return void ((d || p) && t.preventDefault())
                    }
                    e = e.parentNode
                }
                t.preventDefault()
            }
        }
          , s = function(t) {
            n = t.touches ? t.touches[0].screenY : t.screenY
        }
          , c = function() {
            window.addEventListener("touchstart", s, !!r && {
                passive: !1
            }),
            window.addEventListener("touchmove", a, !!r && {
                passive: !1
            }),
            i = !0
        }
          , l = document.createElement("div");
        document.documentElement.appendChild(l),
        l.style.WebkitOverflowScrolling = "touch";
        var u = "getComputedStyle"in window && "touch" === window.getComputedStyle(l)["-webkit-overflow-scrolling"];
        document.documentElement.removeChild(l),
        u && c();
        var d = {
            enable: c,
            disable: function() {
                window.removeEventListener("touchstart", s, !1),
                window.removeEventListener("touchmove", a, !1),
                i = !1
            },
            isEnabled: function() {
                return i
            }
        };
        t.exports && (t.exports = d),
        "function" == typeof e.define ? (0,
        e.define)("iNoBounce", [], (function() {
            return d
        }
        )) : e.iNoBounce = d
    }(this)
}
, function(t, e, n) {
    var i, r, o;
    /*!
 * jQuery UI Slider 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */
    r = [n(19), n(901), n(903), n(249), n(513)],
    void 0 === (o = "function" == typeof (i = function(t) {
        return t.widget("ui.slider", t.ui.mouse, {
            version: "1.12.1",
            widgetEventPrefix: "slide",
            options: {
                animate: !1,
                classes: {
                    "ui-slider": "ui-corner-all",
                    "ui-slider-handle": "ui-corner-all",
                    "ui-slider-range": "ui-corner-all ui-widget-header"
                },
                distance: 0,
                max: 100,
                min: 0,
                orientation: "horizontal",
                range: !1,
                step: 1,
                value: 0,
                values: null,
                change: null,
                slide: null,
                start: null,
                stop: null
            },
            numPages: 5,
            _create: function() {
                this._keySliding = !1,
                this._mouseSliding = !1,
                this._animateOff = !0,
                this._handleIndex = null,
                this._detectOrientation(),
                this._mouseInit(),
                this._calculateNewMax(),
                this._addClass("ui-slider ui-slider-" + this.orientation, "ui-widget ui-widget-content"),
                this._refresh(),
                this._animateOff = !1
            },
            _refresh: function() {
                this._createRange(),
                this._createHandles(),
                this._setupEvents(),
                this._refreshValue()
            },
            _createHandles: function() {
                var e, n, i = this.options, r = this.element.find(".ui-slider-handle"), o = [];
                for (n = i.values && i.values.length || 1,
                r.length > n && (r.slice(n).remove(),
                r = r.slice(0, n)),
                e = r.length; e < n; e++)
                    o.push("<span tabindex='0'></span>");
                this.handles = r.add(t(o.join("")).appendTo(this.element)),
                this._addClass(this.handles, "ui-slider-handle", "ui-state-default"),
                this.handle = this.handles.eq(0),
                this.handles.each((function(e) {
                    t(this).data("ui-slider-handle-index", e).attr("tabIndex", 0)
                }
                ))
            },
            _createRange: function() {
                var e = this.options;
                e.range ? (!0 === e.range && (e.values ? e.values.length && 2 !== e.values.length ? e.values = [e.values[0], e.values[0]] : t.isArray(e.values) && (e.values = e.values.slice(0)) : e.values = [this._valueMin(), this._valueMin()]),
                this.range && this.range.length ? (this._removeClass(this.range, "ui-slider-range-min ui-slider-range-max"),
                this.range.css({
                    left: "",
                    bottom: ""
                })) : (this.range = t("<div>").appendTo(this.element),
                this._addClass(this.range, "ui-slider-range")),
                "min" !== e.range && "max" !== e.range || this._addClass(this.range, "ui-slider-range-" + e.range)) : (this.range && this.range.remove(),
                this.range = null)
            },
            _setupEvents: function() {
                this._off(this.handles),
                this._on(this.handles, this._handleEvents),
                this._hoverable(this.handles),
                this._focusable(this.handles)
            },
            _destroy: function() {
                this.handles.remove(),
                this.range && this.range.remove(),
                this._mouseDestroy()
            },
            _mouseCapture: function(e) {
                var n, i, r, o, a, s, c, l = this, u = this.options;
                return !u.disabled && (this.elementSize = {
                    width: this.element.outerWidth(),
                    height: this.element.outerHeight()
                },
                this.elementOffset = this.element.offset(),
                n = {
                    x: e.pageX,
                    y: e.pageY
                },
                i = this._normValueFromMouse(n),
                r = this._valueMax() - this._valueMin() + 1,
                this.handles.each((function(e) {
                    var n = Math.abs(i - l.values(e));
                    (r > n || r === n && (e === l._lastChangedValue || l.values(e) === u.min)) && (r = n,
                    o = t(this),
                    a = e)
                }
                )),
                !1 !== this._start(e, a) && (this._mouseSliding = !0,
                this._handleIndex = a,
                this._addClass(o, null, "ui-state-active"),
                o.trigger("focus"),
                s = o.offset(),
                c = !t(e.target).parents().addBack().is(".ui-slider-handle"),
                this._clickOffset = c ? {
                    left: 0,
                    top: 0
                } : {
                    left: e.pageX - s.left - o.width() / 2,
                    top: e.pageY - s.top - o.height() / 2 - (parseInt(o.css("borderTopWidth"), 10) || 0) - (parseInt(o.css("borderBottomWidth"), 10) || 0) + (parseInt(o.css("marginTop"), 10) || 0)
                },
                this.handles.hasClass("ui-state-hover") || this._slide(e, a, i),
                this._animateOff = !0,
                !0))
            },
            _mouseStart: function() {
                return !0
            },
            _mouseDrag: function(t) {
                var e = {
                    x: t.pageX,
                    y: t.pageY
                }
                  , n = this._normValueFromMouse(e);
                return this._slide(t, this._handleIndex, n),
                !1
            },
            _mouseStop: function(t) {
                return this._removeClass(this.handles, null, "ui-state-active"),
                this._mouseSliding = !1,
                this._stop(t, this._handleIndex),
                this._change(t, this._handleIndex),
                this._handleIndex = null,
                this._clickOffset = null,
                this._animateOff = !1,
                !1
            },
            _detectOrientation: function() {
                this.orientation = "vertical" === this.options.orientation ? "vertical" : "horizontal"
            },
            _normValueFromMouse: function(t) {
                var e, n, i, r, o;
                return "horizontal" === this.orientation ? (e = this.elementSize.width,
                n = t.x - this.elementOffset.left - (this._clickOffset ? this._clickOffset.left : 0)) : (e = this.elementSize.height,
                n = t.y - this.elementOffset.top - (this._clickOffset ? this._clickOffset.top : 0)),
                (i = n / e) > 1 && (i = 1),
                i < 0 && (i = 0),
                "vertical" === this.orientation && (i = 1 - i),
                r = this._valueMax() - this._valueMin(),
                o = this._valueMin() + i * r,
                this._trimAlignValue(o)
            },
            _uiHash: function(t, e, n) {
                var i = {
                    handle: this.handles[t],
                    handleIndex: t,
                    value: void 0 !== e ? e : this.value()
                };
                return this._hasMultipleValues() && (i.value = void 0 !== e ? e : this.values(t),
                i.values = n || this.values()),
                i
            },
            _hasMultipleValues: function() {
                return this.options.values && this.options.values.length
            },
            _start: function(t, e) {
                return this._trigger("start", t, this._uiHash(e))
            },
            _slide: function(t, e, n) {
                var i, r = this.value(), o = this.values();
                this._hasMultipleValues() && (i = this.values(e ? 0 : 1),
                r = this.values(e),
                2 === this.options.values.length && !0 === this.options.range && (n = 0 === e ? Math.min(i, n) : Math.max(i, n)),
                o[e] = n),
                n !== r && !1 !== this._trigger("slide", t, this._uiHash(e, n, o)) && (this._hasMultipleValues() ? this.values(e, n) : this.value(n))
            },
            _stop: function(t, e) {
                this._trigger("stop", t, this._uiHash(e))
            },
            _change: function(t, e) {
                this._keySliding || this._mouseSliding || (this._lastChangedValue = e,
                this._trigger("change", t, this._uiHash(e)))
            },
            value: function(t) {
                return arguments.length ? (this.options.value = this._trimAlignValue(t),
                this._refreshValue(),
                void this._change(null, 0)) : this._value()
            },
            values: function(e, n) {
                var i, r, o;
                if (arguments.length > 1)
                    return this.options.values[e] = this._trimAlignValue(n),
                    this._refreshValue(),
                    void this._change(null, e);
                if (!arguments.length)
                    return this._values();
                if (!t.isArray(arguments[0]))
                    return this._hasMultipleValues() ? this._values(e) : this.value();
                for (i = this.options.values,
                r = arguments[0],
                o = 0; o < i.length; o += 1)
                    i[o] = this._trimAlignValue(r[o]),
                    this._change(null, o);
                this._refreshValue()
            },
            _setOption: function(e, n) {
                var i, r = 0;
                switch ("range" === e && !0 === this.options.range && ("min" === n ? (this.options.value = this._values(0),
                this.options.values = null) : "max" === n && (this.options.value = this._values(this.options.values.length - 1),
                this.options.values = null)),
                t.isArray(this.options.values) && (r = this.options.values.length),
                this._super(e, n),
                e) {
                case "orientation":
                    this._detectOrientation(),
                    this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-" + this.orientation),
                    this._refreshValue(),
                    this.options.range && this._refreshRange(n),
                    this.handles.css("horizontal" === n ? "bottom" : "left", "");
                    break;
                case "value":
                    this._animateOff = !0,
                    this._refreshValue(),
                    this._change(null, 0),
                    this._animateOff = !1;
                    break;
                case "values":
                    for (this._animateOff = !0,
                    this._refreshValue(),
                    i = r - 1; i >= 0; i--)
                        this._change(null, i);
                    this._animateOff = !1;
                    break;
                case "step":
                case "min":
                case "max":
                    this._animateOff = !0,
                    this._calculateNewMax(),
                    this._refreshValue(),
                    this._animateOff = !1;
                    break;
                case "range":
                    this._animateOff = !0,
                    this._refresh(),
                    this._animateOff = !1
                }
            },
            _setOptionDisabled: function(t) {
                this._super(t),
                this._toggleClass(null, "ui-state-disabled", !!t)
            },
            _value: function() {
                var t = this.options.value;
                return t = this._trimAlignValue(t)
            },
            _values: function(t) {
                var e, n, i;
                if (arguments.length)
                    return e = this.options.values[t],
                    e = this._trimAlignValue(e);
                if (this._hasMultipleValues()) {
                    for (n = this.options.values.slice(),
                    i = 0; i < n.length; i += 1)
                        n[i] = this._trimAlignValue(n[i]);
                    return n
                }
                return []
            },
            _trimAlignValue: function(t) {
                if (t <= this._valueMin())
                    return this._valueMin();
                if (t >= this._valueMax())
                    return this._valueMax();
                var e = this.options.step > 0 ? this.options.step : 1
                  , n = (t - this._valueMin()) % e
                  , i = t - n;
                return 2 * Math.abs(n) >= e && (i += n > 0 ? e : -e),
                parseFloat(i.toFixed(5))
            },
            _calculateNewMax: function() {
                var t = this.options.max
                  , e = this._valueMin()
                  , n = this.options.step;
                (t = Math.round((t - e) / n) * n + e) > this.options.max && (t -= n),
                this.max = parseFloat(t.toFixed(this._precision()))
            },
            _precision: function() {
                var t = this._precisionOf(this.options.step);
                return null !== this.options.min && (t = Math.max(t, this._precisionOf(this.options.min))),
                t
            },
            _precisionOf: function(t) {
                var e = t.toString()
                  , n = e.indexOf(".");
                return -1 === n ? 0 : e.length - n - 1
            },
            _valueMin: function() {
                return this.options.min
            },
            _valueMax: function() {
                return this.max
            },
            _refreshRange: function(t) {
                "vertical" === t && this.range.css({
                    width: "",
                    left: ""
                }),
                "horizontal" === t && this.range.css({
                    height: "",
                    bottom: ""
                })
            },
            _refreshValue: function() {
                var e, n, i, r, o, a = this.options.range, s = this.options, c = this, l = !this._animateOff && s.animate, u = {};
                this._hasMultipleValues() ? this.handles.each((function(i) {
                    n = (c.values(i) - c._valueMin()) / (c._valueMax() - c._valueMin()) * 100,
                    u["horizontal" === c.orientation ? "left" : "bottom"] = n + "%",
                    t(this).stop(1, 1)[l ? "animate" : "css"](u, s.animate),
                    !0 === c.options.range && ("horizontal" === c.orientation ? (0 === i && c.range.stop(1, 1)[l ? "animate" : "css"]({
                        left: n + "%"
                    }, s.animate),
                    1 === i && c.range[l ? "animate" : "css"]({
                        width: n - e + "%"
                    }, {
                        queue: !1,
                        duration: s.animate
                    })) : (0 === i && c.range.stop(1, 1)[l ? "animate" : "css"]({
                        bottom: n + "%"
                    }, s.animate),
                    1 === i && c.range[l ? "animate" : "css"]({
                        height: n - e + "%"
                    }, {
                        queue: !1,
                        duration: s.animate
                    }))),
                    e = n
                }
                )) : (i = this.value(),
                r = this._valueMin(),
                o = this._valueMax(),
                n = o !== r ? (i - r) / (o - r) * 100 : 0,
                u["horizontal" === this.orientation ? "left" : "bottom"] = n + "%",
                this.handle.stop(1, 1)[l ? "animate" : "css"](u, s.animate),
                "min" === a && "horizontal" === this.orientation && this.range.stop(1, 1)[l ? "animate" : "css"]({
                    width: n + "%"
                }, s.animate),
                "max" === a && "horizontal" === this.orientation && this.range.stop(1, 1)[l ? "animate" : "css"]({
                    width: 100 - n + "%"
                }, s.animate),
                "min" === a && "vertical" === this.orientation && this.range.stop(1, 1)[l ? "animate" : "css"]({
                    height: n + "%"
                }, s.animate),
                "max" === a && "vertical" === this.orientation && this.range.stop(1, 1)[l ? "animate" : "css"]({
                    height: 100 - n + "%"
                }, s.animate))
            },
            _handleEvents: {
                keydown: function(e) {
                    var n, i, r, o = t(e.target).data("ui-slider-handle-index");
                    switch (e.keyCode) {
                    case t.ui.keyCode.HOME:
                    case t.ui.keyCode.END:
                    case t.ui.keyCode.PAGE_UP:
                    case t.ui.keyCode.PAGE_DOWN:
                    case t.ui.keyCode.UP:
                    case t.ui.keyCode.RIGHT:
                    case t.ui.keyCode.DOWN:
                    case t.ui.keyCode.LEFT:
                        if (e.preventDefault(),
                        !this._keySliding && (this._keySliding = !0,
                        this._addClass(t(e.target), null, "ui-state-active"),
                        !1 === this._start(e, o)))
                            return
                    }
                    switch (r = this.options.step,
                    n = i = this._hasMultipleValues() ? this.values(o) : this.value(),
                    e.keyCode) {
                    case t.ui.keyCode.HOME:
                        i = this._valueMin();
                        break;
                    case t.ui.keyCode.END:
                        i = this._valueMax();
                        break;
                    case t.ui.keyCode.PAGE_UP:
                        i = this._trimAlignValue(n + (this._valueMax() - this._valueMin()) / this.numPages);
                        break;
                    case t.ui.keyCode.PAGE_DOWN:
                        i = this._trimAlignValue(n - (this._valueMax() - this._valueMin()) / this.numPages);
                        break;
                    case t.ui.keyCode.UP:
                    case t.ui.keyCode.RIGHT:
                        if (n === this._valueMax())
                            return;
                        i = this._trimAlignValue(n + r);
                        break;
                    case t.ui.keyCode.DOWN:
                    case t.ui.keyCode.LEFT:
                        if (n === this._valueMin())
                            return;
                        i = this._trimAlignValue(n - r)
                    }
                    this._slide(e, o, i)
                },
                keyup: function(e) {
                    var n = t(e.target).data("ui-slider-handle-index");
                    this._keySliding && (this._keySliding = !1,
                    this._stop(e, n),
                    this._change(e, n),
                    this._removeClass(t(e.target), null, "ui-state-active"))
                }
            }
        })
    }
    ) ? i.apply(e, r) : i) || (t.exports = o)
}
, function(t, e, n) {
    var i, r, o;
    /*!
 * jQuery UI Mouse 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */
    r = [n(19), n(902), n(249), n(513)],
    void 0 === (o = "function" == typeof (i = function(t) {
        var e = !1;
        return t(document).on("mouseup", (function() {
            e = !1
        }
        )),
        t.widget("ui.mouse", {
            version: "1.12.1",
            options: {
                cancel: "input, textarea, button, select, option",
                distance: 1,
                delay: 0
            },
            _mouseInit: function() {
                var e = this;
                this.element.on("mousedown." + this.widgetName, (function(t) {
                    return e._mouseDown(t)
                }
                )).on("click." + this.widgetName, (function(n) {
                    if (!0 === t.data(n.target, e.widgetName + ".preventClickEvent"))
                        return t.removeData(n.target, e.widgetName + ".preventClickEvent"),
                        n.stopImmediatePropagation(),
                        !1
                }
                )),
                this.started = !1
            },
            _mouseDestroy: function() {
                this.element.off("." + this.widgetName),
                this._mouseMoveDelegate && this.document.off("mousemove." + this.widgetName, this._mouseMoveDelegate).off("mouseup." + this.widgetName, this._mouseUpDelegate)
            },
            _mouseDown: function(n) {
                if (!e) {
                    this._mouseMoved = !1,
                    this._mouseStarted && this._mouseUp(n),
                    this._mouseDownEvent = n;
                    var i = this
                      , r = 1 === n.which
                      , o = !("string" != typeof this.options.cancel || !n.target.nodeName) && t(n.target).closest(this.options.cancel).length;
                    return !(r && !o && this._mouseCapture(n) && (this.mouseDelayMet = !this.options.delay,
                    this.mouseDelayMet || (this._mouseDelayTimer = setTimeout((function() {
                        i.mouseDelayMet = !0
                    }
                    ), this.options.delay)),
                    this._mouseDistanceMet(n) && this._mouseDelayMet(n) && (this._mouseStarted = !1 !== this._mouseStart(n),
                    !this._mouseStarted) ? (n.preventDefault(),
                    0) : (!0 === t.data(n.target, this.widgetName + ".preventClickEvent") && t.removeData(n.target, this.widgetName + ".preventClickEvent"),
                    this._mouseMoveDelegate = function(t) {
                        return i._mouseMove(t)
                    }
                    ,
                    this._mouseUpDelegate = function(t) {
                        return i._mouseUp(t)
                    }
                    ,
                    this.document.on("mousemove." + this.widgetName, this._mouseMoveDelegate).on("mouseup." + this.widgetName, this._mouseUpDelegate),
                    n.preventDefault(),
                    e = !0,
                    0)))
                }
            },
            _mouseMove: function(e) {
                if (this._mouseMoved) {
                    if (t.ui.ie && (!document.documentMode || document.documentMode < 9) && !e.button)
                        return this._mouseUp(e);
                    if (!e.which)
                        if (e.originalEvent.altKey || e.originalEvent.ctrlKey || e.originalEvent.metaKey || e.originalEvent.shiftKey)
                            this.ignoreMissingWhich = !0;
                        else if (!this.ignoreMissingWhich)
                            return this._mouseUp(e)
                }
                return (e.which || e.button) && (this._mouseMoved = !0),
                this._mouseStarted ? (this._mouseDrag(e),
                e.preventDefault()) : (this._mouseDistanceMet(e) && this._mouseDelayMet(e) && (this._mouseStarted = !1 !== this._mouseStart(this._mouseDownEvent, e),
                this._mouseStarted ? this._mouseDrag(e) : this._mouseUp(e)),
                !this._mouseStarted)
            },
            _mouseUp: function(n) {
                this.document.off("mousemove." + this.widgetName, this._mouseMoveDelegate).off("mouseup." + this.widgetName, this._mouseUpDelegate),
                this._mouseStarted && (this._mouseStarted = !1,
                n.target === this._mouseDownEvent.target && t.data(n.target, this.widgetName + ".preventClickEvent", !0),
                this._mouseStop(n)),
                this._mouseDelayTimer && (clearTimeout(this._mouseDelayTimer),
                delete this._mouseDelayTimer),
                this.ignoreMissingWhich = !1,
                e = !1,
                n.preventDefault()
            },
            _mouseDistanceMet: function(t) {
                return Math.max(Math.abs(this._mouseDownEvent.pageX - t.pageX), Math.abs(this._mouseDownEvent.pageY - t.pageY)) >= this.options.distance
            },
            _mouseDelayMet: function() {
                return this.mouseDelayMet
            },
            _mouseStart: function() {},
            _mouseDrag: function() {},
            _mouseStop: function() {},
            _mouseCapture: function() {
                return !0
            }
        })
    }
    ) ? i.apply(e, r) : i) || (t.exports = o)
}
, function(t, e, n) {
    var i, r, o;
    r = [n(19), n(249)],
    void 0 === (o = "function" == typeof (i = function(t) {
        return t.ui.ie = !!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase())
    }
    ) ? i.apply(e, r) : i) || (t.exports = o)
}
, function(t, e, n) {
    var i, r, o;
    /*!
 * jQuery UI Keycode 1.12.1
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 */
    r = [n(19), n(249)],
    void 0 === (o = "function" == typeof (i = function(t) {
        return t.ui.keyCode = {
            BACKSPACE: 8,
            COMMA: 188,
            DELETE: 46,
            DOWN: 40,
            END: 35,
            ENTER: 13,
            ESCAPE: 27,
            HOME: 36,
            LEFT: 37,
            PAGE_DOWN: 34,
            PAGE_UP: 33,
            PERIOD: 190,
            RIGHT: 39,
            SPACE: 32,
            TAB: 9,
            UP: 38
        }
    }
    ) ? i.apply(e, r) : i) || (t.exports = o)
}
, function(t, e, n) {
    var i = n(11)
      , r = n(905);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, '/*!\n * jQuery UI CSS Framework 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/theming/\n */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}', ""]),
    t.exports = e
}
, function(t, e, n) {
    var i = n(11)
      , r = n(907);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, '/*!\n * jQuery UI Menu 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/menu/#theming\n */.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0}.ui-menu .ui-state-active,.ui-menu .ui-state-focus{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}', ""]),
    t.exports = e
}
, function(t, e, n) {
    var i = n(11)
      , r = n(909);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "/*!\n * jQuery UI Slider 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/slider/#theming\n */.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}", ""]),
    t.exports = e
}
, function(t, e, n) {
    var i = n(11)
      , r = n(911);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    var i = n(10)
      , r = n(211)
      , o = n(912)
      , a = n(913)
      , s = n(914)
      , c = n(915)
      , l = n(916)
      , u = n(917);
    e = i(!1);
    var d = r(o)
      , p = r(a)
      , h = r(s)
      , f = r(c)
      , m = r(l)
      , g = r(u);
    e.push([t.i, "/*!\n * jQuery UI CSS Framework 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/theming/\n *\n * To view and modify this theme, visit http://jqueryui.com/themeroller/\n */.ui-widget{font-family:Arial,Helvetica,sans-serif}.ui-widget,.ui-widget .ui-widget{font-size:1em}.ui-widget button,.ui-widget input,.ui-widget select,.ui-widget textarea{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:700}.ui-widget-header a{color:#333}.ui-button,.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,html .ui-button.ui-state-disabled:active,html .ui-button.ui-state-disabled:hover{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:400;color:#454545}.ui-button,.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button{color:#454545;text-decoration:none}.ui-button:focus,.ui-button:hover,.ui-state-focus,.ui-state-hover,.ui-widget-content .ui-state-focus,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-focus,.ui-widget-header .ui-state-hover{border:1px solid #ccc;background:#ededed;font-weight:400;color:#2b2b2b}.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,a.ui-button:focus,a.ui-button:hover{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px #5e9ed6}.ui-button.ui-state-active:hover,.ui-button:active,.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active{border:1px solid #003eff;background:#007fff;font-weight:400;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error-text,.ui-state-error a,.ui-widget-content .ui-state-error-text,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error-text,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon{background-image:url(" + d + ")}.ui-button:focus .ui-icon,.ui-button:hover .ui-icon,.ui-state-focus .ui-icon,.ui-state-hover .ui-icon{background-image:url(" + p + ")}.ui-button:active .ui-icon,.ui-state-active .ui-icon{background-image:url(" + h + ")}.ui-button .ui-state-highlight.ui-icon,.ui-state-highlight .ui-icon{background-image:url(" + f + ")}.ui-state-error-text .ui-icon,.ui-state-error .ui-icon{background-image:url(" + m + ")}.ui-button .ui-icon{background-image:url(" + g + ")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-first,.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-left,.ui-corner-tl,.ui-corner-top{border-top-left-radius:3px}.ui-corner-all,.ui-corner-right,.ui-corner-top,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bl,.ui-corner-bottom,.ui-corner-left{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-br,.ui-corner-right{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}", ""]),
    t.exports = e
}
, function(t, e, n) {
    t.exports = n.p + "76baf8c70d54788b05689a3441df2125.ui-icons_444444_256x240.png"
}
, function(t, e, n) {
    t.exports = n.p + "ff83be97b68650c300987cabfedddb4b.ui-icons_555555_256x240.png"
}
, function(t, e, n) {
    t.exports = n.p + "8c2b9b2d1663cac5767de402f99ee9e6.ui-icons_ffffff_256x240.png"
}
, function(t, e, n) {
    t.exports = n.p + "c276a51dd43d1390ac61d8bc391c4298.ui-icons_777620_256x240.png"
}
, function(t, e, n) {
    t.exports = n.p + "6eb114d4b5970b7687d905856041f8f2.ui-icons_cc0000_256x240.png"
}
, function(t, e, n) {
    t.exports = n.p + "13c92dba972e349233fc55076ddac378.ui-icons_777777_256x240.png"
}
, function(t, e, n) {
    var i = n(11)
      , r = n(919);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    var i = n(10)
      , r = n(211)
      , o = n(920)
      , a = n(921)
      , s = n(922)
      , c = n(923);
    e = i(!1);
    var l = r(o)
      , u = r(a)
      , d = r(s)
      , p = r(c);
    e.push([t.i, "/*!\r\n * jQuery contextMenu - Plugin for simple contextMenu handling\r\n *\r\n * Version: v2.9.0\r\n *\r\n * Authors: Björn Brala (SWIS.nl), Rodney Rehm, Addy Osmani (patches for FF)\r\n * Web: http://swisnl.github.io/jQuery-contextMenu/\r\n *\r\n * Copyright (c) 2011-2019 SWIS BV and contributors\r\n *\r\n * Licensed under\r\n *   MIT License http://www.opensource.org/licenses/mit-license\r\n *\r\n * Date: 2019-10-13T13:09:56.297Z\r\n */@-webkit-keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0deg);transform:translateY(-50%) rotate(0deg)}to{-webkit-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@-o-keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0deg);-o-transform:translateY(-50%) rotate(0deg);transform:translateY(-50%) rotate(0deg)}to{-webkit-transform:translateY(-50%) rotate(359deg);-o-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0deg);-o-transform:translateY(-50%) rotate(0deg);transform:translateY(-50%) rotate(0deg)}to{-webkit-transform:translateY(-50%) rotate(359deg);-o-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@font-face{font-family:context-menu-icons;font-style:normal;font-weight:400;src:url(" + l + ");src:url(" + l + ') format("embedded-opentype"),url(' + u + ') format("woff2"),url(' + d + ') format("woff"),url(' + p + ') format("truetype")}.context-menu-icon-add:before{content:"\\EA01"}.context-menu-icon-copy:before{content:"\\EA02"}.context-menu-icon-cut:before{content:"\\EA03"}.context-menu-icon-delete:before{content:"\\EA04"}.context-menu-icon-edit:before{content:"\\EA05"}.context-menu-icon-loading:before{content:"\\EA06"}.context-menu-icon-paste:before{content:"\\EA07"}.context-menu-icon-quit:before{content:"\\EA08"}.context-menu-icon:before{position:absolute;top:50%;left:0;width:2em;font-family:context-menu-icons;font-size:1em;font-style:normal;font-weight:400;line-height:1;color:#2980b9;text-align:center;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.context-menu-icon.context-menu-hover:before{color:#fff}.context-menu-icon.context-menu-disabled:before{color:#bbb}.context-menu-icon.context-menu-icon-loading:before{-webkit-animation:cm-spin 2s infinite;-o-animation:cm-spin 2s infinite;animation:cm-spin 2s infinite}.context-menu-icon.context-menu-icon--fa{display:list-item;font-family:inherit;line-height:inherit}.context-menu-icon.context-menu-icon--fa:before{position:absolute;top:50%;left:0;width:2em;font-family:FontAwesome;font-size:1em;font-style:normal;font-weight:400;line-height:1;color:#2980b9;text-align:center;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.context-menu-icon.context-menu-icon--fa.context-menu-hover:before{color:#fff}.context-menu-icon.context-menu-icon--fa.context-menu-disabled:before{color:#bbb}.context-menu-icon.context-menu-icon--fa5{display:list-item;font-family:inherit;line-height:inherit}.context-menu-icon.context-menu-icon--fa5 i,.context-menu-icon.context-menu-icon--fa5 svg{position:absolute;top:.3em;left:.5em;color:#2980b9}.context-menu-icon.context-menu-icon--fa5.context-menu-hover>i,.context-menu-icon.context-menu-icon--fa5.context-menu-hover>svg{color:#fff}.context-menu-icon.context-menu-icon--fa5.context-menu-disabled i,.context-menu-icon.context-menu-icon--fa5.context-menu-disabled svg{color:#bbb}.context-menu-list{position:absolute;display:inline-block;min-width:13em;max-width:26em;padding:.25em 0;margin:.3em;font-family:inherit;font-size:inherit;list-style-type:none;background:#fff;border:1px solid #bebebe;border-radius:.2em;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.5);box-shadow:0 2px 5px rgba(0,0,0,.5)}.context-menu-item{position:relative;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;padding:.2em 2em;color:#2f2f2f;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff}.context-menu-separator{padding:0;margin:.35em 0;border-bottom:1px solid #e6e6e6}.context-menu-item>label>input,.context-menu-item>label>textarea{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.context-menu-item.context-menu-hover{color:#fff;cursor:pointer;background-color:#2980b9}.context-menu-item.context-menu-disabled{color:#bbb;cursor:default;background-color:#fff}.context-menu-input.context-menu-hover{color:#2f2f2f;cursor:default}.context-menu-submenu:after{position:absolute;top:50%;right:.5em;z-index:1;width:0;height:0;content:"";border-color:transparent transparent transparent #2f2f2f;border-style:solid;border-width:.25em 0 .25em .25em;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}.context-menu-item.context-menu-input{padding:.3em .6em}.context-menu-input>label>*{vertical-align:top}.context-menu-input>label>input[type=checkbox],.context-menu-input>label>input[type=radio]{position:relative;top:.12em;margin-right:.4em}.context-menu-input>label{margin:0}.context-menu-input>label,.context-menu-input>label>input[type=text],.context-menu-input>label>select,.context-menu-input>label>textarea{display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.context-menu-input>label>textarea{height:7em}.context-menu-item>.context-menu-list{top:.3em;right:-.3em;display:none}.context-menu-item.context-menu-visible>.context-menu-list{display:block}.context-menu-accesskey{text-decoration:underline}', ""]),
    t.exports = e
}
, function(t, e, n) {
    t.exports = n.p + "e520b99c951e913f1da6f8d3617a9760.context-menu-icons.eot"
}
, function(t, e) {
    t.exports = "data:font/woff2;base64,d09GMgABAAAAAAacAAsAAAAADPgAAAZQAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGVgCDUgqMFIoSATYCJAMkCxQABCAFhQ4HYxscCxEVpHmSfYFtwx605gTBxqgEpIoZjM/8Hvg1SOACAAAAAILnP7fP+2bAN+5sXLX9JA4xtypeqXXrp4+xuGYbCz8VNXcoR/QeFRZyQOm36cC9VR8A8/+e/u2YJe85E522A9MHTfDXejQy/RqsJ6gIk3sipZI2jzXpf/f71b9hHjk/cnY6oVksxAl2tz1EfIha9wqhaDKRBiUTagQEwFtLPKz8FgTwqE9bVOeubn4g/+wJybGgNAbCTAG7ucyeERYAnEMiRoyf4MRYIWfqjaTNwAS1jucVPTbpdSSbVCDmxtQIR/af6hwM2mdJlqMfJ7N8qMnsyssH2DdCA7XbkywTQzNHo02orSsvLNOgfrw0aJflJEkvS1TRWk5dhcbAvP3j2TggFoJKw2l+pQNZIkt0rZCgNRK0gQRtIkFbSNA2ErQDJhNctW1hoBwom6SVQPBsjBFMbJQ5b0dJIMfLm991O+U/4btWwfVtICVBoZr8cGWhU7xSylkgdRr2FHtEkMQechDfP+4FQJYORizOj9Ia63BAlMbe2Na65w8ejIRKWf7DSGU0VfkkHEjgd6Qtinv1n68kCjj+AcwGJT9GpUigGwOtFWs4NDuEI4/tYYduWN5AYnO2KA1niYzCET5+XaZpQHMGif3HjqRrxaqE3YPYyi/7dzai0ZzrFttwpNZzZL6FxOcmbmgQcOQ2eqjei8QX3UkFqqIWagwU9SeH4dfA4GLqAbRAPwYaxFvA6plhAJViNncibJo7PvJ4I54JM9AAkNoOe0bqEE6LrpNML2KRJGQj/rB9E0nSxsT9lWOYYTTcD/hM24n6MXrHI/k8SHqMDm8g+WJlZi2qxhBheWG3aNgDDgrYWdSW3XnBPxgmLeqP+/arjJmflX8ouEbXa0l448Yw7DT+3uEa3zASXseFrEkFeKcnY5gUFJbOALSVsgD7PIJP4JkasOcNF4Adpdr6JDriClcSWAVDzOA1CoAZRQlsriAZI8qt3PcwV47Pe0f/vnyrrc8OcGuDgvjjppv2KdFQbkZGEloi9Tb3QhWwDILgRJdQL27p2sD7O3m3yYtJp4uG6k/Q7ybomHmxBI9ODCknfsWYkvzj3xiEBUlnkivvPmtwKkvD0tTrXa96Ph7HbAWcW5p637Of4KsX4BrsrOasHuwaoOdL1b1n6mUpH13619Nnhd5dXTOLR/9Z5d3kwkmYEoT97vJgS1Le1TfX9NV9qW8bpEkw3u6q2L6a5np8a21egCCqmbTeubG8QWZxYDuGKQ1/s79gUjbxdhhTVHsV3JfkzZYLdGgPlC5T0N42dXTBrdAZKICCzs5GVAvGbm9iA0p3MPYa8jL+5qfk3b6ZtJ6xk/JdZWMHXTnTI79scUX1SvJWiWHRrWQjuo+rgd+zgwOO2zvImZhK1pfXrqzsVqhQwtqjRIl2unbN6c4ZwbukhqETafSF41+q+qvIV3FWwQT9GpdHmNS2t+fldXRkGxlxJUdu3WSGcuvQ9tfslL5DRUVDHusS1ah1xZDM2INH5Smni3LEutaKKBZl166VWTDWdE3XcZQiLw2KLopoP1Mee8C/w9xpq5t7Z0uHsiDRSSozPQ7aSpfqdA5BKH3JfwLwKADXuSIZ90bKFkIbmtTfEuV2n0bAC0xjdtA6odQt5CsF1gfqbbzLkt8YStd1Cx3/bZC81nn6DNmD1Yf/6V78tGfuvnrS6hvk/3ZLPj17fWyTz/2dzJbT9DE9HNTXUfGvZHcWY/sf9beMFJJcLhHyzOS34Q5H5AhwWY5tFOCJJZAgZBfkSbnZQuHUfqCswjZo0yoFMpxqEROfNsSiMN2JRy1Gnu9ThFVoxHARAnaviCI/94km4AUynPKISXE5QywCUSMeQ8XtOj6QeZyijvHOQYudD8rDKtwz5r4RNnAA31+8o3UldZCEccRLnrBDKxg1yAe4a54yZ5BZauGS7l5NQ2AsVag4LJjNIoqysHeHitqeoo7xzoEWOx8ow9Pd82H9c98Im3rI8fC+rrCudK88SITiXOrJz3MqkQo06fKh1nXXPL0ZzkA2lloz9lImNGIFAROeXuG6gkNFDmMWos14WVoV1my1z/08wCN8vRtKtBhiiiW2OOKKx3C1Hikyj6HyPNHYIOMIdcnThoRWp8vHRjiv669P6PUA"
}
, function(t, e) {
    t.exports = "data:font/woff;base64,d09GRgABAAAAAAiEAAsAAAAADPgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIslek9TLzIAAAFEAAAAQwAAAFZAb0wIY21hcAAAAYgAAABuAAAB0osI7vJnbHlmAAAB+AAABGMAAAYUqf6Gv2hlYWQAAAZcAAAAMQAAADYWrOnDaGhlYQAABpAAAAAgAAAAJAe/A8hobXR4AAAGsAAAABUAAAAkIAD/+mxvY2EAAAbIAAAAFAAAABQGngfobWF4cAAABtwAAAAfAAAAIAEaAI5uYW1lAAAG/AAAATwAAAKOoUNzFnBvc3QAAAg4AAAATAAAAGM5s/mjeJxjYGRgYOBiMGCwY2BycfMJYeDLSSzJY5BiYGGAAJA8MpsxJzM9kYEDxgPKsYBpDiBmg4gCACY7BUgAeJxjYGTuY5zAwMrAwNTJdIaBgaEfQjO+ZjBi5ACKMrAyM2AFAWmuKQwOrxhfcTAf+H+AIYb5AIMDUJgRJAcAElcM+QB4nO2R0Q2EQAhE37q4EmMpflxB92UFV/c24TFgGZK8mTAhfACwAj04A4N20VB9I22Zd/bMjU/OmPLp9x3apNFb6hKzFhsHGx7B4K0j9fd0rpsVecWlQN4LfWNaobvOtdCn5iiQbwVyL/A/vZIXbwAAeJyFVEtoXFUYPv99z0w7uZOZuSfpvO487r2N6Tycx70JsQk2MXTaaUITNZQsyiyCCzUVwQotlkiqtribuCouE1oZEAptCnYzK2kDbqTgIu2quFDIuJEu1Nz6n7lJWgriXfznf5zzP8757keA4Mev8Z+SLCEQjUjDnsiYxyHLRNUegxoTZS0BlbLGt3S6o9Nlqu9Q/SWVi31I9S5zdXX6QmXpRUKedwTCd0iKZIhBKuQNrFXWoqGIlE2zIihqoao9AePgFbIrfVABuUKdWrbXTyiNTUBoz+Afsuy7j6nuokbV31SHYg9Wpt5uu2vt9kd3trE4GJQrP9a1Lvcrbq6zI+s6hRXq4AE8dp9easOX7R/vdLFZd61FHXeKa2Eet0Xk538RInB8gSjkNDlH3iMfk8vk817fESljVm0qalIfSBnLkCVZk4MgS9mMZTrj4NiVMsVhLNNirgIqds+XBKrJ5RQYNookyKJtWmY2I0sa1Splfhx6VhCYFaa1KqaQsUYKwBKjcgpEh9XijKCmJTTtB8ioYqiu9CvuJxMCp/DCSLExN/N6VRZGCo35kiXK09OyaJXmG4URgaeDpdm5RhE1hRMm4Gs8Vw+J6u65I/FidXRY85ZYMX5EGx6tessNJ6zkowIvXHZgve7WF31x2Km7vyyBBB3WQ0IzngaGfIYgPjE5iMeOnU2W8qXp4blkqV8Rh14Tlf5S8uyxzHGaZ2s8zplPRMHwDQVmB04n05GBRiLjvp9oDETSTMBKRo4cEmJRkeO/CEPdePamo8Tv5X6f5bgejvaw2odIKhKHLBJihKomwlVCMGmIHdv5HxvS+CxZSRY9JHkIrIUOsO54EEwxrEPLrxiKvyfWAkpOCfTES173IZCYIN2VBHjmVxzbcHOG7bDg7aNKnm7SvHL0tuL/HlrM5y6zDP+hcxMnJADpHSyw+7T01mSR03vVzkeTyej5ANmf/x+cX8IbGCXj5CTi0bHkaCUKJmJRmwA7HN0fqWpX0gxzGEBcpb0rQJeNg+JGjaeQrYFsOQyNWgT+nlw4YUPc53/gD/se+I3mlGtMNZtTsJ1LKYIcV/yHD7uGadsmbJs1Keejzrq7ss59Vt2oqQX1XRVikwuTugPfYgpfGNO4dz/wEkw1g0IYM/CCbXopTsqi4fPDDZYBarWNqqouqHkcB7niZ77Lf0fSaESCXKbA1ar4T0WDSExJrjyOpmnVkhzfnb26ubV5dfZC5+KVm2PNa99ca47dvHKxcwE6S+jG6NKlR9f7Vwe3Vk9hCHecWt0aXO2//givUTjgJIUMkBhiiRhpDwVZByuw+0qAd1/hiiW+SlXoR5rS2G8M9ziCBLLdCsj7jyoHWu02GC8oSqfcsqYf8iHv+GAZaXPDkAMBmQn3q/af7grbsqhTnjDlvqIgoxGPm9/m/iA57C7CyKaILIPCZNTABHu6vffrQ9rg59Uz+BS3bqE4o7L1Vfsnqs54gRk17wUO7N5GQv4FV5EzGAB4nGNgZGBgAOIP7Fkz4vltvjJwszCAwM0TlxbD6P+//h9gYWI+AORyMDCBRAF6Gw5hAAAAeJxjYGRgYD7w/wADAwvD/1///7EwMQBFUAAnAKWfBo54nGNgYGBggeP/v1hQ+BAMACzQAhoAAAAAAAAAADIAjAFWAdYCSAJ8As4DCnicY2BkYGDgZGhiYGcAASYg5gJCBob/YD4DABaQAakAeJyNjrtOwzAUhn/TC6KVECoSEpuHCiGhppexEmvLwNShA1uaOm2qJI4ct2ofgHdg5jmYGXgYnoE/xmKgS23p+DvfuSQArvAJgeoIdFyszhnOmf1yjXTruU5+8NxAG4+em/RPnlvsePHcxjVeuUHUL2i6ePN8hkt8eK7Rf3muk789N3AjOp6b6Ip7zy3MxbPnNu7Ee6Rzq/a2l6l820uYlTO12qahOS4cm7kyZaJzOQwGx8WpypUJrVrKxUGWu9XI2ljGRmdyUvWmqZaF0RsV2WBtbTHu92Pvg0hniKCRw0Jhz9hDRsqxJSW+VmJGt6JLEcKcNHFKz5zO8E1cLjFEgMFJk1PnqunQdS45vcCBscSOfzqitYiZx+zR3CEx+dub8mqawtU2NBF9gLWbKjBGnzf+1x+4r2c/1uR9/3icbcjLCoAgEAXQuT7TvxRnCEHSaFz09wVtO8tDhj6Z/iUYWDh4BERsSMhkC7OrY962Lg0sXVSccNPYR+F27H6W661zNSV6AHljD4A="
}
, function(t, e, n) {
    t.exports = n.p + "885689f80535baa2c394e2b2cdc2b2eb.context-menu-icons.ttf"
}
, function(t, e, n) {
    (function(t) {
        /**
 * @license AngularJS v1.8.0
 * (c) 2010-2020 Google, Inc. http://angularjs.org
 * License: MIT
 */
        !function(e) {
            "use strict";
            var n = {
                objectMaxDepth: 5,
                urlErrorParamsEnabled: !0
            };
            function i(t) {
                if (!U(t))
                    return n;
                F(t.objectMaxDepth) && (n.objectMaxDepth = r(t.objectMaxDepth) ? t.objectMaxDepth : NaN),
                F(t.urlErrorParamsEnabled) && J(t.urlErrorParamsEnabled) && (n.urlErrorParamsEnabled = t.urlErrorParamsEnabled)
            }
            function r(t) {
                return G(t) && t > 0
            }
            function o(t, e) {
                e = e || Error;
                var i = "https://errors.angularjs.org/1.8.0/"
                  , r = i.replace(".", "\\.") + "[\\s\\S]*"
                  , o = new RegExp(r,"g");
                return function() {
                    var r, a, s = arguments[0], c = arguments[1], l = "[" + (t ? t + ":" : "") + s + "] ", u = pt(arguments, 2).map((function(t) {
                        return Ht(t, n.objectMaxDepth)
                    }
                    ));
                    if (l += c.replace(/\{\d+\}/g, (function(t) {
                        var e = +t.slice(1, -1);
                        return e < u.length ? u[e].replace(o, "") : t
                    }
                    )),
                    l += "\n" + i + (t ? t + "/" : "") + s,
                    n.urlErrorParamsEnabled)
                        for (a = 0,
                        r = "?"; a < u.length; a++,
                        r = "&")
                            l += r + "p" + a + "=" + encodeURIComponent(u[a]);
                    return new e(l)
                }
            }
            var a, s, c, l, u = /^\/(.+)\/([a-z]*)$/, d = Object.prototype.hasOwnProperty, p = function(t) {
                return z(t) ? t.toLowerCase() : t
            }, h = function(t) {
                return z(t) ? t.toUpperCase() : t
            }, f = [].slice, m = [].splice, g = [].push, v = Object.prototype.toString, y = Object.getPrototypeOf, b = o("ng"), w = e.angular || (e.angular = {}), S = 0;
            function x(t) {
                if (null == t || K(t))
                    return !1;
                if (W(t) || z(t) || s && t instanceof s)
                    return !0;
                var e = "length"in Object(t) && t.length;
                return G(e) && (e >= 0 && e - 1 in t || "function" == typeof t.item)
            }
            function M(t, e, n) {
                var i, r;
                if (t)
                    if (X(t))
                        for (i in t)
                            "prototype" !== i && "length" !== i && "name" !== i && t.hasOwnProperty(i) && e.call(n, t[i], i, t);
                    else if (W(t) || x(t)) {
                        var o = "object" != typeof t;
                        for (i = 0,
                        r = t.length; i < r; i++)
                            (o || i in t) && e.call(n, t[i], i, t)
                    } else if (t.forEach && t.forEach !== M)
                        t.forEach(e, n, t);
                    else if (B(t))
                        for (i in t)
                            e.call(n, t[i], i, t);
                    else if ("function" == typeof t.hasOwnProperty)
                        for (i in t)
                            t.hasOwnProperty(i) && e.call(n, t[i], i, t);
                    else
                        for (i in t)
                            d.call(t, i) && e.call(n, t[i], i, t);
                return t
            }
            function E(t, e, n) {
                for (var i = Object.keys(t).sort(), r = 0; r < i.length; r++)
                    e.call(n, t[i[r]], i[r]);
                return i
            }
            function C(t) {
                return function(e, n) {
                    t(n, e)
                }
            }
            function A() {
                return ++S
            }
            function T(t, e) {
                e ? t.$$hashKey = e : delete t.$$hashKey
            }
            function O(t, e, n) {
                for (var i = t.$$hashKey, r = 0, o = e.length; r < o; ++r) {
                    var a = e[r];
                    if (U(a) || X(a))
                        for (var s = Object.keys(a), c = 0, l = s.length; c < l; c++) {
                            var u = s[c]
                              , d = a[u];
                            n && U(d) ? H(d) ? t[u] = new Date(d.valueOf()) : Y(d) ? t[u] = new RegExp(d) : d.nodeName ? t[u] = d.cloneNode(!0) : nt(d) ? t[u] = d.clone() : "__proto__" !== u && (U(t[u]) || (t[u] = W(d) ? [] : {}),
                            O(t[u], [d], !0)) : t[u] = d
                        }
                }
                return T(t, i),
                t
            }
            function _(t) {
                return O(t, f.call(arguments, 1), !1)
            }
            function P(t) {
                return O(t, f.call(arguments, 1), !0)
            }
            function I(t) {
                return parseInt(t, 10)
            }
            a = e.document.documentMode;
            var k = Number.isNaN || function(t) {
                return t != t
            }
            ;
            function D(t, e) {
                return _(Object.create(t), e)
            }
            function R() {}
            function L(t) {
                return t
            }
            function N(t) {
                return function() {
                    return t
                }
            }
            function j(t) {
                return X(t.toString) && t.toString !== v
            }
            function V(t) {
                return void 0 === t
            }
            function F(t) {
                return void 0 !== t
            }
            function U(t) {
                return null !== t && "object" == typeof t
            }
            function B(t) {
                return null !== t && "object" == typeof t && !y(t)
            }
            function z(t) {
                return "string" == typeof t
            }
            function G(t) {
                return "number" == typeof t
            }
            function H(t) {
                return "[object Date]" === v.call(t)
            }
            function W(t) {
                return Array.isArray(t) || t instanceof Array
            }
            function q(t) {
                switch (v.call(t)) {
                case "[object Error]":
                case "[object Exception]":
                case "[object DOMException]":
                    return !0;
                default:
                    return t instanceof Error
                }
            }
            function X(t) {
                return "function" == typeof t
            }
            function Y(t) {
                return "[object RegExp]" === v.call(t)
            }
            function K(t) {
                return t && t.window === t
            }
            function Z(t) {
                return t && t.$evalAsync && t.$watch
            }
            function J(t) {
                return "boolean" == typeof t
            }
            function Q(t) {
                return t && X(t.then)
            }
            R.$inject = [],
            L.$inject = [];
            var $ = /^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array]$/;
            var tt = function(t) {
                return z(t) ? t.trim() : t
            }
              , et = function(t) {
                return t.replace(/([-()[\]{}+?*.$^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08")
            };
            function nt(t) {
                return !(!t || !(t.nodeName || t.prop && t.attr && t.find))
            }
            function it(t) {
                return p(t.nodeName || t[0] && t[0].nodeName)
            }
            function rt(t, e) {
                return -1 !== Array.prototype.indexOf.call(t, e)
            }
            function ot(t, e) {
                var n = t.indexOf(e);
                return n >= 0 && t.splice(n, 1),
                n
            }
            function at(t, e, n) {
                var i, o, a = [], s = [];
                if (n = r(n) ? n : NaN,
                e) {
                    if ((o = e) && G(o.length) && $.test(v.call(o)) || (i = e,
                    "[object ArrayBuffer]" === v.call(i)))
                        throw b("cpta", "Can't copy! TypedArray destination cannot be mutated.");
                    if (t === e)
                        throw b("cpi", "Can't copy! Source and destination are identical.");
                    return W(e) ? e.length = 0 : M(e, (function(t, n) {
                        "$$hashKey" !== n && delete e[n]
                    }
                    )),
                    a.push(t),
                    s.push(e),
                    c(t, e, n)
                }
                return l(t, n);
                function c(t, e, n) {
                    if (--n < 0)
                        return "...";
                    var i, r = e.$$hashKey;
                    if (W(t))
                        for (var o = 0, a = t.length; o < a; o++)
                            e.push(l(t[o], n));
                    else if (B(t))
                        for (i in t)
                            e[i] = l(t[i], n);
                    else if (t && "function" == typeof t.hasOwnProperty)
                        for (i in t)
                            t.hasOwnProperty(i) && (e[i] = l(t[i], n));
                    else
                        for (i in t)
                            d.call(t, i) && (e[i] = l(t[i], n));
                    return T(e, r),
                    e
                }
                function l(t, e) {
                    if (!U(t))
                        return t;
                    var n = a.indexOf(t);
                    if (-1 !== n)
                        return s[n];
                    if (K(t) || Z(t))
                        throw b("cpws", "Can't copy! Making copies of Window or Scope instances is not supported.");
                    var i = !1
                      , r = function(t) {
                        switch (v.call(t)) {
                        case "[object Int8Array]":
                        case "[object Int16Array]":
                        case "[object Int32Array]":
                        case "[object Float32Array]":
                        case "[object Float64Array]":
                        case "[object Uint8Array]":
                        case "[object Uint8ClampedArray]":
                        case "[object Uint16Array]":
                        case "[object Uint32Array]":
                            return new t.constructor(l(t.buffer),t.byteOffset,t.length);
                        case "[object ArrayBuffer]":
                            if (!t.slice) {
                                var e = new ArrayBuffer(t.byteLength);
                                return new Uint8Array(e).set(new Uint8Array(t)),
                                e
                            }
                            return t.slice(0);
                        case "[object Boolean]":
                        case "[object Number]":
                        case "[object String]":
                        case "[object Date]":
                            return new t.constructor(t.valueOf());
                        case "[object RegExp]":
                            var n = new RegExp(t.source,t.toString().match(/[^/]*$/)[0]);
                            return n.lastIndex = t.lastIndex,
                            n;
                        case "[object Blob]":
                            return new t.constructor([t],{
                                type: t.type
                            })
                        }
                        if (X(t.cloneNode))
                            return t.cloneNode(!0)
                    }(t);
                    return void 0 === r && (r = W(t) ? [] : Object.create(y(t)),
                    i = !0),
                    a.push(t),
                    s.push(r),
                    i ? c(t, r, e) : r
                }
            }
            function st(t, e) {
                return t === e || t != t && e != e
            }
            function ct(t, e) {
                if (t === e)
                    return !0;
                if (null === t || null === e)
                    return !1;
                if (t != t && e != e)
                    return !0;
                var n, i, r, o = typeof t;
                if (o === typeof e && "object" === o) {
                    if (!W(t)) {
                        if (H(t))
                            return !!H(e) && st(t.getTime(), e.getTime());
                        if (Y(t))
                            return !!Y(e) && t.toString() === e.toString();
                        if (Z(t) || Z(e) || K(t) || K(e) || W(e) || H(e) || Y(e))
                            return !1;
                        for (i in r = Ut(),
                        t)
                            if ("$" !== i.charAt(0) && !X(t[i])) {
                                if (!ct(t[i], e[i]))
                                    return !1;
                                r[i] = !0
                            }
                        for (i in e)
                            if (!(i in r) && "$" !== i.charAt(0) && F(e[i]) && !X(e[i]))
                                return !1;
                        return !0
                    }
                    if (!W(e))
                        return !1;
                    if ((n = t.length) === e.length) {
                        for (i = 0; i < n; i++)
                            if (!ct(t[i], e[i]))
                                return !1;
                        return !0
                    }
                }
                return !1
            }
            var lt = function() {
                if (!F(lt.rules)) {
                    var t = e.document.querySelector("[ng-csp]") || e.document.querySelector("[data-ng-csp]");
                    if (t) {
                        var n = t.getAttribute("ng-csp") || t.getAttribute("data-ng-csp");
                        lt.rules = {
                            noUnsafeEval: !n || -1 !== n.indexOf("no-unsafe-eval"),
                            noInlineStyle: !n || -1 !== n.indexOf("no-inline-style")
                        }
                    } else
                        lt.rules = {
                            noUnsafeEval: function() {
                                try {
                                    return new Function(""),
                                    !1
                                } catch (t) {
                                    return !0
                                }
                            }(),
                            noInlineStyle: !1
                        }
                }
                return lt.rules
            }
              , ut = function() {
                if (F(ut.name_))
                    return ut.name_;
                var t, n, i, r, o = At.length;
                for (n = 0; n < o; ++n)
                    if (i = At[n],
                    t = e.document.querySelector("[" + i.replace(":", "\\:") + "jq]")) {
                        r = t.getAttribute(i + "jq");
                        break
                    }
                return ut.name_ = r
            };
            function dt(t, e, n) {
                return t.concat(f.call(e, n))
            }
            function pt(t, e) {
                return f.call(t, e || 0)
            }
            function ht(t, e) {
                var n = arguments.length > 2 ? pt(arguments, 2) : [];
                return !X(e) || e instanceof RegExp ? e : n.length ? function() {
                    return arguments.length ? e.apply(t, dt(n, arguments, 0)) : e.apply(t, n)
                }
                : function() {
                    return arguments.length ? e.apply(t, arguments) : e.call(t)
                }
            }
            function ft(t, n) {
                var i = n;
                return "string" == typeof t && "$" === t.charAt(0) && "$" === t.charAt(1) ? i = void 0 : K(n) ? i = "$WINDOW" : n && e.document === n ? i = "$DOCUMENT" : Z(n) && (i = "$SCOPE"),
                i
            }
            function mt(t, e) {
                if (!V(t))
                    return G(e) || (e = e ? 2 : null),
                    JSON.stringify(t, ft, e)
            }
            function gt(t) {
                return z(t) ? JSON.parse(t) : t
            }
            var vt = /:/g;
            function yt(t, e) {
                t = t.replace(vt, "");
                var n = Date.parse("Jan 01, 1970 00:00:00 " + t) / 6e4;
                return k(n) ? e : n
            }
            function bt(t, e) {
                return (t = new Date(t.getTime())).setMinutes(t.getMinutes() + e),
                t
            }
            function wt(t, e, n) {
                n = n ? -1 : 1;
                var i = t.getTimezoneOffset();
                return bt(t, n * (yt(e, i) - i))
            }
            function St(t) {
                t = s(t).clone().empty();
                var e = s("<div></div>").append(t).html();
                try {
                    return t[0].nodeType === zt ? p(e) : e.match(/^(<[^>]+>)/)[1].replace(/^<([\w-]+)/, (function(t, e) {
                        return "<" + p(e)
                    }
                    ))
                } catch (t) {
                    return p(e)
                }
            }
            function xt(t) {
                try {
                    return decodeURIComponent(t)
                } catch (t) {}
            }
            function Mt(t) {
                var e = {};
                return M((t || "").split("&"), (function(t) {
                    var n, i, r;
                    t && (i = t = t.replace(/\+/g, "%20"),
                    -1 !== (n = t.indexOf("=")) && (i = t.substring(0, n),
                    r = t.substring(n + 1)),
                    F(i = xt(i)) && (r = !F(r) || xt(r),
                    d.call(e, i) ? W(e[i]) ? e[i].push(r) : e[i] = [e[i], r] : e[i] = r))
                }
                )),
                e
            }
            function Et(t) {
                return Ct(t, !0).replace(/%26/gi, "&").replace(/%3D/gi, "=").replace(/%2B/gi, "+")
            }
            function Ct(t, e) {
                return encodeURIComponent(t).replace(/%40/gi, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%3B/gi, ";").replace(/%20/g, e ? "%20" : "+")
            }
            var At = ["ng-", "data-ng-", "ng:", "x-ng-"];
            var Tt = function(t) {
                var n = t.currentScript;
                if (!n)
                    return !0;
                if (!(n instanceof e.HTMLScriptElement || n instanceof e.SVGScriptElement))
                    return !1;
                var i = n.attributes;
                return [i.getNamedItem("src"), i.getNamedItem("href"), i.getNamedItem("xlink:href")].every((function(e) {
                    if (!e)
                        return !0;
                    if (!e.value)
                        return !1;
                    var n = t.createElement("a");
                    if (n.href = e.value,
                    t.location.origin === n.origin)
                        return !0;
                    switch (n.protocol) {
                    case "http:":
                    case "https:":
                    case "ftp:":
                    case "blob:":
                    case "file:":
                    case "data:":
                        return !0;
                    default:
                        return !1
                    }
                }
                ))
            }(e.document);
            function Ot(t, n) {
                var i, r, o = {};
                if (M(At, (function(e) {
                    var n = e + "app";
                    !i && t.hasAttribute && t.hasAttribute(n) && (i = t,
                    r = t.getAttribute(n))
                }
                )),
                M(At, (function(e) {
                    var n, o = e + "app";
                    !i && (n = t.querySelector("[" + o.replace(":", "\\:") + "]")) && (i = n,
                    r = n.getAttribute(o))
                }
                )),
                i) {
                    if (!Tt)
                        return void e.console.error("AngularJS: disabling automatic bootstrap. <script> protocol indicates an extension, document.location.href does not match.");
                    o.strictDi = null !== function(t, e) {
                        var n, i, r = At.length;
                        for (i = 0; i < r; ++i)
                            if (n = At[i] + e,
                            z(n = t.getAttribute(n)))
                                return n;
                        return null
                    }(i, "strict-di"),
                    n(i, r ? [r] : [], o)
                }
            }
            function _t(t, n, i) {
                U(i) || (i = {});
                i = _({
                    strictDi: !1
                }, i);
                var r = function() {
                    if ((t = s(t)).injector()) {
                        var r = t[0] === e.document ? "document" : St(t);
                        throw b("btstrpd", "App already bootstrapped with this element '{0}'", r.replace(/</, "&lt;").replace(/>/, "&gt;"))
                    }
                    (n = n || []).unshift(["$provide", function(e) {
                        e.value("$rootElement", t)
                    }
                    ]),
                    i.debugInfoEnabled && n.push(["$compileProvider", function(t) {
                        t.debugInfoEnabled(!0)
                    }
                    ]),
                    n.unshift("ng");
                    var o = Qe(n, i.strictDi);
                    return o.invoke(["$rootScope", "$rootElement", "$compile", "$injector", function(t, e, n, i) {
                        t.$apply((function() {
                            e.data("$injector", i),
                            n(e)(t)
                        }
                        ))
                    }
                    ]),
                    o
                }
                  , o = /^NG_ENABLE_DEBUG_INFO!/
                  , a = /^NG_DEFER_BOOTSTRAP!/;
                if (e && o.test(e.name) && (i.debugInfoEnabled = !0,
                e.name = e.name.replace(o, "")),
                e && !a.test(e.name))
                    return r();
                e.name = e.name.replace(a, ""),
                w.resumeBootstrap = function(t) {
                    return M(t, (function(t) {
                        n.push(t)
                    }
                    )),
                    r()
                }
                ,
                X(w.resumeDeferredBootstrap) && w.resumeDeferredBootstrap()
            }
            function Pt() {
                e.name = "NG_ENABLE_DEBUG_INFO!" + e.name,
                e.location.reload()
            }
            function It(t) {
                var e = w.element(t).injector();
                if (!e)
                    throw b("test", "no injector found for element argument to getTestability");
                return e.get("$$testability")
            }
            var kt = /[A-Z]/g;
            function Dt(t, e) {
                return e = e || "_",
                t.replace(kt, (function(t, n) {
                    return (n ? e : "") + t.toLowerCase()
                }
                ))
            }
            var Rt = !1;
            function Lt() {
                he.legacyXHTMLReplacement = !0
            }
            function Nt(t, e, n) {
                if (!t)
                    throw b("areq", "Argument '{0}' is {1}", e || "?", n || "required");
                return t
            }
            function jt(t, e, n) {
                return n && W(t) && (t = t[t.length - 1]),
                Nt(X(t), e, "not a function, got " + (t && "object" == typeof t ? t.constructor.name || "Object" : typeof t)),
                t
            }
            function Vt(t, e) {
                if ("hasOwnProperty" === t)
                    throw b("badname", "hasOwnProperty is not a valid {0} name", e)
            }
            function Ft(t) {
                for (var e, n = t[0], i = t[t.length - 1], r = 1; n !== i && (n = n.nextSibling); r++)
                    (e || t[r] !== n) && (e || (e = s(f.call(t, 0, r))),
                    e.push(n));
                return e || t
            }
            function Ut() {
                return Object.create(null)
            }
            function Bt(t) {
                if (null == t)
                    return "";
                switch (typeof t) {
                case "string":
                    break;
                case "number":
                    t = "" + t;
                    break;
                default:
                    t = !j(t) || W(t) || H(t) ? mt(t) : t.toString()
                }
                return t
            }
            var zt = 3;
            function Gt(t, e) {
                if (W(t)) {
                    e = e || [];
                    for (var n = 0, i = t.length; n < i; n++)
                        e[n] = t[n]
                } else if (U(t))
                    for (var r in e = e || {},
                    t)
                        "$" === r.charAt(0) && "$" === r.charAt(1) || (e[r] = t[r]);
                return e || t
            }
            function Ht(t, e) {
                return "function" == typeof t ? t.toString().replace(/ \{[\s\S]*$/, "") : V(t) ? "undefined" : "string" != typeof t ? function(t, e) {
                    var n = [];
                    return r(e) && (t = w.copy(t, null, e)),
                    JSON.stringify(t, (function(t, e) {
                        if (U(e = ft(t, e))) {
                            if (n.indexOf(e) >= 0)
                                return "...";
                            n.push(e)
                        }
                        return e
                    }
                    ))
                }(t, e) : t
            }
            var Wt = {
                full: "1.8.0",
                major: 1,
                minor: 8,
                dot: 0,
                codeName: "nested-vaccination"
            };
            he.expando = "ng339";
            var qt = he.cache = {}
              , Xt = 1;
            he._data = function(t) {
                return this.cache[t[this.expando]] || {}
            }
            ;
            var Yt = /-([a-z])/g
              , Kt = /^-ms-/
              , Zt = {
                mouseleave: "mouseout",
                mouseenter: "mouseover"
            }
              , Jt = o("jqLite");
            function Qt(t, e) {
                return e.toUpperCase()
            }
            function $t(t) {
                return t.replace(Yt, Qt)
            }
            var te = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/
              , ee = /<|&#?\w+;/
              , ne = /<([\w:-]+)/
              , ie = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi
              , re = {
                thead: ["table"],
                col: ["colgroup", "table"],
                tr: ["tbody", "table"],
                td: ["tr", "tbody", "table"]
            };
            re.tbody = re.tfoot = re.colgroup = re.caption = re.thead,
            re.th = re.td;
            var oe = {
                option: [1, '<select multiple="multiple">', "</select>"],
                _default: [0, "", ""]
            };
            for (var ae in re) {
                var se = re[ae]
                  , ce = se.slice().reverse();
                oe[ae] = [ce.length, "<" + ce.join("><") + ">", "</" + se.join("></") + ">"]
            }
            function le(t) {
                return !ee.test(t)
            }
            function ue(t) {
                var e = t.nodeType;
                return 1 === e || !e || 9 === e
            }
            function de(t, n) {
                var i, r, o, s, c, l = n.createDocumentFragment(), u = [];
                if (le(t))
                    u.push(n.createTextNode(t));
                else {
                    if (i = l.appendChild(n.createElement("div")),
                    r = (ne.exec(t) || ["", ""])[1].toLowerCase(),
                    s = he.legacyXHTMLReplacement ? t.replace(ie, "<$1></$2>") : t,
                    a < 10)
                        for (o = oe[r] || oe._default,
                        i.innerHTML = o[1] + s + o[2],
                        c = o[0]; c--; )
                            i = i.firstChild;
                    else {
                        for (c = (o = re[r] || []).length; --c > -1; )
                            i.appendChild(e.document.createElement(o[c])),
                            i = i.firstChild;
                        i.innerHTML = s
                    }
                    u = dt(u, i.childNodes),
                    (i = l.firstChild).textContent = ""
                }
                return l.textContent = "",
                l.innerHTML = "",
                M(u, (function(t) {
                    l.appendChild(t)
                }
                )),
                l
            }
            oe.optgroup = oe.option;
            var pe = e.Node.prototype.contains || function(t) {
                return !!(16 & this.compareDocumentPosition(t))
            }
            ;
            function he(t) {
                if (t instanceof he)
                    return t;
                var n, i, r, o;
                if (z(t) && (t = tt(t),
                n = !0),
                !(this instanceof he)) {
                    if (n && "<" !== t.charAt(0))
                        throw Jt("nosel", "Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");
                    return new he(t)
                }
                n ? Ce(this, (i = t,
                r = r || e.document,
                (o = te.exec(i)) ? [r.createElement(o[1])] : (o = de(i, r)) ? o.childNodes : [])) : X(t) ? Pe(t) : Ce(this, t)
            }
            function fe(t) {
                return t.cloneNode(!0)
            }
            function me(t, e) {
                !e && ue(t) && s.cleanData([t]),
                t.querySelectorAll && s.cleanData(t.querySelectorAll("*"))
            }
            function ge(t) {
                var e;
                for (e in t)
                    return !1;
                return !0
            }
            function ve(t) {
                var e = t.ng339
                  , n = e && qt[e]
                  , i = n && n.events
                  , r = n && n.data;
                r && !ge(r) || i && !ge(i) || (delete qt[e],
                t.ng339 = void 0)
            }
            function ye(t, e, n, i) {
                if (F(i))
                    throw Jt("offargs", "jqLite#off() does not support the `selector` argument");
                var r = we(t)
                  , o = r && r.events
                  , a = r && r.handle;
                if (a) {
                    if (e) {
                        var s = function(e) {
                            var i = o[e];
                            F(n) && ot(i || [], n),
                            F(n) && i && i.length > 0 || (t.removeEventListener(e, a),
                            delete o[e])
                        };
                        M(e.split(" "), (function(t) {
                            s(t),
                            Zt[t] && s(Zt[t])
                        }
                        ))
                    } else
                        for (e in o)
                            "$destroy" !== e && t.removeEventListener(e, a),
                            delete o[e];
                    ve(t)
                }
            }
            function be(t, e) {
                var n = t.ng339
                  , i = n && qt[n];
                i && (e ? delete i.data[e] : i.data = {},
                ve(t))
            }
            function we(t, e) {
                var n = t.ng339
                  , i = n && qt[n];
                return e && !i && (t.ng339 = n = ++Xt,
                i = qt[n] = {
                    events: {},
                    data: {},
                    handle: void 0
                }),
                i
            }
            function Se(t, e, n) {
                if (ue(t)) {
                    var i, r = F(n), o = !r && e && !U(e), a = !e, s = we(t, !o), c = s && s.data;
                    if (r)
                        c[$t(e)] = n;
                    else {
                        if (a)
                            return c;
                        if (o)
                            return c && c[$t(e)];
                        for (i in e)
                            c[$t(i)] = e[i]
                    }
                }
            }
            function xe(t, e) {
                return !!t.getAttribute && (" " + (t.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ").indexOf(" " + e + " ") > -1
            }
            function Me(t, e) {
                if (e && t.setAttribute) {
                    var n = (" " + (t.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ")
                      , i = n;
                    M(e.split(" "), (function(t) {
                        t = tt(t),
                        i = i.replace(" " + t + " ", " ")
                    }
                    )),
                    i !== n && t.setAttribute("class", tt(i))
                }
            }
            function Ee(t, e) {
                if (e && t.setAttribute) {
                    var n = (" " + (t.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ")
                      , i = n;
                    M(e.split(" "), (function(t) {
                        t = tt(t),
                        -1 === i.indexOf(" " + t + " ") && (i += t + " ")
                    }
                    )),
                    i !== n && t.setAttribute("class", tt(i))
                }
            }
            function Ce(t, e) {
                if (e)
                    if (e.nodeType)
                        t[t.length++] = e;
                    else {
                        var n = e.length;
                        if ("number" == typeof n && e.window !== e) {
                            if (n)
                                for (var i = 0; i < n; i++)
                                    t[t.length++] = e[i]
                        } else
                            t[t.length++] = e
                    }
            }
            function Ae(t, e) {
                return Te(t, "$" + (e || "ngController") + "Controller")
            }
            function Te(t, e, n) {
                9 === t.nodeType && (t = t.documentElement);
                for (var i = W(e) ? e : [e]; t; ) {
                    for (var r = 0, o = i.length; r < o; r++)
                        if (F(n = s.data(t, i[r])))
                            return n;
                    t = t.parentNode || 11 === t.nodeType && t.host
                }
            }
            function Oe(t) {
                for (me(t, !0); t.firstChild; )
                    t.removeChild(t.firstChild)
            }
            function _e(t, e) {
                e || me(t);
                var n = t.parentNode;
                n && n.removeChild(t)
            }
            function Pe(t) {
                function n() {
                    e.document.removeEventListener("DOMContentLoaded", n),
                    e.removeEventListener("load", n),
                    t()
                }
                "complete" === e.document.readyState ? e.setTimeout(t) : (e.document.addEventListener("DOMContentLoaded", n),
                e.addEventListener("load", n))
            }
            var Ie = he.prototype = {
                ready: Pe,
                toString: function() {
                    var t = [];
                    return M(this, (function(e) {
                        t.push("" + e)
                    }
                    )),
                    "[" + t.join(", ") + "]"
                },
                eq: function(t) {
                    return s(t >= 0 ? this[t] : this[this.length + t])
                },
                length: 0,
                push: g,
                sort: [].sort,
                splice: [].splice
            }
              , ke = {};
            M("multiple,selected,checked,disabled,readOnly,required,open".split(","), (function(t) {
                ke[p(t)] = t
            }
            ));
            var De = {};
            M("input,select,option,textarea,button,form,details".split(","), (function(t) {
                De[t] = !0
            }
            ));
            var Re = {
                ngMinlength: "minlength",
                ngMaxlength: "maxlength",
                ngMin: "min",
                ngMax: "max",
                ngPattern: "pattern",
                ngStep: "step"
            };
            function Le(t, e) {
                var n = ke[e.toLowerCase()];
                return n && De[it(t)] && n
            }
            function Ne(t, e, n) {
                n.call(t, e)
            }
            function je(t, e, n) {
                var i = e.relatedTarget;
                i && (i === t || pe.call(t, i)) || n.call(t, e)
            }
            function Ve() {
                this.$get = function() {
                    return _(he, {
                        hasClass: function(t, e) {
                            return t.attr && (t = t[0]),
                            xe(t, e)
                        },
                        addClass: function(t, e) {
                            return t.attr && (t = t[0]),
                            Ee(t, e)
                        },
                        removeClass: function(t, e) {
                            return t.attr && (t = t[0]),
                            Me(t, e)
                        }
                    })
                }
            }
            function Fe(t, e) {
                var n = t && t.$$hashKey;
                if (n)
                    return "function" == typeof n && (n = t.$$hashKey()),
                    n;
                var i = typeof t;
                return n = "function" === i || "object" === i && null !== t ? t.$$hashKey = i + ":" + (e || A)() : i + ":" + t
            }
            M({
                data: Se,
                removeData: be,
                hasData: function(t) {
                    for (var e in qt[t.ng339])
                        return !0;
                    return !1
                },
                cleanData: function(t) {
                    for (var e = 0, n = t.length; e < n; e++)
                        be(t[e]),
                        ye(t[e])
                }
            }, (function(t, e) {
                he[e] = t
            }
            )),
            M({
                data: Se,
                inheritedData: Te,
                scope: function(t) {
                    return s.data(t, "$scope") || Te(t.parentNode || t, ["$isolateScope", "$scope"])
                },
                isolateScope: function(t) {
                    return s.data(t, "$isolateScope") || s.data(t, "$isolateScopeNoTemplate")
                },
                controller: Ae,
                injector: function(t) {
                    return Te(t, "$injector")
                },
                removeAttr: function(t, e) {
                    t.removeAttribute(e)
                },
                hasClass: xe,
                css: function(t, e, n) {
                    if (e = function(t) {
                        return $t(t.replace(Kt, "ms-"))
                    }(e),
                    !F(n))
                        return t.style[e];
                    t.style[e] = n
                },
                attr: function(t, e, n) {
                    var i, r = t.nodeType;
                    if (r !== zt && 2 !== r && 8 !== r && t.getAttribute) {
                        var o = p(e)
                          , a = ke[o];
                        if (!F(n))
                            return i = t.getAttribute(e),
                            a && null !== i && (i = o),
                            null === i ? void 0 : i;
                        null === n || !1 === n && a ? t.removeAttribute(e) : t.setAttribute(e, a ? o : n)
                    }
                },
                prop: function(t, e, n) {
                    if (!F(n))
                        return t[e];
                    t[e] = n
                },
                text: function() {
                    return t.$dv = "",
                    t;
                    function t(t, e) {
                        if (V(e)) {
                            var n = t.nodeType;
                            return 1 === n || n === zt ? t.textContent : ""
                        }
                        t.textContent = e
                    }
                }(),
                val: function(t, e) {
                    if (V(e)) {
                        if (t.multiple && "select" === it(t)) {
                            var n = [];
                            return M(t.options, (function(t) {
                                t.selected && n.push(t.value || t.text)
                            }
                            )),
                            n
                        }
                        return t.value
                    }
                    t.value = e
                },
                html: function(t, e) {
                    if (V(e))
                        return t.innerHTML;
                    me(t, !0),
                    t.innerHTML = e
                },
                empty: Oe
            }, (function(t, e) {
                he.prototype[e] = function(e, n) {
                    var i, r, o = this.length;
                    if (t !== Oe && V(2 === t.length && t !== xe && t !== Ae ? e : n)) {
                        if (U(e)) {
                            for (i = 0; i < o; i++)
                                if (t === Se)
                                    t(this[i], e);
                                else
                                    for (r in e)
                                        t(this[i], r, e[r]);
                            return this
                        }
                        for (var a = t.$dv, s = V(a) ? Math.min(o, 1) : o, c = 0; c < s; c++) {
                            var l = t(this[c], e, n);
                            a = a ? a + l : l
                        }
                        return a
                    }
                    for (i = 0; i < o; i++)
                        t(this[i], e, n);
                    return this
                }
            }
            )),
            M({
                removeData: be,
                on: function(t, e, n, i) {
                    if (F(i))
                        throw Jt("onargs", "jqLite#on() does not support the `selector` or `eventData` parameters");
                    if (ue(t)) {
                        var r = we(t, !0)
                          , o = r.events
                          , a = r.handle;
                        a || (a = r.handle = function(t, e) {
                            var n = function(n, i) {
                                n.isDefaultPrevented = function() {
                                    return n.defaultPrevented
                                }
                                ;
                                var r = e[i || n.type]
                                  , o = r ? r.length : 0;
                                if (o) {
                                    if (V(n.immediatePropagationStopped)) {
                                        var a = n.stopImmediatePropagation;
                                        n.stopImmediatePropagation = function() {
                                            n.immediatePropagationStopped = !0,
                                            n.stopPropagation && n.stopPropagation(),
                                            a && a.call(n)
                                        }
                                    }
                                    n.isImmediatePropagationStopped = function() {
                                        return !0 === n.immediatePropagationStopped
                                    }
                                    ;
                                    var s = r.specialHandlerWrapper || Ne;
                                    o > 1 && (r = Gt(r));
                                    for (var c = 0; c < o; c++)
                                        n.isImmediatePropagationStopped() || s(t, n, r[c])
                                }
                            };
                            return n.elem = t,
                            n
                        }(t, o));
                        for (var s = e.indexOf(" ") >= 0 ? e.split(" ") : [e], c = s.length, l = function(e, i, r) {
                            var s = o[e];
                            s || ((s = o[e] = []).specialHandlerWrapper = i,
                            "$destroy" === e || r || t.addEventListener(e, a)),
                            s.push(n)
                        }; c--; )
                            e = s[c],
                            Zt[e] ? (l(Zt[e], je),
                            l(e, void 0, !0)) : l(e)
                    }
                },
                off: ye,
                one: function(t, e, n) {
                    (t = s(t)).on(e, (function i() {
                        t.off(e, n),
                        t.off(e, i)
                    }
                    )),
                    t.on(e, n)
                },
                replaceWith: function(t, e) {
                    var n, i = t.parentNode;
                    me(t),
                    M(new he(e), (function(e) {
                        n ? i.insertBefore(e, n.nextSibling) : i.replaceChild(e, t),
                        n = e
                    }
                    ))
                },
                children: function(t) {
                    var e = [];
                    return M(t.childNodes, (function(t) {
                        1 === t.nodeType && e.push(t)
                    }
                    )),
                    e
                },
                contents: function(t) {
                    return t.contentDocument || t.childNodes || []
                },
                append: function(t, e) {
                    var n = t.nodeType;
                    if (1 === n || 11 === n)
                        for (var i = 0, r = (e = new he(e)).length; i < r; i++) {
                            var o = e[i];
                            t.appendChild(o)
                        }
                },
                prepend: function(t, e) {
                    if (1 === t.nodeType) {
                        var n = t.firstChild;
                        M(new he(e), (function(e) {
                            t.insertBefore(e, n)
                        }
                        ))
                    }
                },
                wrap: function(t, e) {
                    var n, i, r;
                    n = t,
                    i = s(e).eq(0).clone()[0],
                    (r = n.parentNode) && r.replaceChild(i, n),
                    i.appendChild(n)
                },
                remove: _e,
                detach: function(t) {
                    _e(t, !0)
                },
                after: function(t, e) {
                    var n = t
                      , i = t.parentNode;
                    if (i)
                        for (var r = 0, o = (e = new he(e)).length; r < o; r++) {
                            var a = e[r];
                            i.insertBefore(a, n.nextSibling),
                            n = a
                        }
                },
                addClass: Ee,
                removeClass: Me,
                toggleClass: function(t, e, n) {
                    e && M(e.split(" "), (function(e) {
                        var i = n;
                        V(i) && (i = !xe(t, e)),
                        (i ? Ee : Me)(t, e)
                    }
                    ))
                },
                parent: function(t) {
                    var e = t.parentNode;
                    return e && 11 !== e.nodeType ? e : null
                },
                next: function(t) {
                    return t.nextElementSibling
                },
                find: function(t, e) {
                    return t.getElementsByTagName ? t.getElementsByTagName(e) : []
                },
                clone: fe,
                triggerHandler: function(t, e, n) {
                    var i, r, o, a = e.type || e, s = we(t), c = s && s.events, l = c && c[a];
                    l && (i = {
                        preventDefault: function() {
                            this.defaultPrevented = !0
                        },
                        isDefaultPrevented: function() {
                            return !0 === this.defaultPrevented
                        },
                        stopImmediatePropagation: function() {
                            this.immediatePropagationStopped = !0
                        },
                        isImmediatePropagationStopped: function() {
                            return !0 === this.immediatePropagationStopped
                        },
                        stopPropagation: R,
                        type: a,
                        target: t
                    },
                    e.type && (i = _(i, e)),
                    r = Gt(l),
                    o = n ? [i].concat(n) : [i],
                    M(r, (function(e) {
                        i.isImmediatePropagationStopped() || e.apply(t, o)
                    }
                    )))
                }
            }, (function(t, e) {
                he.prototype[e] = function(e, n, i) {
                    for (var r, o = 0, a = this.length; o < a; o++)
                        V(r) ? F(r = t(this[o], e, n, i)) && (r = s(r)) : Ce(r, t(this[o], e, n, i));
                    return F(r) ? r : this
                }
            }
            )),
            he.prototype.bind = he.prototype.on,
            he.prototype.unbind = he.prototype.off;
            var Ue = Object.create(null);
            function Be() {
                this._keys = [],
                this._values = [],
                this._lastKey = NaN,
                this._lastIndex = -1
            }
            Be.prototype = {
                _idx: function(t) {
                    return t !== this._lastKey && (this._lastKey = t,
                    this._lastIndex = this._keys.indexOf(t)),
                    this._lastIndex
                },
                _transformKey: function(t) {
                    return k(t) ? Ue : t
                },
                get: function(t) {
                    t = this._transformKey(t);
                    var e = this._idx(t);
                    if (-1 !== e)
                        return this._values[e]
                },
                has: function(t) {
                    return t = this._transformKey(t),
                    -1 !== this._idx(t)
                },
                set: function(t, e) {
                    t = this._transformKey(t);
                    var n = this._idx(t);
                    -1 === n && (n = this._lastIndex = this._keys.length),
                    this._keys[n] = t,
                    this._values[n] = e
                },
                delete: function(t) {
                    t = this._transformKey(t);
                    var e = this._idx(t);
                    return -1 !== e && (this._keys.splice(e, 1),
                    this._values.splice(e, 1),
                    this._lastKey = NaN,
                    this._lastIndex = -1,
                    !0)
                }
            };
            var ze = Be
              , Ge = [function() {
                this.$get = [function() {
                    return ze
                }
                ]
            }
            ]
              , He = /^([^(]+?)=>/
              , We = /^[^(]*\(\s*([^)]*)\)/m
              , qe = /,/
              , Xe = /^\s*(_?)(\S+?)\1\s*$/
              , Ye = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm
              , Ke = o("$injector");
            function Ze(t) {
                return Function.prototype.toString.call(t)
            }
            function Je(t) {
                var e = Ze(t).replace(Ye, "");
                return e.match(He) || e.match(We)
            }
            function Qe(t, e) {
                e = !0 === e;
                var n = {}
                  , i = []
                  , r = new ze
                  , o = {
                    $provide: {
                        provider: h(f),
                        factory: h(g),
                        service: h((function(t, e) {
                            return g(t, ["$injector", function(t) {
                                return t.instantiate(e)
                            }
                            ])
                        }
                        )),
                        value: h((function(t, e) {
                            return g(t, N(e), !1)
                        }
                        )),
                        constant: h((function(t, e) {
                            Vt(t, "constant"),
                            o[t] = e,
                            c[t] = e
                        }
                        )),
                        decorator: function(t, e) {
                            var n = s.get(t + "Provider")
                              , i = n.$get;
                            n.$get = function() {
                                var t = d.invoke(i, n);
                                return d.invoke(e, null, {
                                    $delegate: t
                                })
                            }
                        }
                    }
                }
                  , s = o.$injector = y(o, (function(t, e) {
                    throw w.isString(e) && i.push(e),
                    Ke("unpr", "Unknown provider: {0}", i.join(" <- "))
                }
                ))
                  , c = {}
                  , u = y(c, (function(t, e) {
                    var n = s.get(t + "Provider", e);
                    return d.invoke(n.$get, n, void 0, t)
                }
                ))
                  , d = u;
                o.$injectorProvider = {
                    $get: N(u)
                },
                d.modules = s.modules = Ut();
                var p = v(t);
                return (d = u.get("$injector")).strictDi = e,
                M(p, (function(t) {
                    t && d.invoke(t)
                }
                )),
                d.loadNewModules = function(t) {
                    M(v(t), (function(t) {
                        t && d.invoke(t)
                    }
                    ))
                }
                ,
                d;
                function h(t) {
                    return function(e, n) {
                        if (!U(e))
                            return t(e, n);
                        M(e, C(t))
                    }
                }
                function f(t, e) {
                    if (Vt(t, "service"),
                    (X(e) || W(e)) && (e = s.instantiate(e)),
                    !e.$get)
                        throw Ke("pget", "Provider '{0}' must define $get factory method.", t);
                    return o[t + "Provider"] = e
                }
                function m(t, e) {
                    return function() {
                        var n = d.invoke(e, this);
                        if (V(n))
                            throw Ke("undef", "Provider '{0}' must return a value from $get factory method.", t);
                        return n
                    }
                }
                function g(t, e, n) {
                    return f(t, {
                        $get: !1 !== n ? m(t, e) : e
                    })
                }
                function v(t) {
                    Nt(V(t) || W(t), "modulesToLoad", "not an array");
                    var e, n = [];
                    return M(t, (function(t) {
                        if (!r.get(t)) {
                            r.set(t, !0);
                            try {
                                z(t) ? (e = l(t),
                                d.modules[t] = e,
                                n = n.concat(v(e.requires)).concat(e._runBlocks),
                                i(e._invokeQueue),
                                i(e._configBlocks)) : X(t) || W(t) ? n.push(s.invoke(t)) : jt(t, "module")
                            } catch (e) {
                                throw W(t) && (t = t[t.length - 1]),
                                e.message && e.stack && -1 === e.stack.indexOf(e.message) && (e = e.message + "\n" + e.stack),
                                Ke("modulerr", "Failed to instantiate module {0} due to:\n{1}", t, e.stack || e.message || e)
                            }
                        }
                        function i(t) {
                            var e, n;
                            for (e = 0,
                            n = t.length; e < n; e++) {
                                var i = t[e]
                                  , r = s.get(i[0]);
                                r[i[1]].apply(r, i[2])
                            }
                        }
                    }
                    )),
                    n
                }
                function y(t, r) {
                    function s(e, o) {
                        if (t.hasOwnProperty(e)) {
                            if (t[e] === n)
                                throw Ke("cdep", "Circular dependency found: {0}", e + " <- " + i.join(" <- "));
                            return t[e]
                        }
                        try {
                            return i.unshift(e),
                            t[e] = n,
                            t[e] = r(e, o),
                            t[e]
                        } catch (i) {
                            throw t[e] === n && delete t[e],
                            i
                        } finally {
                            i.shift()
                        }
                    }
                    function c(t, n, i) {
                        for (var r = [], o = Qe.$$annotate(t, e, i), a = 0, c = o.length; a < c; a++) {
                            var l = o[a];
                            if ("string" != typeof l)
                                throw Ke("itkn", "Incorrect injection token! Expected service name as string, got {0}", l);
                            r.push(n && n.hasOwnProperty(l) ? n[l] : s(l, i))
                        }
                        return r
                    }
                    return {
                        invoke: function(t, e, n, i) {
                            "string" == typeof n && (i = n,
                            n = null);
                            var r = c(t, n, i);
                            return W(t) && (t = t[t.length - 1]),
                            function(t) {
                                if (a || "function" != typeof t)
                                    return !1;
                                var e = t.$$ngIsClass;
                                return J(e) || (e = t.$$ngIsClass = /^class\b/.test(Ze(t))),
                                e
                            }(t) ? (r.unshift(null),
                            new (Function.prototype.bind.apply(t, r))) : t.apply(e, r)
                        },
                        instantiate: function(t, e, n) {
                            var i = W(t) ? t[t.length - 1] : t
                              , r = c(t, e, n);
                            return r.unshift(null),
                            new (Function.prototype.bind.apply(i, r))
                        },
                        get: s,
                        annotate: Qe.$$annotate,
                        has: function(e) {
                            return o.hasOwnProperty(e + "Provider") || t.hasOwnProperty(e)
                        }
                    }
                }
            }
            function $e() {
                var t = !0;
                this.disableAutoScrolling = function() {
                    t = !1
                }
                ,
                this.$get = ["$window", "$location", "$rootScope", function(n, i, r) {
                    var o = n.document;
                    function a(t) {
                        if (t) {
                            t.scrollIntoView();
                            var e = function() {
                                var t = c.yOffset;
                                if (X(t))
                                    t = t();
                                else if (nt(t)) {
                                    var e = t[0];
                                    t = "fixed" !== n.getComputedStyle(e).position ? 0 : e.getBoundingClientRect().bottom
                                } else
                                    G(t) || (t = 0);
                                return t
                            }();
                            if (e) {
                                var i = t.getBoundingClientRect().top;
                                n.scrollBy(0, i - e)
                            }
                        } else
                            n.scrollTo(0, 0)
                    }
                    function c(t) {
                        var e, n, r;
                        (t = z(t) ? t : G(t) ? t.toString() : i.hash()) ? (e = o.getElementById(t)) ? a(e) : (n = o.getElementsByName(t),
                        r = null,
                        Array.prototype.some.call(n, (function(t) {
                            if ("a" === it(t))
                                return r = t,
                                !0
                        }
                        )),
                        (e = r) ? a(e) : "top" === t && a(null)) : a(null)
                    }
                    return t && r.$watch((function() {
                        return i.hash()
                    }
                    ), (function(t, n) {
                        var i, o;
                        t === n && "" === t || (i = function() {
                            r.$evalAsync(c)
                        }
                        ,
                        "complete" === (o = o || e).document.readyState ? o.setTimeout(i) : s(o).on("load", i))
                    }
                    )),
                    c
                }
                ]
            }
            Qe.$$annotate = function(t, e, n) {
                var i, r;
                if ("function" == typeof t) {
                    if (!(i = t.$inject)) {
                        if (i = [],
                        t.length) {
                            if (e)
                                throw z(n) && n || (n = t.name || function(t) {
                                    var e = Je(t);
                                    return e ? "function(" + (e[1] || "").replace(/[\s\r\n]+/, " ") + ")" : "fn"
                                }(t)),
                                Ke("strictdi", "{0} is not using explicit annotation and cannot be invoked in strict mode", n);
                            M(Je(t)[1].split(qe), (function(t) {
                                t.replace(Xe, (function(t, e, n) {
                                    i.push(n)
                                }
                                ))
                            }
                            ))
                        }
                        t.$inject = i
                    }
                } else
                    W(t) ? (jt(t[r = t.length - 1], "fn"),
                    i = t.slice(0, r)) : jt(t, "fn", !0);
                return i
            }
            ;
            var tn = o("$animate");
            function en(t, e) {
                return t || e ? t ? e ? (W(t) && (t = t.join(" ")),
                W(e) && (e = e.join(" ")),
                t + " " + e) : t : e : ""
            }
            function nn(t) {
                return U(t) ? t : {}
            }
            var rn = function() {
                this.$get = R
            }
              , on = function() {
                var t = new ze
                  , e = [];
                this.$get = ["$$AnimateRunner", "$rootScope", function(n, i) {
                    return {
                        enabled: R,
                        on: R,
                        off: R,
                        pin: R,
                        push: function(a, s, c, l) {
                            l && l(),
                            (c = c || {}).from && a.css(c.from),
                            c.to && a.css(c.to),
                            (c.addClass || c.removeClass) && function(n, a, s) {
                                var c = t.get(n) || {}
                                  , l = r(c, a, !0)
                                  , u = r(c, s, !1);
                                (l || u) && (t.set(n, c),
                                e.push(n),
                                1 === e.length && i.$$postDigest(o))
                            }(a, c.addClass, c.removeClass);
                            var u = new n;
                            return u.complete(),
                            u
                        }
                    };
                    function r(t, e, n) {
                        var i = !1;
                        return e && M(e = z(e) ? e.split(" ") : W(e) ? e : [], (function(e) {
                            e && (i = !0,
                            t[e] = n)
                        }
                        )),
                        i
                    }
                    function o() {
                        M(e, (function(e) {
                            var n = t.get(e);
                            if (n) {
                                var i = function(t) {
                                    z(t) && (t = t.split(" "));
                                    var e = Ut();
                                    return M(t, (function(t) {
                                        t.length && (e[t] = !0)
                                    }
                                    )),
                                    e
                                }(e.attr("class"))
                                  , r = ""
                                  , o = "";
                                M(n, (function(t, e) {
                                    t !== !!i[e] && (t ? r += (r.length ? " " : "") + e : o += (o.length ? " " : "") + e)
                                }
                                )),
                                M(e, (function(t) {
                                    r && Ee(t, r),
                                    o && Me(t, o)
                                }
                                )),
                                t.delete(e)
                            }
                        }
                        )),
                        e.length = 0
                    }
                }
                ]
            }
              , an = ["$provide", function(t) {
                var e = this
                  , n = null
                  , i = null;
                this.$$registeredAnimations = Object.create(null),
                this.register = function(n, i) {
                    if (n && "." !== n.charAt(0))
                        throw tn("notcsel", "Expecting class selector starting with '.' got '{0}'.", n);
                    var r = n + "-animation";
                    e.$$registeredAnimations[n.substr(1)] = r,
                    t.factory(r, i)
                }
                ,
                this.customFilter = function(t) {
                    return 1 === arguments.length && (i = X(t) ? t : null),
                    i
                }
                ,
                this.classNameFilter = function(t) {
                    if (1 === arguments.length && (n = t instanceof RegExp ? t : null)) {
                        var e = new RegExp("[(\\s|\\/)]ng-animate[(\\s|\\/)]");
                        if (e.test(n.toString()))
                            throw n = null,
                            tn("nongcls", '$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the "{0}" CSS class.', "ng-animate")
                    }
                    return n
                }
                ,
                this.$get = ["$$animateQueue", function(t) {
                    function e(t, e, n) {
                        if (n) {
                            var i = function(t) {
                                for (var e = 0; e < t.length; e++) {
                                    var n = t[e];
                                    if (1 === n.nodeType)
                                        return n
                                }
                            }(n);
                            !i || i.parentNode || i.previousElementSibling || (n = null)
                        }
                        n ? n.after(t) : e.prepend(t)
                    }
                    return {
                        on: t.on,
                        off: t.off,
                        pin: t.pin,
                        enabled: t.enabled,
                        cancel: function(t) {
                            t.cancel && t.cancel()
                        },
                        enter: function(n, i, r, o) {
                            return i = i && s(i),
                            r = r && s(r),
                            e(n, i = i || r.parent(), r),
                            t.push(n, "enter", nn(o))
                        },
                        move: function(n, i, r, o) {
                            return i = i && s(i),
                            r = r && s(r),
                            e(n, i = i || r.parent(), r),
                            t.push(n, "move", nn(o))
                        },
                        leave: function(e, n) {
                            return t.push(e, "leave", nn(n), (function() {
                                e.remove()
                            }
                            ))
                        },
                        addClass: function(e, n, i) {
                            return (i = nn(i)).addClass = en(i.addclass, n),
                            t.push(e, "addClass", i)
                        },
                        removeClass: function(e, n, i) {
                            return (i = nn(i)).removeClass = en(i.removeClass, n),
                            t.push(e, "removeClass", i)
                        },
                        setClass: function(e, n, i, r) {
                            return (r = nn(r)).addClass = en(r.addClass, n),
                            r.removeClass = en(r.removeClass, i),
                            t.push(e, "setClass", r)
                        },
                        animate: function(e, n, i, r, o) {
                            return (o = nn(o)).from = o.from ? _(o.from, n) : n,
                            o.to = o.to ? _(o.to, i) : i,
                            r = r || "ng-inline-animate",
                            o.tempClasses = en(o.tempClasses, r),
                            t.push(e, "animate", o)
                        }
                    }
                }
                ]
            }
            ]
              , sn = function() {
                this.$get = ["$$rAF", function(t) {
                    var e = [];
                    function n(n) {
                        e.push(n),
                        e.length > 1 || t((function() {
                            for (var t = 0; t < e.length; t++)
                                e[t]();
                            e = []
                        }
                        ))
                    }
                    return function() {
                        var t = !1;
                        return n((function() {
                            t = !0
                        }
                        )),
                        function(e) {
                            t ? e() : n(e)
                        }
                    }
                }
                ]
            }
              , cn = function() {
                this.$get = ["$q", "$sniffer", "$$animateAsyncRun", "$$isDocumentHidden", "$timeout", function(t, e, n, i, r) {
                    function o(t) {
                        this.setHost(t);
                        var e = n();
                        this._doneCallbacks = [],
                        this._tick = function(t) {
                            i() ? function(t) {
                                r(t, 0, !1)
                            }(t) : e(t)
                        }
                        ,
                        this._state = 0
                    }
                    return o.chain = function(t, e) {
                        var n = 0;
                        !function i() {
                            if (n === t.length)
                                return void e(!0);
                            t[n]((function(t) {
                                !1 !== t ? (n++,
                                i()) : e(!1)
                            }
                            ))
                        }()
                    }
                    ,
                    o.all = function(t, e) {
                        var n = 0
                          , i = !0;
                        function r(r) {
                            i = i && r,
                            ++n === t.length && e(i)
                        }
                        M(t, (function(t) {
                            t.done(r)
                        }
                        ))
                    }
                    ,
                    o.prototype = {
                        setHost: function(t) {
                            this.host = t || {}
                        },
                        done: function(t) {
                            2 === this._state ? t() : this._doneCallbacks.push(t)
                        },
                        progress: R,
                        getPromise: function() {
                            if (!this.promise) {
                                var e = this;
                                this.promise = t((function(t, n) {
                                    e.done((function(e) {
                                        !1 === e ? n() : t()
                                    }
                                    ))
                                }
                                ))
                            }
                            return this.promise
                        },
                        then: function(t, e) {
                            return this.getPromise().then(t, e)
                        },
                        catch: function(t) {
                            return this.getPromise().catch(t)
                        },
                        finally: function(t) {
                            return this.getPromise().finally(t)
                        },
                        pause: function() {
                            this.host.pause && this.host.pause()
                        },
                        resume: function() {
                            this.host.resume && this.host.resume()
                        },
                        end: function() {
                            this.host.end && this.host.end(),
                            this._resolve(!0)
                        },
                        cancel: function() {
                            this.host.cancel && this.host.cancel(),
                            this._resolve(!1)
                        },
                        complete: function(t) {
                            var e = this;
                            0 === e._state && (e._state = 1,
                            e._tick((function() {
                                e._resolve(t)
                            }
                            )))
                        },
                        _resolve: function(t) {
                            2 !== this._state && (M(this._doneCallbacks, (function(e) {
                                e(t)
                            }
                            )),
                            this._doneCallbacks.length = 0,
                            this._state = 2)
                        }
                    },
                    o
                }
                ]
            }
              , ln = function() {
                this.$get = ["$$rAF", "$q", "$$AnimateRunner", function(t, e, n) {
                    return function(e, i) {
                        var r = i || {};
                        r.$$prepared || (r = at(r)),
                        r.cleanupStyles && (r.from = r.to = null),
                        r.from && (e.css(r.from),
                        r.from = null);
                        var o, a = new n;
                        return {
                            start: s,
                            end: s
                        };
                        function s() {
                            return t((function() {
                                !function() {
                                    r.addClass && (e.addClass(r.addClass),
                                    r.addClass = null);
                                    r.removeClass && (e.removeClass(r.removeClass),
                                    r.removeClass = null);
                                    r.to && (e.css(r.to),
                                    r.to = null)
                                }(),
                                o || a.complete(),
                                o = !0
                            }
                            )),
                            a
                        }
                    }
                }
                ]
            };
            function un(t, e, n, i, r) {
                var o = this
                  , a = t.location
                  , c = t.history
                  , l = t.setTimeout
                  , u = t.clearTimeout
                  , d = {}
                  , p = r(n);
                o.isMock = !1,
                o.$$completeOutstandingRequest = p.completeTask,
                o.$$incOutstandingRequestCount = p.incTaskCount,
                o.notifyWhenNoOutstandingRequests = p.notifyWhenNoPendingTasks;
                var h, f, m = a.href, g = e.find("base"), v = null, y = i.history ? function() {
                    try {
                        return c.state
                    } catch (t) {}
                }
                : R;
                E(),
                o.url = function(e, n, r) {
                    if (V(r) && (r = null),
                    a !== t.location && (a = t.location),
                    c !== t.history && (c = t.history),
                    e) {
                        var s = f === r;
                        if (e = lr(e).href,
                        m === e && (!i.history || s))
                            return o;
                        var l = m && ci(m) === ci(e);
                        return m = e,
                        f = r,
                        !i.history || l && s ? (l || (v = e),
                        n ? a.replace(e) : l ? a.hash = function(t) {
                            var e = t.indexOf("#");
                            return -1 === e ? "" : t.substr(e)
                        }(e) : a.href = e,
                        a.href !== e && (v = e)) : (c[n ? "replaceState" : "pushState"](r, "", e),
                        E()),
                        v && (v = e),
                        o
                    }
                    return function(t) {
                        return t.replace(/#$/, "")
                    }(v || a.href)
                }
                ,
                o.state = function() {
                    return h
                }
                ;
                var b = []
                  , w = !1;
                function S() {
                    v = null,
                    C()
                }
                var x = null;
                function E() {
                    ct(h = V(h = y()) ? null : h, x) && (h = x),
                    x = h,
                    f = h
                }
                function C() {
                    var t = f;
                    E(),
                    m === o.url() && t === h || (m = o.url(),
                    f = h,
                    M(b, (function(t) {
                        t(o.url(), h)
                    }
                    )))
                }
                o.onUrlChange = function(e) {
                    return w || (i.history && s(t).on("popstate", S),
                    s(t).on("hashchange", S),
                    w = !0),
                    b.push(e),
                    e
                }
                ,
                o.$$applicationDestroyed = function() {
                    s(t).off("hashchange popstate", S)
                }
                ,
                o.$$checkUrlChange = C,
                o.baseHref = function() {
                    var t = g.attr("href");
                    return t ? t.replace(/^(https?:)?\/\/[^/]*/, "") : ""
                }
                ,
                o.defer = function(t, e, n) {
                    var i;
                    return e = e || 0,
                    n = n || p.DEFAULT_TASK_TYPE,
                    p.incTaskCount(n),
                    i = l((function() {
                        delete d[i],
                        p.completeTask(t, n)
                    }
                    ), e),
                    d[i] = n,
                    i
                }
                ,
                o.defer.cancel = function(t) {
                    if (d.hasOwnProperty(t)) {
                        var e = d[t];
                        return delete d[t],
                        u(t),
                        p.completeTask(R, e),
                        !0
                    }
                    return !1
                }
            }
            function dn() {
                this.$get = ["$window", "$log", "$sniffer", "$document", "$$taskTrackerFactory", function(t, e, n, i, r) {
                    return new un(t,i,e,n,r)
                }
                ]
            }
            function pn() {
                this.$get = function() {
                    var t = {};
                    function e(e, n) {
                        if (e in t)
                            throw o("$cacheFactory")("iid", "CacheId '{0}' is already taken!", e);
                        var i = 0
                          , r = _({}, n, {
                            id: e
                        })
                          , a = Ut()
                          , s = n && n.capacity || Number.MAX_VALUE
                          , c = Ut()
                          , l = null
                          , u = null;
                        return t[e] = {
                            put: function(t, e) {
                                if (!V(e)) {
                                    if (s < Number.MAX_VALUE)
                                        d(c[t] || (c[t] = {
                                            key: t
                                        }));
                                    return t in a || i++,
                                    a[t] = e,
                                    i > s && this.remove(u.key),
                                    e
                                }
                            },
                            get: function(t) {
                                if (s < Number.MAX_VALUE) {
                                    var e = c[t];
                                    if (!e)
                                        return;
                                    d(e)
                                }
                                return a[t]
                            },
                            remove: function(t) {
                                if (s < Number.MAX_VALUE) {
                                    var e = c[t];
                                    if (!e)
                                        return;
                                    e === l && (l = e.p),
                                    e === u && (u = e.n),
                                    p(e.n, e.p),
                                    delete c[t]
                                }
                                t in a && (delete a[t],
                                i--)
                            },
                            removeAll: function() {
                                a = Ut(),
                                i = 0,
                                c = Ut(),
                                l = u = null
                            },
                            destroy: function() {
                                a = null,
                                r = null,
                                c = null,
                                delete t[e]
                            },
                            info: function() {
                                return _({}, r, {
                                    size: i
                                })
                            }
                        };
                        function d(t) {
                            t !== l && (u ? u === t && (u = t.n) : u = t,
                            p(t.n, t.p),
                            p(t, l),
                            (l = t).n = null)
                        }
                        function p(t, e) {
                            t !== e && (t && (t.p = e),
                            e && (e.n = t))
                        }
                    }
                    return e.info = function() {
                        var e = {};
                        return M(t, (function(t, n) {
                            e[n] = t.info()
                        }
                        )),
                        e
                    }
                    ,
                    e.get = function(e) {
                        return t[e]
                    }
                    ,
                    e
                }
            }
            function hn() {
                this.$get = ["$cacheFactory", function(t) {
                    return t("templates")
                }
                ]
            }
            var fn = o("$compile");
            var mn = new function() {}
            ;
            function gn(t, n) {
                var i = {}
                  , r = /^\s*directive:\s*([\w-]+)\s+(.*)$/
                  , o = /(([\w-]+)(?::([^;]+))?;?)/
                  , c = function(t) {
                    var e, n = {}, i = t.split(",");
                    for (e = 0; e < i.length; e++)
                        n[i[e]] = !0;
                    return n
                }("ngSrc,ngSrcset,src,srcset")
                  , l = /^(?:(\^\^?)?(\?)?(\^\^?)?)?/
                  , u = /^(on[a-z]+|formaction)$/
                  , h = Ut();
                function f(t, e, n) {
                    var i = /^([@&]|[=<](\*?))(\??)\s*([\w$]*)$/
                      , r = Ut();
                    return M(t, (function(t, o) {
                        if ((t = t.trim())in h)
                            r[o] = h[t];
                        else {
                            var a = t.match(i);
                            if (!a)
                                throw fn("iscp", "Invalid {3} for directive '{0}'. Definition: {... {1}: '{2}' ...}", e, o, t, n ? "controller bindings definition" : "isolate scope definition");
                            r[o] = {
                                mode: a[1][0],
                                collection: "*" === a[2],
                                optional: "?" === a[3],
                                attrName: a[4] || o
                            },
                            a[4] && (h[t] = r[o])
                        }
                    }
                    )),
                    r
                }
                function m(t, e) {
                    var n = {
                        isolateScope: null,
                        bindToController: null
                    };
                    if (U(t.scope) && (!0 === t.bindToController ? (n.bindToController = f(t.scope, e, !0),
                    n.isolateScope = {}) : n.isolateScope = f(t.scope, e, !1)),
                    U(t.bindToController) && (n.bindToController = f(t.bindToController, e, !0)),
                    n.bindToController && !t.controller)
                        throw fn("noctrl", "Cannot bind to controller without directive '{0}'s controller.", e);
                    return n
                }
                this.directive = function e(n, r) {
                    return Nt(n, "name"),
                    Vt(n, "directive"),
                    z(n) ? (!function(t) {
                        var e = t.charAt(0);
                        if (!e || e !== p(e))
                            throw fn("baddir", "Directive/Component name '{0}' is invalid. The first character must be a lowercase letter", t);
                        if (t !== t.trim())
                            throw fn("baddir", "Directive/Component name '{0}' is invalid. The name should not contain leading or trailing whitespaces", t)
                    }(n),
                    Nt(r, "directiveFactory"),
                    i.hasOwnProperty(n) || (i[n] = [],
                    t.factory(n + "Directive", ["$injector", "$exceptionHandler", function(t, e) {
                        var r = [];
                        return M(i[n], (function(i, o) {
                            try {
                                var a = t.invoke(i);
                                X(a) ? a = {
                                    compile: N(a)
                                } : !a.compile && a.link && (a.compile = N(a.link)),
                                a.priority = a.priority || 0,
                                a.index = o,
                                a.name = a.name || n,
                                a.require = function(t) {
                                    var e = t.require || t.controller && t.name;
                                    return !W(e) && U(e) && M(e, (function(t, n) {
                                        var i = t.match(l);
                                        t.substring(i[0].length) || (e[n] = i[0] + n)
                                    }
                                    )),
                                    e
                                }(a),
                                a.restrict = function(t, e) {
                                    if (t && (!z(t) || !/[EACM]/.test(t)))
                                        throw fn("badrestrict", "Restrict property '{0}' of directive '{1}' is invalid", t, e);
                                    return t || "EA"
                                }(a.restrict, n),
                                a.$$moduleName = i.$$moduleName,
                                r.push(a)
                            } catch (t) {
                                e(t)
                            }
                        }
                        )),
                        r
                    }
                    ])),
                    i[n].push(r)) : M(n, C(e)),
                    this
                }
                ,
                this.component = function t(e, n) {
                    if (!z(e))
                        return M(e, C(ht(this, t))),
                        this;
                    var i = n.controller || function() {}
                    ;
                    function r(t) {
                        function e(e) {
                            return X(e) || W(e) ? function(n, i) {
                                return t.invoke(e, this, {
                                    $element: n,
                                    $attrs: i
                                })
                            }
                            : e
                        }
                        var r = n.template || n.templateUrl ? n.template : ""
                          , o = {
                            controller: i,
                            controllerAs: Cn(n.controller) || n.controllerAs || "$ctrl",
                            template: e(r),
                            templateUrl: e(n.templateUrl),
                            transclude: n.transclude,
                            scope: {},
                            bindToController: n.bindings || {},
                            restrict: "E",
                            require: n.require
                        };
                        return M(n, (function(t, e) {
                            "$" === e.charAt(0) && (o[e] = t)
                        }
                        )),
                        o
                    }
                    return M(n, (function(t, e) {
                        "$" === e.charAt(0) && (r[e] = t,
                        X(i) && (i[e] = t))
                    }
                    )),
                    r.$inject = ["$injector"],
                    this.directive(e, r)
                }
                ,
                this.aHrefSanitizationWhitelist = function(t) {
                    return F(t) ? (n.aHrefSanitizationWhitelist(t),
                    this) : n.aHrefSanitizationWhitelist()
                }
                ,
                this.imgSrcSanitizationWhitelist = function(t) {
                    return F(t) ? (n.imgSrcSanitizationWhitelist(t),
                    this) : n.imgSrcSanitizationWhitelist()
                }
                ;
                var g = !0;
                this.debugInfoEnabled = function(t) {
                    return F(t) ? (g = t,
                    this) : g
                }
                ;
                var y = !1;
                this.strictComponentBindingsEnabled = function(t) {
                    return F(t) ? (y = t,
                    this) : y
                }
                ;
                var b = 10;
                this.onChangesTtl = function(t) {
                    return arguments.length ? (b = t,
                    this) : b
                }
                ;
                var w = !0;
                this.commentDirectivesEnabled = function(t) {
                    return arguments.length ? (w = t,
                    this) : w
                }
                ;
                var S = !0;
                this.cssClassDirectivesEnabled = function(t) {
                    return arguments.length ? (S = t,
                    this) : S
                }
                ;
                var x = Ut();
                this.addPropertySecurityContext = function(t, e, n) {
                    var i = t.toLowerCase() + "|" + e.toLowerCase();
                    if (i in x && x[i] !== n)
                        throw fn("ctxoverride", "Property context '{0}.{1}' already set to '{2}', cannot override to '{3}'.", t, e, x[i], n);
                    return x[i] = n,
                    this
                }
                ,
                function() {
                    function t(t, e) {
                        M(e, (function(e) {
                            x[e.toLowerCase()] = t
                        }
                        ))
                    }
                    t(Wi.HTML, ["iframe|srcdoc", "*|innerHTML", "*|outerHTML"]),
                    t(Wi.CSS, ["*|style"]),
                    t(Wi.URL, ["area|href", "area|ping", "a|href", "a|ping", "blockquote|cite", "body|background", "del|cite", "input|src", "ins|cite", "q|cite"]),
                    t(Wi.MEDIA_URL, ["audio|src", "img|src", "img|srcset", "source|src", "source|srcset", "track|src", "video|src", "video|poster"]),
                    t(Wi.RESOURCE_URL, ["*|formAction", "applet|code", "applet|codebase", "base|href", "embed|src", "frame|src", "form|action", "head|profile", "html|manifest", "iframe|src", "link|href", "media|src", "object|codebase", "object|data", "script|src"])
                }(),
                this.$get = ["$injector", "$interpolate", "$exceptionHandler", "$templateRequest", "$parse", "$controller", "$rootScope", "$sce", "$animate", function(t, n, h, f, E, C, A, T, O) {
                    var P, I = /^\w/, k = e.document.createElement("div"), N = w, j = S, F = b;
                    function B() {
                        try {
                            if (!--F)
                                throw P = void 0,
                                fn("infchng", "{0} $onChanges() iterations reached. Aborting!\n", b);
                            A.$apply((function() {
                                for (var t = 0, e = P.length; t < e; ++t)
                                    try {
                                        P[t]()
                                    } catch (t) {
                                        h(t)
                                    }
                                P = void 0
                            }
                            ))
                        } finally {
                            F++
                        }
                    }
                    function G(t, e) {
                        if (!t)
                            return t;
                        if (!z(t))
                            throw fn("srcset", 'Can\'t pass trusted values to `{0}`: "{1}"', e, t.toString());
                        for (var n = "", i = tt(t), r = /\s/.test(i) ? /(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/ : /(,)/, o = i.split(r), a = Math.floor(o.length / 2), s = 0; s < a; s++) {
                            var c = 2 * s;
                            n += T.getTrustedMediaUrl(tt(o[c])),
                            n += " " + tt(o[c + 1])
                        }
                        var l = tt(o[2 * s]).split(/\s/);
                        return n += T.getTrustedMediaUrl(tt(l[0])),
                        2 === l.length && (n += " " + tt(l[1])),
                        n
                    }
                    function H(t, e) {
                        if (e) {
                            var n, i, r, o = Object.keys(e);
                            for (n = 0,
                            i = o.length; n < i; n++)
                                this[r = o[n]] = e[r]
                        } else
                            this.$attr = {};
                        this.$$element = t
                    }
                    function Y(t, e) {
                        try {
                            t.addClass(e)
                        } catch (t) {}
                    }
                    H.prototype = {
                        $normalize: wn,
                        $addClass: function(t) {
                            t && t.length > 0 && O.addClass(this.$$element, t)
                        },
                        $removeClass: function(t) {
                            t && t.length > 0 && O.removeClass(this.$$element, t)
                        },
                        $updateClass: function(t, e) {
                            var n = Sn(t, e);
                            n && n.length && O.addClass(this.$$element, n);
                            var i = Sn(e, t);
                            i && i.length && O.removeClass(this.$$element, i)
                        },
                        $set: function(t, e, n, i) {
                            var r = Le(this.$$element[0], t)
                              , o = function(t) {
                                return Re[t]
                            }(t)
                              , a = t;
                            r ? (this.$$element.prop(t, e),
                            i = r) : o && (this[o] = e,
                            a = o),
                            this[t] = e,
                            i ? this.$attr[t] = i : (i = this.$attr[t]) || (this.$attr[t] = i = Dt(t, "-")),
                            "img" === it(this.$$element) && "srcset" === t && (this[t] = e = G(e, "$set('srcset', value)")),
                            !1 !== n && (null === e || V(e) ? this.$$element.removeAttr(i) : I.test(i) ? r && !1 === e ? this.$$element.removeAttr(i) : this.$$element.attr(i, e) : function(t, e, n) {
                                k.innerHTML = "<span " + e + ">";
                                var i = k.firstChild.attributes
                                  , r = i[0];
                                i.removeNamedItem(r.name),
                                r.value = n,
                                t.attributes.setNamedItem(r)
                            }(this.$$element[0], i, e));
                            var s = this.$$observers;
                            s && M(s[a], (function(t) {
                                try {
                                    t(e)
                                } catch (t) {
                                    h(t)
                                }
                            }
                            ))
                        },
                        $observe: function(t, e) {
                            var n = this
                              , i = n.$$observers || (n.$$observers = Ut())
                              , r = i[t] || (i[t] = []);
                            return r.push(e),
                            A.$evalAsync((function() {
                                r.$$inter || !n.hasOwnProperty(t) || V(n[t]) || e(n[t])
                            }
                            )),
                            function() {
                                ot(r, e)
                            }
                        }
                    };
                    var K = n.startSymbol()
                      , Q = n.endSymbol()
                      , $ = "{{" === K && "}}" === Q ? L : function(t) {
                        return t.replace(/\{\{/g, K).replace(/}}/g, Q)
                    }
                      , et = /^ng(Attr|Prop|On)([A-Z].*)$/
                      , nt = /^(.+)Start$/;
                    return rt.$$addBindingInfo = g ? function(t, e) {
                        var n = t.data("$binding") || [];
                        W(e) ? n = n.concat(e) : n.push(e),
                        t.data("$binding", n)
                    }
                    : R,
                    rt.$$addBindingClass = g ? function(t) {
                        Y(t, "ng-binding")
                    }
                    : R,
                    rt.$$addScopeInfo = g ? function(t, e, n, i) {
                        var r = n ? i ? "$isolateScopeNoTemplate" : "$isolateScope" : "$scope";
                        t.data(r, e)
                    }
                    : R,
                    rt.$$addScopeClass = g ? function(t, e) {
                        Y(t, e ? "ng-isolate-scope" : "ng-scope")
                    }
                    : R,
                    rt.$$createComment = function(t, n) {
                        var i = "";
                        return g && (i = " " + (t || "") + ": ",
                        n && (i += n + " ")),
                        e.document.createComment(i)
                    }
                    ,
                    rt;
                    function rt(t, e, n, i, r) {
                        t instanceof s || (t = s(t));
                        var o = at(t, e, t, n, i, r);
                        rt.$$addScopeClass(t);
                        var a = null;
                        return function(e, n, i) {
                            if (!t)
                                throw fn("multilink", "This element has already been linked.");
                            Nt(e, "scope"),
                            r && r.needsNewScope && (e = e.$parent.$new());
                            var c, l, u, d = (i = i || {}).parentBoundTranscludeFn, p = i.transcludeControllers, h = i.futureParentElement;
                            if (d && d.$$boundTransclude && (d = d.$$boundTransclude),
                            a || (l = (c = h) && c[0],
                            a = l && "foreignobject" !== it(l) && v.call(l).match(/SVG/) ? "svg" : "html"),
                            u = "html" !== a ? s(Tt(a, s("<div></div>").append(t).html())) : n ? Ie.clone.call(t) : t,
                            p)
                                for (var f in p)
                                    u.data("$" + f + "Controller", p[f].instance);
                            return rt.$$addScopeInfo(u, e),
                            n && n(u, e),
                            o && o(e, u, u, d),
                            n || (t = o = null),
                            u
                        }
                    }
                    function at(t, e, n, i, r, o) {
                        for (var c, l, u, d, p, h, f, m = [], g = W(t) || t instanceof s, v = 0; v < t.length; v++)
                            c = new H,
                            11 === a && lt(t, v, g),
                            (u = (l = dt(t[v], [], c, 0 === v ? i : void 0, r)).length ? vt(l, t[v], c, e, n, null, [], [], o) : null) && u.scope && rt.$$addScopeClass(c.$$element),
                            p = u && u.terminal || !(d = t[v].childNodes) || !d.length ? null : at(d, u ? (u.transcludeOnThisElement || !u.templateOnThisElement) && u.transclude : e),
                            (u || p) && (m.push(v, u, p),
                            h = !0,
                            f = f || u),
                            o = null;
                        return h ? function(t, n, i, r) {
                            var o, a, c, l, u, d, p, h, g;
                            if (f) {
                                var v = n.length;
                                for (g = new Array(v),
                                u = 0; u < m.length; u += 3)
                                    p = m[u],
                                    g[p] = n[p]
                            } else
                                g = n;
                            for (u = 0,
                            d = m.length; u < d; )
                                c = g[m[u++]],
                                o = m[u++],
                                a = m[u++],
                                o ? (o.scope ? (l = t.$new(),
                                rt.$$addScopeInfo(s(c), l)) : l = t,
                                h = o.transcludeOnThisElement ? ut(t, o.transclude, r) : !o.templateOnThisElement && r ? r : !r && e ? ut(t, e) : null,
                                o(a, l, c, i, h)) : a && a(t, c.childNodes, void 0, r)
                        }
                        : null
                    }
                    function lt(t, e, n) {
                        var i, r = t[e], o = r.parentNode;
                        if (r.nodeType === zt)
                            for (; (i = o ? r.nextSibling : t[e + 1]) && i.nodeType === zt; )
                                r.nodeValue = r.nodeValue + i.nodeValue,
                                i.parentNode && i.parentNode.removeChild(i),
                                n && i === t[e + 1] && t.splice(e + 1, 1)
                    }
                    function ut(t, e, n) {
                        function i(i, r, o, a, s) {
                            return i || ((i = t.$new(!1, s)).$$transcluded = !0),
                            e(i, r, {
                                parentBoundTranscludeFn: n,
                                transcludeControllers: o,
                                futureParentElement: a
                            })
                        }
                        var r = i.$$slots = Ut();
                        for (var o in e.$$slots)
                            e.$$slots[o] ? r[o] = ut(t, e.$$slots[o], n) : r[o] = null;
                        return i
                    }
                    function dt(t, e, i, a, s) {
                        var c, l, u, d = t.nodeType, p = i.$attr;
                        switch (d) {
                        case 1:
                            wt(e, wn(l = it(t)), "E", a, s);
                            for (var h, f, m, g, v, y = t.attributes, b = 0, w = y && y.length; b < w; b++) {
                                var S, x = !1, M = !1, E = !1, C = !1, A = !1;
                                f = (h = y[b]).name,
                                g = h.value,
                                (v = (m = wn(f.toLowerCase())).match(et)) ? (E = "Attr" === v[1],
                                C = "Prop" === v[1],
                                A = "On" === v[1],
                                f = f.replace(yn, "").toLowerCase().substr(4 + v[1].length).replace(/_(.)/g, (function(t, e) {
                                    return e.toUpperCase()
                                }
                                ))) : (S = m.match(nt)) && xt(S[1]) && (x = f,
                                M = f.substr(0, f.length - 5) + "end",
                                f = f.substr(0, f.length - 6)),
                                C || A ? (i[m] = g,
                                p[m] = h.name,
                                C ? _t(t, e, m, f) : Pt(e, m, f)) : (p[m = wn(f.toLowerCase())] = f,
                                !E && i.hasOwnProperty(m) || (i[m] = g,
                                Le(t, m) && (i[m] = !0)),
                                It(t, e, g, m, E),
                                wt(e, m, "A", a, s, x, M))
                            }
                            if ("input" === l && "hidden" === t.getAttribute("type") && t.setAttribute("autocomplete", "off"),
                            !j)
                                break;
                            if (U(u = t.className) && (u = u.animVal),
                            z(u) && "" !== u)
                                for (; c = o.exec(u); )
                                    wt(e, m = wn(c[2]), "C", a, s) && (i[m] = tt(c[3])),
                                    u = u.substr(c.index + c[0].length);
                            break;
                        case zt:
                            !function(t, e) {
                                var i = n(e, !0);
                                i && t.push({
                                    priority: 0,
                                    compile: function(t) {
                                        var e = t.parent()
                                          , n = !!e.length;
                                        return n && rt.$$addBindingClass(e),
                                        function(t, e) {
                                            var r = e.parent();
                                            n || rt.$$addBindingClass(r),
                                            rt.$$addBindingInfo(r, i.expressions),
                                            t.$watch(i, (function(t) {
                                                e[0].nodeValue = t
                                            }
                                            ))
                                        }
                                    }
                                })
                            }(e, t.nodeValue);
                            break;
                        case 8:
                            if (!N)
                                break;
                            !function(t, e, n, i, o) {
                                try {
                                    var a = r.exec(t.nodeValue);
                                    if (a) {
                                        var s = wn(a[1]);
                                        wt(e, s, "M", i, o) && (n[s] = tt(a[2]))
                                    }
                                } catch (t) {}
                            }(t, e, i, a, s)
                        }
                        return e.sort(Ct),
                        e
                    }
                    function ft(t, e, n) {
                        var i = []
                          , r = 0;
                        if (e && t.hasAttribute && t.hasAttribute(e))
                            do {
                                if (!t)
                                    throw fn("uterdir", "Unterminated attribute, found '{0}' but no matching '{1}' found.", e, n);
                                1 === t.nodeType && (t.hasAttribute(e) && r++,
                                t.hasAttribute(n) && r--),
                                i.push(t),
                                t = t.nextSibling
                            } while (r > 0);
                        else
                            i.push(t);
                        return s(i)
                    }
                    function mt(t, e, n) {
                        return function(i, r, o, a, s) {
                            return r = ft(r[0], e, n),
                            t(i, r, o, a, s)
                        }
                    }
                    function gt(t, e, n, i, r, o) {
                        var a;
                        return t ? rt(e, n, i, r, o) : function() {
                            return a || (a = rt(e, n, i, r, o),
                            e = n = o = null),
                            a.apply(this, arguments)
                        }
                    }
                    function vt(t, n, i, r, o, a, c, l, u) {
                        u = u || {};
                        for (var d, p, f, m, g, v = -Number.MAX_VALUE, y = u.newScopeDirective, b = u.controllerDirectives, w = u.newIsolateScopeDirective, S = u.templateDirective, x = u.nonTlbTranscludeDirective, E = !1, A = !1, T = u.hasElementTranscludeDirective, O = i.$$element = s(n), P = a, I = r, k = !1, D = !1, R = 0, L = t.length; R < L; R++) {
                            var N = (d = t[R]).$$start
                              , j = d.$$end;
                            if (N && (O = ft(n, N, j)),
                            f = void 0,
                            v > d.priority)
                                break;
                            if ((g = d.scope) && (d.templateUrl || (U(g) ? (At("new/isolated scope", w || y, d, O),
                            w = d) : At("new/isolated scope", w, d, O)),
                            y = y || d),
                            p = d.name,
                            !k && (d.replace && (d.templateUrl || d.template) || d.transclude && !d.$$tlb)) {
                                for (var F, B = R + 1; F = t[B++]; )
                                    if (F.transclude && !F.$$tlb || F.replace && (F.templateUrl || F.template)) {
                                        D = !0;
                                        break
                                    }
                                k = !0
                            }
                            if (!d.templateUrl && d.controller && (b = b || Ut(),
                            At("'" + p + "' controller", b[p], d, O),
                            b[p] = d),
                            g = d.transclude)
                                if (E = !0,
                                d.$$tlb || (At("transclusion", x, d, O),
                                x = d),
                                "element" === g)
                                    T = !0,
                                    v = d.priority,
                                    f = O,
                                    O = i.$$element = s(rt.$$createComment(p, i[p])),
                                    n = O[0],
                                    kt(o, pt(f), n),
                                    I = gt(D, f, r, v, P && P.name, {
                                        nonTlbTranscludeDirective: x
                                    });
                                else {
                                    var z = Ut();
                                    if (U(g)) {
                                        f = e.document.createDocumentFragment();
                                        var G = Ut()
                                          , q = Ut();
                                        for (var Y in M(g, (function(t, e) {
                                            var n = "?" === t.charAt(0);
                                            t = n ? t.substring(1) : t,
                                            G[t] = e,
                                            z[e] = null,
                                            q[e] = n
                                        }
                                        )),
                                        M(O.contents(), (function(t) {
                                            var n = G[wn(it(t))];
                                            n ? (q[n] = !0,
                                            z[n] = z[n] || e.document.createDocumentFragment(),
                                            z[n].appendChild(t)) : f.appendChild(t)
                                        }
                                        )),
                                        M(q, (function(t, e) {
                                            if (!t)
                                                throw fn("reqslot", "Required transclusion slot `{0}` was not filled.", e)
                                        }
                                        )),
                                        z)
                                            if (z[Y]) {
                                                var K = s(z[Y].childNodes);
                                                z[Y] = gt(D, K, r)
                                            }
                                        f = s(f.childNodes)
                                    } else
                                        f = s(fe(n)).contents();
                                    O.empty(),
                                    (I = gt(D, f, r, void 0, void 0, {
                                        needsNewScope: d.$$isolateScope || d.$$newScope
                                    })).$$slots = z
                                }
                            if (d.template)
                                if (A = !0,
                                At("template", S, d, O),
                                S = d,
                                g = X(d.template) ? d.template(O, i) : d.template,
                                g = $(g),
                                d.replace) {
                                    if (P = d,
                                    f = le(g) ? [] : xn(Tt(d.templateNamespace, tt(g))),
                                    n = f[0],
                                    1 !== f.length || 1 !== n.nodeType)
                                        throw fn("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", p, "");
                                    kt(o, O, n);
                                    var J = {
                                        $attr: {}
                                    }
                                      , Q = dt(n, [], J)
                                      , et = t.splice(R + 1, t.length - (R + 1));
                                    (w || y) && bt(Q, w, y),
                                    t = t.concat(Q).concat(et),
                                    Mt(i, J),
                                    L = t.length
                                } else
                                    O.html(g);
                            if (d.templateUrl)
                                A = !0,
                                At("template", S, d, O),
                                S = d,
                                d.replace && (P = d),
                                at = Et(t.splice(R, t.length - R), O, i, o, E && I, c, l, {
                                    controllerDirectives: b,
                                    newScopeDirective: y !== d && y,
                                    newIsolateScopeDirective: w,
                                    templateDirective: S,
                                    nonTlbTranscludeDirective: x
                                }),
                                L = t.length;
                            else if (d.compile)
                                try {
                                    m = d.compile(O, i, I);
                                    var nt = d.$$originalDirective || d;
                                    X(m) ? ot(null, ht(nt, m), N, j) : m && ot(ht(nt, m.pre), ht(nt, m.post), N, j)
                                } catch (t) {
                                    h(t, St(O))
                                }
                            d.terminal && (at.terminal = !0,
                            v = Math.max(v, d.priority))
                        }
                        return at.scope = y && !0 === y.scope,
                        at.transcludeOnThisElement = E,
                        at.templateOnThisElement = A,
                        at.transclude = I,
                        u.hasElementTranscludeDirective = T,
                        at;
                        function ot(t, e, n, i) {
                            t && (n && (t = mt(t, n, i)),
                            t.require = d.require,
                            t.directiveName = p,
                            (w === d || d.$$isolateScope) && (t = Rt(t, {
                                isolateScope: !0
                            })),
                            c.push(t)),
                            e && (n && (e = mt(e, n, i)),
                            e.require = d.require,
                            e.directiveName = p,
                            (w === d || d.$$isolateScope) && (e = Rt(e, {
                                isolateScope: !0
                            })),
                            l.push(e))
                        }
                        function at(t, e, r, o, a) {
                            var u, d, p, f, m, g, v, x, E, A;
                            for (var O in n === r ? (E = i,
                            x = i.$$element) : E = new H(x = s(r),i),
                            m = e,
                            w ? f = e.$new(!0) : y && (m = e.$parent),
                            a && ((v = function(t, e, n, i) {
                                var r;
                                Z(t) || (i = n,
                                n = e,
                                e = t,
                                t = void 0);
                                T && (r = g);
                                n || (n = T ? x.parent() : x);
                                if (!i)
                                    return a(t, e, r, n, D);
                                var o = a.$$slots[i];
                                if (o)
                                    return o(t, e, r, n, D);
                                if (V(o))
                                    throw fn("noslot", 'No parent directive that requires a transclusion with slot name "{0}". Element: {1}', i, St(x))
                            }
                            ).$$boundTransclude = a,
                            v.isSlotFilled = function(t) {
                                return !!a.$$slots[t]
                            }
                            ),
                            b && (g = function(t, e, n, i, r, o, a) {
                                var s = Ut();
                                for (var c in i) {
                                    var l = i[c]
                                      , u = {
                                        $scope: l === a || l.$$isolateScope ? r : o,
                                        $element: t,
                                        $attrs: e,
                                        $transclude: n
                                    }
                                      , d = l.controller;
                                    "@" === d && (d = e[l.name]);
                                    var p = C(d, u, !0, l.controllerAs);
                                    s[l.name] = p,
                                    t.data("$" + l.name + "Controller", p.instance)
                                }
                                return s
                            }(x, E, v, b, f, e, w)),
                            w && (rt.$$addScopeInfo(x, f, !0, !(S && (S === w || S === w.$$originalDirective))),
                            rt.$$addScopeClass(x, !0),
                            f.$$isolateBindings = w.$$isolateBindings,
                            (A = Vt(e, E, f, f.$$isolateBindings, w)).removeWatches && f.$on("$destroy", A.removeWatches)),
                            g) {
                                var P = b[O]
                                  , I = g[O]
                                  , k = P.$$bindings.bindToController;
                                I.instance = I(),
                                x.data("$" + P.name + "Controller", I.instance),
                                I.bindingInfo = Vt(m, E, I.instance, k, P)
                            }
                            for (M(b, (function(t, e) {
                                var n = t.require;
                                t.bindToController && !W(n) && U(n) && _(g[e].instance, yt(e, n, x, g))
                            }
                            )),
                            M(g, (function(t) {
                                var e = t.instance;
                                if (X(e.$onChanges))
                                    try {
                                        e.$onChanges(t.bindingInfo.initialChanges)
                                    } catch (t) {
                                        h(t)
                                    }
                                if (X(e.$onInit))
                                    try {
                                        e.$onInit()
                                    } catch (t) {
                                        h(t)
                                    }
                                X(e.$doCheck) && (m.$watch((function() {
                                    e.$doCheck()
                                }
                                )),
                                e.$doCheck()),
                                X(e.$onDestroy) && m.$on("$destroy", (function() {
                                    e.$onDestroy()
                                }
                                ))
                            }
                            )),
                            u = 0,
                            d = c.length; u < d; u++)
                                Lt(p = c[u], p.isolateScope ? f : e, x, E, p.require && yt(p.directiveName, p.require, x, g), v);
                            var D = e;
                            for (w && (w.template || null === w.templateUrl) && (D = f),
                            t && t(D, r.childNodes, void 0, a),
                            u = l.length - 1; u >= 0; u--)
                                Lt(p = l[u], p.isolateScope ? f : e, x, E, p.require && yt(p.directiveName, p.require, x, g), v);
                            M(g, (function(t) {
                                var e = t.instance;
                                X(e.$postLink) && e.$postLink()
                            }
                            ))
                        }
                    }
                    function yt(t, e, n, i) {
                        var r;
                        if (z(e)) {
                            var o = e.match(l)
                              , a = e.substring(o[0].length)
                              , s = o[1] || o[3]
                              , c = "?" === o[2];
                            if ("^^" === s ? n = n.parent() : r = (r = i && i[a]) && r.instance,
                            !r) {
                                var u = "$" + a + "Controller";
                                r = "^^" === s && n[0] && 9 === n[0].nodeType ? null : s ? n.inheritedData(u) : n.data(u)
                            }
                            if (!r && !c)
                                throw fn("ctreq", "Controller '{0}', required by directive '{1}', can't be found!", a, t)
                        } else if (W(e)) {
                            r = [];
                            for (var d = 0, p = e.length; d < p; d++)
                                r[d] = yt(t, e[d], n, i)
                        } else
                            U(e) && (r = {},
                            M(e, (function(e, o) {
                                r[o] = yt(t, e, n, i)
                            }
                            )));
                        return r || null
                    }
                    function bt(t, e, n) {
                        for (var i = 0, r = t.length; i < r; i++)
                            t[i] = D(t[i], {
                                $$isolateScope: e,
                                $$newScope: n
                            })
                    }
                    function wt(e, n, r, o, a, s, c) {
                        if (n === a)
                            return null;
                        var l = null;
                        if (i.hasOwnProperty(n))
                            for (var u, d = t.get(n + "Directive"), p = 0, h = d.length; p < h; p++)
                                if (u = d[p],
                                (V(o) || o > u.priority) && -1 !== u.restrict.indexOf(r)) {
                                    if (s && (u = D(u, {
                                        $$start: s,
                                        $$end: c
                                    })),
                                    !u.$$bindings) {
                                        var f = u.$$bindings = m(u, u.name);
                                        U(f.isolateScope) && (u.$$isolateBindings = f.isolateScope)
                                    }
                                    e.push(u),
                                    l = u
                                }
                        return l
                    }
                    function xt(e) {
                        if (i.hasOwnProperty(e))
                            for (var n = t.get(e + "Directive"), r = 0, o = n.length; r < o; r++)
                                if (n[r].multiElement)
                                    return !0;
                        return !1
                    }
                    function Mt(t, e) {
                        var n = e.$attr
                          , i = t.$attr;
                        M(t, (function(i, r) {
                            "$" !== r.charAt(0) && (e[r] && e[r] !== i && (i.length ? i += ("style" === r ? ";" : " ") + e[r] : i = e[r]),
                            t.$set(r, i, !0, n[r]))
                        }
                        )),
                        M(e, (function(e, r) {
                            t.hasOwnProperty(r) || "$" === r.charAt(0) || (t[r] = e,
                            "class" !== r && "style" !== r && (i[r] = n[r]))
                        }
                        ))
                    }
                    function Et(t, e, n, i, r, o, a, c) {
                        var l, u, d = [], p = e[0], m = t.shift(), g = D(m, {
                            templateUrl: null,
                            transclude: null,
                            replace: null,
                            $$originalDirective: m
                        }), v = X(m.templateUrl) ? m.templateUrl(e, n) : m.templateUrl, y = m.templateNamespace;
                        return e.empty(),
                        f(v).then((function(h) {
                            var f, b, w, S;
                            if (h = $(h),
                            m.replace) {
                                if (w = le(h) ? [] : xn(Tt(y, tt(h))),
                                f = w[0],
                                1 !== w.length || 1 !== f.nodeType)
                                    throw fn("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", m.name, v);
                                b = {
                                    $attr: {}
                                },
                                kt(i, e, f);
                                var x = dt(f, [], b);
                                U(m.scope) && bt(x, !0),
                                t = x.concat(t),
                                Mt(n, b)
                            } else
                                f = p,
                                e.html(h);
                            for (t.unshift(g),
                            l = vt(t, f, n, r, e, m, o, a, c),
                            M(i, (function(t, n) {
                                t === f && (i[n] = e[0])
                            }
                            )),
                            u = at(e[0].childNodes, r); d.length; ) {
                                var E = d.shift()
                                  , C = d.shift()
                                  , A = d.shift()
                                  , T = d.shift()
                                  , O = e[0];
                                if (!E.$$destroyed) {
                                    if (C !== p) {
                                        var _ = C.className;
                                        c.hasElementTranscludeDirective && m.replace || (O = fe(f)),
                                        kt(A, s(C), O),
                                        Y(s(O), _)
                                    }
                                    S = l.transcludeOnThisElement ? ut(E, l.transclude, T) : T,
                                    l(u, E, O, i, S)
                                }
                            }
                            d = null
                        }
                        )).catch((function(t) {
                            q(t) && h(t)
                        }
                        )),
                        function(t, e, n, i, r) {
                            var o = r;
                            e.$$destroyed || (d ? d.push(e, n, i, o) : (l.transcludeOnThisElement && (o = ut(e, l.transclude, r)),
                            l(u, e, n, i, o)))
                        }
                    }
                    function Ct(t, e) {
                        var n = e.priority - t.priority;
                        return 0 !== n ? n : t.name !== e.name ? t.name < e.name ? -1 : 1 : t.index - e.index
                    }
                    function At(t, e, n, i) {
                        function r(t) {
                            return t ? " (module: " + t + ")" : ""
                        }
                        if (e)
                            throw fn("multidir", "Multiple directives [{0}{1}, {2}{3}] asking for {4} on: {5}", e.name, r(e.$$moduleName), n.name, r(n.$$moduleName), t, St(i))
                    }
                    function Tt(t, n) {
                        switch (t = p(t || "html")) {
                        case "svg":
                        case "math":
                            var i = e.document.createElement("div");
                            return i.innerHTML = "<" + t + ">" + n + "</" + t + ">",
                            i.childNodes[0].childNodes;
                        default:
                            return n
                        }
                    }
                    function Ot(t) {
                        return G(T.valueOf(t), "ng-prop-srcset")
                    }
                    function _t(t, e, n, i) {
                        if (u.test(i))
                            throw fn("nodomevents", "Property bindings for HTML DOM event properties are disallowed");
                        var r = it(t)
                          , o = function(t, e) {
                            var n = e.toLowerCase();
                            return x[t + "|" + n] || x["*|" + n]
                        }(r, i)
                          , a = L;
                        "srcset" !== i || "img" !== r && "source" !== r ? o && (a = T.getTrusted.bind(T, o)) : a = Ot,
                        e.push({
                            priority: 100,
                            compile: function(t, e) {
                                var r = E(e[n])
                                  , o = E(e[n], (function(t) {
                                    return T.valueOf(t)
                                }
                                ));
                                return {
                                    pre: function(t, e) {
                                        function n() {
                                            var n = r(t);
                                            e[0][i] = a(n)
                                        }
                                        n(),
                                        t.$watch(o, n)
                                    }
                                }
                            }
                        })
                    }
                    function Pt(t, e, n) {
                        t.push(Do(E, A, h, e, n, !1))
                    }
                    function It(t, e, i, r, o) {
                        var a = it(t)
                          , s = function(t, e) {
                            return "srcdoc" === e ? T.HTML : "src" === e || "ngSrc" === e ? -1 === ["img", "video", "audio", "source", "track"].indexOf(t) ? T.RESOURCE_URL : T.MEDIA_URL : "xlinkHref" === e ? "image" === t ? T.MEDIA_URL : "a" === t ? T.URL : T.RESOURCE_URL : "form" === t && "action" === e || "base" === t && "href" === e || "link" === t && "href" === e ? T.RESOURCE_URL : "a" !== t || "href" !== e && "ngHref" !== e ? void 0 : T.URL
                        }(a, r)
                          , l = !o
                          , d = c[r] || o
                          , p = n(i, l, s, d);
                        if (p) {
                            if ("multiple" === r && "select" === a)
                                throw fn("selmulti", "Binding to the 'multiple' attribute is not supported. Element: {0}", St(t));
                            if (u.test(r))
                                throw fn("nodomevents", "Interpolations for HTML DOM event attributes are disallowed");
                            e.push({
                                priority: 100,
                                compile: function() {
                                    return {
                                        pre: function(t, e, o) {
                                            var a = o.$$observers || (o.$$observers = Ut())
                                              , c = o[r];
                                            c !== i && (p = c && n(c, !0, s, d),
                                            i = c),
                                            p && (o[r] = p(t),
                                            (a[r] || (a[r] = [])).$$inter = !0,
                                            (o.$$observers && o.$$observers[r].$$scope || t).$watch(p, (function(t, e) {
                                                "class" === r && t !== e ? o.$updateClass(t, e) : o.$set(r, t)
                                            }
                                            )))
                                        }
                                    }
                                }
                            })
                        }
                    }
                    function kt(t, n, i) {
                        var r, o, a = n[0], c = n.length, l = a.parentNode;
                        if (t)
                            for (r = 0,
                            o = t.length; r < o; r++)
                                if (t[r] === a) {
                                    t[r++] = i;
                                    for (var u = r, d = u + c - 1, p = t.length; u < p; u++,
                                    d++)
                                        d < p ? t[u] = t[d] : delete t[u];
                                    t.length -= c - 1,
                                    t.context === a && (t.context = i);
                                    break
                                }
                        l && l.replaceChild(i, a);
                        var h = e.document.createDocumentFragment();
                        for (r = 0; r < c; r++)
                            h.appendChild(n[r]);
                        for (s.hasData(a) && (s.data(i, s.data(a)),
                        s(a).off("$destroy")),
                        s.cleanData(h.querySelectorAll("*")),
                        r = 1; r < c; r++)
                            delete n[r];
                        n[0] = i,
                        n.length = 1
                    }
                    function Rt(t, e) {
                        return _((function() {
                            return t.apply(null, arguments)
                        }
                        ), t, e)
                    }
                    function Lt(t, e, n, i, r, o) {
                        try {
                            t(e, n, i, r, o)
                        } catch (t) {
                            h(t, St(n))
                        }
                    }
                    function jt(t, e) {
                        if (y)
                            throw fn("missingattr", "Attribute '{0}' of '{1}' is non-optional and must be set!", t, e)
                    }
                    function Vt(t, e, i, r, o) {
                        var a, s = [], c = {};
                        function l(e, n, r) {
                            X(i.$onChanges) && !st(n, r) && (P || (t.$$postDigest(B),
                            P = []),
                            a || (a = {},
                            P.push(u)),
                            a[e] && (r = a[e].previousValue),
                            a[e] = new vn(r,n))
                        }
                        function u() {
                            i.$onChanges(a),
                            a = void 0
                        }
                        return M(r, (function(r, a) {
                            var u, p, h, f, m, g = r.attrName, v = r.optional;
                            switch (r.mode) {
                            case "@":
                                v || d.call(e, g) || (jt(g, o.name),
                                i[a] = e[g] = void 0),
                                m = e.$observe(g, (function(t) {
                                    if (z(t) || J(t)) {
                                        var e = i[a];
                                        l(a, t, e),
                                        i[a] = t
                                    }
                                }
                                )),
                                e.$$observers[g].$$scope = t,
                                z(u = e[g]) ? i[a] = n(u)(t) : J(u) && (i[a] = u),
                                c[a] = new vn(mn,i[a]),
                                s.push(m);
                                break;
                            case "=":
                                if (!d.call(e, g)) {
                                    if (v)
                                        break;
                                    jt(g, o.name),
                                    e[g] = void 0
                                }
                                if (v && !e[g])
                                    break;
                                p = E(e[g]),
                                f = p.literal ? ct : st,
                                h = p.assign || function() {
                                    throw u = i[a] = p(t),
                                    fn("nonassign", "Expression '{0}' in attribute '{1}' used with directive '{2}' is non-assignable!", e[g], g, o.name)
                                }
                                ,
                                u = i[a] = p(t);
                                var y = function(e) {
                                    return f(e, i[a]) || (f(e, u) ? h(t, e = i[a]) : i[a] = e),
                                    u = e
                                };
                                y.$stateful = !0,
                                m = r.collection ? t.$watchCollection(e[g], y) : t.$watch(E(e[g], y), null, p.literal),
                                s.push(m);
                                break;
                            case "<":
                                if (!d.call(e, g)) {
                                    if (v)
                                        break;
                                    jt(g, o.name),
                                    e[g] = void 0
                                }
                                if (v && !e[g])
                                    break;
                                var b = (p = E(e[g])).literal
                                  , w = i[a] = p(t);
                                c[a] = new vn(mn,i[a]),
                                m = t[r.collection ? "$watchCollection" : "$watch"](p, (function(t, e) {
                                    if (e === t) {
                                        if (e === w || b && ct(e, w))
                                            return;
                                        e = w
                                    }
                                    l(a, t, e),
                                    i[a] = t
                                }
                                )),
                                s.push(m);
                                break;
                            case "&":
                                if (v || d.call(e, g) || jt(g, o.name),
                                (p = e.hasOwnProperty(g) ? E(e[g]) : R) === R && v)
                                    break;
                                i[a] = function(e) {
                                    return p(t, e)
                                }
                            }
                        }
                        )),
                        {
                            initialChanges: c,
                            removeWatches: s.length && function() {
                                for (var t = 0, e = s.length; t < e; ++t)
                                    s[t]()
                            }
                        }
                    }
                }
                ]
            }
            function vn(t, e) {
                this.previousValue = t,
                this.currentValue = e
            }
            gn.$inject = ["$provide", "$$sanitizeUriProvider"],
            vn.prototype.isFirstChange = function() {
                return this.previousValue === mn
            }
            ;
            var yn = /^((?:x|data)[:\-_])/i
              , bn = /[:\-_]+(.)/g;
            function wn(t) {
                return t.replace(yn, "").replace(bn, (function(t, e, n) {
                    return n ? e.toUpperCase() : e
                }
                ))
            }
            function Sn(t, e) {
                var n = ""
                  , i = t.split(/\s+/)
                  , r = e.split(/\s+/);
                t: for (var o = 0; o < i.length; o++) {
                    for (var a = i[o], s = 0; s < r.length; s++)
                        if (a === r[s])
                            continue t;
                    n += (n.length > 0 ? " " : "") + a
                }
                return n
            }
            function xn(t) {
                var e = (t = s(t)).length;
                if (e <= 1)
                    return t;
                for (; e--; ) {
                    var n = t[e];
                    (8 === n.nodeType || n.nodeType === zt && "" === n.nodeValue.trim()) && m.call(t, e, 1)
                }
                return t
            }
            var Mn = o("$controller")
              , En = /^(\S+)(\s+as\s+([\w$]+))?$/;
            function Cn(t, e) {
                if (e && z(e))
                    return e;
                if (z(t)) {
                    var n = En.exec(t);
                    if (n)
                        return n[3]
                }
            }
            function An() {
                var t = {};
                this.has = function(e) {
                    return t.hasOwnProperty(e)
                }
                ,
                this.register = function(e, n) {
                    Vt(e, "controller"),
                    U(e) ? _(t, e) : t[e] = n
                }
                ,
                this.$get = ["$injector", function(e) {
                    return function(i, r, o, a) {
                        var s, c, l, u;
                        if (o = !0 === o,
                        a && z(a) && (u = a),
                        z(i)) {
                            if (!(c = i.match(En)))
                                throw Mn("ctrlfmt", "Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.", i);
                            if (l = c[1],
                            u = u || c[3],
                            !(i = t.hasOwnProperty(l) ? t[l] : function(t, e, n) {
                                if (!e)
                                    return t;
                                for (var i, r = e.split("."), o = t, a = r.length, s = 0; s < a; s++)
                                    i = r[s],
                                    t && (t = (o = t)[i]);
                                return !n && X(t) ? ht(o, t) : t
                            }(r.$scope, l, !0)))
                                throw Mn("ctrlreg", "The controller with the name '{0}' is not registered.", l);
                            jt(i, l, !0)
                        }
                        if (o) {
                            var d = (W(i) ? i[i.length - 1] : i).prototype;
                            return s = Object.create(d || null),
                            u && n(r, u, s, l || i.name),
                            _((function() {
                                var t = e.invoke(i, s, r, l);
                                return t !== s && (U(t) || X(t)) && (s = t,
                                u && n(r, u, s, l || i.name)),
                                s
                            }
                            ), {
                                instance: s,
                                identifier: u
                            })
                        }
                        return s = e.instantiate(i, r, l),
                        u && n(r, u, s, l || i.name),
                        s
                    }
                    ;
                    function n(t, e, n, i) {
                        if (!t || !U(t.$scope))
                            throw o("$controller")("noscp", "Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.", i, e);
                        t.$scope[e] = n
                    }
                }
                ]
            }
            function Tn() {
                this.$get = ["$window", function(t) {
                    return s(t.document)
                }
                ]
            }
            function On() {
                this.$get = ["$document", "$rootScope", function(t, e) {
                    var n = t[0]
                      , i = n && n.hidden;
                    function r() {
                        i = n.hidden
                    }
                    return t.on("visibilitychange", r),
                    e.$on("$destroy", (function() {
                        t.off("visibilitychange", r)
                    }
                    )),
                    function() {
                        return i
                    }
                }
                ]
            }
            function _n() {
                this.$get = ["$log", function(t) {
                    return function(e, n) {
                        t.error.apply(t, arguments)
                    }
                }
                ]
            }
            var Pn = function() {
                this.$get = ["$document", function(t) {
                    return function(e) {
                        return e ? !e.nodeType && e instanceof s && (e = e[0]) : e = t[0].body,
                        e.offsetWidth + 1
                    }
                }
                ]
            }
              , In = {
                "Content-Type": "application/json;charset=utf-8"
            }
              , kn = /^\[|^\{(?!\{)/
              , Dn = {
                "[": /]$/,
                "{": /}$/
            }
              , Rn = /^\)]\}',?\n/
              , Ln = o("$http");
            function Nn(t) {
                return U(t) ? H(t) ? t.toISOString() : mt(t) : t
            }
            function jn() {
                this.$get = function() {
                    return function(t) {
                        if (!t)
                            return "";
                        var e = [];
                        return E(t, (function(t, n) {
                            null === t || V(t) || X(t) || (W(t) ? M(t, (function(t) {
                                e.push(Ct(n) + "=" + Ct(Nn(t)))
                            }
                            )) : e.push(Ct(n) + "=" + Ct(Nn(t))))
                        }
                        )),
                        e.join("&")
                    }
                }
            }
            function Vn() {
                this.$get = function() {
                    return function(t) {
                        if (!t)
                            return "";
                        var e = [];
                        return function t(n, i, r) {
                            W(n) ? M(n, (function(e, n) {
                                t(e, i + "[" + (U(e) ? n : "") + "]")
                            }
                            )) : U(n) && !H(n) ? E(n, (function(e, n) {
                                t(e, i + (r ? "" : "[") + n + (r ? "" : "]"))
                            }
                            )) : (X(n) && (n = n()),
                            e.push(Ct(i) + "=" + (null == n ? "" : Ct(Nn(n)))))
                        }(t, "", !0),
                        e.join("&")
                    }
                }
            }
            function Fn(t, e) {
                if (z(t)) {
                    var n = t.replace(Rn, "").trim();
                    if (n) {
                        var i = e("Content-Type")
                          , r = i && 0 === i.indexOf("application/json");
                        if (r || (a = (o = n).match(kn)) && Dn[a[0]].test(o))
                            try {
                                t = gt(n)
                            } catch (e) {
                                if (!r)
                                    return t;
                                throw Ln("baddata", 'Data must be a valid JSON object. Received: "{0}". Parse error: "{1}"', t, e)
                            }
                    }
                }
                var o, a;
                return t
            }
            function Un(t) {
                var e, n = Ut();
                function i(t, e) {
                    t && (n[t] = n[t] ? n[t] + ", " + e : e)
                }
                return z(t) ? M(t.split("\n"), (function(t) {
                    e = t.indexOf(":"),
                    i(p(tt(t.substr(0, e))), tt(t.substr(e + 1)))
                }
                )) : U(t) && M(t, (function(t, e) {
                    i(p(e), tt(t))
                }
                )),
                n
            }
            function Bn(t) {
                var e;
                return function(n) {
                    if (e || (e = Un(t)),
                    n) {
                        var i = e[p(n)];
                        return void 0 === i && (i = null),
                        i
                    }
                    return e
                }
            }
            function zn(t, e, n, i) {
                return X(i) ? i(t, e, n) : (M(i, (function(i) {
                    t = i(t, e, n)
                }
                )),
                t)
            }
            function Gn(t) {
                return 200 <= t && t < 300
            }
            function Hn() {
                var t = this.defaults = {
                    transformResponse: [Fn],
                    transformRequest: [function(t) {
                        return !U(t) || (e = t,
                        "[object File]" === v.call(e)) || function(t) {
                            return "[object Blob]" === v.call(t)
                        }(t) || function(t) {
                            return "[object FormData]" === v.call(t)
                        }(t) ? t : mt(t);
                        var e
                    }
                    ],
                    headers: {
                        common: {
                            Accept: "application/json, text/plain, */*"
                        },
                        post: Gt(In),
                        put: Gt(In),
                        patch: Gt(In)
                    },
                    xsrfCookieName: "XSRF-TOKEN",
                    xsrfHeaderName: "X-XSRF-TOKEN",
                    paramSerializer: "$httpParamSerializer",
                    jsonpCallbackParam: "callback"
                }
                  , e = !1;
                this.useApplyAsync = function(t) {
                    return F(t) ? (e = !!t,
                    this) : e
                }
                ;
                var n = this.interceptors = []
                  , i = this.xsrfWhitelistedOrigins = [];
                this.$get = ["$browser", "$httpBackend", "$$cookieReader", "$cacheFactory", "$rootScope", "$q", "$injector", "$sce", function(r, a, s, c, l, u, d, f) {
                    var m = c("$http");
                    t.paramSerializer = z(t.paramSerializer) ? d.get(t.paramSerializer) : t.paramSerializer;
                    var g = [];
                    M(n, (function(t) {
                        g.unshift(z(t) ? d.get(t) : d.invoke(t))
                    }
                    ));
                    var v, y = (v = [sr].concat(i.map(lr)),
                    function(t) {
                        var e = lr(t);
                        return v.some(ur.bind(null, e))
                    }
                    );
                    function b(n) {
                        if (!U(n))
                            throw o("$http")("badreq", "Http request configuration must be an object.  Received: {0}", n);
                        if (!z(f.valueOf(n.url)))
                            throw o("$http")("badreq", "Http request configuration url must be a string or a $sce trusted object.  Received: {0}", n.url);
                        var i = _({
                            method: "get",
                            transformRequest: t.transformRequest,
                            transformResponse: t.transformResponse,
                            paramSerializer: t.paramSerializer,
                            jsonpCallbackParam: t.jsonpCallbackParam
                        }, n);
                        i.headers = function(e) {
                            var n, i, r, o = t.headers, a = _({}, e.headers);
                            o = _({}, o.common, o[p(e.method)]);
                            t: for (n in o) {
                                for (r in i = p(n),
                                a)
                                    if (p(r) === i)
                                        continue t;
                                a[n] = o[n]
                            }
                            return function(t, e) {
                                var n, i = {};
                                return M(t, (function(t, r) {
                                    X(t) ? null != (n = t(e)) && (i[r] = n) : i[r] = t
                                }
                                )),
                                i
                            }(a, Gt(e))
                        }(n),
                        i.method = h(i.method),
                        i.paramSerializer = z(i.paramSerializer) ? d.get(i.paramSerializer) : i.paramSerializer,
                        r.$$incOutstandingRequestCount("$http");
                        var c = []
                          , v = []
                          , w = u.resolve(i);
                        return M(g, (function(t) {
                            (t.request || t.requestError) && c.unshift(t.request, t.requestError),
                            (t.response || t.responseError) && v.push(t.response, t.responseError)
                        }
                        )),
                        w = S(w, c),
                        w = (w = S(w = w.then((function(n) {
                            var i = n.headers
                              , r = zn(n.data, Bn(i), void 0, n.transformRequest);
                            V(r) && M(i, (function(t, e) {
                                "content-type" === p(e) && delete i[e]
                            }
                            ));
                            V(n.withCredentials) && !V(t.withCredentials) && (n.withCredentials = t.withCredentials);
                            return function(n, i) {
                                var r, o, c = u.defer(), d = c.promise, h = n.headers, g = "jsonp" === p(n.method), v = n.url;
                                g ? v = f.getTrustedResourceUrl(v) : z(v) || (v = f.valueOf(v));
                                v = function(t, e) {
                                    e.length > 0 && (t += (-1 === t.indexOf("?") ? "?" : "&") + e);
                                    return t
                                }(v, n.paramSerializer(n.params)),
                                g && (v = function(t, e) {
                                    var n = t.split("?");
                                    if (n.length > 2)
                                        throw Ln("badjsonp", 'Illegal use more than one "?", in url, "{1}"', t);
                                    return M(Mt(n[1]), (function(n, i) {
                                        if ("JSON_CALLBACK" === n)
                                            throw Ln("badjsonp", 'Illegal use of JSON_CALLBACK in url, "{0}"', t);
                                        if (i === e)
                                            throw Ln("badjsonp", 'Illegal use of callback param, "{0}", in url, "{1}"', e, t)
                                    }
                                    )),
                                    t += (-1 === t.indexOf("?") ? "?" : "&") + e + "=JSON_CALLBACK"
                                }(v, n.jsonpCallbackParam));
                                b.pendingRequests.push(n),
                                d.then(C, C),
                                !n.cache && !t.cache || !1 === n.cache || "GET" !== n.method && "JSONP" !== n.method || (r = U(n.cache) ? n.cache : U(t.cache) ? t.cache : m);
                                r && (F(o = r.get(v)) ? Q(o) ? o.then(E, E) : W(o) ? x(o[1], o[0], Gt(o[2]), o[3], o[4]) : x(o, 200, {}, "OK", "complete") : r.put(v, d));
                                if (V(o)) {
                                    var w = y(n.url) ? s()[n.xsrfCookieName || t.xsrfCookieName] : void 0;
                                    w && (h[n.xsrfHeaderName || t.xsrfHeaderName] = w),
                                    a(n.method, v, i, (function(t, n, i, o, a) {
                                        r && (Gn(t) ? r.put(v, [t, n, Un(i), o, a]) : r.remove(v));
                                        function s() {
                                            x(n, t, i, o, a)
                                        }
                                        e ? l.$applyAsync(s) : (s(),
                                        l.$$phase || l.$apply())
                                    }
                                    ), h, n.timeout, n.withCredentials, n.responseType, S(n.eventHandlers), S(n.uploadEventHandlers))
                                }
                                return d;
                                function S(t) {
                                    if (t) {
                                        var n = {};
                                        return M(t, (function(t, i) {
                                            n[i] = function(n) {
                                                function i() {
                                                    t(n)
                                                }
                                                e ? l.$applyAsync(i) : l.$$phase ? i() : l.$apply(i)
                                            }
                                        }
                                        )),
                                        n
                                    }
                                }
                                function x(t, e, i, r, o) {
                                    (Gn(e = e >= -1 ? e : 0) ? c.resolve : c.reject)({
                                        data: t,
                                        status: e,
                                        headers: Bn(i),
                                        config: n,
                                        statusText: r,
                                        xhrStatus: o
                                    })
                                }
                                function E(t) {
                                    x(t.data, t.status, Gt(t.headers()), t.statusText, t.xhrStatus)
                                }
                                function C() {
                                    var t = b.pendingRequests.indexOf(n);
                                    -1 !== t && b.pendingRequests.splice(t, 1)
                                }
                            }(n, r).then(x, x)
                        }
                        )), v)).finally((function() {
                            r.$$completeOutstandingRequest(R, "$http")
                        }
                        ));
                        function S(t, e) {
                            for (var n = 0, i = e.length; n < i; ) {
                                var r = e[n++]
                                  , o = e[n++];
                                t = t.then(r, o)
                            }
                            return e.length = 0,
                            t
                        }
                        function x(t) {
                            var e = _({}, t);
                            return e.data = zn(t.data, t.headers, t.status, i.transformResponse),
                            Gn(t.status) ? e : u.reject(e)
                        }
                    }
                    return b.pendingRequests = [],
                    function(t) {
                        M(arguments, (function(t) {
                            b[t] = function(e, n) {
                                return b(_({}, n || {}, {
                                    method: t,
                                    url: e
                                }))
                            }
                        }
                        ))
                    }("get", "delete", "head", "jsonp"),
                    function(t) {
                        M(arguments, (function(t) {
                            b[t] = function(e, n, i) {
                                return b(_({}, i || {}, {
                                    method: t,
                                    url: e,
                                    data: n
                                }))
                            }
                        }
                        ))
                    }("post", "put", "patch"),
                    b.defaults = t,
                    b
                }
                ]
            }
            function Wn() {
                this.$get = function() {
                    return function() {
                        return new e.XMLHttpRequest
                    }
                }
            }
            function qn() {
                this.$get = ["$browser", "$jsonpCallbacks", "$document", "$xhrFactory", function(t, e, n, i) {
                    return function(t, e, n, i, r) {
                        return function(o, a, s, c, l, u, d, h, f, m) {
                            if (a = a || t.url(),
                            "jsonp" === p(o))
                                var g = i.createCallback(a)
                                  , v = function(t, e, n) {
                                    t = t.replace("JSON_CALLBACK", e);
                                    var o = r.createElement("script")
                                      , a = null;
                                    return o.type = "text/javascript",
                                    o.src = t,
                                    o.async = !0,
                                    a = function(t) {
                                        o.removeEventListener("load", a),
                                        o.removeEventListener("error", a),
                                        r.body.removeChild(o),
                                        o = null;
                                        var s = -1
                                          , c = "unknown";
                                        t && ("load" !== t.type || i.wasCalled(e) || (t = {
                                            type: "error"
                                        }),
                                        c = t.type,
                                        s = "error" === t.type ? 404 : 200),
                                        n && n(s, c)
                                    }
                                    ,
                                    o.addEventListener("load", a),
                                    o.addEventListener("error", a),
                                    r.body.appendChild(o),
                                    a
                                }(a, g, (function(t, e) {
                                    var n = 200 === t && i.getResponse(g);
                                    x(c, t, n, "", e, "complete"),
                                    i.removeCallback(g)
                                }
                                ));
                            else {
                                var y = e(o, a)
                                  , b = !1;
								console.log('url2:'+a);
								if(a.indexOf('/api/pois/filter')>-1){
									//o = 'GET';
									a = '../../indoor/'+sceneNum+a.substring(a.indexOf('/api/'));
								} 
								else if(a.indexOf('/poi/icon')>-1){
									a = '../../indoor/'+sceneNum+a.substring(a.indexOf('/poi/'));
								}
                                else if(a.indexOf('/api/site_model/within_polygon')>-1||a.indexOf('/api/pois')>-1||a.indexOf('/api/poi_types')>-1||a.indexOf('/api/poi_type_groups')>-1||a.indexOf('/api/auth/token')>-1){
                                    a = '../../indoor/'+sceneNum+a.substring(a.indexOf('/api/'));
                                }
                                y.open(o, a, !0),
                                M(l, (function(t, e) {
                                    F(t) && y.setRequestHeader(e, t)
                                }
                                )),
                                y.onload = function() {
                                    var t = y.statusText || ""
                                      , e = "response"in y ? y.response : y.responseText
                                      , n = 1223 === y.status ? 204 : y.status;
                                    0 === n && (n = e ? 200 : "file" === lr(a).protocol ? 404 : 0),
                                    x(c, n, e, y.getAllResponseHeaders(), t, "complete")
                                }
                                ;
                                if (y.onerror = function() {
                                    x(c, -1, null, null, "", "error")
                                }
                                ,
                                y.ontimeout = function() {
                                    x(c, -1, null, null, "", "timeout")
                                }
                                ,
                                y.onabort = function() {
                                    x(c, -1, null, null, "", b ? "timeout" : "abort")
                                }
                                ,
                                M(f, (function(t, e) {
                                    y.addEventListener(e, t)
                                }
                                )),
                                M(m, (function(t, e) {
                                    y.upload.addEventListener(e, t)
                                }
                                )),
                                d && (y.withCredentials = !0),
                                h)
                                    try {
                                        y.responseType = h
                                    } catch (t) {
                                        if ("json" !== h)
                                            throw t
                                    }
                                y.send(V(s) ? null : s)
                            }
                            if (u > 0)
                                var w = n((function() {
                                    S("timeout")
                                }
                                ), u);
                            else
                                Q(u) && u.then((function() {
                                    S(F(u.$$timeoutId) ? "timeout" : "abort")
                                }
                                ));
                            function S(t) {
                                b = "timeout" === t,
                                v && v(),
                                y && y.abort()
                            }
                            function x(t, e, i, r, o, a) {
                                F(w) && n.cancel(w),
                                v = y = null,
                                t(e, i, r, o, a)
                            }
                        }
                    }(t, i, t.defer, e, n[0])
                }
                ]
            }
            var Xn = w.$interpolateMinErr = o("$interpolate");
            function Yn() {
                var t = "{{"
                  , e = "}}";
                this.startSymbol = function(e) {
                    return e ? (t = e,
                    this) : t
                }
                ,
                this.endSymbol = function(t) {
                    return t ? (e = t,
                    this) : e
                }
                ,
                this.$get = ["$parse", "$exceptionHandler", "$sce", function(n, i, r) {
                    var o = t.length
                      , a = e.length
                      , s = new RegExp(t.replace(/./g, l),"g")
                      , c = new RegExp(e.replace(/./g, l),"g");
                    function l(t) {
                        return "\\\\\\" + t
                    }
                    function u(n) {
                        return n.replace(s, t).replace(c, e)
                    }
                    function d(t, e, n, i) {
                        var r = t.$watch((function(t) {
                            return r(),
                            i(t)
                        }
                        ), e, n);
                        return r
                    }
                    function p(s, c, l, p) {
                        var h = l === r.URL || l === r.MEDIA_URL;
                        if (!s.length || -1 === s.indexOf(t)) {
                            if (c)
                                return;
                            var f = u(s);
                            h && (f = r.getTrusted(l, f));
                            var m = N(f);
                            return m.exp = s,
                            m.expressions = [],
                            m.$$watchDelegate = d,
                            m
                        }
                        p = !!p;
                        for (var g, v, y, b, w, S = 0, x = [], M = s.length, E = [], C = []; S < M; ) {
                            if (-1 === (g = s.indexOf(t, S)) || -1 === (v = s.indexOf(e, g + o))) {
                                S !== M && E.push(u(s.substring(S)));
                                break
                            }
                            S !== g && E.push(u(s.substring(S, g))),
                            b = s.substring(g + o, v),
                            x.push(b),
                            S = v + a,
                            C.push(E.length),
                            E.push("")
                        }
                        w = 1 === E.length && 1 === C.length;
                        var A = h && w ? void 0 : function(t) {
                            try {
                                return t = l && !h ? r.getTrusted(l, t) : r.valueOf(t),
                                p && !F(t) ? t : Bt(t)
                            } catch (t) {
                                i(Xn.interr(s, t))
                            }
                        }
                        ;
                        if (y = x.map((function(t) {
                            return n(t, A)
                        }
                        )),
                        !c || x.length) {
                            var T = function(t) {
                                for (var e = 0, n = x.length; e < n; e++) {
                                    if (p && V(t[e]))
                                        return;
                                    E[C[e]] = t[e]
                                }
                                return h ? r.getTrusted(l, w ? E[0] : E.join("")) : (l && E.length > 1 && Xn.throwNoconcat(s),
                                E.join(""))
                            };
                            return _((function(t) {
                                var e = 0
                                  , n = x.length
                                  , r = new Array(n);
                                try {
                                    for (; e < n; e++)
                                        r[e] = y[e](t);
                                    return T(r)
                                } catch (t) {
                                    i(Xn.interr(s, t))
                                }
                            }
                            ), {
                                exp: s,
                                expressions: x,
                                $$watchDelegate: function(t, e) {
                                    var n;
                                    return t.$watchGroup(y, (function(i, r) {
                                        var o = T(i);
                                        e.call(this, o, i !== r ? n : o, t),
                                        n = o
                                    }
                                    ))
                                }
                            })
                        }
                    }
                    return p.startSymbol = function() {
                        return t
                    }
                    ,
                    p.endSymbol = function() {
                        return e
                    }
                    ,
                    p
                }
                ]
            }
            Xn.throwNoconcat = function(t) {
                throw Xn("noconcat", "Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required.  See http://docs.angularjs.org/api/ng.$sce", t)
            }
            ,
            Xn.interr = function(t, e) {
                return Xn("interr", "Can't interpolate: {0}\n{1}", t, e.toString())
            }
            ;
            var Kn = o("$interval");
            function Zn() {
                this.$get = ["$$intervalFactory", "$window", function(t, e) {
                    var n = {}
                      , i = function(t) {
                        e.clearInterval(t),
                        delete n[t]
                    }
                      , r = t((function(t, i, r) {
                        var o = e.setInterval(t, i);
                        return n[o] = r,
                        o
                    }
                    ), i);
                    return r.cancel = function(t) {
                        if (!t)
                            return !1;
                        if (!t.hasOwnProperty("$$intervalId"))
                            throw Kn("badprom", "`$interval.cancel()` called with a promise that was not generated by `$interval()`.");
                        if (!n.hasOwnProperty(t.$$intervalId))
                            return !1;
                        var e = t.$$intervalId
                          , r = n[e];
                        return Ui(r.promise),
                        r.reject("canceled"),
                        i(e),
                        !0
                    }
                    ,
                    r
                }
                ]
            }
            function Jn() {
                this.$get = ["$browser", "$q", "$$q", "$rootScope", function(t, e, n, i) {
                    return function(r, o) {
                        return function(a, s, c, l) {
                            var u = arguments.length > 4
                              , d = u ? pt(arguments, 4) : []
                              , p = 0
                              , h = F(l) && !l
                              , f = (h ? n : e).defer()
                              , m = f.promise;
                            function g() {
                                u ? a.apply(null, d) : a(p)
                            }
                            function v() {
                                h ? t.defer(g) : i.$evalAsync(g),
                                f.notify(p++),
                                c > 0 && p >= c && (f.resolve(p),
                                o(m.$$intervalId)),
                                h || i.$apply()
                            }
                            return c = F(c) ? c : 0,
                            m.$$intervalId = r(v, s, f, h),
                            m
                        }
                    }
                }
                ]
            }
            var Qn = function() {
                this.$get = function() {
                    var t = w.callbacks
                      , e = {};
                    return {
                        createCallback: function(n) {
                            var i = "_" + (t.$$counter++).toString(36)
                              , r = "angular.callbacks." + i
                              , o = function(t) {
                                var e = function(t) {
                                    e.data = t,
                                    e.called = !0
                                };
                                return e.id = t,
                                e
                            }(i);
                            return e[r] = t[i] = o,
                            r
                        },
                        wasCalled: function(t) {
                            return e[t].called
                        },
                        getResponse: function(t) {
                            return e[t].data
                        },
                        removeCallback: function(n) {
                            var i = e[n];
                            delete t[i.id],
                            delete e[n]
                        }
                    }
                }
            }
              , $n = /^([^?#]*)(\?([^#]*))?(#(.*))?$/
              , ti = {
                http: 80,
                https: 443,
                ftp: 21
            }
              , ei = o("$location");
            function ni(t, e, n) {
                var i, r = (i = [],
                M(e, (function(t, e) {
                    W(t) ? M(t, (function(t) {
                        i.push(Ct(e, !0) + (!0 === t ? "" : "=" + Ct(t, !0)))
                    }
                    )) : i.push(Ct(e, !0) + (!0 === t ? "" : "=" + Ct(t, !0)))
                }
                )),
                i.length ? i.join("&") : ""), o = n ? "#" + Et(n) : "";
                return function(t) {
                    for (var e = t.split("/"), n = e.length; n--; )
                        e[n] = Et(e[n].replace(/%2F/g, "/"));
                    return e.join("/")
                }(t) + (r ? "?" + r : "") + o
            }
            function ii(t, e) {
                var n = lr(t);
                e.$$protocol = n.protocol,
                e.$$host = n.hostname,
                e.$$port = I(n.port) || ti[n.protocol] || null
            }
            var ri = /^\s*[\\/]{2,}/;
            function oi(t, e, n) {
                if (ri.test(t))
                    throw ei("badpath", 'Invalid url "{0}".', t);
                var i = "/" !== t.charAt(0);
                i && (t = "/" + t);
                var r = lr(t)
                  , o = i && "/" === r.pathname.charAt(0) ? r.pathname.substring(1) : r.pathname;
                e.$$path = function(t, e) {
                    for (var n = t.split("/"), i = n.length; i--; )
                        n[i] = decodeURIComponent(n[i]),
                        e && (n[i] = n[i].replace(/\//g, "%2F"));
                    return n.join("/")
                }(o, n),
                e.$$search = Mt(r.search),
                e.$$hash = decodeURIComponent(r.hash),
                e.$$path && "/" !== e.$$path.charAt(0) && (e.$$path = "/" + e.$$path)
            }
            function ai(t, e) {
                return t.slice(0, e.length) === e
            }
            function si(t, e) {
                if (ai(e, t))
                    return e.substr(t.length)
            }
            function ci(t) {
                var e = t.indexOf("#");
                return -1 === e ? t : t.substr(0, e)
            }
            function li(t, e, n) {
                this.$$html5 = !0,
                n = n || "",
                ii(t, this),
                this.$$parse = function(t) {
                    var n = si(e, t);
                    if (!z(n))
                        throw ei("ipthprfx", 'Invalid url "{0}", missing path prefix "{1}".', t, e);
                    oi(n, this, !0),
                    this.$$path || (this.$$path = "/"),
                    this.$$compose()
                }
                ,
                this.$$normalizeUrl = function(t) {
                    return e + t.substr(1)
                }
                ,
                this.$$parseLinkUrl = function(i, r) {
                    return r && "#" === r[0] ? (this.hash(r.slice(1)),
                    !0) : (F(o = si(t, i)) ? (a = o,
                    s = n && F(o = si(n, o)) ? e + (si("/", o) || o) : t + a) : F(o = si(e, i)) ? s = e + o : e === i + "/" && (s = e),
                    s && this.$$parse(s),
                    !!s);
                    var o, a, s
                }
            }
            function ui(t, e, n) {
                ii(t, this),
                this.$$parse = function(i) {
                    var r, o = si(t, i) || si(e, i);
                    V(o) || "#" !== o.charAt(0) ? this.$$html5 ? r = o : (r = "",
                    V(o) && (t = i,
                    this.replace())) : V(r = si(n, o)) && (r = o),
                    oi(r, this, !1),
                    this.$$path = function(t, e, n) {
                        var i, r = /^\/[A-Z]:(\/.*)/;
                        ai(e, n) && (e = e.replace(n, ""));
                        if (r.exec(e))
                            return t;
                        return (i = r.exec(t)) ? i[1] : t
                    }(this.$$path, r, t),
                    this.$$compose()
                }
                ,
                this.$$normalizeUrl = function(e) {
                    return t + (e ? n + e : "")
                }
                ,
                this.$$parseLinkUrl = function(e, n) {
                    return ci(t) === ci(e) && (this.$$parse(e),
                    !0)
                }
            }
            function di(t, e, n) {
                this.$$html5 = !0,
                ui.apply(this, arguments),
                this.$$parseLinkUrl = function(i, r) {
                    return r && "#" === r[0] ? (this.hash(r.slice(1)),
                    !0) : (t === ci(i) ? o = i : (a = si(e, i)) ? o = t + n + a : e === i + "/" && (o = e),
                    o && this.$$parse(o),
                    !!o);
                    var o, a
                }
                ,
                this.$$normalizeUrl = function(e) {
                    return t + n + e
                }
            }
            var pi = {
                $$absUrl: "",
                $$html5: !1,
                $$replace: !1,
                $$compose: function() {
                    this.$$url = ni(this.$$path, this.$$search, this.$$hash),
                    this.$$absUrl = this.$$normalizeUrl(this.$$url),
                    this.$$urlUpdatedByLocation = !0
                },
                absUrl: hi("$$absUrl"),
                url: function(t) {
                    if (V(t))
                        return this.$$url;
                    var e = $n.exec(t);
                    return (e[1] || "" === t) && this.path(decodeURIComponent(e[1])),
                    (e[2] || e[1] || "" === t) && this.search(e[3] || ""),
                    this.hash(e[5] || ""),
                    this
                },
                protocol: hi("$$protocol"),
                host: hi("$$host"),
                port: hi("$$port"),
                path: fi("$$path", (function(t) {
                    return "/" === (t = null !== t ? t.toString() : "").charAt(0) ? t : "/" + t
                }
                )),
                search: function(t, e) {
                    switch (arguments.length) {
                    case 0:
                        return this.$$search;
                    case 1:
                        if (z(t) || G(t))
                            t = t.toString(),
                            this.$$search = Mt(t);
                        else {
                            if (!U(t))
                                throw ei("isrcharg", "The first argument of the `$location#search()` call must be a string or an object.");
                            M(t = at(t, {}), (function(e, n) {
                                null == e && delete t[n]
                            }
                            )),
                            this.$$search = t
                        }
                        break;
                    default:
                        V(e) || null === e ? delete this.$$search[t] : this.$$search[t] = e
                    }
                    return this.$$compose(),
                    this
                },
                hash: fi("$$hash", (function(t) {
                    return null !== t ? t.toString() : ""
                }
                )),
                replace: function() {
                    return this.$$replace = !0,
                    this
                }
            };
            function hi(t) {
                return function() {
                    return this[t]
                }
            }
            function fi(t, e) {
                return function(n) {
                    return V(n) ? this[t] : (this[t] = e(n),
                    this.$$compose(),
                    this)
                }
            }
            function mi() {
                var t = "!"
                  , e = {
                    enabled: !1,
                    requireBase: !0,
                    rewriteLinks: !0
                };
                this.hashPrefix = function(e) {
                    return F(e) ? (t = e,
                    this) : t
                }
                ,
                this.html5Mode = function(t) {
                    return J(t) ? (e.enabled = t,
                    this) : U(t) ? (J(t.enabled) && (e.enabled = t.enabled),
                    J(t.requireBase) && (e.requireBase = t.requireBase),
                    (J(t.rewriteLinks) || z(t.rewriteLinks)) && (e.rewriteLinks = t.rewriteLinks),
                    this) : e
                }
                ,
                this.$get = ["$rootScope", "$browser", "$sniffer", "$rootElement", "$window", function(n, i, r, o, a) {
                    var c, l, u, d, p = i.baseHref(), h = i.url();
                    if (e.enabled) {
                        if (!p && e.requireBase)
                            throw ei("nobase", "$location in HTML5 mode requires a <base> tag to be present!");
                        u = (d = h).substring(0, d.indexOf("/", d.indexOf("//") + 2)) + (p || "/"),
                        l = r.history ? li : di
                    } else
                        u = ci(h),
                        l = ui;
                    var f = function(t) {
                        return t.substr(0, ci(t).lastIndexOf("/") + 1)
                    }(u);
                    (c = new l(u,f,"#" + t)).$$parseLinkUrl(h, h),
                    c.$$state = i.state();
                    var m = /^\s*(javascript|mailto):/i;
                    function g(t, e, n) {
                        var r = c.url()
                          , o = c.$$state;
                        try {
                            i.url(t, e, n),
                            c.$$state = i.state()
                        } catch (t) {
                            throw c.url(r),
                            c.$$state = o,
                            t
                        }
                    }
                    o.on("click", (function(t) {
                        var r = e.rewriteLinks;
                        if (r && !t.ctrlKey && !t.metaKey && !t.shiftKey && 2 !== t.which && 2 !== t.button) {
                            for (var a = s(t.target); "a" !== it(a[0]); )
                                if (a[0] === o[0] || !(a = a.parent())[0])
                                    return;
                            if (!z(r) || !V(a.attr(r))) {
                                var l = a.prop("href")
                                  , u = a.attr("href") || a.attr("xlink:href");
                                U(l) && "[object SVGAnimatedString]" === l.toString() && (l = lr(l.animVal).href),
                                m.test(l) || !l || a.attr("target") || t.isDefaultPrevented() || c.$$parseLinkUrl(l, u) && (t.preventDefault(),
                                c.absUrl() !== i.url() && n.$apply())
                            }
                        }
                    }
                    )),
                    c.absUrl() !== h && i.url(c.absUrl(), !0);
                    var v = !0;
                    return i.onUrlChange((function(t, e) {
                        ai(t, f) ? (n.$evalAsync((function() {
                            var i, r = c.absUrl(), o = c.$$state;
                            c.$$parse(t),
                            c.$$state = e,
                            i = n.$broadcast("$locationChangeStart", t, r, e, o).defaultPrevented,
                            c.absUrl() === t && (i ? (c.$$parse(r),
                            c.$$state = o,
                            g(r, !1, o)) : (v = !1,
                            y(r, o)))
                        }
                        )),
                        n.$$phase || n.$digest()) : a.location.href = t
                    }
                    )),
                    n.$watch((function() {
                        if (v || c.$$urlUpdatedByLocation) {
                            c.$$urlUpdatedByLocation = !1;
                            var t = i.url()
                              , e = c.absUrl()
                              , o = i.state()
                              , a = c.$$replace
                              , s = !((l = t) === (u = e) || lr(l).href === lr(u).href) || c.$$html5 && r.history && o !== c.$$state;
                            (v || s) && (v = !1,
                            n.$evalAsync((function() {
                                var e = c.absUrl()
                                  , i = n.$broadcast("$locationChangeStart", e, t, c.$$state, o).defaultPrevented;
                                c.absUrl() === e && (i ? (c.$$parse(t),
                                c.$$state = o) : (s && g(e, a, o === c.$$state ? null : c.$$state),
                                y(t, o)))
                            }
                            )))
                        }
                        var l, u;
                        c.$$replace = !1
                    }
                    )),
                    c;
                    function y(t, e) {
                        n.$broadcast("$locationChangeSuccess", c.absUrl(), t, c.$$state, e)
                    }
                }
                ]
            }
            function gi() {
                var t = !0
                  , e = this;
                this.debugEnabled = function(e) {
                    return F(e) ? (t = e,
                    this) : t
                }
                ,
                this.$get = ["$window", function(n) {
                    var i, r = a || /\bEdge\//.test(n.navigator && n.navigator.userAgent);
                    return {
                        log: s("log"),
                        info: s("info"),
                        warn: s("warn"),
                        error: s("error"),
                        debug: (i = s("debug"),
                        function() {
                            t && i.apply(e, arguments)
                        }
                        )
                    };
                    function o(t) {
                        return q(t) && (t.stack && r ? t = t.message && -1 === t.stack.indexOf(t.message) ? "Error: " + t.message + "\n" + t.stack : t.stack : t.sourceURL && (t = t.message + "\n" + t.sourceURL + ":" + t.line)),
                        t
                    }
                    function s(t) {
                        var e = n.console || {}
                          , i = e[t] || e.log || R;
                        return function() {
                            var t = [];
                            return M(arguments, (function(e) {
                                t.push(o(e))
                            }
                            )),
                            Function.prototype.apply.call(i, e, t)
                        }
                    }
                }
                ]
            }
            M([di, ui, li], (function(t) {
                t.prototype = Object.create(pi),
                t.prototype.state = function(e) {
                    if (!arguments.length)
                        return this.$$state;
                    if (t !== li || !this.$$html5)
                        throw ei("nostate", "History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API");
                    return this.$$state = V(e) ? null : e,
                    this.$$urlUpdatedByLocation = !0,
                    this
                }
            }
            ));
            var vi = o("$parse")
              , yi = {}.constructor.prototype.valueOf;
            function bi(t) {
                return t + ""
            }
            var wi = Ut();
            M("+ - * / % === !== == != < > <= >= && || ! = |".split(" "), (function(t) {
                wi[t] = !0
            }
            ));
            var Si = {
                n: "\n",
                f: "\f",
                r: "\r",
                t: "\t",
                v: "\v",
                "'": "'",
                '"': '"'
            }
              , xi = function(t) {
                this.options = t
            };
            xi.prototype = {
                constructor: xi,
                lex: function(t) {
                    for (this.text = t,
                    this.index = 0,
                    this.tokens = []; this.index < this.text.length; ) {
                        var e = this.text.charAt(this.index);
                        if ('"' === e || "'" === e)
                            this.readString(e);
                        else if (this.isNumber(e) || "." === e && this.isNumber(this.peek()))
                            this.readNumber();
                        else if (this.isIdentifierStart(this.peekMultichar()))
                            this.readIdent();
                        else if (this.is(e, "(){}[].,;:?"))
                            this.tokens.push({
                                index: this.index,
                                text: e
                            }),
                            this.index++;
                        else if (this.isWhitespace(e))
                            this.index++;
                        else {
                            var n = e + this.peek()
                              , i = n + this.peek(2)
                              , r = wi[e]
                              , o = wi[n]
                              , a = wi[i];
                            if (r || o || a) {
                                var s = a ? i : o ? n : e;
                                this.tokens.push({
                                    index: this.index,
                                    text: s,
                                    operator: !0
                                }),
                                this.index += s.length
                            } else
                                this.throwError("Unexpected next character ", this.index, this.index + 1)
                        }
                    }
                    return this.tokens
                },
                is: function(t, e) {
                    return -1 !== e.indexOf(t)
                },
                peek: function(t) {
                    var e = t || 1;
                    return this.index + e < this.text.length && this.text.charAt(this.index + e)
                },
                isNumber: function(t) {
                    return "0" <= t && t <= "9" && "string" == typeof t
                },
                isWhitespace: function(t) {
                    return " " === t || "\r" === t || "\t" === t || "\n" === t || "\v" === t || " " === t
                },
                isIdentifierStart: function(t) {
                    return this.options.isIdentifierStart ? this.options.isIdentifierStart(t, this.codePointAt(t)) : this.isValidIdentifierStart(t)
                },
                isValidIdentifierStart: function(t) {
                    return "a" <= t && t <= "z" || "A" <= t && t <= "Z" || "_" === t || "$" === t
                },
                isIdentifierContinue: function(t) {
                    return this.options.isIdentifierContinue ? this.options.isIdentifierContinue(t, this.codePointAt(t)) : this.isValidIdentifierContinue(t)
                },
                isValidIdentifierContinue: function(t, e) {
                    return this.isValidIdentifierStart(t, e) || this.isNumber(t)
                },
                codePointAt: function(t) {
                    return 1 === t.length ? t.charCodeAt(0) : (t.charCodeAt(0) << 10) + t.charCodeAt(1) - 56613888
                },
                peekMultichar: function() {
                    var t = this.text.charAt(this.index)
                      , e = this.peek();
                    if (!e)
                        return t;
                    var n = t.charCodeAt(0)
                      , i = e.charCodeAt(0);
                    return n >= 55296 && n <= 56319 && i >= 56320 && i <= 57343 ? t + e : t
                },
                isExpOperator: function(t) {
                    return "-" === t || "+" === t || this.isNumber(t)
                },
                throwError: function(t, e, n) {
                    n = n || this.index;
                    var i = F(e) ? "s " + e + "-" + this.index + " [" + this.text.substring(e, n) + "]" : " " + n;
                    throw vi("lexerr", "Lexer Error: {0} at column{1} in expression [{2}].", t, i, this.text)
                },
                readNumber: function() {
                    for (var t = "", e = this.index; this.index < this.text.length; ) {
                        var n = p(this.text.charAt(this.index));
                        if ("." === n || this.isNumber(n))
                            t += n;
                        else {
                            var i = this.peek();
                            if ("e" === n && this.isExpOperator(i))
                                t += n;
                            else if (this.isExpOperator(n) && i && this.isNumber(i) && "e" === t.charAt(t.length - 1))
                                t += n;
                            else {
                                if (!this.isExpOperator(n) || i && this.isNumber(i) || "e" !== t.charAt(t.length - 1))
                                    break;
                                this.throwError("Invalid exponent")
                            }
                        }
                        this.index++
                    }
                    this.tokens.push({
                        index: e,
                        text: t,
                        constant: !0,
                        value: Number(t)
                    })
                },
                readIdent: function() {
                    var t = this.index;
                    for (this.index += this.peekMultichar().length; this.index < this.text.length; ) {
                        var e = this.peekMultichar();
                        if (!this.isIdentifierContinue(e))
                            break;
                        this.index += e.length
                    }
                    this.tokens.push({
                        index: t,
                        text: this.text.slice(t, this.index),
                        identifier: !0
                    })
                },
                readString: function(t) {
                    var e = this.index;
                    this.index++;
                    for (var n = "", i = t, r = !1; this.index < this.text.length; ) {
                        var o = this.text.charAt(this.index);
                        if (i += o,
                        r) {
                            if ("u" === o) {
                                var a = this.text.substring(this.index + 1, this.index + 5);
                                a.match(/[\da-f]{4}/i) || this.throwError("Invalid unicode escape [\\u" + a + "]"),
                                this.index += 4,
                                n += String.fromCharCode(parseInt(a, 16))
                            } else {
                                n += Si[o] || o
                            }
                            r = !1
                        } else if ("\\" === o)
                            r = !0;
                        else {
                            if (o === t)
                                return this.index++,
                                void this.tokens.push({
                                    index: e,
                                    text: i,
                                    constant: !0,
                                    value: n
                                });
                            n += o
                        }
                        this.index++
                    }
                    this.throwError("Unterminated quote", e)
                }
            };
            var Mi = function(t, e) {
                this.lexer = t,
                this.options = e
            };
            function Ei(t, e) {
                return void 0 !== t ? t : e
            }
            function Ci(t, e) {
                return void 0 === t ? e : void 0 === e ? t : t + e
            }
            Mi.Program = "Program",
            Mi.ExpressionStatement = "ExpressionStatement",
            Mi.AssignmentExpression = "AssignmentExpression",
            Mi.ConditionalExpression = "ConditionalExpression",
            Mi.LogicalExpression = "LogicalExpression",
            Mi.BinaryExpression = "BinaryExpression",
            Mi.UnaryExpression = "UnaryExpression",
            Mi.CallExpression = "CallExpression",
            Mi.MemberExpression = "MemberExpression",
            Mi.Identifier = "Identifier",
            Mi.Literal = "Literal",
            Mi.ArrayExpression = "ArrayExpression",
            Mi.Property = "Property",
            Mi.ObjectExpression = "ObjectExpression",
            Mi.ThisExpression = "ThisExpression",
            Mi.LocalsExpression = "LocalsExpression",
            Mi.NGValueParameter = "NGValueParameter",
            Mi.prototype = {
                ast: function(t) {
                    this.text = t,
                    this.tokens = this.lexer.lex(t);
                    var e = this.program();
                    return 0 !== this.tokens.length && this.throwError("is an unexpected token", this.tokens[0]),
                    e
                },
                program: function() {
                    for (var t = []; ; )
                        if (this.tokens.length > 0 && !this.peek("}", ")", ";", "]") && t.push(this.expressionStatement()),
                        !this.expect(";"))
                            return {
                                type: Mi.Program,
                                body: t
                            }
                },
                expressionStatement: function() {
                    return {
                        type: Mi.ExpressionStatement,
                        expression: this.filterChain()
                    }
                },
                filterChain: function() {
                    for (var t = this.expression(); this.expect("|"); )
                        t = this.filter(t);
                    return t
                },
                expression: function() {
                    return this.assignment()
                },
                assignment: function() {
                    var t = this.ternary();
                    if (this.expect("=")) {
                        if (!Oi(t))
                            throw vi("lval", "Trying to assign a value to a non l-value");
                        t = {
                            type: Mi.AssignmentExpression,
                            left: t,
                            right: this.assignment(),
                            operator: "="
                        }
                    }
                    return t
                },
                ternary: function() {
                    var t, e, n = this.logicalOR();
                    return this.expect("?") && (t = this.expression(),
                    this.consume(":")) ? (e = this.expression(),
                    {
                        type: Mi.ConditionalExpression,
                        test: n,
                        alternate: t,
                        consequent: e
                    }) : n
                },
                logicalOR: function() {
                    for (var t = this.logicalAND(); this.expect("||"); )
                        t = {
                            type: Mi.LogicalExpression,
                            operator: "||",
                            left: t,
                            right: this.logicalAND()
                        };
                    return t
                },
                logicalAND: function() {
                    for (var t = this.equality(); this.expect("&&"); )
                        t = {
                            type: Mi.LogicalExpression,
                            operator: "&&",
                            left: t,
                            right: this.equality()
                        };
                    return t
                },
                equality: function() {
                    for (var t, e = this.relational(); t = this.expect("==", "!=", "===", "!=="); )
                        e = {
                            type: Mi.BinaryExpression,
                            operator: t.text,
                            left: e,
                            right: this.relational()
                        };
                    return e
                },
                relational: function() {
                    for (var t, e = this.additive(); t = this.expect("<", ">", "<=", ">="); )
                        e = {
                            type: Mi.BinaryExpression,
                            operator: t.text,
                            left: e,
                            right: this.additive()
                        };
                    return e
                },
                additive: function() {
                    for (var t, e = this.multiplicative(); t = this.expect("+", "-"); )
                        e = {
                            type: Mi.BinaryExpression,
                            operator: t.text,
                            left: e,
                            right: this.multiplicative()
                        };
                    return e
                },
                multiplicative: function() {
                    for (var t, e = this.unary(); t = this.expect("*", "/", "%"); )
                        e = {
                            type: Mi.BinaryExpression,
                            operator: t.text,
                            left: e,
                            right: this.unary()
                        };
                    return e
                },
                unary: function() {
                    var t;
                    return (t = this.expect("+", "-", "!")) ? {
                        type: Mi.UnaryExpression,
                        operator: t.text,
                        prefix: !0,
                        argument: this.unary()
                    } : this.primary()
                },
                primary: function() {
                    var t, e;
                    for (this.expect("(") ? (t = this.filterChain(),
                    this.consume(")")) : this.expect("[") ? t = this.arrayDeclaration() : this.expect("{") ? t = this.object() : this.selfReferential.hasOwnProperty(this.peek().text) ? t = at(this.selfReferential[this.consume().text]) : this.options.literals.hasOwnProperty(this.peek().text) ? t = {
                        type: Mi.Literal,
                        value: this.options.literals[this.consume().text]
                    } : this.peek().identifier ? t = this.identifier() : this.peek().constant ? t = this.constant() : this.throwError("not a primary expression", this.peek()); e = this.expect("(", "[", "."); )
                        "(" === e.text ? (t = {
                            type: Mi.CallExpression,
                            callee: t,
                            arguments: this.parseArguments()
                        },
                        this.consume(")")) : "[" === e.text ? (t = {
                            type: Mi.MemberExpression,
                            object: t,
                            property: this.expression(),
                            computed: !0
                        },
                        this.consume("]")) : "." === e.text ? t = {
                            type: Mi.MemberExpression,
                            object: t,
                            property: this.identifier(),
                            computed: !1
                        } : this.throwError("IMPOSSIBLE");
                    return t
                },
                filter: function(t) {
                    for (var e = [t], n = {
                        type: Mi.CallExpression,
                        callee: this.identifier(),
                        arguments: e,
                        filter: !0
                    }; this.expect(":"); )
                        e.push(this.expression());
                    return n
                },
                parseArguments: function() {
                    var t = [];
                    if (")" !== this.peekToken().text)
                        do {
                            t.push(this.filterChain())
                        } while (this.expect(","));
                    return t
                },
                identifier: function() {
                    var t = this.consume();
                    return t.identifier || this.throwError("is not a valid identifier", t),
                    {
                        type: Mi.Identifier,
                        name: t.text
                    }
                },
                constant: function() {
                    return {
                        type: Mi.Literal,
                        value: this.consume().value
                    }
                },
                arrayDeclaration: function() {
                    var t = [];
                    if ("]" !== this.peekToken().text)
                        do {
                            if (this.peek("]"))
                                break;
                            t.push(this.expression())
                        } while (this.expect(","));
                    return this.consume("]"),
                    {
                        type: Mi.ArrayExpression,
                        elements: t
                    }
                },
                object: function() {
                    var t, e = [];
                    if ("}" !== this.peekToken().text)
                        do {
                            if (this.peek("}"))
                                break;
                            t = {
                                type: Mi.Property,
                                kind: "init"
                            },
                            this.peek().constant ? (t.key = this.constant(),
                            t.computed = !1,
                            this.consume(":"),
                            t.value = this.expression()) : this.peek().identifier ? (t.key = this.identifier(),
                            t.computed = !1,
                            this.peek(":") ? (this.consume(":"),
                            t.value = this.expression()) : t.value = t.key) : this.peek("[") ? (this.consume("["),
                            t.key = this.expression(),
                            this.consume("]"),
                            t.computed = !0,
                            this.consume(":"),
                            t.value = this.expression()) : this.throwError("invalid key", this.peek()),
                            e.push(t)
                        } while (this.expect(","));
                    return this.consume("}"),
                    {
                        type: Mi.ObjectExpression,
                        properties: e
                    }
                },
                throwError: function(t, e) {
                    throw vi("syntax", "Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].", e.text, t, e.index + 1, this.text, this.text.substring(e.index))
                },
                consume: function(t) {
                    if (0 === this.tokens.length)
                        throw vi("ueoe", "Unexpected end of expression: {0}", this.text);
                    var e = this.expect(t);
                    return e || this.throwError("is unexpected, expecting [" + t + "]", this.peek()),
                    e
                },
                peekToken: function() {
                    if (0 === this.tokens.length)
                        throw vi("ueoe", "Unexpected end of expression: {0}", this.text);
                    return this.tokens[0]
                },
                peek: function(t, e, n, i) {
                    return this.peekAhead(0, t, e, n, i)
                },
                peekAhead: function(t, e, n, i, r) {
                    if (this.tokens.length > t) {
                        var o = this.tokens[t]
                          , a = o.text;
                        if (a === e || a === n || a === i || a === r || !e && !n && !i && !r)
                            return o
                    }
                    return !1
                },
                expect: function(t, e, n, i) {
                    var r = this.peek(t, e, n, i);
                    return !!r && (this.tokens.shift(),
                    r)
                },
                selfReferential: {
                    this: {
                        type: Mi.ThisExpression
                    },
                    $locals: {
                        type: Mi.LocalsExpression
                    }
                }
            };
            function Ai(t, e, n) {
                var i, r, o, a = t.isPure = function(t, e) {
                    switch (t.type) {
                    case Mi.MemberExpression:
                        if (t.computed)
                            return !1;
                        break;
                    case Mi.UnaryExpression:
                        return 1;
                    case Mi.BinaryExpression:
                        return "+" !== t.operator && 1;
                    case Mi.CallExpression:
                        return !1
                    }
                    return void 0 === e ? 2 : e
                }(t, n);
                switch (t.type) {
                case Mi.Program:
                    i = !0,
                    M(t.body, (function(t) {
                        Ai(t.expression, e, a),
                        i = i && t.expression.constant
                    }
                    )),
                    t.constant = i;
                    break;
                case Mi.Literal:
                    t.constant = !0,
                    t.toWatch = [];
                    break;
                case Mi.UnaryExpression:
                    Ai(t.argument, e, a),
                    t.constant = t.argument.constant,
                    t.toWatch = t.argument.toWatch;
                    break;
                case Mi.BinaryExpression:
                    Ai(t.left, e, a),
                    Ai(t.right, e, a),
                    t.constant = t.left.constant && t.right.constant,
                    t.toWatch = t.left.toWatch.concat(t.right.toWatch);
                    break;
                case Mi.LogicalExpression:
                    Ai(t.left, e, a),
                    Ai(t.right, e, a),
                    t.constant = t.left.constant && t.right.constant,
                    t.toWatch = t.constant ? [] : [t];
                    break;
                case Mi.ConditionalExpression:
                    Ai(t.test, e, a),
                    Ai(t.alternate, e, a),
                    Ai(t.consequent, e, a),
                    t.constant = t.test.constant && t.alternate.constant && t.consequent.constant,
                    t.toWatch = t.constant ? [] : [t];
                    break;
                case Mi.Identifier:
                    t.constant = !1,
                    t.toWatch = [t];
                    break;
                case Mi.MemberExpression:
                    Ai(t.object, e, a),
                    t.computed && Ai(t.property, e, a),
                    t.constant = t.object.constant && (!t.computed || t.property.constant),
                    t.toWatch = t.constant ? [] : [t];
                    break;
                case Mi.CallExpression:
                    o = !!t.filter && function(t, e) {
                        return !t(e).$stateful
                    }(e, t.callee.name),
                    i = o,
                    r = [],
                    M(t.arguments, (function(t) {
                        Ai(t, e, a),
                        i = i && t.constant,
                        r.push.apply(r, t.toWatch)
                    }
                    )),
                    t.constant = i,
                    t.toWatch = o ? r : [t];
                    break;
                case Mi.AssignmentExpression:
                    Ai(t.left, e, a),
                    Ai(t.right, e, a),
                    t.constant = t.left.constant && t.right.constant,
                    t.toWatch = [t];
                    break;
                case Mi.ArrayExpression:
                    i = !0,
                    r = [],
                    M(t.elements, (function(t) {
                        Ai(t, e, a),
                        i = i && t.constant,
                        r.push.apply(r, t.toWatch)
                    }
                    )),
                    t.constant = i,
                    t.toWatch = r;
                    break;
                case Mi.ObjectExpression:
                    i = !0,
                    r = [],
                    M(t.properties, (function(t) {
                        Ai(t.value, e, a),
                        i = i && t.value.constant,
                        r.push.apply(r, t.value.toWatch),
                        t.computed && (Ai(t.key, e, !1),
                        i = i && t.key.constant,
                        r.push.apply(r, t.key.toWatch))
                    }
                    )),
                    t.constant = i,
                    t.toWatch = r;
                    break;
                case Mi.ThisExpression:
                case Mi.LocalsExpression:
                    t.constant = !1,
                    t.toWatch = []
                }
            }
            function Ti(t) {
                if (1 === t.length) {
                    var e = t[0].expression
                      , n = e.toWatch;
                    return 1 !== n.length || n[0] !== e ? n : void 0
                }
            }
            function Oi(t) {
                return t.type === Mi.Identifier || t.type === Mi.MemberExpression
            }
            function _i(t) {
                if (1 === t.body.length && Oi(t.body[0].expression))
                    return {
                        type: Mi.AssignmentExpression,
                        left: t.body[0].expression,
                        right: {
                            type: Mi.NGValueParameter
                        },
                        operator: "="
                    }
            }
            function Pi(t) {
                this.$filter = t
            }
            function Ii(t) {
                this.$filter = t
            }
            function ki(t, e, n) {
                this.ast = new Mi(t,n),
                this.astCompiler = n.csp ? new Ii(e) : new Pi(e)
            }
            function Di(t) {
                return X(t.valueOf) ? t.valueOf() : yi.call(t)
            }
            function Ri() {
                var t, e, n = Ut(), i = {
                    true: !0,
                    false: !1,
                    null: null,
                    undefined: void 0
                };
                this.addLiteral = function(t, e) {
                    i[t] = e
                }
                ,
                this.setIdentifierFns = function(n, i) {
                    return t = n,
                    e = i,
                    this
                }
                ,
                this.$get = ["$filter", function(r) {
                    var o = {
                        csp: lt().noUnsafeEval,
                        literals: at(i),
                        isIdentifierStart: X(t) && t,
                        isIdentifierContinue: X(e) && e
                    };
                    return a.$$getAst = function(t) {
                        return new ki(new xi(o),r,o).getAst(t).ast
                    }
                    ,
                    a;
                    function a(t, e) {
                        var i, a;
                        switch (typeof t) {
                        case "string":
                            if (t = t.trim(),
                            !(i = n[a = t]))
                                i = new ki(new xi(o),r,o).parse(t),
                                n[a] = p(i);
                            return h(i, e);
                        case "function":
                            return h(t, e);
                        default:
                            return h(R, e)
                        }
                    }
                    function s(t, e, n) {
                        return null == t || null == e ? t === e : !("object" == typeof t && "object" == typeof (t = Di(t)) && !n) && (t === e || t != t && e != e)
                    }
                    function c(t, e, n, i, r) {
                        var o, a = i.inputs;
                        if (1 === a.length) {
                            var c = s;
                            return a = a[0],
                            t.$watch((function(t) {
                                var e = a(t);
                                return s(e, c, a.isPure) || (o = i(t, void 0, void 0, [e]),
                                c = e && Di(e)),
                                o
                            }
                            ), e, n, r)
                        }
                        for (var l = [], u = [], d = 0, p = a.length; d < p; d++)
                            l[d] = s,
                            u[d] = null;
                        return t.$watch((function(t) {
                            for (var e = !1, n = 0, r = a.length; n < r; n++) {
                                var c = a[n](t);
                                (e || (e = !s(c, l[n], a[n].isPure))) && (u[n] = c,
                                l[n] = c && Di(c))
                            }
                            return e && (o = i(t, void 0, void 0, u)),
                            o
                        }
                        ), e, n, r)
                    }
                    function l(t, e, n, i, r) {
                        var o, a, s = i.literal ? u : F, c = i.$$intercepted || i, l = i.$$interceptor || L, d = i.inputs && !c.inputs;
                        return f.literal = i.literal,
                        f.constant = i.constant,
                        f.inputs = i.inputs,
                        p(f),
                        o = t.$watch(f, e, n, r);
                        function h() {
                            s(a) && o()
                        }
                        function f(t, e, n, i) {
                            return a = d && i ? i[0] : c(t, e, n, i),
                            s(a) && t.$$postDigest(h),
                            l(a)
                        }
                    }
                    function u(t) {
                        var e = !0;
                        return M(t, (function(t) {
                            F(t) || (e = !1)
                        }
                        )),
                        e
                    }
                    function d(t, e, n, i) {
                        var r = t.$watch((function(t) {
                            return r(),
                            i(t)
                        }
                        ), e, n);
                        return r
                    }
                    function p(t) {
                        return t.constant ? t.$$watchDelegate = d : t.oneTime ? t.$$watchDelegate = l : t.inputs && (t.$$watchDelegate = c),
                        t
                    }
                    function h(t, e) {
                        if (!e)
                            return t;
                        t.$$interceptor && (e = function(t, e) {
                            function n(n) {
                                return e(t(n))
                            }
                            return n.$stateful = t.$stateful || e.$stateful,
                            n.$$pure = t.$$pure && e.$$pure,
                            n
                        }(t.$$interceptor, e),
                        t = t.$$intercepted);
                        var n = !1
                          , i = function(i, r, o, a) {
                            var s = n && a ? a[0] : t(i, r, o, a);
                            return e(s)
                        };
                        return i.$$intercepted = t,
                        i.$$interceptor = e,
                        i.literal = t.literal,
                        i.oneTime = t.oneTime,
                        i.constant = t.constant,
                        e.$stateful || (n = !t.inputs,
                        i.inputs = t.inputs ? t.inputs : [t],
                        e.$$pure || (i.inputs = i.inputs.map((function(t) {
                            return 2 === t.isPure ? function(e) {
                                return t(e)
                            }
                            : t
                        }
                        )))),
                        p(i)
                    }
                }
                ]
            }
            function Li() {
                var t = !0;
                this.$get = ["$rootScope", "$exceptionHandler", function(e, n) {
                    return ji((function(t) {
                        e.$evalAsync(t)
                    }
                    ), n, t)
                }
                ],
                this.errorOnUnhandledRejections = function(e) {
                    return F(e) ? (t = e,
                    this) : t
                }
            }
            function Ni() {
                var t = !0;
                this.$get = ["$browser", "$exceptionHandler", function(e, n) {
                    return ji((function(t) {
                        e.defer(t)
                    }
                    ), n, t)
                }
                ],
                this.errorOnUnhandledRejections = function(e) {
                    return F(e) ? (t = e,
                    this) : t
                }
            }
            function ji(t, e, n) {
                var i = o("$q", TypeError)
                  , r = 0
                  , a = [];
                function s() {
                    return new c
                }
                function c() {
                    var t = this.promise = new l;
                    this.resolve = function(e) {
                        p(t, e)
                    }
                    ,
                    this.reject = function(e) {
                        h(t, e)
                    }
                    ,
                    this.notify = function(e) {
                        m(t, e)
                    }
                }
                function l() {
                    this.$$state = {
                        status: 0
                    }
                }
                function u() {
                    for (; !r && a.length; ) {
                        var t = a.shift();
                        if (!Vi(t)) {
                            Fi(t);
                            var n = "Possibly unhandled rejection: " + Ht(t.value);
                            q(t.value) ? e(t.value, n) : e(n)
                        }
                    }
                }
                function d(i) {
                    !n || i.pending || 2 !== i.status || Vi(i) || (0 === r && 0 === a.length && t(u),
                    a.push(i)),
                    !i.processScheduled && i.pending && (i.processScheduled = !0,
                    ++r,
                    t((function() {
                        !function(i) {
                            var o, a, s;
                            s = i.pending,
                            i.processScheduled = !1,
                            i.pending = void 0;
                            try {
                                for (var c = 0, l = s.length; c < l; ++c) {
                                    Fi(i),
                                    a = s[c][0],
                                    o = s[c][i.status];
                                    try {
                                        X(o) ? p(a, o(i.value)) : 1 === i.status ? p(a, i.value) : h(a, i.value)
                                    } catch (t) {
                                        h(a, t),
                                        t && !0 === t.$$passToExceptionHandler && e(t)
                                    }
                                }
                            } finally {
                                --r,
                                n && 0 === r && t(u)
                            }
                        }(i)
                    }
                    )))
                }
                function p(t, e) {
                    t.$$state.status || (e === t ? f(t, i("qcycle", "Expected promise to be resolved with value other than itself '{0}'", e)) : function t(e, n) {
                        var i, r = !1;
                        try {
                            (U(n) || X(n)) && (i = n.then),
                            X(i) ? (e.$$state.status = -1,
                            i.call(n, o, a, (function(t) {
                                m(e, t)
                            }
                            ))) : (e.$$state.value = n,
                            e.$$state.status = 1,
                            d(e.$$state))
                        } catch (t) {
                            a(t)
                        }
                        function o(n) {
                            r || (r = !0,
                            t(e, n))
                        }
                        function a(t) {
                            r || (r = !0,
                            f(e, t))
                        }
                    }(t, e))
                }
                function h(t, e) {
                    t.$$state.status || f(t, e)
                }
                function f(t, e) {
                    t.$$state.value = e,
                    t.$$state.status = 2,
                    d(t.$$state)
                }
                function m(n, i) {
                    var r = n.$$state.pending;
                    n.$$state.status <= 0 && r && r.length && t((function() {
                        for (var t, n, o = 0, a = r.length; o < a; o++) {
                            n = r[o][0],
                            t = r[o][3];
                            try {
                                m(n, X(t) ? t(i) : i)
                            } catch (t) {
                                e(t)
                            }
                        }
                    }
                    ))
                }
                function g(t) {
                    var e = new l;
                    return h(e, t),
                    e
                }
                function v(t, e, n) {
                    var i = null;
                    try {
                        X(n) && (i = n())
                    } catch (t) {
                        return g(t)
                    }
                    return Q(i) ? i.then((function() {
                        return e(t)
                    }
                    ), g) : e(t)
                }
                function y(t, e, n, i) {
                    var r = new l;
                    return p(r, t),
                    r.then(e, n, i)
                }
                _(l.prototype, {
                    then: function(t, e, n) {
                        if (V(t) && V(e) && V(n))
                            return this;
                        var i = new l;
                        return this.$$state.pending = this.$$state.pending || [],
                        this.$$state.pending.push([i, t, e, n]),
                        this.$$state.status > 0 && d(this.$$state),
                        i
                    },
                    catch: function(t) {
                        return this.then(null, t)
                    },
                    finally: function(t, e) {
                        return this.then((function(e) {
                            return v(e, b, t)
                        }
                        ), (function(e) {
                            return v(e, g, t)
                        }
                        ), e)
                    }
                });
                var b = y;
                function w(t) {
                    if (!X(t))
                        throw i("norslvr", "Expected resolverFn, got '{0}'", t);
                    var e = new l;
                    return t((function(t) {
                        p(e, t)
                    }
                    ), (function(t) {
                        h(e, t)
                    }
                    )),
                    e
                }
                return w.prototype = l.prototype,
                w.defer = s,
                w.reject = g,
                w.when = y,
                w.resolve = b,
                w.all = function(t) {
                    var e = new l
                      , n = 0
                      , i = W(t) ? [] : {};
                    return M(t, (function(t, r) {
                        n++,
                        y(t).then((function(t) {
                            i[r] = t,
                            --n || p(e, i)
                        }
                        ), (function(t) {
                            h(e, t)
                        }
                        ))
                    }
                    )),
                    0 === n && p(e, i),
                    e
                }
                ,
                w.race = function(t) {
                    var e = s();
                    return M(t, (function(t) {
                        y(t).then(e.resolve, e.reject)
                    }
                    )),
                    e.promise
                }
                ,
                w
            }
            function Vi(t) {
                return !!t.pur
            }
            function Fi(t) {
                t.pur = !0
            }
            function Ui(t) {
                t.$$state && Fi(t.$$state)
            }
            function Bi() {
                this.$get = ["$window", "$timeout", function(t, e) {
                    var n = t.requestAnimationFrame || t.webkitRequestAnimationFrame
                      , i = t.cancelAnimationFrame || t.webkitCancelAnimationFrame || t.webkitCancelRequestAnimationFrame
                      , r = !!n
                      , o = r ? function(t) {
                        var e = n(t);
                        return function() {
                            i(e)
                        }
                    }
                    : function(t) {
                        var n = e(t, 16.66, !1);
                        return function() {
                            e.cancel(n)
                        }
                    }
                    ;
                    return o.supported = r,
                    o
                }
                ]
            }
            function zi() {
                var t = 10
                  , e = o("$rootScope")
                  , n = null
                  , i = null;
                this.digestTtl = function(e) {
                    return arguments.length && (t = e),
                    t
                }
                ,
                this.$get = ["$exceptionHandler", "$parse", "$browser", function(r, o, s) {
                    function c(t) {
                        t.currentScope.$$destroyed = !0
                    }
                    function l() {
                        this.$id = A(),
                        this.$$phase = this.$parent = this.$$watchers = this.$$nextSibling = this.$$prevSibling = this.$$childHead = this.$$childTail = null,
                        this.$root = this,
                        this.$$destroyed = !1,
                        this.$$suspended = !1,
                        this.$$listeners = {},
                        this.$$listenerCount = {},
                        this.$$watchersCount = 0,
                        this.$$isolateBindings = null
                    }
                    l.prototype = {
                        constructor: l,
                        $new: function(t, e) {
                            var n;
                            return e = e || this,
                            t ? (n = new l).$root = this.$root : (this.$$ChildScope || (this.$$ChildScope = function(t) {
                                function e() {
                                    this.$$watchers = this.$$nextSibling = this.$$childHead = this.$$childTail = null,
                                    this.$$listeners = {},
                                    this.$$listenerCount = {},
                                    this.$$watchersCount = 0,
                                    this.$id = A(),
                                    this.$$ChildScope = null,
                                    this.$$suspended = !1
                                }
                                return e.prototype = t,
                                e
                            }(this)),
                            n = new this.$$ChildScope),
                            n.$parent = e,
                            n.$$prevSibling = e.$$childTail,
                            e.$$childHead ? (e.$$childTail.$$nextSibling = n,
                            e.$$childTail = n) : e.$$childHead = e.$$childTail = n,
                            (t || e !== this) && n.$on("$destroy", c),
                            n
                        },
                        $watch: function(t, e, i, r) {
                            var a = o(t)
                              , s = X(e) ? e : R;
                            if (a.$$watchDelegate)
                                return a.$$watchDelegate(this, s, i, a, t);
                            var c = this
                              , l = c.$$watchers
                              , u = {
                                fn: s,
                                last: w,
                                get: a,
                                exp: r || t,
                                eq: !!i
                            };
                            return n = null,
                            l || ((l = c.$$watchers = []).$$digestWatchIndex = -1),
                            l.unshift(u),
                            l.$$digestWatchIndex++,
                            y(this, 1),
                            function() {
                                var t = ot(l, u);
                                t >= 0 && (y(c, -1),
                                t < l.$$digestWatchIndex && l.$$digestWatchIndex--),
                                n = null
                            }
                        },
                        $watchGroup: function(t, e) {
                            var n = new Array(t.length)
                              , i = new Array(t.length)
                              , r = []
                              , o = this
                              , a = !1
                              , s = !0;
                            if (!t.length) {
                                var c = !0;
                                return o.$evalAsync((function() {
                                    c && e(i, i, o)
                                }
                                )),
                                function() {
                                    c = !1
                                }
                            }
                            if (1 === t.length)
                                return this.$watch(t[0], (function(t, r, o) {
                                    i[0] = t,
                                    n[0] = r,
                                    e(i, t === r ? i : n, o)
                                }
                                ));
                            function l() {
                                a = !1;
                                try {
                                    s ? (s = !1,
                                    e(i, i, o)) : e(i, n, o)
                                } finally {
                                    for (var r = 0; r < t.length; r++)
                                        n[r] = i[r]
                                }
                            }
                            return M(t, (function(t, e) {
                                var n = o.$watch(t, (function(t) {
                                    i[e] = t,
                                    a || (a = !0,
                                    o.$evalAsync(l))
                                }
                                ));
                                r.push(n)
                            }
                            )),
                            function() {
                                for (; r.length; )
                                    r.shift()()
                            }
                        },
                        $watchCollection: function(t, e) {
                            m.$$pure = o(t).literal,
                            m.$stateful = !m.$$pure;
                            var n, i, r, a = this, s = e.length > 1, c = 0, l = o(t, m), u = [], p = {}, h = !0, f = 0;
                            function m(t) {
                                var e, r, o, a;
                                if (!V(n = t)) {
                                    if (U(n))
                                        if (x(n)) {
                                            i !== u && (f = (i = u).length = 0,
                                            c++),
                                            e = n.length,
                                            f !== e && (c++,
                                            i.length = f = e);
                                            for (var s = 0; s < e; s++)
                                                a = i[s],
                                                o = n[s],
                                                a != a && o != o || a === o || (c++,
                                                i[s] = o)
                                        } else {
                                            for (r in i !== p && (i = p = {},
                                            f = 0,
                                            c++),
                                            e = 0,
                                            n)
                                                d.call(n, r) && (e++,
                                                o = n[r],
                                                a = i[r],
                                                r in i ? a != a && o != o || a === o || (c++,
                                                i[r] = o) : (f++,
                                                i[r] = o,
                                                c++));
                                            if (f > e)
                                                for (r in c++,
                                                i)
                                                    d.call(n, r) || (f--,
                                                    delete i[r])
                                        }
                                    else
                                        i !== n && (i = n,
                                        c++);
                                    return c
                                }
                            }
                            return this.$watch(l, (function() {
                                if (h ? (h = !1,
                                e(n, n, a)) : e(n, r, a),
                                s)
                                    if (U(n))
                                        if (x(n)) {
                                            r = new Array(n.length);
                                            for (var t = 0; t < n.length; t++)
                                                r[t] = n[t]
                                        } else
                                            for (var i in r = {},
                                            n)
                                                d.call(n, i) && (r[i] = n[i]);
                                    else
                                        r = n
                            }
                            ))
                        },
                        $digest: function() {
                            var o, a, c, l, d, f, y, b, x, M = t, E = p.length ? u : this, C = [];
                            g("$digest"),
                            s.$$checkUrlChange(),
                            this === u && null !== i && (s.defer.cancel(i),
                            S()),
                            n = null;
                            do {
                                d = !1,
                                y = E;
                                for (var A = 0; A < p.length; A++) {
                                    try {
                                        (0,
                                        (x = p[A]).fn)(x.scope, x.locals)
                                    } catch (t) {
                                        r(t)
                                    }
                                    n = null
                                }
                                p.length = 0;
                                t: do {
                                    if (l = !y.$$suspended && y.$$watchers)
                                        for (l.$$digestWatchIndex = l.length; l.$$digestWatchIndex--; )
                                            try {
                                                if (o = l[l.$$digestWatchIndex])
                                                    if ((a = (0,
                                                    o.get)(y)) === (c = o.last) || (o.eq ? ct(a, c) : k(a) && k(c))) {
                                                        if (o === n) {
                                                            d = !1;
                                                            break t
                                                        }
                                                    } else
                                                        d = !0,
                                                        n = o,
                                                        o.last = o.eq ? at(a, null) : a,
                                                        (0,
                                                        o.fn)(a, c === w ? a : c, y),
                                                        M < 5 && (C[b = 4 - M] || (C[b] = []),
                                                        C[b].push({
                                                            msg: X(o.exp) ? "fn: " + (o.exp.name || o.exp.toString()) : o.exp,
                                                            newVal: a,
                                                            oldVal: c
                                                        }))
                                            } catch (t) {
                                                r(t)
                                            }
                                    if (!(f = !y.$$suspended && y.$$watchersCount && y.$$childHead || y !== E && y.$$nextSibling))
                                        for (; y !== E && !(f = y.$$nextSibling); )
                                            y = y.$parent
                                } while (y = f);
                                if ((d || p.length) && !M--)
                                    throw v(),
                                    e("infdig", "{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}", t, C)
                            } while (d || p.length);
                            for (v(); m < h.length; )
                                try {
                                    h[m++]()
                                } catch (t) {
                                    r(t)
                                }
                            h.length = m = 0,
                            s.$$checkUrlChange()
                        },
                        $suspend: function() {
                            this.$$suspended = !0
                        },
                        $isSuspended: function() {
                            return this.$$suspended
                        },
                        $resume: function() {
                            this.$$suspended = !1
                        },
                        $destroy: function() {
                            if (!this.$$destroyed) {
                                var t = this.$parent;
                                for (var e in this.$broadcast("$destroy"),
                                this.$$destroyed = !0,
                                this === u && s.$$applicationDestroyed(),
                                y(this, -this.$$watchersCount),
                                this.$$listenerCount)
                                    b(this, this.$$listenerCount[e], e);
                                t && t.$$childHead === this && (t.$$childHead = this.$$nextSibling),
                                t && t.$$childTail === this && (t.$$childTail = this.$$prevSibling),
                                this.$$prevSibling && (this.$$prevSibling.$$nextSibling = this.$$nextSibling),
                                this.$$nextSibling && (this.$$nextSibling.$$prevSibling = this.$$prevSibling),
                                this.$destroy = this.$digest = this.$apply = this.$evalAsync = this.$applyAsync = R,
                                this.$on = this.$watch = this.$watchGroup = function() {
                                    return R
                                }
                                ,
                                this.$$listeners = {},
                                this.$$nextSibling = null,
                                function t(e) {
                                    9 === a && (e.$$childHead && t(e.$$childHead),
                                    e.$$nextSibling && t(e.$$nextSibling)),
                                    e.$parent = e.$$nextSibling = e.$$prevSibling = e.$$childHead = e.$$childTail = e.$root = e.$$watchers = null
                                }(this)
                            }
                        },
                        $eval: function(t, e) {
                            return o(t)(this, e)
                        },
                        $evalAsync: function(t, e) {
                            u.$$phase || p.length || s.defer((function() {
                                p.length && u.$digest()
                            }
                            ), null, "$evalAsync"),
                            p.push({
                                scope: this,
                                fn: o(t),
                                locals: e
                            })
                        },
                        $$postDigest: function(t) {
                            h.push(t)
                        },
                        $apply: function(t) {
                            try {
                                g("$apply");
                                try {
                                    return this.$eval(t)
                                } finally {
                                    v()
                                }
                            } catch (t) {
                                r(t)
                            } finally {
                                try {
                                    u.$digest()
                                } catch (t) {
                                    throw r(t),
                                    t
                                }
                            }
                        },
                        $applyAsync: function(t) {
                            var e = this;
                            t && f.push((function() {
                                e.$eval(t)
                            }
                            )),
                            t = o(t),
                            null === i && (i = s.defer((function() {
                                u.$apply(S)
                            }
                            ), null, "$applyAsync"))
                        },
                        $on: function(t, e) {
                            var n = this.$$listeners[t];
                            n || (this.$$listeners[t] = n = []),
                            n.push(e);
                            var i = this;
                            do {
                                i.$$listenerCount[t] || (i.$$listenerCount[t] = 0),
                                i.$$listenerCount[t]++
                            } while (i = i.$parent);
                            var r = this;
                            return function() {
                                var i = n.indexOf(e);
                                -1 !== i && (delete n[i],
                                b(r, 1, t))
                            }
                        },
                        $emit: function(t, e) {
                            var n, i, o, a = [], s = this, c = !1, l = {
                                name: t,
                                targetScope: s,
                                stopPropagation: function() {
                                    c = !0
                                },
                                preventDefault: function() {
                                    l.defaultPrevented = !0
                                },
                                defaultPrevented: !1
                            }, u = dt([l], arguments, 1);
                            do {
                                for (n = s.$$listeners[t] || a,
                                l.currentScope = s,
                                i = 0,
                                o = n.length; i < o; i++)
                                    if (n[i])
                                        try {
                                            n[i].apply(null, u)
                                        } catch (t) {
                                            r(t)
                                        }
                                    else
                                        n.splice(i, 1),
                                        i--,
                                        o--;
                                if (c)
                                    break;
                                s = s.$parent
                            } while (s);
                            return l.currentScope = null,
                            l
                        },
                        $broadcast: function(t, e) {
                            var n = this
                              , i = n
                              , o = n
                              , a = {
                                name: t,
                                targetScope: n,
                                preventDefault: function() {
                                    a.defaultPrevented = !0
                                },
                                defaultPrevented: !1
                            };
                            if (!n.$$listenerCount[t])
                                return a;
                            for (var s, c, l, u = dt([a], arguments, 1); i = o; ) {
                                for (a.currentScope = i,
                                c = 0,
                                l = (s = i.$$listeners[t] || []).length; c < l; c++)
                                    if (s[c])
                                        try {
                                            s[c].apply(null, u)
                                        } catch (t) {
                                            r(t)
                                        }
                                    else
                                        s.splice(c, 1),
                                        c--,
                                        l--;
                                if (!(o = i.$$listenerCount[t] && i.$$childHead || i !== n && i.$$nextSibling))
                                    for (; i !== n && !(o = i.$$nextSibling); )
                                        i = i.$parent
                            }
                            return a.currentScope = null,
                            a
                        }
                    };
                    var u = new l
                      , p = u.$$asyncQueue = []
                      , h = u.$$postDigestQueue = []
                      , f = u.$$applyAsyncQueue = []
                      , m = 0;
                    return u;
                    function g(t) {
                        if (u.$$phase)
                            throw e("inprog", "{0} already in progress", u.$$phase);
                        u.$$phase = t
                    }
                    function v() {
                        u.$$phase = null
                    }
                    function y(t, e) {
                        do {
                            t.$$watchersCount += e
                        } while (t = t.$parent)
                    }
                    function b(t, e, n) {
                        do {
                            t.$$listenerCount[n] -= e,
                            0 === t.$$listenerCount[n] && delete t.$$listenerCount[n]
                        } while (t = t.$parent)
                    }
                    function w() {}
                    function S() {
                        for (; f.length; )
                            try {
                                f.shift()()
                            } catch (t) {
                                r(t)
                            }
                        i = null
                    }
                }
                ]
            }
            function Gi() {
                var t = /^\s*(https?|s?ftp|mailto|tel|file):/
                  , e = /^\s*((https?|ftp|file|blob):|data:image\/)/;
                this.aHrefSanitizationWhitelist = function(e) {
                    return F(e) ? (t = e,
                    this) : t
                }
                ,
                this.imgSrcSanitizationWhitelist = function(t) {
                    return F(t) ? (e = t,
                    this) : e
                }
                ,
                this.$get = function() {
                    return function(n, i) {
                        var r = i ? e : t
                          , o = lr(n && n.trim()).href;
                        return "" === o || o.match(r) ? n : "unsafe:" + o
                    }
                }
            }
            Pi.prototype = {
                compile: function(t) {
                    var e = this;
                    this.state = {
                        nextId: 0,
                        filters: {},
                        fn: {
                            vars: [],
                            body: [],
                            own: {}
                        },
                        assign: {
                            vars: [],
                            body: [],
                            own: {}
                        },
                        inputs: []
                    },
                    Ai(t, e.$filter);
                    var n, i = "";
                    if (this.stage = "assign",
                    n = _i(t)) {
                        this.state.computing = "assign";
                        var r = this.nextId();
                        this.recurse(n, r),
                        this.return_(r),
                        i = "fn.assign=" + this.generateFunction("assign", "s,v,l")
                    }
                    var o = Ti(t.body);
                    e.stage = "inputs",
                    M(o, (function(t, n) {
                        var i = "fn" + n;
                        e.state[i] = {
                            vars: [],
                            body: [],
                            own: {}
                        },
                        e.state.computing = i;
                        var r = e.nextId();
                        e.recurse(t, r),
                        e.return_(r),
                        e.state.inputs.push({
                            name: i,
                            isPure: t.isPure
                        }),
                        t.watchId = n
                    }
                    )),
                    this.state.computing = "fn",
                    this.stage = "main",
                    this.recurse(t);
                    var a = '"' + this.USE + " " + this.STRICT + '";\n' + this.filterPrefix() + "var fn=" + this.generateFunction("fn", "s,l,a,i") + i + this.watchFns() + "return fn;"
                      , s = new Function("$filter","getStringValue","ifDefined","plus",a)(this.$filter, bi, Ei, Ci);
                    return this.state = this.stage = void 0,
                    s
                },
                USE: "use",
                STRICT: "strict",
                watchFns: function() {
                    var t = []
                      , e = this.state.inputs
                      , n = this;
                    return M(e, (function(e) {
                        t.push("var " + e.name + "=" + n.generateFunction(e.name, "s")),
                        e.isPure && t.push(e.name, ".isPure=" + JSON.stringify(e.isPure) + ";")
                    }
                    )),
                    e.length && t.push("fn.inputs=[" + e.map((function(t) {
                        return t.name
                    }
                    )).join(",") + "];"),
                    t.join("")
                },
                generateFunction: function(t, e) {
                    return "function(" + e + "){" + this.varsPrefix(t) + this.body(t) + "};"
                },
                filterPrefix: function() {
                    var t = []
                      , e = this;
                    return M(this.state.filters, (function(n, i) {
                        t.push(n + "=$filter(" + e.escape(i) + ")")
                    }
                    )),
                    t.length ? "var " + t.join(",") + ";" : ""
                },
                varsPrefix: function(t) {
                    return this.state[t].vars.length ? "var " + this.state[t].vars.join(",") + ";" : ""
                },
                body: function(t) {
                    return this.state[t].body.join("")
                },
                recurse: function(t, e, n, i, r, o) {
                    var a, s, c, l, u, d = this;
                    if (i = i || R,
                    !o && F(t.watchId))
                        return e = e || this.nextId(),
                        void this.if_("i", this.lazyAssign(e, this.computedMember("i", t.watchId)), this.lazyRecurse(t, e, n, i, r, !0));
                    switch (t.type) {
                    case Mi.Program:
                        M(t.body, (function(e, n) {
                            d.recurse(e.expression, void 0, void 0, (function(t) {
                                s = t
                            }
                            )),
                            n !== t.body.length - 1 ? d.current().body.push(s, ";") : d.return_(s)
                        }
                        ));
                        break;
                    case Mi.Literal:
                        l = this.escape(t.value),
                        this.assign(e, l),
                        i(e || l);
                        break;
                    case Mi.UnaryExpression:
                        this.recurse(t.argument, void 0, void 0, (function(t) {
                            s = t
                        }
                        )),
                        l = t.operator + "(" + this.ifDefined(s, 0) + ")",
                        this.assign(e, l),
                        i(l);
                        break;
                    case Mi.BinaryExpression:
                        this.recurse(t.left, void 0, void 0, (function(t) {
                            a = t
                        }
                        )),
                        this.recurse(t.right, void 0, void 0, (function(t) {
                            s = t
                        }
                        )),
                        l = "+" === t.operator ? this.plus(a, s) : "-" === t.operator ? this.ifDefined(a, 0) + t.operator + this.ifDefined(s, 0) : "(" + a + ")" + t.operator + "(" + s + ")",
                        this.assign(e, l),
                        i(l);
                        break;
                    case Mi.LogicalExpression:
                        e = e || this.nextId(),
                        d.recurse(t.left, e),
                        d.if_("&&" === t.operator ? e : d.not(e), d.lazyRecurse(t.right, e)),
                        i(e);
                        break;
                    case Mi.ConditionalExpression:
                        e = e || this.nextId(),
                        d.recurse(t.test, e),
                        d.if_(e, d.lazyRecurse(t.alternate, e), d.lazyRecurse(t.consequent, e)),
                        i(e);
                        break;
                    case Mi.Identifier:
                        e = e || this.nextId(),
                        n && (n.context = "inputs" === d.stage ? "s" : this.assign(this.nextId(), this.getHasOwnProperty("l", t.name) + "?l:s"),
                        n.computed = !1,
                        n.name = t.name),
                        d.if_("inputs" === d.stage || d.not(d.getHasOwnProperty("l", t.name)), (function() {
                            d.if_("inputs" === d.stage || "s", (function() {
                                r && 1 !== r && d.if_(d.isNull(d.nonComputedMember("s", t.name)), d.lazyAssign(d.nonComputedMember("s", t.name), "{}")),
                                d.assign(e, d.nonComputedMember("s", t.name))
                            }
                            ))
                        }
                        ), e && d.lazyAssign(e, d.nonComputedMember("l", t.name))),
                        i(e);
                        break;
                    case Mi.MemberExpression:
                        a = n && (n.context = this.nextId()) || this.nextId(),
                        e = e || this.nextId(),
                        d.recurse(t.object, a, void 0, (function() {
                            d.if_(d.notNull(a), (function() {
                                t.computed ? (s = d.nextId(),
                                d.recurse(t.property, s),
                                d.getStringValue(s),
                                r && 1 !== r && d.if_(d.not(d.computedMember(a, s)), d.lazyAssign(d.computedMember(a, s), "{}")),
                                l = d.computedMember(a, s),
                                d.assign(e, l),
                                n && (n.computed = !0,
                                n.name = s)) : (r && 1 !== r && d.if_(d.isNull(d.nonComputedMember(a, t.property.name)), d.lazyAssign(d.nonComputedMember(a, t.property.name), "{}")),
                                l = d.nonComputedMember(a, t.property.name),
                                d.assign(e, l),
                                n && (n.computed = !1,
                                n.name = t.property.name))
                            }
                            ), (function() {
                                d.assign(e, "undefined")
                            }
                            )),
                            i(e)
                        }
                        ), !!r);
                        break;
                    case Mi.CallExpression:
                        e = e || this.nextId(),
                        t.filter ? (s = d.filter(t.callee.name),
                        c = [],
                        M(t.arguments, (function(t) {
                            var e = d.nextId();
                            d.recurse(t, e),
                            c.push(e)
                        }
                        )),
                        l = s + "(" + c.join(",") + ")",
                        d.assign(e, l),
                        i(e)) : (s = d.nextId(),
                        a = {},
                        c = [],
                        d.recurse(t.callee, s, a, (function() {
                            d.if_(d.notNull(s), (function() {
                                M(t.arguments, (function(e) {
                                    d.recurse(e, t.constant ? void 0 : d.nextId(), void 0, (function(t) {
                                        c.push(t)
                                    }
                                    ))
                                }
                                )),
                                l = a.name ? d.member(a.context, a.name, a.computed) + "(" + c.join(",") + ")" : s + "(" + c.join(",") + ")",
                                d.assign(e, l)
                            }
                            ), (function() {
                                d.assign(e, "undefined")
                            }
                            )),
                            i(e)
                        }
                        )));
                        break;
                    case Mi.AssignmentExpression:
                        s = this.nextId(),
                        a = {},
                        this.recurse(t.left, void 0, a, (function() {
                            d.if_(d.notNull(a.context), (function() {
                                d.recurse(t.right, s),
                                l = d.member(a.context, a.name, a.computed) + t.operator + s,
                                d.assign(e, l),
                                i(e || l)
                            }
                            ))
                        }
                        ), 1);
                        break;
                    case Mi.ArrayExpression:
                        c = [],
                        M(t.elements, (function(e) {
                            d.recurse(e, t.constant ? void 0 : d.nextId(), void 0, (function(t) {
                                c.push(t)
                            }
                            ))
                        }
                        )),
                        l = "[" + c.join(",") + "]",
                        this.assign(e, l),
                        i(e || l);
                        break;
                    case Mi.ObjectExpression:
                        c = [],
                        u = !1,
                        M(t.properties, (function(t) {
                            t.computed && (u = !0)
                        }
                        )),
                        u ? (e = e || this.nextId(),
                        this.assign(e, "{}"),
                        M(t.properties, (function(t) {
                            t.computed ? (a = d.nextId(),
                            d.recurse(t.key, a)) : a = t.key.type === Mi.Identifier ? t.key.name : "" + t.key.value,
                            s = d.nextId(),
                            d.recurse(t.value, s),
                            d.assign(d.member(e, a, t.computed), s)
                        }
                        ))) : (M(t.properties, (function(e) {
                            d.recurse(e.value, t.constant ? void 0 : d.nextId(), void 0, (function(t) {
                                c.push(d.escape(e.key.type === Mi.Identifier ? e.key.name : "" + e.key.value) + ":" + t)
                            }
                            ))
                        }
                        )),
                        l = "{" + c.join(",") + "}",
                        this.assign(e, l)),
                        i(e || l);
                        break;
                    case Mi.ThisExpression:
                        this.assign(e, "s"),
                        i(e || "s");
                        break;
                    case Mi.LocalsExpression:
                        this.assign(e, "l"),
                        i(e || "l");
                        break;
                    case Mi.NGValueParameter:
                        this.assign(e, "v"),
                        i(e || "v")
                    }
                },
                getHasOwnProperty: function(t, e) {
                    var n = t + "." + e
                      , i = this.current().own;
                    return i.hasOwnProperty(n) || (i[n] = this.nextId(!1, t + "&&(" + this.escape(e) + " in " + t + ")")),
                    i[n]
                },
                assign: function(t, e) {
                    if (t)
                        return this.current().body.push(t, "=", e, ";"),
                        t
                },
                filter: function(t) {
                    return this.state.filters.hasOwnProperty(t) || (this.state.filters[t] = this.nextId(!0)),
                    this.state.filters[t]
                },
                ifDefined: function(t, e) {
                    return "ifDefined(" + t + "," + this.escape(e) + ")"
                },
                plus: function(t, e) {
                    return "plus(" + t + "," + e + ")"
                },
                return_: function(t) {
                    this.current().body.push("return ", t, ";")
                },
                if_: function(t, e, n) {
                    if (!0 === t)
                        e();
                    else {
                        var i = this.current().body;
                        i.push("if(", t, "){"),
                        e(),
                        i.push("}"),
                        n && (i.push("else{"),
                        n(),
                        i.push("}"))
                    }
                },
                not: function(t) {
                    return "!(" + t + ")"
                },
                isNull: function(t) {
                    return t + "==null"
                },
                notNull: function(t) {
                    return t + "!=null"
                },
                nonComputedMember: function(t, e) {
                    return /^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(e) ? t + "." + e : t + '["' + e.replace(/[^$_a-zA-Z0-9]/g, this.stringEscapeFn) + '"]'
                },
                computedMember: function(t, e) {
                    return t + "[" + e + "]"
                },
                member: function(t, e, n) {
                    return n ? this.computedMember(t, e) : this.nonComputedMember(t, e)
                },
                getStringValue: function(t) {
                    this.assign(t, "getStringValue(" + t + ")")
                },
                lazyRecurse: function(t, e, n, i, r, o) {
                    var a = this;
                    return function() {
                        a.recurse(t, e, n, i, r, o)
                    }
                },
                lazyAssign: function(t, e) {
                    var n = this;
                    return function() {
                        n.assign(t, e)
                    }
                },
                stringEscapeRegex: /[^ a-zA-Z0-9]/g,
                stringEscapeFn: function(t) {
                    return "\\u" + ("0000" + t.charCodeAt(0).toString(16)).slice(-4)
                },
                escape: function(t) {
                    if (z(t))
                        return "'" + t.replace(this.stringEscapeRegex, this.stringEscapeFn) + "'";
                    if (G(t))
                        return t.toString();
                    if (!0 === t)
                        return "true";
                    if (!1 === t)
                        return "false";
                    if (null === t)
                        return "null";
                    if (void 0 === t)
                        return "undefined";
                    throw vi("esc", "IMPOSSIBLE")
                },
                nextId: function(t, e) {
                    var n = "v" + this.state.nextId++;
                    return t || this.current().vars.push(n + (e ? "=" + e : "")),
                    n
                },
                current: function() {
                    return this.state[this.state.computing]
                }
            },
            Ii.prototype = {
                compile: function(t) {
                    var e, n, i = this;
                    Ai(t, i.$filter),
                    (e = _i(t)) && (n = this.recurse(e));
                    var r, o = Ti(t.body);
                    o && (r = [],
                    M(o, (function(t, e) {
                        var n = i.recurse(t);
                        n.isPure = t.isPure,
                        t.input = n,
                        r.push(n),
                        t.watchId = e
                    }
                    )));
                    var a = [];
                    M(t.body, (function(t) {
                        a.push(i.recurse(t.expression))
                    }
                    ));
                    var s = 0 === t.body.length ? R : 1 === t.body.length ? a[0] : function(t, e) {
                        var n;
                        return M(a, (function(i) {
                            n = i(t, e)
                        }
                        )),
                        n
                    }
                    ;
                    return n && (s.assign = function(t, e, i) {
                        return n(t, i, e)
                    }
                    ),
                    r && (s.inputs = r),
                    s
                },
                recurse: function(t, e, n) {
                    var i, r, o, a = this;
                    if (t.input)
                        return this.inputs(t.input, t.watchId);
                    switch (t.type) {
                    case Mi.Literal:
                        return this.value(t.value, e);
                    case Mi.UnaryExpression:
                        return r = this.recurse(t.argument),
                        this["unary" + t.operator](r, e);
                    case Mi.BinaryExpression:
                    case Mi.LogicalExpression:
                        return i = this.recurse(t.left),
                        r = this.recurse(t.right),
                        this["binary" + t.operator](i, r, e);
                    case Mi.ConditionalExpression:
                        return this["ternary?:"](this.recurse(t.test), this.recurse(t.alternate), this.recurse(t.consequent), e);
                    case Mi.Identifier:
                        return a.identifier(t.name, e, n);
                    case Mi.MemberExpression:
                        return i = this.recurse(t.object, !1, !!n),
                        t.computed || (r = t.property.name),
                        t.computed && (r = this.recurse(t.property)),
                        t.computed ? this.computedMember(i, r, e, n) : this.nonComputedMember(i, r, e, n);
                    case Mi.CallExpression:
                        return o = [],
                        M(t.arguments, (function(t) {
                            o.push(a.recurse(t))
                        }
                        )),
                        t.filter && (r = this.$filter(t.callee.name)),
                        t.filter || (r = this.recurse(t.callee, !0)),
                        t.filter ? function(t, n, i, a) {
                            for (var s = [], c = 0; c < o.length; ++c)
                                s.push(o[c](t, n, i, a));
                            var l = r.apply(void 0, s, a);
                            return e ? {
                                context: void 0,
                                name: void 0,
                                value: l
                            } : l
                        }
                        : function(t, n, i, a) {
                            var s, c = r(t, n, i, a);
                            if (null != c.value) {
                                for (var l = [], u = 0; u < o.length; ++u)
                                    l.push(o[u](t, n, i, a));
                                s = c.value.apply(c.context, l)
                            }
                            return e ? {
                                value: s
                            } : s
                        }
                        ;
                    case Mi.AssignmentExpression:
                        return i = this.recurse(t.left, !0, 1),
                        r = this.recurse(t.right),
                        function(t, n, o, a) {
                            var s = i(t, n, o, a)
                              , c = r(t, n, o, a);
                            return s.context[s.name] = c,
                            e ? {
                                value: c
                            } : c
                        }
                        ;
                    case Mi.ArrayExpression:
                        return o = [],
                        M(t.elements, (function(t) {
                            o.push(a.recurse(t))
                        }
                        )),
                        function(t, n, i, r) {
                            for (var a = [], s = 0; s < o.length; ++s)
                                a.push(o[s](t, n, i, r));
                            return e ? {
                                value: a
                            } : a
                        }
                        ;
                    case Mi.ObjectExpression:
                        return o = [],
                        M(t.properties, (function(t) {
                            t.computed ? o.push({
                                key: a.recurse(t.key),
                                computed: !0,
                                value: a.recurse(t.value)
                            }) : o.push({
                                key: t.key.type === Mi.Identifier ? t.key.name : "" + t.key.value,
                                computed: !1,
                                value: a.recurse(t.value)
                            })
                        }
                        )),
                        function(t, n, i, r) {
                            for (var a = {}, s = 0; s < o.length; ++s)
                                o[s].computed ? a[o[s].key(t, n, i, r)] = o[s].value(t, n, i, r) : a[o[s].key] = o[s].value(t, n, i, r);
                            return e ? {
                                value: a
                            } : a
                        }
                        ;
                    case Mi.ThisExpression:
                        return function(t) {
                            return e ? {
                                value: t
                            } : t
                        }
                        ;
                    case Mi.LocalsExpression:
                        return function(t, n) {
                            return e ? {
                                value: n
                            } : n
                        }
                        ;
                    case Mi.NGValueParameter:
                        return function(t, n, i) {
                            return e ? {
                                value: i
                            } : i
                        }
                    }
                },
                "unary+": function(t, e) {
                    return function(n, i, r, o) {
                        var a = t(n, i, r, o);
                        return a = F(a) ? +a : 0,
                        e ? {
                            value: a
                        } : a
                    }
                },
                "unary-": function(t, e) {
                    return function(n, i, r, o) {
                        var a = t(n, i, r, o);
                        return a = F(a) ? -a : -0,
                        e ? {
                            value: a
                        } : a
                    }
                },
                "unary!": function(t, e) {
                    return function(n, i, r, o) {
                        var a = !t(n, i, r, o);
                        return e ? {
                            value: a
                        } : a
                    }
                },
                "binary+": function(t, e, n) {
                    return function(i, r, o, a) {
                        var s = Ci(t(i, r, o, a), e(i, r, o, a));
                        return n ? {
                            value: s
                        } : s
                    }
                },
                "binary-": function(t, e, n) {
                    return function(i, r, o, a) {
                        var s = t(i, r, o, a)
                          , c = e(i, r, o, a)
                          , l = (F(s) ? s : 0) - (F(c) ? c : 0);
                        return n ? {
                            value: l
                        } : l
                    }
                },
                "binary*": function(t, e, n) {
                    return function(i, r, o, a) {
                        var s = t(i, r, o, a) * e(i, r, o, a);
                        return n ? {
                            value: s
                        } : s
                    }
                },
                "binary/": function(t, e, n) {
                    return function(i, r, o, a) {
                        var s = t(i, r, o, a) / e(i, r, o, a);
                        return n ? {
                            value: s
                        } : s
                    }
                },
                "binary%": function(t, e, n) {
                    return function(i, r, o, a) {
                        var s = t(i, r, o, a) % e(i, r, o, a);
                        return n ? {
                            value: s
                        } : s
                    }
                },
                "binary===": function(t, e, n) {
                    return function(i, r, o, a) {
                        var s = t(i, r, o, a) === e(i, r, o, a);
                        return n ? {
                            value: s
                        } : s
                    }
                },
                "binary!==": function(t, e, n) {
                    return function(i, r, o, a) {
                        var s = t(i, r, o, a) !== e(i, r, o, a);
                        return n ? {
                            value: s
                        } : s
                    }
                },
                "binary==": function(t, e, n) {
                    return function(i, r, o, a) {
                        var s = t(i, r, o, a) == e(i, r, o, a);
                        return n ? {
                            value: s
                        } : s
                    }
                },
                "binary!=": function(t, e, n) {
                    return function(i, r, o, a) {
                        var s = t(i, r, o, a) != e(i, r, o, a);
                        return n ? {
                            value: s
                        } : s
                    }
                },
                "binary<": function(t, e, n) {
                    return function(i, r, o, a) {
                        var s = t(i, r, o, a) < e(i, r, o, a);
                        return n ? {
                            value: s
                        } : s
                    }
                },
                "binary>": function(t, e, n) {
                    return function(i, r, o, a) {
                        var s = t(i, r, o, a) > e(i, r, o, a);
                        return n ? {
                            value: s
                        } : s
                    }
                },
                "binary<=": function(t, e, n) {
                    return function(i, r, o, a) {
                        var s = t(i, r, o, a) <= e(i, r, o, a);
                        return n ? {
                            value: s
                        } : s
                    }
                },
                "binary>=": function(t, e, n) {
                    return function(i, r, o, a) {
                        var s = t(i, r, o, a) >= e(i, r, o, a);
                        return n ? {
                            value: s
                        } : s
                    }
                },
                "binary&&": function(t, e, n) {
                    return function(i, r, o, a) {
                        var s = t(i, r, o, a) && e(i, r, o, a);
                        return n ? {
                            value: s
                        } : s
                    }
                },
                "binary||": function(t, e, n) {
                    return function(i, r, o, a) {
                        var s = t(i, r, o, a) || e(i, r, o, a);
                        return n ? {
                            value: s
                        } : s
                    }
                },
                "ternary?:": function(t, e, n, i) {
                    return function(r, o, a, s) {
                        var c = t(r, o, a, s) ? e(r, o, a, s) : n(r, o, a, s);
                        return i ? {
                            value: c
                        } : c
                    }
                },
                value: function(t, e) {
                    return function() {
                        return e ? {
                            context: void 0,
                            name: void 0,
                            value: t
                        } : t
                    }
                },
                identifier: function(t, e, n) {
                    return function(i, r, o, a) {
                        var s = r && t in r ? r : i;
                        n && 1 !== n && s && null == s[t] && (s[t] = {});
                        var c = s ? s[t] : void 0;
                        return e ? {
                            context: s,
                            name: t,
                            value: c
                        } : c
                    }
                },
                computedMember: function(t, e, n, i) {
                    return function(r, o, a, s) {
                        var c, l, u = t(r, o, a, s);
                        return null != u && (c = bi(c = e(r, o, a, s)),
                        i && 1 !== i && u && !u[c] && (u[c] = {}),
                        l = u[c]),
                        n ? {
                            context: u,
                            name: c,
                            value: l
                        } : l
                    }
                },
                nonComputedMember: function(t, e, n, i) {
                    return function(r, o, a, s) {
                        var c = t(r, o, a, s);
                        i && 1 !== i && c && null == c[e] && (c[e] = {});
                        var l = null != c ? c[e] : void 0;
                        return n ? {
                            context: c,
                            name: e,
                            value: l
                        } : l
                    }
                },
                inputs: function(t, e) {
                    return function(n, i, r, o) {
                        return o ? o[e] : t(n, i, r)
                    }
                }
            },
            ki.prototype = {
                constructor: ki,
                parse: function(t) {
                    var e = this.getAst(t)
                      , n = this.astCompiler.compile(e.ast);
                    return n.literal = function(t) {
                        return 0 === t.body.length || 1 === t.body.length && (t.body[0].expression.type === Mi.Literal || t.body[0].expression.type === Mi.ArrayExpression || t.body[0].expression.type === Mi.ObjectExpression)
                    }(e.ast),
                    n.constant = function(t) {
                        return t.constant
                    }(e.ast),
                    n.oneTime = e.oneTime,
                    n
                },
                getAst: function(t) {
                    var e = !1;
                    return ":" === (t = t.trim()).charAt(0) && ":" === t.charAt(1) && (e = !0,
                    t = t.substring(2)),
                    {
                        ast: this.ast.ast(t),
                        oneTime: e
                    }
                }
            };
            var Hi = o("$sce")
              , Wi = {
                HTML: "html",
                CSS: "css",
                MEDIA_URL: "mediaUrl",
                URL: "url",
                RESOURCE_URL: "resourceUrl",
                JS: "js"
            }
              , qi = /_([a-z])/g;
            function Xi(t) {
                return t.replace(qi, Qt)
            }
            function Yi(t) {
                var e = [];
                return F(t) && M(t, (function(t) {
                    e.push(function(t) {
                        if ("self" === t)
                            return t;
                        if (z(t)) {
                            if (t.indexOf("***") > -1)
                                throw Hi("iwcard", "Illegal sequence *** in string matcher.  String: {0}", t);
                            return t = et(t).replace(/\\\*\\\*/g, ".*").replace(/\\\*/g, "[^:/.?&;]*"),
                            new RegExp("^" + t + "$")
                        }
                        if (Y(t))
                            return new RegExp("^" + t.source + "$");
                        throw Hi("imatcher", 'Matchers may only be "self", string patterns or RegExp objects')
                    }(t))
                }
                )),
                e
            }
            function Ki() {
                this.SCE_CONTEXTS = Wi;
                var t = ["self"]
                  , n = [];
                this.resourceUrlWhitelist = function(e) {
                    return arguments.length && (t = Yi(e)),
                    t
                }
                ,
                this.resourceUrlBlacklist = function(t) {
                    return arguments.length && (n = Yi(t)),
                    n
                }
                ,
                this.$get = ["$injector", "$$sanitizeUri", function(i, r) {
                    var o = function(t) {
                        throw Hi("unsafe", "Attempting to use an unsafe value in a safe context.")
                    };
                    function a(t, n) {
                        return "self" === t ? ur(n, sr) || function(t) {
                            return ur(t, function() {
                                if (e.document.baseURI)
                                    return e.document.baseURI;
                                or || ((or = e.document.createElement("a")).href = ".",
                                or = or.cloneNode(!1));
                                return or.href
                            }())
                        }(n) : !!t.exec(n.href)
                    }
                    function s(t) {
                        var e = function(t) {
                            this.$$unwrapTrustedValue = function() {
                                return t
                            }
                        };
                        return t && (e.prototype = new t),
                        e.prototype.valueOf = function() {
                            return this.$$unwrapTrustedValue()
                        }
                        ,
                        e.prototype.toString = function() {
                            return this.$$unwrapTrustedValue().toString()
                        }
                        ,
                        e
                    }
                    i.has("$sanitize") && (o = i.get("$sanitize"));
                    var c = s()
                      , l = {};
                    return l[Wi.HTML] = s(c),
                    l[Wi.CSS] = s(c),
                    l[Wi.MEDIA_URL] = s(c),
                    l[Wi.URL] = s(l[Wi.MEDIA_URL]),
                    l[Wi.JS] = s(c),
                    l[Wi.RESOURCE_URL] = s(l[Wi.URL]),
                    {
                        trustAs: function(t, e) {
                            var n = l.hasOwnProperty(t) ? l[t] : null;
                            if (!n)
                                throw Hi("icontext", "Attempted to trust a value in invalid context. Context: {0}; Value: {1}", t, e);
                            if (null === e || V(e) || "" === e)
                                return e;
                            if ("string" != typeof e)
                                throw Hi("itype", "Attempted to trust a non-string value in a content requiring a string: Context: {0}", t);
                            return new n(e)
                        },
                        getTrusted: function(e, i) {
                            if (null === i || V(i) || "" === i)
                                return i;
                            var s = l.hasOwnProperty(e) ? l[e] : null;
                            if (s && i instanceof s)
                                return i.$$unwrapTrustedValue();
                            if (X(i.$$unwrapTrustedValue) && (i = i.$$unwrapTrustedValue()),
                            e === Wi.MEDIA_URL || e === Wi.URL)
                                return r(i.toString(), e === Wi.MEDIA_URL);
                            if (e === Wi.RESOURCE_URL) {
                                if (function(e) {
                                    var i, r, o = lr(e.toString()), s = !1;
                                    for (i = 0,
                                    r = t.length; i < r; i++)
                                        if (a(t[i], o)) {
                                            s = !0;
                                            break
                                        }
                                    if (s)
                                        for (i = 0,
                                        r = n.length; i < r; i++)
                                            if (a(n[i], o)) {
                                                s = !1;
                                                break
                                            }
                                    return s
                                }(i))
                                    return i;
                                throw Hi("insecurl", "Blocked loading resource from url not allowed by $sceDelegate policy.  URL: {0}", i.toString())
                            }
                            if (e === Wi.HTML)
                                return o(i);
                            throw Hi("unsafe", "Attempting to use an unsafe value in a safe context.")
                        },
                        valueOf: function(t) {
                            return t instanceof c ? t.$$unwrapTrustedValue() : t
                        }
                    }
                }
                ]
            }
            function Zi() {
                var t = !0;
                this.enabled = function(e) {
                    return arguments.length && (t = !!e),
                    t
                }
                ,
                this.$get = ["$parse", "$sceDelegate", function(e, n) {
                    if (t && a < 8)
                        throw Hi("iequirks", "Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks mode.  You can fix this by adding the text <!doctype html> to the top of your HTML document.  See http://docs.angularjs.org/api/ng.$sce for more information.");
                    var i = Gt(Wi);
                    i.isEnabled = function() {
                        return t
                    }
                    ,
                    i.trustAs = n.trustAs,
                    i.getTrusted = n.getTrusted,
                    i.valueOf = n.valueOf,
                    t || (i.trustAs = i.getTrusted = function(t, e) {
                        return e
                    }
                    ,
                    i.valueOf = L),
                    i.parseAs = function(t, n) {
                        var r = e(n);
                        return r.literal && r.constant ? r : e(n, (function(e) {
                            return i.getTrusted(t, e)
                        }
                        ))
                    }
                    ;
                    var r = i.parseAs
                      , o = i.getTrusted
                      , s = i.trustAs;
                    return M(Wi, (function(t, e) {
                        var n = p(e);
                        i[Xi("parse_as_" + n)] = function(e) {
                            return r(t, e)
                        }
                        ,
                        i[Xi("get_trusted_" + n)] = function(e) {
                            return o(t, e)
                        }
                        ,
                        i[Xi("trust_as_" + n)] = function(e) {
                            return s(t, e)
                        }
                    }
                    )),
                    i
                }
                ]
            }
            function Ji() {
                this.$get = ["$window", "$document", function(t, e) {
                    var n = {}
                      , i = !(!(t.nw && t.nw.process) && t.chrome && (t.chrome.app && t.chrome.app.runtime || !t.chrome.app && t.chrome.runtime && t.chrome.runtime.id)) && t.history && t.history.pushState
                      , r = I((/android (\d+)/.exec(p((t.navigator || {}).userAgent)) || [])[1])
                      , o = /Boxee/i.test((t.navigator || {}).userAgent)
                      , s = e[0] || {}
                      , c = s.body && s.body.style
                      , l = !1
                      , u = !1;
                    return c && (l = !(!("transition"in c) && !("webkitTransition"in c)),
                    u = !(!("animation"in c) && !("webkitAnimation"in c))),
                    {
                        history: !(!i || r < 4 || o),
                        hasEvent: function(t) {
                            if ("input" === t && a)
                                return !1;
                            if (V(n[t])) {
                                var e = s.createElement("div");
                                n[t] = "on" + t in e
                            }
                            return n[t]
                        },
                        csp: lt(),
                        transitions: l,
                        animations: u,
                        android: r
                    }
                }
                ]
            }
            function Qi() {
                this.$get = N((function(t) {
                    return new $i(t)
                }
                ))
            }
            function $i(t) {
                var e = {}
                  , n = []
                  , i = this.ALL_TASKS_TYPE = "$$all$$"
                  , r = this.DEFAULT_TASK_TYPE = "$$default$$";
                function o() {
                    var t = n.pop();
                    return t && t.cb
                }
                function a(t) {
                    for (var e = n.length - 1; e >= 0; --e) {
                        var i = n[e];
                        if (i.type === t)
                            return n.splice(e, 1),
                            i.cb
                    }
                }
                this.completeTask = function(n, s) {
                    s = s || r;
                    try {
                        n()
                    } finally {
                        !function(t) {
                            e[t = t || r] && (e[t]--,
                            e[i]--)
                        }(s);
                        var c = e[s]
                          , l = e[i];
                        if (!l || !c)
                            for (var u, d = l ? a : o; u = d(s); )
                                try {
                                    u()
                                } catch (e) {
                                    t.error(e)
                                }
                    }
                }
                ,
                this.incTaskCount = function(t) {
                    e[t = t || r] = (e[t] || 0) + 1,
                    e[i] = (e[i] || 0) + 1
                }
                ,
                this.notifyWhenNoPendingTasks = function(t, r) {
                    e[r = r || i] ? n.push({
                        type: r,
                        cb: t
                    }) : t()
                }
            }
            var tr = o("$templateRequest");
            function er() {
                var t;
                this.httpOptions = function(e) {
                    return e ? (t = e,
                    this) : t
                }
                ,
                this.$get = ["$exceptionHandler", "$templateCache", "$http", "$q", "$sce", function(e, n, i, r, o) {
                    function a(s, c) {
                        a.totalPendingRequests++,
                        z(s) && !V(n.get(s)) || (s = o.getTrustedResourceUrl(s));
                        var l = i.defaults && i.defaults.transformResponse;
                        return W(l) ? l = l.filter((function(t) {
                            return t !== Fn
                        }
                        )) : l === Fn && (l = null),
                        i.get(s, _({
                            cache: n,
                            transformResponse: l
                        }, t)).finally((function() {
                            a.totalPendingRequests--
                        }
                        )).then((function(t) {
                            return n.put(s, t.data)
                        }
                        ), (function(t) {
                            c || (t = tr("tpload", "Failed to load template: {0} (HTTP status: {1} {2})", s, t.status, t.statusText),
                            e(t));
                            return r.reject(t)
                        }
                        ))
                    }
                    return a.totalPendingRequests = 0,
                    a
                }
                ]
            }
            function nr() {
                this.$get = ["$rootScope", "$browser", "$location", function(t, e, n) {
                    var i = {
                        findBindings: function(t, e, n) {
                            var i = t.getElementsByClassName("ng-binding")
                              , r = [];
                            return M(i, (function(t) {
                                var i = w.element(t).data("$binding");
                                i && M(i, (function(i) {
                                    n ? new RegExp("(^|\\s)" + et(e) + "(\\s|\\||$)").test(i) && r.push(t) : -1 !== i.indexOf(e) && r.push(t)
                                }
                                ))
                            }
                            )),
                            r
                        },
                        findModels: function(t, e, n) {
                            for (var i = ["ng-", "data-ng-", "ng\\:"], r = 0; r < i.length; ++r) {
                                var o = "[" + i[r] + "model" + (n ? "=" : "*=") + '"' + e + '"]'
                                  , a = t.querySelectorAll(o);
                                if (a.length)
                                    return a
                            }
                        },
                        getLocation: function() {
                            return n.url()
                        },
                        setLocation: function(e) {
                            e !== n.url() && (n.url(e),
                            t.$digest())
                        },
                        whenStable: function(t) {
                            e.notifyWhenNoOutstandingRequests(t)
                        }
                    };
                    return i
                }
                ]
            }
            var ir = o("$timeout");
            function rr() {
                this.$get = ["$rootScope", "$browser", "$q", "$$q", "$exceptionHandler", function(t, e, n, i, r) {
                    var o = {};
                    function a(a, s, c) {
                        X(a) || (c = s,
                        s = a,
                        a = R);
                        var l, u = pt(arguments, 3), d = F(c) && !c, p = (d ? i : n).defer(), h = p.promise;
                        return l = e.defer((function() {
                            try {
                                p.resolve(a.apply(null, u))
                            } catch (t) {
                                p.reject(t),
                                r(t)
                            } finally {
                                delete o[h.$$timeoutId]
                            }
                            d || t.$apply()
                        }
                        ), s, "$timeout"),
                        h.$$timeoutId = l,
                        o[l] = p,
                        h
                    }
                    return a.cancel = function(t) {
                        if (!t)
                            return !1;
                        if (!t.hasOwnProperty("$$timeoutId"))
                            throw ir("badprom", "`$timeout.cancel()` called with a promise that was not generated by `$timeout()`.");
                        if (!o.hasOwnProperty(t.$$timeoutId))
                            return !1;
                        var n = t.$$timeoutId
                          , i = o[n];
                        return Ui(i.promise),
                        i.reject("canceled"),
                        delete o[n],
                        e.defer.cancel(n)
                    }
                    ,
                    a
                }
                ]
            }
            var or, ar = e.document.createElement("a"), sr = lr(e.location.href);
            ar.href = "http://[::1]";
            var cr = "[::1]" === ar.hostname;
            function lr(t) {
                if (!z(t))
                    return t;
                var e = t;
                a && (ar.setAttribute("href", e),
                e = ar.href),
                ar.setAttribute("href", e);
                var n = ar.hostname;
                return !cr && n.indexOf(":") > -1 && (n = "[" + n + "]"),
                {
                    href: ar.href,
                    protocol: ar.protocol ? ar.protocol.replace(/:$/, "") : "",
                    host: ar.host,
                    search: ar.search ? ar.search.replace(/^\?/, "") : "",
                    hash: ar.hash ? ar.hash.replace(/^#/, "") : "",
                    hostname: n,
                    port: ar.port,
                    pathname: "/" === ar.pathname.charAt(0) ? ar.pathname : "/" + ar.pathname
                }
            }
            function ur(t, e) {
                return t = lr(t),
                e = lr(e),
                t.protocol === e.protocol && t.host === e.host
            }
            function dr() {
                this.$get = N(e)
            }
            function pr(t) {
                var e = t[0] || {}
                  , n = {}
                  , i = "";
                function r(t) {
                    try {
                        return decodeURIComponent(t)
                    } catch (e) {
                        return t
                    }
                }
                return function() {
                    var t, o, a, s, c, l = function(t) {
                        try {
                            return t.cookie || ""
                        } catch (t) {
                            return ""
                        }
                    }(e);
                    if (l !== i)
                        for (t = (i = l).split("; "),
                        n = {},
                        a = 0; a < t.length; a++)
                            (s = (o = t[a]).indexOf("=")) > 0 && (c = r(o.substring(0, s)),
                            V(n[c]) && (n[c] = r(o.substring(s + 1))));
                    return n
                }
            }
            function hr() {
                this.$get = pr
            }
            function fr(t) {
                function e(n, i) {
                    if (U(n)) {
                        var r = {};
                        return M(n, (function(t, n) {
                            r[n] = e(n, t)
                        }
                        )),
                        r
                    }
                    return t.factory(n + "Filter", i)
                }
                this.register = e,
                this.$get = ["$injector", function(t) {
                    return function(e) {
                        return t.get(e + "Filter")
                    }
                }
                ],
                e("currency", yr),
                e("date", Pr),
                e("filter", mr),
                e("json", Ir),
                e("limitTo", Rr),
                e("lowercase", kr),
                e("number", br),
                e("orderBy", Nr),
                e("uppercase", Dr)
            }
            function mr() {
                return function(t, e, n, i) {
                    if (!x(t)) {
                        if (null == t)
                            return t;
                        throw o("filter")("notarray", "Expected array but received: {0}", t)
                    }
                    var r, a;
                    switch (i = i || "$",
                    vr(e)) {
                    case "function":
                        r = e;
                        break;
                    case "boolean":
                    case "null":
                    case "number":
                    case "string":
                        a = !0;
                    case "object":
                        r = function(t, e, n, i) {
                            var r = U(t) && n in t;
                            !0 === e ? e = ct : X(e) || (e = function(t, e) {
                                return !V(t) && (null === t || null === e ? t === e : !(U(e) || U(t) && !j(t)) && (t = p("" + t),
                                e = p("" + e),
                                -1 !== t.indexOf(e)))
                            }
                            );
                            return function(o) {
                                return r && !U(o) ? gr(o, t[n], e, n, !1) : gr(o, t, e, n, i)
                            }
                        }(e, n, i, a);
                        break;
                    default:
                        return t
                    }
                    return Array.prototype.filter.call(t, r)
                }
            }
            function gr(t, e, n, i, r, o) {
                var a = vr(t)
                  , s = vr(e);
                if ("string" === s && "!" === e.charAt(0))
                    return !gr(t, e.substring(1), n, i, r);
                if (W(t))
                    return t.some((function(t) {
                        return gr(t, e, n, i, r)
                    }
                    ));
                switch (a) {
                case "object":
                    var c;
                    if (r) {
                        for (c in t)
                            if (c.charAt && "$" !== c.charAt(0) && gr(t[c], e, n, i, !0))
                                return !0;
                        return !o && gr(t, e, n, i, !1)
                    }
                    if ("object" === s) {
                        for (c in e) {
                            var l = e[c];
                            if (!X(l) && !V(l)) {
                                var u = c === i;
                                if (!gr(u ? t : t[c], l, n, i, u, u))
                                    return !1
                            }
                        }
                        return !0
                    }
                    return n(t, e);
                case "function":
                    return !1;
                default:
                    return n(t, e)
                }
            }
            function vr(t) {
                return null === t ? "null" : typeof t
            }
            pr.$inject = ["$document"],
            fr.$inject = ["$provide"];
            function yr(t) {
                var e = t.NUMBER_FORMATS;
                return function(t, n, i) {
                    V(n) && (n = e.CURRENCY_SYM),
                    V(i) && (i = e.PATTERNS[1].maxFrac);
                    var r = n ? /\u00A4/g : /\s*\u00A4\s*/g;
                    return null == t ? t : wr(t, e.PATTERNS[1], e.GROUP_SEP, e.DECIMAL_SEP, i).replace(r, n)
                }
            }
            function br(t) {
                var e = t.NUMBER_FORMATS;
                return function(t, n) {
                    return null == t ? t : wr(t, e.PATTERNS[0], e.GROUP_SEP, e.DECIMAL_SEP, n)
                }
            }
            function wr(t, e, n, i, r) {
                if (!z(t) && !G(t) || isNaN(t))
                    return "";
                var o, a = !isFinite(t), s = !1, c = Math.abs(t) + "", l = "";
                if (a)
                    l = "∞";
                else {
                    (function(t, e, n, i) {
                        var r = t.d
                          , o = r.length - t.i
                          , a = (e = V(e) ? Math.min(Math.max(n, o), i) : +e) + t.i
                          , s = r[a];
                        if (a > 0) {
                            r.splice(Math.max(t.i, a));
                            for (var c = a; c < r.length; c++)
                                r[c] = 0
                        } else {
                            o = Math.max(0, o),
                            t.i = 1,
                            r.length = Math.max(1, a = e + 1),
                            r[0] = 0;
                            for (var l = 1; l < a; l++)
                                r[l] = 0
                        }
                        if (s >= 5)
                            if (a - 1 < 0) {
                                for (var u = 0; u > a; u--)
                                    r.unshift(0),
                                    t.i++;
                                r.unshift(1),
                                t.i++
                            } else
                                r[a - 1]++;
                        for (; o < Math.max(0, e); o++)
                            r.push(0);
                        var d = r.reduceRight((function(t, e, n, i) {
                            return e += t,
                            i[n] = e % 10,
                            Math.floor(e / 10)
                        }
                        ), 0);
                        d && (r.unshift(d),
                        t.i++)
                    }
                    )(o = function(t) {
                        var e, n, i, r, o, a = 0;
                        for ((n = t.indexOf(".")) > -1 && (t = t.replace(".", "")),
                        (i = t.search(/e/i)) > 0 ? (n < 0 && (n = i),
                        n += +t.slice(i + 1),
                        t = t.substring(0, i)) : n < 0 && (n = t.length),
                        i = 0; "0" === t.charAt(i); i++)
                            ;
                        if (i === (o = t.length))
                            e = [0],
                            n = 1;
                        else {
                            for (o--; "0" === t.charAt(o); )
                                o--;
                            for (n -= i,
                            e = [],
                            r = 0; i <= o; i++,
                            r++)
                                e[r] = +t.charAt(i)
                        }
                        return n > 22 && (e = e.splice(0, 21),
                        a = n - 1,
                        n = 1),
                        {
                            d: e,
                            e: a,
                            i: n
                        }
                    }(c), r, e.minFrac, e.maxFrac);
                    var u = o.d
                      , d = o.i
                      , p = o.e
                      , h = [];
                    for (s = u.reduce((function(t, e) {
                        return t && !e
                    }
                    ), !0); d < 0; )
                        u.unshift(0),
                        d++;
                    d > 0 ? h = u.splice(d, u.length) : (h = u,
                    u = [0]);
                    var f = [];
                    for (u.length >= e.lgSize && f.unshift(u.splice(-e.lgSize, u.length).join("")); u.length > e.gSize; )
                        f.unshift(u.splice(-e.gSize, u.length).join(""));
                    u.length && f.unshift(u.join("")),
                    l = f.join(n),
                    h.length && (l += i + h.join("")),
                    p && (l += "e+" + p)
                }
                return t < 0 && !s ? e.negPre + l + e.negSuf : e.posPre + l + e.posSuf
            }
            function Sr(t, e, n, i) {
                var r = "";
                for ((t < 0 || i && t <= 0) && (i ? t = 1 - t : (t = -t,
                r = "-")),
                t = "" + t; t.length < e; )
                    t = "0" + t;
                return n && (t = t.substr(t.length - e)),
                r + t
            }
            function xr(t, e, n, i, r) {
                return n = n || 0,
                function(o) {
                    var a = o["get" + t]();
                    return (n > 0 || a > -n) && (a += n),
                    0 === a && -12 === n && (a = 12),
                    Sr(a, e, i, r)
                }
            }
            function Mr(t, e, n) {
                return function(i, r) {
                    var o = i["get" + t]();
                    return r[h((n ? "STANDALONE" : "") + (e ? "SHORT" : "") + t)][o]
                }
            }
            function Er(t) {
                var e = new Date(t,0,1).getDay();
                return new Date(t,0,(e <= 4 ? 5 : 12) - e)
            }
            function Cr(t) {
                return function(e) {
                    var n, i = Er(e.getFullYear()), r = +(n = e,
                    new Date(n.getFullYear(),n.getMonth(),n.getDate() + (4 - n.getDay()))) - +i;
                    return Sr(1 + Math.round(r / 6048e5), t)
                }
            }
            function Ar(t, e) {
                return t.getFullYear() <= 0 ? e.ERAS[0] : e.ERAS[1]
            }
            yr.$inject = ["$locale"],
            br.$inject = ["$locale"];
            var Tr = {
                yyyy: xr("FullYear", 4, 0, !1, !0),
                yy: xr("FullYear", 2, 0, !0, !0),
                y: xr("FullYear", 1, 0, !1, !0),
                MMMM: Mr("Month"),
                MMM: Mr("Month", !0),
                MM: xr("Month", 2, 1),
                M: xr("Month", 1, 1),
                LLLL: Mr("Month", !1, !0),
                dd: xr("Date", 2),
                d: xr("Date", 1),
                HH: xr("Hours", 2),
                H: xr("Hours", 1),
                hh: xr("Hours", 2, -12),
                h: xr("Hours", 1, -12),
                mm: xr("Minutes", 2),
                m: xr("Minutes", 1),
                ss: xr("Seconds", 2),
                s: xr("Seconds", 1),
                sss: xr("Milliseconds", 3),
                EEEE: Mr("Day"),
                EEE: Mr("Day", !0),
                a: function(t, e) {
                    return t.getHours() < 12 ? e.AMPMS[0] : e.AMPMS[1]
                },
                Z: function(t, e, n) {
                    var i = -1 * n
                      , r = i >= 0 ? "+" : "";
                    return r += Sr(Math[i > 0 ? "floor" : "ceil"](i / 60), 2) + Sr(Math.abs(i % 60), 2)
                },
                ww: Cr(2),
                w: Cr(1),
                G: Ar,
                GG: Ar,
                GGG: Ar,
                GGGG: function(t, e) {
                    return t.getFullYear() <= 0 ? e.ERANAMES[0] : e.ERANAMES[1]
                }
            }
              , Or = /((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))([\s\S]*)/
              , _r = /^-?\d+$/;
            function Pr(t) {
                var e = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;
                return function(n, i, r) {
                    var o, a, s = "", c = [];
                    if (i = i || "mediumDate",
                    i = t.DATETIME_FORMATS[i] || i,
                    z(n) && (n = _r.test(n) ? I(n) : function(t) {
                        var n;
                        if (n = t.match(e)) {
                            var i = new Date(0)
                              , r = 0
                              , o = 0
                              , a = n[8] ? i.setUTCFullYear : i.setFullYear
                              , s = n[8] ? i.setUTCHours : i.setHours;
                            n[9] && (r = I(n[9] + n[10]),
                            o = I(n[9] + n[11])),
                            a.call(i, I(n[1]), I(n[2]) - 1, I(n[3]));
                            var c = I(n[4] || 0) - r
                              , l = I(n[5] || 0) - o
                              , u = I(n[6] || 0)
                              , d = Math.round(1e3 * parseFloat("0." + (n[7] || 0)));
                            return s.call(i, c, l, u, d),
                            i
                        }
                        return t
                    }(n)),
                    G(n) && (n = new Date(n)),
                    !H(n) || !isFinite(n.getTime()))
                        return n;
                    for (; i; )
                        (a = Or.exec(i)) ? i = (c = dt(c, a, 1)).pop() : (c.push(i),
                        i = null);
                    var l = n.getTimezoneOffset();
                    return r && (l = yt(r, l),
                    n = wt(n, r, !0)),
                    M(c, (function(e) {
                        s += (o = Tr[e]) ? o(n, t.DATETIME_FORMATS, l) : "''" === e ? "'" : e.replace(/(^'|'$)/g, "").replace(/''/g, "'")
                    }
                    )),
                    s
                }
            }
            function Ir() {
                return function(t, e) {
                    return V(e) && (e = 2),
                    mt(t, e)
                }
            }
            Pr.$inject = ["$locale"];
            var kr = N(p)
              , Dr = N(h);
            function Rr() {
                return function(t, e, n) {
                    return e = Math.abs(Number(e)) === 1 / 0 ? Number(e) : I(e),
                    k(e) ? t : (G(t) && (t = t.toString()),
                    x(t) ? (n = (n = !n || isNaN(n) ? 0 : I(n)) < 0 ? Math.max(0, t.length + n) : n,
                    e >= 0 ? Lr(t, n, n + e) : 0 === n ? Lr(t, e, t.length) : Lr(t, Math.max(0, n + e), n)) : t)
                }
            }
            function Lr(t, e, n) {
                return z(t) ? t.slice(e, n) : f.call(t, e, n)
            }
            function Nr(t) {
                return function(i, r, a, s) {
                    if (null == i)
                        return i;
                    if (!x(i))
                        throw o("orderBy")("notarray", "Expected array but received: {0}", i);
                    W(r) || (r = [r]),
                    0 === r.length && (r = ["+"]);
                    var c = r.map((function(e) {
                        var n = 1
                          , i = L;
                        if (X(e))
                            i = e;
                        else if (z(e) && ("+" !== e.charAt(0) && "-" !== e.charAt(0) || (n = "-" === e.charAt(0) ? -1 : 1,
                        e = e.substring(1)),
                        "" !== e && (i = t(e)).constant)) {
                            var r = i();
                            i = function(t) {
                                return t[r]
                            }
                        }
                        return {
                            get: i,
                            descending: n
                        }
                    }
                    ))
                      , l = a ? -1 : 1
                      , u = X(s) ? s : n
                      , d = Array.prototype.map.call(i, (function(t, n) {
                        return {
                            value: t,
                            tieBreaker: {
                                value: n,
                                type: "number",
                                index: n
                            },
                            predicateValues: c.map((function(i) {
                                return function(t, n) {
                                    var i = typeof t;
                                    null === t ? i = "null" : "object" === i && (t = function(t) {
                                        if (X(t.valueOf) && e(t = t.valueOf()))
                                            return t;
                                        if (j(t) && e(t = t.toString()))
                                            return t;
                                        return t
                                    }(t));
                                    return {
                                        value: t,
                                        type: i,
                                        index: n
                                    }
                                }(i.get(t), n)
                            }
                            ))
                        }
                    }
                    ));
                    return d.sort((function(t, e) {
                        for (var i = 0, r = c.length; i < r; i++) {
                            var o = u(t.predicateValues[i], e.predicateValues[i]);
                            if (o)
                                return o * c[i].descending * l
                        }
                        return (u(t.tieBreaker, e.tieBreaker) || n(t.tieBreaker, e.tieBreaker)) * l
                    }
                    )),
                    i = d.map((function(t) {
                        return t.value
                    }
                    ))
                }
                ;
                function e(t) {
                    switch (typeof t) {
                    case "number":
                    case "boolean":
                    case "string":
                        return !0;
                    default:
                        return !1
                    }
                }
                function n(t, e) {
                    var n = 0
                      , i = t.type
                      , r = e.type;
                    if (i === r) {
                        var o = t.value
                          , a = e.value;
                        "string" === i ? (o = o.toLowerCase(),
                        a = a.toLowerCase()) : "object" === i && (U(o) && (o = t.index),
                        U(a) && (a = e.index)),
                        o !== a && (n = o < a ? -1 : 1)
                    } else
                        n = "undefined" === i ? 1 : "undefined" === r ? -1 : "null" === i ? 1 : "null" === r || i < r ? -1 : 1;
                    return n
                }
            }
            function jr(t) {
                return X(t) && (t = {
                    link: t
                }),
                t.restrict = t.restrict || "AC",
                N(t)
            }
            Nr.$inject = ["$parse"];
            var Vr = N({
                restrict: "E",
                compile: function(t, e) {
                    if (!e.href && !e.xlinkHref)
                        return function(t, e) {
                            if ("a" === e[0].nodeName.toLowerCase()) {
                                var n = "[object SVGAnimatedString]" === v.call(e.prop("href")) ? "xlink:href" : "href";
                                e.on("click", (function(t) {
                                    e.attr(n) || t.preventDefault()
                                }
                                ))
                            }
                        }
                }
            })
              , Fr = {};
            M(ke, (function(t, e) {
                if ("multiple" !== t) {
                    var n = wn("ng-" + e)
                      , i = r;
                    "checked" === t && (i = function(t, e, i) {
                        i.ngModel !== i[n] && r(t, 0, i)
                    }
                    ),
                    Fr[n] = function() {
                        return {
                            restrict: "A",
                            priority: 100,
                            link: i
                        }
                    }
                }
                function r(t, i, r) {
                    t.$watch(r[n], (function(t) {
                        r.$set(e, !!t)
                    }
                    ))
                }
            }
            )),
            M(Re, (function(t, e) {
                Fr[e] = function() {
                    return {
                        priority: 100,
                        link: function(t, n, i) {
                            if ("ngPattern" === e && "/" === i.ngPattern.charAt(0)) {
                                var r = i.ngPattern.match(u);
                                if (r)
                                    return void i.$set("ngPattern", new RegExp(r[1],r[2]))
                            }
                            t.$watch(i[e], (function(t) {
                                i.$set(e, t)
                            }
                            ))
                        }
                    }
                }
            }
            )),
            M(["src", "srcset", "href"], (function(t) {
                var e = wn("ng-" + t);
                Fr[e] = ["$sce", function(n) {
                    return {
                        priority: 99,
                        link: function(i, r, o) {
                            var s = t
                              , c = t;
                            "href" === t && "[object SVGAnimatedString]" === v.call(r.prop("href")) && (c = "xlinkHref",
                            o.$attr[c] = "xlink:href",
                            s = null),
                            o.$set(e, n.getTrustedMediaUrl(o[e])),
                            o.$observe(e, (function(e) {
                                e ? (o.$set(c, e),
                                a && s && r.prop(s, o[c])) : "href" === t && o.$set(c, null)
                            }
                            ))
                        }
                    }
                }
                ]
            }
            ));
            var Ur = {
                $addControl: R,
                $getControls: N([]),
                $$renameControl: function(t, e) {
                    t.$name = e
                },
                $removeControl: R,
                $setValidity: R,
                $setDirty: R,
                $setPristine: R,
                $setSubmitted: R,
                $$setSubmitted: R
            };
            function Br(t, e, n, i, r) {
                this.$$controls = [],
                this.$error = {},
                this.$$success = {},
                this.$pending = void 0,
                this.$name = r(e.name || e.ngForm || "")(n),
                this.$dirty = !1,
                this.$pristine = !0,
                this.$valid = !0,
                this.$invalid = !1,
                this.$submitted = !1,
                this.$$parentForm = Ur,
                this.$$element = t,
                this.$$animate = i,
                Wr(this)
            }
            Br.$inject = ["$element", "$attrs", "$scope", "$animate", "$interpolate"],
            Br.prototype = {
                $rollbackViewValue: function() {
                    M(this.$$controls, (function(t) {
                        t.$rollbackViewValue()
                    }
                    ))
                },
                $commitViewValue: function() {
                    M(this.$$controls, (function(t) {
                        t.$commitViewValue()
                    }
                    ))
                },
                $addControl: function(t) {
                    Vt(t.$name, "input"),
                    this.$$controls.push(t),
                    t.$name && (this[t.$name] = t),
                    t.$$parentForm = this
                },
                $getControls: function() {
                    return Gt(this.$$controls)
                },
                $$renameControl: function(t, e) {
                    var n = t.$name;
                    this[n] === t && delete this[n],
                    this[e] = t,
                    t.$name = e
                },
                $removeControl: function(t) {
                    t.$name && this[t.$name] === t && delete this[t.$name],
                    M(this.$pending, (function(e, n) {
                        this.$setValidity(n, null, t)
                    }
                    ), this),
                    M(this.$error, (function(e, n) {
                        this.$setValidity(n, null, t)
                    }
                    ), this),
                    M(this.$$success, (function(e, n) {
                        this.$setValidity(n, null, t)
                    }
                    ), this),
                    ot(this.$$controls, t),
                    t.$$parentForm = Ur
                },
                $setDirty: function() {
                    this.$$animate.removeClass(this.$$element, Bo),
                    this.$$animate.addClass(this.$$element, zo),
                    this.$dirty = !0,
                    this.$pristine = !1,
                    this.$$parentForm.$setDirty()
                },
                $setPristine: function() {
                    this.$$animate.setClass(this.$$element, Bo, zo + " ng-submitted"),
                    this.$dirty = !1,
                    this.$pristine = !0,
                    this.$submitted = !1,
                    M(this.$$controls, (function(t) {
                        t.$setPristine()
                    }
                    ))
                },
                $setUntouched: function() {
                    M(this.$$controls, (function(t) {
                        t.$setUntouched()
                    }
                    ))
                },
                $setSubmitted: function() {
                    for (var t = this; t.$$parentForm && t.$$parentForm !== Ur; )
                        t = t.$$parentForm;
                    t.$$setSubmitted()
                },
                $$setSubmitted: function() {
                    this.$$animate.addClass(this.$$element, "ng-submitted"),
                    this.$submitted = !0,
                    M(this.$$controls, (function(t) {
                        t.$$setSubmitted && t.$$setSubmitted()
                    }
                    ))
                }
            },
            qr({
                clazz: Br,
                set: function(t, e, n) {
                    var i = t[e];
                    i ? -1 === i.indexOf(n) && i.push(n) : t[e] = [n]
                },
                unset: function(t, e, n) {
                    var i = t[e];
                    i && (ot(i, n),
                    0 === i.length && delete t[e])
                }
            });
            var zr = function(t) {
                return ["$timeout", "$parse", function(e, n) {
                    return {
                        name: "form",
                        restrict: t ? "EAC" : "E",
                        require: ["form", "^^?form"],
                        controller: Br,
                        compile: function(n, r) {
                            n.addClass(Bo).addClass(Fo);
                            var o = r.name ? "name" : !(!t || !r.ngForm) && "ngForm";
                            return {
                                pre: function(t, n, r, a) {
                                    var s = a[0];
                                    if (!("action"in r)) {
                                        var c = function(e) {
                                            t.$apply((function() {
                                                s.$commitViewValue(),
                                                s.$setSubmitted()
                                            }
                                            )),
                                            e.preventDefault()
                                        };
                                        n[0].addEventListener("submit", c),
                                        n.on("$destroy", (function() {
                                            e((function() {
                                                n[0].removeEventListener("submit", c)
                                            }
                                            ), 0, !1)
                                        }
                                        ))
                                    }
                                    (a[1] || s.$$parentForm).$addControl(s);
                                    var l = o ? i(s.$name) : R;
                                    o && (l(t, s),
                                    r.$observe(o, (function(e) {
                                        s.$name !== e && (l(t, void 0),
                                        s.$$parentForm.$$renameControl(s, e),
                                        (l = i(s.$name))(t, s))
                                    }
                                    ))),
                                    n.on("$destroy", (function() {
                                        s.$$parentForm.$removeControl(s),
                                        l(t, void 0),
                                        _(s, Ur)
                                    }
                                    ))
                                }
                            }
                        }
                    };
                    function i(t) {
                        return "" === t ? n('this[""]').assign : n(t).assign || R
                    }
                }
                ]
            }
              , Gr = zr()
              , Hr = zr(!0);
            function Wr(t) {
                t.$$classCache = {},
                t.$$classCache[Uo] = !(t.$$classCache[Fo] = t.$$element.hasClass(Fo))
            }
            function qr(t) {
                var e = t.clazz
                  , n = t.set
                  , i = t.unset;
                function r(t, e, n) {
                    n && !t.$$classCache[e] ? (t.$$animate.addClass(t.$$element, e),
                    t.$$classCache[e] = !0) : !n && t.$$classCache[e] && (t.$$animate.removeClass(t.$$element, e),
                    t.$$classCache[e] = !1)
                }
                function o(t, e, n) {
                    e = e ? "-" + Dt(e, "-") : "",
                    r(t, Fo + e, !0 === n),
                    r(t, Uo + e, !1 === n)
                }
                e.prototype.$setValidity = function(t, e, a) {
                    var s;
                    V(e) ? function(t, e, i, r) {
                        t[e] || (t[e] = {});
                        n(t[e], i, r)
                    }(this, "$pending", t, a) : function(t, e, n, r) {
                        t[e] && i(t[e], n, r);
                        Xr(t[e]) && (t[e] = void 0)
                    }(this, "$pending", t, a),
                    J(e) ? e ? (i(this.$error, t, a),
                    n(this.$$success, t, a)) : (n(this.$error, t, a),
                    i(this.$$success, t, a)) : (i(this.$error, t, a),
                    i(this.$$success, t, a)),
                    this.$pending ? (r(this, "ng-pending", !0),
                    this.$valid = this.$invalid = void 0,
                    o(this, "", null)) : (r(this, "ng-pending", !1),
                    this.$valid = Xr(this.$error),
                    this.$invalid = !this.$valid,
                    o(this, "", this.$valid)),
                    o(this, t, s = this.$pending && this.$pending[t] ? void 0 : !this.$error[t] && (!!this.$$success[t] || null)),
                    this.$$parentForm.$setValidity(t, s, this)
                }
            }
            function Xr(t) {
                if (t)
                    for (var e in t)
                        if (t.hasOwnProperty(e))
                            return !1;
                return !0
            }
            var Yr = /^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/
              , Kr = /^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i
              , Zr = /^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/
              , Jr = /^\s*(-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/
              , Qr = /^(\d{4,})-(\d{2})-(\d{2})$/
              , $r = /^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/
              , to = /^(\d{4,})-W(\d\d)$/
              , eo = /^(\d{4,})-(\d\d)$/
              , no = /^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/
              , io = Ut();
            M("date,datetime-local,month,time,week".split(","), (function(t) {
                io[t] = !0
            }
            ));
            var ro = {
                text: function(t, e, n, i, r, o) {
                    ao(t, e, n, i, r, o),
                    oo(i)
                },
                date: co("date", Qr, so(Qr, ["yyyy", "MM", "dd"]), "yyyy-MM-dd"),
                "datetime-local": co("datetimelocal", $r, so($r, ["yyyy", "MM", "dd", "HH", "mm", "ss", "sss"]), "yyyy-MM-ddTHH:mm:ss.sss"),
                time: co("time", no, so(no, ["HH", "mm", "ss", "sss"]), "HH:mm:ss.sss"),
                week: co("week", to, (function(t, e) {
                    if (H(t))
                        return t;
                    if (z(t)) {
                        to.lastIndex = 0;
                        var n = to.exec(t);
                        if (n) {
                            var i = +n[1]
                              , r = +n[2]
                              , o = 0
                              , a = 0
                              , s = 0
                              , c = 0
                              , l = Er(i)
                              , u = 7 * (r - 1);
                            return e && (o = e.getHours(),
                            a = e.getMinutes(),
                            s = e.getSeconds(),
                            c = e.getMilliseconds()),
                            new Date(i,0,l.getDate() + u,o,a,s,c)
                        }
                    }
                    return NaN
                }
                ), "yyyy-Www"),
                month: co("month", eo, so(eo, ["yyyy", "MM"]), "yyyy-MM"),
                number: function(t, e, n, i, r, o, a, s) {
                    var c;
                    if (lo(t, e, n, i, "number"),
                    uo(i),
                    ao(t, e, n, i, r, o),
                    F(n.min) || n.ngMin) {
                        var l = n.min || s(n.ngMin)(t);
                        c = po(l),
                        i.$validators.min = function(t, e) {
                            return i.$isEmpty(e) || V(c) || e >= c
                        }
                        ,
                        n.$observe("min", (function(t) {
                            t !== l && (c = po(t),
                            l = t,
                            i.$validate())
                        }
                        ))
                    }
                    if (F(n.max) || n.ngMax) {
                        var u = n.max || s(n.ngMax)(t)
                          , d = po(u);
                        i.$validators.max = function(t, e) {
                            return i.$isEmpty(e) || V(d) || e <= d
                        }
                        ,
                        n.$observe("max", (function(t) {
                            t !== u && (d = po(t),
                            u = t,
                            i.$validate())
                        }
                        ))
                    }
                    if (F(n.step) || n.ngStep) {
                        var p = n.step || s(n.ngStep)(t)
                          , h = po(p);
                        i.$validators.step = function(t, e) {
                            return i.$isEmpty(e) || V(h) || mo(e, c || 0, h)
                        }
                        ,
                        n.$observe("step", (function(t) {
                            t !== p && (h = po(t),
                            p = t,
                            i.$validate())
                        }
                        ))
                    }
                },
                url: function(t, e, n, i, r, o) {
                    ao(t, e, n, i, r, o),
                    oo(i),
                    i.$validators.url = function(t, e) {
                        var n = t || e;
                        return i.$isEmpty(n) || Kr.test(n)
                    }
                },
                email: function(t, e, n, i, r, o) {
                    ao(t, e, n, i, r, o),
                    oo(i),
                    i.$validators.email = function(t, e) {
                        var n = t || e;
                        return i.$isEmpty(n) || Zr.test(n)
                    }
                },
                radio: function(t, e, n, i) {
                    var r = !n.ngTrim || "false" !== tt(n.ngTrim);
                    V(n.name) && e.attr("name", A());
                    e.on("change", (function(t) {
                        var o;
                        e[0].checked && (o = n.value,
                        r && (o = tt(o)),
                        i.$setViewValue(o, t && t.type))
                    }
                    )),
                    i.$render = function() {
                        var t = n.value;
                        r && (t = tt(t)),
                        e[0].checked = t === i.$viewValue
                    }
                    ,
                    n.$observe("value", i.$render)
                },
                range: function(t, e, n, i, r, o) {
                    lo(t, e, n, i, "range"),
                    uo(i),
                    ao(t, e, n, i, r, o);
                    var a = i.$$hasNativeValidators && "range" === e[0].type
                      , s = a ? 0 : void 0
                      , c = a ? 100 : void 0
                      , l = a ? 1 : void 0
                      , u = e[0].validity
                      , d = F(n.min)
                      , p = F(n.max)
                      , h = F(n.step)
                      , f = i.$render;
                    i.$render = a && F(u.rangeUnderflow) && F(u.rangeOverflow) ? function() {
                        f(),
                        i.$setViewValue(e.val())
                    }
                    : f,
                    d && (s = po(n.min),
                    i.$validators.min = a ? function() {
                        return !0
                    }
                    : function(t, e) {
                        return i.$isEmpty(e) || V(s) || e >= s
                    }
                    ,
                    m("min", (function(t) {
                        if (s = po(t),
                        k(i.$modelValue))
                            return;
                        if (a) {
                            var n = e.val();
                            s > n && (n = s,
                            e.val(n)),
                            i.$setViewValue(n)
                        } else
                            i.$validate()
                    }
                    )));
                    p && (c = po(n.max),
                    i.$validators.max = a ? function() {
                        return !0
                    }
                    : function(t, e) {
                        return i.$isEmpty(e) || V(c) || e <= c
                    }
                    ,
                    m("max", (function(t) {
                        if (c = po(t),
                        k(i.$modelValue))
                            return;
                        if (a) {
                            var n = e.val();
                            c < n && (e.val(c),
                            n = c < s ? s : c),
                            i.$setViewValue(n)
                        } else
                            i.$validate()
                    }
                    )));
                    h && (l = po(n.step),
                    i.$validators.step = a ? function() {
                        return !u.stepMismatch
                    }
                    : function(t, e) {
                        return i.$isEmpty(e) || V(l) || mo(e, s || 0, l)
                    }
                    ,
                    m("step", (function(t) {
                        if (l = po(t),
                        k(i.$modelValue))
                            return;
                        a ? i.$viewValue !== e.val() && i.$setViewValue(e.val()) : i.$validate()
                    }
                    )));
                    function m(t, i) {
                        e.attr(t, n[t]);
                        var r = n[t];
                        n.$observe(t, (function(t) {
                            t !== r && (r = t,
                            i(t))
                        }
                        ))
                    }
                },
                checkbox: function(t, e, n, i, r, o, a, s) {
                    var c = go(s, t, "ngTrueValue", n.ngTrueValue, !0)
                      , l = go(s, t, "ngFalseValue", n.ngFalseValue, !1);
                    e.on("change", (function(t) {
                        i.$setViewValue(e[0].checked, t && t.type)
                    }
                    )),
                    i.$render = function() {
                        e[0].checked = i.$viewValue
                    }
                    ,
                    i.$isEmpty = function(t) {
                        return !1 === t
                    }
                    ,
                    i.$formatters.push((function(t) {
                        return ct(t, c)
                    }
                    )),
                    i.$parsers.push((function(t) {
                        return t ? c : l
                    }
                    ))
                },
                hidden: R,
                button: R,
                submit: R,
                reset: R,
                file: R
            };
            function oo(t) {
                t.$formatters.push((function(e) {
                    return t.$isEmpty(e) ? e : e.toString()
                }
                ))
            }
            function ao(t, e, n, i, r, o) {
                var a, s = p(e[0].type);
                if (!r.android) {
                    var c = !1;
                    e.on("compositionstart", (function() {
                        c = !0
                    }
                    )),
                    e.on("compositionupdate", (function(t) {
                        (V(t.data) || "" === t.data) && (c = !1)
                    }
                    )),
                    e.on("compositionend", (function() {
                        c = !1,
                        l()
                    }
                    ))
                }
                var l = function(t) {
                    if (a && (o.defer.cancel(a),
                    a = null),
                    !c) {
                        var r = e.val()
                          , l = t && t.type;
                        "password" === s || n.ngTrim && "false" === n.ngTrim || (r = tt(r)),
                        (i.$viewValue !== r || "" === r && i.$$hasNativeValidators) && i.$setViewValue(r, l)
                    }
                };
                if (r.hasEvent("input"))
                    e.on("input", l);
                else {
                    var u = function(t, e, n) {
                        a || (a = o.defer((function() {
                            a = null,
                            e && e.value === n || l(t)
                        }
                        )))
                    };
                    e.on("keydown", (function(t) {
                        var e = t.keyCode;
                        91 === e || 15 < e && e < 19 || 37 <= e && e <= 40 || u(t, this, this.value)
                    }
                    )),
                    r.hasEvent("paste") && e.on("paste cut drop", u)
                }
                e.on("change", l),
                io[s] && i.$$hasNativeValidators && s === n.type && e.on("keydown wheel mousedown", (function(t) {
                    if (!a) {
                        var e = this.validity
                          , n = e.badInput
                          , i = e.typeMismatch;
                        a = o.defer((function() {
                            a = null,
                            e.badInput === n && e.typeMismatch === i || l(t)
                        }
                        ))
                    }
                }
                )),
                i.$render = function() {
                    var t = i.$isEmpty(i.$viewValue) ? "" : i.$viewValue;
                    e.val() !== t && e.val(t)
                }
            }
            function so(t, e) {
                return function(n, i) {
                    var r, o;
                    if (H(n))
                        return n;
                    if (z(n)) {
                        if ('"' === n.charAt(0) && '"' === n.charAt(n.length - 1) && (n = n.substring(1, n.length - 1)),
                        Yr.test(n))
                            return new Date(n);
                        if (t.lastIndex = 0,
                        r = t.exec(n)) {
                            r.shift(),
                            o = i ? {
                                yyyy: i.getFullYear(),
                                MM: i.getMonth() + 1,
                                dd: i.getDate(),
                                HH: i.getHours(),
                                mm: i.getMinutes(),
                                ss: i.getSeconds(),
                                sss: i.getMilliseconds() / 1e3
                            } : {
                                yyyy: 1970,
                                MM: 1,
                                dd: 1,
                                HH: 0,
                                mm: 0,
                                ss: 0,
                                sss: 0
                            },
                            M(r, (function(t, n) {
                                n < e.length && (o[e[n]] = +t)
                            }
                            ));
                            var a = new Date(o.yyyy,o.MM - 1,o.dd,o.HH,o.mm,o.ss || 0,1e3 * o.sss || 0);
                            return o.yyyy < 100 && a.setFullYear(o.yyyy),
                            a
                        }
                    }
                    return NaN
                }
            }
            function co(t, e, n, i) {
                return function(r, o, a, s, c, l, u, d) {
                    lo(r, o, a, s, t),
                    ao(0, o, a, s, c, l);
                    var p, h, f = "time" === t || "datetimelocal" === t;
                    if (s.$parsers.push((function(n) {
                        return s.$isEmpty(n) ? null : e.test(n) ? S(n, p) : void (s.$$parserName = t)
                    }
                    )),
                    s.$formatters.push((function(t) {
                        if (t && !H(t))
                            throw Go("datefmt", "Expected `{0}` to be a date", t);
                        if (b(t)) {
                            p = t;
                            var e = s.$options.getOption("timezone");
                            return e && (h = e,
                            p = wt(p, e, !0)),
                            function(t, e) {
                                var n = i;
                                f && z(s.$options.getOption("timeSecondsFormat")) && (n = i.replace("ss.sss", s.$options.getOption("timeSecondsFormat")).replace(/:$/, ""));
                                var r = u("date")(t, n, e);
                                f && s.$options.getOption("timeStripZeroSeconds") && (r = r.replace(/(?::00)?(?:\.000)?$/, ""));
                                return r
                            }(t, e)
                        }
                        return p = null,
                        h = null,
                        ""
                    }
                    )),
                    F(a.min) || a.ngMin) {
                        var m = a.min || d(a.ngMin)(r)
                          , g = w(m);
                        s.$validators.min = function(t) {
                            return !b(t) || V(g) || n(t) >= g
                        }
                        ,
                        a.$observe("min", (function(t) {
                            t !== m && (g = w(t),
                            m = t,
                            s.$validate())
                        }
                        ))
                    }
                    if (F(a.max) || a.ngMax) {
                        var v = a.max || d(a.ngMax)(r)
                          , y = w(v);
                        s.$validators.max = function(t) {
                            return !b(t) || V(y) || n(t) <= y
                        }
                        ,
                        a.$observe("max", (function(t) {
                            t !== v && (y = w(t),
                            v = t,
                            s.$validate())
                        }
                        ))
                    }
                    function b(t) {
                        return t && !(t.getTime && t.getTime() != t.getTime())
                    }
                    function w(t) {
                        return F(t) && !H(t) ? S(t) || void 0 : t
                    }
                    function S(t, e) {
                        var i = s.$options.getOption("timezone");
                        h && h !== i && (e = bt(e, yt(h)));
                        var r = n(t, e);
                        return !isNaN(r) && i && (r = wt(r, i)),
                        r
                    }
                }
            }
            function lo(t, e, n, i, r) {
                var o = e[0];
                (i.$$hasNativeValidators = U(o.validity)) && i.$parsers.push((function(t) {
                    var n = e.prop("validity") || {};
                    if (!n.badInput && !n.typeMismatch)
                        return t;
                    i.$$parserName = r
                }
                ))
            }
            function uo(t) {
                t.$parsers.push((function(e) {
                    return t.$isEmpty(e) ? null : Jr.test(e) ? parseFloat(e) : void (t.$$parserName = "number")
                }
                )),
                t.$formatters.push((function(e) {
                    if (!t.$isEmpty(e)) {
                        if (!G(e))
                            throw Go("numfmt", "Expected `{0}` to be a number", e);
                        e = e.toString()
                    }
                    return e
                }
                ))
            }
            function po(t) {
                return F(t) && !G(t) && (t = parseFloat(t)),
                k(t) ? void 0 : t
            }
            function ho(t) {
                return (0 | t) === t
            }
            function fo(t) {
                var e = t.toString()
                  , n = e.indexOf(".");
                if (-1 === n) {
                    if (-1 < t && t < 1) {
                        var i = /e-(\d+)$/.exec(e);
                        if (i)
                            return Number(i[1])
                    }
                    return 0
                }
                return e.length - n - 1
            }
            function mo(t, e, n) {
                var i = Number(t)
                  , r = !ho(i)
                  , o = !ho(e)
                  , a = !ho(n);
                if (r || o || a) {
                    var s = r ? fo(i) : 0
                      , c = o ? fo(e) : 0
                      , l = a ? fo(n) : 0
                      , u = Math.max(s, c, l)
                      , d = Math.pow(10, u);
                    i *= d,
                    e *= d,
                    n *= d,
                    r && (i = Math.round(i)),
                    o && (e = Math.round(e)),
                    a && (n = Math.round(n))
                }
                return (i - e) % n == 0
            }
            function go(t, e, n, i, r) {
                var o;
                if (F(i)) {
                    if (!(o = t(i)).constant)
                        throw Go("constexpr", "Expected constant expression for `{0}`, but saw `{1}`.", n, i);
                    return o(e)
                }
                return r
            }
            var vo = ["$browser", "$sniffer", "$filter", "$parse", function(t, e, n, i) {
                return {
                    restrict: "E",
                    require: ["?ngModel"],
                    link: {
                        pre: function(r, o, a, s) {
                            s[0] && (ro[p(a.type)] || ro.text)(r, o, a, s[0], e, t, n, i)
                        }
                    }
                }
            }
            ]
              , yo = function() {
                var t = {
                    configurable: !0,
                    enumerable: !1,
                    get: function() {
                        return this.getAttribute("value") || ""
                    },
                    set: function(t) {
                        this.setAttribute("value", t)
                    }
                };
                return {
                    restrict: "E",
                    priority: 200,
                    compile: function(e, n) {
                        if ("hidden" === p(n.type))
                            return {
                                pre: function(e, n, i, r) {
                                    var o = n[0];
                                    o.parentNode && o.parentNode.insertBefore(o, o.nextSibling),
                                    Object.defineProperty && Object.defineProperty(o, "value", t)
                                }
                            }
                    }
                }
            }
              , bo = /^(true|false|\d+)$/
              , wo = function() {
                function t(t, e, n) {
                    var i = F(n) ? n : 9 === a ? "" : null;
                    t.prop("value", i),
                    e.$set("value", n)
                }
                return {
                    restrict: "A",
                    priority: 100,
                    compile: function(e, n) {
                        return bo.test(n.ngValue) ? function(e, n, i) {
                            t(n, i, e.$eval(i.ngValue))
                        }
                        : function(e, n, i) {
                            e.$watch(i.ngValue, (function(e) {
                                t(n, i, e)
                            }
                            ))
                        }
                    }
                }
            }
              , So = ["$compile", function(t) {
                return {
                    restrict: "AC",
                    compile: function(e) {
                        return t.$$addBindingClass(e),
                        function(e, n, i) {
                            t.$$addBindingInfo(n, i.ngBind),
                            n = n[0],
                            e.$watch(i.ngBind, (function(t) {
                                n.textContent = Bt(t)
                            }
                            ))
                        }
                    }
                }
            }
            ]
              , xo = ["$interpolate", "$compile", function(t, e) {
                return {
                    compile: function(n) {
                        return e.$$addBindingClass(n),
                        function(n, i, r) {
                            var o = t(i.attr(r.$attr.ngBindTemplate));
                            e.$$addBindingInfo(i, o.expressions),
                            i = i[0],
                            r.$observe("ngBindTemplate", (function(t) {
                                i.textContent = V(t) ? "" : t
                            }
                            ))
                        }
                    }
                }
            }
            ]
              , Mo = ["$sce", "$parse", "$compile", function(t, e, n) {
                return {
                    restrict: "A",
                    compile: function(i, r) {
                        var o = e(r.ngBindHtml)
                          , a = e(r.ngBindHtml, (function(e) {
                            return t.valueOf(e)
                        }
                        ));
                        return n.$$addBindingClass(i),
                        function(e, i, r) {
                            n.$$addBindingInfo(i, r.ngBindHtml),
                            e.$watch(a, (function() {
                                var n = o(e);
                                i.html(t.getTrustedHtml(n) || "")
                            }
                            ))
                        }
                    }
                }
            }
            ]
              , Eo = N({
                restrict: "A",
                require: "ngModel",
                link: function(t, e, n, i) {
                    i.$viewChangeListeners.push((function() {
                        t.$eval(n.ngChange)
                    }
                    ))
                }
            });
            function Co(t, e) {
                var n;
                return t = "ngClass" + t,
                ["$parse", function(a) {
                    return {
                        restrict: "AC",
                        link: function(s, c, l) {
                            var u, d = c.data("$classCounts"), p = !0;
                            function h(t, e) {
                                var n = [];
                                return M(t, (function(t) {
                                    (e > 0 || d[t]) && (d[t] = (d[t] || 0) + e,
                                    d[t] === +(e > 0) && n.push(t))
                                }
                                )),
                                n.join(" ")
                            }
                            d || (d = Ut(),
                            c.data("$classCounts", d)),
                            "ngClass" !== t && (n || (n = a("$index", (function(t) {
                                return 1 & t
                            }
                            ))),
                            s.$watch(n, (function(t) {
                                t === e ? (n = h(r(n = u), 1),
                                l.$addClass(n)) : function(t) {
                                    t = h(r(t), -1),
                                    l.$removeClass(t)
                                }(u);
                                var n;
                                p = t
                            }
                            ))),
                            s.$watch(a(l[t], o), (function(t) {
                                p === e && function(t, e) {
                                    var n = r(t)
                                      , o = r(e)
                                      , a = i(n, o)
                                      , s = i(o, n)
                                      , c = h(a, -1)
                                      , u = h(s, 1);
                                    l.$addClass(u),
                                    l.$removeClass(c)
                                }(u, t);
                                u = t
                            }
                            ))
                        }
                    }
                }
                ];
                function i(t, e) {
                    if (!t || !t.length)
                        return [];
                    if (!e || !e.length)
                        return t;
                    var n = [];
                    t: for (var i = 0; i < t.length; i++) {
                        for (var r = t[i], o = 0; o < e.length; o++)
                            if (r === e[o])
                                continue t;
                        n.push(r)
                    }
                    return n
                }
                function r(t) {
                    return t && t.split(" ")
                }
                function o(t) {
                    if (!t)
                        return t;
                    var e = t;
                    return W(t) ? e = t.map(o).join(" ") : U(t) ? e = Object.keys(t).filter((function(e) {
                        return t[e]
                    }
                    )).join(" ") : z(t) || (e = t + ""),
                    e
                }
            }
            var Ao = Co("", !0)
              , To = Co("Odd", 0)
              , Oo = Co("Even", 1)
              , _o = jr({
                compile: function(t, e) {
                    e.$set("ngCloak", void 0),
                    t.removeClass("ng-cloak")
                }
            })
              , Po = [function() {
                return {
                    restrict: "A",
                    scope: !0,
                    controller: "@",
                    priority: 500
                }
            }
            ]
              , Io = {}
              , ko = {
                blur: !0,
                focus: !0
            };
            function Do(t, e, n, i, r, o) {
                return {
                    restrict: "A",
                    compile: function(a, s) {
                        var c = t(s[i]);
                        return function(t, i) {
                            i.on(r, (function(i) {
                                var r = function() {
                                    c(t, {
                                        $event: i
                                    })
                                };
                                if (e.$$phase)
                                    if (o)
                                        t.$evalAsync(r);
                                    else
                                        try {
                                            r()
                                        } catch (t) {
                                            n(t)
                                        }
                                else
                                    t.$apply(r)
                            }
                            ))
                        }
                    }
                }
            }
            M("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), (function(t) {
                var e = wn("ng-" + t);
                Io[e] = ["$parse", "$rootScope", "$exceptionHandler", function(n, i, r) {
                    return Do(n, i, r, e, t, ko[t])
                }
                ]
            }
            ));
            var Ro = ["$animate", "$compile", function(t, e) {
                return {
                    multiElement: !0,
                    transclude: "element",
                    priority: 600,
                    terminal: !0,
                    restrict: "A",
                    $$tlb: !0,
                    link: function(n, i, r, o, a) {
                        var s, c, l;
                        n.$watch(r.ngIf, (function(n) {
                            n ? c || a((function(n, o) {
                                c = o,
                                n[n.length++] = e.$$createComment("end ngIf", r.ngIf),
                                s = {
                                    clone: n
                                },
                                t.enter(n, i.parent(), i)
                            }
                            )) : (l && (l.remove(),
                            l = null),
                            c && (c.$destroy(),
                            c = null),
                            s && (l = Ft(s.clone),
                            t.leave(l).done((function(t) {
                                !1 !== t && (l = null)
                            }
                            )),
                            s = null))
                        }
                        ))
                    }
                }
            }
            ]
              , Lo = ["$templateRequest", "$anchorScroll", "$animate", function(t, e, n) {
                return {
                    restrict: "ECA",
                    priority: 400,
                    terminal: !0,
                    transclude: "element",
                    controller: w.noop,
                    compile: function(i, r) {
                        var o = r.ngInclude || r.src
                          , a = r.onload || ""
                          , s = r.autoscroll;
                        return function(i, r, c, l, u) {
                            var d, p, h, f = 0, m = function() {
                                p && (p.remove(),
                                p = null),
                                d && (d.$destroy(),
                                d = null),
                                h && (n.leave(h).done((function(t) {
                                    !1 !== t && (p = null)
                                }
                                )),
                                p = h,
                                h = null)
                            };
                            i.$watch(o, (function(o) {
                                var c = function(t) {
                                    !1 === t || !F(s) || s && !i.$eval(s) || e()
                                }
                                  , p = ++f;
                                o ? (t(o, !0).then((function(t) {
                                    if (!i.$$destroyed && p === f) {
                                        var e = i.$new();
                                        l.template = t;
                                        var s = u(e, (function(t) {
                                            m(),
                                            n.enter(t, null, r).done(c)
                                        }
                                        ));
                                        h = s,
                                        (d = e).$emit("$includeContentLoaded", o),
                                        i.$eval(a)
                                    }
                                }
                                ), (function() {
                                    i.$$destroyed || p === f && (m(),
                                    i.$emit("$includeContentError", o))
                                }
                                )),
                                i.$emit("$includeContentRequested", o)) : (m(),
                                l.template = null)
                            }
                            ))
                        }
                    }
                }
            }
            ]
              , No = ["$compile", function(t) {
                return {
                    restrict: "ECA",
                    priority: -400,
                    require: "ngInclude",
                    link: function(n, i, r, o) {
                        if (v.call(i[0]).match(/SVG/))
                            return i.empty(),
                            void t(de(o.template, e.document).childNodes)(n, (function(t) {
                                i.append(t)
                            }
                            ), {
                                futureParentElement: i
                            });
                        i.html(o.template),
                        t(i.contents())(n)
                    }
                }
            }
            ]
              , jo = jr({
                priority: 450,
                compile: function() {
                    return {
                        pre: function(t, e, n) {
                            t.$eval(n.ngInit)
                        }
                    }
                }
            })
              , Vo = function() {
                return {
                    restrict: "A",
                    priority: 100,
                    require: "ngModel",
                    link: function(t, e, n, i) {
                        var r = n.ngList || ", "
                          , o = "false" !== n.ngTrim
                          , a = o ? tt(r) : r;
                        i.$parsers.push((function(t) {
                            if (!V(t)) {
                                var e = [];
                                return t && M(t.split(a), (function(t) {
                                    t && e.push(o ? tt(t) : t)
                                }
                                )),
                                e
                            }
                        }
                        )),
                        i.$formatters.push((function(t) {
                            if (W(t))
                                return t.join(r)
                        }
                        )),
                        i.$isEmpty = function(t) {
                            return !t || !t.length
                        }
                    }
                }
            }
              , Fo = "ng-valid"
              , Uo = "ng-invalid"
              , Bo = "ng-pristine"
              , zo = "ng-dirty"
              , Go = o("ngModel");
            function Ho(t, e, n, i, r, o, a, s, c) {
                var l;
                this.$viewValue = Number.NaN,
                this.$modelValue = Number.NaN,
                this.$$rawModelValue = void 0,
                this.$validators = {},
                this.$asyncValidators = {},
                this.$parsers = [],
                this.$formatters = [],
                this.$viewChangeListeners = [],
                this.$untouched = !0,
                this.$touched = !1,
                this.$pristine = !0,
                this.$dirty = !1,
                this.$valid = !0,
                this.$invalid = !1,
                this.$error = {},
                this.$$success = {},
                this.$pending = void 0,
                this.$name = c(n.name || "", !1)(t),
                this.$$parentForm = Ur,
                this.$options = Wo,
                this.$$updateEvents = "",
                this.$$updateEventHandler = this.$$updateEventHandler.bind(this),
                this.$$parsedNgModel = r(n.ngModel),
                this.$$parsedNgModelAssign = this.$$parsedNgModel.assign,
                this.$$ngModelGet = this.$$parsedNgModel,
                this.$$ngModelSet = this.$$parsedNgModelAssign,
                this.$$pendingDebounce = null,
                this.$$parserValid = void 0,
                this.$$parserName = "parse",
                this.$$currentValidationRunId = 0,
                this.$$scope = t,
                this.$$rootScope = t.$root,
                this.$$attr = n,
                this.$$element = i,
                this.$$animate = o,
                this.$$timeout = a,
                this.$$parse = r,
                this.$$q = s,
                this.$$exceptionHandler = e,
                Wr(this),
                (l = this).$$scope.$watch((function(t) {
                    var e = l.$$ngModelGet(t);
                    return e === l.$modelValue || l.$modelValue != l.$modelValue && e != e || l.$$setModelValue(e),
                    e
                }
                ))
            }
            Ho.$inject = ["$scope", "$exceptionHandler", "$attrs", "$element", "$parse", "$animate", "$timeout", "$q", "$interpolate"],
            Ho.prototype = {
                $$initGetterSetters: function() {
                    if (this.$options.getOption("getterSetter")) {
                        var t = this.$$parse(this.$$attr.ngModel + "()")
                          , e = this.$$parse(this.$$attr.ngModel + "($$$p)");
                        this.$$ngModelGet = function(e) {
                            var n = this.$$parsedNgModel(e);
                            return X(n) && (n = t(e)),
                            n
                        }
                        ,
                        this.$$ngModelSet = function(t, n) {
                            X(this.$$parsedNgModel(t)) ? e(t, {
                                $$$p: n
                            }) : this.$$parsedNgModelAssign(t, n)
                        }
                    } else if (!this.$$parsedNgModel.assign)
                        throw Go("nonassign", "Expression '{0}' is non-assignable. Element: {1}", this.$$attr.ngModel, St(this.$$element))
                },
                $render: R,
                $isEmpty: function(t) {
                    return V(t) || "" === t || null === t || t != t
                },
                $$updateEmptyClasses: function(t) {
                    this.$isEmpty(t) ? (this.$$animate.removeClass(this.$$element, "ng-not-empty"),
                    this.$$animate.addClass(this.$$element, "ng-empty")) : (this.$$animate.removeClass(this.$$element, "ng-empty"),
                    this.$$animate.addClass(this.$$element, "ng-not-empty"))
                },
                $setPristine: function() {
                    this.$dirty = !1,
                    this.$pristine = !0,
                    this.$$animate.removeClass(this.$$element, zo),
                    this.$$animate.addClass(this.$$element, Bo)
                },
                $setDirty: function() {
                    this.$dirty = !0,
                    this.$pristine = !1,
                    this.$$animate.removeClass(this.$$element, Bo),
                    this.$$animate.addClass(this.$$element, zo),
                    this.$$parentForm.$setDirty()
                },
                $setUntouched: function() {
                    this.$touched = !1,
                    this.$untouched = !0,
                    this.$$animate.setClass(this.$$element, "ng-untouched", "ng-touched")
                },
                $setTouched: function() {
                    this.$touched = !0,
                    this.$untouched = !1,
                    this.$$animate.setClass(this.$$element, "ng-touched", "ng-untouched")
                },
                $rollbackViewValue: function() {
                    this.$$timeout.cancel(this.$$pendingDebounce),
                    this.$viewValue = this.$$lastCommittedViewValue,
                    this.$render()
                },
                $validate: function() {
                    if (!k(this.$modelValue)) {
                        var t = this.$$lastCommittedViewValue
                          , e = this.$$rawModelValue
                          , n = this.$valid
                          , i = this.$modelValue
                          , r = this.$options.getOption("allowInvalid")
                          , o = this;
                        this.$$runValidators(e, t, (function(t) {
                            r || n === t || (o.$modelValue = t ? e : void 0,
                            o.$modelValue !== i && o.$$writeModelToScope())
                        }
                        ))
                    }
                },
                $$runValidators: function(t, e, n) {
                    this.$$currentValidationRunId++;
                    var i, r, o = this.$$currentValidationRunId, a = this;
                    (function() {
                        var t = a.$$parserName;
                        if (!V(a.$$parserValid))
                            return a.$$parserValid || (M(a.$validators, (function(t, e) {
                                s(e, null)
                            }
                            )),
                            M(a.$asyncValidators, (function(t, e) {
                                s(e, null)
                            }
                            ))),
                            s(t, a.$$parserValid),
                            a.$$parserValid;
                        s(t, null);
                        return !0
                    }
                    )() ? !function() {
                        var n = !0;
                        if (M(a.$validators, (function(i, r) {
                            var o = Boolean(i(t, e));
                            n = n && o,
                            s(r, o)
                        }
                        )),
                        !n)
                            return M(a.$asyncValidators, (function(t, e) {
                                s(e, null)
                            }
                            )),
                            !1;
                        return !0
                    }() ? c(!1) : (i = [],
                    r = !0,
                    M(a.$asyncValidators, (function(n, o) {
                        var a = n(t, e);
                        if (!Q(a))
                            throw Go("nopromise", "Expected asynchronous validator to return a promise but got '{0}' instead.", a);
                        s(o, void 0),
                        i.push(a.then((function() {
                            s(o, !0)
                        }
                        ), (function() {
                            r = !1,
                            s(o, !1)
                        }
                        )))
                    }
                    )),
                    i.length ? a.$$q.all(i).then((function() {
                        c(r)
                    }
                    ), R) : c(!0)) : c(!1);
                    function s(t, e) {
                        o === a.$$currentValidationRunId && a.$setValidity(t, e)
                    }
                    function c(t) {
                        o === a.$$currentValidationRunId && n(t)
                    }
                },
                $commitViewValue: function() {
                    var t = this.$viewValue;
                    this.$$timeout.cancel(this.$$pendingDebounce),
                    (this.$$lastCommittedViewValue !== t || "" === t && this.$$hasNativeValidators) && (this.$$updateEmptyClasses(t),
                    this.$$lastCommittedViewValue = t,
                    this.$pristine && this.$setDirty(),
                    this.$$parseAndValidate())
                },
                $$parseAndValidate: function() {
                    var t = this.$$lastCommittedViewValue
                      , e = this;
                    if (this.$$parserValid = !V(t) || void 0,
                    this.$setValidity(this.$$parserName, null),
                    this.$$parserName = "parse",
                    this.$$parserValid)
                        for (var n = 0; n < this.$parsers.length; n++)
                            if (V(t = this.$parsers[n](t))) {
                                this.$$parserValid = !1;
                                break
                            }
                    k(this.$modelValue) && (this.$modelValue = this.$$ngModelGet(this.$$scope));
                    var i = this.$modelValue
                      , r = this.$options.getOption("allowInvalid");
                    function o() {
                        e.$modelValue !== i && e.$$writeModelToScope()
                    }
                    this.$$rawModelValue = t,
                    r && (this.$modelValue = t,
                    o()),
                    this.$$runValidators(t, this.$$lastCommittedViewValue, (function(n) {
                        r || (e.$modelValue = n ? t : void 0,
                        o())
                    }
                    ))
                },
                $$writeModelToScope: function() {
                    this.$$ngModelSet(this.$$scope, this.$modelValue),
                    M(this.$viewChangeListeners, (function(t) {
                        try {
                            t()
                        } catch (t) {
                            this.$$exceptionHandler(t)
                        }
                    }
                    ), this)
                },
                $setViewValue: function(t, e) {
                    this.$viewValue = t,
                    this.$options.getOption("updateOnDefault") && this.$$debounceViewValueCommit(e)
                },
                $$debounceViewValueCommit: function(t) {
                    var e = this.$options.getOption("debounce");
                    G(e[t]) ? e = e[t] : G(e.default) && -1 === this.$options.getOption("updateOn").indexOf(t) ? e = e.default : G(e["*"]) && (e = e["*"]),
                    this.$$timeout.cancel(this.$$pendingDebounce);
                    var n = this;
                    e > 0 ? this.$$pendingDebounce = this.$$timeout((function() {
                        n.$commitViewValue()
                    }
                    ), e) : this.$$rootScope.$$phase ? this.$commitViewValue() : this.$$scope.$apply((function() {
                        n.$commitViewValue()
                    }
                    ))
                },
                $overrideModelOptions: function(t) {
                    this.$options = this.$options.createChild(t),
                    this.$$setUpdateOnEvents()
                },
                $processModelValue: function() {
                    var t = this.$$format();
                    this.$viewValue !== t && (this.$$updateEmptyClasses(t),
                    this.$viewValue = this.$$lastCommittedViewValue = t,
                    this.$render(),
                    this.$$runValidators(this.$modelValue, this.$viewValue, R))
                },
                $$format: function() {
                    for (var t = this.$formatters, e = t.length, n = this.$modelValue; e--; )
                        n = t[e](n);
                    return n
                },
                $$setModelValue: function(t) {
                    this.$modelValue = this.$$rawModelValue = t,
                    this.$$parserValid = void 0,
                    this.$processModelValue()
                },
                $$setUpdateOnEvents: function() {
                    this.$$updateEvents && this.$$element.off(this.$$updateEvents, this.$$updateEventHandler),
                    this.$$updateEvents = this.$options.getOption("updateOn"),
                    this.$$updateEvents && this.$$element.on(this.$$updateEvents, this.$$updateEventHandler)
                },
                $$updateEventHandler: function(t) {
                    this.$$debounceViewValueCommit(t && t.type)
                }
            },
            qr({
                clazz: Ho,
                set: function(t, e) {
                    t[e] = !0
                },
                unset: function(t, e) {
                    delete t[e]
                }
            });
            var Wo, qo = ["$rootScope", function(t) {
                return {
                    restrict: "A",
                    require: ["ngModel", "^?form", "^?ngModelOptions"],
                    controller: Ho,
                    priority: 1,
                    compile: function(e) {
                        return e.addClass(Bo).addClass("ng-untouched").addClass(Fo),
                        {
                            pre: function(t, e, n, i) {
                                var r = i[0]
                                  , o = i[1] || r.$$parentForm
                                  , a = i[2];
                                a && (r.$options = a.$options),
                                r.$$initGetterSetters(),
                                o.$addControl(r),
                                n.$observe("name", (function(t) {
                                    r.$name !== t && r.$$parentForm.$$renameControl(r, t)
                                }
                                )),
                                t.$on("$destroy", (function() {
                                    r.$$parentForm.$removeControl(r)
                                }
                                ))
                            },
                            post: function(e, n, i, r) {
                                var o = r[0];
                                function a() {
                                    o.$setTouched()
                                }
                                o.$$setUpdateOnEvents(),
                                n.on("blur", (function() {
                                    o.$touched || (t.$$phase ? e.$evalAsync(a) : e.$apply(a))
                                }
                                ))
                            }
                        }
                    }
                }
            }
            ], Xo = /(\s+|^)default(\s+|$)/;
            function Yo(t) {
                this.$$options = t
            }
            Yo.prototype = {
                getOption: function(t) {
                    return this.$$options[t]
                },
                createChild: function(t) {
                    var e = !1;
                    return M(t = _({}, t), (function(n, i) {
                        "$inherit" === n ? "*" === i ? e = !0 : (t[i] = this.$$options[i],
                        "updateOn" === i && (t.updateOnDefault = this.$$options.updateOnDefault)) : "updateOn" === i && (t.updateOnDefault = !1,
                        t[i] = tt(n.replace(Xo, (function() {
                            return t.updateOnDefault = !0,
                            " "
                        }
                        ))))
                    }
                    ), this),
                    e && (delete t["*"],
                    Zo(t, this.$$options)),
                    Zo(t, Wo.$$options),
                    new Yo(t)
                }
            },
            Wo = new Yo({
                updateOn: "",
                updateOnDefault: !0,
                debounce: 0,
                getterSetter: !1,
                allowInvalid: !1,
                timezone: null
            });
            var Ko = function() {
                function t(t, e) {
                    this.$$attrs = t,
                    this.$$scope = e
                }
                return t.$inject = ["$attrs", "$scope"],
                t.prototype = {
                    $onInit: function() {
                        var t = this.parentCtrl ? this.parentCtrl.$options : Wo
                          , e = this.$$scope.$eval(this.$$attrs.ngModelOptions);
                        this.$options = t.createChild(e)
                    }
                },
                {
                    restrict: "A",
                    priority: 10,
                    require: {
                        parentCtrl: "?^^ngModelOptions"
                    },
                    bindToController: !0,
                    controller: t
                }
            };
            function Zo(t, e) {
                M(e, (function(e, n) {
                    F(t[n]) || (t[n] = e)
                }
                ))
            }
            var Jo = jr({
                terminal: !0,
                priority: 1e3
            })
              , Qo = o("ngOptions")
              , $o = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([$\w][$\w]*)|(?:\(\s*([$\w][$\w]*)\s*,\s*([$\w][$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/
              , ta = ["$compile", "$document", "$parse", function(t, n, i) {
                var r = e.document.createElement("option")
                  , o = e.document.createElement("optgroup");
                return {
                    restrict: "A",
                    terminal: !0,
                    require: ["select", "ngModel"],
                    link: {
                        pre: function(t, e, n, i) {
                            i[0].registerOption = R
                        },
                        post: function(e, a, c, l) {
                            for (var u = l[0], d = l[1], p = c.multiple, h = 0, f = a.children(), m = f.length; h < m; h++)
                                if ("" === f[h].value) {
                                    u.hasEmptyOption = !0,
                                    u.emptyOption = f.eq(h);
                                    break
                                }
                            a.empty();
                            var g, v = !!u.emptyOption;
                            s(r.cloneNode(!1)).val("?");
                            var y = function(t, e, n) {
                                var r = t.match($o);
                                if (!r)
                                    throw Qo("iexp", "Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}", t, St(e));
                                var o = r[5] || r[7]
                                  , a = r[6]
                                  , s = / as /.test(r[0]) && r[1]
                                  , c = r[9]
                                  , l = i(r[2] ? r[1] : o)
                                  , u = s && i(s) || l
                                  , d = c && i(c)
                                  , p = c ? function(t, e) {
                                    return d(n, e)
                                }
                                : function(t) {
                                    return Fe(t)
                                }
                                  , h = function(t, e) {
                                    return p(t, b(t, e))
                                }
                                  , f = i(r[2] || r[1])
                                  , m = i(r[3] || "")
                                  , g = i(r[4] || "")
                                  , v = i(r[8])
                                  , y = {}
                                  , b = a ? function(t, e) {
                                    return y[a] = e,
                                    y[o] = t,
                                    y
                                }
                                : function(t) {
                                    return y[o] = t,
                                    y
                                }
                                ;
                                function w(t, e, n, i, r) {
                                    this.selectValue = t,
                                    this.viewValue = e,
                                    this.label = n,
                                    this.group = i,
                                    this.disabled = r
                                }
                                function S(t) {
                                    var e;
                                    if (!a && x(t))
                                        e = t;
                                    else
                                        for (var n in e = [],
                                        t)
                                            t.hasOwnProperty(n) && "$" !== n.charAt(0) && e.push(n);
                                    return e
                                }
                                return {
                                    trackBy: c,
                                    getTrackByValue: h,
                                    getWatchables: i(v, (function(t) {
                                        for (var e = [], i = S(t = t || []), o = i.length, a = 0; a < o; a++) {
                                            var s = t === i ? a : i[a]
                                              , c = t[s]
                                              , l = b(c, s)
                                              , u = p(c, l);
                                            if (e.push(u),
                                            r[2] || r[1]) {
                                                var d = f(n, l);
                                                e.push(d)
                                            }
                                            if (r[4]) {
                                                var h = g(n, l);
                                                e.push(h)
                                            }
                                        }
                                        return e
                                    }
                                    )),
                                    getOptions: function() {
                                        for (var t = [], e = {}, i = v(n) || [], r = S(i), o = r.length, a = 0; a < o; a++) {
                                            var s = i === r ? a : r[a]
                                              , l = i[s]
                                              , d = b(l, s)
                                              , y = u(n, d)
                                              , x = p(y, d)
                                              , M = new w(x,y,f(n, d),m(n, d),g(n, d));
                                            t.push(M),
                                            e[x] = M
                                        }
                                        return {
                                            items: t,
                                            selectValueMap: e,
                                            getOptionFromViewValue: function(t) {
                                                return e[h(t)]
                                            },
                                            getViewValueFromOption: function(t) {
                                                return c ? at(t.viewValue) : t.viewValue
                                            }
                                        }
                                    }
                                }
                            }(c.ngOptions, a, e)
                              , b = n[0].createDocumentFragment();
                            function w(t, e) {
                                var n = r.cloneNode(!1);
                                e.appendChild(n),
                                function(t, e) {
                                    t.element = e,
                                    e.disabled = t.disabled,
                                    t.label !== e.label && (e.label = t.label,
                                    e.textContent = t.label);
                                    e.value = t.selectValue
                                }(t, n)
                            }
                            function S(t) {
                                var e = g.getOptionFromViewValue(t)
                                  , n = e && e.element;
                                return n && !n.selected && (n.selected = !0),
                                e
                            }
                            u.generateUnknownOptionValue = function(t) {
                                return "?"
                            }
                            ,
                            p ? (u.writeValue = function(t) {
                                if (g) {
                                    var e = t && t.map(S) || [];
                                    g.items.forEach((function(t) {
                                        t.element.selected && !rt(e, t) && (t.element.selected = !1)
                                    }
                                    ))
                                }
                            }
                            ,
                            u.readValue = function() {
                                var t = a.val() || []
                                  , e = [];
                                return M(t, (function(t) {
                                    var n = g.selectValueMap[t];
                                    n && !n.disabled && e.push(g.getViewValueFromOption(n))
                                }
                                )),
                                e
                            }
                            ,
                            y.trackBy && e.$watchCollection((function() {
                                if (W(d.$viewValue))
                                    return d.$viewValue.map((function(t) {
                                        return y.getTrackByValue(t)
                                    }
                                    ))
                            }
                            ), (function() {
                                d.$render()
                            }
                            ))) : (u.writeValue = function(t) {
                                if (g) {
                                    var e = a[0].options[a[0].selectedIndex]
                                      , n = g.getOptionFromViewValue(t);
                                    e && e.removeAttribute("selected"),
                                    n ? (a[0].value !== n.selectValue && (u.removeUnknownOption(),
                                    a[0].value = n.selectValue,
                                    n.element.selected = !0),
                                    n.element.setAttribute("selected", "selected")) : u.selectUnknownOrEmptyOption(t)
                                }
                            }
                            ,
                            u.readValue = function() {
                                var t = g.selectValueMap[a.val()];
                                return t && !t.disabled ? (u.unselectEmptyOption(),
                                u.removeUnknownOption(),
                                g.getViewValueFromOption(t)) : null
                            }
                            ,
                            y.trackBy && e.$watch((function() {
                                return y.getTrackByValue(d.$viewValue)
                            }
                            ), (function() {
                                d.$render()
                            }
                            ))),
                            v && (t(u.emptyOption)(e),
                            a.prepend(u.emptyOption),
                            8 === u.emptyOption[0].nodeType ? (u.hasEmptyOption = !1,
                            u.registerOption = function(t, e) {
                                "" === e.val() && (u.hasEmptyOption = !0,
                                u.emptyOption = e,
                                u.emptyOption.removeClass("ng-scope"),
                                d.$render(),
                                e.on("$destroy", (function() {
                                    var t = u.$isEmptyOptionSelected();
                                    u.hasEmptyOption = !1,
                                    u.emptyOption = void 0,
                                    t && d.$render()
                                }
                                )))
                            }
                            ) : u.emptyOption.removeClass("ng-scope")),
                            e.$watchCollection(y.getWatchables, (function() {
                                var t = g && u.readValue();
                                if (g)
                                    for (var e = g.items.length - 1; e >= 0; e--) {
                                        var n = g.items[e];
                                        F(n.group) ? _e(n.element.parentNode) : _e(n.element)
                                    }
                                g = y.getOptions();
                                var i = {};
                                if (g.items.forEach((function(t) {
                                    var e;
                                    F(t.group) ? ((e = i[t.group]) || (e = o.cloneNode(!1),
                                    b.appendChild(e),
                                    e.label = null === t.group ? "null" : t.group,
                                    i[t.group] = e),
                                    w(t, e)) : w(t, b)
                                }
                                )),
                                a[0].appendChild(b),
                                d.$render(),
                                !d.$isEmpty(t)) {
                                    var r = u.readValue();
                                    (y.trackBy || p ? ct(t, r) : t === r) || (d.$setViewValue(r),
                                    d.$render())
                                }
                            }
                            ))
                        }
                    }
                }
            }
            ]
              , ea = ["$locale", "$interpolate", "$log", function(t, e, n) {
                var i = /{}/g
                  , r = /^when(Minus)?(.+)$/;
                return {
                    link: function(o, a, s) {
                        var c, l = s.count, u = s.$attr.when && a.attr(s.$attr.when), d = s.offset || 0, h = o.$eval(u) || {}, f = {}, m = e.startSymbol(), g = e.endSymbol(), v = m + l + "-" + d + g, y = w.noop;
                        function b(t) {
                            a.text(t || "")
                        }
                        M(s, (function(t, e) {
                            var n = r.exec(e);
                            if (n) {
                                var i = (n[1] ? "-" : "") + p(n[2]);
                                h[i] = a.attr(s.$attr[e])
                            }
                        }
                        )),
                        M(h, (function(t, n) {
                            f[n] = e(t.replace(i, v))
                        }
                        )),
                        o.$watch(l, (function(e) {
                            var i = parseFloat(e)
                              , r = k(i);
                            if (r || i in h || (i = t.pluralCat(i - d)),
                            !(i === c || r && k(c))) {
                                y();
                                var a = f[i];
                                V(a) ? (null != e && n.debug("ngPluralize: no rule defined for '" + i + "' in " + u),
                                y = R,
                                b()) : y = o.$watch(a, b),
                                c = i
                            }
                        }
                        ))
                    }
                }
            }
            ]
              , na = o("ngRef")
              , ia = ["$parse", function(t) {
                return {
                    priority: -1,
                    restrict: "A",
                    compile: function(e, n) {
                        var i = wn(it(e))
                          , r = t(n.ngRef)
                          , o = r.assign || function() {
                            throw na("nonassign", 'Expression in ngRef="{0}" is non-assignable!', n.ngRef)
                        }
                        ;
                        return function(t, e, a) {
                            var s;
                            if (a.hasOwnProperty("ngRefRead")) {
                                if ("$element" === a.ngRefRead)
                                    s = e;
                                else if (!(s = e.data("$" + a.ngRefRead + "Controller")))
                                    throw na("noctrl", 'The controller for ngRefRead="{0}" could not be found on ngRef="{1}"', a.ngRefRead, n.ngRef)
                            } else
                                s = e.data("$" + i + "Controller");
                            o(t, s = s || e),
                            e.on("$destroy", (function() {
                                r(t) === s && o(t, null)
                            }
                            ))
                        }
                    }
                }
            }
            ]
              , ra = ["$parse", "$animate", "$compile", function(t, e, n) {
                var i = o("ngRepeat")
                  , r = function(t, e, n, i, r, o, a) {
                    t[n] = i,
                    r && (t[r] = o),
                    t.$index = e,
                    t.$first = 0 === e,
                    t.$last = e === a - 1,
                    t.$middle = !(t.$first || t.$last),
                    t.$odd = !(t.$even = 0 == (1 & e))
                }
                  , a = function(t) {
                    return t.clone[0]
                }
                  , s = function(t) {
                    return t.clone[t.clone.length - 1]
                }
                  , c = function(t, e, n) {
                    return Fe(n)
                }
                  , l = function(t, e) {
                    return e
                };
                return {
                    restrict: "A",
                    multiElement: !0,
                    transclude: "element",
                    priority: 1e3,
                    terminal: !0,
                    $$tlb: !0,
                    compile: function(o, u) {
                        var p = u.ngRepeat
                          , h = n.$$createComment("end ngRepeat", p)
                          , f = p.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);
                        if (!f)
                            throw i("iexp", "Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.", p);
                        var m = f[1]
                          , g = f[2]
                          , v = f[3]
                          , y = f[4];
                        if (!(f = m.match(/^(?:(\s*[$\w]+)|\(\s*([$\w]+)\s*,\s*([$\w]+)\s*\))$/)))
                            throw i("iidexp", "'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.", m);
                        var b, w = f[3] || f[1], S = f[2];
                        if (v && (!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(v) || /^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(v)))
                            throw i("badident", "alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.", v);
                        if (y) {
                            var E = {
                                $id: Fe
                            }
                              , C = t(y);
                            b = function(t, e, n, i) {
                                return S && (E[S] = e),
                                E[w] = n,
                                E.$index = i,
                                C(t, E)
                            }
                        }
                        return function(t, n, o, u, f) {
                            var m = Ut();
                            t.$watchCollection(g, (function(o) {
                                var u, g, y, C, A, T, O, _, P, I, k, D, R = n[0], L = Ut();
                                if (v && (t[v] = o),
                                x(o))
                                    P = o,
                                    _ = b || c;
                                else
                                    for (var N in _ = b || l,
                                    P = [],
                                    o)
                                        d.call(o, N) && "$" !== N.charAt(0) && P.push(N);
                                for (C = P.length,
                                k = new Array(C),
                                u = 0; u < C; u++)
                                    if (A = o === P ? u : P[u],
                                    T = o[A],
                                    O = _(t, A, T, u),
                                    m[O])
                                        I = m[O],
                                        delete m[O],
                                        L[O] = I,
                                        k[u] = I;
                                    else {
                                        if (L[O])
                                            throw M(k, (function(t) {
                                                t && t.scope && (m[t.id] = t)
                                            }
                                            )),
                                            i("dupes", "Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}", p, O, T);
                                        k[u] = {
                                            id: O,
                                            scope: void 0,
                                            clone: void 0
                                        },
                                        L[O] = !0
                                    }
                                for (var j in E && (E[w] = void 0),
                                m) {
                                    if (D = Ft((I = m[j]).clone),
                                    e.leave(D),
                                    D[0].parentNode)
                                        for (u = 0,
                                        g = D.length; u < g; u++)
                                            D[u].$$NG_REMOVED = !0;
                                    I.scope.$destroy()
                                }
                                for (u = 0; u < C; u++)
                                    if (A = o === P ? u : P[u],
                                    T = o[A],
                                    (I = k[u]).scope) {
                                        y = R;
                                        do {
                                            y = y.nextSibling
                                        } while (y && y.$$NG_REMOVED);
                                        a(I) !== y && e.move(Ft(I.clone), null, R),
                                        R = s(I),
                                        r(I.scope, u, w, T, S, A, C)
                                    } else
                                        f((function(t, n) {
                                            I.scope = n;
                                            var i = h.cloneNode(!1);
                                            t[t.length++] = i,
                                            e.enter(t, null, R),
                                            R = i,
                                            I.clone = t,
                                            L[I.id] = I,
                                            r(I.scope, u, w, T, S, A, C)
                                        }
                                        ));
                                m = L
                            }
                            ))
                        }
                    }
                }
            }
            ]
              , oa = ["$animate", function(t) {
                return {
                    restrict: "A",
                    multiElement: !0,
                    link: function(e, n, i) {
                        e.$watch(i.ngShow, (function(e) {
                            t[e ? "removeClass" : "addClass"](n, "ng-hide", {
                                tempClasses: "ng-hide-animate"
                            })
                        }
                        ))
                    }
                }
            }
            ]
              , aa = ["$animate", function(t) {
                return {
                    restrict: "A",
                    multiElement: !0,
                    link: function(e, n, i) {
                        e.$watch(i.ngHide, (function(e) {
                            t[e ? "addClass" : "removeClass"](n, "ng-hide", {
                                tempClasses: "ng-hide-animate"
                            })
                        }
                        ))
                    }
                }
            }
            ]
              , sa = jr((function(t, e, n) {
                t.$watchCollection(n.ngStyle, (function(t, n) {
                    n && t !== n && M(n, (function(t, n) {
                        e.css(n, "")
                    }
                    )),
                    t && e.css(t)
                }
                ))
            }
            ))
              , ca = ["$animate", "$compile", function(t, e) {
                return {
                    require: "ngSwitch",
                    controller: ["$scope", function() {
                        this.cases = {}
                    }
                    ],
                    link: function(n, i, r, o) {
                        var a = r.ngSwitch || r.on
                          , s = []
                          , c = []
                          , l = []
                          , u = []
                          , d = function(t, e) {
                            return function(n) {
                                !1 !== n && t.splice(e, 1)
                            }
                        };
                        n.$watch(a, (function(n) {
                            for (var i, r; l.length; )
                                t.cancel(l.pop());
                            for (i = 0,
                            r = u.length; i < r; ++i) {
                                var a = Ft(c[i].clone);
                                u[i].$destroy(),
                                (l[i] = t.leave(a)).done(d(l, i))
                            }
                            c.length = 0,
                            u.length = 0,
                            (s = o.cases["!" + n] || o.cases["?"]) && M(s, (function(n) {
                                n.transclude((function(i, r) {
                                    u.push(r);
                                    var o = n.element;
                                    i[i.length++] = e.$$createComment("end ngSwitchWhen");
                                    var a = {
                                        clone: i
                                    };
                                    c.push(a),
                                    t.enter(i, o.parent(), o)
                                }
                                ))
                            }
                            ))
                        }
                        ))
                    }
                }
            }
            ]
              , la = jr({
                transclude: "element",
                priority: 1200,
                require: "^ngSwitch",
                multiElement: !0,
                link: function(t, e, n, i, r) {
                    M(n.ngSwitchWhen.split(n.ngSwitchWhenSeparator).sort().filter((function(t, e, n) {
                        return n[e - 1] !== t
                    }
                    )), (function(t) {
                        i.cases["!" + t] = i.cases["!" + t] || [],
                        i.cases["!" + t].push({
                            transclude: r,
                            element: e
                        })
                    }
                    ))
                }
            })
              , ua = jr({
                transclude: "element",
                priority: 1200,
                require: "^ngSwitch",
                multiElement: !0,
                link: function(t, e, n, i, r) {
                    i.cases["?"] = i.cases["?"] || [],
                    i.cases["?"].push({
                        transclude: r,
                        element: e
                    })
                }
            })
              , da = o("ngTransclude")
              , pa = ["$compile", function(t) {
                return {
                    restrict: "EAC",
                    compile: function(e) {
                        var n = t(e.contents());
                        return e.empty(),
                        function(t, e, i, r, o) {
                            if (!o)
                                throw da("orphan", "Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}", St(e));
                            i.ngTransclude === i.$attr.ngTransclude && (i.ngTransclude = "");
                            var a = i.ngTransclude || i.ngTranscludeSlot;
                            function s() {
                                n(t, (function(t) {
                                    e.append(t)
                                }
                                ))
                            }
                            o((function(t, n) {
                                t.length && function(t) {
                                    for (var e = 0, n = t.length; e < n; e++) {
                                        var i = t[e];
                                        if (i.nodeType !== zt || i.nodeValue.trim())
                                            return !0
                                    }
                                }(t) ? e.append(t) : (s(),
                                n.$destroy())
                            }
                            ), null, a),
                            a && !o.isSlotFilled(a) && s()
                        }
                    }
                }
            }
            ]
              , ha = ["$templateCache", function(t) {
                return {
                    restrict: "E",
                    terminal: !0,
                    compile: function(e, n) {
                        if ("text/ng-template" === n.type) {
                            var i = n.id
                              , r = e[0].text;
                            t.put(i, r)
                        }
                    }
                }
            }
            ]
              , fa = {
                $setViewValue: R,
                $render: R
            };
            function ma(t, e) {
                t.prop("selected", e),
                t.attr("selected", e)
            }
            var ga = ["$element", "$scope", function(t, n) {
                var i = this
                  , r = new ze;
                i.selectValueMap = {},
                i.ngModelCtrl = fa,
                i.multiple = !1,
                i.unknownOption = s(e.document.createElement("option")),
                i.hasEmptyOption = !1,
                i.emptyOption = void 0,
                i.renderUnknownOption = function(e) {
                    var n = i.generateUnknownOptionValue(e);
                    i.unknownOption.val(n),
                    t.prepend(i.unknownOption),
                    ma(i.unknownOption, !0),
                    t.val(n)
                }
                ,
                i.updateUnknownOption = function(e) {
                    var n = i.generateUnknownOptionValue(e);
                    i.unknownOption.val(n),
                    ma(i.unknownOption, !0),
                    t.val(n)
                }
                ,
                i.generateUnknownOptionValue = function(t) {
                    return "? " + Fe(t) + " ?"
                }
                ,
                i.removeUnknownOption = function() {
                    i.unknownOption.parent() && i.unknownOption.remove()
                }
                ,
                i.selectEmptyOption = function() {
                    i.emptyOption && (t.val(""),
                    ma(i.emptyOption, !0))
                }
                ,
                i.unselectEmptyOption = function() {
                    i.hasEmptyOption && ma(i.emptyOption, !1)
                }
                ,
                n.$on("$destroy", (function() {
                    i.renderUnknownOption = R
                }
                )),
                i.readValue = function() {
                    var e = t.val()
                      , n = e in i.selectValueMap ? i.selectValueMap[e] : e;
                    return i.hasOption(n) ? n : null
                }
                ,
                i.writeValue = function(e) {
                    var n = t[0].options[t[0].selectedIndex];
                    if (n && ma(s(n), !1),
                    i.hasOption(e)) {
                        i.removeUnknownOption();
                        var r = Fe(e);
                        t.val(r in i.selectValueMap ? r : e);
                        var o = t[0].options[t[0].selectedIndex];
                        ma(s(o), !0)
                    } else
                        i.selectUnknownOrEmptyOption(e)
                }
                ,
                i.addOption = function(t, e) {
                    if (8 !== e[0].nodeType) {
                        Vt(t, '"option value"'),
                        "" === t && (i.hasEmptyOption = !0,
                        i.emptyOption = e);
                        var n = r.get(t) || 0;
                        r.set(t, n + 1),
                        a()
                    }
                }
                ,
                i.removeOption = function(t) {
                    var e = r.get(t);
                    e && (1 === e ? (r.delete(t),
                    "" === t && (i.hasEmptyOption = !1,
                    i.emptyOption = void 0)) : r.set(t, e - 1))
                }
                ,
                i.hasOption = function(t) {
                    return !!r.get(t)
                }
                ,
                i.$hasEmptyOption = function() {
                    return i.hasEmptyOption
                }
                ,
                i.$isUnknownOptionSelected = function() {
                    return t[0].options[0] === i.unknownOption[0]
                }
                ,
                i.$isEmptyOptionSelected = function() {
                    return i.hasEmptyOption && t[0].options[t[0].selectedIndex] === i.emptyOption[0]
                }
                ,
                i.selectUnknownOrEmptyOption = function(t) {
                    null == t && i.emptyOption ? (i.removeUnknownOption(),
                    i.selectEmptyOption()) : i.unknownOption.parent().length ? i.updateUnknownOption(t) : i.renderUnknownOption(t)
                }
                ;
                var o = !1;
                function a() {
                    o || (o = !0,
                    n.$$postDigest((function() {
                        o = !1,
                        i.ngModelCtrl.$render()
                    }
                    )))
                }
                var c = !1;
                function l(t) {
                    c || (c = !0,
                    n.$$postDigest((function() {
                        n.$$destroyed || (c = !1,
                        i.ngModelCtrl.$setViewValue(i.readValue()),
                        t && i.ngModelCtrl.$render())
                    }
                    )))
                }
                i.registerOption = function(t, e, n, r, o) {
                    var s, c;
                    n.$attr.ngValue ? n.$observe("value", (function(t) {
                        var n, r = e.prop("selected");
                        F(c) && (i.removeOption(s),
                        delete i.selectValueMap[c],
                        n = !0),
                        c = Fe(t),
                        s = t,
                        i.selectValueMap[c] = t,
                        i.addOption(t, e),
                        e.attr("value", c),
                        n && r && l()
                    }
                    )) : r ? n.$observe("value", (function(t) {
                        var n;
                        i.readValue();
                        var r = e.prop("selected");
                        F(s) && (i.removeOption(s),
                        n = !0),
                        s = t,
                        i.addOption(t, e),
                        n && r && l()
                    }
                    )) : o ? t.$watch(o, (function(t, r) {
                        n.$set("value", t);
                        var o = e.prop("selected");
                        r !== t && i.removeOption(r),
                        i.addOption(t, e),
                        r && o && l()
                    }
                    )) : i.addOption(n.value, e);
                    n.$observe("disabled", (function(t) {
                        ("true" === t || t && e.prop("selected")) && (i.multiple ? l(!0) : (i.ngModelCtrl.$setViewValue(null),
                        i.ngModelCtrl.$render()))
                    }
                    )),
                    e.on("$destroy", (function() {
                        var t = i.readValue()
                          , e = n.value;
                        i.removeOption(e),
                        a(),
                        (i.multiple && t && -1 !== t.indexOf(e) || t === e) && l(!0)
                    }
                    ))
                }
            }
            ]
              , va = function() {
                return {
                    restrict: "E",
                    require: ["select", "?ngModel"],
                    controller: ga,
                    priority: 1,
                    link: {
                        pre: function(t, e, n, i) {
                            var r = i[0]
                              , o = i[1];
                            if (!o)
                                return void (r.registerOption = R);
                            if (r.ngModelCtrl = o,
                            e.on("change", (function() {
                                r.removeUnknownOption(),
                                t.$apply((function() {
                                    o.$setViewValue(r.readValue())
                                }
                                ))
                            }
                            )),
                            n.multiple) {
                                r.multiple = !0,
                                r.readValue = function() {
                                    var t = [];
                                    return M(e.find("option"), (function(e) {
                                        if (e.selected && !e.disabled) {
                                            var n = e.value;
                                            t.push(n in r.selectValueMap ? r.selectValueMap[n] : n)
                                        }
                                    }
                                    )),
                                    t
                                }
                                ,
                                r.writeValue = function(t) {
                                    M(e.find("option"), (function(e) {
                                        var n = !!t && (rt(t, e.value) || rt(t, r.selectValueMap[e.value]));
                                        n !== e.selected && ma(s(e), n)
                                    }
                                    ))
                                }
                                ;
                                var a, c = NaN;
                                t.$watch((function() {
                                    c !== o.$viewValue || ct(a, o.$viewValue) || (a = Gt(o.$viewValue),
                                    o.$render()),
                                    c = o.$viewValue
                                }
                                )),
                                o.$isEmpty = function(t) {
                                    return !t || 0 === t.length
                                }
                            }
                        },
                        post: function(t, e, n, i) {
                            var r = i[1];
                            if (!r)
                                return;
                            var o = i[0];
                            r.$render = function() {
                                o.writeValue(r.$viewValue)
                            }
                        }
                    }
                }
            }
              , ya = ["$interpolate", function(t) {
                return {
                    restrict: "E",
                    priority: 100,
                    compile: function(e, n) {
                        var i, r;
                        return F(n.ngValue) || (F(n.value) ? i = t(n.value, !0) : (r = t(e.text(), !0)) || n.$set("value", e.text())),
                        function(t, e, n) {
                            var o = e.parent()
                              , a = o.data("$selectController") || o.parent().data("$selectController");
                            a && a.registerOption(t, e, n, i, r)
                        }
                    }
                }
            }
            ]
              , ba = ["$parse", function(t) {
                return {
                    restrict: "A",
                    require: "?ngModel",
                    link: function(e, n, i, r) {
                        if (r) {
                            var o = i.hasOwnProperty("required") || t(i.ngRequired)(e);
                            i.ngRequired || (i.required = !0),
                            r.$validators.required = function(t, e) {
                                return !o || !r.$isEmpty(e)
                            }
                            ,
                            i.$observe("required", (function(t) {
                                o !== t && (o = t,
                                r.$validate())
                            }
                            ))
                        }
                    }
                }
            }
            ]
              , wa = ["$parse", function(t) {
                return {
                    restrict: "A",
                    require: "?ngModel",
                    compile: function(e, n) {
                        var i, r;
                        return n.ngPattern && (i = n.ngPattern,
                        r = "/" === n.ngPattern.charAt(0) && u.test(n.ngPattern) ? function() {
                            return n.ngPattern
                        }
                        : t(n.ngPattern)),
                        function(t, e, n, o) {
                            if (o) {
                                var a = n.pattern;
                                n.ngPattern ? a = r(t) : i = n.pattern;
                                var s = Ma(a, i, e);
                                n.$observe("pattern", (function(t) {
                                    var n = s;
                                    s = Ma(t, i, e),
                                    (n && n.toString()) !== (s && s.toString()) && o.$validate()
                                }
                                )),
                                o.$validators.pattern = function(t, e) {
                                    return o.$isEmpty(e) || V(s) || s.test(e)
                                }
                            }
                        }
                    }
                }
            }
            ]
              , Sa = ["$parse", function(t) {
                return {
                    restrict: "A",
                    require: "?ngModel",
                    link: function(e, n, i, r) {
                        if (r) {
                            var o = i.maxlength || t(i.ngMaxlength)(e)
                              , a = Ea(o);
                            i.$observe("maxlength", (function(t) {
                                o !== t && (a = Ea(t),
                                o = t,
                                r.$validate())
                            }
                            )),
                            r.$validators.maxlength = function(t, e) {
                                return a < 0 || r.$isEmpty(e) || e.length <= a
                            }
                        }
                    }
                }
            }
            ]
              , xa = ["$parse", function(t) {
                return {
                    restrict: "A",
                    require: "?ngModel",
                    link: function(e, n, i, r) {
                        if (r) {
                            var o = i.minlength || t(i.ngMinlength)(e)
                              , a = Ea(o) || -1;
                            i.$observe("minlength", (function(t) {
                                o !== t && (a = Ea(t) || -1,
                                o = t,
                                r.$validate())
                            }
                            )),
                            r.$validators.minlength = function(t, e) {
                                return r.$isEmpty(e) || e.length >= a
                            }
                        }
                    }
                }
            }
            ];
            function Ma(t, e, n) {
                if (t) {
                    if (z(t) && (t = new RegExp("^" + t + "$")),
                    !t.test)
                        throw o("ngPattern")("noregexp", "Expected {0} to be a RegExp but was {1}. Element: {2}", e, t, St(n));
                    return t
                }
            }
            function Ea(t) {
                var e = I(t);
                return k(e) ? -1 : e
            }
            e.angular.bootstrap ? e.console && console.log("WARNING: Tried to load AngularJS more than once.") : (!function() {
                var n;
                if (!Rt) {
                    var i = ut();
                    (c = V(i) ? t : i ? e[i] : void 0) && c.fn.on ? (s = c,
                    _(c.fn, {
                        scope: Ie.scope,
                        isolateScope: Ie.isolateScope,
                        controller: Ie.controller,
                        injector: Ie.injector,
                        inheritedData: Ie.inheritedData
                    })) : s = he,
                    n = s.cleanData,
                    s.cleanData = function(t) {
                        for (var e, i, r = 0; null != (i = t[r]); r++)
                            (e = (s._data(i) || {}).events) && e.$destroy && s(i).triggerHandler("$destroy");
                        n(t)
                    }
                    ,
                    w.element = s,
                    Rt = !0
                }
            }(),
            function(t) {
                _(t, {
                    errorHandlingConfig: i,
                    bootstrap: _t,
                    copy: at,
                    extend: _,
                    merge: P,
                    equals: ct,
                    element: s,
                    forEach: M,
                    injector: Qe,
                    noop: R,
                    bind: ht,
                    toJson: mt,
                    fromJson: gt,
                    identity: L,
                    isUndefined: V,
                    isDefined: F,
                    isString: z,
                    isFunction: X,
                    isObject: U,
                    isNumber: G,
                    isElement: nt,
                    isArray: W,
                    version: Wt,
                    isDate: H,
                    callbacks: {
                        $$counter: 0
                    },
                    getTestability: It,
                    reloadWithDebugInfo: Pt,
                    UNSAFE_restoreLegacyJqLiteXHTMLReplacement: Lt,
                    $$minErr: o,
                    $$csp: lt,
                    $$encodeUriSegment: Et,
                    $$encodeUriQuery: Ct,
                    $$lowercase: p,
                    $$stringify: Bt,
                    $$uppercase: h
                }),
                (l = function(t) {
                    var e = o("$injector")
                      , n = o("ng");
                    function i(t, e, n) {
                        return t[e] || (t[e] = n())
                    }
                    var r = i(t, "angular", Object);
                    return r.$$minErr = r.$$minErr || o,
                    i(r, "module", (function() {
                        var t = {};
                        return function(r, o, a) {
                            var s = {};
                            return function(t, e) {
                                if ("hasOwnProperty" === t)
                                    throw n("badname", "hasOwnProperty is not a valid {0} name", e)
                            }(r, "module"),
                            o && t.hasOwnProperty(r) && (t[r] = null),
                            i(t, r, (function() {
                                if (!o)
                                    throw e("nomod", "Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.", r);
                                var t = []
                                  , i = []
                                  , c = []
                                  , l = d("$injector", "invoke", "push", i)
                                  , u = {
                                    _invokeQueue: t,
                                    _configBlocks: i,
                                    _runBlocks: c,
                                    info: function(t) {
                                        if (F(t)) {
                                            if (!U(t))
                                                throw n("aobj", "Argument '{0}' must be an object", "value");
                                            return s = t,
                                            this
                                        }
                                        return s
                                    },
                                    requires: o,
                                    name: r,
                                    provider: p("$provide", "provider"),
                                    factory: p("$provide", "factory"),
                                    service: p("$provide", "service"),
                                    value: d("$provide", "value"),
                                    constant: d("$provide", "constant", "unshift"),
                                    decorator: p("$provide", "decorator", i),
                                    animation: p("$animateProvider", "register"),
                                    filter: p("$filterProvider", "register"),
                                    controller: p("$controllerProvider", "register"),
                                    directive: p("$compileProvider", "directive"),
                                    component: p("$compileProvider", "component"),
                                    config: l,
                                    run: function(t) {
                                        return c.push(t),
                                        this
                                    }
                                };
                                return a && l(a),
                                u;
                                function d(e, n, i, r) {
                                    return r || (r = t),
                                    function() {
                                        return r[i || "push"]([e, n, arguments]),
                                        u
                                    }
                                }
                                function p(e, n, i) {
                                    return i || (i = t),
                                    function(t, o) {
                                        return o && X(o) && (o.$$moduleName = r),
                                        i.push([e, n, arguments]),
                                        u
                                    }
                                }
                            }
                            ))
                        }
                    }
                    ))
                }(e))("ng", ["ngLocale"], ["$provide", function(t) {
                    t.provider({
                        $$sanitizeUri: Gi
                    }),
                    t.provider("$compile", gn).directive({
                        a: Vr,
                        input: vo,
                        textarea: vo,
                        form: Gr,
                        script: ha,
                        select: va,
                        option: ya,
                        ngBind: So,
                        ngBindHtml: Mo,
                        ngBindTemplate: xo,
                        ngClass: Ao,
                        ngClassEven: Oo,
                        ngClassOdd: To,
                        ngCloak: _o,
                        ngController: Po,
                        ngForm: Hr,
                        ngHide: aa,
                        ngIf: Ro,
                        ngInclude: Lo,
                        ngInit: jo,
                        ngNonBindable: Jo,
                        ngPluralize: ea,
                        ngRef: ia,
                        ngRepeat: ra,
                        ngShow: oa,
                        ngStyle: sa,
                        ngSwitch: ca,
                        ngSwitchWhen: la,
                        ngSwitchDefault: ua,
                        ngOptions: ta,
                        ngTransclude: pa,
                        ngModel: qo,
                        ngList: Vo,
                        ngChange: Eo,
                        pattern: wa,
                        ngPattern: wa,
                        required: ba,
                        ngRequired: ba,
                        minlength: xa,
                        ngMinlength: xa,
                        maxlength: Sa,
                        ngMaxlength: Sa,
                        ngValue: wo,
                        ngModelOptions: Ko
                    }).directive({
                        ngInclude: No,
                        input: yo
                    }).directive(Fr).directive(Io),
                    t.provider({
                        $anchorScroll: $e,
                        $animate: an,
                        $animateCss: ln,
                        $$animateJs: rn,
                        $$animateQueue: on,
                        $$AnimateRunner: cn,
                        $$animateAsyncRun: sn,
                        $browser: dn,
                        $cacheFactory: pn,
                        $controller: An,
                        $document: Tn,
                        $$isDocumentHidden: On,
                        $exceptionHandler: _n,
                        $filter: fr,
                        $$forceReflow: Pn,
                        $interpolate: Yn,
                        $interval: Zn,
                        $$intervalFactory: Jn,
                        $http: Hn,
                        $httpParamSerializer: jn,
                        $httpParamSerializerJQLike: Vn,
                        $httpBackend: qn,
                        $xhrFactory: Wn,
                        $jsonpCallbacks: Qn,
                        $location: mi,
                        $log: gi,
                        $parse: Ri,
                        $rootScope: zi,
                        $q: Li,
                        $$q: Ni,
                        $sce: Zi,
                        $sceDelegate: Ki,
                        $sniffer: Ji,
                        $$taskTrackerFactory: Qi,
                        $templateCache: hn,
                        $templateRequest: er,
                        $$testability: nr,
                        $timeout: rr,
                        $window: dr,
                        $$rAF: Bi,
                        $$jqLite: Ve,
                        $$Map: Ge,
                        $$cookieReader: hr
                    })
                }
                ]).info({
                    angularVersion: "1.8.0"
                })
            }(w),
            w.module("ngLocale", [], ["$provide", function(t) {
                var e = "one"
                  , n = "other";
                t.value("$locale", {
                    DATETIME_FORMATS: {
                        AMPMS: ["AM", "PM"],
                        DAY: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
                        ERANAMES: ["Before Christ", "Anno Domini"],
                        ERAS: ["BC", "AD"],
                        FIRSTDAYOFWEEK: 6,
                        MONTH: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
                        SHORTDAY: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
                        SHORTMONTH: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
                        STANDALONEMONTH: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
                        WEEKENDRANGE: [5, 6],
                        fullDate: "EEEE, MMMM d, y",
                        longDate: "MMMM d, y",
                        medium: "MMM d, y h:mm:ss a",
                        mediumDate: "MMM d, y",
                        mediumTime: "h:mm:ss a",
                        short: "M/d/yy h:mm a",
                        shortDate: "M/d/yy",
                        shortTime: "h:mm a"
                    },
                    NUMBER_FORMATS: {
                        CURRENCY_SYM: "$",
                        DECIMAL_SEP: ".",
                        GROUP_SEP: ",",
                        PATTERNS: [{
                            gSize: 3,
                            lgSize: 3,
                            maxFrac: 3,
                            minFrac: 0,
                            minInt: 1,
                            negPre: "-",
                            negSuf: "",
                            posPre: "",
                            posSuf: ""
                        }, {
                            gSize: 3,
                            lgSize: 3,
                            maxFrac: 2,
                            minFrac: 2,
                            minInt: 1,
                            negPre: "-¤",
                            negSuf: "",
                            posPre: "¤",
                            posSuf: ""
                        }]
                    },
                    id: "en-us",
                    localeID: "en_US",
                    pluralCat: function(t, i) {
                        var r = 0 | t
                          , o = function(t, e) {
                            var n = e;
                            void 0 === n && (n = Math.min(function(t) {
                                var e = (t += "").indexOf(".");
                                return -1 == e ? 0 : t.length - e - 1
                            }(t), 3));
                            var i = Math.pow(10, n);
                            return {
                                v: n,
                                f: (t * i | 0) % i
                            }
                        }(t, i);
                        return 1 == r && 0 == o.v ? e : n
                    }
                })
            }
            ]),
            s((function() {
                Ot(e.document, _t)
            }
            )))
        }(window),
        !window.angular.$$csp().noInlineStyle && window.angular.element(document.head).prepend(window.angular.element("<style>").text('@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}'))
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    n(926),
    t.exports = "ngAnimate"
}
, function(t, e) {
    /**
 * @license AngularJS v1.8.0
 * (c) 2010-2020 Google, Inc. http://angularjs.org
 * License: MIT
 */
    !function(t, e) {
        "use strict";
        var n, i, r, o;
        void 0 === t.ontransitionend && void 0 !== t.onwebkittransitionend ? ("-webkit-",
        n = "WebkitTransition",
        i = "webkitTransitionEnd transitionend") : (n = "transition",
        i = "transitionend"),
        void 0 === t.onanimationend && void 0 !== t.onwebkitanimationend ? ("-webkit-",
        r = "WebkitAnimation",
        o = "webkitAnimationEnd animationend") : (r = "animation",
        o = "animationend");
        var a = r + "Delay"
          , s = r + "Duration"
          , c = n + "Delay"
          , l = n + "Duration"
          , u = e.$$minErr("ng");
        function d(t, e, n) {
            if (!t)
                throw u("areq", "Argument '{0}' is {1}", e || "?", n || "required");
            return t
        }
        function p(t, e) {
            return t || e ? t ? e ? (V(t) && (t = t.join(" ")),
            V(e) && (e = e.join(" ")),
            t + " " + e) : t : e : ""
        }
        function h(t, e, n) {
            var i = "";
            return t = V(t) ? t : t && G(t) && t.length ? t.split(/\s+/) : [],
            j(t, (function(t, r) {
                t && t.length > 0 && (i += r > 0 ? " " : "",
                i += n ? e + t : t + e)
            }
            )),
            i
        }
        function f(t) {
            if (t instanceof W)
                switch (t.length) {
                case 0:
                    return t;
                case 1:
                    if (1 === t[0].nodeType)
                        return t;
                    break;
                default:
                    return W(m(t))
                }
            if (1 === t.nodeType)
                return W(t)
        }
        function m(t) {
            if (!t[0])
                return t;
            for (var e = 0; e < t.length; e++) {
                var n = t[e];
                if (1 === n.nodeType)
                    return n
            }
        }
        function g(t) {
            return function(e, n) {
                n.addClass && (!function(t, e, n) {
                    j(e, (function(e) {
                        t.addClass(e, n)
                    }
                    ))
                }(t, e, n.addClass),
                n.addClass = null),
                n.removeClass && (!function(t, e, n) {
                    j(e, (function(e) {
                        t.removeClass(e, n)
                    }
                    ))
                }(t, e, n.removeClass),
                n.removeClass = null)
            }
        }
        function v(t) {
            if (!(t = t || {}).$$prepared) {
                var e = t.domOperation || q;
                t.domOperation = function() {
                    t.$$domOperationFired = !0,
                    e(),
                    e = q
                }
                ,
                t.$$prepared = !0
            }
            return t
        }
        function y(t, e) {
            b(t, e),
            w(t, e)
        }
        function b(t, e) {
            e.from && (t.css(e.from),
            e.from = null)
        }
        function w(t, e) {
            e.to && (t.css(e.to),
            e.to = null)
        }
        function S(t, e, n) {
            var i = e.options || {}
              , r = n.options || {}
              , o = (i.addClass || "") + " " + (r.addClass || "")
              , a = (i.removeClass || "") + " " + (r.removeClass || "")
              , s = function(t, e, n) {
                var i = {};
                t = o(t),
                e = o(e),
                j(e, (function(t, e) {
                    i[e] = 1
                }
                )),
                n = o(n),
                j(n, (function(t, e) {
                    i[e] = 1 === i[e] ? null : -1
                }
                ));
                var r = {
                    addClass: "",
                    removeClass: ""
                };
                function o(t) {
                    G(t) && (t = t.split(" "));
                    var e = {};
                    return j(t, (function(t) {
                        t.length && (e[t] = !0)
                    }
                    )),
                    e
                }
                return j(i, (function(e, n) {
                    var i, o;
                    1 === e ? (i = "addClass",
                    o = !t[n] || t[n + "-remove"]) : -1 === e && (i = "removeClass",
                    o = t[n] || t[n + "-add"]),
                    o && (r[i].length && (r[i] += " "),
                    r[i] += n)
                }
                )),
                r
            }(t.attr("class"), o, a);
            r.preparationClasses && (i.preparationClasses = C(r.preparationClasses, i.preparationClasses),
            delete r.preparationClasses);
            var c = i.domOperation !== q ? i.domOperation : null;
            return N(i, r),
            c && (i.domOperation = c),
            s.addClass ? i.addClass = s.addClass : i.addClass = null,
            s.removeClass ? i.removeClass = s.removeClass : i.removeClass = null,
            e.addClass = i.addClass,
            e.removeClass = i.removeClass,
            i
        }
        function x(t) {
            return t instanceof W ? t[0] : t
        }
        function M(t, e) {
            var n = e ? "paused" : ""
              , i = r + "PlayState";
            return E(t, [i, n]),
            [i, n]
        }
        function E(t, e) {
            var n = e[0]
              , i = e[1];
            t.style[n] = i
        }
        function C(t, e) {
            return t ? e ? t + " " + e : t : e
        }
        var A = function(t, e) {
            var n = e ? "-" + e + "s" : "";
            return E(t, [c, n]),
            [c, n]
        }
          , T = ["$interpolate", function(t) {
            return {
                link: function(e, n, i) {
                    var r = i.ngAnimateChildren;
                    function o(t) {
                        t = "on" === t || "true" === t,
                        n.data("$$ngAnimateChildren", t)
                    }
                    G(r) && 0 === r.length ? n.data("$$ngAnimateChildren", !0) : (o(t(r)(e)),
                    i.$observe("ngAnimateChildren", o))
                }
            }
        }
        ]
          , O = {
            transitionDuration: l,
            transitionDelay: c,
            transitionProperty: n + "Property",
            animationDuration: s,
            animationDelay: a,
            animationIterationCount: r + "IterationCount"
        }
          , _ = {
            transitionDuration: l,
            transitionDelay: c,
            animationDuration: s,
            animationDelay: a
        };
        function P(t, e) {
            return [e ? a : c, t + "s"]
        }
        function I(t, e, n) {
            var i = Object.create(null)
              , r = t.getComputedStyle(e) || {};
            return j(n, (function(t, e) {
                var n, o, a = r[t];
                if (a) {
                    var s = a.charAt(0);
                    ("-" === s || "+" === s || s >= 0) && (n = 0,
                    o = a.split(/\s*,\s*/),
                    j(o, (function(t) {
                        "s" === t.charAt(t.length - 1) && (t = t.substring(0, t.length - 1)),
                        t = parseFloat(t) || 0,
                        n = n ? Math.max(t, n) : t
                    }
                    )),
                    a = n),
                    0 === a && (a = null),
                    i[e] = a
                }
            }
            )),
            i
        }
        function k(t) {
            return 0 === t || null != t
        }
        function D(t, e) {
            var i = n
              , r = t + "s";
            return e ? i += "Duration" : r += " linear all",
            [i, r]
        }
        function R(t, e, n) {
            j(n, (function(n) {
                t[n] = F(t[n]) ? t[n] : e.style.getPropertyValue(n)
            }
            ))
        }
        var L, N, j, V, F, U, B, z, G, H, W, q, X = ["$animateProvider", function(t) {
            this.$get = ["$window", "$$jqLite", "$$AnimateRunner", "$timeout", "$$animateCache", "$$forceReflow", "$sniffer", "$$rAFScheduler", "$$animateQueue", function(t, e, a, c, l, u, d, p, f) {
                var m = g(e);
                var S = [];
                function C(t) {
                    S.push(t),
                    p.waitUntilQuiet((function() {
                        l.flush();
                        for (var t = u(), e = 0; e < S.length; e++)
                            S[e](t);
                        S.length = 0
                    }
                    ))
                }
                function T(e, n, i, r) {
                    var o = function(e, n, i, r, o) {
                        var a = l.get(i);
                        a || "infinite" === (a = I(t, e, o)).animationIterationCount && (a.animationIterationCount = 1);
                        var s = r || a.transitionDuration > 0 || a.animationDuration > 0;
                        return l.put(i, a, s),
                        a
                    }(e, 0, i, r, O)
                      , a = o.animationDelay
                      , s = o.transitionDelay;
                    return o.maxDelay = a && s ? Math.max(a, s) : a || s,
                    o.maxDuration = Math.max(o.animationDuration * o.animationIterationCount, o.transitionDuration),
                    o
                }
                return function(u, p) {
                    var g = p || {};
                    g.$$prepared || (g = v(L(g)));
                    var S = {}
                      , O = x(u);
                    if (!O || !O.parentNode || !f.enabled())
                        return xt();
                    var N, F, U, B, z, G, H, W, X, Y, K = [], Z = (u.attr("class"),
                    function(t) {
                        var e = {};
                        return t && (t.to || t.from) && (e.to = t.to,
                        e.from = t.from),
                        e
                    }(g)), J = [];
                    if (0 === g.duration || !d.animations && !d.transitions)
                        return xt();
                    var Q = g.event && V(g.event) ? g.event.join(" ") : g.event
                      , $ = Q && g.structural
                      , tt = ""
                      , et = "";
                    $ ? tt = h(Q, "ng-", !0) : Q && (tt = Q),
                    g.addClass && (et += h(g.addClass, "-add")),
                    g.removeClass && (et.length && (et += " "),
                    et += h(g.removeClass, "-remove")),
                    g.applyClassesEarly && et.length && m(u, g);
                    var nt = [tt, et].join(" ").trim()
                      , it = Z.to && Object.keys(Z.to).length > 0;
                    if (!((g.keyframeStyle || "").length > 0) && !it && !nt)
                        return xt();
                    var rt, ot, at = l.cacheKey(O, Q, g.addClass, g.removeClass);
                    if (l.containsCachedAnimationWithoutDuration(at))
                        return nt = null,
                        xt();
                    if (g.stagger > 0) {
                        var st = parseFloat(g.stagger);
                        rt = {
                            transitionDelay: st,
                            animationDelay: st,
                            transitionDuration: 0,
                            animationDuration: 0
                        }
                    } else
                        rt = function(n, i, r, o) {
                            var a, s = "stagger-" + r;
                            if (l.count(r) > 0 && !(a = l.get(s))) {
                                var c = h(i, "-stagger");
                                e.addClass(n, c),
                                (a = I(t, n, o)).animationDuration = Math.max(a.animationDuration, 0),
                                a.transitionDuration = Math.max(a.transitionDuration, 0),
                                e.removeClass(n, c),
                                l.put(s, a, !0)
                            }
                            return a || {}
                        }(O, nt, at, _);
                    if (g.$$skipPreparationClasses || e.addClass(u, nt),
                    g.transitionStyle) {
                        var ct = [n, g.transitionStyle];
                        E(O, ct),
                        K.push(ct)
                    }
                    if (g.duration >= 0) {
                        ot = O.style[n].length > 0;
                        var lt = D(g.duration, ot);
                        E(O, lt),
                        K.push(lt)
                    }
                    if (g.keyframeStyle) {
                        var ut = [r, g.keyframeStyle];
                        E(O, ut),
                        K.push(ut)
                    }
                    var dt = rt ? g.staggerIndex >= 0 ? g.staggerIndex : l.count(at) : 0
                      , pt = 0 === dt;
                    pt && !g.skipBlocking && A(O, 9999);
                    var ht = T(O, 0, at, !$)
                      , ft = ht.maxDelay;
                    G = Math.max(ft, 0),
                    W = ht.maxDuration;
                    var mt = {};
                    if (mt.hasTransitions = ht.transitionDuration > 0,
                    mt.hasAnimations = ht.animationDuration > 0,
                    mt.hasTransitionAll = mt.hasTransitions && "all" === ht.transitionProperty,
                    mt.applyTransitionDuration = it && (mt.hasTransitions && !mt.hasTransitionAll || mt.hasAnimations && !mt.hasTransitions),
                    mt.applyAnimationDuration = g.duration && mt.hasAnimations,
                    mt.applyTransitionDelay = k(g.delay) && (mt.applyTransitionDuration || mt.hasTransitions),
                    mt.applyAnimationDelay = k(g.delay) && mt.hasAnimations,
                    mt.recalculateTimingStyles = et.length > 0,
                    (mt.applyTransitionDuration || mt.applyAnimationDuration) && (W = g.duration ? parseFloat(g.duration) : W,
                    mt.applyTransitionDuration && (mt.hasTransitions = !0,
                    ht.transitionDuration = W,
                    ot = O.style[n + "Property"].length > 0,
                    K.push(D(W, ot))),
                    mt.applyAnimationDuration && (mt.hasAnimations = !0,
                    ht.animationDuration = W,
                    K.push([s, W + "s"]))),
                    0 === W && !mt.recalculateTimingStyles)
                        return xt();
                    var gt, vt = h(nt, "-active");
                    null != g.delay && ("boolean" != typeof g.delay && (gt = parseFloat(g.delay),
                    G = Math.max(gt, 0)),
                    mt.applyTransitionDelay && K.push(P(gt)),
                    mt.applyAnimationDelay && K.push(P(gt, !0)));
                    return null == g.duration && ht.transitionDuration > 0 && (mt.recalculateTimingStyles = mt.recalculateTimingStyles || pt),
                    H = 1e3 * G,
                    X = 1e3 * W,
                    g.skipBlocking || (mt.blockTransition = ht.transitionDuration > 0,
                    mt.blockKeyframeAnimation = ht.animationDuration > 0 && rt.animationDelay > 0 && 0 === rt.animationDuration),
                    g.from && (g.cleanupStyles && R(S, O, Object.keys(g.from)),
                    b(u, g)),
                    mt.blockTransition || mt.blockKeyframeAnimation ? St(W) : g.skipBlocking || A(O, !1),
                    {
                        $$willAnimate: !0,
                        end: yt,
                        start: function() {
                            if (!N)
                                return B = new a(z = {
                                    end: yt,
                                    cancel: bt,
                                    resume: null,
                                    pause: null
                                }),
                                C(Et),
                                B
                        }
                    };
                    function yt() {
                        wt()
                    }
                    function bt() {
                        wt(!0)
                    }
                    function wt(t) {
                        if (!(N || U && F)) {
                            N = !0,
                            F = !1,
                            nt && !g.$$skipPreparationClasses && e.removeClass(u, nt),
                            vt && e.removeClass(u, vt),
                            M(O, !1),
                            A(O, !1),
                            j(K, (function(t) {
                                O.style[t[0]] = ""
                            }
                            )),
                            m(u, g),
                            y(u, g),
                            Object.keys(S).length && j(S, (function(t, e) {
                                t ? O.style.setProperty(e, t) : O.style.removeProperty(e)
                            }
                            )),
                            g.onDone && g.onDone(),
                            J && J.length && u.off(J.join(" "), Mt);
                            var n = u.data("$$animateCss");
                            n && (c.cancel(n[0].timer),
                            u.removeData("$$animateCss")),
                            B && B.complete(!t)
                        }
                    }
                    function St(t) {
                        mt.blockTransition && A(O, t),
                        mt.blockKeyframeAnimation && M(O, !!t)
                    }
                    function xt() {
                        return B = new a({
                            end: yt,
                            cancel: bt
                        }),
                        C(q),
                        wt(),
                        {
                            $$willAnimate: !1,
                            start: function() {
                                return B
                            },
                            end: yt
                        }
                    }
                    function Mt(t) {
                        t.stopPropagation();
                        var e = t.originalEvent || t;
                        if (e.target === O) {
                            var n = e.$manualTimeStamp || Date.now()
                              , i = parseFloat(e.elapsedTime.toFixed(3));
                            Math.max(n - Y, 0) >= H && i >= W && (U = !0,
                            wt())
                        }
                    }
                    function Et() {
                        if (!N)
                            if (O.parentNode) {
                                var t = function(t) {
                                    if (U)
                                        F && t && (F = !1,
                                        wt());
                                    else if (F = !t,
                                    ht.animationDuration) {
                                        var e = M(O, F);
                                        F ? K.push(e) : (i = e,
                                        r = (n = K).indexOf(i),
                                        i >= 0 && n.splice(r, 1))
                                    }
                                    var n, i, r
                                }
                                  , a = dt > 0 && (ht.transitionDuration && 0 === rt.transitionDuration || ht.animationDuration && 0 === rt.animationDuration) && Math.max(rt.animationDelay, rt.transitionDelay);
                                a ? c(s, Math.floor(a * dt * 1e3), !1) : s(),
                                z.resume = function() {
                                    t(!0)
                                }
                                ,
                                z.pause = function() {
                                    t(!1)
                                }
                            } else
                                wt();
                        function s() {
                            if (!N) {
                                if (St(!1),
                                j(K, (function(t) {
                                    var e = t[0]
                                      , n = t[1];
                                    O.style[e] = n
                                }
                                )),
                                m(u, g),
                                e.addClass(u, vt),
                                mt.recalculateTimingStyles) {
                                    if (O.getAttribute("class") + " " + nt,
                                    at = l.cacheKey(O, Q, g.addClass, g.removeClass),
                                    ht = T(O, 0, at, !1),
                                    ft = ht.maxDelay,
                                    G = Math.max(ft, 0),
                                    0 === (W = ht.maxDuration))
                                        return void wt();
                                    mt.hasTransitions = ht.transitionDuration > 0,
                                    mt.hasAnimations = ht.animationDuration > 0
                                }
                                if (mt.applyAnimationDelay && (ft = "boolean" != typeof g.delay && k(g.delay) ? parseFloat(g.delay) : ft,
                                G = Math.max(ft, 0),
                                ht.animationDelay = ft,
                                gt = P(ft, !0),
                                K.push(gt),
                                O.style[gt[0]] = gt[1]),
                                H = 1e3 * G,
                                X = 1e3 * W,
                                g.easing) {
                                    var t, a = g.easing;
                                    mt.hasTransitions && (t = n + "TimingFunction",
                                    K.push([t, a]),
                                    O.style[t] = a),
                                    mt.hasAnimations && (t = r + "TimingFunction",
                                    K.push([t, a]),
                                    O.style[t] = a)
                                }
                                ht.transitionDuration && J.push(i),
                                ht.animationDuration && J.push(o),
                                Y = Date.now();
                                var s = H + 1.5 * X
                                  , p = Y + s
                                  , h = u.data("$$animateCss") || []
                                  , f = !0;
                                if (h.length) {
                                    var v = h[0];
                                    (f = p > v.expectedEndTime) ? c.cancel(v.timer) : h.push(wt)
                                }
                                if (f) {
                                    var y = c(d, s, !1);
                                    h[0] = {
                                        timer: y,
                                        expectedEndTime: p
                                    },
                                    h.push(wt),
                                    u.data("$$animateCss", h)
                                }
                                J.length && u.on(J.join(" "), Mt),
                                g.to && (g.cleanupStyles && R(S, O, Object.keys(g.to)),
                                w(u, g))
                            }
                        }
                        function d() {
                            var t = u.data("$$animateCss");
                            if (t) {
                                for (var e = 1; e < t.length; e++)
                                    t[e]();
                                u.removeData("$$animateCss")
                            }
                        }
                    }
                }
            }
            ]
        }
        ], Y = ["$$animationProvider", function(t) {
            t.drivers.push("$$animateCssDriver");
            this.$get = ["$animateCss", "$rootScope", "$$AnimateRunner", "$rootElement", "$sniffer", "$$jqLite", "$document", function(t, e, n, i, r, o, a) {
                if (!r.animations && !r.transitions)
                    return q;
                var s, c = a[0].body, l = x(i), u = W((s = l).parentNode && 11 === s.parentNode.nodeType || c.contains(l) ? l : c);
                return function(e) {
                    return e.from && e.to ? function(e, i, r, o) {
                        var a = h(e)
                          , s = h(i)
                          , l = [];
                        if (j(o, (function(e) {
                            var i = function(e, i, r) {
                                var o = W(x(i).cloneNode(!0))
                                  , a = d(m(o));
                                i.addClass("ng-animate-shim"),
                                r.addClass("ng-animate-shim"),
                                o.addClass("ng-anchor"),
                                u.append(o);
                                var s, l = function() {
                                    var e = t(o, {
                                        addClass: "ng-anchor-out",
                                        delay: !0,
                                        from: f(i)
                                    });
                                    return e.$$willAnimate ? e : null
                                }();
                                if (!l && !(s = g()))
                                    return v();
                                var h = l || s;
                                return {
                                    start: function() {
                                        var t, e = h.start();
                                        return e.done((function() {
                                            if (e = null,
                                            !s && (s = g()))
                                                return (e = s.start()).done((function() {
                                                    e = null,
                                                    v(),
                                                    t.complete()
                                                }
                                                )),
                                                e;
                                            v(),
                                            t.complete()
                                        }
                                        )),
                                        t = new n({
                                            end: i,
                                            cancel: i
                                        });
                                        function i() {
                                            e && e.end()
                                        }
                                    }
                                };
                                function f(t) {
                                    var e = {}
                                      , n = x(t).getBoundingClientRect();
                                    return j(["width", "height", "top", "left"], (function(t) {
                                        var i = n[t];
                                        switch (t) {
                                        case "top":
                                            i += c.scrollTop;
                                            break;
                                        case "left":
                                            i += c.scrollLeft
                                        }
                                        e[t] = Math.floor(i) + "px"
                                    }
                                    )),
                                    e
                                }
                                function m(t) {
                                    return t.attr("class") || ""
                                }
                                function g() {
                                    var e = d(m(r))
                                      , n = p(e, a)
                                      , i = p(a, e)
                                      , s = t(o, {
                                        to: f(r),
                                        addClass: "ng-anchor-in " + n,
                                        removeClass: "ng-anchor-out " + i,
                                        delay: !0
                                    });
                                    return s.$$willAnimate ? s : null
                                }
                                function v() {
                                    o.remove(),
                                    i.removeClass("ng-animate-shim"),
                                    r.removeClass("ng-animate-shim")
                                }
                            }(0, e.out, e.in);
                            i && l.push(i)
                        }
                        )),
                        !a && !s && 0 === l.length)
                            return;
                        return {
                            start: function() {
                                var t = [];
                                a && t.push(a.start()),
                                s && t.push(s.start()),
                                j(l, (function(e) {
                                    t.push(e.start())
                                }
                                ));
                                var e = new n({
                                    end: i,
                                    cancel: i
                                });
                                return n.all(t, (function(t) {
                                    e.complete(t)
                                }
                                )),
                                e;
                                function i() {
                                    j(t, (function(t) {
                                        t.end()
                                    }
                                    ))
                                }
                            }
                        }
                    }(e.from, e.to, e.classes, e.anchors) : h(e)
                }
                ;
                function d(t) {
                    return t.replace(/\bng-\S+\b/g, "")
                }
                function p(t, e) {
                    return G(t) && (t = t.split(" ")),
                    G(e) && (e = e.split(" ")),
                    t.filter((function(t) {
                        return -1 === e.indexOf(t)
                    }
                    )).join(" ")
                }
                function h(e) {
                    var n = e.element
                      , i = e.options || {};
                    e.structural && (i.event = e.event,
                    i.structural = !0,
                    i.applyClassesEarly = !0,
                    "leave" === e.event && (i.onDone = i.domOperation)),
                    i.preparationClasses && (i.event = C(i.event, i.preparationClasses));
                    var r = t(n, i);
                    return r.$$willAnimate ? r : null
                }
            }
            ]
        }
        ], K = ["$animateProvider", function(t) {
            this.$get = ["$injector", "$$AnimateRunner", "$$jqLite", function(e, n, i) {
                var r = g(i);
                return function(t, e, i, a) {
                    var s = !1;
                    3 === arguments.length && z(i) && (a = i,
                    i = null),
                    a = v(a),
                    i || (i = t.attr("class") || "",
                    a.addClass && (i += " " + a.addClass),
                    a.removeClass && (i += " " + a.removeClass));
                    var c, l, u, d, p, h = a.addClass, f = a.removeClass, m = o(i);
                    m.length && ("leave" === e ? (d = "leave",
                    u = "afterLeave") : (d = "before" + e.charAt(0).toUpperCase() + e.substr(1),
                    u = e),
                    "enter" !== e && "move" !== e && (c = x(t, e, a, m, d)),
                    l = x(t, e, a, m, u));
                    if (c || l)
                        return {
                            $$willAnimate: !0,
                            end: function() {
                                return p ? p.end() : (b(),
                                (p = new n).complete(!0)),
                                p
                            },
                            start: function() {
                                if (p)
                                    return p;
                                var t;
                                p = new n;
                                var e = [];
                                return c && e.push((function(e) {
                                    t = c(e)
                                }
                                )),
                                e.length ? e.push((function(t) {
                                    g(),
                                    t(!0)
                                }
                                )) : g(),
                                l && e.push((function(e) {
                                    t = l(e)
                                }
                                )),
                                p.setHost({
                                    end: function() {
                                        r()
                                    },
                                    cancel: function() {
                                        r(!0)
                                    }
                                }),
                                n.chain(e, i),
                                p;
                                function i(t) {
                                    b(),
                                    p.complete(t)
                                }
                                function r(e) {
                                    s || ((t || q)(e),
                                    i(e))
                                }
                            }
                        };
                    function g() {
                        a.domOperation(),
                        r(t, a)
                    }
                    function b() {
                        s = !0,
                        g(),
                        y(t, a)
                    }
                    function w(t, e, i, r, o) {
                        var a;
                        switch (i) {
                        case "animate":
                            a = [e, r.from, r.to, o];
                            break;
                        case "setClass":
                            a = [e, h, f, o];
                            break;
                        case "addClass":
                            a = [e, h, o];
                            break;
                        case "removeClass":
                            a = [e, f, o];
                            break;
                        default:
                            a = [e, o]
                        }
                        a.push(r);
                        var s = t.apply(t, a);
                        if (s)
                            if (B(s.start) && (s = s.start()),
                            s instanceof n)
                                s.done(o);
                            else if (B(s))
                                return s;
                        return q
                    }
                    function S(t, e, i, r, o) {
                        var a = [];
                        return j(r, (function(r) {
                            var s = r[o];
                            s && a.push((function() {
                                var r, o, a = !1, c = function(t) {
                                    a || (a = !0,
                                    (o || q)(t),
                                    r.complete(!t))
                                };
                                return r = new n({
                                    end: function() {
                                        c()
                                    },
                                    cancel: function() {
                                        c(!0)
                                    }
                                }),
                                o = w(s, t, e, i, (function(t) {
                                    c(!1 === t)
                                }
                                )),
                                r
                            }
                            ))
                        }
                        )),
                        a
                    }
                    function x(t, e, i, r, o) {
                        var a, s, c = S(t, e, i, r, o);
                        0 === c.length && ("beforeSetClass" === o ? (a = S(t, "removeClass", i, r, "beforeRemoveClass"),
                        s = S(t, "addClass", i, r, "beforeAddClass")) : "setClass" === o && (a = S(t, "removeClass", i, r, "removeClass"),
                        s = S(t, "addClass", i, r, "addClass")),
                        a && (c = c.concat(a)),
                        s && (c = c.concat(s)));
                        if (0 !== c.length)
                            return function(t) {
                                var e = [];
                                return c.length && j(c, (function(t) {
                                    e.push(t())
                                }
                                )),
                                e.length ? n.all(e, t) : t(),
                                function(t) {
                                    j(e, (function(e) {
                                        t ? e.cancel() : e.end()
                                    }
                                    ))
                                }
                            }
                    }
                }
                ;
                function o(n) {
                    n = V(n) ? n : n.split(" ");
                    for (var i = [], r = {}, o = 0; o < n.length; o++) {
                        var a = n[o]
                          , s = t.$$registeredAnimations[a];
                        s && !r[a] && (i.push(e.get(s)),
                        r[a] = !0)
                    }
                    return i
                }
            }
            ]
        }
        ], Z = ["$$animationProvider", function(t) {
            t.drivers.push("$$animateJsDriver"),
            this.$get = ["$$animateJs", "$$AnimateRunner", function(t, e) {
                return function(t) {
                    if (t.from && t.to) {
                        var i = n(t.from)
                          , r = n(t.to);
                        if (!i && !r)
                            return;
                        return {
                            start: function() {
                                var t = [];
                                i && t.push(i.start()),
                                r && t.push(r.start()),
                                e.all(t, (function(t) {
                                    n.complete(t)
                                }
                                ));
                                var n = new e({
                                    end: o(),
                                    cancel: o()
                                });
                                return n;
                                function o() {
                                    return function() {
                                        j(t, (function(t) {
                                            t.end()
                                        }
                                        ))
                                    }
                                }
                            }
                        }
                    }
                    return n(t)
                }
                ;
                function n(e) {
                    var n = e.element
                      , i = e.event
                      , r = e.options
                      , o = e.classes;
                    return t(n, i, o, r)
                }
            }
            ]
        }
        ], J = ["$animateProvider", function(e) {
            var n = this.rules = {
                skip: [],
                cancel: [],
                join: []
            };
            function i(t) {
                return {
                    addClass: t.addClass,
                    removeClass: t.removeClass,
                    from: t.from,
                    to: t.to
                }
            }
            function r(t, e) {
                if (t && e) {
                    var n = function(t) {
                        if (!t)
                            return null;
                        var e = t.split(" ")
                          , n = Object.create(null);
                        return j(e, (function(t) {
                            n[t] = !0
                        }
                        )),
                        n
                    }(e);
                    return t.split(" ").some((function(t) {
                        return n[t]
                    }
                    ))
                }
            }
            function o(t, e, i) {
                return n[t].some((function(t) {
                    return t(e, i)
                }
                ))
            }
            function a(t, e) {
                var n = (t.addClass || "").length > 0
                  , i = (t.removeClass || "").length > 0;
                return e ? n && i : n || i
            }
            n.join.push((function(t, e) {
                return !t.structural && a(t)
            }
            )),
            n.skip.push((function(t, e) {
                return !t.structural && !a(t)
            }
            )),
            n.skip.push((function(t, e) {
                return "leave" === e.event && t.structural
            }
            )),
            n.skip.push((function(t, e) {
                return e.structural && 2 === e.state && !t.structural
            }
            )),
            n.cancel.push((function(t, e) {
                return e.structural && t.structural
            }
            )),
            n.cancel.push((function(t, e) {
                return 2 === e.state && t.structural
            }
            )),
            n.cancel.push((function(t, e) {
                if (e.structural)
                    return !1;
                var n = t.addClass
                  , i = t.removeClass
                  , o = e.addClass
                  , a = e.removeClass;
                return !(H(n) && H(i) || H(o) && H(a)) && (r(n, a) || r(i, o))
            }
            )),
            this.$get = ["$$rAF", "$rootScope", "$rootElement", "$document", "$$Map", "$$animation", "$$AnimateRunner", "$templateRequest", "$$jqLite", "$$forceReflow", "$$isDocumentHidden", function(n, r, s, c, l, u, p, b, w, M, E) {
                var A = new l
                  , T = new l
                  , O = null;
                function _(t) {
                    T.delete(t.target)
                }
                var P = r.$watch((function() {
                    return 0 === b.totalPendingRequests
                }
                ), (function(t) {
                    t && (P(),
                    r.$$postDigest((function() {
                        r.$$postDigest((function() {
                            null === O && (O = !0)
                        }
                        ))
                    }
                    )))
                }
                ))
                  , I = Object.create(null)
                  , k = e.customFilter()
                  , D = e.classNameFilter()
                  , R = function() {
                    return !0
                }
                  , B = k || R
                  , q = D ? function(t, e) {
                    var n = [t.getAttribute("class"), e.addClass, e.removeClass].join(" ");
                    return D.test(n)
                }
                : R
                  , X = g(w);
                function Y(t, e) {
                    return S(t, e, {})
                }
                var K = t.Node.prototype.contains || function(t) {
                    return this === t || !!(16 & this.compareDocumentPosition(t))
                }
                ;
                function Z(t, e, n) {
                    var i = m(e);
                    return t.filter((function(t) {
                        return !(t.node === i && (!n || t.callback === n))
                    }
                    ))
                }
                function J(t, e) {
                    "close" !== t || e.parentNode || Q.off(e)
                }
                var Q = {
                    on: function(t, e, n) {
                        var i = m(e);
                        I[t] = I[t] || [],
                        I[t].push({
                            node: i,
                            callback: n
                        }),
                        W(e).on("$destroy", (function() {
                            A.get(i) || Q.off(t, e, n)
                        }
                        ))
                    },
                    off: function(t, e, n) {
                        if (1 !== arguments.length || G(arguments[0])) {
                            var i = I[t];
                            i && (I[t] = 1 === arguments.length ? null : Z(i, e, n))
                        } else
                            for (var r in e = arguments[0],
                            I)
                                I[r] = Z(I[r], e)
                    },
                    pin: function(t, e) {
                        d(U(t), "element", "not an element"),
                        d(U(e), "parentElement", "not an element"),
                        t.data("$ngAnimatePin", e)
                    },
                    push: function(t, e, l, d) {
                        return (l = l || {}).domOperation = d,
                        function(t, e, l) {
                            var d = L(l)
                              , m = f(t)
                              , g = x(m)
                              , b = g && g.parentNode;
                            d = v(d);
                            var w = new p
                              , M = (_ = !1,
                            function(t) {
                                _ ? t() : r.$$postDigest((function() {
                                    _ = !0,
                                    t()
                                }
                                ))
                            }
                            );
                            var _;
                            V(d.addClass) && (d.addClass = d.addClass.join(" "));
                            d.addClass && !G(d.addClass) && (d.addClass = null);
                            V(d.removeClass) && (d.removeClass = d.removeClass.join(" "));
                            d.removeClass && !G(d.removeClass) && (d.removeClass = null);
                            d.from && !z(d.from) && (d.from = null);
                            d.to && !z(d.to) && (d.to = null);
                            if (!(O && g && B(g, e, l) && q(g, d)))
                                return nt(),
                                w;
                            var P = ["enter", "move", "leave"].indexOf(e) >= 0
                              , k = E()
                              , D = k || T.get(g)
                              , R = !D && A.get(g) || {}
                              , N = !!R.state;
                            D || N && 1 === R.state || (D = !function(t, e, n) {
                                var i, r = c[0].body, o = x(s), a = t === r || "HTML" === t.nodeName, l = t === o, u = !1, d = T.get(t), p = W.data(t, "$ngAnimatePin");
                                p && (e = x(p));
                                for (; e && (l || (l = e === o),
                                1 === e.nodeType); ) {
                                    var h = A.get(e) || {};
                                    if (!u) {
                                        var f = T.get(e);
                                        if (!0 === f && !1 !== d) {
                                            d = !0;
                                            break
                                        }
                                        !1 === f && (d = !1),
                                        u = h.structural
                                    }
                                    if (H(i) || !0 === i) {
                                        var m = W.data(e, "$$ngAnimateChildren");
                                        F(m) && (i = m)
                                    }
                                    if (u && !1 === i)
                                        break;
                                    if (a || (a = e === r),
                                    a && l)
                                        break;
                                    e = l || !(p = W.data(e, "$ngAnimatePin")) ? e.parentNode : x(p)
                                }
                                return (!u || i) && !0 !== d && l && a
                            }(g, b));
                            if (D)
                                return k && et(w, e, "start", i(d)),
                                nt(),
                                k && et(w, e, "close", i(d)),
                                w;
                            P && function(t) {
                                var e = t.querySelectorAll("[data-ng-animate]");
                                j(e, (function(t) {
                                    var e = parseInt(t.getAttribute("data-ng-animate"), 10)
                                      , n = A.get(t);
                                    if (n)
                                        switch (e) {
                                        case 2:
                                            n.runner.end();
                                        case 1:
                                            A.delete(t)
                                        }
                                }
                                ))
                            }(g);
                            var U = {
                                structural: P,
                                element: m,
                                event: e,
                                addClass: d.addClass,
                                removeClass: d.removeClass,
                                close: nt,
                                options: d,
                                runner: w
                            };
                            if (N) {
                                if (o("skip", U, R))
                                    return 2 === R.state ? (nt(),
                                    w) : (S(m, R, U),
                                    R.runner);
                                if (o("cancel", U, R))
                                    if (2 === R.state)
                                        R.runner.end();
                                    else {
                                        if (!R.structural)
                                            return S(m, R, U),
                                            R.runner;
                                        R.close()
                                    }
                                else if (o("join", U, R)) {
                                    if (2 !== R.state)
                                        return function(t, e, n, i) {
                                            var r = "";
                                            n && (r = h(n, "ng-", !0)),
                                            i.addClass && (r = C(r, h(i.addClass, "-add"))),
                                            i.removeClass && (r = C(r, h(i.removeClass, "-remove"))),
                                            r.length && (i.preparationClasses = r,
                                            e.addClass(r))
                                        }(0, m, P ? e : null, d),
                                        e = U.event = R.event,
                                        d = S(m, R, U),
                                        R.runner;
                                    Y(m, U)
                                }
                            } else
                                Y(m, U);
                            var Z = U.structural;
                            Z || (Z = "animate" === U.event && Object.keys(U.options.to || {}).length > 0 || a(U));
                            if (!Z)
                                return nt(),
                                $(g),
                                w;
                            var Q = (R.counter || 0) + 1;
                            return U.counter = Q,
                            tt(g, 1, U),
                            r.$$postDigest((function() {
                                m = f(t);
                                var n = A.get(g)
                                  , r = !n;
                                n = n || {};
                                var o = (m.parent() || []).length > 0 && ("animate" === n.event || n.structural || a(n));
                                if (r || n.counter !== Q || !o)
                                    return r && (X(m, d),
                                    y(m, d)),
                                    (r || P && n.event !== e) && (d.domOperation(),
                                    w.end()),
                                    void (o || $(g));
                                e = !n.structural && a(n, !0) ? "setClass" : n.event,
                                tt(g, 2);
                                var s = u(m, e, n.options);
                                w.setHost(s),
                                et(w, e, "start", i(d)),
                                s.done((function(t) {
                                    nt(!t);
                                    var n = A.get(g);
                                    n && n.counter === Q && $(g),
                                    et(w, e, "close", i(d))
                                }
                                ))
                            }
                            )),
                            w;
                            function et(t, e, i, r) {
                                M((function() {
                                    var t = function(t, e, n) {
                                        var i = []
                                          , r = I[n];
                                        return r && j(r, (function(r) {
                                            (K.call(r.node, e) || "leave" === n && K.call(r.node, t)) && i.push(r.callback)
                                        }
                                        )),
                                        i
                                    }(b, g, e);
                                    t.length ? n((function() {
                                        j(t, (function(t) {
                                            t(m, i, r)
                                        }
                                        )),
                                        J(i, g)
                                    }
                                    )) : J(i, g)
                                }
                                )),
                                t.progress(e, i, r)
                            }
                            function nt(t) {
                                !function(t, e) {
                                    e.preparationClasses && (t.removeClass(e.preparationClasses),
                                    e.preparationClasses = null),
                                    e.activeClasses && (t.removeClass(e.activeClasses),
                                    e.activeClasses = null)
                                }(m, d),
                                X(m, d),
                                y(m, d),
                                d.domOperation(),
                                w.complete(!t)
                            }
                        }(t, e, l)
                    },
                    enabled: function(t, e) {
                        var n = arguments.length;
                        if (0 === n)
                            e = !!O;
                        else {
                            var i = U(t);
                            if (i) {
                                var r = x(t);
                                1 === n ? e = !T.get(r) : (T.has(r) || W(t).on("$destroy", _),
                                T.set(r, !e))
                            } else
                                e = O = !!t
                        }
                        return e
                    }
                };
                return Q;
                function $(t) {
                    t.removeAttribute("data-ng-animate"),
                    A.delete(t)
                }
                function tt(t, e, n) {
                    (n = n || {}).state = e,
                    t.setAttribute("data-ng-animate", e);
                    var i = A.get(t)
                      , r = i ? N(i, n) : n;
                    A.set(t, r)
                }
            }
            ]
        }
        ], Q = ["$animateProvider", function(t) {
            var e = this.drivers = [];
            function n(t) {
                return t.data("$$animationRunner")
            }
            this.$get = ["$$jqLite", "$rootScope", "$injector", "$$AnimateRunner", "$$Map", "$$rAFScheduler", "$$animateCache", function(t, i, r, o, a, s, c) {
                var l = []
                  , u = g(t);
                return function(d, h, f) {
                    f = v(f);
                    var m = ["enter", "move", "leave"].indexOf(h) >= 0
                      , g = new o({
                        end: function() {
                            E()
                        },
                        cancel: function() {
                            E(!0)
                        }
                    });
                    if (!e.length)
                        return E(),
                        g;
                    var b = p(d.attr("class"), p(f.addClass, f.removeClass))
                      , w = f.tempClasses;
                    return w && (b += " " + w,
                    f.tempClasses = null),
                    m && d.data("$$animatePrepareClasses", "ng-" + h + "-prepare"),
                    function(t, e) {
                        t.data("$$animationRunner", e)
                    }(d, g),
                    l.push({
                        element: d,
                        classes: b,
                        event: h,
                        structural: m,
                        options: f,
                        beforeStart: function() {
                            w = (w ? w + " " : "") + "ng-animate",
                            t.addClass(d, w);
                            var e = d.data("$$animatePrepareClasses");
                            e && (t.removeClass(d, e),
                            e = null)
                        },
                        close: E
                    }),
                    d.on("$destroy", M),
                    l.length > 1 || i.$$postDigest((function() {
                        var i = [];
                        j(l, (function(t) {
                            n(t.element) ? i.push(t) : t.close()
                        }
                        )),
                        l.length = 0;
                        var o = function(t) {
                            var e = []
                              , n = {};
                            j(t, (function(t, i) {
                                var r = x(t.element)
                                  , o = t.event
                                  , a = ["enter", "move"].indexOf(o) >= 0
                                  , s = t.structural ? function(t) {
                                    var e = t.hasAttribute("ng-animate-ref") ? [t] : t.querySelectorAll("[ng-animate-ref]")
                                      , n = [];
                                    return j(e, (function(t) {
                                        var e = t.getAttribute("ng-animate-ref");
                                        e && e.length && n.push(t)
                                    }
                                    )),
                                    n
                                }(r) : [];
                                if (s.length) {
                                    var c = a ? "to" : "from";
                                    j(s, (function(t) {
                                        var e = t.getAttribute("ng-animate-ref");
                                        n[e] = n[e] || {},
                                        n[e][c] = {
                                            animationID: i,
                                            element: W(t)
                                        }
                                    }
                                    ))
                                } else
                                    e.push(t)
                            }
                            ));
                            var i = {}
                              , r = {};
                            return j(n, (function(n, o) {
                                var a = n.from
                                  , s = n.to;
                                if (a && s) {
                                    var c = t[a.animationID]
                                      , l = t[s.animationID]
                                      , u = a.animationID.toString();
                                    if (!r[u]) {
                                        var d = r[u] = {
                                            structural: !0,
                                            beforeStart: function() {
                                                c.beforeStart(),
                                                l.beforeStart()
                                            },
                                            close: function() {
                                                c.close(),
                                                l.close()
                                            },
                                            classes: S(c.classes, l.classes),
                                            from: c,
                                            to: l,
                                            anchors: []
                                        };
                                        d.classes.length ? e.push(d) : (e.push(c),
                                        e.push(l))
                                    }
                                    r[u].anchors.push({
                                        out: a.element,
                                        in: s.element
                                    })
                                } else {
                                    var p = a ? a.animationID : s.animationID
                                      , h = p.toString();
                                    i[h] || (i[h] = !0,
                                    e.push(t[p]))
                                }
                            }
                            )),
                            e
                        }(i)
                          , u = [];
                        j(o, (function(t) {
                            var i = t.from ? t.from.element : t.element
                              , o = f.addClass;
                            o = (o ? o + " " : "") + "ng-animate";
                            var a = c.cacheKey(i[0], t.event, o, f.removeClass);
                            u.push({
                                element: i,
                                domNode: x(i),
                                fn: function() {
                                    var i, o = t.close;
                                    if (c.containsCachedAnimationWithoutDuration(a))
                                        o();
                                    else {
                                        if (t.beforeStart(),
                                        n(t.anchors ? t.from.element || t.to.element : t.element)) {
                                            var s = function(t) {
                                                for (var n = e.length - 1; n >= 0; n--) {
                                                    var i = e[n]
                                                      , o = r.get(i)(t);
                                                    if (o)
                                                        return o
                                                }
                                            }(t);
                                            s && (i = s.start)
                                        }
                                        if (i) {
                                            var l = i();
                                            l.done((function(t) {
                                                o(!t)
                                            }
                                            )),
                                            function(t, e) {
                                                t.from && t.to ? (i(t.from.element),
                                                i(t.to.element)) : i(t.element);
                                                function i(t) {
                                                    var i = n(t);
                                                    i && i.setHost(e)
                                                }
                                            }(t, l)
                                        } else
                                            o()
                                    }
                                }
                            })
                        }
                        ));
                        for (var d = function(t) {
                            var e, n = {
                                children: []
                            }, i = new a;
                            for (e = 0; e < t.length; e++) {
                                var r = t[e];
                                i.set(r.domNode, t[e] = {
                                    domNode: r.domNode,
                                    element: r.element,
                                    fn: r.fn,
                                    children: []
                                })
                            }
                            for (e = 0; e < t.length; e++)
                                o(t[e]);
                            return function(t) {
                                var e, n = [], i = [];
                                for (e = 0; e < t.children.length; e++)
                                    i.push(t.children[e]);
                                var r = i.length
                                  , o = 0
                                  , a = [];
                                for (e = 0; e < i.length; e++) {
                                    var s = i[e];
                                    r <= 0 && (r = o,
                                    o = 0,
                                    n.push(a),
                                    a = []),
                                    a.push(s),
                                    s.children.forEach((function(t) {
                                        o++,
                                        i.push(t)
                                    }
                                    )),
                                    r--
                                }
                                a.length && n.push(a);
                                return n
                            }(n);
                            function o(t) {
                                if (t.processed)
                                    return t;
                                t.processed = !0;
                                var e, r = t.domNode, a = r.parentNode;
                                for (i.set(r, t); a; ) {
                                    if (e = i.get(a)) {
                                        e.processed || (e = o(e));
                                        break
                                    }
                                    a = a.parentNode
                                }
                                return (e || n).children.push(t),
                                t
                            }
                        }(u), p = 0; p < d.length; p++)
                            for (var h = d[p], m = 0; m < h.length; m++) {
                                var g = h[m]
                                  , v = g.element;
                                if (d[p][m] = g.fn,
                                0 !== p) {
                                    var y = v.data("$$animatePrepareClasses");
                                    y && t.addClass(v, y)
                                } else
                                    v.removeData("$$animatePrepareClasses")
                            }
                        s(d)
                    }
                    )),
                    g;
                    function S(t, e) {
                        t = t.split(" "),
                        e = e.split(" ");
                        for (var n = [], i = 0; i < t.length; i++) {
                            var r = t[i];
                            if ("ng-" !== r.substring(0, 3))
                                for (var o = 0; o < e.length; o++)
                                    if (r === e[o]) {
                                        n.push(r);
                                        break
                                    }
                        }
                        return n.join(" ")
                    }
                    function M() {
                        var t = n(d);
                        !t || "leave" === h && f.$$domOperationFired || t.end()
                    }
                    function E(e) {
                        d.off("$destroy", M),
                        function(t) {
                            t.removeData("$$animationRunner")
                        }(d),
                        u(d, f),
                        y(d, f),
                        f.domOperation(),
                        w && t.removeClass(d, w),
                        g.complete(!e)
                    }
                }
            }
            ]
        }
        ];
        e.module("ngAnimate", [], (function() {
            q = e.noop,
            L = e.copy,
            N = e.extend,
            W = e.element,
            j = e.forEach,
            V = e.isArray,
            G = e.isString,
            z = e.isObject,
            H = e.isUndefined,
            F = e.isDefined,
            B = e.isFunction,
            U = e.isElement
        }
        )).info({
            angularVersion: "1.8.0"
        }).directive("ngAnimateSwap", ["$animate", function(t) {
            return {
                restrict: "A",
                transclude: "element",
                terminal: !0,
                priority: 550,
                link: function(e, n, i, r, o) {
                    var a, s;
                    e.$watchCollection(i.ngAnimateSwap || i.for, (function(e) {
                        a && t.leave(a),
                        s && (s.$destroy(),
                        s = null),
                        (e || 0 === e) && o((function(e, i) {
                            a = e,
                            s = i,
                            t.enter(e, null, n)
                        }
                        ))
                    }
                    ))
                }
            }
        }
        ]).directive("ngAnimateChildren", T).factory("$$rAFScheduler", ["$$rAF", function(t) {
            var e, n;
            function i(t) {
                e = e.concat(t),
                r()
            }
            return e = i.queue = [],
            i.waitUntilQuiet = function(e) {
                n && n(),
                n = t((function() {
                    n = null,
                    e(),
                    r()
                }
                ))
            }
            ,
            i;
            function r() {
                if (e.length) {
                    for (var i = e.shift(), o = 0; o < i.length; o++)
                        i[o]();
                    n || t((function() {
                        n || r()
                    }
                    ))
                }
            }
        }
        ]).provider("$$animateQueue", J).provider("$$animateCache", (function() {
            var t = "$$ngAnimateParentKey"
              , e = 0
              , n = Object.create(null);
            this.$get = [function() {
                return {
                    cacheKey: function(n, i, r, o) {
                        var a = n.parentNode
                          , s = [a[t] || (a[t] = ++e), i, n.getAttribute("class")];
                        return r && s.push(r),
                        o && s.push(o),
                        s.join(" ")
                    },
                    containsCachedAnimationWithoutDuration: function(t) {
                        var e = n[t];
                        return e && !e.isValid || !1
                    },
                    flush: function() {
                        n = Object.create(null)
                    },
                    count: function(t) {
                        var e = n[t];
                        return e ? e.total : 0
                    },
                    get: function(t) {
                        var e = n[t];
                        return e && e.value
                    },
                    put: function(t, e, i) {
                        n[t] ? (n[t].total++,
                        n[t].value = e) : n[t] = {
                            total: 1,
                            value: e,
                            isValid: i
                        }
                    }
                }
            }
            ]
        }
        )).provider("$$animation", Q).provider("$animateCss", X).provider("$$animateCssDriver", Y).provider("$$animateJs", K).provider("$$animateJsDriver", Z)
    }(window, window.angular)
}
, function(t, e) {
    angular.module("colorpicker.module", []).factory("Helper", (function() {
        "use strict";
        return {
            closestSlider: function(t) {
                return (t.matches || t.webkitMatchesSelector || t.mozMatchesSelector || t.msMatchesSelector).bind(t)("I") ? t.parentNode : t
            },
            getOffset: function(t, e) {
                for (var n = 0, i = 0, r = t.getBoundingClientRect(); t && !isNaN(t.offsetLeft) && !isNaN(t.offsetTop); )
                    e || "BODY" !== t.tagName ? (n += t.scrollLeft,
                    i += t.scrollTop) : (n += document.documentElement.scrollLeft || t.scrollLeft,
                    i += document.documentElement.scrollTop || t.scrollTop),
                    t = t.offsetParent;
                return {
                    top: r.top + window.pageYOffset,
                    left: r.left + window.pageXOffset,
                    scrollX: n,
                    scrollY: i
                }
            },
            stringParsers: [{
                re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,
                parse: function(t) {
                    return [t[1], t[2], t[3], t[4]]
                }
            }, {
                re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,
                parse: function(t) {
                    return [2.55 * t[1], 2.55 * t[2], 2.55 * t[3], t[4]]
                }
            }, {
                re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,
                parse: function(t) {
                    return [parseInt(t[1], 16), parseInt(t[2], 16), parseInt(t[3], 16)]
                }
            }, {
                re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,
                parse: function(t) {
                    return [parseInt(t[1] + t[1], 16), parseInt(t[2] + t[2], 16), parseInt(t[3] + t[3], 16)]
                }
            }]
        }
    }
    )).factory("Color", ["Helper", function(t) {
        "use strict";
        return {
            value: {
                h: 1,
                s: 1,
                b: 1,
                a: 1
            },
            rgb: function() {
                var t = this.toRGB();
                return "rgb(" + t.r + "," + t.g + "," + t.b + ")"
            },
            rgba: function() {
                var t = this.toRGB();
                return "rgba(" + t.r + "," + t.g + "," + t.b + "," + t.a + ")"
            },
            hex: function() {
                return this.toHex()
            },
            RGBtoHSB: function(t, e, n, i) {
                var r, o;
                return t /= 255,
                e /= 255,
                n /= 255,
                {
                    h: ((0 === (o = (r = Math.max(t, e, n)) - Math.min(t, e, n)) ? null : r === t ? (e - n) / o : r === e ? (n - t) / o + 2 : (t - e) / o + 4) + 360) % 6 * 60 / 360 || 1,
                    s: 0 === o ? 0 : o / r,
                    b: r,
                    a: i || 1
                }
            },
            setColor: function(e) {
                for (var n in e = e ? e.toLowerCase() : e,
                t.stringParsers)
                    if (t.stringParsers.hasOwnProperty(n)) {
                        var i = t.stringParsers[n]
                          , r = i.re.exec(e)
                          , o = r && i.parse(r);
                        if (o)
                            return this.value = this.RGBtoHSB.apply(null, o),
                            !1
                    }
            },
            setHue: function(t) {
                this.value.h = 1 - t
            },
            setSaturation: function(t) {
                this.value.s = t
            },
            setLightness: function(t) {
                this.value.b = 1 - t
            },
            setAlpha: function(t) {
                this.value.a = parseInt(100 * (1 - t), 10) / 100
            },
            toRGB: function(t, e, n, i) {
                var r, o, a, s, c;
                return t || (t = this.value.h,
                e = this.value.s,
                n = this.value.b),
                t = (t *= 360) % 360 / 60,
                r = o = a = n - (c = n * e),
                r += [c, s = c * (1 - Math.abs(t % 2 - 1)), 0, 0, s, c][t = ~~t],
                o += [s, c, c, s, 0, 0][t],
                a += [0, 0, s, c, c, s][t],
                {
                    r: Math.round(255 * r),
                    g: Math.round(255 * o),
                    b: Math.round(255 * a),
                    a: i || this.value.a
                }
            },
            toHex: function(t, e, n, i) {
                var r = this.toRGB(t, e, n, i);
                return "#" + (1 << 24 | parseInt(r.r, 10) << 16 | parseInt(r.g, 10) << 8 | parseInt(r.b, 10)).toString(16).substr(1)
            }
        }
    }
    ]).factory("Slider", ["Helper", function(t) {
        "use strict";
        var e = {
            maxLeft: 0,
            maxTop: 0,
            callLeft: null,
            callTop: null,
            knob: {
                top: 0,
                left: 0
            }
        }
          , n = {};
        return {
            getSlider: function() {
                return e
            },
            getLeftPosition: function(t) {
                return Math.max(0, Math.min(e.maxLeft, e.left + ((t.pageX || n.left) - n.left)))
            },
            getTopPosition: function(t) {
                return Math.max(0, Math.min(e.maxTop, e.top + ((t.pageY || n.top) - n.top)))
            },
            setSlider: function(i, r) {
                var o = t.closestSlider(i.target)
                  , a = t.getOffset(o, r)
                  , s = o.getBoundingClientRect()
                  , c = i.clientX - s.left
                  , l = i.clientY - s.top;
                e.knob = o.children[0].style,
                e.left = i.pageX - a.left - window.pageXOffset + a.scrollX,
                e.top = i.pageY - a.top - window.pageYOffset + a.scrollY,
                n = {
                    left: i.pageX - (c - e.left),
                    top: i.pageY - (l - e.top)
                }
            },
            setSaturation: function(t, n, i) {
                e = {
                    maxLeft: i,
                    maxTop: i,
                    callLeft: "setSaturation",
                    callTop: "setLightness"
                },
                this.setSlider(t, n)
            },
            setHue: function(t, n, i) {
                e = {
                    maxLeft: 0,
                    maxTop: i,
                    callLeft: !1,
                    callTop: "setHue"
                },
                this.setSlider(t, n)
            },
            setAlpha: function(t, n, i) {
                e = {
                    maxLeft: 0,
                    maxTop: i,
                    callLeft: !1,
                    callTop: "setAlpha"
                },
                this.setSlider(t, n)
            },
            setKnob: function(t, n) {
                e.knob.top = t + "px",
                e.knob.left = n + "px"
            }
        }
    }
    ]).directive("colorpicker", ["$document", "$compile", "Color", "Slider", "Helper", function(t, e, n, i, r) {
        "use strict";
        return {
            require: "?ngModel",
            restrict: "A",
            link: function(o, a, s, c) {
                var l, u = s.colorpicker ? s.colorpicker : "hex", d = angular.isDefined(s.colorpickerPosition) ? s.colorpickerPosition : "bottom", p = !!angular.isDefined(s.colorpickerInline) && s.colorpickerInline, h = !!angular.isDefined(s.colorpickerFixedPosition) && s.colorpickerFixedPosition, f = angular.isDefined(s.colorpickerParent) ? a.parent() : angular.element(document.body), m = !!angular.isDefined(s.colorpickerWithInput) && s.colorpickerWithInput, g = angular.isDefined(s.colorpickerSize) ? s.colorpickerSize : 100, v = g + "px", y = '<div class="colorpicker dropdown"><div class="dropdown-menu"><colorpicker-saturation><i></i></colorpicker-saturation><colorpicker-hue><i></i></colorpicker-hue><colorpicker-alpha><i></i></colorpicker-alpha><colorpicker-preview></colorpicker-preview>' + (m ? '<input type="text" name="colorpicker-input" spellcheck="false">' : "") + (p ? "" : '<button type="button" class="close close-colorpicker">&times;</button>') + "</div></div>", b = angular.element(y), w = n, S = {
                    h: 1,
                    s: 0,
                    b: 1,
                    a: 1
                }, x = b.find("colorpicker-hue"), M = b.find("colorpicker-saturation"), E = b.find("colorpicker-preview"), C = b.find("i"), A = parseInt(g) + 29 + ("rgba" === u ? 15 : 0), T = parseInt(g) + 55;
                if (e(b)(o),
                b.css("min-width", A + "px"),
                M.css({
                    width: v,
                    height: v
                }),
                x.css("height", v),
                m) {
                    var O = b.find("input");
                    O.css("width", v),
                    O.on("mousedown", (function(t) {
                        t.stopPropagation()
                    }
                    )).on("keyup", (function() {
                        var t = this.value;
                        a.val(t),
                        c && c.$modelValue !== t && (o.$apply(c.$setViewValue(t)),
                        D(!0))
                    }
                    ))
                }
                function _() {
                    t.on("mousemove", I),
                    t.on("mouseup", k)
                }
                function P() {
                    try {
                        E.css("backgroundColor", w[u]())
                    } catch (t) {
                        E.css("backgroundColor", w.toHex())
                    }
                    M.css("backgroundColor", w.toHex(w.value.h, 1, 1, 1)),
                    "rgba" === u && (l.css.backgroundColor = w.toHex())
                }
                function I(t) {
                    var e = i.getLeftPosition(t)
                      , n = i.getTopPosition(t)
                      , r = i.getSlider();
                    i.setKnob(n, e),
                    r.callLeft && w[r.callLeft].call(w, e / g),
                    r.callTop && w[r.callTop].call(w, n / g),
                    P();
                    var s = w[u]();
                    return a.val(s),
                    c && o.$apply(c.$setViewValue(s)),
                    m && O.val(s),
                    !1
                }
                function k() {
                    N("colorpicker-selected"),
                    t.off("mousemove", I),
                    t.off("mouseup", k)
                }
                function D(t) {
                    w.value = S,
                    w.setColor(a.val()),
                    m && !t && O.val(a.val()),
                    C.eq(0).css({
                        left: w.value.s * g + "px",
                        top: g - w.value.b * g + "px"
                    }),
                    C.eq(1).css("top", g * (1 - w.value.h) + "px"),
                    C.eq(2).css("top", g * (1 - w.value.a) + "px"),
                    S = w.value,
                    P()
                }
                function R() {
                    j()
                }
                function L() {
                    var e, n;
                    b.hasClass("colorpicker-visible") || (D(),
                    b.addClass("colorpicker-visible").css((n = r.getOffset(a[0]),
                    angular.isDefined(s.colorpickerParent) && (n.left = 0,
                    n.top = 0),
                    "top" === d ? e = {
                        top: n.top - T - 2,
                        left: n.left
                    } : "right" === d ? e = {
                        top: n.top,
                        left: n.left + a[0].offsetWidth + 2
                    } : "bottom" === d ? e = {
                        top: n.top + a[0].offsetHeight + 2,
                        left: n.left
                    } : "left" === d && (e = {
                        top: n.top,
                        left: n.left - A - 2
                    }),
                    {
                        top: e.top + "px",
                        left: e.left + "px"
                    })),
                    N("colorpicker-shown"),
                    !1 === p && t.on("mousedown", R),
                    s.colorpickerIsOpen && (o[s.colorpickerIsOpen] = !0,
                    o.$$phase && o.$root.$$phase || o.$digest()))
                }
                function N(t) {
                    c && o.$emit(t, {
                        name: s.ngModel,
                        value: c.$modelValue
                    })
                }
                function j() {
                    b.hasClass("colorpicker-visible") && (b.removeClass("colorpicker-visible"),
                    N("colorpicker-closed"),
                    t.off("mousedown", R),
                    s.colorpickerIsOpen && (o[s.colorpickerIsOpen] = !1,
                    o.$$phase && o.$root.$$phase || o.$digest()))
                }
                "rgba" === u && (b.addClass("alpha"),
                (l = b.find("colorpicker-alpha")).css("height", v),
                l.on("click", (function(t) {
                    i.setAlpha(t, h, g),
                    I(t)
                }
                )).on("mousedown", (function(t) {
                    i.setAlpha(t, h, g),
                    _()
                }
                )).on("mouseup", (function(t) {
                    N("colorpicker-selected-alpha")
                }
                ))),
                x.on("click", (function(t) {
                    i.setHue(t, h, g),
                    I(t)
                }
                )).on("mousedown", (function(t) {
                    i.setHue(t, h, g),
                    _()
                }
                )).on("mouseup", (function(t) {
                    N("colorpicker-selected-hue")
                }
                )),
                M.on("click", (function(t) {
                    i.setSaturation(t, h, g),
                    I(t),
                    angular.isDefined(s.colorpickerCloseOnSelect) && j()
                }
                )).on("mousedown", (function(t) {
                    i.setSaturation(t, h, g),
                    _()
                }
                )).on("mouseup", (function(t) {
                    N("colorpicker-selected-saturation")
                }
                )),
                h && b.addClass("colorpicker-fixed-position"),
                b.addClass("colorpicker-position-" + d),
                "true" === p && b.addClass("colorpicker-inline"),
                f.append(b),
                c && (c.$render = function() {
                    a.val(c.$viewValue),
                    D()
                }
                ),
                a.on("blur keyup change", (function() {
                    D()
                }
                )),
                a.on("$destroy", (function() {
                    b.remove()
                }
                )),
                !1 === p ? a.on("click", L) : L(),
                b.on("mousedown", (function(t) {
                    t.stopPropagation(),
                    t.preventDefault()
                }
                )),
                b.find("button").on("click", (function() {
                    j()
                }
                )),
                s.colorpickerIsOpen && o.$watch(s.colorpickerIsOpen, (function(t) {
                    !0 === t ? L() : !1 === t && j()
                }
                ))
            }
        }
    }
    ])
}
, function(t, e, n) {
    var i = n(11)
      , r = n(929);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, '.colorpicker-visible,.colorpicker-visible .dropdown-menu{display:block!important}colorpicker-saturation{display:block;width:100px;height:100px;background-image:url("data:image/png;base64, ");background-size:contain;cursor:crosshair;float:left}colorpicker-saturation i{display:block;height:7px;width:7px;border:1px solid #000;border-radius:5px;position:absolute;top:0;left:0;margin:-4px 0 0 -4px}colorpicker-saturation i:after{content:"";display:block;height:7px;width:7px;border:1px solid #fff;border-radius:5px}colorpicker-alpha,colorpicker-hue{width:15px;height:100px;float:left;cursor:row-resize;margin-left:4px;margin-bottom:4px}colorpicker-alpha i,colorpicker-hue i{display:block;height:2px;background:#000;border-top:1px solid #fff;position:absolute;top:0;left:0;width:100%;margin-top:-1px}colorpicker-hue{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAMAAABw8qpSAAABLFBMVEUA/z8AuP//JAAA/33/3AAA/1ABAv8A/7r/AH7/jgD2AP8A//j/AEHmAP/XAP/HAP+4AP//ALyoAP+aAP+JAP97AP9rAP9cAP9MAP8+AP8tAP8fAP8PAP8ATv//AG7/cAD/vgD/APoAmv//ADH/AKwB/wMA5//4Eg4AL///AOr/UQD/nwAA/27/7AAA/+kAe/8Ayf8A/5sA/zEA/6z/ABEAEP8A/17/MgAA/9n/ACL/gAD/AJ0AXP8Aqv//AMoA/yHqFBb/zAD/AGD/ANsA9//1/wDk/wDV/wDF/wC3/wD/AI2m/wD/FACY/wCI/wB5/wBp/wD/YgBb/wBK/wA8/wAs/wAd/wAN/wAAPv8A/xH/AFAAi///rQAA/8r/+gAA1///QwAAH/8Abf8A/43c/JNGAAAAiUlEQVR4AQXBg2EDAAAAsMy2bds2ttp2+/8PTby79mDLsKJPq/oFPdk24dWXAxsGjRg1ZtykKdNmzJozb8GiJct63WjYl7fiWdOZkk0vOpyr2fVtyKl7FX2uXGjpcuxWDy69KdiRk5WRlpIUFxMVERLw78+vH1Unun1YV3ZkwKM1CYfq7nQK22sD03ITV2Aqp0IAAAAASUVORK5CYII=");background-size:contain}colorpicker-alpha{display:none}.colorpicker-color,colorpicker-alpha{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAABkCAMAAACIElGlAAADAFBMVEUAAADT09PT09P////T09P////e3t7q6urT09Px8fHT09P////////T09PT09P////////T09PT09P////////////T09PT09P////////////T09P////T09PT09PT09P////T09PT09P////////////////T09P////T09PT09P////T09PT09PT09PT09PT09PT09P////T09P////T09PT09P////////////T09P////T09P////////////T09PT09P////T09P////////////////////T09P////////T09PT09P////////////////////////T09PT09P////////////////////////T09PT09P////T09PT09P////////T09P////////////T09P////////T09P////T09P////T09P////T09PT09PT09PT09P////T09PT09PT09PT09PT09PT09P////T09P////T09PT09P////////////T09PT09PT09P////T09PT09PT09PT09PT09PT09PT09P////////////////T09PT09P////////////T09P////////T09P////T09PT09PT09P////////T09P////////T09P////T09PT09P////////////////T09PT09PT09PT09P////T09PT09PT09PT09PT09PT09PT09P////T09P////T09PT09PT09PT09PT09P////////////////////////////////////T09P////T09P////T09P////T09PT09P////////////T09P////T09P////T09P////////////T09PT09P////////////////T09PT09P////T09P////T09PT09P////T09P////T09PT09P////T09PT09PT09PT09P////T09PT09P////////////T09PT09P////T09P////////T09MQsm1FAAABAHRSTlMAgJN8/vcDAfcCnJyGaZmZlomGk4yJOmM/eTxs8wY0YDFC7HNdLx18n5/7aUvzCcW9+qKiK8P0ZiltRwfdw/n8Px3WduJjItj78ss5PDHUNELbwP5wplA2FglEVwvkqNarCs4Z7b2sDLgQ0xNdyLrr0eLLUeW1Vs5TWQLwjPI3ZvQGdvxFyFrAeevaLCLvGd0kpRskGyf4qK605xKvFrGyDRHnBYMEkJaDkIBvB/gpH99O6CrbIC4nH3Lg2SXp4A7Qul/GDEgPSlMQ6LjqFU0SjyCCj5V/gnBN7xglL3O70WBU7gjFFEfft0sPTo1ndRipwXr2yRemWRVENq+ytbGuxGaWGQAAAnpJREFUeNpNxmdcDHAAxvEHOWXvmXX23ntv2XvvMg/Z44x0KaRBSnfcKSqlnYZKp1QqGpT20KZh783/eePj+3vzw3/q/AM9iURPTy6XS+RwcXNzcZMQTE1dTE3bE7y9S0u9xxD600rCGtpI2ErOsbGxzoiMrIqscnaOi4vDdnp4XYSrguwxQSb7KpMllycnl2MFaTSaTxrY5NrY5BoKb2BnZ2doZ29vb2OPSdSd4Bcc7OcXGhqamgqrYCsrq+mEiEtC3gUBDg55Dg53IkQYSYG+gb6+GEqB5wV0o5D8/JAQdKK5hA40n3BS+L6c0JJmE+ZQW8JEak1YQJ0Jq+jbaQEPnotGE+IrK+Pj+xKqU6pTUrIDAgKysZ+WEY5QQkJxcQIO0WrCUbL4YmFhgZ3UlVAUHR1d1JEwjVoRRpDJKxMTE/ShBoRR1I6whLyyvLyyUFAQFhbWhTCFFArFawXOCu/bEHpQLYKnZ0aGZw2CR1qah0dmpqurK+pTU0ILakJoTi+PC7j5RHTrqQg1qRkh3T3d3b0xoSE1ItSleoSe1IswmIYQPl8UlhLWkaOj41tHbKENBLX6j1qt/KFUKnFN+Onk9NvJCQdJpfqlUqGiIjExcRthN91/JsJmGkhYRO/OCBhHwwgxMWUxZQMIu8j8o7m5OfbRLMJh2kTYQ1FRhYVR2EHzCOtpMmEG3SUsJEvLoKAg2Prb2tqOJYSH+/uH33shwlTaS1hLBwhX6AYX2tuiRwStVntOa5yUZJwEqbREKjUi5Bjl5BhZW1uXWOMYGRBOnNDX1zfoxz1FwwkfSJfgo6vr41P7soBBNJ7Qm2YSzHTMzMwmEHRoMf0Fm5mYOUrzNBYAAAAASUVORK5CYII=");background-size:10px 100%}.colorpicker{top:0;left:0;z-index:99999;display:none}.colorpicker colorpicker-alpha,.colorpicker colorpicker-hue,.colorpicker colorpicker-saturation{position:relative}.colorpicker input{width:100px;font-size:11px;color:#000;background-color:#fff}.colorpicker.alpha{min-width:140px}.colorpicker.alpha colorpicker-alpha{display:block}.colorpicker.dropdown{position:absolute}.colorpicker.colorpicker-fixed-position{position:fixed}.colorpicker .dropdown-menu:after,.colorpicker .dropdown-menu:before{content:"";display:inline-block;position:absolute}.colorpicker .dropdown-menu:after{clear:both;border:6px solid transparent;top:-5px;left:7px}.colorpicker .dropdown-menu:before{border:7px solid transparent;top:-6px;left:6px}.colorpicker .dropdown-menu{position:static;top:0;left:0;min-width:129px;padding:4px;margin-top:0}.colorpicker-position-top .dropdown-menu:after{border-top:6px solid #fff;border-bottom:0;top:auto;bottom:-5px}.colorpicker-position-top .dropdown-menu:before{border-top:7px solid rgba(0,0,0,.2);border-bottom:0;top:auto;bottom:-6px}.colorpicker-position-right .dropdown-menu:after{border-right:6px solid #fff;border-left:0;top:11px;left:-5px}.colorpicker-position-right .dropdown-menu:before{border-right:7px solid rgba(0,0,0,.2);border-left:0;top:10px;left:-6px}.colorpicker-position-bottom .dropdown-menu:after{border-bottom:6px solid #fff;border-top:0}.colorpicker-position-bottom .dropdown-menu:before{border-bottom:7px solid rgba(0,0,0,.2);border-top:0}.colorpicker-position-left .dropdown-menu:after{border-left:6px solid #fff;border-right:0;top:11px;left:auto;right:-5px}.colorpicker-position-left .dropdown-menu:before{border-left:7px solid rgba(0,0,0,.2);border-right:0;top:10px;left:auto;right:-6px}colorpicker-preview{display:block;height:10px;margin:5px 0 3px;clear:both;background-position:0 100%}', ""]),
    t.exports = e
}
, function(t, e, n) {
    n(931),
    t.exports = "ui.bootstrap"
}
, function(t, e) {
    angular.module("ui.bootstrap", ["ui.bootstrap.tpls", "ui.bootstrap.collapse", "ui.bootstrap.accordion", "ui.bootstrap.alert", "ui.bootstrap.bindHtml", "ui.bootstrap.buttons", "ui.bootstrap.carousel", "ui.bootstrap.dateparser", "ui.bootstrap.position", "ui.bootstrap.datepicker", "ui.bootstrap.dropdown", "ui.bootstrap.modal", "ui.bootstrap.pagination", "ui.bootstrap.tooltip", "ui.bootstrap.popover", "ui.bootstrap.progressbar", "ui.bootstrap.rating", "ui.bootstrap.tabs", "ui.bootstrap.timepicker", "ui.bootstrap.transition", "ui.bootstrap.typeahead"]),
    angular.module("ui.bootstrap.tpls", ["template/accordion/accordion-group.html", "template/accordion/accordion.html", "template/alert/alert.html", "template/carousel/carousel.html", "template/carousel/slide.html", "template/datepicker/datepicker.html", "template/datepicker/day.html", "template/datepicker/month.html", "template/datepicker/popup.html", "template/datepicker/year.html", "template/modal/backdrop.html", "template/modal/window.html", "template/pagination/pager.html", "template/pagination/pagination.html", "template/tooltip/tooltip-html-popup.html", "template/tooltip/tooltip-html-unsafe-popup.html", "template/tooltip/tooltip-popup.html", "template/tooltip/tooltip-template-popup.html", "template/popover/popover-html.html", "template/popover/popover-template.html", "template/popover/popover.html", "template/progressbar/bar.html", "template/progressbar/progress.html", "template/progressbar/progressbar.html", "template/rating/rating.html", "template/tabs/tab.html", "template/tabs/tabset.html", "template/timepicker/timepicker.html", "template/typeahead/typeahead-match.html", "template/typeahead/typeahead-popup.html"]),
    angular.module("ui.bootstrap.collapse", []).directive("collapse", ["$animate", function(t) {
        return {
            link: function(e, n, i) {
                function r() {
                    n.removeClass("collapsing"),
                    n.css({
                        height: "auto"
                    })
                }
                function o() {
                    n.css({
                        height: "0"
                    }),
                    n.removeClass("collapsing"),
                    n.addClass("collapse")
                }
                e.$watch(i.collapse, (function(e) {
                    e ? function() {
                        if (!n.hasClass("collapse") && !n.hasClass("in"))
                            return o();
                        n.css({
                            height: n[0].scrollHeight + "px"
                        }).removeClass("collapse").addClass("collapsing").attr("aria-expanded", !1).attr("aria-hidden", !0),
                        t.removeClass(n, "in", {
                            to: {
                                height: "0"
                            }
                        }).then(o)
                    }() : (n.removeClass("collapse").addClass("collapsing").attr("aria-expanded", !0).attr("aria-hidden", !1),
                    t.addClass(n, "in", {
                        to: {
                            height: n[0].scrollHeight + "px"
                        }
                    }).then(r))
                }
                ))
            }
        }
    }
    ]),
    angular.module("ui.bootstrap.accordion", ["ui.bootstrap.collapse"]).constant("accordionConfig", {
        closeOthers: !0
    }).controller("AccordionController", ["$scope", "$attrs", "accordionConfig", function(t, e, n) {
        this.groups = [],
        this.closeOthers = function(i) {
            (angular.isDefined(e.closeOthers) ? t.$eval(e.closeOthers) : n.closeOthers) && angular.forEach(this.groups, (function(t) {
                t !== i && (t.isOpen = !1)
            }
            ))
        }
        ,
        this.addGroup = function(t) {
            var e = this;
            this.groups.push(t),
            t.$on("$destroy", (function(n) {
                e.removeGroup(t)
            }
            ))
        }
        ,
        this.removeGroup = function(t) {
            var e = this.groups.indexOf(t);
            -1 !== e && this.groups.splice(e, 1)
        }
    }
    ]).directive("accordion", (function() {
        return {
            restrict: "EA",
            controller: "AccordionController",
            controllerAs: "accordion",
            transclude: !0,
            replace: !1,
            templateUrl: function(t, e) {
                return e.templateUrl || "template/accordion/accordion.html"
            }
        }
    }
    )).directive("accordionGroup", (function() {
        return {
            require: "^accordion",
            restrict: "EA",
            transclude: !0,
            replace: !0,
            templateUrl: function(t, e) {
                return e.templateUrl || "template/accordion/accordion-group.html"
            },
            scope: {
                heading: "@",
                isOpen: "=?",
                isDisabled: "=?"
            },
            controller: function() {
                this.setHeading = function(t) {
                    this.heading = t
                }
            },
            link: function(t, e, n, i) {
                i.addGroup(t),
                t.openClass = n.openClass || "panel-open",
                t.panelClass = n.panelClass,
                t.$watch("isOpen", (function(n) {
                    e.toggleClass(t.openClass, n),
                    n && i.closeOthers(t)
                }
                )),
                t.toggleOpen = function(e) {
                    t.isDisabled || e && 32 !== e.which || (t.isOpen = !t.isOpen)
                }
            }
        }
    }
    )).directive("accordionHeading", (function() {
        return {
            restrict: "EA",
            transclude: !0,
            template: "",
            replace: !0,
            require: "^accordionGroup",
            link: function(t, e, n, i, r) {
                i.setHeading(r(t, angular.noop))
            }
        }
    }
    )).directive("accordionTransclude", (function() {
        return {
            require: "^accordionGroup",
            link: function(t, e, n, i) {
                t.$watch((function() {
                    return i[n.accordionTransclude]
                }
                ), (function(t) {
                    t && (e.find("span").html(""),
                    e.find("span").append(t))
                }
                ))
            }
        }
    }
    )),
    angular.module("ui.bootstrap.alert", []).controller("AlertController", ["$scope", "$attrs", function(t, e) {
        t.closeable = !!e.close,
        this.close = t.close
    }
    ]).directive("alert", (function() {
        return {
            controller: "AlertController",
            controllerAs: "alert",
            templateUrl: function(t, e) {
                return e.templateUrl || "template/alert/alert.html"
            },
            transclude: !0,
            replace: !0,
            scope: {
                type: "@",
                close: "&"
            }
        }
    }
    )).directive("dismissOnTimeout", ["$timeout", function(t) {
        return {
            require: "alert",
            link: function(e, n, i, r) {
                t((function() {
                    r.close()
                }
                ), parseInt(i.dismissOnTimeout, 10))
            }
        }
    }
    ]),
    angular.module("ui.bootstrap.bindHtml", []).value("$bindHtmlUnsafeSuppressDeprecated", !1).directive("bindHtmlUnsafe", ["$log", "$bindHtmlUnsafeSuppressDeprecated", function(t, e) {
        return function(n, i, r) {
            e || t.warn("bindHtmlUnsafe is now deprecated. Use ngBindHtml instead"),
            i.addClass("ng-binding").data("$binding", r.bindHtmlUnsafe),
            n.$watch(r.bindHtmlUnsafe, (function(t) {
                i.html(t || "")
            }
            ))
        }
    }
    ]),
    angular.module("ui.bootstrap.buttons", []).constant("buttonConfig", {
        activeClass: "active",
        toggleEvent: "click"
    }).controller("ButtonsController", ["buttonConfig", function(t) {
        this.activeClass = t.activeClass || "active",
        this.toggleEvent = t.toggleEvent || "click"
    }
    ]).directive("btnRadio", (function() {
        return {
            require: ["btnRadio", "ngModel"],
            controller: "ButtonsController",
            controllerAs: "buttons",
            link: function(t, e, n, i) {
                var r = i[0]
                  , o = i[1];
                e.find("input").css({
                    display: "none"
                }),
                o.$render = function() {
                    e.toggleClass(r.activeClass, angular.equals(o.$modelValue, t.$eval(n.btnRadio)))
                }
                ,
                e.bind(r.toggleEvent, (function() {
                    if (!n.disabled) {
                        var i = e.hasClass(r.activeClass);
                        i && !angular.isDefined(n.uncheckable) || t.$apply((function() {
                            o.$setViewValue(i ? null : t.$eval(n.btnRadio)),
                            o.$render()
                        }
                        ))
                    }
                }
                ))
            }
        }
    }
    )).directive("btnCheckbox", ["$document", function(t) {
        return {
            require: ["btnCheckbox", "ngModel"],
            controller: "ButtonsController",
            controllerAs: "button",
            link: function(e, n, i, r) {
                var o = r[0]
                  , a = r[1];
                function s() {
                    return l(i.btnCheckboxTrue, !0)
                }
                function c() {
                    return l(i.btnCheckboxFalse, !1)
                }
                function l(t, n) {
                    var i = e.$eval(t);
                    return angular.isDefined(i) ? i : n
                }
                n.find("input").css({
                    display: "none"
                }),
                a.$render = function() {
                    n.toggleClass(o.activeClass, angular.equals(a.$modelValue, s()))
                }
                ,
                n.bind(o.toggleEvent, (function() {
                    i.disabled || e.$apply((function() {
                        a.$setViewValue(n.hasClass(o.activeClass) ? c() : s()),
                        a.$render()
                    }
                    ))
                }
                )),
                n.on("keypress", (function(r) {
                    i.disabled || 32 !== r.which || t[0].activeElement !== n[0] || e.$apply((function() {
                        a.$setViewValue(n.hasClass(o.activeClass) ? c() : s()),
                        a.$render()
                    }
                    ))
                }
                ))
            }
        }
    }
    ]),
    angular.module("ui.bootstrap.carousel", []).controller("CarouselController", ["$scope", "$element", "$interval", "$animate", function(t, e, n, i) {
        var r, o, a = this, s = a.slides = t.slides = [], c = angular.version.minor >= 4, l = -1;
        a.currentSlide = null;
        var u = !1;
        function d(t) {
            if (angular.isUndefined(s[t].index))
                return s[t];
            var e;
            s.length;
            for (e = 0; e < s.length; ++e)
                if (s[e].index == t)
                    return s[e]
        }
        function p() {
            h();
            var e = +t.interval;
            !isNaN(e) && e > 0 && (r = n(f, e))
        }
        function h() {
            r && (n.cancel(r),
            r = null)
        }
        function f() {
            var e = +t.interval;
            o && !isNaN(e) && e > 0 && s.length ? t.next() : t.pause()
        }
        a.select = t.select = function(e, n) {
            var r = t.indexOfSlide(e);
            void 0 === n && (n = r > a.getCurrentIndex() ? "next" : "prev"),
            e && e !== a.currentSlide && !t.$currentTransition && function(e, n, r) {
                if (u)
                    return;
                angular.extend(e, {
                    direction: r,
                    active: !0
                }),
                angular.extend(a.currentSlide || {}, {
                    direction: r,
                    active: !1
                }),
                i.enabled() && !t.noTransition && !t.$currentTransition && e.$element && a.slides.length > 1 && (e.$element.data("uib-slideDirection", e.direction),
                a.currentSlide && a.currentSlide.$element && a.currentSlide.$element.data("uib-slideDirection", e.direction),
                t.$currentTransition = !0,
                c ? i.on("addClass", e.$element, (function(e, n) {
                    "close" === n && (t.$currentTransition = null,
                    i.off("addClass", e))
                }
                )) : e.$element.one("$animate:close", (function() {
                    t.$currentTransition = null
                }
                )));
                a.currentSlide = e,
                l = n,
                p()
            }(e, r, n)
        }
        ,
        t.$on("$destroy", (function() {
            u = !0
        }
        )),
        a.getCurrentIndex = function() {
            return a.currentSlide && angular.isDefined(a.currentSlide.index) ? +a.currentSlide.index : l
        }
        ,
        t.indexOfSlide = function(t) {
            return angular.isDefined(t.index) ? +t.index : s.indexOf(t)
        }
        ,
        t.next = function() {
            var e = (a.getCurrentIndex() + 1) % s.length;
            if (0 !== e || !t.noWrap())
                return a.select(d(e), "next");
            t.pause()
        }
        ,
        t.prev = function() {
            var e = a.getCurrentIndex() - 1 < 0 ? s.length - 1 : a.getCurrentIndex() - 1;
            if (!t.noWrap() || e !== s.length - 1)
                return a.select(d(e), "prev");
            t.pause()
        }
        ,
        t.isActive = function(t) {
            return a.currentSlide === t
        }
        ,
        t.$watch("interval", p),
        t.$on("$destroy", h),
        t.play = function() {
            o || (o = !0,
            p())
        }
        ,
        t.pause = function() {
            t.noPause || (o = !1,
            h())
        }
        ,
        a.addSlide = function(e, n) {
            e.$element = n,
            s.push(e),
            1 === s.length || e.active ? (a.select(s[s.length - 1]),
            1 == s.length && t.play()) : e.active = !1
        }
        ,
        a.removeSlide = function(t) {
            angular.isDefined(t.index) && s.sort((function(t, e) {
                return +t.index > +e.index
            }
            ));
            var e = s.indexOf(t);
            s.splice(e, 1),
            s.length > 0 && t.active ? e >= s.length ? a.select(s[e - 1]) : a.select(s[e]) : l > e && l--,
            0 === s.length && (a.currentSlide = null)
        }
        ,
        t.$watch("noTransition", (function(t) {
            e.data("uib-noTransition", t)
        }
        ))
    }
    ]).directive("carousel", [function() {
        return {
            restrict: "EA",
            transclude: !0,
            replace: !0,
            controller: "CarouselController",
            controllerAs: "carousel",
            require: "carousel",
            templateUrl: function(t, e) {
                return e.templateUrl || "template/carousel/carousel.html"
            },
            scope: {
                interval: "=",
                noTransition: "=",
                noPause: "=",
                noWrap: "&"
            }
        }
    }
    ]).directive("slide", (function() {
        return {
            require: "^carousel",
            restrict: "EA",
            transclude: !0,
            replace: !0,
            templateUrl: function(t, e) {
                return e.templateUrl || "template/carousel/slide.html"
            },
            scope: {
                active: "=?",
                actual: "=?",
                index: "=?"
            },
            link: function(t, e, n, i) {
                i.addSlide(t, e),
                t.$on("$destroy", (function() {
                    i.removeSlide(t)
                }
                )),
                t.$watch("active", (function(e) {
                    e && i.select(t)
                }
                ))
            }
        }
    }
    )).animation(".item", ["$injector", "$animate", function(t, e) {
        var n = null;
        function i(t, e, n) {
            t.removeClass(e),
            n && n()
        }
        return t.has("$animateCss") && (n = t.get("$animateCss")),
        {
            beforeAddClass: function(t, r, o) {
                if ("active" == r && t.parent() && !t.parent().data("uib-noTransition")) {
                    var a = !1
                      , s = t.data("uib-slideDirection")
                      , c = "next" == s ? "left" : "right"
                      , l = i.bind(this, t, c + " " + s, o);
                    return t.addClass(s),
                    n ? n(t, {
                        addClass: c
                    }).start().done(l) : e.addClass(t, c).then((function() {
                        a || l(),
                        o()
                    }
                    )),
                    function() {
                        a = !0
                    }
                }
                o()
            },
            beforeRemoveClass: function(t, r, o) {
                if ("active" === r && t.parent() && !t.parent().data("uib-noTransition")) {
                    var a = !1
                      , s = "next" == t.data("uib-slideDirection") ? "left" : "right"
                      , c = i.bind(this, t, s, o);
                    return n ? n(t, {
                        addClass: s
                    }).start().done(c) : e.addClass(t, s).then((function() {
                        a || c(),
                        o()
                    }
                    )),
                    function() {
                        a = !0
                    }
                }
                o()
            }
        }
    }
    ]),
    angular.module("ui.bootstrap.dateparser", []).service("dateParser", ["$log", "$locale", "orderByFilter", function(t, e, n) {
        var i = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
        this.parsers = {};
        var r = {
            yyyy: {
                regex: "\\d{4}",
                apply: function(t) {
                    this.year = +t
                }
            },
            yy: {
                regex: "\\d{2}",
                apply: function(t) {
                    this.year = +t + 2e3
                }
            },
            y: {
                regex: "\\d{1,4}",
                apply: function(t) {
                    this.year = +t
                }
            },
            MMMM: {
                regex: e.DATETIME_FORMATS.MONTH.join("|"),
                apply: function(t) {
                    this.month = e.DATETIME_FORMATS.MONTH.indexOf(t)
                }
            },
            MMM: {
                regex: e.DATETIME_FORMATS.SHORTMONTH.join("|"),
                apply: function(t) {
                    this.month = e.DATETIME_FORMATS.SHORTMONTH.indexOf(t)
                }
            },
            MM: {
                regex: "0[1-9]|1[0-2]",
                apply: function(t) {
                    this.month = t - 1
                }
            },
            M: {
                regex: "[1-9]|1[0-2]",
                apply: function(t) {
                    this.month = t - 1
                }
            },
            dd: {
                regex: "[0-2][0-9]{1}|3[0-1]{1}",
                apply: function(t) {
                    this.date = +t
                }
            },
            d: {
                regex: "[1-2]?[0-9]{1}|3[0-1]{1}",
                apply: function(t) {
                    this.date = +t
                }
            },
            EEEE: {
                regex: e.DATETIME_FORMATS.DAY.join("|")
            },
            EEE: {
                regex: e.DATETIME_FORMATS.SHORTDAY.join("|")
            },
            HH: {
                regex: "(?:0|1)[0-9]|2[0-3]",
                apply: function(t) {
                    this.hours = +t
                }
            },
            hh: {
                regex: "0[0-9]|1[0-2]",
                apply: function(t) {
                    this.hours = +t
                }
            },
            H: {
                regex: "1?[0-9]|2[0-3]",
                apply: function(t) {
                    this.hours = +t
                }
            },
            h: {
                regex: "[0-9]|1[0-2]",
                apply: function(t) {
                    this.hours = +t
                }
            },
            mm: {
                regex: "[0-5][0-9]",
                apply: function(t) {
                    this.minutes = +t
                }
            },
            m: {
                regex: "[0-9]|[1-5][0-9]",
                apply: function(t) {
                    this.minutes = +t
                }
            },
            sss: {
                regex: "[0-9][0-9][0-9]",
                apply: function(t) {
                    this.milliseconds = +t
                }
            },
            ss: {
                regex: "[0-5][0-9]",
                apply: function(t) {
                    this.seconds = +t
                }
            },
            s: {
                regex: "[0-9]|[1-5][0-9]",
                apply: function(t) {
                    this.seconds = +t
                }
            },
            a: {
                regex: e.DATETIME_FORMATS.AMPMS.join("|"),
                apply: function(t) {
                    12 === this.hours && (this.hours = 0),
                    "PM" === t && (this.hours += 12)
                }
            }
        };
        this.parse = function(o, a, s) {
            if (!angular.isString(o) || !a)
                return o;
            a = (a = e.DATETIME_FORMATS[a] || a).replace(i, "\\$&"),
            this.parsers[a] || (this.parsers[a] = function(t) {
                var e = []
                  , i = t.split("");
                return angular.forEach(r, (function(n, r) {
                    var o = t.indexOf(r);
                    if (o > -1) {
                        t = t.split(""),
                        i[o] = "(" + n.regex + ")",
                        t[o] = "$";
                        for (var a = o + 1, s = o + r.length; a < s; a++)
                            i[a] = "",
                            t[a] = "$";
                        t = t.join(""),
                        e.push({
                            index: o,
                            apply: n.apply
                        })
                    }
                }
                )),
                {
                    regex: new RegExp("^" + i.join("") + "$"),
                    map: n(e, "index")
                }
            }(a));
            var c = this.parsers[a]
              , l = c.regex
              , u = c.map
              , d = o.match(l);
            if (d && d.length) {
                var p, h;
                angular.isDate(s) && !isNaN(s.getTime()) ? p = {
                    year: s.getFullYear(),
                    month: s.getMonth(),
                    date: s.getDate(),
                    hours: s.getHours(),
                    minutes: s.getMinutes(),
                    seconds: s.getSeconds(),
                    milliseconds: s.getMilliseconds()
                } : (s && t.warn("dateparser:", "baseDate is not a valid date"),
                p = {
                    year: 1900,
                    month: 0,
                    date: 1,
                    hours: 0,
                    minutes: 0,
                    seconds: 0,
                    milliseconds: 0
                });
                for (var f = 1, m = d.length; f < m; f++) {
                    var g = u[f - 1];
                    g.apply && g.apply.call(p, d[f])
                }
                return function(t, e, n) {
                    if (n < 1)
                        return !1;
                    if (1 === e && n > 28)
                        return 29 === n && (t % 4 == 0 && t % 100 != 0 || t % 400 == 0);
                    if (3 === e || 5 === e || 8 === e || 10 === e)
                        return n < 31;
                    return !0
                }(p.year, p.month, p.date) && (h = new Date(p.year,p.month,p.date,p.hours,p.minutes,p.seconds,p.milliseconds || 0)),
                h
            }
        }
    }
    ]),
    angular.module("ui.bootstrap.position", []).factory("$position", ["$document", "$window", function(t, e) {
        function n(t) {
            return "static" === (i = "position",
            ((n = t).currentStyle ? n.currentStyle[i] : e.getComputedStyle ? e.getComputedStyle(n)[i] : n.style[i]) || "static");
            var n, i
        }
        return {
            position: function(e) {
                var i = this.offset(e)
                  , r = {
                    top: 0,
                    left: 0
                }
                  , o = function(e) {
                    for (var i = t[0], r = e.offsetParent || i; r && r !== i && n(r); )
                        r = r.offsetParent;
                    return r || i
                }(e[0]);
                o != t[0] && ((r = this.offset(angular.element(o))).top += o.clientTop - o.scrollTop,
                r.left += o.clientLeft - o.scrollLeft);
                var a = e[0].getBoundingClientRect();
                return {
                    width: a.width || e.prop("offsetWidth"),
                    height: a.height || e.prop("offsetHeight"),
                    top: i.top - r.top,
                    left: i.left - r.left
                }
            },
            offset: function(n) {
                var i = n[0].getBoundingClientRect();
                return {
                    width: i.width || n.prop("offsetWidth"),
                    height: i.height || n.prop("offsetHeight"),
                    top: i.top + (e.pageYOffset || t[0].documentElement.scrollTop),
                    left: i.left + (e.pageXOffset || t[0].documentElement.scrollLeft)
                }
            },
            positionElements: function(t, e, n, i) {
                var r, o, a, s, c = n.split("-"), l = c[0], u = c[1] || "center";
                r = i ? this.offset(t) : this.position(t),
                o = e.prop("offsetWidth"),
                a = e.prop("offsetHeight");
                var d = {
                    center: function() {
                        return r.left + r.width / 2 - o / 2
                    },
                    left: function() {
                        return r.left
                    },
                    right: function() {
                        return r.left + r.width
                    }
                }
                  , p = {
                    center: function() {
                        return r.top + r.height / 2 - a / 2
                    },
                    top: function() {
                        return r.top
                    },
                    bottom: function() {
                        return r.top + r.height
                    }
                };
                switch (l) {
                case "right":
                    s = {
                        top: p[u](),
                        left: d[l]()
                    };
                    break;
                case "left":
                    s = {
                        top: p[u](),
                        left: r.left - o
                    };
                    break;
                case "bottom":
                    s = {
                        top: p[l](),
                        left: d[u]()
                    };
                    break;
                default:
                    s = {
                        top: r.top - a,
                        left: d[u]()
                    }
                }
                return s
            }
        }
    }
    ]),
    angular.module("ui.bootstrap.datepicker", ["ui.bootstrap.dateparser", "ui.bootstrap.position"]).value("$datepickerSuppressError", !1).constant("datepickerConfig", {
        formatDay: "dd",
        formatMonth: "MMMM",
        formatYear: "yyyy",
        formatDayHeader: "EEE",
        formatDayTitle: "MMMM yyyy",
        formatMonthTitle: "yyyy",
        datepickerMode: "day",
        minMode: "day",
        maxMode: "year",
        showWeeks: !0,
        startingDay: 0,
        yearRange: 20,
        minDate: null,
        maxDate: null,
        shortcutPropagation: !1
    }).controller("DatepickerController", ["$scope", "$attrs", "$parse", "$interpolate", "$log", "dateFilter", "datepickerConfig", "$datepickerSuppressError", function(t, e, n, i, r, o, a, s) {
        var c = this
          , l = {
            $setViewValue: angular.noop
        };
        this.modes = ["day", "month", "year"],
        angular.forEach(["formatDay", "formatMonth", "formatYear", "formatDayHeader", "formatDayTitle", "formatMonthTitle", "showWeeks", "startingDay", "yearRange", "shortcutPropagation"], (function(n, r) {
            c[n] = angular.isDefined(e[n]) ? r < 6 ? i(e[n])(t.$parent) : t.$parent.$eval(e[n]) : a[n]
        }
        )),
        angular.forEach(["minDate", "maxDate"], (function(i) {
            e[i] ? t.$parent.$watch(n(e[i]), (function(t) {
                c[i] = t ? new Date(t) : null,
                c.refreshView()
            }
            )) : c[i] = a[i] ? new Date(a[i]) : null
        }
        )),
        angular.forEach(["minMode", "maxMode"], (function(i) {
            e[i] ? t.$parent.$watch(n(e[i]), (function(n) {
                c[i] = angular.isDefined(n) ? n : e[i],
                t[i] = c[i],
                ("minMode" == i && c.modes.indexOf(t.datepickerMode) < c.modes.indexOf(c[i]) || "maxMode" == i && c.modes.indexOf(t.datepickerMode) > c.modes.indexOf(c[i])) && (t.datepickerMode = c[i])
            }
            )) : (c[i] = a[i] || null,
            t[i] = c[i])
        }
        )),
        t.datepickerMode = t.datepickerMode || a.datepickerMode,
        t.uniqueId = "datepicker-" + t.$id + "-" + Math.floor(1e4 * Math.random()),
        angular.isDefined(e.initDate) ? (this.activeDate = t.$parent.$eval(e.initDate) || new Date,
        t.$parent.$watch(e.initDate, (function(t) {
            t && (l.$isEmpty(l.$modelValue) || l.$invalid) && (c.activeDate = t,
            c.refreshView())
        }
        ))) : this.activeDate = new Date,
        t.isActive = function(e) {
            return 0 === c.compare(e.date, c.activeDate) && (t.activeDateId = e.uid,
            !0)
        }
        ,
        this.init = function(t) {
            (l = t).$render = function() {
                c.render()
            }
        }
        ,
        this.render = function() {
            if (l.$viewValue) {
                var t = new Date(l.$viewValue);
                !isNaN(t) ? this.activeDate = t : s || r.error('Datepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')
            }
            this.refreshView()
        }
        ,
        this.refreshView = function() {
            if (this.element) {
                this._refreshView();
                var t = l.$viewValue ? new Date(l.$viewValue) : null;
                l.$setValidity("dateDisabled", !t || this.element && !this.isDisabled(t))
            }
        }
        ,
        this.createDateObject = function(t, e) {
            var n = l.$viewValue ? new Date(l.$viewValue) : null;
            return {
                date: t,
                label: o(t, e),
                selected: n && 0 === this.compare(t, n),
                disabled: this.isDisabled(t),
                current: 0 === this.compare(t, new Date),
                customClass: this.customClass(t)
            }
        }
        ,
        this.isDisabled = function(n) {
            return this.minDate && this.compare(n, this.minDate) < 0 || this.maxDate && this.compare(n, this.maxDate) > 0 || e.dateDisabled && t.dateDisabled({
                date: n,
                mode: t.datepickerMode
            })
        }
        ,
        this.customClass = function(e) {
            return t.customClass({
                date: e,
                mode: t.datepickerMode
            })
        }
        ,
        this.split = function(t, e) {
            for (var n = []; t.length > 0; )
                n.push(t.splice(0, e));
            return n
        }
        ,
        this.fixTimeZone = function(t) {
            var e = t.getHours();
            t.setHours(23 === e ? e + 2 : 0)
        }
        ,
        t.select = function(e) {
            if (t.datepickerMode === c.minMode) {
                var n = l.$viewValue ? new Date(l.$viewValue) : new Date(0,0,0,0,0,0,0);
                n.setFullYear(e.getFullYear(), e.getMonth(), e.getDate()),
                l.$setViewValue(n),
                l.$render()
            } else
                c.activeDate = e,
                t.datepickerMode = c.modes[c.modes.indexOf(t.datepickerMode) - 1]
        }
        ,
        t.move = function(t) {
            var e = c.activeDate.getFullYear() + t * (c.step.years || 0)
              , n = c.activeDate.getMonth() + t * (c.step.months || 0);
            c.activeDate.setFullYear(e, n, 1),
            c.refreshView()
        }
        ,
        t.toggleMode = function(e) {
            e = e || 1,
            t.datepickerMode === c.maxMode && 1 === e || t.datepickerMode === c.minMode && -1 === e || (t.datepickerMode = c.modes[c.modes.indexOf(t.datepickerMode) + e])
        }
        ,
        t.keys = {
            13: "enter",
            32: "space",
            33: "pageup",
            34: "pagedown",
            35: "end",
            36: "home",
            37: "left",
            38: "up",
            39: "right",
            40: "down"
        };
        var u = function() {
            c.element[0].focus()
        };
        t.$on("datepicker.focus", u),
        t.keydown = function(e) {
            var n = t.keys[e.which];
            if (n && !e.shiftKey && !e.altKey)
                if (e.preventDefault(),
                c.shortcutPropagation || e.stopPropagation(),
                "enter" === n || "space" === n) {
                    if (c.isDisabled(c.activeDate))
                        return;
                    t.select(c.activeDate),
                    u()
                } else
                    !e.ctrlKey || "up" !== n && "down" !== n ? (c.handleKeyDown(n, e),
                    c.refreshView()) : (t.toggleMode("up" === n ? 1 : -1),
                    u())
        }
    }
    ]).directive("datepicker", (function() {
        return {
            restrict: "EA",
            replace: !0,
            templateUrl: function(t, e) {
                return e.templateUrl || "template/datepicker/datepicker.html"
            },
            scope: {
                datepickerMode: "=?",
                dateDisabled: "&",
                customClass: "&",
                shortcutPropagation: "&?"
            },
            require: ["datepicker", "^ngModel"],
            controller: "DatepickerController",
            controllerAs: "datepicker",
            link: function(t, e, n, i) {
                var r = i[0]
                  , o = i[1];
                r.init(o)
            }
        }
    }
    )).directive("daypicker", ["dateFilter", function(t) {
        return {
            restrict: "EA",
            replace: !0,
            templateUrl: "template/datepicker/day.html",
            require: "^datepicker",
            link: function(e, n, i, r) {
                e.showWeeks = r.showWeeks,
                r.step = {
                    months: 1
                },
                r.element = n;
                var o = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
                function a(t, e) {
                    return 1 !== e || t % 4 != 0 || t % 100 == 0 && t % 400 != 0 ? o[e] : 29
                }
                function s(t) {
                    var e = new Date(t);
                    e.setDate(e.getDate() + 4 - (e.getDay() || 7));
                    var n = e.getTime();
                    return e.setMonth(0),
                    e.setDate(1),
                    Math.floor(Math.round((n - e) / 864e5) / 7) + 1
                }
                r._refreshView = function() {
                    var n = r.activeDate.getFullYear()
                      , i = r.activeDate.getMonth()
                      , o = new Date(n,i,1)
                      , a = r.startingDay - o.getDay()
                      , c = a > 0 ? 7 - a : -a
                      , l = new Date(o);
                    c > 0 && l.setDate(1 - c);
                    for (var u = function(t, e) {
                        for (var n, i = new Array(e), o = new Date(t), a = 0; a < e; )
                            n = new Date(o),
                            r.fixTimeZone(n),
                            i[a++] = n,
                            o.setDate(o.getDate() + 1);
                        return i
                    }(l, 42), d = 0; d < 42; d++)
                        u[d] = angular.extend(r.createDateObject(u[d], r.formatDay), {
                            secondary: u[d].getMonth() !== i,
                            uid: e.uniqueId + "-" + d
                        });
                    e.labels = new Array(7);
                    for (var p = 0; p < 7; p++)
                        e.labels[p] = {
                            abbr: t(u[p].date, r.formatDayHeader),
                            full: t(u[p].date, "EEEE")
                        };
                    if (e.title = t(r.activeDate, r.formatDayTitle),
                    e.rows = r.split(u, 7),
                    e.showWeeks) {
                        e.weekNumbers = [];
                        for (var h = (11 - r.startingDay) % 7, f = e.rows.length, m = 0; m < f; m++)
                            e.weekNumbers.push(s(e.rows[m][h].date))
                    }
                }
                ,
                r.compare = function(t, e) {
                    return new Date(t.getFullYear(),t.getMonth(),t.getDate()) - new Date(e.getFullYear(),e.getMonth(),e.getDate())
                }
                ,
                r.handleKeyDown = function(t, e) {
                    var n = r.activeDate.getDate();
                    if ("left" === t)
                        n -= 1;
                    else if ("up" === t)
                        n -= 7;
                    else if ("right" === t)
                        n += 1;
                    else if ("down" === t)
                        n += 7;
                    else if ("pageup" === t || "pagedown" === t) {
                        var i = r.activeDate.getMonth() + ("pageup" === t ? -1 : 1);
                        r.activeDate.setMonth(i, 1),
                        n = Math.min(a(r.activeDate.getFullYear(), r.activeDate.getMonth()), n)
                    } else
                        "home" === t ? n = 1 : "end" === t && (n = a(r.activeDate.getFullYear(), r.activeDate.getMonth()));
                    r.activeDate.setDate(n)
                }
                ,
                r.refreshView()
            }
        }
    }
    ]).directive("monthpicker", ["dateFilter", function(t) {
        return {
            restrict: "EA",
            replace: !0,
            templateUrl: "template/datepicker/month.html",
            require: "^datepicker",
            link: function(e, n, i, r) {
                r.step = {
                    years: 1
                },
                r.element = n,
                r._refreshView = function() {
                    for (var n, i = new Array(12), o = r.activeDate.getFullYear(), a = 0; a < 12; a++)
                        n = new Date(o,a,1),
                        r.fixTimeZone(n),
                        i[a] = angular.extend(r.createDateObject(n, r.formatMonth), {
                            uid: e.uniqueId + "-" + a
                        });
                    e.title = t(r.activeDate, r.formatMonthTitle),
                    e.rows = r.split(i, 3)
                }
                ,
                r.compare = function(t, e) {
                    return new Date(t.getFullYear(),t.getMonth()) - new Date(e.getFullYear(),e.getMonth())
                }
                ,
                r.handleKeyDown = function(t, e) {
                    var n = r.activeDate.getMonth();
                    if ("left" === t)
                        n -= 1;
                    else if ("up" === t)
                        n -= 3;
                    else if ("right" === t)
                        n += 1;
                    else if ("down" === t)
                        n += 3;
                    else if ("pageup" === t || "pagedown" === t) {
                        var i = r.activeDate.getFullYear() + ("pageup" === t ? -1 : 1);
                        r.activeDate.setFullYear(i)
                    } else
                        "home" === t ? n = 0 : "end" === t && (n = 11);
                    r.activeDate.setMonth(n)
                }
                ,
                r.refreshView()
            }
        }
    }
    ]).directive("yearpicker", ["dateFilter", function(t) {
        return {
            restrict: "EA",
            replace: !0,
            templateUrl: "template/datepicker/year.html",
            require: "^datepicker",
            link: function(t, e, n, i) {
                var r = i.yearRange;
                function o(t) {
                    return parseInt((t - 1) / r, 10) * r + 1
                }
                i.step = {
                    years: r
                },
                i.element = e,
                i._refreshView = function() {
                    for (var e, n = new Array(r), a = 0, s = o(i.activeDate.getFullYear()); a < r; a++)
                        e = new Date(s + a,0,1),
                        i.fixTimeZone(e),
                        n[a] = angular.extend(i.createDateObject(e, i.formatYear), {
                            uid: t.uniqueId + "-" + a
                        });
                    t.title = [n[0].label, n[r - 1].label].join(" - "),
                    t.rows = i.split(n, 5)
                }
                ,
                i.compare = function(t, e) {
                    return t.getFullYear() - e.getFullYear()
                }
                ,
                i.handleKeyDown = function(t, e) {
                    var n = i.activeDate.getFullYear();
                    "left" === t ? n -= 1 : "up" === t ? n -= 5 : "right" === t ? n += 1 : "down" === t ? n += 5 : "pageup" === t || "pagedown" === t ? n += ("pageup" === t ? -1 : 1) * i.step.years : "home" === t ? n = o(i.activeDate.getFullYear()) : "end" === t && (n = o(i.activeDate.getFullYear()) + r - 1),
                    i.activeDate.setFullYear(n)
                }
                ,
                i.refreshView()
            }
        }
    }
    ]).constant("datepickerPopupConfig", {
        datepickerPopup: "yyyy-MM-dd",
        datepickerPopupTemplateUrl: "template/datepicker/popup.html",
        datepickerTemplateUrl: "template/datepicker/datepicker.html",
        html5Types: {
            date: "yyyy-MM-dd",
            "datetime-local": "yyyy-MM-ddTHH:mm:ss.sss",
            month: "yyyy-MM"
        },
        currentText: "Today",
        clearText: "Clear",
        closeText: "Done",
        closeOnDateSelection: !0,
        appendToBody: !1,
        showButtonBar: !0,
        onOpenFocus: !0
    }).directive("datepickerPopup", ["$compile", "$parse", "$document", "$rootScope", "$position", "dateFilter", "dateParser", "datepickerPopupConfig", "$timeout", function(t, e, n, i, r, o, a, s, c) {
        return {
            restrict: "EA",
            require: "ngModel",
            scope: {
                isOpen: "=?",
                currentText: "@",
                clearText: "@",
                closeText: "@",
                dateDisabled: "&",
                customClass: "&"
            },
            link: function(l, u, d, p) {
                var h, f = angular.isDefined(d.closeOnDateSelection) ? l.$parent.$eval(d.closeOnDateSelection) : s.closeOnDateSelection, m = angular.isDefined(d.datepickerAppendToBody) ? l.$parent.$eval(d.datepickerAppendToBody) : s.appendToBody, g = angular.isDefined(d.onOpenFocus) ? l.$parent.$eval(d.onOpenFocus) : s.onOpenFocus, v = angular.isDefined(d.datepickerPopupTemplateUrl) ? d.datepickerPopupTemplateUrl : s.datepickerPopupTemplateUrl, y = angular.isDefined(d.datepickerTemplateUrl) ? d.datepickerTemplateUrl : s.datepickerTemplateUrl, b = {};
                l.showButtonBar = angular.isDefined(d.showButtonBar) ? l.$parent.$eval(d.showButtonBar) : s.showButtonBar,
                l.getText = function(t) {
                    return l[t + "Text"] || s[t + "Text"]
                }
                ,
                l.isDisabled = function(t) {
                    return "today" === t && (t = new Date),
                    l.watchData.minDate && l.compare(t, b.minDate) < 0 || l.watchData.maxDate && l.compare(t, b.maxDate) > 0
                }
                ,
                l.compare = function(t, e) {
                    return new Date(t.getFullYear(),t.getMonth(),t.getDate()) - new Date(e.getFullYear(),e.getMonth(),e.getDate())
                }
                ;
                var w = !1;
                if (s.html5Types[d.type] ? (h = s.html5Types[d.type],
                w = !0) : (h = d.datepickerPopup || s.datepickerPopup,
                d.$observe("datepickerPopup", (function(t, e) {
                    var n = t || s.datepickerPopup;
                    if (n !== h && (h = n,
                    p.$modelValue = null,
                    !h))
                        throw new Error("datepickerPopup must have a date format specified.")
                }
                ))),
                !h)
                    throw new Error("datepickerPopup must have a date format specified.");
                if (w && d.datepickerPopup)
                    throw new Error("HTML5 date input types do not support custom formats.");
                var S = angular.element("<div datepicker-popup-wrap><div datepicker></div></div>");
                function x(t) {
                    return t.replace(/([A-Z])/g, (function(t) {
                        return "-" + t.toLowerCase()
                    }
                    ))
                }
                S.attr({
                    "ng-model": "date",
                    "ng-change": "dateSelection(date)",
                    "template-url": v
                });
                var M = angular.element(S.children()[0]);
                if (M.attr("template-url", y),
                w && "month" === d.type && (M.attr("datepicker-mode", '"month"'),
                M.attr("min-mode", "month")),
                d.datepickerOptions) {
                    var E = l.$parent.$eval(d.datepickerOptions);
                    E && E.initDate && (l.initDate = E.initDate,
                    M.attr("init-date", "initDate"),
                    delete E.initDate),
                    angular.forEach(E, (function(t, e) {
                        M.attr(x(e), t)
                    }
                    ))
                }
                l.watchData = {},
                angular.forEach(["minMode", "maxMode", "minDate", "maxDate", "datepickerMode", "initDate", "shortcutPropagation"], (function(t) {
                    if (d[t]) {
                        var n = e(d[t]);
                        if (l.$parent.$watch(n, (function(e) {
                            l.watchData[t] = e,
                            "minDate" !== t && "maxDate" !== t || (b[t] = new Date(e))
                        }
                        )),
                        M.attr(x(t), "watchData." + t),
                        "datepickerMode" === t) {
                            var i = n.assign;
                            l.$watch("watchData." + t, (function(t, e) {
                                angular.isFunction(i) && t !== e && i(l.$parent, t)
                            }
                            ))
                        }
                    }
                }
                )),
                d.dateDisabled && M.attr("date-disabled", "dateDisabled({ date: date, mode: mode })"),
                d.showWeeks && M.attr("show-weeks", d.showWeeks),
                d.customClass && M.attr("custom-class", "customClass({ date: date, mode: mode })"),
                w ? p.$formatters.push((function(t) {
                    return l.date = t,
                    t
                }
                )) : (p.$$parserName = "date",
                p.$validators.date = function(t, e) {
                    var n = t || e;
                    if (!d.ngRequired && !n)
                        return !0;
                    if (angular.isNumber(n) && (n = new Date(n)),
                    n) {
                        if (angular.isDate(n) && !isNaN(n))
                            return !0;
                        if (angular.isString(n)) {
                            var i = a.parse(n, h);
                            return !isNaN(i)
                        }
                        return !1
                    }
                    return !0
                }
                ,
                p.$parsers.unshift((function(t) {
                    if (angular.isNumber(t) && (t = new Date(t)),
                    !t)
                        return null;
                    if (angular.isDate(t) && !isNaN(t))
                        return t;
                    if (angular.isString(t)) {
                        var e = a.parse(t, h, l.date);
                        return isNaN(e) ? void 0 : e
                    }
                }
                )),
                p.$formatters.push((function(t) {
                    return l.date = t,
                    p.$isEmpty(t) ? t : o(t, h)
                }
                ))),
                l.dateSelection = function(t) {
                    angular.isDefined(t) && (l.date = t);
                    var e = l.date ? o(l.date, h) : null;
                    u.val(e),
                    p.$setViewValue(e),
                    f && (l.isOpen = !1,
                    u[0].focus())
                }
                ,
                p.$viewChangeListeners.push((function() {
                    l.date = a.parse(p.$viewValue, h, l.date)
                }
                ));
                var C = function(t) {
                    !l.isOpen || u[0].contains(t.target) || S[0].contains(t.target) || l.$apply((function() {
                        l.isOpen = !1
                    }
                    ))
                }
                  , A = function(t) {
                    27 === t.which && l.isOpen ? (t.preventDefault(),
                    t.stopPropagation(),
                    l.$apply((function() {
                        l.isOpen = !1
                    }
                    )),
                    u[0].focus()) : 40 !== t.which || l.isOpen || (t.preventDefault(),
                    t.stopPropagation(),
                    l.$apply((function() {
                        l.isOpen = !0
                    }
                    )))
                };
                u.bind("keydown", A),
                l.keydown = function(t) {
                    27 === t.which && (l.isOpen = !1,
                    u[0].focus())
                }
                ,
                l.$watch("isOpen", (function(t) {
                    t ? (l.position = m ? r.offset(u) : r.position(u),
                    l.position.top = l.position.top + u.prop("offsetHeight"),
                    c((function() {
                        g && l.$broadcast("datepicker.focus"),
                        n.bind("click", C)
                    }
                    ), 0, !1)) : n.unbind("click", C)
                }
                )),
                l.select = function(t) {
                    if ("today" === t) {
                        var e = new Date;
                        angular.isDate(l.date) ? (t = new Date(l.date)).setFullYear(e.getFullYear(), e.getMonth(), e.getDate()) : t = new Date(e.setHours(0, 0, 0, 0))
                    }
                    l.dateSelection(t)
                }
                ,
                l.close = function() {
                    l.isOpen = !1,
                    u[0].focus()
                }
                ;
                var T = t(S)(l);
                S.remove(),
                m ? n.find("body").append(T) : u.after(T),
                l.$on("$destroy", (function() {
                    !0 === l.isOpen && (i.$$phase || l.$apply((function() {
                        l.isOpen = !1
                    }
                    ))),
                    T.remove(),
                    u.unbind("keydown", A),
                    n.unbind("click", C)
                }
                ))
            }
        }
    }
    ]).directive("datepickerPopupWrap", (function() {
        return {
            restrict: "EA",
            replace: !0,
            transclude: !0,
            templateUrl: function(t, e) {
                return e.templateUrl || "template/datepicker/popup.html"
            }
        }
    }
    )),
    angular.module("ui.bootstrap.dropdown", ["ui.bootstrap.position"]).constant("dropdownConfig", {
        openClass: "open"
    }).service("dropdownService", ["$document", "$rootScope", function(t, e) {
        var n = null;
        this.open = function(e) {
            n || (t.bind("click", i),
            t.bind("keydown", r)),
            n && n !== e && (n.isOpen = !1),
            n = e
        }
        ,
        this.close = function(e) {
            n === e && (n = null,
            t.unbind("click", i),
            t.unbind("keydown", r))
        }
        ;
        var i = function(t) {
            if (n && (!t || "disabled" !== n.getAutoClose())) {
                var i = n.getToggleElement();
                if (!(t && i && i[0].contains(t.target))) {
                    var r = n.getDropdownElement();
                    t && "outsideClick" === n.getAutoClose() && r && r[0].contains(t.target) || (n.isOpen = !1,
                    e.$$phase || n.$apply())
                }
            }
        }
          , r = function(t) {
            27 === t.which ? (n.focusToggleElement(),
            i()) : n.isKeynavEnabled() && /(38|40)/.test(t.which) && n.isOpen && (t.preventDefault(),
            t.stopPropagation(),
            n.focusDropdownEntry(t.which))
        }
    }
    ]).controller("DropdownController", ["$scope", "$attrs", "$parse", "dropdownConfig", "dropdownService", "$animate", "$position", "$document", "$compile", "$templateRequest", function(t, e, n, i, r, o, a, s, c, l) {
        var u, d, p = this, h = t.$new(), f = i.openClass, m = angular.noop, g = e.onToggle ? n(e.onToggle) : angular.noop, v = !1, y = !1, b = s.find("body");
        this.init = function(i) {
            p.$element = i,
            e.isOpen && (d = n(e.isOpen),
            m = d.assign,
            t.$watch(d, (function(t) {
                h.isOpen = !!t
            }
            ))),
            v = angular.isDefined(e.dropdownAppendToBody),
            y = angular.isDefined(e.keyboardNav),
            v && p.dropdownMenu && (b.append(p.dropdownMenu),
            b.addClass("dropdown"),
            i.on("$destroy", (function() {
                p.dropdownMenu.remove()
            }
            )))
        }
        ,
        this.toggle = function(t) {
            return h.isOpen = arguments.length ? !!t : !h.isOpen
        }
        ,
        this.isOpen = function() {
            return h.isOpen
        }
        ,
        h.getToggleElement = function() {
            return p.toggleElement
        }
        ,
        h.getAutoClose = function() {
            return e.autoClose || "always"
        }
        ,
        h.getElement = function() {
            return p.$element
        }
        ,
        h.isKeynavEnabled = function() {
            return y
        }
        ,
        h.focusDropdownEntry = function(t) {
            var e = p.dropdownMenu ? angular.element(p.dropdownMenu).find("a") : angular.element(p.$element).find("ul").eq(0).find("a");
            switch (t) {
            case 40:
                angular.isNumber(p.selectedOption) ? p.selectedOption = p.selectedOption === e.length - 1 ? p.selectedOption : p.selectedOption + 1 : p.selectedOption = 0;
                break;
            case 38:
                angular.isNumber(p.selectedOption) ? p.selectedOption = 0 === p.selectedOption ? 0 : p.selectedOption - 1 : p.selectedOption = e.length - 1
            }
            e[p.selectedOption].focus()
        }
        ,
        h.getDropdownElement = function() {
            return p.dropdownMenu
        }
        ,
        h.focusToggleElement = function() {
            p.toggleElement && p.toggleElement[0].focus()
        }
        ,
        h.$watch("isOpen", (function(e, n) {
            if (v && p.dropdownMenu) {
                var i = a.positionElements(p.$element, p.dropdownMenu, "bottom-left", !0)
                  , s = {
                    top: i.top + "px",
                    display: e ? "block" : "none"
                };
                p.dropdownMenu.hasClass("dropdown-menu-right") ? (s.left = "auto",
                s.right = window.innerWidth - (i.left + p.$element.prop("offsetWidth")) + "px") : (s.left = i.left + "px",
                s.right = "auto"),
                p.dropdownMenu.css(s)
            }
            var d = v ? b : p.$element;
            if (o[e ? "addClass" : "removeClass"](d, f).then((function() {
                angular.isDefined(e) && e !== n && g(t, {
                    open: !!e
                })
            }
            )),
            e)
                p.dropdownMenuTemplateUrl && l(p.dropdownMenuTemplateUrl).then((function(t) {
                    u = h.$new(),
                    c(t.trim())(u, (function(t) {
                        var e = t;
                        p.dropdownMenu.replaceWith(e),
                        p.dropdownMenu = e
                    }
                    ))
                }
                )),
                h.focusToggleElement(),
                r.open(h);
            else {
                if (p.dropdownMenuTemplateUrl) {
                    u && u.$destroy();
                    var y = angular.element('<ul class="dropdown-menu"></ul>');
                    p.dropdownMenu.replaceWith(y),
                    p.dropdownMenu = y
                }
                r.close(h),
                p.selectedOption = null
            }
            angular.isFunction(m) && m(t, e)
        }
        )),
        t.$on("$locationChangeSuccess", (function() {
            "disabled" !== h.getAutoClose() && (h.isOpen = !1)
        }
        ));
        var w = t.$on("$destroy", (function() {
            h.$destroy()
        }
        ));
        h.$on("$destroy", w)
    }
    ]).directive("dropdown", (function() {
        return {
            controller: "DropdownController",
            link: function(t, e, n, i) {
                i.init(e),
                e.addClass("dropdown")
            }
        }
    }
    )).directive("dropdownMenu", (function() {
        return {
            restrict: "AC",
            require: "?^dropdown",
            link: function(t, e, n, i) {
                if (i) {
                    var r = n.templateUrl;
                    r && (i.dropdownMenuTemplateUrl = r),
                    i.dropdownMenu || (i.dropdownMenu = e)
                }
            }
        }
    }
    )).directive("keyboardNav", (function() {
        return {
            restrict: "A",
            require: "?^dropdown",
            link: function(t, e, n, i) {
                e.bind("keydown", (function(t) {
                    if (-1 !== [38, 40].indexOf(t.which)) {
                        t.preventDefault(),
                        t.stopPropagation();
                        var e = i.dropdownMenu.find("a");
                        switch (t.which) {
                        case 40:
                            angular.isNumber(i.selectedOption) ? i.selectedOption = i.selectedOption === e.length - 1 ? i.selectedOption : i.selectedOption + 1 : i.selectedOption = 0;
                            break;
                        case 38:
                            angular.isNumber(i.selectedOption) ? i.selectedOption = 0 === i.selectedOption ? 0 : i.selectedOption - 1 : i.selectedOption = e.length - 1
                        }
                        e[i.selectedOption].focus()
                    }
                }
                ))
            }
        }
    }
    )).directive("dropdownToggle", (function() {
        return {
            require: "?^dropdown",
            link: function(t, e, n, i) {
                if (i) {
                    e.addClass("dropdown-toggle"),
                    i.toggleElement = e;
                    var r = function(r) {
                        r.preventDefault(),
                        e.hasClass("disabled") || n.disabled || t.$apply((function() {
                            i.toggle()
                        }
                        ))
                    };
                    e.bind("click", r),
                    e.attr({
                        "aria-haspopup": !0,
                        "aria-expanded": !1
                    }),
                    t.$watch(i.isOpen, (function(t) {
                        e.attr("aria-expanded", !!t)
                    }
                    )),
                    t.$on("$destroy", (function() {
                        e.unbind("click", r)
                    }
                    ))
                }
            }
        }
    }
    )),
    angular.module("ui.bootstrap.modal", []).factory("$$stackedMap", (function() {
        return {
            createNew: function() {
                var t = [];
                return {
                    add: function(e, n) {
                        t.push({
                            key: e,
                            value: n
                        })
                    },
                    get: function(e) {
                        for (var n = 0; n < t.length; n++)
                            if (e == t[n].key)
                                return t[n]
                    },
                    keys: function() {
                        for (var e = [], n = 0; n < t.length; n++)
                            e.push(t[n].key);
                        return e
                    },
                    top: function() {
                        return t[t.length - 1]
                    },
                    remove: function(e) {
                        for (var n = -1, i = 0; i < t.length; i++)
                            if (e == t[i].key) {
                                n = i;
                                break
                            }
                        return t.splice(n, 1)[0]
                    },
                    removeTop: function() {
                        return t.splice(t.length - 1, 1)[0]
                    },
                    length: function() {
                        return t.length
                    }
                }
            }
        }
    }
    )).factory("$$multiMap", (function() {
        return {
            createNew: function() {
                var t = {};
                return {
                    entries: function() {
                        return Object.keys(t).map((function(e) {
                            return {
                                key: e,
                                value: t[e]
                            }
                        }
                        ))
                    },
                    get: function(e) {
                        return t[e]
                    },
                    hasKey: function(e) {
                        return !!t[e]
                    },
                    keys: function() {
                        return Object.keys(t)
                    },
                    put: function(e, n) {
                        t[e] || (t[e] = []),
                        t[e].push(n)
                    },
                    remove: function(e, n) {
                        var i = t[e];
                        if (i) {
                            var r = i.indexOf(n);
                            -1 !== r && i.splice(r, 1),
                            i.length || delete t[e]
                        }
                    }
                }
            }
        }
    }
    )).directive("modalBackdrop", ["$animate", "$injector", "$modalStack", function(t, e, n) {
        var i = null;
        return e.has("$animateCss") && (i = e.get("$animateCss")),
        {
            restrict: "EA",
            replace: !0,
            templateUrl: "template/modal/backdrop.html",
            compile: function(t, e) {
                return t.addClass(e.backdropClass),
                r
            }
        };
        function r(e, r, o) {
            o.modalInClass && (i ? i(r, {
                addClass: o.modalInClass
            }).start() : t.addClass(r, o.modalInClass),
            e.$on(n.NOW_CLOSING_EVENT, (function(e, n) {
                var a = n();
                i ? i(r, {
                    removeClass: o.modalInClass
                }).start().then(a) : t.removeClass(r, o.modalInClass).then(a)
            }
            )))
        }
    }
    ]).directive("modalWindow", ["$modalStack", "$q", "$animate", "$injector", function(t, e, n, i) {
        var r = null;
        return i.has("$animateCss") && (r = i.get("$animateCss")),
        {
            restrict: "EA",
            scope: {
                index: "@"
            },
            replace: !0,
            transclude: !0,
            templateUrl: function(t, e) {
                return e.templateUrl || "template/modal/window.html"
            },
            link: function(i, o, a) {
                o.addClass(a.windowClass || ""),
                i.size = a.size,
                i.close = function(e) {
                    var n = t.getTop();
                    n && n.value.backdrop && "static" !== n.value.backdrop && e.target === e.currentTarget && (e.preventDefault(),
                    e.stopPropagation(),
                    t.dismiss(n.key, "backdrop click"))
                }
                ,
                i.$isRendered = !0;
                var s = e.defer();
                a.$observe("modalRender", (function(t) {
                    "true" == t && s.resolve()
                }
                )),
                s.promise.then((function() {
                    var s = null;
                    a.modalInClass && (s = r ? r(o, {
                        addClass: a.modalInClass
                    }).start() : n.addClass(o, a.modalInClass),
                    i.$on(t.NOW_CLOSING_EVENT, (function(t, e) {
                        var i = e();
                        r ? r(o, {
                            removeClass: a.modalInClass
                        }).start().then(i) : n.removeClass(o, a.modalInClass).then(i)
                    }
                    ))),
                    e.when(s).then((function() {
                        var t = o[0].querySelectorAll("[autofocus]");
                        t.length ? t[0].focus() : o[0].focus()
                    }
                    ));
                    var c = t.getTop();
                    c && t.modalRendered(c.key)
                }
                ))
            }
        }
    }
    ]).directive("modalAnimationClass", [function() {
        return {
            compile: function(t, e) {
                e.modalAnimation && t.addClass(e.modalAnimationClass)
            }
        }
    }
    ]).directive("modalTransclude", (function() {
        return {
            link: function(t, e, n, i, r) {
                r(t.$parent, (function(t) {
                    e.empty(),
                    e.append(t)
                }
                ))
            }
        }
    }
    )).factory("$modalStack", ["$animate", "$timeout", "$document", "$compile", "$rootScope", "$q", "$injector", "$$multiMap", "$$stackedMap", function(t, e, n, i, r, o, a, s, c) {
        var l = null;
        a.has("$animateCss") && (l = a.get("$animateCss"));
        var u, d, p, h = c.createNew(), f = s.createNew(), m = {
            NOW_CLOSING_EVENT: "modal.stack.now-closing"
        };
        function g() {
            for (var t = -1, e = h.keys(), n = 0; n < e.length; n++)
                h.get(e[n]).value.backdrop && (t = n);
            return t
        }
        function v(t, e) {
            var i = n.find("body").eq(0)
              , r = h.get(t).value;
            h.remove(t),
            y(r.modalDomEl, r.modalScope, (function() {
                var e = r.openedClass || "modal-open";
                f.remove(e, t),
                i.toggleClass(e, f.hasKey(e))
            }
            )),
            function() {
                if (u && -1 == g()) {
                    y(u, d, (function() {
                        null
                    }
                    )),
                    u = void 0,
                    d = void 0
                }
            }(),
            e && e.focus ? e.focus() : i.focus()
        }
        function y(e, n, i) {
            var r, a = null;
            return n.$broadcast(m.NOW_CLOSING_EVENT, (function() {
                return r || (r = o.defer(),
                a = r.promise),
                function() {
                    r.resolve()
                }
            }
            )),
            o.when(a).then((function r() {
                if (r.done)
                    return;
                r.done = !0,
                l ? l(e, {
                    event: "leave"
                }).start().then((function() {
                    e.remove()
                }
                )) : t.leave(e);
                n.$destroy(),
                i && i()
            }
            ))
        }
        function b(t, e, n) {
            return !t.value.modalScope.$broadcast("modal.closing", e, n).defaultPrevented
        }
        return r.$watch(g, (function(t) {
            d && (d.index = t)
        }
        )),
        n.bind("keydown", (function(t) {
            if (t.isDefaultPrevented())
                return t;
            var e = h.top();
            if (e && e.value.keyboard)
                switch (t.which) {
                case 27:
                    t.preventDefault(),
                    r.$apply((function() {
                        m.dismiss(e.key, "escape key press")
                    }
                    ));
                    break;
                case 9:
                    m.loadFocusElementList(e);
                    var n = !1;
                    t.shiftKey ? m.isFocusInFirstItem(t) && (n = m.focusLastFocusableElement()) : m.isFocusInLastItem(t) && (n = m.focusFirstFocusableElement()),
                    n && (t.preventDefault(),
                    t.stopPropagation())
                }
        }
        )),
        m.open = function(t, e) {
            var o = n[0].activeElement
              , a = e.openedClass || "modal-open";
            h.add(t, {
                deferred: e.deferred,
                renderDeferred: e.renderDeferred,
                modalScope: e.scope,
                backdrop: e.backdrop,
                keyboard: e.keyboard,
                openedClass: e.openedClass
            }),
            f.put(a, t);
            var s = n.find("body").eq(0)
              , c = g();
            if (c >= 0 && !u) {
                (d = r.$new(!0)).index = c;
                var l = angular.element('<div modal-backdrop="modal-backdrop"></div>');
                l.attr("backdrop-class", e.backdropClass),
                e.animation && l.attr("modal-animation", "true"),
                u = i(l)(d),
                s.append(u)
            }
            var p = angular.element('<div modal-window="modal-window"></div>');
            p.attr({
                "template-url": e.windowTemplateUrl,
                "window-class": e.windowClass,
                size: e.size,
                index: h.length() - 1,
                animate: "animate"
            }).html(e.content),
            e.animation && p.attr("modal-animation", "true");
            var v = i(p)(e.scope);
            h.top().value.modalDomEl = v,
            h.top().value.modalOpener = o,
            s.append(v),
            s.addClass(a),
            m.clearFocusListCache()
        }
        ,
        m.close = function(t, e) {
            var n = h.get(t);
            return n && b(n, e, !0) ? (n.value.modalScope.$$uibDestructionScheduled = !0,
            n.value.deferred.resolve(e),
            v(t, n.value.modalOpener),
            !0) : !n
        }
        ,
        m.dismiss = function(t, e) {
            var n = h.get(t);
            return n && b(n, e, !1) ? (n.value.modalScope.$$uibDestructionScheduled = !0,
            n.value.deferred.reject(e),
            v(t, n.value.modalOpener),
            !0) : !n
        }
        ,
        m.dismissAll = function(t) {
            for (var e = this.getTop(); e && this.dismiss(e.key, t); )
                e = this.getTop()
        }
        ,
        m.getTop = function() {
            return h.top()
        }
        ,
        m.modalRendered = function(t) {
            var e = h.get(t);
            e && e.value.renderDeferred.resolve()
        }
        ,
        m.focusFirstFocusableElement = function() {
            return p.length > 0 && (p[0].focus(),
            !0)
        }
        ,
        m.focusLastFocusableElement = function() {
            return p.length > 0 && (p[p.length - 1].focus(),
            !0)
        }
        ,
        m.isFocusInFirstItem = function(t) {
            return p.length > 0 && (t.target || t.srcElement) == p[0]
        }
        ,
        m.isFocusInLastItem = function(t) {
            return p.length > 0 && (t.target || t.srcElement) == p[p.length - 1]
        }
        ,
        m.clearFocusListCache = function() {
            p = [],
            0
        }
        ,
        m.loadFocusElementList = function(t) {
            if ((void 0 === p || !p.length0) && t) {
                var e = t.value.modalDomEl;
                e && e.length && (p = e[0].querySelectorAll("a[href], area[href], input:not([disabled]), button:not([disabled]),select:not([disabled]), textarea:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable=true]"))
            }
        }
        ,
        m
    }
    ]).provider("$modal", (function() {
        var t = {
            options: {
                animation: !0,
                backdrop: !0,
                keyboard: !0
            },
            $get: ["$injector", "$rootScope", "$q", "$templateRequest", "$controller", "$modalStack", function(e, n, i, r, o, a) {
                var s = {};
                var c = null;
                return s.getPromiseChain = function() {
                    return c
                }
                ,
                s.open = function(s) {
                    var l = i.defer()
                      , u = i.defer()
                      , d = i.defer()
                      , p = {
                        result: l.promise,
                        opened: u.promise,
                        rendered: d.promise,
                        close: function(t) {
                            return a.close(p, t)
                        },
                        dismiss: function(t) {
                            return a.dismiss(p, t)
                        }
                    };
                    if ((s = angular.extend({}, t.options, s)).resolve = s.resolve || {},
                    !s.template && !s.templateUrl)
                        throw new Error("One of template or templateUrl options is required.");
                    var h, f, m, g, v = i.all([(m = s,
                    m.template ? i.when(m.template) : r(angular.isFunction(m.templateUrl) ? m.templateUrl() : m.templateUrl))].concat((h = s.resolve,
                    f = [],
                    angular.forEach(h, (function(t) {
                        angular.isFunction(t) || angular.isArray(t) ? f.push(i.when(e.invoke(t))) : angular.isString(t) ? f.push(i.when(e.get(t))) : f.push(i.when(t))
                    }
                    )),
                    f)));
                    return g = c = i.all([c]).then((function() {
                        return v
                    }
                    ), (function() {
                        return v
                    }
                    )).then((function(t) {
                        var e = (s.scope || n).$new();
                        e.$close = p.close,
                        e.$dismiss = p.dismiss,
                        e.$on("$destroy", (function() {
                            e.$$uibDestructionScheduled || e.$dismiss("$uibUnscheduledDestruction")
                        }
                        ));
                        var i, r = {}, c = 1;
                        s.controller && (r.$scope = e,
                        r.$modalInstance = p,
                        angular.forEach(s.resolve, (function(e, n) {
                            r[n] = t[c++]
                        }
                        )),
                        i = o(s.controller, r),
                        s.controllerAs && (s.bindToController && angular.extend(i, e),
                        e[s.controllerAs] = i)),
                        a.open(p, {
                            scope: e,
                            deferred: l,
                            renderDeferred: d,
                            content: t[0],
                            animation: s.animation,
                            backdrop: s.backdrop,
                            keyboard: s.keyboard,
                            backdropClass: s.backdropClass,
                            windowClass: s.windowClass,
                            windowTemplateUrl: s.windowTemplateUrl,
                            size: s.size,
                            openedClass: s.openedClass
                        }),
                        u.resolve(!0)
                    }
                    ), (function(t) {
                        u.reject(t),
                        l.reject(t)
                    }
                    )).finally((function() {
                        c === g && (c = null)
                    }
                    )),
                    p
                }
                ,
                s
            }
            ]
        };
        return t
    }
    )),
    angular.module("ui.bootstrap.pagination", []).controller("PaginationController", ["$scope", "$attrs", "$parse", function(t, e, n) {
        var i = this
          , r = {
            $setViewValue: angular.noop
        }
          , o = e.numPages ? n(e.numPages).assign : angular.noop;
        this.init = function(a, s) {
            r = a,
            this.config = s,
            r.$render = function() {
                i.render()
            }
            ,
            e.itemsPerPage ? t.$parent.$watch(n(e.itemsPerPage), (function(e) {
                i.itemsPerPage = parseInt(e, 10),
                t.totalPages = i.calculateTotalPages()
            }
            )) : this.itemsPerPage = s.itemsPerPage,
            t.$watch("totalItems", (function() {
                t.totalPages = i.calculateTotalPages()
            }
            )),
            t.$watch("totalPages", (function(e) {
                o(t.$parent, e),
                t.page > e ? t.selectPage(e) : r.$render()
            }
            ))
        }
        ,
        this.calculateTotalPages = function() {
            var e = this.itemsPerPage < 1 ? 1 : Math.ceil(t.totalItems / this.itemsPerPage);
            return Math.max(e || 0, 1)
        }
        ,
        this.render = function() {
            t.page = parseInt(r.$viewValue, 10) || 1
        }
        ,
        t.selectPage = function(e, n) {
            n && n.preventDefault(),
            (!t.ngDisabled || !n) && t.page !== e && e > 0 && e <= t.totalPages && (n && n.target && n.target.blur(),
            r.$setViewValue(e),
            r.$render())
        }
        ,
        t.getText = function(e) {
            return t[e + "Text"] || i.config[e + "Text"]
        }
        ,
        t.noPrevious = function() {
            return 1 === t.page
        }
        ,
        t.noNext = function() {
            return t.page === t.totalPages
        }
    }
    ]).constant("paginationConfig", {
        itemsPerPage: 10,
        boundaryLinks: !1,
        directionLinks: !0,
        firstText: "First",
        previousText: "Previous",
        nextText: "Next",
        lastText: "Last",
        rotate: !0
    }).directive("pagination", ["$parse", "paginationConfig", function(t, e) {
        return {
            restrict: "EA",
            scope: {
                totalItems: "=",
                firstText: "@",
                previousText: "@",
                nextText: "@",
                lastText: "@",
                ngDisabled: "="
            },
            require: ["pagination", "?ngModel"],
            controller: "PaginationController",
            controllerAs: "pagination",
            templateUrl: function(t, e) {
                return e.templateUrl || "template/pagination/pagination.html"
            },
            replace: !0,
            link: function(n, i, r, o) {
                var a = o[0]
                  , s = o[1];
                if (s) {
                    var c = angular.isDefined(r.maxSize) ? n.$parent.$eval(r.maxSize) : e.maxSize
                      , l = angular.isDefined(r.rotate) ? n.$parent.$eval(r.rotate) : e.rotate;
                    n.boundaryLinks = angular.isDefined(r.boundaryLinks) ? n.$parent.$eval(r.boundaryLinks) : e.boundaryLinks,
                    n.directionLinks = angular.isDefined(r.directionLinks) ? n.$parent.$eval(r.directionLinks) : e.directionLinks,
                    a.init(s, e),
                    r.maxSize && n.$parent.$watch(t(r.maxSize), (function(t) {
                        c = parseInt(t, 10),
                        a.render()
                    }
                    ));
                    var u = a.render;
                    a.render = function() {
                        u(),
                        n.page > 0 && n.page <= n.totalPages && (n.pages = function(t, e) {
                            var n = []
                              , i = 1
                              , r = e
                              , o = angular.isDefined(c) && c < e;
                            o && (l ? (r = (i = Math.max(t - Math.floor(c / 2), 1)) + c - 1) > e && (i = (r = e) - c + 1) : (i = (Math.ceil(t / c) - 1) * c + 1,
                            r = Math.min(i + c - 1, e)));
                            for (var a = i; a <= r; a++) {
                                var s = d(a, a, a === t);
                                n.push(s)
                            }
                            if (o && !l) {
                                if (i > 1) {
                                    var u = d(i - 1, "...", !1);
                                    n.unshift(u)
                                }
                                if (r < e) {
                                    var p = d(r + 1, "...", !1);
                                    n.push(p)
                                }
                            }
                            return n
                        }(n.page, n.totalPages))
                    }
                }
                function d(t, e, n) {
                    return {
                        number: t,
                        text: e,
                        active: n
                    }
                }
            }
        }
    }
    ]).constant("pagerConfig", {
        itemsPerPage: 10,
        previousText: "« Previous",
        nextText: "Next »",
        align: !0
    }).directive("pager", ["pagerConfig", function(t) {
        return {
            restrict: "EA",
            scope: {
                totalItems: "=",
                previousText: "@",
                nextText: "@",
                ngDisabled: "="
            },
            require: ["pager", "?ngModel"],
            controller: "PaginationController",
            controllerAs: "pagination",
            templateUrl: function(t, e) {
                return e.templateUrl || "template/pagination/pager.html"
            },
            replace: !0,
            link: function(e, n, i, r) {
                var o = r[0]
                  , a = r[1];
                a && (e.align = angular.isDefined(i.align) ? e.$parent.$eval(i.align) : t.align,
                o.init(a, t))
            }
        }
    }
    ]),
    angular.module("ui.bootstrap.tooltip", ["ui.bootstrap.position", "ui.bootstrap.bindHtml"]).provider("$tooltip", (function() {
        var t = {
            placement: "top",
            animation: !0,
            popupDelay: 0,
            useContentExp: !1
        }
          , e = {
            mouseenter: "mouseleave",
            click: "click",
            focus: "blur",
            none: ""
        }
          , n = {};
        this.options = function(t) {
            angular.extend(n, t)
        }
        ,
        this.setTriggers = function(t) {
            angular.extend(e, t)
        }
        ,
        this.$get = ["$window", "$compile", "$timeout", "$document", "$position", "$interpolate", "$rootScope", "$parse", function(i, r, o, a, s, c, l, u) {
            return function(i, d, p, h) {
                function f(t) {
                    var n = (t || h.trigger || p).split(" ")
                      , i = n.map((function(t) {
                        return e[t] || t
                    }
                    ));
                    return {
                        show: n,
                        hide: i
                    }
                }
                h = angular.extend({}, t, n, h);
                var m = function(t) {
                    return t.replace(/[A-Z]/g, (function(t, e) {
                        return (e ? "-" : "") + t.toLowerCase()
                    }
                    ))
                }(i)
                  , g = c.startSymbol()
                  , v = c.endSymbol()
                  , y = "<div " + m + '-popup title="' + g + "title" + v + '" ' + (h.useContentExp ? 'content-exp="contentExp()" ' : 'content="' + g + "content" + v + '" ') + 'placement="' + g + "placement" + v + '" popup-class="' + g + "popupClass" + v + '" animation="animation" is-open="isOpen"origin-scope="origScope" ></div>';
                return {
                    restrict: "EA",
                    compile: function(t, e) {
                        var n = r(y);
                        return function(t, e, r, c) {
                            var p, m, g, v, y, b = !!angular.isDefined(h.appendToBody) && h.appendToBody, w = f(void 0), S = angular.isDefined(r[d + "Enable"]), x = t.$new(!0), M = !1, E = !!angular.isDefined(r[d + "IsOpen"]) && u(r[d + "IsOpen"]), C = function() {
                                p && (y || (y = o((function() {
                                    p.css({
                                        top: 0,
                                        left: 0,
                                        width: "auto",
                                        height: "auto"
                                    });
                                    var t = s.position(p)
                                      , n = s.positionElements(e, p, x.placement, b);
                                    n.top += "px",
                                    n.left += "px",
                                    n.width = t.width + "px",
                                    n.height = t.height + "px",
                                    p.css(n),
                                    y = null
                                }
                                ), 0, !1)))
                            };
                            function A() {
                                x.isOpen ? O() : T()
                            }
                            function T() {
                                var e, n;
                                S && !t.$eval(r[d + "Enable"]) || (x.popupClass = r[d + "Class"],
                                k(),
                                e = r[d + "PopupDelay"],
                                n = parseInt(e, 10),
                                x.popupDelay = isNaN(n) ? h.popupDelay : n,
                                x.popupDelay ? v || (v = o(_, x.popupDelay, !1)) : _())
                            }
                            function O() {
                                P(),
                                l.$$phase || l.$digest()
                            }
                            function _() {
                                if (v = null,
                                g && (o.cancel(g),
                                g = null),
                                !(h.useContentExp ? x.contentExp() : x.content))
                                    return angular.noop;
                                !function() {
                                    p && I();
                                    m = x.$new(),
                                    p = n(m, (function(t) {
                                        b ? a.find("body").append(t) : e.after(t)
                                    }
                                    )),
                                    h.useContentExp && (m.$watch("contentExp()", (function(t) {
                                        !t && x.isOpen && P()
                                    }
                                    )),
                                    m.$watch((function() {
                                        M || (M = !0,
                                        m.$$postDigest((function() {
                                            M = !1,
                                            x.isOpen && C()
                                        }
                                        )))
                                    }
                                    )))
                                }(),
                                x.isOpen = !0,
                                E && E.assign(x.origScope, x.isOpen),
                                l.$$phase || x.$apply(),
                                p.css({
                                    display: "block"
                                }),
                                C()
                            }
                            function P() {
                                x.isOpen = !1,
                                E && E.assign(x.origScope, x.isOpen),
                                o.cancel(v),
                                v = null,
                                o.cancel(y),
                                y = null,
                                x.animation ? g || (g = o(I, 500)) : I()
                            }
                            function I() {
                                g = null,
                                p && (p.remove(),
                                p = null),
                                m && (m.$destroy(),
                                m = null)
                            }
                            function k() {
                                var t = r[d + "Placement"];
                                x.placement = angular.isDefined(t) ? t : h.placement
                            }
                            x.origScope = t,
                            x.isOpen = !1,
                            x.contentExp = function() {
                                return t.$eval(r[i])
                            }
                            ,
                            h.useContentExp || r.$observe(i, (function(t) {
                                x.content = t,
                                !t && x.isOpen ? P() : C()
                            }
                            )),
                            r.$observe("disabled", (function(t) {
                                v && t && (o.cancel(v),
                                v = null),
                                t && x.isOpen && P()
                            }
                            )),
                            r.$observe(d + "Title", (function(t) {
                                x.title = t,
                                C()
                            }
                            )),
                            r.$observe(d + "Placement", (function() {
                                x.isOpen && (k(),
                                C())
                            }
                            )),
                            E && t.$watch(E, (function(t) {
                                t !== x.isOpen && A()
                            }
                            ));
                            var D, R = function() {
                                w.show.forEach((function(t) {
                                    e.unbind(t, T)
                                }
                                )),
                                w.hide.forEach((function(t) {
                                    e.unbind(t, O)
                                }
                                ))
                            };
                            D = r[d + "Trigger"],
                            R(),
                            "none" !== (w = f(D)).show && w.show.forEach((function(t, n) {
                                t === w.hide[n] ? e[0].addEventListener(t, A) : t && (e[0].addEventListener(t, T),
                                e[0].addEventListener(w.hide[n], O))
                            }
                            ));
                            var L = t.$eval(r[d + "Animation"]);
                            x.animation = angular.isDefined(L) ? !!L : h.animation;
                            var N = t.$eval(r[d + "AppendToBody"]);
                            (b = angular.isDefined(N) ? N : b) && t.$on("$locationChangeSuccess", (function() {
                                x.isOpen && P()
                            }
                            )),
                            t.$on("$destroy", (function() {
                                o.cancel(g),
                                o.cancel(v),
                                o.cancel(y),
                                R(),
                                I(),
                                x = null
                            }
                            ))
                        }
                    }
                }
            }
        }
        ]
    }
    )).directive("tooltipTemplateTransclude", ["$animate", "$sce", "$compile", "$templateRequest", function(t, e, n, i) {
        return {
            link: function(r, o, a) {
                var s, c, l, u = r.$eval(a.tooltipTemplateTranscludeScope), d = 0, p = function() {
                    c && (c.remove(),
                    c = null),
                    s && (s.$destroy(),
                    s = null),
                    l && (t.leave(l).then((function() {
                        c = null
                    }
                    )),
                    c = l,
                    l = null)
                };
                r.$watch(e.parseAsResourceUrl(a.tooltipTemplateTransclude), (function(e) {
                    var a = ++d;
                    e ? (i(e, !0).then((function(i) {
                        if (a === d) {
                            var r = u.$new()
                              , c = n(i)(r, (function(e) {
                                p(),
                                t.enter(e, o)
                            }
                            ));
                            l = c,
                            (s = r).$emit("$includeContentLoaded", e)
                        }
                    }
                    ), (function() {
                        a === d && (p(),
                        r.$emit("$includeContentError", e))
                    }
                    )),
                    r.$emit("$includeContentRequested", e)) : p()
                }
                )),
                r.$on("$destroy", p)
            }
        }
    }
    ]).directive("tooltipClasses", (function() {
        return {
            restrict: "A",
            link: function(t, e, n) {
                t.placement && e.addClass(t.placement),
                t.popupClass && e.addClass(t.popupClass),
                t.animation() && e.addClass(n.tooltipAnimationClass)
            }
        }
    }
    )).directive("tooltipPopup", (function() {
        return {
            restrict: "EA",
            replace: !0,
            scope: {
                content: "@",
                placement: "@",
                popupClass: "@",
                animation: "&",
                isOpen: "&"
            },
            templateUrl: "template/tooltip/tooltip-popup.html"
        }
    }
    )).directive("tooltip", ["$tooltip", function(t) {
        return t("tooltip", "tooltip", "mouseenter")
    }
    ]).directive("tooltipTemplatePopup", (function() {
        return {
            restrict: "EA",
            replace: !0,
            scope: {
                contentExp: "&",
                placement: "@",
                popupClass: "@",
                animation: "&",
                isOpen: "&",
                originScope: "&"
            },
            templateUrl: "template/tooltip/tooltip-template-popup.html"
        }
    }
    )).directive("tooltipTemplate", ["$tooltip", function(t) {
        return t("tooltipTemplate", "tooltip", "mouseenter", {
            useContentExp: !0
        })
    }
    ]).directive("tooltipHtmlPopup", (function() {
        return {
            restrict: "EA",
            replace: !0,
            scope: {
                contentExp: "&",
                placement: "@",
                popupClass: "@",
                animation: "&",
                isOpen: "&"
            },
            templateUrl: "template/tooltip/tooltip-html-popup.html"
        }
    }
    )).directive("tooltipHtml", ["$tooltip", function(t) {
        return t("tooltipHtml", "tooltip", "mouseenter", {
            useContentExp: !0
        })
    }
    ]).directive("tooltipHtmlUnsafePopup", (function() {
        return {
            restrict: "EA",
            replace: !0,
            scope: {
                content: "@",
                placement: "@",
                popupClass: "@",
                animation: "&",
                isOpen: "&"
            },
            templateUrl: "template/tooltip/tooltip-html-unsafe-popup.html"
        }
    }
    )).value("tooltipHtmlUnsafeSuppressDeprecated", !1).directive("tooltipHtmlUnsafe", ["$tooltip", "tooltipHtmlUnsafeSuppressDeprecated", "$log", function(t, e, n) {
        return e || n.warn("tooltip-html-unsafe is now deprecated. Use tooltip-html or tooltip-template instead."),
        t("tooltipHtmlUnsafe", "tooltip", "mouseenter")
    }
    ]),
    angular.module("ui.bootstrap.popover", ["ui.bootstrap.tooltip"]).directive("popoverTemplatePopup", (function() {
        return {
            restrict: "EA",
            replace: !0,
            scope: {
                title: "@",
                contentExp: "&",
                placement: "@",
                popupClass: "@",
                animation: "&",
                isOpen: "&",
                originScope: "&"
            },
            templateUrl: "template/popover/popover-template.html"
        }
    }
    )).directive("popoverTemplate", ["$tooltip", function(t) {
        return t("popoverTemplate", "popover", "click", {
            useContentExp: !0
        })
    }
    ]).directive("popoverHtmlPopup", (function() {
        return {
            restrict: "EA",
            replace: !0,
            scope: {
                contentExp: "&",
                title: "@",
                placement: "@",
                popupClass: "@",
                animation: "&",
                isOpen: "&"
            },
            templateUrl: "template/popover/popover-html.html"
        }
    }
    )).directive("popoverHtml", ["$tooltip", function(t) {
        return t("popoverHtml", "popover", "click", {
            useContentExp: !0
        })
    }
    ]).directive("popoverPopup", (function() {
        return {
            restrict: "EA",
            replace: !0,
            scope: {
                title: "@",
                content: "@",
                placement: "@",
                popupClass: "@",
                animation: "&",
                isOpen: "&"
            },
            templateUrl: "template/popover/popover.html"
        }
    }
    )).directive("popover", ["$tooltip", function(t) {
        return t("popover", "popover", "click")
    }
    ]),
    angular.module("ui.bootstrap.progressbar", []).constant("progressConfig", {
        animate: !0,
        max: 100
    }).value("$progressSuppressWarning", !1).controller("ProgressController", ["$scope", "$attrs", "progressConfig", function(t, e, n) {
        var i = this
          , r = angular.isDefined(e.animate) ? t.$parent.$eval(e.animate) : n.animate;
        this.bars = [],
        t.max = angular.isDefined(t.max) ? t.max : n.max,
        this.addBar = function(e, n) {
            r || n.css({
                transition: "none"
            }),
            this.bars.push(e),
            e.max = t.max,
            e.$watch("value", (function(t) {
                e.recalculatePercentage()
            }
            )),
            e.recalculatePercentage = function() {
                e.percent = +(100 * e.value / e.max).toFixed(2);
                var t = i.bars.reduce((function(t, e) {
                    return t + e.percent
                }
                ), 0);
                t > 100 && (e.percent -= t - 100)
            }
            ,
            e.$on("$destroy", (function() {
                n = null,
                i.removeBar(e)
            }
            ))
        }
        ,
        this.removeBar = function(t) {
            this.bars.splice(this.bars.indexOf(t), 1)
        }
        ,
        t.$watch("max", (function(e) {
            i.bars.forEach((function(e) {
                e.max = t.max,
                e.recalculatePercentage()
            }
            ))
        }
        ))
    }
    ]).directive("uibProgress", (function() {
        return {
            restrict: "EA",
            replace: !0,
            transclude: !0,
            controller: "ProgressController",
            require: "uibProgress",
            scope: {
                max: "=?"
            },
            templateUrl: "template/progressbar/progress.html"
        }
    }
    )).directive("progress", ["$log", "$progressSuppressWarning", function(t, e) {
        return {
            restrict: "EA",
            replace: !0,
            transclude: !0,
            controller: "ProgressController",
            require: "progress",
            scope: {
                max: "=?"
            },
            templateUrl: "template/progressbar/progress.html",
            link: function() {
                e && t.warn("progress is now deprecated. Use uib-progress instead")
            }
        }
    }
    ]).directive("uibBar", (function() {
        return {
            restrict: "EA",
            replace: !0,
            transclude: !0,
            require: "^uibProgress",
            scope: {
                value: "=",
                type: "@"
            },
            templateUrl: "template/progressbar/bar.html",
            link: function(t, e, n, i) {
                i.addBar(t, e)
            }
        }
    }
    )).directive("bar", ["$log", "$progressSuppressWarning", function(t, e) {
        return {
            restrict: "EA",
            replace: !0,
            transclude: !0,
            require: "^progress",
            scope: {
                value: "=",
                type: "@"
            },
            templateUrl: "template/progressbar/bar.html",
            link: function(n, i, r, o) {
                e && t.warn("bar is now deprecated. Use uib-bar instead"),
                o.addBar(n, i)
            }
        }
    }
    ]).directive("progressbar", (function() {
        return {
            restrict: "EA",
            replace: !0,
            transclude: !0,
            controller: "ProgressController",
            scope: {
                value: "=",
                max: "=?",
                type: "@"
            },
            templateUrl: "template/progressbar/progressbar.html",
            link: function(t, e, n, i) {
                i.addBar(t, angular.element(e.children()[0]))
            }
        }
    }
    )),
    angular.module("ui.bootstrap.rating", []).constant("ratingConfig", {
        max: 5,
        stateOn: null,
        stateOff: null,
        titles: ["one", "two", "three", "four", "five"]
    }).controller("RatingController", ["$scope", "$attrs", "ratingConfig", function(t, e, n) {
        var i = {
            $setViewValue: angular.noop
        };
        this.init = function(r) {
            (i = r).$render = this.render,
            i.$formatters.push((function(t) {
                return angular.isNumber(t) && t << 0 !== t && (t = Math.round(t)),
                t
            }
            )),
            this.stateOn = angular.isDefined(e.stateOn) ? t.$parent.$eval(e.stateOn) : n.stateOn,
            this.stateOff = angular.isDefined(e.stateOff) ? t.$parent.$eval(e.stateOff) : n.stateOff;
            var o = angular.isDefined(e.titles) ? t.$parent.$eval(e.titles) : n.titles;
            this.titles = angular.isArray(o) && o.length > 0 ? o : n.titles;
            var a = angular.isDefined(e.ratingStates) ? t.$parent.$eval(e.ratingStates) : new Array(angular.isDefined(e.max) ? t.$parent.$eval(e.max) : n.max);
            t.range = this.buildTemplateObjects(a)
        }
        ,
        this.buildTemplateObjects = function(t) {
            for (var e = 0, n = t.length; e < n; e++)
                t[e] = angular.extend({
                    index: e
                }, {
                    stateOn: this.stateOn,
                    stateOff: this.stateOff,
                    title: this.getTitle(e)
                }, t[e]);
            return t
        }
        ,
        this.getTitle = function(t) {
            return t >= this.titles.length ? t + 1 : this.titles[t]
        }
        ,
        t.rate = function(e) {
            !t.readonly && e >= 0 && e <= t.range.length && (i.$setViewValue(i.$viewValue === e ? 0 : e),
            i.$render())
        }
        ,
        t.enter = function(e) {
            t.readonly || (t.value = e),
            t.onHover({
                value: e
            })
        }
        ,
        t.reset = function() {
            t.value = i.$viewValue,
            t.onLeave()
        }
        ,
        t.onKeydown = function(e) {
            /(37|38|39|40)/.test(e.which) && (e.preventDefault(),
            e.stopPropagation(),
            t.rate(t.value + (38 === e.which || 39 === e.which ? 1 : -1)))
        }
        ,
        this.render = function() {
            t.value = i.$viewValue
        }
    }
    ]).directive("rating", (function() {
        return {
            restrict: "EA",
            require: ["rating", "ngModel"],
            scope: {
                readonly: "=?",
                onHover: "&",
                onLeave: "&"
            },
            controller: "RatingController",
            templateUrl: "template/rating/rating.html",
            replace: !0,
            link: function(t, e, n, i) {
                var r = i[0]
                  , o = i[1];
                r.init(o)
            }
        }
    }
    )),
    angular.module("ui.bootstrap.tabs", []).controller("TabsetController", ["$scope", function(t) {
        var e, n = this, i = n.tabs = t.tabs = [];
        n.select = function(t) {
            angular.forEach(i, (function(e) {
                e.active && e !== t && (e.active = !1,
                e.onDeselect(),
                t.selectCalled = !1)
            }
            )),
            t.active = !0,
            t.selectCalled || (t.onSelect(),
            t.selectCalled = !0)
        }
        ,
        n.addTab = function(t) {
            i.push(t),
            1 === i.length && !1 !== t.active ? t.active = !0 : t.active ? n.select(t) : t.active = !1
        }
        ,
        n.removeTab = function(t) {
            var r = i.indexOf(t);
            if (t.active && i.length > 1 && !e) {
                var o = r == i.length - 1 ? r - 1 : r + 1;
                n.select(i[o])
            }
            i.splice(r, 1)
        }
        ,
        t.$on("$destroy", (function() {
            e = !0
        }
        ))
    }
    ]).directive("tabset", (function() {
        return {
            restrict: "EA",
            transclude: !0,
            replace: !0,
            scope: {
                type: "@"
            },
            controller: "TabsetController",
            templateUrl: "template/tabs/tabset.html",
            link: function(t, e, n) {
                t.vertical = !!angular.isDefined(n.vertical) && t.$parent.$eval(n.vertical),
                t.justified = !!angular.isDefined(n.justified) && t.$parent.$eval(n.justified)
            }
        }
    }
    )).directive("tab", ["$parse", "$log", function(t, e) {
        return {
            require: "^tabset",
            restrict: "EA",
            replace: !0,
            templateUrl: "template/tabs/tab.html",
            transclude: !0,
            scope: {
                active: "=?",
                heading: "@",
                onSelect: "&select",
                onDeselect: "&deselect"
            },
            controller: function() {},
            link: function(n, i, r, o, a) {
                n.$watch("active", (function(t) {
                    t && o.select(n)
                }
                )),
                n.disabled = !1,
                r.disable && n.$parent.$watch(t(r.disable), (function(t) {
                    n.disabled = !!t
                }
                )),
                r.disabled && (e.warn('Use of "disabled" attribute has been deprecated, please use "disable"'),
                n.$parent.$watch(t(r.disabled), (function(t) {
                    n.disabled = !!t
                }
                ))),
                n.select = function() {
                    n.disabled || (n.active = !0)
                }
                ,
                o.addTab(n),
                n.$on("$destroy", (function() {
                    o.removeTab(n)
                }
                )),
                n.$transcludeFn = a
            }
        }
    }
    ]).directive("tabHeadingTransclude", (function() {
        return {
            restrict: "A",
            require: "^tab",
            link: function(t, e, n, i) {
                t.$watch("headingElement", (function(t) {
                    t && (e.html(""),
                    e.append(t))
                }
                ))
            }
        }
    }
    )).directive("tabContentTransclude", (function() {
        return {
            restrict: "A",
            require: "^tabset",
            link: function(t, e, n) {
                var i = t.$eval(n.tabContentTransclude);
                i.$transcludeFn(i.$parent, (function(t) {
                    angular.forEach(t, (function(t) {
                        !function(t) {
                            return t.tagName && (t.hasAttribute("tab-heading") || t.hasAttribute("data-tab-heading") || t.hasAttribute("x-tab-heading") || "tab-heading" === t.tagName.toLowerCase() || "data-tab-heading" === t.tagName.toLowerCase() || "x-tab-heading" === t.tagName.toLowerCase())
                        }(t) ? e.append(t) : i.headingElement = t
                    }
                    ))
                }
                ))
            }
        }
    }
    )),
    angular.module("ui.bootstrap.timepicker", []).constant("timepickerConfig", {
        hourStep: 1,
        minuteStep: 1,
        showMeridian: !0,
        meridians: null,
        readonlyInput: !1,
        mousewheel: !0,
        arrowkeys: !0,
        showSpinners: !0
    }).controller("TimepickerController", ["$scope", "$attrs", "$parse", "$log", "$locale", "timepickerConfig", function(t, e, n, i, r, o) {
        var a = new Date
          , s = {
            $setViewValue: angular.noop
        }
          , c = angular.isDefined(e.meridians) ? t.$parent.$eval(e.meridians) : o.meridians || r.DATETIME_FORMATS.AMPMS;
        this.init = function(n, i) {
            (s = n).$render = this.render,
            s.$formatters.unshift((function(t) {
                return t ? new Date(t) : null
            }
            ));
            var r = i.eq(0)
              , a = i.eq(1);
            (angular.isDefined(e.mousewheel) ? t.$parent.$eval(e.mousewheel) : o.mousewheel) && this.setupMousewheelEvents(r, a),
            (angular.isDefined(e.arrowkeys) ? t.$parent.$eval(e.arrowkeys) : o.arrowkeys) && this.setupArrowkeyEvents(r, a),
            t.readonlyInput = angular.isDefined(e.readonlyInput) ? t.$parent.$eval(e.readonlyInput) : o.readonlyInput,
            this.setupInputEvents(r, a)
        }
        ;
        var l = o.hourStep;
        e.hourStep && t.$parent.$watch(n(e.hourStep), (function(t) {
            l = parseInt(t, 10)
        }
        ));
        var u, d, p = o.minuteStep;
        function h() {
            var e = parseInt(t.hours, 10);
            if (t.showMeridian ? e > 0 && e < 13 : e >= 0 && e < 24)
                return t.showMeridian && (12 === e && (e = 0),
                t.meridian === c[1] && (e += 12)),
                e
        }
        function f() {
            var e = parseInt(t.minutes, 10);
            return e >= 0 && e < 60 ? e : void 0
        }
        function m(t) {
            return angular.isDefined(t) && t.toString().length < 2 ? "0" + t : t.toString()
        }
        function g(t) {
            v(),
            s.$setViewValue(new Date(a)),
            y(t)
        }
        function v() {
            s.$setValidity("time", !0),
            t.invalidHours = !1,
            t.invalidMinutes = !1
        }
        function y(e) {
            var n = a.getHours()
              , i = a.getMinutes();
            t.showMeridian && (n = 0 === n || 12 === n ? 12 : n % 12),
            t.hours = "h" === e ? n : m(n),
            "m" !== e && (t.minutes = m(i)),
            t.meridian = a.getHours() < 12 ? c[0] : c[1]
        }
        function b(t, e) {
            var n = new Date(t.getTime() + 6e4 * e)
              , i = new Date(t);
            return i.setHours(n.getHours(), n.getMinutes()),
            i
        }
        function w(t) {
            a = b(a, t),
            g()
        }
        e.minuteStep && t.$parent.$watch(n(e.minuteStep), (function(t) {
            p = parseInt(t, 10)
        }
        )),
        t.$parent.$watch(n(e.min), (function(t) {
            var e = new Date(t);
            u = isNaN(e) ? void 0 : e
        }
        )),
        t.$parent.$watch(n(e.max), (function(t) {
            var e = new Date(t);
            d = isNaN(e) ? void 0 : e
        }
        )),
        t.noIncrementHours = function() {
            var t = b(a, 60 * l);
            return t > d || t < a && t < u
        }
        ,
        t.noDecrementHours = function() {
            var t = b(a, 60 * -l);
            return t < u || t > a && t > d
        }
        ,
        t.noIncrementMinutes = function() {
            var t = b(a, p);
            return t > d || t < a && t < u
        }
        ,
        t.noDecrementMinutes = function() {
            var t = b(a, -p);
            return t < u || t > a && t > d
        }
        ,
        t.noToggleMeridian = function() {
            return a.getHours() < 13 ? b(a, 720) > d : b(a, -720) < u
        }
        ,
        t.showMeridian = o.showMeridian,
        e.showMeridian && t.$parent.$watch(n(e.showMeridian), (function(e) {
            if (t.showMeridian = !!e,
            s.$error.time) {
                var n = h()
                  , i = f();
                angular.isDefined(n) && angular.isDefined(i) && (a.setHours(n),
                g())
            } else
                y()
        }
        )),
        this.setupMousewheelEvents = function(e, n) {
            var i = function(t) {
                t.originalEvent && (t = t.originalEvent);
                var e = t.wheelDelta ? t.wheelDelta : -t.deltaY;
                return t.detail || e > 0
            };
            e.bind("mousewheel wheel", (function(e) {
                t.$apply(i(e) ? t.incrementHours() : t.decrementHours()),
                e.preventDefault()
            }
            )),
            n.bind("mousewheel wheel", (function(e) {
                t.$apply(i(e) ? t.incrementMinutes() : t.decrementMinutes()),
                e.preventDefault()
            }
            ))
        }
        ,
        this.setupArrowkeyEvents = function(e, n) {
            e.bind("keydown", (function(e) {
                38 === e.which ? (e.preventDefault(),
                t.incrementHours(),
                t.$apply()) : 40 === e.which && (e.preventDefault(),
                t.decrementHours(),
                t.$apply())
            }
            )),
            n.bind("keydown", (function(e) {
                38 === e.which ? (e.preventDefault(),
                t.incrementMinutes(),
                t.$apply()) : 40 === e.which && (e.preventDefault(),
                t.decrementMinutes(),
                t.$apply())
            }
            ))
        }
        ,
        this.setupInputEvents = function(e, n) {
            if (t.readonlyInput)
                return t.updateHours = angular.noop,
                void (t.updateMinutes = angular.noop);
            var i = function(e, n) {
                s.$setViewValue(null),
                s.$setValidity("time", !1),
                angular.isDefined(e) && (t.invalidHours = e),
                angular.isDefined(n) && (t.invalidMinutes = n)
            };
            t.updateHours = function() {
                var t = h()
                  , e = f();
                angular.isDefined(t) && angular.isDefined(e) ? (a.setHours(t),
                a < u || a > d ? i(!0) : g("h")) : i(!0)
            }
            ,
            e.bind("blur", (function(e) {
                !t.invalidHours && t.hours < 10 && t.$apply((function() {
                    t.hours = m(t.hours)
                }
                ))
            }
            )),
            t.updateMinutes = function() {
                var t = f()
                  , e = h();
                angular.isDefined(t) && angular.isDefined(e) ? (a.setMinutes(t),
                a < u || a > d ? i(void 0, !0) : g("m")) : i(void 0, !0)
            }
            ,
            n.bind("blur", (function(e) {
                !t.invalidMinutes && t.minutes < 10 && t.$apply((function() {
                    t.minutes = m(t.minutes)
                }
                ))
            }
            ))
        }
        ,
        this.render = function() {
            var e = s.$viewValue;
            isNaN(e) ? (s.$setValidity("time", !1),
            i.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.')) : (e && (a = e),
            a < u || a > d ? (s.$setValidity("time", !1),
            t.invalidHours = !0,
            t.invalidMinutes = !0) : v(),
            y())
        }
        ,
        t.showSpinners = angular.isDefined(e.showSpinners) ? t.$parent.$eval(e.showSpinners) : o.showSpinners,
        t.incrementHours = function() {
            t.noIncrementHours() || w(60 * l)
        }
        ,
        t.decrementHours = function() {
            t.noDecrementHours() || w(60 * -l)
        }
        ,
        t.incrementMinutes = function() {
            t.noIncrementMinutes() || w(p)
        }
        ,
        t.decrementMinutes = function() {
            t.noDecrementMinutes() || w(-p)
        }
        ,
        t.toggleMeridian = function() {
            t.noToggleMeridian() || w(720 * (a.getHours() < 12 ? 1 : -1))
        }
    }
    ]).directive("timepicker", (function() {
        return {
            restrict: "EA",
            require: ["timepicker", "?^ngModel"],
            controller: "TimepickerController",
            controllerAs: "timepicker",
            replace: !0,
            scope: {},
            templateUrl: function(t, e) {
                return e.templateUrl || "template/timepicker/timepicker.html"
            },
            link: function(t, e, n, i) {
                var r = i[0]
                  , o = i[1];
                o && r.init(o, e.find("input"))
            }
        }
    }
    )),
    angular.module("ui.bootstrap.transition", []).value("$transitionSuppressDeprecated", !1).factory("$transition", ["$q", "$timeout", "$rootScope", "$log", "$transitionSuppressDeprecated", function(t, e, n, i, r) {
        r || i.warn("$transition is now deprecated. Use $animate from ngAnimate instead.");
        var o = function(i, r, a) {
            a = a || {};
            var s = t.defer()
              , c = o[a.animation ? "animationEndEventName" : "transitionEndEventName"]
              , l = function(t) {
                n.$apply((function() {
                    i.unbind(c, l),
                    s.resolve(i)
                }
                ))
            };
            return c && i.bind(c, l),
            e((function() {
                angular.isString(r) ? i.addClass(r) : angular.isFunction(r) ? r(i) : angular.isObject(r) && i.css(r),
                c || s.resolve(i)
            }
            )),
            s.promise.cancel = function() {
                c && i.unbind(c, l),
                s.reject("Transition cancelled")
            }
            ,
            s.promise
        }
          , a = document.createElement("trans");
        function s(t) {
            for (var e in t)
                if (void 0 !== a.style[e])
                    return t[e]
        }
        return o.transitionEndEventName = s({
            WebkitTransition: "webkitTransitionEnd",
            MozTransition: "transitionend",
            OTransition: "oTransitionEnd",
            transition: "transitionend"
        }),
        o.animationEndEventName = s({
            WebkitTransition: "webkitAnimationEnd",
            MozTransition: "animationend",
            OTransition: "oAnimationEnd",
            transition: "animationend"
        }),
        o
    }
    ]),
    angular.module("ui.bootstrap.typeahead", ["ui.bootstrap.position"]).factory("typeaheadParser", ["$parse", function(t) {
        var e = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w\d]*))\s+in\s+([\s\S]+?)$/;
        return {
            parse: function(n) {
                var i = n.match(e);
                if (!i)
                    throw new Error('Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_" but got "' + n + '".');
                return {
                    itemName: i[3],
                    source: t(i[4]),
                    viewMapper: t(i[2] || i[1]),
                    modelMapper: t(i[1])
                }
            }
        }
    }
    ]).directive("typeahead", ["$compile", "$parse", "$q", "$timeout", "$document", "$window", "$rootScope", "$position", "typeaheadParser", function(t, e, n, i, r, o, a, s, c) {
        var l = [9, 13, 27, 38, 40];
        return {
            require: ["ngModel", "^?ngModelOptions"],
            link: function(u, d, p, h) {
                var f = h[0]
                  , m = h[1]
                  , g = u.$eval(p.typeaheadMinLength);
                g || 0 === g || (g = 1);
                var v, y, b = u.$eval(p.typeaheadWaitMs) || 0, w = !1 !== u.$eval(p.typeaheadEditable), S = e(p.typeaheadLoading).assign || angular.noop, x = e(p.typeaheadOnSelect), M = !!angular.isDefined(p.typeaheadSelectOnBlur) && u.$eval(p.typeaheadSelectOnBlur), E = e(p.typeaheadNoResults).assign || angular.noop, C = p.typeaheadInputFormatter ? e(p.typeaheadInputFormatter) : void 0, A = !!p.typeaheadAppendToBody && u.$eval(p.typeaheadAppendToBody), T = !1 !== u.$eval(p.typeaheadFocusFirst), O = !!p.typeaheadSelectOnExact && u.$eval(p.typeaheadSelectOnExact), _ = e(p.ngModel), P = e(p.ngModel + "($$$p)"), I = c.parse(p.typeahead), k = u.$new(), D = u.$on("$destroy", (function() {
                    k.$destroy()
                }
                ));
                k.$on("$destroy", D);
                var R = "typeahead-" + k.$id + "-" + Math.floor(1e4 * Math.random());
                d.attr({
                    "aria-autocomplete": "list",
                    "aria-expanded": !1,
                    "aria-owns": R
                });
                var L = angular.element("<div typeahead-popup></div>");
                L.attr({
                    id: R,
                    matches: "matches",
                    active: "activeIdx",
                    select: "select(activeIdx)",
                    "move-in-progress": "moveInProgress",
                    query: "query",
                    position: "position"
                }),
                angular.isDefined(p.typeaheadTemplateUrl) && L.attr("template-url", p.typeaheadTemplateUrl),
                angular.isDefined(p.typeaheadPopupTemplateUrl) && L.attr("popup-template-url", p.typeaheadPopupTemplateUrl);
                var N = function() {
                    k.matches = [],
                    k.activeIdx = -1,
                    d.attr("aria-expanded", !1)
                }
                  , j = function(t) {
                    return R + "-option-" + t
                };
                k.$watch("activeIdx", (function(t) {
                    t < 0 ? d.removeAttr("aria-activedescendant") : d.attr("aria-activedescendant", j(t))
                }
                ));
                var V, F, U = function(t) {
                    var e = {
                        $viewValue: t
                    };
                    S(u, !0),
                    E(u, !1),
                    n.when(I.source(u, e)).then((function(n) {
                        var i = t === f.$viewValue;
                        if (i && v)
                            if (n && n.length > 0) {
                                k.activeIdx = T ? 0 : -1,
                                E(u, !1),
                                k.matches.length = 0;
                                for (var r = 0; r < n.length; r++)
                                    e[I.itemName] = n[r],
                                    k.matches.push({
                                        id: j(r),
                                        label: I.viewMapper(k, e),
                                        model: n[r]
                                    });
                                k.query = t,
                                z(),
                                d.attr("aria-expanded", !0),
                                O && 1 === k.matches.length && function(t, e) {
                                    return !!(k.matches.length > e && t) && t.toUpperCase() === k.matches[e].label.toUpperCase()
                                }(t, 0) && k.select(0)
                            } else
                                N(),
                                E(u, !0);
                        i && S(u, !1)
                    }
                    ), (function() {
                        N(),
                        S(u, !1),
                        E(u, !0)
                    }
                    ))
                };
                function B() {
                    k.moveInProgress || (k.moveInProgress = !0,
                    k.$digest()),
                    V && i.cancel(V),
                    V = i((function() {
                        k.matches.length && z(),
                        k.moveInProgress = !1,
                        k.$digest()
                    }
                    ), 200)
                }
                function z() {
                    k.position = A ? s.offset(d) : s.position(d),
                    k.position.top += d.prop("offsetHeight")
                }
                A && (angular.element(o).bind("resize", B),
                r.find("body").bind("scroll", B)),
                k.moveInProgress = !1,
                N(),
                k.query = void 0;
                var G = function() {
                    F && i.cancel(F)
                };
                f.$parsers.unshift((function(t) {
                    return v = !0,
                    0 === g || t && t.length >= g ? b > 0 ? (G(),
                    function(t) {
                        F = i((function() {
                            U(t)
                        }
                        ), b)
                    }(t)) : U(t) : (S(u, !1),
                    G(),
                    N()),
                    w ? t : t ? void f.$setValidity("editable", !1) : (f.$setValidity("editable", !0),
                    null)
                }
                )),
                f.$formatters.push((function(t) {
                    var e, n = {};
                    return w || f.$setValidity("editable", !0),
                    C ? (n.$model = t,
                    C(u, n)) : (n[I.itemName] = t,
                    e = I.viewMapper(u, n),
                    n[I.itemName] = void 0,
                    e !== I.viewMapper(u, n) ? e : t)
                }
                )),
                k.select = function(t) {
                    var e, n, r = {};
                    y = !0,
                    r[I.itemName] = n = k.matches[t].model,
                    e = I.modelMapper(u, r),
                    function(t, e) {
                        angular.isFunction(_(u)) && m && m.$options && m.$options.getterSetter ? P(t, {
                            $$$p: e
                        }) : _.assign(t, e)
                    }(u, e),
                    f.$setValidity("editable", !0),
                    f.$setValidity("parse", !0),
                    x(u, {
                        $item: n,
                        $model: e,
                        $label: I.viewMapper(u, r)
                    }),
                    N(),
                    !1 !== k.$eval(p.typeaheadFocusOnSelect) && i((function() {
                        d[0].focus()
                    }
                    ), 0, !1)
                }
                ,
                d.bind("keydown", (function(t) {
                    if (0 !== k.matches.length && -1 !== l.indexOf(t.which)) {
                        if (-1 === k.activeIdx && (9 === t.which || 13 === t.which))
                            return N(),
                            void k.$digest();
                        t.preventDefault(),
                        40 === t.which ? (k.activeIdx = (k.activeIdx + 1) % k.matches.length,
                        k.$digest()) : 38 === t.which ? (k.activeIdx = (k.activeIdx > 0 ? k.activeIdx : k.matches.length) - 1,
                        k.$digest()) : 13 === t.which || 9 === t.which ? k.$apply((function() {
                            k.select(k.activeIdx)
                        }
                        )) : 27 === t.which && (t.stopPropagation(),
                        N(),
                        k.$digest())
                    }
                }
                )),
                d.bind("blur", (function() {
                    M && k.matches.length && -1 !== k.activeIdx && !y && (y = !0,
                    k.$apply((function() {
                        k.select(k.activeIdx)
                    }
                    ))),
                    v = !1,
                    y = !1
                }
                ));
                var H = function(t) {
                    d[0] !== t.target && 3 !== t.which && 0 !== k.matches.length && (N(),
                    a.$$phase || k.$digest())
                };
                r.bind("click", H),
                u.$on("$destroy", (function() {
                    r.unbind("click", H),
                    A && W.remove(),
                    L.remove()
                }
                ));
                var W = t(L)(k);
                A ? r.find("body").append(W) : d.after(W)
            }
        }
    }
    ]).directive("typeaheadPopup", (function() {
        return {
            restrict: "EA",
            scope: {
                matches: "=",
                query: "=",
                active: "=",
                position: "&",
                moveInProgress: "=",
                select: "&"
            },
            replace: !0,
            templateUrl: function(t, e) {
                return e.popupTemplateUrl || "template/typeahead/typeahead-popup.html"
            },
            link: function(t, e, n) {
                t.templateUrl = n.templateUrl,
                t.isOpen = function() {
                    return t.matches.length > 0
                }
                ,
                t.isActive = function(e) {
                    return t.active == e
                }
                ,
                t.selectActive = function(e) {
                    t.active = e
                }
                ,
                t.selectMatch = function(e) {
                    t.select({
                        activeIdx: e
                    })
                }
            }
        }
    }
    )).directive("typeaheadMatch", ["$templateRequest", "$compile", "$parse", function(t, e, n) {
        return {
            restrict: "EA",
            scope: {
                index: "=",
                match: "=",
                query: "="
            },
            link: function(i, r, o) {
                var a = n(o.templateUrl)(i.$parent) || "template/typeahead/typeahead-match.html";
                t(a).then((function(t) {
                    e(t.trim())(i, (function(t) {
                        r.replaceWith(t)
                    }
                    ))
                }
                ))
            }
        }
    }
    ]).filter("typeaheadHighlight", ["$sce", "$injector", "$log", function(t, e, n) {
        var i;
        return i = e.has("$sanitize"),
        function(e, r) {
            return !i && function(t) {
                return /<.*>/g.test(t)
            }(e) && n.warn("Unsafe use of typeahead please use ngSanitize"),
            e = r ? ("" + e).replace(new RegExp(r.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"),"gi"), "<strong>$&</strong>") : e,
            i || (e = t.trustAsHtml(e)),
            e
        }
    }
    ]),
    angular.module("template/accordion/accordion-group.html", []).run(["$templateCache", function(t) {
        t.put("template/accordion/accordion-group.html", '<div class="panel {{panelClass || \'panel-default\'}}">\n  <div class="panel-heading" ng-keypress="toggleOpen($event)">\n    <h4 class="panel-title">\n      <a href tabindex="0" class="accordion-toggle" ng-click="toggleOpen()" accordion-transclude="heading"><span ng-class="{\'text-muted\': isDisabled}">{{heading}}</span></a>\n    </h4>\n  </div>\n  <div class="panel-collapse collapse" collapse="!isOpen">\n\t  <div class="panel-body" ng-transclude></div>\n  </div>\n</div>\n')
    }
    ]),
    angular.module("template/accordion/accordion.html", []).run(["$templateCache", function(t) {
        t.put("template/accordion/accordion.html", '<div class="panel-group" ng-transclude></div>')
    }
    ]),
    angular.module("template/alert/alert.html", []).run(["$templateCache", function(t) {
        t.put("template/alert/alert.html", '<div class="alert" ng-class="[\'alert-\' + (type || \'warning\'), closeable ? \'alert-dismissible\' : null]" role="alert">\n    <button ng-show="closeable" type="button" class="close" ng-click="close($event)">\n        <span aria-hidden="true">&times;</span>\n        <span class="sr-only">Close</span>\n    </button>\n    <div ng-transclude></div>\n</div>\n')
    }
    ]),
    angular.module("template/carousel/carousel.html", []).run(["$templateCache", function(t) {
        t.put("template/carousel/carousel.html", '<div ng-mouseenter="pause()" ng-mouseleave="play()" class="carousel" ng-swipe-right="prev()" ng-swipe-left="next()">\n    <ol class="carousel-indicators" ng-show="slides.length > 1">\n        <li ng-repeat="slide in slides | orderBy:indexOfSlide track by $index" ng-class="{active: isActive(slide)}" ng-click="select(slide)"></li>\n    </ol>\n    <div class="carousel-inner" ng-transclude></div>\n    <a class="left carousel-control" ng-click="prev()" ng-show="slides.length > 1"><span class="glyphicon glyphicon-chevron-left"></span></a>\n    <a class="right carousel-control" ng-click="next()" ng-show="slides.length > 1"><span class="glyphicon glyphicon-chevron-right"></span></a>\n</div>\n')
    }
    ]),
    angular.module("template/carousel/slide.html", []).run(["$templateCache", function(t) {
        t.put("template/carousel/slide.html", '<div ng-class="{\n    \'active\': active\n  }" class="item text-center" ng-transclude></div>\n')
    }
    ]),
    angular.module("template/datepicker/datepicker.html", []).run(["$templateCache", function(t) {
        t.put("template/datepicker/datepicker.html", '<div ng-switch="datepickerMode" role="application" ng-keydown="keydown($event)">\n  <daypicker ng-switch-when="day" tabindex="0"></daypicker>\n  <monthpicker ng-switch-when="month" tabindex="0"></monthpicker>\n  <yearpicker ng-switch-when="year" tabindex="0"></yearpicker>\n</div>')
    }
    ]),
    angular.module("template/datepicker/day.html", []).run(["$templateCache", function(t) {
        t.put("template/datepicker/day.html", '<table role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n  <thead>\n    <tr>\n      <th><button type="button" class="btn btn-default btn-sm pull-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n      <th colspan="{{::5 + showWeeks}}"><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1" style="width:100%;"><strong>{{title}}</strong></button></th>\n      <th><button type="button" class="btn btn-default btn-sm pull-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n    </tr>\n    <tr>\n      <th ng-if="showWeeks" class="text-center"></th>\n      <th ng-repeat="label in ::labels track by $index" class="text-center"><small aria-label="{{::label.full}}">{{::label.abbr}}</small></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr ng-repeat="row in rows track by $index">\n      <td ng-if="showWeeks" class="text-center h6"><em>{{ weekNumbers[$index] }}</em></td>\n      <td ng-repeat="dt in row track by dt.date" class="text-center" role="gridcell" id="{{::dt.uid}}" ng-class="::dt.customClass">\n        <button type="button" style="min-width:100%;" class="btn btn-default btn-sm" ng-class="{\'btn-info\': dt.selected, active: isActive(dt)}" ng-click="select(dt.date)" ng-disabled="dt.disabled" tabindex="-1"><span ng-class="::{\'text-muted\': dt.secondary, \'text-info\': dt.current}">{{::dt.label}}</span></button>\n      </td>\n    </tr>\n  </tbody>\n</table>\n')
    }
    ]),
    angular.module("template/datepicker/month.html", []).run(["$templateCache", function(t) {
        t.put("template/datepicker/month.html", '<table role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n  <thead>\n    <tr>\n      <th><button type="button" class="btn btn-default btn-sm pull-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n      <th><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1" style="width:100%;"><strong>{{title}}</strong></button></th>\n      <th><button type="button" class="btn btn-default btn-sm pull-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr ng-repeat="row in rows track by $index">\n      <td ng-repeat="dt in row track by dt.date" class="text-center" role="gridcell" id="{{::dt.uid}}" ng-class="::dt.customClass">\n        <button type="button" style="min-width:100%;" class="btn btn-default" ng-class="{\'btn-info\': dt.selected, active: isActive(dt)}" ng-click="select(dt.date)" ng-disabled="dt.disabled" tabindex="-1"><span ng-class="::{\'text-info\': dt.current}">{{::dt.label}}</span></button>\n      </td>\n    </tr>\n  </tbody>\n</table>\n')
    }
    ]),
    angular.module("template/datepicker/popup.html", []).run(["$templateCache", function(t) {
        t.put("template/datepicker/popup.html", '<ul class="dropdown-menu" ng-if="isOpen" style="display: block" ng-style="{top: position.top+\'px\', left: position.left+\'px\'}" ng-keydown="keydown($event)" ng-click="$event.stopPropagation()">\n\t<li ng-transclude></li>\n\t<li ng-if="showButtonBar" style="padding:10px 9px 2px">\n\t\t<span class="btn-group pull-left">\n\t\t\t<button type="button" class="btn btn-sm btn-info" ng-click="select(\'today\')" ng-disabled="isDisabled(\'today\')">{{ getText(\'current\') }}</button>\n\t\t\t<button type="button" class="btn btn-sm btn-danger" ng-click="select(null)">{{ getText(\'clear\') }}</button>\n\t\t</span>\n\t\t<button type="button" class="btn btn-sm btn-success pull-right" ng-click="close()">{{ getText(\'close\') }}</button>\n\t</li>\n</ul>\n')
    }
    ]),
    angular.module("template/datepicker/year.html", []).run(["$templateCache", function(t) {
        t.put("template/datepicker/year.html", '<table role="grid" aria-labelledby="{{::uniqueId}}-title" aria-activedescendant="{{activeDateId}}">\n  <thead>\n    <tr>\n      <th><button type="button" class="btn btn-default btn-sm pull-left" ng-click="move(-1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-left"></i></button></th>\n      <th colspan="3"><button id="{{::uniqueId}}-title" role="heading" aria-live="assertive" aria-atomic="true" type="button" class="btn btn-default btn-sm" ng-click="toggleMode()" ng-disabled="datepickerMode === maxMode" tabindex="-1" style="width:100%;"><strong>{{title}}</strong></button></th>\n      <th><button type="button" class="btn btn-default btn-sm pull-right" ng-click="move(1)" tabindex="-1"><i class="glyphicon glyphicon-chevron-right"></i></button></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr ng-repeat="row in rows track by $index">\n      <td ng-repeat="dt in row track by dt.date" class="text-center" role="gridcell" id="{{::dt.uid}}">\n        <button type="button" style="min-width:100%;" class="btn btn-default" ng-class="{\'btn-info\': dt.selected, active: isActive(dt)}" ng-click="select(dt.date)" ng-disabled="dt.disabled" tabindex="-1"><span ng-class="::{\'text-info\': dt.current}">{{::dt.label}}</span></button>\n      </td>\n    </tr>\n  </tbody>\n</table>\n')
    }
    ]),
    angular.module("template/modal/backdrop.html", []).run(["$templateCache", function(t) {
        t.put("template/modal/backdrop.html", '<div class="modal-backdrop"\n     modal-animation-class="fade"\n     modal-in-class="in"\n     ng-style="{\'z-index\': 1040 + (index && 1 || 0) + index*10}"\n></div>\n')
    }
    ]),
    angular.module("template/modal/window.html", []).run(["$templateCache", function(t) {
        t.put("template/modal/window.html", '<div modal-render="{{$isRendered}}" tabindex="-1" role="dialog" class="modal"\n    modal-animation-class="fade"\n    modal-in-class="in"\n\tng-style="{\'z-index\': 1050 + index*10, display: \'block\'}" ng-click="close($event)">\n    <div class="modal-dialog" ng-class="size ? \'modal-\' + size : \'\'"><div class="modal-content" modal-transclude></div></div>\n</div>\n')
    }
    ]),
    angular.module("template/pagination/pager.html", []).run(["$templateCache", function(t) {
        t.put("template/pagination/pager.html", '<ul class="pager">\n  <li ng-class="{disabled: noPrevious()||ngDisabled, previous: align}"><a href ng-click="selectPage(page - 1, $event)">{{::getText(\'previous\')}}</a></li>\n  <li ng-class="{disabled: noNext()||ngDisabled, next: align}"><a href ng-click="selectPage(page + 1, $event)">{{::getText(\'next\')}}</a></li>\n</ul>\n')
    }
    ]),
    angular.module("template/pagination/pagination.html", []).run(["$templateCache", function(t) {
        t.put("template/pagination/pagination.html", '<ul class="pagination">\n  <li ng-if="::boundaryLinks" ng-class="{disabled: noPrevious()||ngDisabled}" class="pagination-first"><a href ng-click="selectPage(1, $event)">{{::getText(\'first\')}}</a></li>\n  <li ng-if="::directionLinks" ng-class="{disabled: noPrevious()||ngDisabled}" class="pagination-prev"><a href ng-click="selectPage(page - 1, $event)">{{::getText(\'previous\')}}</a></li>\n  <li ng-repeat="page in pages track by $index" ng-class="{active: page.active,disabled: ngDisabled&&!page.active}" class="pagination-page"><a href ng-click="selectPage(page.number, $event)">{{page.text}}</a></li>\n  <li ng-if="::directionLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-next"><a href ng-click="selectPage(page + 1, $event)">{{::getText(\'next\')}}</a></li>\n  <li ng-if="::boundaryLinks" ng-class="{disabled: noNext()||ngDisabled}" class="pagination-last"><a href ng-click="selectPage(totalPages, $event)">{{::getText(\'last\')}}</a></li>\n</ul>\n')
    }
    ]),
    angular.module("template/tooltip/tooltip-html-popup.html", []).run(["$templateCache", function(t) {
        t.put("template/tooltip/tooltip-html-popup.html", '<div class="tooltip"\n  tooltip-animation-class="fade"\n  tooltip-classes\n  ng-class="{ in: isOpen() }">\n  <div class="tooltip-arrow"></div>\n  <div class="tooltip-inner" ng-bind-html="contentExp()"></div>\n</div>\n')
    }
    ]),
    angular.module("template/tooltip/tooltip-html-unsafe-popup.html", []).run(["$templateCache", function(t) {
        t.put("template/tooltip/tooltip-html-unsafe-popup.html", '<div class="tooltip"\n  tooltip-animation-class="fade"\n  tooltip-classes\n  ng-class="{ in: isOpen() }">\n  <div class="tooltip-arrow"></div>\n  <div class="tooltip-inner" bind-html-unsafe="content"></div>\n</div>\n')
    }
    ]),
    angular.module("template/tooltip/tooltip-popup.html", []).run(["$templateCache", function(t) {
        t.put("template/tooltip/tooltip-popup.html", '<div class="tooltip"\n  tooltip-animation-class="fade"\n  tooltip-classes\n  ng-class="{ in: isOpen() }">\n  <div class="tooltip-arrow"></div>\n  <div class="tooltip-inner" ng-bind="content"></div>\n</div>\n')
    }
    ]),
    angular.module("template/tooltip/tooltip-template-popup.html", []).run(["$templateCache", function(t) {
        t.put("template/tooltip/tooltip-template-popup.html", '<div class="tooltip"\n  tooltip-animation-class="fade"\n  tooltip-classes\n  ng-class="{ in: isOpen() }">\n  <div class="tooltip-arrow"></div>\n  <div class="tooltip-inner"\n    tooltip-template-transclude="contentExp()"\n    tooltip-template-transclude-scope="originScope()"></div>\n</div>\n')
    }
    ]),
    angular.module("template/popover/popover-html.html", []).run(["$templateCache", function(t) {
        t.put("template/popover/popover-html.html", '<div class="popover"\n  tooltip-animation-class="fade"\n  tooltip-classes\n  ng-class="{ in: isOpen() }">\n  <div class="arrow"></div>\n\n  <div class="popover-inner">\n      <h3 class="popover-title" ng-bind="title" ng-if="title"></h3>\n      <div class="popover-content" ng-bind-html="contentExp()"></div>\n  </div>\n</div>\n')
    }
    ]),
    angular.module("template/popover/popover-template.html", []).run(["$templateCache", function(t) {
        t.put("template/popover/popover-template.html", '<div class="popover"\n  tooltip-animation-class="fade"\n  tooltip-classes\n  ng-class="{ in: isOpen() }">\n  <div class="arrow"></div>\n\n  <div class="popover-inner">\n      <h3 class="popover-title" ng-bind="title" ng-if="title"></h3>\n      <div class="popover-content"\n        tooltip-template-transclude="contentExp()"\n        tooltip-template-transclude-scope="originScope()"></div>\n  </div>\n</div>\n')
    }
    ]),
    angular.module("template/popover/popover.html", []).run(["$templateCache", function(t) {
        t.put("template/popover/popover.html", '<div class="popover"\n  tooltip-animation-class="fade"\n  tooltip-classes\n  ng-class="{ in: isOpen() }">\n  <div class="arrow"></div>\n\n  <div class="popover-inner">\n      <h3 class="popover-title" ng-bind="title" ng-if="title"></h3>\n      <div class="popover-content" ng-bind="content"></div>\n  </div>\n</div>\n')
    }
    ]),
    angular.module("template/progressbar/bar.html", []).run(["$templateCache", function(t) {
        t.put("template/progressbar/bar.html", '<div class="progress-bar" ng-class="type && \'progress-bar-\' + type" role="progressbar" aria-valuenow="{{value}}" aria-valuemin="0" aria-valuemax="{{max}}" ng-style="{width: (percent < 100 ? percent : 100) + \'%\'}" aria-valuetext="{{percent | number:0}}%" style="min-width: 0;" ng-transclude></div>\n')
    }
    ]),
    angular.module("template/progressbar/progress.html", []).run(["$templateCache", function(t) {
        t.put("template/progressbar/progress.html", '<div class="progress" ng-transclude></div>')
    }
    ]),
    angular.module("template/progressbar/progressbar.html", []).run(["$templateCache", function(t) {
        t.put("template/progressbar/progressbar.html", '<div class="progress">\n  <div class="progress-bar" ng-class="type && \'progress-bar-\' + type" role="progressbar" aria-valuenow="{{value}}" aria-valuemin="0" aria-valuemax="{{max}}" ng-style="{width: (percent < 100 ? percent : 100) + \'%\'}" aria-valuetext="{{percent | number:0}}%" style="min-width: 0;" ng-transclude></div>\n</div>\n')
    }
    ]),
    angular.module("template/rating/rating.html", []).run(["$templateCache", function(t) {
        t.put("template/rating/rating.html", '<span ng-mouseleave="reset()" ng-keydown="onKeydown($event)" tabindex="0" role="slider" aria-valuemin="0" aria-valuemax="{{range.length}}" aria-valuenow="{{value}}">\n    <span ng-repeat-start="r in range track by $index" class="sr-only">({{ $index < value ? \'*\' : \' \' }})</span>\n    <i ng-repeat-end ng-mouseenter="enter($index + 1)" ng-click="rate($index + 1)" class="glyphicon" ng-class="$index < value && (r.stateOn || \'glyphicon-star\') || (r.stateOff || \'glyphicon-star-empty\')" ng-attr-title="{{r.title}}" ></i>\n</span>\n')
    }
    ]),
    angular.module("template/tabs/tab.html", []).run(["$templateCache", function(t) {
        t.put("template/tabs/tab.html", '<li ng-class="{active: active, disabled: disabled}">\n  <a href ng-click="select()" tab-heading-transclude>{{heading}}</a>\n</li>\n')
    }
    ]),
    angular.module("template/tabs/tabset.html", []).run(["$templateCache", function(t) {
        t.put("template/tabs/tabset.html", '<div>\n  <ul class="nav nav-{{type || \'tabs\'}}" ng-class="{\'nav-stacked\': vertical, \'nav-justified\': justified}" ng-transclude></ul>\n  <div class="tab-content">\n    <div class="tab-pane" \n         ng-repeat="tab in tabs" \n         ng-class="{active: tab.active}"\n         tab-content-transclude="tab">\n    </div>\n  </div>\n</div>\n')
    }
    ]),
    angular.module("template/timepicker/timepicker.html", []).run(["$templateCache", function(t) {
        t.put("template/timepicker/timepicker.html", '<table>\n  <tbody>\n    <tr class="text-center" ng-show="::showSpinners">\n      <td><a ng-click="incrementHours()" ng-class="{disabled: noIncrementHours()}" class="btn btn-link"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n      <td>&nbsp;</td>\n      <td><a ng-click="incrementMinutes()" ng-class="{disabled: noIncrementMinutes()}" class="btn btn-link"><span class="glyphicon glyphicon-chevron-up"></span></a></td>\n      <td ng-show="showMeridian"></td>\n    </tr>\n    <tr>\n      <td class="form-group" ng-class="{\'has-error\': invalidHours}">\n        <input style="width:50px;" type="text" ng-model="hours" ng-change="updateHours()" class="form-control text-center" ng-readonly="::readonlyInput" maxlength="2">\n      </td>\n      <td>:</td>\n      <td class="form-group" ng-class="{\'has-error\': invalidMinutes}">\n        <input style="width:50px;" type="text" ng-model="minutes" ng-change="updateMinutes()" class="form-control text-center" ng-readonly="::readonlyInput" maxlength="2">\n      </td>\n      <td ng-show="showMeridian"><button type="button" ng-class="{disabled: noToggleMeridian()}" class="btn btn-default text-center" ng-click="toggleMeridian()">{{meridian}}</button></td>\n    </tr>\n    <tr class="text-center" ng-show="::showSpinners">\n      <td><a ng-click="decrementHours()" ng-class="{disabled: noDecrementHours()}" class="btn btn-link"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n      <td>&nbsp;</td>\n      <td><a ng-click="decrementMinutes()" ng-class="{disabled: noDecrementMinutes()}" class="btn btn-link"><span class="glyphicon glyphicon-chevron-down"></span></a></td>\n      <td ng-show="showMeridian"></td>\n    </tr>\n  </tbody>\n</table>\n')
    }
    ]),
    angular.module("template/typeahead/typeahead-match.html", []).run(["$templateCache", function(t) {
        t.put("template/typeahead/typeahead-match.html", '<a href tabindex="-1" ng-bind-html="match.label | typeaheadHighlight:query"></a>\n')
    }
    ]),
    angular.module("template/typeahead/typeahead-popup.html", []).run(["$templateCache", function(t) {
        t.put("template/typeahead/typeahead-popup.html", '<ul class="dropdown-menu" ng-show="isOpen() && !moveInProgress" ng-style="{top: position().top+\'px\', left: position().left+\'px\'}" style="display: block;" role="listbox" aria-hidden="{{!isOpen()}}">\n    <li ng-repeat="match in matches track by $index" ng-class="{active: isActive($index) }" ng-mouseenter="selectActive($index)" ng-click="selectMatch($index)" role="option" id="{{::match.id}}">\n        <div typeahead-match index="$index" match="match" query="query" template-url="templateUrl"></div>\n    </li>\n</ul>\n')
    }
    ]),
    !angular.$$csp() && angular.element(document).find("head").prepend('<style type="text/css">.ng-animate.item:not(.left):not(.right){-webkit-transition:0s ease-in-out left;transition:0s ease-in-out left}</style>')
}
, function(t, e, n) {
    n(933),
    t.exports = "gettext"
}
, function(t, e) {
    angular.module("gettext", []),
    angular.module("gettext").constant("gettext", (function(t) {
        return t
    }
    )),
    angular.module("gettext").factory("gettextCatalog", ["gettextPlurals", "gettextFallbackLanguage", "$http", "$cacheFactory", "$interpolate", "$rootScope", function(t, e, n, i, r, o) {
        var a, s = '<span id="test" title="test" class="tested">test</span>', c = angular.element("<span>" + s + "</span>").html() !== s, l = function(t) {
            return a.debug && a.currentLanguage !== a.baseLanguage ? a.debugPrefix + t : t
        }, u = function(t) {
            return a.showTranslatedMarkers ? a.translatedMarkerPrefix + t + a.translatedMarkerSuffix : t
        };
        function d() {
            o.$broadcast("gettextLanguageChanged")
        }
        return a = {
            debug: !1,
            debugPrefix: "[MISSING]: ",
            showTranslatedMarkers: !1,
            translatedMarkerPrefix: "[",
            translatedMarkerSuffix: "]",
            strings: {},
            baseLanguage: "en",
            currentLanguage: "en",
            cache: i("strings"),
            setCurrentLanguage: function(t) {
                this.currentLanguage = t,
                d()
            },
            getCurrentLanguage: function() {
                return this.currentLanguage
            },
            setStrings: function(e, n) {
                this.strings[e] || (this.strings[e] = {});
                var i = t(e, 1);
                for (var r in n) {
                    var o = n[r];
                    if (c && (r = angular.element("<span>" + r + "</span>").html()),
                    angular.isString(o) || angular.isArray(o)) {
                        var a = {};
                        a.$$noContext = o,
                        o = a
                    }
                    for (var s in this.strings[e][r] || (this.strings[e][r] = {}),
                    o) {
                        var l = o[s];
                        angular.isArray(l) ? this.strings[e][r][s] = l : (this.strings[e][r][s] = [],
                        this.strings[e][r][s][i] = l)
                    }
                }
                d()
            },
            getStringFormFor: function(e, n, i, r) {
                return e ? (((this.strings[e] || {})[n] || {})[r || "$$noContext"] || [])[t(e, i)] : null
            },
            getString: function(t, n, i) {
                var o = e(this.currentLanguage);
                return t = this.getStringFormFor(this.currentLanguage, t, 1, i) || this.getStringFormFor(o, t, 1, i) || l(t),
                t = n ? r(t)(n) : t,
                u(t)
            },
            getPlural: function(t, n, i, o, a) {
                var s = e(this.currentLanguage);
                return n = this.getStringFormFor(this.currentLanguage, n, t, a) || this.getStringFormFor(s, n, t, a) || l(1 === t ? n : i),
                o && (o.$count = t,
                n = r(n)(o)),
                u(n)
            },
            loadRemote: function(t) {
                return n({
                    method: "GET",
                    url: t,
                    cache: a.cache
                }).then((function(t) {
                    var e = t.data;
                    for (var n in e)
                        a.setStrings(n, e[n]);
                    return t
                }
                ))
            }
        }
    }
    ]),
    angular.module("gettext").directive("translate", ["gettextCatalog", "$parse", "$animate", "$compile", "$interpolate", "$window", "gettextUtil", function(t, e, n, i, r, o, a) {
        var s = parseInt((/msie (\d+)/i.exec(o.navigator.userAgent) || [])[1], 10);
        function c(t, e, n, i) {
            var r = Object.keys(e).filter((function(t) {
                return a.startsWith(t, "translateParams") && "translateParams" !== t
            }
            ))
              , o = Object.keys(e).filter((function(t) {
                return a.startsWith(t, "translateHtmlParams") && "translateHtmlParams" !== t
            }
            ));
            if (i.length = 0,
            !r.length && !o.length)
                return null;
            var s = t.$new()
              , c = [];
            return r.forEach((function(i) {
                var r = t.$watch(e[i], (function(t) {
                    var e = function(t) {
                        return a.lcFirst(t.replace("translateParams", ""))
                    }(i);
                    s[e] = t,
                    n(s)
                }
                ));
                c.push(r)
            }
            )),
            o.forEach((function(r) {
                var o = t.$watch(e[r], (function(t) {
                    var e = function(t) {
                        return a.lcFirst(t.replace("translateHtmlParams", ""))
                    }(r);
                    s[e] = t,
                    i.push(e),
                    n(s)
                }
                ));
                c.push(o)
            }
            )),
            t.$on("$destroy", (function() {
                c.forEach((function(t) {
                    t()
                }
                )),
                s.$destroy()
            }
            )),
            s
        }
        return {
            restrict: "AE",
            terminal: !0,
            compile: function(o, l) {
                a.assert(!l.translatePlural || l.translateN, "translate-n", "translate-plural"),
                a.assert(!l.translateN || l.translatePlural, "translate-plural", "translate-n");
                var u = []
                  , d = a.trim(o.html())
                  , p = l.translatePlural
                  , h = l.translateContext;
                return s <= 8 && "\x3c!--IE fix--\x3e" === d.slice(-13) && (d = d.slice(0, -13)),
                {
                    post: function(o, s, l) {
                        var f = e(l.translateN)
                          , m = null
                          , g = !0;
                        function v(e) {
                            var c;
                            e = e || null,
                            p ? ((o = m || (m = o.$new())).$count = f(o),
                            c = t.getPlural(o.$count, d, p, null, h)) : c = t.getString(d, null, h);
                            var l = s.contents();
                            if (l || c)
                                if (c !== a.trim(l.html())) {
                                    var v = new RegExp(/\{\{\s*(.*?)?\s*\}\}/g);
                                    c = c.replace(v, (function(t, n) {
                                        return u.indexOf(n) >= 0 ? r("{{ " + n + " }}")(e) : t
                                    }
                                    ));
                                    var y = angular.element("<span>" + c + "</span>");
                                    i(y.contents())(e || o);
                                    var b = y.contents();
                                    n.enter(b, s),
                                    n.leave(l)
                                } else
                                    g && i(l)(o)
                        }
                        var y = c(o, l, v, u);
                        v(y),
                        g = !1,
                        l.translateN && o.$watch(l.translateN, (function() {
                            v(y)
                        }
                        )),
                        o.$on("gettextLanguageChanged", (function() {
                            v(y)
                        }
                        ))
                    }
                }
            }
        }
    }
    ]),
    angular.module("gettext").factory("gettextFallbackLanguage", (function() {
        var t = {}
          , e = /([^_]+)_[^_]+$/;
        return function(n) {
            if (t[n])
                return t[n];
            var i = e.exec(n);
            return i ? (t[n] = i[1],
            i[1]) : null
        }
    }
    )),
    angular.module("gettext").filter("translate", ["gettextCatalog", function(t) {
        function e(e, n) {
            return t.getString(e, null, n)
        }
        return e.$stateful = !0,
        e
    }
    ]),
    angular.module("gettext").factory("gettextPlurals", (function() {
        var t = {
            pt_BR: "pt_BR",
            "pt-BR": "pt_BR"
        };
        return function(e, n) {
            switch (function(e) {
                t[e] || (t[e] = e.split(/\-|_/).shift());
                return t[e]
            }(e)) {
            case "ay":
            case "bo":
            case "cgg":
            case "dz":
            case "fa":
            case "id":
            case "ja":
            case "jbo":
            case "ka":
            case "kk":
            case "km":
            case "ko":
            case "ky":
            case "lo":
            case "ms":
            case "my":
            case "sah":
            case "su":
            case "th":
            case "tt":
            case "ug":
            case "vi":
            case "wo":
            case "zh":
                return 0;
            case "is":
                return n % 10 != 1 || n % 100 == 11 ? 1 : 0;
            case "jv":
                return 0 != n ? 1 : 0;
            case "mk":
                return 1 == n || n % 10 == 1 ? 0 : 1;
            case "ach":
            case "ak":
            case "am":
            case "arn":
            case "br":
            case "fil":
            case "fr":
            case "gun":
            case "ln":
            case "mfe":
            case "mg":
            case "mi":
            case "oc":
            case "pt_BR":
            case "tg":
            case "ti":
            case "tr":
            case "uz":
            case "wa":
            case "zh":
                return n > 1 ? 1 : 0;
            case "lv":
                return n % 10 == 1 && n % 100 != 11 ? 0 : 0 != n ? 1 : 2;
            case "lt":
                return n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;
            case "be":
            case "bs":
            case "hr":
            case "ru":
            case "sr":
            case "uk":
                return n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;
            case "mnk":
                return 0 == n ? 0 : 1 == n ? 1 : 2;
            case "ro":
                return 1 == n ? 0 : 0 == n || n % 100 > 0 && n % 100 < 20 ? 1 : 2;
            case "pl":
                return 1 == n ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;
            case "cs":
            case "sk":
                return 1 == n ? 0 : n >= 2 && n <= 4 ? 1 : 2;
            case "sl":
                return n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0;
            case "mt":
                return 1 == n ? 0 : 0 == n || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3;
            case "gd":
                return 1 == n || 11 == n ? 0 : 2 == n || 12 == n ? 1 : n > 2 && n < 20 ? 2 : 3;
            case "cy":
                return 1 == n ? 0 : 2 == n ? 1 : 8 != n && 11 != n ? 2 : 3;
            case "kw":
                return 1 == n ? 0 : 2 == n ? 1 : 3 == n ? 2 : 3;
            case "ga":
                return 1 == n ? 0 : 2 == n ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4;
            case "ar":
                return 0 == n ? 0 : 1 == n ? 1 : 2 == n ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
            default:
                return 1 != n ? 1 : 0
            }
        }
    }
    )),
    angular.module("gettext").factory("gettextUtil", (function() {
        return {
            trim: String.prototype.trim ? function(t) {
                return "string" == typeof t ? t.trim() : t
            }
            : function(t) {
                return "string" == typeof t ? t.replace(/^\s*/, "").replace(/\s*$/, "") : t
            }
            ,
            assert: function(t, e, n) {
                if (!t)
                    throw new Error("You should add a " + e + " attribute whenever you add a " + n + " attribute.")
            },
            startsWith: function(t, e) {
                return 0 === t.indexOf(e)
            },
            lcFirst: function(t) {
                return t.charAt(0).toLowerCase() + t.substr(1)
            }
        }
    }
    ))
}
, function(t, e, n) {
    var i;
    /*! 
 * angular-hotkeys v1.7.0
 * https://chieffancypants.github.io/angular-hotkeys
 * Copyright (c) 2016 Wes Cruver
 * License: MIT
 */
    !function() {
        "use strict";
        angular.module("cfp.hotkeys", []).provider("hotkeys", ["$injector", function(t) {
            this.includeCheatSheet = !0,
            this.useNgRoute = t.has("ngViewDirective"),
            this.templateTitle = "Keyboard Shortcuts:",
            this.templateHeader = null,
            this.templateFooter = null,
            this.template = '<div class="cfp-hotkeys-container fade" ng-class="{in: helpVisible}" style="display: none;"><div class="cfp-hotkeys"><h4 class="cfp-hotkeys-title" ng-if="!header">{{ title }}</h4><div ng-bind-html="header" ng-if="header"></div><table><tbody><tr ng-repeat="hotkey in hotkeys | filter:{ description: \'!$$undefined$$\' }"><td class="cfp-hotkeys-keys"><span ng-repeat="key in hotkey.format() track by $index" class="cfp-hotkeys-key">{{ key }}</span></td><td class="cfp-hotkeys-text">{{ hotkey.description }}</td></tr></tbody></table><div ng-bind-html="footer" ng-if="footer"></div><div class="cfp-hotkeys-close" ng-click="toggleCheatSheet()">&#215;</div></div></div>',
            this.cheatSheetHotkey = "?",
            this.cheatSheetDescription = "Show / hide this help menu",
            this.$get = ["$rootElement", "$rootScope", "$compile", "$window", "$document", function(t, e, n, i, r) {
                var o = !0;
                function a(t) {
                    var e = {
                        command: "⌘",
                        shift: "⇧",
                        left: "←",
                        right: "→",
                        up: "↑",
                        down: "↓",
                        return: "⏎",
                        backspace: "⌫"
                    };
                    t = t.split("+");
                    for (var n = 0; n < t.length; n++)
                        "mod" === t[n] && (i.navigator && i.navigator.platform.indexOf("Mac") >= 0 ? t[n] = "command" : t[n] = "ctrl"),
                        t[n] = e[t[n]] || t[n];
                    return t.join(" + ")
                }
                function s(t, e, n, i, r, o) {
                    this.combo = t instanceof Array ? t : [t],
                    this.description = e,
                    this.callback = n,
                    this.action = i,
                    this.allowIn = r,
                    this.persistent = o,
                    this._formated = null
                }
                Mousetrap.prototype.stopCallback = function(t, e) {
                    return !o || !((" " + e.className + " ").indexOf(" mousetrap ") > -1) && (e.contentEditable && "true" == e.contentEditable)
                }
                ,
                s.prototype.format = function() {
                    if (null === this._formated) {
                        for (var t = this.combo[0].split(/[\s]/), e = 0; e < t.length; e++)
                            t[e] = a(t[e]);
                        this._formated = t
                    }
                    return this._formated
                }
                ;
                var c = e.$new();
                c.hotkeys = [],
                c.helpVisible = !1,
                c.title = this.templateTitle,
                c.header = this.templateHeader,
                c.footer = this.templateFooter,
                c.toggleCheatSheet = m;
                var l = {};
                if (this.useNgRoute && e.$on("$routeChangeSuccess", (function(t, e) {
                    h(),
                    e && e.hotkeys && angular.forEach(e.hotkeys, (function(t) {
                        var n = t[2];
                        ("string" == typeof n || n instanceof String) && (t[2] = [n, e]),
                        t[5] = !1,
                        g.apply(this, t)
                    }
                    ))
                }
                )),
                this.includeCheatSheet) {
                    var u = r[0]
                      , d = t[0]
                      , p = angular.element(this.template);
                    g(this.cheatSheetHotkey, this.cheatSheetDescription, m),
                    d !== u && d !== u.documentElement || (d = u.body),
                    angular.element(d).append(n(p)(c))
                }
                function h() {
                    for (var t = c.hotkeys.length; t--; ) {
                        var e = c.hotkeys[t];
                        e && !e.persistent && v(e)
                    }
                }
                var f = !1;
                function m() {
                    c.helpVisible = !c.helpVisible,
                    c.helpVisible ? (f = y("esc"),
                    v("esc"),
                    g("esc", f.description, m, null, ["INPUT", "SELECT", "TEXTAREA"])) : (v("esc"),
                    !1 !== f && g(f))
                }
                function g(t, e, n, i, r, o) {
                    var a, l = ["INPUT", "SELECT", "TEXTAREA"];
                    if ("[object Object]" === Object.prototype.toString.call(t) && (e = t.description,
                    n = t.callback,
                    i = t.action,
                    o = t.persistent,
                    r = t.allowIn,
                    t = t.combo),
                    v(t),
                    e instanceof Function ? (i = n,
                    n = e,
                    e = "$$undefined$$") : angular.isUndefined(e) && (e = "$$undefined$$"),
                    void 0 === o && (o = !0),
                    "function" == typeof n) {
                        var u;
                        a = n,
                        r instanceof Array || (r = []);
                        for (var d = 0; d < r.length; d++)
                            r[d] = r[d].toUpperCase(),
                            -1 !== (u = l.indexOf(r[d])) && l.splice(u, 1);
                        n = function(t) {
                            var e = !0;
                            if (t) {
                                var n = t.target || t.srcElement
                                  , i = n.nodeName.toUpperCase();
                                if ((" " + n.className + " ").indexOf(" mousetrap ") > -1)
                                    e = !0;
                                else
                                    for (var r = 0; r < l.length; r++)
                                        if (l[r] === i) {
                                            e = !1;
                                            break
                                        }
                            }
                            e && b(a.apply(this, arguments))
                        }
                    }
                    "string" == typeof i ? Mousetrap.bind(t, b(n), i) : Mousetrap.bind(t, b(n));
                    var p = new s(t,e,n,i,r,o);
                    return c.hotkeys.push(p),
                    p
                }
                function v(t) {
                    var e = t instanceof s ? t.combo : t;
                    if (Mousetrap.unbind(e),
                    angular.isArray(e)) {
                        for (var n = !0, i = e.length; i--; )
                            n = v(e[i]) && n;
                        return n
                    }
                    var r = c.hotkeys.indexOf(y(e));
                    return r > -1 && (c.hotkeys[r].combo.length > 1 ? c.hotkeys[r].combo.splice(c.hotkeys[r].combo.indexOf(e), 1) : (angular.forEach(l, (function(t) {
                        var e = t.indexOf(c.hotkeys[r]);
                        -1 !== e && t.splice(e, 1)
                    }
                    )),
                    c.hotkeys.splice(r, 1)),
                    !0)
                }
                function y(t) {
                    if (!t)
                        return c.hotkeys;
                    for (var e, n = 0; n < c.hotkeys.length; n++)
                        if ((e = c.hotkeys[n]).combo.indexOf(t) > -1)
                            return e;
                    return !1
                }
                function b(t) {
                    return function(n, i) {
                        if (t instanceof Array) {
                            var r = t[0]
                              , o = t[1];
                            t = function(t) {
                                o.scope.$eval(r)
                            }
                        }
                        e.$apply((function() {
                            t(n, y(i))
                        }
                        ))
                    }
                }
                return {
                    add: g,
                    del: v,
                    get: y,
                    bindTo: function(t) {
                        return t.$id in l || (l[t.$id] = [],
                        t.$on("$destroy", (function() {
                            for (var e = l[t.$id].length; e--; )
                                v(l[t.$id].pop())
                        }
                        ))),
                        {
                            add: function(e) {
                                var n;
                                return n = arguments.length > 1 ? g.apply(this, arguments) : g(e),
                                l[t.$id].push(n),
                                this
                            }
                        }
                    },
                    template: this.template,
                    toggleCheatSheet: m,
                    includeCheatSheet: this.includeCheatSheet,
                    cheatSheetHotkey: this.cheatSheetHotkey,
                    cheatSheetDescription: this.cheatSheetDescription,
                    useNgRoute: this.useNgRoute,
                    purgeHotkeys: h,
                    templateTitle: this.templateTitle,
                    pause: function() {
                        o = !1
                    },
                    unpause: function() {
                        o = !0
                    }
                }
            }
            ]
        }
        ]).directive("hotkey", ["hotkeys", function(t) {
            return {
                restrict: "A",
                link: function(e, n, i) {
                    var r, o = [];
                    angular.forEach(e.$eval(i.hotkey), (function(e, n) {
                        r = "string" == typeof i.hotkeyAllowIn ? i.hotkeyAllowIn.split(/[\s,]+/) : [],
                        o.push(n),
                        t.add({
                            combo: n,
                            description: i.hotkeyDescription,
                            callback: e,
                            action: i.hotkeyAction,
                            allowIn: r
                        })
                    }
                    )),
                    n.bind("$destroy", (function() {
                        angular.forEach(o, t.del)
                    }
                    ))
                }
            }
        }
        ]).run(["hotkeys", function(t) {}
        ])
    }(),
    function(r, o, a) {
        for (var s, c = {
            8: "backspace",
            9: "tab",
            13: "enter",
            16: "shift",
            17: "ctrl",
            18: "alt",
            20: "capslock",
            27: "esc",
            32: "space",
            33: "pageup",
            34: "pagedown",
            35: "end",
            36: "home",
            37: "left",
            38: "up",
            39: "right",
            40: "down",
            45: "ins",
            46: "del",
            91: "meta",
            93: "meta",
            224: "meta"
        }, l = {
            106: "*",
            107: "+",
            109: "-",
            110: ".",
            111: "/",
            186: ";",
            187: "=",
            188: ",",
            189: "-",
            190: ".",
            191: "/",
            192: "`",
            219: "[",
            220: "\\",
            221: "]",
            222: "'"
        }, u = {
            "~": "`",
            "!": "1",
            "@": "2",
            "#": "3",
            $: "4",
            "%": "5",
            "^": "6",
            "&": "7",
            "*": "8",
            "(": "9",
            ")": "0",
            _: "-",
            "+": "=",
            ":": ";",
            '"': "'",
            "<": ",",
            ">": ".",
            "?": "/",
            "|": "\\"
        }, d = {
            option: "alt",
            command: "meta",
            return: "enter",
            escape: "esc",
            plus: "+",
            mod: /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? "meta" : "ctrl"
        }, p = 1; p < 20; ++p)
            c[111 + p] = "f" + p;
        for (p = 0; p <= 9; ++p)
            c[p + 96] = p;
        function h(t, e, n) {
            t.addEventListener ? t.addEventListener(e, n, !1) : t.attachEvent("on" + e, n)
        }
        function f(t) {
            if ("keypress" == t.type) {
                var e = String.fromCharCode(t.which);
                return t.shiftKey || (e = e.toLowerCase()),
                e
            }
            return c[t.which] ? c[t.which] : l[t.which] ? l[t.which] : String.fromCharCode(t.which).toLowerCase()
        }
        function m(t) {
            return "shift" == t || "ctrl" == t || "alt" == t || "meta" == t
        }
        function g(t, e, n) {
            return n || (n = function() {
                if (!s)
                    for (var t in s = {},
                    c)
                        t > 95 && t < 112 || c.hasOwnProperty(t) && (s[c[t]] = t);
                return s
            }()[t] ? "keydown" : "keypress"),
            "keypress" == n && e.length && (n = "keydown"),
            n
        }
        function v(t, e) {
            var n, i, r, o = [];
            for (n = function(t) {
                return "+" === t ? ["+"] : (t = t.replace(/\+{2}/g, "+plus")).split("+")
            }(t),
            r = 0; r < n.length; ++r)
                i = n[r],
                d[i] && (i = d[i]),
                e && "keypress" != e && u[i] && (i = u[i],
                o.push("shift")),
                m(i) && o.push(i);
            return {
                key: i,
                modifiers: o,
                action: e = g(i, o, e)
            }
        }
        function y(t) {
            var e = this;
            if (t = t || o,
            !(e instanceof y))
                return new y(t);
            e.target = t,
            e._callbacks = {},
            e._directMap = {};
            var n, i = {}, r = !1, a = !1, s = !1;
            function c(t) {
                t = t || {};
                var e, n = !1;
                for (e in i)
                    t[e] ? n = !0 : i[e] = 0;
                n || (s = !1)
            }
            function l(t, n, r, o, a, s) {
                var c, l, u, d, p = [], h = r.type;
                if (!e._callbacks[t])
                    return [];
                for ("keyup" == h && m(t) && (n = [t]),
                c = 0; c < e._callbacks[t].length; ++c)
                    if (l = e._callbacks[t][c],
                    (o || !l.seq || i[l.seq] == l.level) && h == l.action && ("keypress" == h && !r.metaKey && !r.ctrlKey || (u = n,
                    d = l.modifiers,
                    u.sort().join(",") === d.sort().join(",")))) {
                        var f = !o && l.combo == a
                          , g = o && l.seq == o && l.level == s;
                        (f || g) && e._callbacks[t].splice(c, 1),
                        p.push(l)
                    }
                return p
            }
            function u(t, n, i, r) {
                e.stopCallback(n, n.target || n.srcElement, i, r) || !1 === t(n, i) && (function(t) {
                    t.preventDefault ? t.preventDefault() : t.returnValue = !1
                }(n),
                function(t) {
                    t.stopPropagation ? t.stopPropagation() : t.cancelBubble = !0
                }(n))
            }
            function d(t) {
                "number" != typeof t.which && (t.which = t.keyCode);
                var n = f(t);
                n && ("keyup" != t.type || r !== n ? e.handleKey(n, function(t) {
                    var e = [];
                    return t.shiftKey && e.push("shift"),
                    t.altKey && e.push("alt"),
                    t.ctrlKey && e.push("ctrl"),
                    t.metaKey && e.push("meta"),
                    e
                }(t), t) : r = !1)
            }
            function p(t, e, o, a) {
                function l(e) {
                    return function() {
                        s = e,
                        ++i[t],
                        clearTimeout(n),
                        n = setTimeout(c, 1e3)
                    }
                }
                function d(e) {
                    u(o, e, t),
                    "keyup" !== a && (r = f(e)),
                    setTimeout(c, 10)
                }
                i[t] = 0;
                for (var p = 0; p < e.length; ++p) {
                    var h = p + 1 === e.length ? d : l(a || v(e[p + 1]).action);
                    g(e[p], h, a, t, p)
                }
            }
            function g(t, n, i, r, o) {
                e._directMap[t + ":" + i] = n;
                var a, s = (t = t.replace(/\s+/g, " ")).split(" ");
                s.length > 1 ? p(t, s, n, i) : (a = v(t, i),
                e._callbacks[a.key] = e._callbacks[a.key] || [],
                l(a.key, a.modifiers, {
                    type: a.action
                }, r, t, o),
                e._callbacks[a.key][r ? "unshift" : "push"]({
                    callback: n,
                    modifiers: a.modifiers,
                    action: a.action,
                    seq: r,
                    level: o,
                    combo: t
                }))
            }
            e._handleKey = function(t, e, n) {
                var i, r = l(t, e, n), o = {}, d = 0, p = !1;
                for (i = 0; i < r.length; ++i)
                    r[i].seq && (d = Math.max(d, r[i].level));
                for (i = 0; i < r.length; ++i)
                    if (r[i].seq) {
                        if (r[i].level != d)
                            continue;
                        p = !0,
                        o[r[i].seq] = 1,
                        u(r[i].callback, n, r[i].combo, r[i].seq)
                    } else
                        p || u(r[i].callback, n, r[i].combo);
                var h = "keypress" == n.type && a;
                n.type != s || m(t) || h || c(o),
                a = p && "keydown" == n.type
            }
            ,
            e._bindMultiple = function(t, e, n) {
                for (var i = 0; i < t.length; ++i)
                    g(t[i], e, n)
            }
            ,
            h(t, "keypress", d),
            h(t, "keydown", d),
            h(t, "keyup", d)
        }
        y.prototype.bind = function(t, e, n) {
            return t = t instanceof Array ? t : [t],
            this._bindMultiple.call(this, t, e, n),
            this
        }
        ,
        y.prototype.unbind = function(t, e) {
            return this.bind.call(this, t, (function() {}
            ), e)
        }
        ,
        y.prototype.trigger = function(t, e) {
            return this._directMap[t + ":" + e] && this._directMap[t + ":" + e]({}, t),
            this
        }
        ,
        y.prototype.reset = function() {
            return this._callbacks = {},
            this._directMap = {},
            this
        }
        ,
        y.prototype.stopCallback = function(t, e) {
            return !((" " + e.className + " ").indexOf(" mousetrap ") > -1) && (!function t(e, n) {
                return e !== o && (e === n || t(e.parentNode, n))
            }(e, this.target) && ("INPUT" == e.tagName || "SELECT" == e.tagName || "TEXTAREA" == e.tagName || e.isContentEditable))
        }
        ,
        y.prototype.handleKey = function() {
            var t = this;
            return t._handleKey.apply(t, arguments)
        }
        ,
        y.init = function() {
            var t = y(o);
            for (var e in t)
                "_" !== e.charAt(0) && (y[e] = function(e) {
                    return function() {
                        return t[e].apply(t, arguments)
                    }
                }(e))
        }
        ,
        y.init(),
        r.Mousetrap = y,
        t.exports && (t.exports = y),
        void 0 === (i = function() {
            return y
        }
        .call(e, n, e, t)) || (t.exports = i)
    }(window, document)
}
, function(t, e, n) {
    var i = n(11)
      , r = n(936);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "/*! \n * angular-hotkeys v1.7.0\n * https://chieffancypants.github.io/angular-hotkeys\n * Copyright (c) 2016 Wes Cruver\n * License: MIT\n */.cfp-hotkeys-container{display:table!important;position:fixed;width:100%;height:100%;top:0;left:0;color:#333;font-size:1em;background-color:hsla(0,0%,100%,.9)}.cfp-hotkeys-container.fade{z-index:-1024;visibility:hidden;opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.cfp-hotkeys-container.fade.in{z-index:10002;visibility:visible;opacity:1}.cfp-hotkeys-title{font-weight:700;text-align:center;font-size:1.2em}.cfp-hotkeys{width:100%;height:100%;display:table-cell;vertical-align:middle}.cfp-hotkeys table{margin:auto;color:#333}.cfp-content{display:table-cell;vertical-align:middle}.cfp-hotkeys-keys{padding:5px;text-align:right}.cfp-hotkeys-key{display:inline-block;color:#fff;background-color:#333;border:1px solid #333;border-radius:5px;text-align:center;margin-right:5px;box-shadow:inset 0 1px 0 #666,0 1px 0 #bbb;padding:5px 9px;font-size:1em}.cfp-hotkeys-text{padding-left:10px;font-size:1em}.cfp-hotkeys-close{position:fixed;top:20px;right:20px;font-size:2em;font-weight:700;padding:5px 10px;border:1px solid #ddd;border-radius:5px;min-height:45px;min-width:45px;text-align:center}.cfp-hotkeys-close:hover{background-color:#fff;cursor:pointer}@media (max-width:500px){.cfp-hotkeys{font-size:.8em}}@media (min-width:750px){.cfp-hotkeys{font-size:1.2em}}", ""]),
    t.exports = e
}
, function(t, e, n) {
    n(938),
    t.exports = "LocalStorageModule"
}
, function(t, e) {
    /**
 * An Angular module that gives you access to the browsers local storage
 * @version v0.7.1 - 2017-06-21
 * @link https://github.com/grevory/angular-local-storage
 * @author grevory <greg@gregpike.ca>
 * @license MIT License, http://www.opensource.org/licenses/MIT
 */
    !function(t, e) {
        var n = e.isDefined
          , i = e.isUndefined
          , r = e.isNumber
          , o = e.isObject
          , a = e.isArray
          , s = e.isString
          , c = e.extend
          , l = e.toJson;
        e.module("LocalStorageModule", []).provider("localStorageService", (function() {
            this.prefix = "ls",
            this.storageType = "localStorage",
            this.cookie = {
                expiry: 30,
                path: "/",
                secure: !1
            },
            this.defaultToCookie = !0,
            this.notify = {
                setItem: !0,
                removeItem: !1
            },
            this.setPrefix = function(t) {
                return this.prefix = t,
                this
            }
            ,
            this.setStorageType = function(t) {
                return this.storageType = t,
                this
            }
            ,
            this.setDefaultToCookie = function(t) {
                return this.defaultToCookie = !!t,
                this
            }
            ,
            this.setStorageCookie = function(t, e, n) {
                return this.cookie.expiry = t,
                this.cookie.path = e,
                this.cookie.secure = n,
                this
            }
            ,
            this.setStorageCookieDomain = function(t) {
                return this.cookie.domain = t,
                this
            }
            ,
            this.setNotify = function(t, e) {
                return this.notify = {
                    setItem: t,
                    removeItem: e
                },
                this
            }
            ,
            this.$get = ["$rootScope", "$window", "$document", "$parse", "$timeout", function(t, e, u, d, p) {
                var h, f = this, m = f.prefix, g = f.cookie, v = f.notify, y = f.storageType;
                u ? u[0] && (u = u[0]) : u = document,
                "." !== m.substr(-1) && (m = m ? m + "." : "");
                var b = function(t) {
                    return m + t
                }
                  , w = function(t) {
                    return t.replace(new RegExp("^" + m,"g"), "")
                }
                  , S = function() {
                    try {
                        var n = y in e && null !== e[y]
                          , i = b("__" + Math.round(1e7 * Math.random()));
                        return n && ((h = e[y]).setItem(i, ""),
                        h.removeItem(i)),
                        n
                    } catch (e) {
                        return f.defaultToCookie && (y = "cookie"),
                        t.$broadcast("LocalStorageModule.notification.error", e.message),
                        !1
                    }
                }
                  , x = S()
                  , M = function(e, n, r) {
                    var o = I();
                    try {
                        if (k(r),
                        n = i(n) ? null : l(n),
                        !x && f.defaultToCookie || "cookie" === f.storageType)
                            return x || t.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"),
                            v.setItem && t.$broadcast("LocalStorageModule.notification.setitem", {
                                key: e,
                                newvalue: n,
                                storageType: "cookie"
                            }),
                            T(e, n);
                        try {
                            h && h.setItem(b(e), n),
                            v.setItem && t.$broadcast("LocalStorageModule.notification.setitem", {
                                key: e,
                                newvalue: n,
                                storageType: f.storageType
                            })
                        } catch (i) {
                            return t.$broadcast("LocalStorageModule.notification.error", i.message),
                            T(e, n)
                        }
                        return !0
                    } finally {
                        k(o)
                    }
                }
                  , E = function(e, n) {
                    var i = I();
                    try {
                        if (k(n),
                        !x && f.defaultToCookie || "cookie" === f.storageType)
                            return x || t.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"),
                            O(e);
                        var r = h ? h.getItem(b(e)) : null;
                        if (!r || "null" === r)
                            return null;
                        try {
                            return JSON.parse(r)
                        } catch (t) {
                            return r
                        }
                    } finally {
                        k(i)
                    }
                }
                  , C = function() {
                    var e = I();
                    try {
                        var n, i, r = 0;
                        for (arguments.length >= 1 && ("localStorage" === arguments[arguments.length - 1] || "sessionStorage" === arguments[arguments.length - 1]) && (r = 1,
                        k(arguments[arguments.length - 1])),
                        n = 0; n < arguments.length - r; n++)
                            if (i = arguments[n],
                            !x && f.defaultToCookie || "cookie" === f.storageType)
                                x || t.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"),
                                v.removeItem && t.$broadcast("LocalStorageModule.notification.removeitem", {
                                    key: i,
                                    storageType: "cookie"
                                }),
                                _(i);
                            else
                                try {
                                    h.removeItem(b(i)),
                                    v.removeItem && t.$broadcast("LocalStorageModule.notification.removeitem", {
                                        key: i,
                                        storageType: f.storageType
                                    })
                                } catch (e) {
                                    t.$broadcast("LocalStorageModule.notification.error", e.message),
                                    _(i)
                                }
                    } finally {
                        k(e)
                    }
                }
                  , A = function() {
                    try {
                        return e.navigator.cookieEnabled || "cookie"in u && (u.cookie.length > 0 || (u.cookie = "test").indexOf.call(u.cookie, "test") > -1)
                    } catch (e) {
                        return t.$broadcast("LocalStorageModule.notification.error", e.message),
                        !1
                    }
                }()
                  , T = function(e, n, s, c) {
                    if (i(n))
                        return !1;
                    if ((a(n) || o(n)) && (n = l(n)),
                    !A)
                        return t.$broadcast("LocalStorageModule.notification.error", "COOKIES_NOT_SUPPORTED"),
                        !1;
                    try {
                        var d = ""
                          , p = new Date
                          , h = "";
                        if (null === n ? (p.setTime(p.getTime() + -864e5),
                        d = "; expires=" + p.toGMTString(),
                        n = "") : r(s) && 0 !== s ? (p.setTime(p.getTime() + 24 * s * 60 * 60 * 1e3),
                        d = "; expires=" + p.toGMTString()) : 0 !== g.expiry && (p.setTime(p.getTime() + 24 * g.expiry * 60 * 60 * 1e3),
                        d = "; expires=" + p.toGMTString()),
                        e) {
                            var f = "; path=" + g.path;
                            g.domain && (h = "; domain=" + g.domain),
                            "boolean" == typeof c ? !0 === c && (h += "; secure") : !0 === g.secure && (h += "; secure"),
                            u.cookie = b(e) + "=" + encodeURIComponent(n) + d + f + h
                        }
                    } catch (e) {
                        return t.$broadcast("LocalStorageModule.notification.error", e.message),
                        !1
                    }
                    return !0
                }
                  , O = function(e) {
                    if (!A)
                        return t.$broadcast("LocalStorageModule.notification.error", "COOKIES_NOT_SUPPORTED"),
                        !1;
                    for (var n = u.cookie && u.cookie.split(";") || [], i = 0; i < n.length; i++) {
                        for (var r = n[i]; " " === r.charAt(0); )
                            r = r.substring(1, r.length);
                        if (0 === r.indexOf(b(e) + "=")) {
                            var o = decodeURIComponent(r.substring(m.length + e.length + 1, r.length));
                            try {
                                var a = JSON.parse(o);
                                return "number" == typeof a ? o : a
                            } catch (t) {
                                return o
                            }
                        }
                    }
                    return null
                }
                  , _ = function(t) {
                    T(t, null)
                }
                  , P = function() {
                    for (var t = null, e = m.length, n = u.cookie.split(";"), i = 0; i < n.length; i++) {
                        for (t = n[i]; " " === t.charAt(0); )
                            t = t.substring(1, t.length);
                        var r = t.substring(e, t.indexOf("="));
                        _(r)
                    }
                }
                  , I = function() {
                    return y
                }
                  , k = function(t) {
                    return t && y !== t && (y = t,
                    x = S()),
                    x
                };
                function D(n) {
                    if (n || (n = e.event),
                    v.setItem && s(n.key) && function(t) {
                        return 0 === t.indexOf(m)
                    }(n.key)) {
                        var i = w(n.key);
                        p((function() {
                            t.$broadcast("LocalStorageModule.notification.changed", {
                                key: i,
                                newvalue: n.newValue,
                                storageType: f.storageType
                            })
                        }
                        ))
                    }
                }
                x && (e.addEventListener ? (e.addEventListener("storage", D, !1),
                t.$on("$destroy", (function() {
                    e.removeEventListener("storage", D)
                }
                ))) : e.attachEvent && (e.attachEvent("onstorage", D),
                t.$on("$destroy", (function() {
                    e.detachEvent("onstorage", D)
                }
                ))));
                return {
                    isSupported: x,
                    getStorageType: I,
                    setStorageType: k,
                    setPrefix: function(t) {
                        m = t
                    },
                    set: M,
                    add: M,
                    get: E,
                    keys: function(e) {
                        var n = I();
                        try {
                            if (k(e),
                            !x)
                                return t.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"),
                                [];
                            var i = m.length
                              , r = [];
                            for (var o in h)
                                if (o.substr(0, i) === m)
                                    try {
                                        r.push(o.substr(i))
                                    } catch (e) {
                                        return t.$broadcast("LocalStorageModule.notification.error", e.Description),
                                        []
                                    }
                            return r
                        } finally {
                            k(n)
                        }
                    },
                    remove: C,
                    clearAll: function(e, n) {
                        var i = I();
                        try {
                            k(n);
                            var r = m ? new RegExp("^" + m) : new RegExp
                              , o = e ? new RegExp(e) : new RegExp;
                            if (!x && f.defaultToCookie || "cookie" === f.storageType)
                                return x || t.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"),
                                P();
                            if (!x && !f.defaultToCookie)
                                return !1;
                            var a = m.length;
                            for (var s in h)
                                if (r.test(s) && o.test(s.substr(a)))
                                    try {
                                        C(s.substr(a))
                                    } catch (e) {
                                        return t.$broadcast("LocalStorageModule.notification.error", e.message),
                                        P()
                                    }
                            return !0
                        } finally {
                            k(i)
                        }
                    },
                    bind: function(t, e, i, r, a) {
                        var s = E(r = r || e, a);
                        return null === s && n(i) ? s = i : o(s) && o(i) && (s = c(s, i)),
                        d(e).assign(t, s),
                        t.$watch(e, (function(t) {
                            M(r, t, a)
                        }
                        ), o(t[e]))
                    },
                    deriveKey: b,
                    underiveKey: w,
                    length: function(t) {
                        var n = I();
                        try {
                            k(t);
                            for (var i = 0, r = e[y], o = 0; o < r.length; o++)
                                0 === r.key(o).indexOf(m) && i++;
                            return i
                        } finally {
                            k(n)
                        }
                    },
                    defaultToCookie: this.defaultToCookie,
                    cookie: {
                        isSupported: A,
                        set: T,
                        add: T,
                        get: O,
                        remove: _,
                        clearAll: P
                    }
                }
            }
            ]
        }
        ))
    }(window, window.angular)
}
, function(t, e) {
    !function(t) {
        "use strict";
        var e = t.module("angular-progress-arc", []);
        e.provider("progressArcDefaults", (function() {
            var e = {
                size: 200,
                strokeWidth: 20,
                stroke: "black",
                background: null
            };
            this.setDefault = function(t, n) {
                return e[t] = n,
                this
            }
            ,
            this.$get = function() {
                return function(n) {
                    t.forEach(e, (function(t, e) {
                        n[e] || (n[e] = t)
                    }
                    ))
                }
            }
        }
        )),
        e.directive("progressArc", ["progressArcDefaults", function(t) {
            return {
                restrict: "E",
                scope: {
                    size: "@",
                    strokeWidth: "@",
                    stroke: "@",
                    counterClockwise: "@",
                    complete: "&",
                    background: "@"
                },
                compile: function(e, n) {
                    return t(n),
                    function(t, e, n) {
                        t.offset = /firefox/i.test(navigator.userAgent) ? -89.9 : -90;
                        var i = function() {
                            t.strokeWidthCapped = Math.min(t.strokeWidth, t.size / 2 - 1),
                            t.radius = Math.max((t.size - t.strokeWidthCapped) / 2 - 1, 0),
                            t.circumference = 2 * Math.PI * t.radius
                        };
                        t.$watchCollection("[size, strokeWidth]", i),
                        i()
                    }
                },
                template: '<svg ng-attr-width="{{size}}" ng-attr-height="{{size}}"><circle fill="none" ng-if="background" ng-attr-cx="{{size/2}}" ng-attr-cy="{{size/2}}" ng-attr-r="{{radius}}" ng-attr-stroke="{{background}}" ng-attr-stroke-width="{{strokeWidthCapped}}"/><circle fill="none" ng-attr-cx="{{size/2}}" ng-attr-cy="{{size/2}}" ng-attr-r="{{radius}}" ng-attr-stroke="{{stroke}}" ng-attr-stroke-width="{{strokeWidthCapped}}"ng-attr-stroke-dasharray="{{circumference}}"ng-attr-stroke-dashoffset="{{(1 - complete()) * circumference}}"ng-attr-transform="rotate({{offset}}, {{size/2}}, {{size/2}}){{ (counterClockwise && counterClockwise != \'false\') ? \' translate(0, \' + size + \') scale(1, -1)\' : \'\' }}"/></svg>'
            }
        }
        ])
    }(window.angular)
}
, function(t, e, n) {
    n(941),
    t.exports = "ngSanitize"
}
, function(t, e) {
    /**
 * @license AngularJS v1.8.0
 * (c) 2010-2020 Google, Inc. http://angularjs.org
 * License: MIT
 */
    !function(t, e) {
        "use strict";
        var n, i, r, o, a, s, c, l, u, d, p = e.$$minErr("$sanitize");
        e.module("ngSanitize", []).provider("$sanitize", (function() {
            var h = !1
              , f = !1;
            this.$get = ["$$sanitizeUri", function(t) {
                return h = !0,
                f && i(C, M),
                function(e) {
                    var n = [];
                    return u(e, d(n, (function(e, n) {
                        return !/^unsafe:/.test(t(e, n))
                    }
                    ))),
                    n.join("")
                }
            }
            ],
            this.enableSvg = function(t) {
                return a(t) ? (f = t,
                this) : f
            }
            ,
            this.addValidElements = function(t) {
                return h || (o(t) && (t = {
                    htmlElements: t
                }),
                k(M, t.svgElements),
                k(v, t.htmlVoidElements),
                k(C, t.htmlVoidElements),
                k(C, t.htmlElements)),
                this
            }
            ,
            this.addValidAttrs = function(t) {
                return h || i(_, I(t, !0)),
                this
            }
            ,
            n = e.bind,
            i = e.extend,
            r = e.forEach,
            o = e.isArray,
            a = e.isDefined,
            s = e.$$lowercase,
            c = e.noop,
            u = function(t, e) {
                null == t ? t = "" : "string" != typeof t && (t = "" + t);
                var n = D(t);
                if (!n)
                    return "";
                var i = 5;
                do {
                    if (0 === i)
                        throw p("uinput", "Failed to sanitize html because the input is unstable");
                    i--,
                    t = n.innerHTML,
                    n = D(t)
                } while (t !== n.innerHTML);
                var r = n.firstChild;
                for (; r; ) {
                    switch (r.nodeType) {
                    case 1:
                        e.start(r.nodeName.toLowerCase(), R(r.attributes));
                        break;
                    case 3:
                        e.chars(r.textContent)
                    }
                    var o;
                    if (!((o = r.firstChild) || (1 === r.nodeType && e.end(r.nodeName.toLowerCase()),
                    o = j("nextSibling", r))))
                        for (; null == o && (r = j("parentNode", r)) !== n; )
                            o = j("nextSibling", r),
                            1 === r.nodeType && e.end(r.nodeName.toLowerCase());
                    r = o
                }
                for (; r = n.firstChild; )
                    n.removeChild(r)
            }
            ,
            d = function(t, e) {
                var i = !1
                  , o = n(t, t.push);
                return {
                    start: function(t, n) {
                        t = s(t),
                        !i && E[t] && (i = t),
                        i || !0 !== C[t] || (o("<"),
                        o(t),
                        r(n, (function(n, i) {
                            var r = s(i)
                              , a = "img" === t && "src" === r || "background" === r;
                            !0 !== _[r] || !0 === A[r] && !e(n, a) || (o(" "),
                            o(i),
                            o('="'),
                            o(L(n)),
                            o('"'))
                        }
                        )),
                        o(">"))
                    },
                    end: function(t) {
                        t = s(t),
                        i || !0 !== C[t] || !0 === v[t] || (o("</"),
                        o(t),
                        o(">")),
                        t == i && (i = !1)
                    },
                    chars: function(t) {
                        i || o(L(t))
                    }
                }
            }
            ,
            l = t.Node.prototype.contains || function(t) {
                return !!(16 & this.compareDocumentPosition(t))
            }
            ;
            var m = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g
              , g = /([^#-~ |!])/g
              , v = P("area,br,col,hr,img,wbr")
              , y = P("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr")
              , b = P("rp,rt")
              , w = i({}, b, y)
              , S = i({}, y, P("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul"))
              , x = i({}, b, P("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var"))
              , M = P("circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,radialGradient,rect,stop,svg,switch,text,title,tspan")
              , E = P("script,style")
              , C = i({}, v, S, x, w)
              , A = P("background,cite,href,longdesc,src,xlink:href,xml:base")
              , T = P("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,valign,value,vspace,width")
              , O = P("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan", !0)
              , _ = i({}, A, O, T);
            function P(t, e) {
                return I(t.split(","), e)
            }
            function I(t, e) {
                var n, i = {};
                for (n = 0; n < t.length; n++)
                    i[e ? s(t[n]) : t[n]] = !0;
                return i
            }
            function k(t, e) {
                e && e.length && i(t, I(e))
            }
            var D = function(t, e) {
                var n;
                if (!e || !e.implementation)
                    throw p("noinert", "Can't create an inert html document");
                var i = ((n = e.implementation.createHTMLDocument("inert")).documentElement || n.getDocumentElement()).querySelector("body");
                return i.innerHTML = '<svg><g onload="this.parentNode.remove()"></g></svg>',
                i.querySelector("svg") ? (i.innerHTML = '<svg><p><style><img src="</style><img src=x onerror=alert(1)//">',
                i.querySelector("svg img") ? function(e) {
                    e = "<remove></remove>" + e;
                    try {
                        var n = (new t.DOMParser).parseFromString(e, "text/html").body;
                        return n.firstChild.remove(),
                        n
                    } catch (t) {
                        return
                    }
                }
                : function(t) {
                    i.innerHTML = t,
                    e.documentMode && N(i);
                    return i
                }
                ) : function(e) {
                    e = "<remove></remove>" + e;
                    try {
                        e = encodeURI(e)
                    } catch (t) {
                        return
                    }
                    var n = new t.XMLHttpRequest;
                    n.responseType = "document",
                    n.open("GET", "data:text/html;charset=utf-8," + e, !1),
                    n.send(null);
                    var i = n.response.body;
                    return i.firstChild.remove(),
                    i
                }
            }(t, t.document);
            function R(t) {
                for (var e = {}, n = 0, i = t.length; n < i; n++) {
                    var r = t[n];
                    e[r.name] = r.value
                }
                return e
            }
            function L(t) {
                return t.replace(/&/g, "&amp;").replace(m, (function(t) {
                    return "&#" + (1024 * (t.charCodeAt(0) - 55296) + (t.charCodeAt(1) - 56320) + 65536) + ";"
                }
                )).replace(g, (function(t) {
                    return "&#" + t.charCodeAt(0) + ";"
                }
                )).replace(/</g, "&lt;").replace(/>/g, "&gt;")
            }
            function N(e) {
                for (; e; ) {
                    if (e.nodeType === t.Node.ELEMENT_NODE)
                        for (var n = e.attributes, i = 0, r = n.length; i < r; i++) {
                            var o = n[i]
                              , a = o.name.toLowerCase();
                            "xmlns:ns1" !== a && 0 !== a.lastIndexOf("ns1:", 0) || (e.removeAttributeNode(o),
                            i--,
                            r--)
                        }
                    var s = e.firstChild;
                    s && N(s),
                    e = j("nextSibling", e)
                }
            }
            function j(t, e) {
                var n = e[t];
                if (n && l.call(e, n))
                    throw p("elclob", "Failed to sanitize html because the element is clobbered: {0}", e.outerHTML || e.outerText);
                return n
            }
        }
        )).info({
            angularVersion: "1.8.0"
        }),
        e.module("ngSanitize").filter("linky", ["$sanitize", function(t) {
            var n = /((s?ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i
              , i = /^mailto:/i
              , r = e.$$minErr("linky")
              , o = e.isDefined
              , a = e.isFunction
              , s = e.isObject
              , l = e.isString;
            return function(e, u, p) {
                if (null == e || "" === e)
                    return e;
                if (!l(e))
                    throw r("notstring", "Expected string but received: {0}", e);
                for (var h, f, m, g = a(p) ? p : s(p) ? function() {
                    return p
                }
                : function() {
                    return {}
                }
                , v = e, y = []; h = v.match(n); )
                    f = h[0],
                    h[2] || h[4] || (f = (h[3] ? "http://" : "mailto:") + f),
                    m = h.index,
                    b(v.substr(0, m)),
                    w(f, h[0].replace(i, "")),
                    v = v.substring(m + h[0].length);
                return b(v),
                t(y.join(""));
                function b(t) {
                    var e, n;
                    t && y.push((e = t,
                    d(n = [], c).chars(e),
                    n.join("")))
                }
                function w(t, e) {
                    var n, i = g(t);
                    for (n in y.push("<a "),
                    i)
                        y.push(n + '="' + i[n] + '" ');
                    o(u) && !("target"in i) && y.push('target="', u, '" '),
                    y.push('href="', t.replace(/"/g, "&quot;"), '">'),
                    b(e),
                    y.push("</a>")
                }
            }
        }
        ])
    }(window, window.angular)
}
, function(t, e, n) {
    n(943),
    t.exports = "ui.slider"
}
, function(t, e, n) {
    (function(t) {
        angular.module("ui.slider", []).value("uiSliderConfig", {}).directive("uiSlider", ["uiSliderConfig", "$timeout", function(e, n) {
            return e = e || {},
            {
                require: "ngModel",
                compile: function() {
                    return {
                        pre: function(i, r, o, a) {
                            function s(t, e) {
                                return e ? parseFloat(t) : parseInt(t, 10)
                            }
                            var c = angular.copy(i.$eval(o.uiSlider))
                              , l = angular.extend(c || {}, e)
                              , u = {
                                min: null,
                                max: null
                            }
                              , d = ["min", "max", "step", "lowerBound", "upperBound"]
                              , p = !angular.isUndefined(o.useDecimals)
                              , h = angular.isDefined(l.updateOn) ? l.updateOn : "slide"
                              , f = function() {
                                angular.isArray(a.$viewValue) && !0 !== l.range && (console.warn("Change your range option of ui-slider. When assigning ngModel an array of values then the range option should be set to true."),
                                l.range = !0),
                                angular.forEach(d, (function(t) {
                                    angular.isDefined(o[t]) && (l[t] = s(o[t], p))
                                }
                                )),
                                r.slider(l),
                                f = angular.noop
                            };
                            function m() {
                                r.hasClass("ui-slider") && r.slider("destroy")
                            }
                            angular.forEach(d, (function(t) {
                                o.$observe(t, (function(e) {
                                    e && (f(),
                                    l[t] = s(e, p),
                                    r.slider("option", t, s(e, p)),
                                    a.$render())
                                }
                                ))
                            }
                            )),
                            o.$observe("disabled", (function(t) {
                                f(),
                                r.slider("option", "disabled", !!t)
                            }
                            )),
                            i.$watch(o.uiSlider, (function(t) {
                                f(),
                                void 0 !== t && r.slider("option", t)
                            }
                            ), !0),
                            n(f, 0, !0),
                            r.bind(h, (function(e, n) {
                                var o;
                                if (n.values) {
                                    var s = n.values.slice();
                                    l.lowerBound && s[0] < l.lowerBound && (s[0] = Math.max(s[0], l.lowerBound)),
                                    l.upperBound && s[1] > l.upperBound && (s[1] = Math.min(s[1], l.upperBound)),
                                    s[0] === n.values[0] && s[1] === n.values[1] || (o = !0,
                                    n.values = s)
                                } else {
                                    var c = n.value;
                                    l.lowerBound && c < l.lowerBound && (c = Math.max(c, l.lowerBound)),
                                    l.upperBound && c > l.upperBound && (c = Math.min(c, l.upperBound)),
                                    c !== n.value && (o = !0,
                                    n.value = c)
                                }
                                if (a.$setViewValue(n.values || n.value),
                                t(n.handle).find(".ui-slider-tip").text(n.value),
                                i.$apply(),
                                o)
                                    return setTimeout((function() {
                                        r.slider("value", n.values || n.value)
                                    }
                                    ), 0),
                                    !1
                            }
                            )),
                            a.$render = function() {
                                f();
                                var t = !0 === l.range ? "values" : "value";
                                if (!0 === l.range || !isNaN(a.$viewValue) || a.$viewValue instanceof Array ? l.range && !angular.isDefined(a.$viewValue) && (a.$viewValue = [0, 0]) : a.$viewValue = 0,
                                !0 === l.range) {
                                    if (a.$viewValue && angular.isString(a.$viewValue) && 1 === (a.$viewValue.match(/,/g) || []).length) {
                                        var e = a.$viewValue.split(",");
                                        a.$viewValue = [Number(e[0]), Number(e[1])]
                                    }
                                    angular.isDefined(l.min) && l.min > a.$viewValue[0] && (a.$viewValue[0] = l.min),
                                    angular.isDefined(l.max) && l.max < a.$viewValue[1] && (a.$viewValue[1] = l.max),
                                    a.$viewValue[0] > a.$viewValue[1] && (u.min >= a.$viewValue[1] && (a.$viewValue[1] = u.min),
                                    u.max <= a.$viewValue[0] && (a.$viewValue[0] = u.max)),
                                    u.min = a.$viewValue[0],
                                    u.max = a.$viewValue[1]
                                }
                                r.slider(t, a.$viewValue)
                            }
                            ,
                            i.$watch(o.ngModel, (function() {
                                !0 === l.range ? (a.$render(),
                                t(r).find(".ui-slider-tip").each((function(e, n) {
                                    t(n).text(a.$viewValue[e])
                                }
                                ))) : t(r).find(".ui-slider-tip").text(a.$viewValue)
                            }
                            ), !0),
                            i.$on("$destroy", m),
                            r.one("$destroy", m)
                        },
                        post: function(e, i, r, o) {
                            var a = angular.extend({}, e.$eval(r.uiSlider));
                            if (angular.forEach(["min", "max", "step", "tick", "tip"], (function(t) {
                                angular.isDefined(r[t]) && (a[t] = r[t])
                            }
                            )),
                            angular.isDefined(a.tick) && angular.isDefined(a.step))
                                for (var s = parseInt((parseInt(a.max) - parseInt(a.min)) / parseInt(a.step)), c = s; c >= 0; c--) {
                                    var l = c / s * 100 + "%";
                                    t("<div/>").addClass("ui-slider-tick").appendTo(i).css({
                                        left: l
                                    })
                                }
                            angular.isDefined(a.tip) && n((function() {
                                var e = i.find(".ui-slider-handle");
                                e && e.length > 1 && o.$viewValue && angular.isArray(o.$viewValue) ? (t(e[0]).append('<div class="ui-slider-tip">' + o.$viewValue[0] + "</div>"),
                                t(e[1]).append('<div class="ui-slider-tip">' + o.$viewValue[1] + "</div>")) : i.find(".ui-slider-handle").append('<div class="ui-slider-tip">' + o.$viewValue + "</div>")
                            }
                            ), 10)
                        }
                    }
                }
            }
        }
        ])
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    t.exports && (t.exports = "luegg.directives"),
    function(t, e) {
        "use strict";
        function n(e, n, i) {
            e.directive(n, ["$parse", "$window", "$timeout", function(e, r, o) {
                return {
                    priority: 1,
                    restrict: "A",
                    link: function(a, s, c) {
                        var l = s[0]
                          , u = function(t, e, n) {
                            if ("" !== e) {
                                var i = t(e);
                                return void 0 !== i.assign ? function(t, e, n) {
                                    return {
                                        getValue: function() {
                                            return t(n)
                                        },
                                        setValue: function(i) {
                                            i !== t(n) && n.$apply((function() {
                                                e(n, i)
                                            }
                                            ))
                                        }
                                    }
                                }(i, i.assign, n) : function(t, e) {
                                    return {
                                        getValue: function() {
                                            return t(e)
                                        },
                                        setValue: function() {}
                                    }
                                }(i, n)
                            }
                            return r = !0,
                            {
                                getValue: function() {
                                    return r
                                },
                                setValue: function(t) {
                                    r = t
                                }
                            };
                            var r
                        }(e, c[n], a);
                        function d() {
                            u.getValue() && !i.isAttached(l) && o((function() {
                                i.scroll(l)
                            }
                            ))
                        }
                        function p() {
                            u.setValue(i.isAttached(l))
                        }
                        o(d, 0, !1),
                        s[0].hasAttribute("force-glue") || s.on("scroll", p);
                        var h = !1;
                        t.forEach(s.children(), (function(t) {
                            t.hasAttribute("scroll-glue-anchor") && (h = !0,
                            a.$watch((function() {
                                return t.offsetHeight
                            }
                            ), (function() {
                                d()
                            }
                            )))
                        }
                        )),
                        h || (a.$watch(d),
                        r.addEventListener("resize", d, !1)),
                        s.on("$destroy", (function() {
                            s.unbind("scroll", p)
                        }
                        )),
                        a.$on("$destroy", (function() {
                            r.removeEventListener("resize", d, !1)
                        }
                        ))
                    }
                }
            }
            ])
        }
        var i = {
            isAttached: function(t) {
                return t.scrollTop + t.clientHeight + 1 >= t.scrollHeight
            },
            scroll: function(t) {
                t.scrollTop = t.scrollHeight
            }
        }
          , r = t.module("luegg.directives", []);
        n(r, "scrollGlue", i),
        n(r, "scrollGlueTop", {
            isAttached: function(t) {
                return t.scrollTop <= 1
            },
            scroll: function(t) {
                t.scrollTop = 0
            }
        }),
        n(r, "scrollGlueBottom", i),
        n(r, "scrollGlueLeft", {
            isAttached: function(t) {
                return t.scrollLeft <= 1
            },
            scroll: function(t) {
                t.scrollLeft = 0
            }
        }),
        n(r, "scrollGlueRight", {
            isAttached: function(t) {
                return t.scrollLeft + t.clientWidth + 1 >= t.scrollWidth
            },
            scroll: function(t) {
                t.scrollLeft = t.scrollWidth
            }
        })
    }(angular)
}
, function(t, e, n) {
    n(946),
    t.exports = "ngFileUpload"
}
, function(t, e, n) {
    (function(t, e) {
        var n;
        /**!
 * AngularJS file upload directives and services. Supports: file upload/drop/paste, resume, cancel/abort,
 * progress, resize, thumbnail, preview, validation and CORS
 * FileAPI Flash shim for old browsers not supporting FormData
 * @author  Danial  <danial.farid@gmail.com>
 * @version 12.2.13
 */
        !function() {
            function t(t, e) {
                window.XMLHttpRequest.prototype[t] = e(window.XMLHttpRequest.prototype[t])
            }
            function e(t, e, n) {
                try {
                    Object.defineProperty(t, e, {
                        get: n
                    })
                } catch (t) {}
            }
            if (window.FileAPI || (window.FileAPI = {}),
            !window.XMLHttpRequest)
                throw "AJAX is not supported. XMLHttpRequest is not defined.";
            if (FileAPI.shouldLoad = !window.FormData || FileAPI.forceLoad,
            FileAPI.shouldLoad) {
                var n = function(t) {
                    if (!t.__listeners) {
                        t.upload || (t.upload = {}),
                        t.__listeners = [];
                        var e = t.upload.addEventListener;
                        t.upload.addEventListener = function(n, i) {
                            t.__listeners[n] = i,
                            e && e.apply(this, arguments)
                        }
                    }
                };
                t("open", (function(t) {
                    return function(e, i, r) {
                        n(this),
                        this.__url = i;
                        try {
                            t.apply(this, [e, i, r])
                        } catch (n) {
                            n.message.indexOf("Access is denied") > -1 && (this.__origError = n,
                            t.apply(this, [e, "_fix_for_ie_crossdomain__", r]))
                        }
                    }
                }
                )),
                t("getResponseHeader", (function(t) {
                    return function(e) {
                        return this.__fileApiXHR && this.__fileApiXHR.getResponseHeader ? this.__fileApiXHR.getResponseHeader(e) : null == t ? null : t.apply(this, [e])
                    }
                }
                )),
                t("getAllResponseHeaders", (function(t) {
                    return function() {
                        return this.__fileApiXHR && this.__fileApiXHR.getAllResponseHeaders ? this.__fileApiXHR.getAllResponseHeaders() : null == t ? null : t.apply(this)
                    }
                }
                )),
                t("abort", (function(t) {
                    return function() {
                        return this.__fileApiXHR && this.__fileApiXHR.abort ? this.__fileApiXHR.abort() : null == t ? null : t.apply(this)
                    }
                }
                )),
                t("setRequestHeader", (function(t) {
                    return function(e, i) {
                        if ("__setXHR_" === e) {
                            n(this);
                            var r = i(this);
                            r instanceof Function && r(this)
                        } else
                            this.__requestHeaders = this.__requestHeaders || {},
                            this.__requestHeaders[e] = i,
                            t.apply(this, arguments)
                    }
                }
                )),
                t("send", (function(t) {
                    return function() {
                        var n = this;
                        if (arguments[0] && arguments[0].__isFileAPIShim) {
                            for (var i = arguments[0], r = {
                                url: n.__url,
                                jsonp: !1,
                                cache: !0,
                                complete: function(t, i) {
                                    t && angular.isString(t) && -1 !== t.indexOf("#2174") && (t = null),
                                    n.__completed = !0,
                                    !t && n.__listeners.load && n.__listeners.load({
                                        type: "load",
                                        loaded: n.__loaded,
                                        total: n.__total,
                                        target: n,
                                        lengthComputable: !0
                                    }),
                                    !t && n.__listeners.loadend && n.__listeners.loadend({
                                        type: "loadend",
                                        loaded: n.__loaded,
                                        total: n.__total,
                                        target: n,
                                        lengthComputable: !0
                                    }),
                                    "abort" === t && n.__listeners.abort && n.__listeners.abort({
                                        type: "abort",
                                        loaded: n.__loaded,
                                        total: n.__total,
                                        target: n,
                                        lengthComputable: !0
                                    }),
                                    void 0 !== i.status && e(n, "status", (function() {
                                        return 0 === i.status && t && "abort" !== t ? 500 : i.status
                                    }
                                    )),
                                    void 0 !== i.statusText && e(n, "statusText", (function() {
                                        return i.statusText
                                    }
                                    )),
                                    e(n, "readyState", (function() {
                                        return 4
                                    }
                                    )),
                                    void 0 !== i.response && e(n, "response", (function() {
                                        return i.response
                                    }
                                    ));
                                    var r = i.responseText || (t && 0 === i.status && "abort" !== t ? t : void 0);
                                    e(n, "responseText", (function() {
                                        return r
                                    }
                                    )),
                                    e(n, "response", (function() {
                                        return r
                                    }
                                    )),
                                    t && e(n, "err", (function() {
                                        return t
                                    }
                                    )),
                                    n.__fileApiXHR = i,
                                    n.onreadystatechange && n.onreadystatechange(),
                                    n.onload && n.onload()
                                },
                                progress: function(t) {
                                    if (t.target = n,
                                    n.__listeners.progress && n.__listeners.progress(t),
                                    n.__total = t.total,
                                    n.__loaded = t.loaded,
                                    t.total === t.loaded) {
                                        var e = this;
                                        setTimeout((function() {
                                            n.__completed || (n.getAllResponseHeaders = function() {}
                                            ,
                                            e.complete(null, {
                                                status: 204,
                                                statusText: "No Content"
                                            }))
                                        }
                                        ), FileAPI.noContentTimeout || 1e4)
                                    }
                                },
                                headers: n.__requestHeaders,
                                data: {},
                                files: {}
                            }, o = 0; o < i.data.length; o++) {
                                var a = i.data[o];
                                null != a.val && null != a.val.name && null != a.val.size && null != a.val.type ? r.files[a.key] = a.val : r.data[a.key] = a.val
                            }
                            setTimeout((function() {
                                if (!FileAPI.hasFlash)
                                    throw 'Adode Flash Player need to be installed. To check ahead use "FileAPI.hasFlash"';
                                n.__fileApiXHR = FileAPI.upload(r)
                            }
                            ), 1)
                        } else {
                            if (this.__origError)
                                throw this.__origError;
                            t.apply(n, arguments)
                        }
                    }
                }
                )),
                window.XMLHttpRequest.__isFileAPIShim = !0,
                window.FormData = FormData = function() {
                    return {
                        append: function(t, e, n) {
                            e.__isFileAPIBlobShim && (e = e.data[0]),
                            this.data.push({
                                key: t,
                                val: e,
                                name: n
                            })
                        },
                        data: [],
                        __isFileAPIShim: !0
                    }
                }
                ,
                window.Blob = Blob = function(t) {
                    return {
                        data: t,
                        __isFileAPIBlobShim: !0
                    }
                }
            }
        }(),
        function() {
            function n() {
                try {
                    if (new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))
                        return !0
                } catch (t) {
                    if (void 0 !== navigator.mimeTypes["application/x-shockwave-flash"])
                        return !0
                }
                return !1
            }
            function i(n) {
                var i = 0
                  , r = 0;
                if (t)
                    return e(n).offset();
                if (n.offsetParent)
                    do {
                        i += n.offsetLeft - n.scrollLeft,
                        r += n.offsetTop - n.scrollTop,
                        n = n.offsetParent
                    } while (n);
                return {
                    left: i,
                    top: r
                }
            }
            if (FileAPI.shouldLoad) {
                if (FileAPI.hasFlash = n(),
                FileAPI.forceLoad && (FileAPI.html5 = !1),
                !FileAPI.upload) {
                    var r, o, a, s, c, l = document.createElement("script"), u = document.getElementsByTagName("script");
                    if (window.FileAPI.jsUrl)
                        r = window.FileAPI.jsUrl;
                    else if (window.FileAPI.jsPath)
                        o = window.FileAPI.jsPath;
                    else
                        for (a = 0; a < u.length; a++)
                            if ((s = (c = u[a].src).search(/\/ng\-file\-upload[\-a-zA-z0-9\.]*\.js/)) > -1) {
                                o = c.substring(0, s + 1);
                                break
                            }
                    null == FileAPI.staticPath && (FileAPI.staticPath = o),
                    l.setAttribute("src", r || o + "FileAPI.min.js"),
                    document.getElementsByTagName("head")[0].appendChild(l)
                }
                FileAPI.ngfFixIE = function(t, e, r) {
                    if (!n())
                        throw 'Adode Flash Player need to be installed. To check ahead use "FileAPI.hasFlash"';
                    t.bind("mouseenter", (function() {
                        var n = e.parent();
                        t.attr("disabled") ? n && n.removeClass("js-fileapi-wrapper") : (e.attr("__ngf_flash_") || (e.unbind("change"),
                        e.unbind("click"),
                        e.bind("change", (function(t) {
                            o.apply(this, [t]),
                            r.apply(this, [t])
                        }
                        )),
                        e.attr("__ngf_flash_", "true")),
                        n.addClass("js-fileapi-wrapper"),
                        function(t) {
                            return "input" === t[0].tagName.toLowerCase() && t.attr("type") && "file" === t.attr("type").toLowerCase()
                        }(t) || (n.css("position", "absolute").css("top", i(t[0]).top + "px").css("left", i(t[0]).left + "px").css("width", t[0].offsetWidth + "px").css("height", t[0].offsetHeight + "px").css("filter", "alpha(opacity=0)").css("display", t.css("display")).css("overflow", "hidden").css("z-index", "900000").css("visibility", "visible"),
                        e.css("width", t[0].offsetWidth + "px").css("height", t[0].offsetHeight + "px").css("position", "absolute").css("top", "0px").css("left", "0px")))
                    }
                    ));
                    var o = function(t) {
                        for (var e = FileAPI.getFiles(t), n = 0; n < e.length; n++)
                            void 0 === e[n].size && (e[n].size = 0),
                            void 0 === e[n].name && (e[n].name = "file"),
                            void 0 === e[n].type && (e[n].type = "undefined");
                        t.target || (t.target = {}),
                        t.target.files = e,
                        t.target.files !== e && (t.__files_ = e),
                        (t.__files_ || t.target.files).item = function(e) {
                            return (t.__files_ || t.target.files)[e] || null
                        }
                    }
                }
                ,
                FileAPI.disableFileInput = function(t, e) {
                    e ? t.removeClass("js-fileapi-wrapper") : t.addClass("js-fileapi-wrapper")
                }
            }
        }(),
        window.FileReader || (window.FileReader = function() {
            var t = this
              , e = !1;
            this.listeners = {},
            this.addEventListener = function(e, n) {
                t.listeners[e] = t.listeners[e] || [],
                t.listeners[e].push(n)
            }
            ,
            this.removeEventListener = function(e, n) {
                t.listeners[e] && t.listeners[e].splice(t.listeners[e].indexOf(n), 1)
            }
            ,
            this.dispatchEvent = function(e) {
                var n = t.listeners[e.type];
                if (n)
                    for (var i = 0; i < n.length; i++)
                        n[i].call(t, e)
            }
            ,
            this.onabort = this.onerror = this.onload = this.onloadstart = this.onloadend = this.onprogress = null;
            var n = function(e, n) {
                var i = {
                    type: e,
                    target: t,
                    loaded: n.loaded,
                    total: n.total,
                    error: n.error
                };
                return null != n.result && (i.target.result = n.result),
                i
            }
              , i = function(i) {
                var r;
                e || (e = !0,
                t.onloadstart && t.onloadstart(n("loadstart", i))),
                "load" === i.type ? (t.onloadend && t.onloadend(n("loadend", i)),
                r = n("load", i),
                t.onload && t.onload(r),
                t.dispatchEvent(r)) : "progress" === i.type ? (r = n("progress", i),
                t.onprogress && t.onprogress(r),
                t.dispatchEvent(r)) : (r = n("error", i),
                t.onerror && t.onerror(r),
                t.dispatchEvent(r))
            };
            this.readAsDataURL = function(t) {
                FileAPI.readAsDataURL(t, i)
            }
            ,
            this.readAsText = function(t) {
                FileAPI.readAsText(t, i)
            }
        }
        )/**!
 * AngularJS file upload directives and services. Supoorts: file upload/drop/paste, resume, cancel/abort,
 * progress, resize, thumbnail, preview, validation and CORS
 * @author  Danial  <danial.farid@gmail.com>
 * @version 12.2.13
 */
        ,
        !window.XMLHttpRequest || window.FileAPI && FileAPI.shouldLoad || (window.XMLHttpRequest.prototype.setRequestHeader = (n = window.XMLHttpRequest.prototype.setRequestHeader,
        function(t, e) {
            if ("__setXHR_" === t) {
                var i = e(this);
                i instanceof Function && i(this)
            } else
                n.apply(this, arguments)
        }
        ));
        var i = angular.module("ngFileUpload", []);
        i.version = "12.2.13",
        i.service("UploadBase", ["$http", "$q", "$timeout", function(t, e, n) {
            var r = this;
            r.promisesCount = 0,
            this.isResumeSupported = function() {
                return window.Blob && window.Blob.prototype.slice
            }
            ;
            var o = this.isResumeSupported();
            function a(i) {
                i.method = i.method || "POST",
                i.headers = i.headers || {};
                var a = i._deferred = i._deferred || e.defer()
                  , s = a.promise;
                function c(t) {
                    a.notify && a.notify(t),
                    s.progressFunc && n((function() {
                        s.progressFunc(t)
                    }
                    ))
                }
                function l(t) {
                    return null != i._start && o ? {
                        loaded: t.loaded + i._start,
                        total: i._file && i._file.size || t.total,
                        type: t.type,
                        config: i,
                        lengthComputable: !0,
                        target: t.target
                    } : t
                }
                function u() {
                    t(i).then((function(t) {
                        if (o && i._chunkSize && !i._finished && i._file) {
                            var e = i._file && i._file.size || 0;
                            c({
                                loaded: Math.min(i._end, e),
                                total: e,
                                config: i,
                                type: "progress"
                            }),
                            r.upload(i, !0)
                        } else
                            i._finished && delete i._finished,
                            a.resolve(t)
                    }
                    ), (function(t) {
                        a.reject(t)
                    }
                    ), (function(t) {
                        a.notify(t)
                    }
                    ))
                }
                return i.disableProgress || (i.headers.__setXHR_ = function() {
                    return function(t) {
                        t && t.upload && t.upload.addEventListener && (i.__XHR = t,
                        i.xhrFn && i.xhrFn(t),
                        t.upload.addEventListener("progress", (function(t) {
                            t.config = i,
                            c(l(t))
                        }
                        ), !1),
                        t.upload.addEventListener("load", (function(t) {
                            t.lengthComputable && (t.config = i,
                            c(l(t)))
                        }
                        ), !1))
                    }
                }
                ),
                o ? i._chunkSize && i._end && !i._finished ? (i._start = i._end,
                i._end += i._chunkSize,
                u()) : i.resumeSizeUrl ? t.get(i.resumeSizeUrl).then((function(t) {
                    i.resumeSizeResponseReader ? i._start = i.resumeSizeResponseReader(t.data) : i._start = parseInt((null == t.data.size ? t.data : t.data.size).toString()),
                    i._chunkSize && (i._end = i._start + i._chunkSize),
                    u()
                }
                ), (function(t) {
                    throw t
                }
                )) : i.resumeSize ? i.resumeSize().then((function(t) {
                    i._start = t,
                    i._chunkSize && (i._end = i._start + i._chunkSize),
                    u()
                }
                ), (function(t) {
                    throw t
                }
                )) : (i._chunkSize && (i._start = 0,
                i._end = i._start + i._chunkSize),
                u()) : u(),
                s.success = function(t) {
                    return s.then((function(e) {
                        t(e.data, e.status, e.headers, i)
                    }
                    )),
                    s
                }
                ,
                s.error = function(t) {
                    return s.then(null, (function(e) {
                        t(e.data, e.status, e.headers, i)
                    }
                    )),
                    s
                }
                ,
                s.progress = function(t) {
                    return s.progressFunc = t,
                    s.then(null, null, (function(e) {
                        t(e)
                    }
                    )),
                    s
                }
                ,
                s.abort = s.pause = function() {
                    return i.__XHR && n((function() {
                        i.__XHR.abort()
                    }
                    )),
                    s
                }
                ,
                s.xhr = function(t) {
                    var e;
                    return i.xhrFn = (e = i.xhrFn,
                    function() {
                        e && e.apply(s, arguments),
                        t.apply(s, arguments)
                    }
                    ),
                    s
                }
                ,
                r.promisesCount++,
                s.finally && s.finally instanceof Function && s.finally((function() {
                    r.promisesCount--
                }
                )),
                s
            }
            function s(t) {
                var e = {};
                for (var n in t)
                    t.hasOwnProperty(n) && (e[n] = t[n]);
                return e
            }
            this.isUploadInProgress = function() {
                return r.promisesCount > 0
            }
            ,
            this.rename = function(t, e) {
                return t.ngfName = e,
                t
            }
            ,
            this.jsonBlob = function(t) {
                null == t || angular.isString(t) || (t = JSON.stringify(t));
                var e = new window.Blob([t],{
                    type: "application/json"
                });
                return e._ngfBlob = !0,
                e
            }
            ,
            this.json = function(t) {
                return angular.toJson(t)
            }
            ,
            this.isFile = function(t) {
                return null != t && (t instanceof window.Blob || t.flashId && t.name && t.size)
            }
            ,
            this.upload = function(t, e) {
                function n(e, i, a) {
                    if (void 0 !== i)
                        if (angular.isDate(i) && (i = i.toISOString()),
                        angular.isString(i))
                            e.append(a, i);
                        else if (r.isFile(i)) {
                            var s = function(e, n) {
                                if (e._ngfBlob)
                                    return e;
                                if (t._file = t._file || e,
                                null != t._start && o) {
                                    t._end && t._end >= e.size && (t._finished = !0,
                                    t._end = e.size);
                                    var i = e.slice(t._start, t._end || e.size);
                                    return i.name = e.name,
                                    i.ngfName = e.ngfName,
                                    t._chunkSize && (n.append("_chunkSize", t._chunkSize),
                                    n.append("_currentChunkSize", t._end - t._start),
                                    n.append("_chunkNumber", Math.floor(t._start / t._chunkSize)),
                                    n.append("_totalSize", t._file.size)),
                                    i
                                }
                                return e
                            }(i, e)
                              , c = a.split(",");
                            c[1] && (s.ngfName = c[1].replace(/^\s+|\s+$/g, ""),
                            a = c[0]),
                            t._fileKey = t._fileKey || a,
                            e.append(a, s, s.ngfName || s.name)
                        } else if (angular.isObject(i)) {
                            if (i.$$ngfCircularDetection)
                                throw "ngFileUpload: Circular reference in config.data. Make sure specified data for Upload.upload() has no circular reference: " + a;
                            i.$$ngfCircularDetection = !0;
                            try {
                                for (var l in i)
                                    if (i.hasOwnProperty(l) && "$$ngfCircularDetection" !== l) {
                                        var u = null == t.objectKey ? "[i]" : t.objectKey;
                                        i.length && parseInt(l) > -1 && (u = null == t.arrayKey ? u : t.arrayKey),
                                        n(e, i[l], a + u.replace(/[ik]/g, l))
                                    }
                            } finally {
                                delete i.$$ngfCircularDetection
                            }
                        } else
                            e.append(a, i)
                }
                return e || (t = s(t)),
                t._isDigested || (t._isDigested = !0,
                t._chunkSize = r.translateScalars(t.resumeChunkSize),
                t._chunkSize = t._chunkSize ? parseInt(t._chunkSize.toString()) : null,
                t.headers = t.headers || {},
                t.headers["Content-Type"] = void 0,
                t.transformRequest = t.transformRequest ? angular.isArray(t.transformRequest) ? t.transformRequest : [t.transformRequest] : [],
                t.transformRequest.push((function(e) {
                    var i, r = new window.FormData;
                    for (i in e = e || t.fields || {},
                    t.file && (e.file = t.file),
                    e)
                        if (e.hasOwnProperty(i)) {
                            var o = e[i];
                            t.formDataAppender ? t.formDataAppender(r, i, o) : n(r, o, i)
                        }
                    return r
                }
                ))),
                a(t)
            }
            ,
            this.http = function(e) {
                return (e = s(e)).transformRequest = e.transformRequest || function(e) {
                    return window.ArrayBuffer && e instanceof window.ArrayBuffer || e instanceof window.Blob ? e : t.defaults.transformRequest[0].apply(this, arguments)
                }
                ,
                e._chunkSize = r.translateScalars(e.resumeChunkSize),
                e._chunkSize = e._chunkSize ? parseInt(e._chunkSize.toString()) : null,
                a(e)
            }
            ,
            this.translateScalars = function(t) {
                if (angular.isString(t)) {
                    if (t.search(/kb/i) === t.length - 2)
                        return parseFloat(1024 * t.substring(0, t.length - 2));
                    if (t.search(/mb/i) === t.length - 2)
                        return parseFloat(1048576 * t.substring(0, t.length - 2));
                    if (t.search(/gb/i) === t.length - 2)
                        return parseFloat(1073741824 * t.substring(0, t.length - 2));
                    if (t.search(/b/i) === t.length - 1)
                        return parseFloat(t.substring(0, t.length - 1));
                    if (t.search(/s/i) === t.length - 1)
                        return parseFloat(t.substring(0, t.length - 1));
                    if (t.search(/m/i) === t.length - 1)
                        return parseFloat(60 * t.substring(0, t.length - 1));
                    if (t.search(/h/i) === t.length - 1)
                        return parseFloat(3600 * t.substring(0, t.length - 1))
                }
                return t
            }
            ,
            this.urlToBlob = function(n) {
                var i = e.defer();
                return t({
                    url: n,
                    method: "get",
                    responseType: "arraybuffer"
                }).then((function(t) {
                    var e = new Uint8Array(t.data)
                      , r = t.headers("content-type") || "image/WebP"
                      , o = new window.Blob([e],{
                        type: r
                    })
                      , a = n.match(/.*\/(.+?)(\?.*)?$/);
                    a.length > 1 && (o.name = a[1]),
                    i.resolve(o)
                }
                ), (function(t) {
                    i.reject(t)
                }
                )),
                i.promise
            }
            ,
            this.setDefaults = function(t) {
                this.defaults = t || {}
            }
            ,
            this.defaults = {},
            this.version = i.version
        }
        ]),
        i.service("Upload", ["$parse", "$timeout", "$compile", "$q", "UploadExif", function(t, e, n, i, r) {
            var o = r;
            function a(t, e, n, r, a) {
                var s = [o.emptyPromise()];
                function c(i, c) {
                    if (0 === i.type.indexOf("image")) {
                        if (t.pattern && !o.validatePattern(i, t.pattern))
                            return;
                        t.resizeIf = function(t, e) {
                            return o.attrGetter("ngfResizeIf", n, r, {
                                $width: t,
                                $height: e,
                                $file: i
                            })
                        }
                        ;
                        var l = o.resize(i, t);
                        s.push(l),
                        l.then((function(t) {
                            e.splice(c, 1, t)
                        }
                        ), (function(t) {
                            i.$error = "resize",
                            (i.$errorMessages = i.$errorMessages || {}).resize = !0,
                            i.$errorParam = (t ? (t.message ? t.message : t) + ": " : "") + (i && i.name),
                            a.$ngfValidations.push({
                                name: "resize",
                                valid: !1
                            }),
                            o.applyModelValidation(a, e)
                        }
                        ))
                    }
                }
                for (var l = 0; l < e.length; l++)
                    c(e[l], l);
                return i.all(s)
            }
            return o.getAttrWithDefaults = function(t, e) {
                if (null != t[e])
                    return t[e];
                var n = o.defaults[e];
                return null == n || angular.isString(n) ? n : JSON.stringify(n)
            }
            ,
            o.attrGetter = function(e, n, i, r) {
                var o = this.getAttrWithDefaults(n, e);
                if (!i)
                    return o;
                try {
                    return r ? t(o)(i, r) : t(o)(i)
                } catch (t) {
                    if (e.search(/min|max|pattern/i))
                        return o;
                    throw t
                }
            }
            ,
            o.shouldUpdateOn = function(t, e, n) {
                var i = o.attrGetter("ngfModelOptions", e, n);
                return !i || !i.updateOn || i.updateOn.split(" ").indexOf(t) > -1
            }
            ,
            o.emptyPromise = function() {
                var t = i.defer()
                  , n = arguments;
                return e((function() {
                    t.resolve.apply(t, n)
                }
                )),
                t.promise
            }
            ,
            o.rejectPromise = function() {
                var t = i.defer()
                  , n = arguments;
                return e((function() {
                    t.reject.apply(t, n)
                }
                )),
                t.promise
            }
            ,
            o.happyPromise = function(t, n) {
                var r = i.defer();
                return t.then((function(t) {
                    r.resolve(t)
                }
                ), (function(t) {
                    e((function() {
                        throw t
                    }
                    )),
                    r.resolve(n)
                }
                )),
                r.promise
            }
            ,
            o.updateModel = function(n, r, s, c, l, u, d) {
                function p(i, a, l, d, p) {
                    r.$$ngfPrevValidFiles = i,
                    r.$$ngfPrevInvalidFiles = a;
                    var h = i && i.length ? i[0] : null
                      , f = a && a.length ? a[0] : null;
                    n && (o.applyModelValidation(n, i),
                    n.$setViewValue(p ? h : i)),
                    c && t(c)(s, {
                        $files: i,
                        $file: h,
                        $newFiles: l,
                        $duplicateFiles: d,
                        $invalidFiles: a,
                        $invalidFile: f,
                        $event: u
                    });
                    var m = o.attrGetter("ngfModelInvalid", r);
                    m && e((function() {
                        t(m).assign(s, p ? f : a)
                    }
                    )),
                    e((function() {}
                    ))
                }
                var h, f, m, g, v = [], y = [], b = [];
                function w() {
                    function t() {
                        e((function() {
                            p(S ? f.concat(b) : b, S ? m.concat(y) : y, l, v, x)
                        }
                        ), E && E.debounce ? E.debounce.change || E.debounce : 0)
                    }
                    var c = M ? h : b;
                    (function(t, e, n, r) {
                        var s = o.attrGetter("ngfResize", e, n);
                        if (!s || !o.isResizeSupported() || !t.length)
                            return o.emptyPromise();
                        if (s instanceof Function) {
                            var c = i.defer();
                            return s(t).then((function(i) {
                                a(i, t, e, n, r).then((function(t) {
                                    c.resolve(t)
                                }
                                ), (function(t) {
                                    c.reject(t)
                                }
                                ))
                            }
                            ), (function(t) {
                                c.reject(t)
                            }
                            ))
                        }
                        return a(s, t, e, n, r)
                    }
                    )(c, r, s, n).then((function() {
                        M ? o.validate(h, S ? f.length : 0, n, r, s).then((function(e) {
                            b = e.validsFiles,
                            y = e.invalidsFiles,
                            t()
                        }
                        )) : t()
                    }
                    ), (function() {
                        for (var e = 0; e < c.length; e++) {
                            var n = c[e];
                            if ("resize" === n.$error) {
                                var i = b.indexOf(n);
                                i > -1 && (b.splice(i, 1),
                                y.push(n)),
                                t()
                            }
                        }
                    }
                    ))
                }
                f = r.$$ngfPrevValidFiles || [],
                m = r.$$ngfPrevInvalidFiles || [],
                n && n.$modelValue && (g = n.$modelValue,
                f = angular.isArray(g) ? g : [g]);
                var S = o.attrGetter("ngfKeep", r, s);
                h = (l || []).slice(0),
                "distinct" !== S && !0 !== o.attrGetter("ngfKeepDistinct", r, s) || function() {
                    function t(t, e) {
                        return t.name === e.name && (t.$ngfOrigSize || t.size) === (e.$ngfOrigSize || e.size) && t.type === e.type
                    }
                    function e(e) {
                        var n;
                        for (n = 0; n < f.length; n++)
                            if (t(e, f[n]))
                                return !0;
                        for (n = 0; n < m.length; n++)
                            if (t(e, m[n]))
                                return !0;
                        return !1
                    }
                    if (l) {
                        h = [],
                        v = [];
                        for (var n = 0; n < l.length; n++)
                            e(l[n]) ? v.push(l[n]) : h.push(l[n])
                    }
                }();
                var x = !S && !o.attrGetter("ngfMultiple", r, s) && !o.attrGetter("multiple", r);
                if (!S || h.length) {
                    o.attrGetter("ngfBeforeModelChange", r, s, {
                        $files: l,
                        $file: l && l.length ? l[0] : null,
                        $newFiles: h,
                        $duplicateFiles: v,
                        $event: u
                    });
                    var M = o.attrGetter("ngfValidateAfterResize", r, s)
                      , E = o.attrGetter("ngfModelOptions", r, s);
                    o.validate(h, S ? f.length : 0, n, r, s).then((function(t) {
                        d ? p(h, [], l, v, x) : (E && E.allowInvalid || M ? b = h : (b = t.validFiles,
                        y = t.invalidFiles),
                        o.attrGetter("ngfFixOrientation", r, s) && o.isExifSupported() ? function(t, e, n) {
                            var r = [o.emptyPromise()];
                            return angular.forEach(t, (function(i, a) {
                                0 === i.type.indexOf("image/jpeg") && o.attrGetter("ngfFixOrientation", e, n, {
                                    $file: i
                                }) && r.push(o.happyPromise(o.applyExifRotation(i), i).then((function(e) {
                                    t.splice(a, 1, e)
                                }
                                )))
                            }
                            )),
                            i.all(r)
                        }(b, r, s).then((function() {
                            w()
                        }
                        )) : w())
                    }
                    ))
                }
            }
            ,
            o
        }
        ]),
        i.directive("ngfSelect", ["$parse", "$timeout", "$compile", "Upload", function(t, e, n, i) {
            var r = [];
            function o(t, e, n, o, a, s, c, l) {
                var u = function(t, e) {
                    return l.attrGetter(t, n, e)
                };
                function d() {
                    return "input" === e[0].tagName.toLowerCase() && n.type && "file" === n.type.toLowerCase()
                }
                function p() {
                    return u("ngfChange") || u("ngfSelect")
                }
                function h(e) {
                    if (l.shouldUpdateOn("change", n, t)) {
                        var i = e.__files_ || e.target && e.target.files
                          , r = [];
                        if (!i)
                            return;
                        for (var a = 0; a < i.length; a++)
                            r.push(i[a]);
                        l.updateModel(o, n, t, p(), r.length ? r : null, e)
                    }
                }
                l.registerModelChangeValidator(o, n, t);
                var f = [];
                u("ngfMultiple") && f.push(t.$watch(u("ngfMultiple"), (function() {
                    v.attr("multiple", u("ngfMultiple", t))
                }
                ))),
                u("ngfCapture") && f.push(t.$watch(u("ngfCapture"), (function() {
                    v.attr("capture", u("ngfCapture", t))
                }
                ))),
                u("ngfAccept") && f.push(t.$watch(u("ngfAccept"), (function() {
                    v.attr("accept", u("ngfAccept", t))
                }
                ))),
                f.push(n.$observe("accept", (function() {
                    v.attr("accept", u("accept"))
                }
                )));
                var m = 0
                  , g = 0;
                var v = e;
                function y(e) {
                    l.shouldUpdateOn("click", n, t) && v.val() && (v.val(null),
                    l.updateModel(o, n, t, p(), null, e, !0))
                }
                d() || (v = function() {
                    if (d())
                        return e;
                    var t = angular.element('<input type="file">')
                      , i = angular.element("<label>upload</label>");
                    return i.css("visibility", "hidden").css("position", "absolute").css("overflow", "hidden").css("width", "0px").css("height", "0px").css("border", "none").css("margin", "0px").css("padding", "0px").attr("tabindex", "-1"),
                    function(t, i) {
                        function r(e) {
                            t.attr("id", "ngf-" + e),
                            i.attr("id", "ngf-label-" + e)
                        }
                        for (var o = 0; o < e[0].attributes.length; o++) {
                            var a = e[0].attributes[o];
                            "type" !== a.name && "class" !== a.name && "style" !== a.name && ("id" === a.name ? (r(a.value),
                            f.push(n.$observe("id", r))) : t.attr(a.name, a.value || "required" !== a.name && "multiple" !== a.name ? a.value : a.name))
                        }
                    }(t, i),
                    r.push({
                        el: e,
                        ref: i
                    }),
                    document.body.appendChild(i.append(t)[0]),
                    t
                }()),
                v.bind("change", h),
                d() ? e.bind("click", y) : e.bind("click touchstart touchend", (function(n) {
                    if (e.attr("disabled"))
                        return !1;
                    if (!u("ngfSelectDisabled", t)) {
                        var o = function(t) {
                            var e = t.changedTouches || t.originalEvent && t.originalEvent.changedTouches;
                            if (e) {
                                if ("touchstart" === t.type)
                                    return g = e[0].clientX,
                                    m = e[0].clientY,
                                    !0;
                                if ("touchend" === t.type) {
                                    var n = e[0].clientX
                                      , i = e[0].clientY;
                                    if (Math.abs(n - g) > 20 || Math.abs(i - m) > 20)
                                        return t.stopPropagation(),
                                        t.preventDefault(),
                                        !1
                                }
                                return !0
                            }
                        }(n);
                        if (null != o)
                            return o;
                        y(n);
                        try {
                            d() || document.body.contains(v[0]) || (r.push({
                                el: e,
                                ref: v.parent()
                            }),
                            document.body.appendChild(v.parent()[0]),
                            v.bind("change", h))
                        } catch (t) {}
                        return !function(t) {
                            var e = t.match(/Android[^\d]*(\d+)\.(\d+)/);
                            if (e && e.length > 2) {
                                var n = i.defaults.androidFixMinorVersion || 4;
                                return parseInt(e[1]) < 4 || parseInt(e[1]) === n && parseInt(e[2]) < n
                            }
                            return -1 === t.indexOf("Chrome") && /.*Windows.*Safari.*/.test(t)
                        }(navigator.userAgent) ? v[0].click() : setTimeout((function() {
                            v[0].click()
                        }
                        ), 0),
                        !1
                    }
                }
                )),
                -1 !== navigator.appVersion.indexOf("MSIE 10") && v.bind("click", (function t(e) {
                    if (v && !v.attr("__ngf_ie10_Fix_")) {
                        if (!v[0].parentNode)
                            return void (v = null);
                        e.preventDefault(),
                        e.stopPropagation(),
                        v.unbind("click");
                        var n = v.clone();
                        return v.replaceWith(n),
                        (v = n).attr("__ngf_ie10_Fix_", "true"),
                        v.bind("change", h),
                        v.bind("click", t),
                        v[0].click(),
                        !1
                    }
                    v.removeAttr("__ngf_ie10_Fix_")
                }
                )),
                o && o.$formatters.push((function(t) {
                    return null != t && 0 !== t.length || v.val() && v.val(null),
                    t
                }
                )),
                t.$on("$destroy", (function() {
                    d() || v.parent().remove(),
                    angular.forEach(f, (function(t) {
                        t()
                    }
                    ))
                }
                )),
                s((function() {
                    for (var t = 0; t < r.length; t++) {
                        var e = r[t];
                        document.body.contains(e.el[0]) || (r.splice(t, 1),
                        e.ref.remove())
                    }
                }
                )),
                window.FileAPI && window.FileAPI.ngfFixIE && window.FileAPI.ngfFixIE(e, v, h)
            }
            return {
                restrict: "AEC",
                require: "?ngModel",
                link: function(t, n, r, a) {
                    o(t, n, r, a, 0, e, 0, i)
                }
            }
        }
        ]),
        function() {
            function t(t, e, n, i, r, o, a, s) {
                function c(o) {
                    var a = t.attrGetter("ngfNoObjectUrl", r, n);
                    t.dataUrl(o, a).finally((function() {
                        e((function() {
                            var t = (a ? o.$ngfDataUrl : o.$ngfBlobUrl) || o.$ngfDataUrl;
                            s ? i.css("background-image", "url('" + (t || "") + "')") : i.attr("src", t),
                            t ? i.removeClass("ng-hide") : i.addClass("ng-hide")
                        }
                        ))
                    }
                    ))
                }
                e((function() {
                    var e = n.$watch(r[o], (function(e) {
                        var l, u = a;
                        if ("ngfThumbnail" === o && (u || (u = {
                            width: i[0].naturalWidth || i[0].clientWidth,
                            height: i[0].naturalHeight || i[0].clientHeight
                        }),
                        0 === u.width && window.getComputedStyle)) {
                            var d = getComputedStyle(i[0]);
                            d.width && d.width.indexOf("px") > -1 && d.height && d.height.indexOf("px") > -1 && (u = {
                                width: parseInt(d.width.slice(0, -2)),
                                height: parseInt(d.height.slice(0, -2))
                            })
                        }
                        if (angular.isString(e))
                            return i.removeClass("ng-hide"),
                            s ? i.css("background-image", "url('" + e + "')") : i.attr("src", e);
                        !e || !e.type || 0 !== e.type.search("img" === (l = i[0]).tagName.toLowerCase() ? "image" : "audio" === l.tagName.toLowerCase() ? "audio" : "video" === l.tagName.toLowerCase() ? "video" : /./) || s && 0 !== e.type.indexOf("image") ? i.addClass("ng-hide") : u && t.isResizeSupported() ? (u.resizeIf = function(i, o) {
                            return t.attrGetter("ngfResizeIf", r, n, {
                                $width: i,
                                $height: o,
                                $file: e
                            })
                        }
                        ,
                        t.resize(e, u).then((function(t) {
                            c(t)
                        }
                        ), (function(t) {
                            throw t
                        }
                        ))) : c(e)
                    }
                    ));
                    n.$on("$destroy", (function() {
                        e()
                    }
                    ))
                }
                ))
            }
            i.service("UploadDataUrl", ["UploadBase", "$timeout", "$q", function(t, e, n) {
                var i = t;
                return i.base64DataUrl = function(t) {
                    if (angular.isArray(t)) {
                        var e = n.defer()
                          , r = 0;
                        return angular.forEach(t, (function(n) {
                            i.dataUrl(n, !0).finally((function() {
                                if (++r === t.length) {
                                    var n = [];
                                    angular.forEach(t, (function(t) {
                                        n.push(t.$ngfDataUrl)
                                    }
                                    )),
                                    e.resolve(n, t)
                                }
                            }
                            ))
                        }
                        )),
                        e.promise
                    }
                    return i.dataUrl(t, !0)
                }
                ,
                i.dataUrl = function(t, r) {
                    if (!t)
                        return i.emptyPromise(t, t);
                    if (r && null != t.$ngfDataUrl || !r && null != t.$ngfBlobUrl)
                        return i.emptyPromise(r ? t.$ngfDataUrl : t.$ngfBlobUrl, t);
                    var o = r ? t.$$ngfDataUrlPromise : t.$$ngfBlobUrlPromise;
                    if (o)
                        return o;
                    var a = n.defer();
                    return e((function() {
                        if (window.FileReader && t && (!window.FileAPI || -1 === navigator.userAgent.indexOf("MSIE 8") || t.size < 2e4) && (!window.FileAPI || -1 === navigator.userAgent.indexOf("MSIE 9") || t.size < 4e6)) {
                            var n = window.URL || window.webkitURL;
                            if (n && n.createObjectURL && !r) {
                                var o;
                                try {
                                    o = n.createObjectURL(t)
                                } catch (n) {
                                    return void e((function() {
                                        t.$ngfBlobUrl = "",
                                        a.reject()
                                    }
                                    ))
                                }
                                e((function() {
                                    if (t.$ngfBlobUrl = o,
                                    o) {
                                        a.resolve(o, t),
                                        i.blobUrls = i.blobUrls || [],
                                        i.blobUrlsTotalSize = i.blobUrlsTotalSize || 0,
                                        i.blobUrls.push({
                                            url: o,
                                            size: t.size
                                        }),
                                        i.blobUrlsTotalSize += t.size || 0;
                                        for (var e = i.defaults.blobUrlsMaxMemory || 268435456, r = i.defaults.blobUrlsMaxQueueSize || 200; (i.blobUrlsTotalSize > e || i.blobUrls.length > r) && i.blobUrls.length > 1; ) {
                                            var s = i.blobUrls.splice(0, 1)[0];
                                            n.revokeObjectURL(s.url),
                                            i.blobUrlsTotalSize -= s.size
                                        }
                                    }
                                }
                                ))
                            } else {
                                var s = new FileReader;
                                s.onload = function(n) {
                                    e((function() {
                                        t.$ngfDataUrl = n.target.result,
                                        a.resolve(n.target.result, t),
                                        e((function() {
                                            delete t.$ngfDataUrl
                                        }
                                        ), 1e3)
                                    }
                                    ))
                                }
                                ,
                                s.onerror = function() {
                                    e((function() {
                                        t.$ngfDataUrl = "",
                                        a.reject()
                                    }
                                    ))
                                }
                                ,
                                s.readAsDataURL(t)
                            }
                        } else
                            e((function() {
                                t[r ? "$ngfDataUrl" : "$ngfBlobUrl"] = "",
                                a.reject()
                            }
                            ))
                    }
                    )),
                    (o = r ? t.$$ngfDataUrlPromise = a.promise : t.$$ngfBlobUrlPromise = a.promise).finally((function() {
                        delete t[r ? "$$ngfDataUrlPromise" : "$$ngfBlobUrlPromise"]
                    }
                    )),
                    o
                }
                ,
                i
            }
            ]),
            i.directive("ngfSrc", ["Upload", "$timeout", function(e, n) {
                return {
                    restrict: "AE",
                    link: function(i, r, o) {
                        t(e, n, i, r, o, "ngfSrc", e.attrGetter("ngfResize", o, i), !1)
                    }
                }
            }
            ]),
            i.directive("ngfBackground", ["Upload", "$timeout", function(e, n) {
                return {
                    restrict: "AE",
                    link: function(i, r, o) {
                        t(e, n, i, r, o, "ngfBackground", e.attrGetter("ngfResize", o, i), !0)
                    }
                }
            }
            ]),
            i.directive("ngfThumbnail", ["Upload", "$timeout", function(e, n) {
                return {
                    restrict: "AE",
                    link: function(i, r, o) {
                        var a = e.attrGetter("ngfSize", o, i);
                        t(e, n, i, r, o, "ngfThumbnail", a, e.attrGetter("ngfAsBackground", o, i))
                    }
                }
            }
            ]),
            i.config(["$compileProvider", function(t) {
                t.imgSrcSanitizationWhitelist && t.imgSrcSanitizationWhitelist(/^\s*(https?|ftp|mailto|tel|webcal|local|file|data|blob):/),
                t.aHrefSanitizationWhitelist && t.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|tel|webcal|local|file|data|blob):/)
            }
            ]),
            i.filter("ngfDataUrl", ["UploadDataUrl", "$sce", function(t, e) {
                return function(n, i, r) {
                    if (angular.isString(n))
                        return e.trustAsResourceUrl(n);
                    var o = n && ((i ? n.$ngfDataUrl : n.$ngfBlobUrl) || n.$ngfDataUrl);
                    return n && !o ? (!n.$ngfDataUrlFilterInProgress && angular.isObject(n) && (n.$ngfDataUrlFilterInProgress = !0,
                    t.dataUrl(n, i)),
                    "") : (n && delete n.$ngfDataUrlFilterInProgress,
                    (n && o ? r ? e.trustAsResourceUrl(o) : o : n) || "")
                }
            }
            ])
        }(),
        i.service("UploadValidate", ["UploadDataUrl", "$q", "$timeout", function(t, e, n) {
            var i = t;
            return i.validatePattern = function(t, e) {
                if (!e)
                    return !0;
                var n = function t(e) {
                    var n = ""
                      , i = [];
                    if (e.length > 2 && "/" === e[0] && "/" === e[e.length - 1])
                        n = e.substring(1, e.length - 1);
                    else {
                        var r = e.split(",");
                        if (r.length > 1)
                            for (var o = 0; o < r.length; o++) {
                                var a = t(r[o]);
                                a.regexp ? (n += "(" + a.regexp + ")",
                                o < r.length - 1 && (n += "|")) : i = i.concat(a.excludes)
                            }
                        else
                            0 === e.indexOf("!") ? i.push("^((?!" + t(e.substring(1)).regexp + ").)*$") : (0 === e.indexOf(".") && (e = "*" + e),
                            n = (n = "^" + e.replace(new RegExp("[.\\\\+*?\\[\\^\\]$(){}=!<>|:\\-]","g"), "\\$&") + "$").replace(/\\\*/g, ".*").replace(/\\\?/g, "."))
                    }
                    return {
                        regexp: n,
                        excludes: i
                    }
                }(e)
                  , i = !0;
                if (n.regexp && n.regexp.length) {
                    var r = new RegExp(n.regexp,"i");
                    i = null != t.type && r.test(t.type) || null != t.name && r.test(t.name)
                }
                for (var o = n.excludes.length; o--; ) {
                    var a = new RegExp(n.excludes[o],"i");
                    i = i && (null == t.type || a.test(t.type)) && (null == t.name || a.test(t.name))
                }
                return i
            }
            ,
            i.ratioToFloat = function(t) {
                var e = t.toString()
                  , n = e.search(/[x:]/i);
                return e = n > -1 ? parseFloat(e.substring(0, n)) / parseFloat(e.substring(n + 1)) : parseFloat(e)
            }
            ,
            i.registerModelChangeValidator = function(t, e, n) {
                t && t.$formatters.push((function(r) {
                    if (t.$dirty) {
                        var o = r;
                        r && !angular.isArray(r) && (o = [r]),
                        i.validate(o, 0, t, e, n).then((function() {
                            i.applyModelValidation(t, o)
                        }
                        ))
                    }
                    return r
                }
                ))
            }
            ,
            i.applyModelValidation = function(t, e) {
                !function(t, e) {
                    null == e || t.$dirty || (t.$setDirty ? t.$setDirty() : t.$dirty = !0)
                }(t, e),
                angular.forEach(t.$ngfValidations, (function(e) {
                    t.$setValidity(e.name, e.valid)
                }
                ))
            }
            ,
            i.getValidationAttr = function(t, e, n, r, o) {
                var a = "ngf" + n[0].toUpperCase() + n.substr(1)
                  , s = i.attrGetter(a, t, e, {
                    $file: o
                });
                if (null == s && (s = i.attrGetter("ngfValidate", t, e, {
                    $file: o
                }))) {
                    var c = (r || n).split(".");
                    s = s[c[0]],
                    c.length > 1 && (s = s && s[c[1]])
                }
                return s
            }
            ,
            i.validate = function(t, n, r, o, a) {
                (r = r || {}).$ngfValidations = r.$ngfValidations || [],
                angular.forEach(r.$ngfValidations, (function(t) {
                    t.valid = !0
                }
                ));
                var s = function(t, e) {
                    return i.attrGetter(t, o, a, e)
                }
                  , c = (i.attrGetter("ngfIgnoreInvalid", o, a) || "").split(" ")
                  , l = i.attrGetter("ngfRunAllValidations", o, a);
                if (null == t || 0 === t.length)
                    return i.emptyPromise({
                        validFiles: t,
                        invalidFiles: []
                    });
                t = void 0 === t.length ? [t] : t.slice(0);
                var u = [];
                function d(e, n, s) {
                    if (t) {
                        for (var d = t.length, p = null; d--; ) {
                            var h = t[d];
                            if (h) {
                                var f = i.getValidationAttr(o, a, e, n, h);
                                null != f && (s(h, f, d) || (-1 === c.indexOf(e) ? (h.$error = e,
                                (h.$errorMessages = h.$errorMessages || {})[e] = !0,
                                h.$errorParam = f,
                                -1 === u.indexOf(h) && u.push(h),
                                l || t.splice(d, 1),
                                p = !1) : t.splice(d, 1)))
                            }
                        }
                        null !== p && r.$ngfValidations.push({
                            name: e,
                            valid: p
                        })
                    }
                }
                d("pattern", null, i.validatePattern),
                d("minSize", "size.min", (function(t, e) {
                    return t.size + .1 >= i.translateScalars(e)
                }
                )),
                d("maxSize", "size.max", (function(t, e) {
                    return t.size - .1 <= i.translateScalars(e)
                }
                ));
                var p = 0;
                if (d("maxTotalSize", null, (function(e, n) {
                    return !((p += e.size) > i.translateScalars(n)) || (t.splice(0, t.length),
                    !1)
                }
                )),
                d("validateFn", null, (function(t, e) {
                    return !0 === e || null === e || "" === e
                }
                )),
                !t.length)
                    return i.emptyPromise({
                        validFiles: [],
                        invalidFiles: u
                    });
                function h(n, d, p, h, f) {
                    function m(e, i, r) {
                        function o(o) {
                            if (o())
                                if (-1 === c.indexOf(n)) {
                                    if (i.$error = n,
                                    (i.$errorMessages = i.$errorMessages || {})[n] = !0,
                                    i.$errorParam = r,
                                    -1 === u.indexOf(i) && u.push(i),
                                    !l) {
                                        var a = t.indexOf(i);
                                        a > -1 && t.splice(a, 1)
                                    }
                                    e.resolve(!1)
                                } else {
                                    var s = t.indexOf(i);
                                    s > -1 && t.splice(s, 1),
                                    e.resolve(!0)
                                }
                            else
                                e.resolve(!0)
                        }
                        null != r ? h(i, r).then((function(t) {
                            o((function() {
                                return !f(t, r)
                            }
                            ))
                        }
                        ), (function() {
                            o((function() {
                                return s("ngfValidateForce", {
                                    $file: i
                                })
                            }
                            ))
                        }
                        )) : e.resolve(!0)
                    }
                    var g = [i.emptyPromise(!0)];
                    t && (t = void 0 === t.length ? [t] : t,
                    angular.forEach(t, (function(t) {
                        var r = e.defer();
                        g.push(r.promise),
                        !p || null != t.type && 0 === t.type.search(p) ? "dimensions" === n && null != i.attrGetter("ngfDimensions", o) ? i.imageDimensions(t).then((function(e) {
                            m(r, t, s("ngfDimensions", {
                                $file: t,
                                $width: e.width,
                                $height: e.height
                            }))
                        }
                        ), (function() {
                            r.resolve(!1)
                        }
                        )) : "duration" === n && null != i.attrGetter("ngfDuration", o) ? i.mediaDuration(t).then((function(e) {
                            m(r, t, s("ngfDuration", {
                                $file: t,
                                $duration: e
                            }))
                        }
                        ), (function() {
                            r.resolve(!1)
                        }
                        )) : m(r, t, i.getValidationAttr(o, a, n, d, t)) : r.resolve(!0)
                    }
                    )));
                    var v = e.defer();
                    return e.all(g).then((function(t) {
                        for (var e = !0, i = 0; i < t.length; i++)
                            if (!t[i]) {
                                e = !1;
                                break
                            }
                        r.$ngfValidations.push({
                            name: n,
                            valid: e
                        }),
                        v.resolve(e)
                    }
                    )),
                    v.promise
                }
                var f = e.defer()
                  , m = [];
                return m.push(h("maxHeight", "height.max", /image/, this.imageDimensions, (function(t, e) {
                    return t.height <= e
                }
                ))),
                m.push(h("minHeight", "height.min", /image/, this.imageDimensions, (function(t, e) {
                    return t.height >= e
                }
                ))),
                m.push(h("maxWidth", "width.max", /image/, this.imageDimensions, (function(t, e) {
                    return t.width <= e
                }
                ))),
                m.push(h("minWidth", "width.min", /image/, this.imageDimensions, (function(t, e) {
                    return t.width >= e
                }
                ))),
                m.push(h("dimensions", null, /image/, (function(t, e) {
                    return i.emptyPromise(e)
                }
                ), (function(t) {
                    return t
                }
                ))),
                m.push(h("ratio", null, /image/, this.imageDimensions, (function(t, e) {
                    for (var n = e.toString().split(","), r = !1, o = 0; o < n.length; o++)
                        Math.abs(t.width / t.height - i.ratioToFloat(n[o])) < .01 && (r = !0);
                    return r
                }
                ))),
                m.push(h("maxRatio", "ratio.max", /image/, this.imageDimensions, (function(t, e) {
                    return t.width / t.height - i.ratioToFloat(e) < 1e-4
                }
                ))),
                m.push(h("minRatio", "ratio.min", /image/, this.imageDimensions, (function(t, e) {
                    return t.width / t.height - i.ratioToFloat(e) > -1e-4
                }
                ))),
                m.push(h("maxDuration", "duration.max", /audio|video/, this.mediaDuration, (function(t, e) {
                    return t <= i.translateScalars(e)
                }
                ))),
                m.push(h("minDuration", "duration.min", /audio|video/, this.mediaDuration, (function(t, e) {
                    return t >= i.translateScalars(e)
                }
                ))),
                m.push(h("duration", null, /audio|video/, (function(t, e) {
                    return i.emptyPromise(e)
                }
                ), (function(t) {
                    return t
                }
                ))),
                m.push(h("validateAsyncFn", null, null, (function(t, e) {
                    return e
                }
                ), (function(t) {
                    return !0 === t || null === t || "" === t
                }
                ))),
                e.all(m).then((function() {
                    if (l)
                        for (var e = 0; e < t.length; e++) {
                            t[e].$error && t.splice(e--, 1)
                        }
                    l = !1,
                    d("maxFiles", null, (function(t, e, i) {
                        return n + i < e
                    }
                    )),
                    f.resolve({
                        validFiles: t,
                        invalidFiles: u
                    })
                }
                )),
                f.promise
            }
            ,
            i.imageDimensions = function(t) {
                if (t.$ngfWidth && t.$ngfHeight) {
                    var r = e.defer();
                    return n((function() {
                        r.resolve({
                            width: t.$ngfWidth,
                            height: t.$ngfHeight
                        })
                    }
                    )),
                    r.promise
                }
                if (t.$ngfDimensionPromise)
                    return t.$ngfDimensionPromise;
                var o = e.defer();
                return n((function() {
                    0 === t.type.indexOf("image") ? i.dataUrl(t).then((function(e) {
                        var i = angular.element("<img>").attr("src", e).css("visibility", "hidden").css("position", "fixed").css("max-width", "none !important").css("max-height", "none !important");
                        function r() {
                            var e = i[0].naturalWidth || i[0].clientWidth
                              , n = i[0].naturalHeight || i[0].clientHeight;
                            i.remove(),
                            t.$ngfWidth = e,
                            t.$ngfHeight = n,
                            o.resolve({
                                width: e,
                                height: n
                            })
                        }
                        function a() {
                            i.remove(),
                            o.reject("load error")
                        }
                        i.on("load", r),
                        i.on("error", a);
                        var s = 0;
                        !function t() {
                            n((function() {
                                i[0].parentNode && (i[0].clientWidth ? r() : s++ > 10 ? a() : t())
                            }
                            ), 1e3)
                        }(),
                        angular.element(document.getElementsByTagName("body")[0]).append(i)
                    }
                    ), (function() {
                        o.reject("load error")
                    }
                    )) : o.reject("not image")
                }
                )),
                t.$ngfDimensionPromise = o.promise,
                t.$ngfDimensionPromise.finally((function() {
                    delete t.$ngfDimensionPromise
                }
                )),
                t.$ngfDimensionPromise
            }
            ,
            i.mediaDuration = function(t) {
                if (t.$ngfDuration) {
                    var r = e.defer();
                    return n((function() {
                        r.resolve(t.$ngfDuration)
                    }
                    )),
                    r.promise
                }
                if (t.$ngfDurationPromise)
                    return t.$ngfDurationPromise;
                var o = e.defer();
                return n((function() {
                    0 === t.type.indexOf("audio") || 0 === t.type.indexOf("video") ? i.dataUrl(t).then((function(e) {
                        var i = angular.element(0 === t.type.indexOf("audio") ? "<audio>" : "<video>").attr("src", e).css("visibility", "none").css("position", "fixed");
                        function r() {
                            var e = i[0].duration;
                            t.$ngfDuration = e,
                            i.remove(),
                            o.resolve(e)
                        }
                        function a() {
                            i.remove(),
                            o.reject("load error")
                        }
                        i.on("loadedmetadata", r),
                        i.on("error", a);
                        !function t() {
                            n((function() {
                                i[0].parentNode && (i[0].duration ? r() : t())
                            }
                            ), 1e3)
                        }(),
                        angular.element(document.body).append(i)
                    }
                    ), (function() {
                        o.reject("load error")
                    }
                    )) : o.reject("not media")
                }
                )),
                t.$ngfDurationPromise = o.promise,
                t.$ngfDurationPromise.finally((function() {
                    delete t.$ngfDurationPromise
                }
                )),
                t.$ngfDurationPromise
            }
            ,
            i
        }
        ]),
        i.service("UploadResize", ["UploadValidate", "$q", function(t, e) {
            var n = t
              , i = function(t, i, r, o, a, s, c, l) {
                var u = e.defer()
                  , d = document.createElement("canvas")
                  , p = document.createElement("img");
                return p.setAttribute("style", "visibility:hidden;position:fixed;z-index:-100000"),
                document.body.appendChild(p),
                p.onload = function() {
                    var t = p.width
                      , e = p.height;
                    if (p.parentNode.removeChild(p),
                    null == l || !1 !== l(t, e))
                        try {
                            if (s) {
                                var h = n.ratioToFloat(s);
                                t / e < h ? r = (i = t) / h : i = (r = e) * h
                            }
                            i || (i = t),
                            r || (r = e);
                            var f = function(t, e, n, i, r) {
                                var o = r ? Math.max(n / t, i / e) : Math.min(n / t, i / e);
                                return {
                                    width: t * o,
                                    height: e * o,
                                    marginX: t * o - n,
                                    marginY: e * o - i
                                }
                            }(t, e, i, r, c);
                            d.width = Math.min(f.width, i),
                            d.height = Math.min(f.height, r),
                            d.getContext("2d").drawImage(p, Math.min(0, -f.marginX / 2), Math.min(0, -f.marginY / 2), f.width, f.height),
                            u.resolve(d.toDataURL(a || "image/WebP", o || .934))
                        } catch (t) {
                            u.reject(t)
                        }
                    else
                        u.reject("resizeIf")
                }
                ,
                p.onerror = function() {
                    p.parentNode.removeChild(p),
                    u.reject()
                }
                ,
                p.src = t,
                u.promise
            };
            return n.dataUrltoBlob = function(t, e, n) {
                for (var i = t.split(","), r = i[0].match(/:(.*?);/)[1], o = atob(i[1]), a = o.length, s = new Uint8Array(a); a--; )
                    s[a] = o.charCodeAt(a);
                var c = new window.Blob([s],{
                    type: r
                });
                return c.name = e,
                c.$ngfOrigSize = n,
                c
            }
            ,
            n.isResizeSupported = function() {
                var t = document.createElement("canvas");
                return window.atob && t.getContext && t.getContext("2d") && window.Blob
            }
            ,
            n.isResizeSupported() && Object.defineProperty(window.Blob.prototype, "name", {
                get: function() {
                    return this.$ngfName
                },
                set: function(t) {
                    this.$ngfName = t
                },
                configurable: !0
            }),
            n.resize = function(t, r) {
                if (0 !== t.type.indexOf("image"))
                    return n.emptyPromise(t);
                var o = e.defer();
                return n.dataUrl(t, !0).then((function(e) {
                    i(e, r.width, r.height, r.quality, r.type || t.type, r.ratio, r.centerCrop, r.resizeIf).then((function(i) {
                        if ("image/jpeg" === t.type && !1 !== r.restoreExif)
                            try {
                                i = n.restoreExif(e, i)
                            } catch (t) {
                                setTimeout((function() {
                                    throw t
                                }
                                ), 1)
                            }
                        try {
                            var a = n.dataUrltoBlob(i, t.name, t.size);
                            o.resolve(a)
                        } catch (t) {
                            o.reject(t)
                        }
                    }
                    ), (function(e) {
                        "resizeIf" === e && o.resolve(t),
                        o.reject(e)
                    }
                    ))
                }
                ), (function(t) {
                    o.reject(t)
                }
                )),
                o.promise
            }
            ,
            n
        }
        ]),
        function() {
            function t() {
                var t = document.createElement("div");
                return "draggable"in t && "ondrop"in t && !/Edge\/12./i.test(navigator.userAgent)
            }
            i.directive("ngfDrop", ["$parse", "$timeout", "$window", "Upload", "$http", "$q", function(e, n, i, r, o, a) {
                return {
                    restrict: "AEC",
                    require: "?ngModel",
                    link: function(o, s, c, l) {
                        !function(e, n, i, r, o, a, s, c, l, u) {
                            var d = t()
                              , p = function(t, e, n) {
                                return c.attrGetter(t, i, e, n)
                            };
                            p("dropAvailable") && a((function() {
                                e[p("dropAvailable")] ? e[p("dropAvailable")].value = d : e[p("dropAvailable")] = d
                            }
                            ));
                            if (!d)
                                return void (!0 === p("ngfHideOnDropNotAvailable", e) && n.css("display", "none"));
                            function h() {
                                return n.attr("disabled") || p("ngfDropDisabled", e)
                            }
                            null == p("ngfSelect") && c.registerModelChangeValidator(r, i, e);
                            var f, m = null, g = o(p("ngfStopPropagation")), v = 1;
                            n[0].addEventListener("dragover", (function(t) {
                                if (!h() && c.shouldUpdateOn("drop", i, e)) {
                                    if (t.preventDefault(),
                                    g(e) && t.stopPropagation(),
                                    navigator.userAgent.indexOf("Chrome") > -1) {
                                        var r = t.dataTransfer.effectAllowed;
                                        t.dataTransfer.dropEffect = "move" === r || "linkMove" === r ? "move" : "copy"
                                    }
                                    a.cancel(m),
                                    f || (f = "C",
                                    function(t, e, n, i) {
                                        var r = p("ngfDragOverClass", t, {
                                            $event: n
                                        })
                                          , o = "dragover";
                                        if (angular.isString(r))
                                            o = r;
                                        else if (r && (r.delay && (v = r.delay),
                                        r.accept || r.reject)) {
                                            var a = n.dataTransfer.items;
                                            if (null != a && a.length)
                                                for (var s = r.pattern || p("ngfPattern", t, {
                                                    $event: n
                                                }), l = a.length; l--; ) {
                                                    if (!c.validatePattern(a[l], s)) {
                                                        o = r.reject;
                                                        break
                                                    }
                                                    o = r.accept
                                                }
                                            else
                                                o = r.accept
                                        }
                                        i(o)
                                    }(e, 0, t, (function(i) {
                                        f = i,
                                        n.addClass(f),
                                        p("ngfDrag", e, {
                                            $isDragging: !0,
                                            $class: f,
                                            $event: t
                                        })
                                    }
                                    )))
                                }
                            }
                            ), !1),
                            n[0].addEventListener("dragenter", (function(t) {
                                !h() && c.shouldUpdateOn("drop", i, e) && (t.preventDefault(),
                                g(e) && t.stopPropagation())
                            }
                            ), !1),
                            n[0].addEventListener("dragleave", (function(t) {
                                !h() && c.shouldUpdateOn("drop", i, e) && (t.preventDefault(),
                                g(e) && t.stopPropagation(),
                                m = a((function() {
                                    f && n.removeClass(f),
                                    f = null,
                                    p("ngfDrag", e, {
                                        $isDragging: !1,
                                        $event: t
                                    })
                                }
                                ), v || 100))
                            }
                            ), !1),
                            n[0].addEventListener("drop", (function(t) {
                                !h() && c.shouldUpdateOn("drop", i, e) && (t.preventDefault(),
                                g(e) && t.stopPropagation(),
                                f && n.removeClass(f),
                                f = null,
                                y(t.dataTransfer, t, "dropUrl"))
                            }
                            ), !1),
                            n[0].addEventListener("paste", (function(t) {
                                navigator.userAgent.toLowerCase().indexOf("firefox") > -1 && p("ngfEnableFirefoxPaste", e) && t.preventDefault(),
                                !h() && c.shouldUpdateOn("paste", i, e) && y(t.clipboardData || t.originalEvent.clipboardData, t, "pasteUrl")
                            }
                            ), !1),
                            navigator.userAgent.toLowerCase().indexOf("firefox") > -1 && p("ngfEnableFirefoxPaste", e) && (n.attr("contenteditable", !0),
                            n.on("keypress", (function(t) {
                                t.metaKey || t.ctrlKey || t.preventDefault()
                            }
                            )));
                            function y(t, n, r) {
                                if (t) {
                                    var o;
                                    try {
                                        o = t && t.getData && t.getData("text/html")
                                    } catch (t) {}
                                    (function(t, n, r, o) {
                                        var a = c.getValidationAttr(i, e, "maxFiles");
                                        null == a && (a = Number.MAX_VALUE);
                                        var l = c.getValidationAttr(i, e, "maxTotalSize");
                                        null == l && (l = Number.MAX_VALUE);
                                        var d = p("ngfIncludeDir", e)
                                          , h = []
                                          , f = 0;
                                        function m(t, e) {
                                            var n = u.defer();
                                            if (null != t)
                                                if (t.isDirectory) {
                                                    var i = [c.emptyPromise()];
                                                    if (d) {
                                                        var r = {
                                                            type: "directory"
                                                        };
                                                        r.name = r.path = (e || "") + t.name,
                                                        h.push(r)
                                                    }
                                                    var o = t.createReader()
                                                      , s = []
                                                      , p = function() {
                                                        o.readEntries((function(r) {
                                                            try {
                                                                r.length ? (s = s.concat(Array.prototype.slice.call(r || [], 0)),
                                                                p()) : (angular.forEach(s.slice(0), (function(n) {
                                                                    h.length <= a && f <= l && i.push(m(n, (e || "") + t.name + "/"))
                                                                }
                                                                )),
                                                                u.all(i).then((function() {
                                                                    n.resolve()
                                                                }
                                                                ), (function(t) {
                                                                    n.reject(t)
                                                                }
                                                                )))
                                                            } catch (t) {
                                                                n.reject(t)
                                                            }
                                                        }
                                                        ), (function(t) {
                                                            n.reject(t)
                                                        }
                                                        ))
                                                    };
                                                    p()
                                                } else
                                                    t.file((function(t) {
                                                        try {
                                                            t.path = (e || "") + t.name,
                                                            d && (t = c.rename(t, t.path)),
                                                            h.push(t),
                                                            f += t.size,
                                                            n.resolve()
                                                        } catch (t) {
                                                            n.reject(t)
                                                        }
                                                    }
                                                    ), (function(t) {
                                                        n.reject(t)
                                                    }
                                                    ));
                                            return n.promise
                                        }
                                        var g = [c.emptyPromise()];
                                        if (t && t.length > 0 && "file:" !== s.location.protocol)
                                            for (var v = 0; v < t.length; v++) {
                                                if (t[v].webkitGetAsEntry && t[v].webkitGetAsEntry() && t[v].webkitGetAsEntry().isDirectory) {
                                                    var y = t[v].webkitGetAsEntry();
                                                    if (y.isDirectory && !r)
                                                        continue;
                                                    null != y && g.push(m(y))
                                                } else {
                                                    var b = t[v].getAsFile();
                                                    null != b && (h.push(b),
                                                    f += b.size)
                                                }
                                                if (h.length > a || f > l || !o && h.length > 0)
                                                    break
                                            }
                                        else if (null != n)
                                            for (var w = 0; w < n.length; w++) {
                                                var S = n.item(w);
                                                if ((S.type || S.size > 0) && (h.push(S),
                                                f += S.size),
                                                h.length > a || f > l || !o && h.length > 0)
                                                    break
                                            }
                                        var x = u.defer();
                                        return u.all(g).then((function() {
                                            if (o || d || !h.length)
                                                x.resolve(h);
                                            else {
                                                for (var t = 0; h[t] && "directory" === h[t].type; )
                                                    t++;
                                                x.resolve([h[t]])
                                            }
                                        }
                                        ), (function(t) {
                                            x.reject(t)
                                        }
                                        )),
                                        x.promise
                                    }
                                    )(t.items, t.files, !1 !== p("ngfAllowDir", e), p("multiple") || p("ngfMultiple", e)).then((function(t) {
                                        t.length ? b(t, n) : function(t, n) {
                                            if (!c.shouldUpdateOn(t, i, e) || "string" != typeof n)
                                                return c.rejectPromise([]);
                                            var r = [];
                                            n.replace(/<(img src|img [^>]* src) *=\"([^\"]*)\"/gi, (function(t, e, n) {
                                                r.push(n)
                                            }
                                            ));
                                            var o = []
                                              , a = [];
                                            if (r.length) {
                                                angular.forEach(r, (function(t) {
                                                    o.push(c.urlToBlob(t).then((function(t) {
                                                        a.push(t)
                                                    }
                                                    )))
                                                }
                                                ));
                                                var s = u.defer();
                                                return u.all(o).then((function() {
                                                    s.resolve(a)
                                                }
                                                ), (function(t) {
                                                    s.reject(t)
                                                }
                                                )),
                                                s.promise
                                            }
                                            return c.emptyPromise()
                                        }(r, o).then((function(t) {
                                            b(t, n)
                                        }
                                        ))
                                    }
                                    ))
                                }
                            }
                            function b(t, n) {
                                c.updateModel(r, i, e, p("ngfChange") || p("ngfDrop"), t, n)
                            }
                        }(o, s, c, l, e, n, i, r, 0, a)
                    }
                }
            }
            ]),
            i.directive("ngfNoFileDrop", (function() {
                return function(e, n) {
                    t() && n.css("display", "none")
                }
            }
            )),
            i.directive("ngfDropAvailable", ["$parse", "$timeout", "Upload", function(e, n, i) {
                return function(r, o, a) {
                    if (t()) {
                        var s = e(i.attrGetter("ngfDropAvailable", a));
                        n((function() {
                            s(r),
                            s.assign && s.assign(r, !0)
                        }
                        ))
                    }
                }
            }
            ])
        }(),
        i.service("UploadExif", ["UploadResize", "$q", function(t, e) {
            var n = t;
            return n.isExifSupported = function() {
                return window.FileReader && (new FileReader).readAsArrayBuffer && n.isResizeSupported()
            }
            ,
            n.readOrientation = function(t) {
                var n = e.defer()
                  , i = new FileReader
                  , r = t.slice ? t.slice(0, 65536) : t;
                return i.readAsArrayBuffer(r),
                i.onerror = function(t) {
                    return n.reject(t)
                }
                ,
                i.onload = function(t) {
                    var e = {
                        orientation: 1
                    }
                      , i = new DataView(this.result);
                    if (65496 !== i.getUint16(0, !1))
                        return n.resolve(e);
                    for (var r = i.byteLength, o = 2; o < r; ) {
                        var a = i.getUint16(o, !1);
                        if (o += 2,
                        65505 === a) {
                            if (1165519206 !== i.getUint32(o += 2, !1))
                                return n.resolve(e);
                            var s = 18761 === i.getUint16(o += 6, !1);
                            o += i.getUint32(o + 4, s);
                            var c = i.getUint16(o, s);
                            o += 2;
                            for (var l = 0; l < c; l++)
                                if (274 === i.getUint16(o + 12 * l, s)) {
                                    var u = i.getUint16(o + 12 * l + 8, s);
                                    return u >= 2 && u <= 8 && (i.setUint16(o + 12 * l + 8, 1, s),
                                    e.fixedArrayBuffer = t.target.result),
                                    e.orientation = u,
                                    n.resolve(e)
                                }
                        } else {
                            if (65280 != (65280 & a))
                                break;
                            o += i.getUint16(o, !1)
                        }
                    }
                    return n.resolve(e)
                }
                ,
                n.promise
            }
            ,
            n.applyExifRotation = function(t) {
                if (0 !== t.type.indexOf("image/jpeg"))
                    return n.emptyPromise(t);
                var i = e.defer();
                return n.readOrientation(t).then((function(e) {
                    if (e.orientation < 2 || e.orientation > 8)
                        return i.resolve(t);
                    n.dataUrl(t, !0).then((function(r) {
                        var o = document.createElement("canvas")
                          , a = document.createElement("img");
                        a.onload = function() {
                            try {
                                o.width = e.orientation > 4 ? a.height : a.width,
                                o.height = e.orientation > 4 ? a.width : a.height;
                                var r = o.getContext("2d");
                                !function(t, e, n, i) {
                                    switch (e) {
                                    case 2:
                                        return t.transform(-1, 0, 0, 1, n, 0);
                                    case 3:
                                        return t.transform(-1, 0, 0, -1, n, i);
                                    case 4:
                                        return t.transform(1, 0, 0, -1, 0, i);
                                    case 5:
                                        return t.transform(0, 1, 1, 0, 0, 0);
                                    case 6:
                                        return t.transform(0, 1, -1, 0, i, 0);
                                    case 7:
                                        return t.transform(0, -1, -1, 0, i, n);
                                    case 8:
                                        t.transform(0, -1, 1, 0, 0, n)
                                    }
                                }(r, e.orientation, a.width, a.height),
                                r.drawImage(a, 0, 0);
                                var s = o.toDataURL(t.type || "image/WebP", .934);
                                s = n.restoreExif(function(t) {
                                    for (var e = "", n = new Uint8Array(t), i = n.byteLength, r = 0; r < i; r++)
                                        e += String.fromCharCode(n[r]);
                                    return window.btoa(e)
                                }(e.fixedArrayBuffer), s);
                                var c = n.dataUrltoBlob(s, t.name);
                                i.resolve(c)
                            } catch (t) {
                                return i.reject(t)
                            }
                        }
                        ,
                        a.onerror = function() {
                            i.reject()
                        }
                        ,
                        a.src = r
                    }
                    ), (function(t) {
                        i.reject(t)
                    }
                    ))
                }
                ), (function(t) {
                    i.reject(t)
                }
                )),
                i.promise
            }
            ,
            n.restoreExif = function(t, e) {
                var n = {
                    KEY_STR: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
                    encode64: function(t) {
                        var e, n, i, r, o, a = "", s = "", c = "", l = 0;
                        do {
                            i = (e = t[l++]) >> 2,
                            r = (3 & e) << 4 | (n = t[l++]) >> 4,
                            o = (15 & n) << 2 | (s = t[l++]) >> 6,
                            c = 63 & s,
                            isNaN(n) ? o = c = 64 : isNaN(s) && (c = 64),
                            a = a + this.KEY_STR.charAt(i) + this.KEY_STR.charAt(r) + this.KEY_STR.charAt(o) + this.KEY_STR.charAt(c),
                            e = n = s = "",
                            i = r = o = c = ""
                        } while (l < t.length);
                        return a
                    },
                    restore: function(t, e) {
                        t.match("data:image/jpeg;base64,") && (t = t.replace("data:image/jpeg;base64,", ""));
                        var n = this.decode64(t)
                          , i = this.slice2Segments(n)
                          , r = this.exifManipulation(e, i);
                        return "data:image/jpeg;base64," + this.encode64(r)
                    },
                    exifManipulation: function(t, e) {
                        var n = this.getExifArray(e)
                          , i = this.insertExif(t, n);
                        return new Uint8Array(i)
                    },
                    getExifArray: function(t) {
                        for (var e, n = 0; n < t.length; n++)
                            if (255 === (e = t[n])[0] & 225 === e[1])
                                return e;
                        return []
                    },
                    insertExif: function(t, e) {
                        var n = t.replace("data:image/jpeg;base64,", "")
                          , i = this.decode64(n)
                          , r = i.indexOf(255, 3)
                          , o = i.slice(0, r)
                          , a = i.slice(r)
                          , s = o;
                        return s = (s = s.concat(e)).concat(a)
                    },
                    slice2Segments: function(t) {
                        for (var e = 0, n = []; !(255 === t[e] & 218 === t[e + 1]); ) {
                            if (255 === t[e] & 216 === t[e + 1])
                                e += 2;
                            else {
                                var i = e + (256 * t[e + 2] + t[e + 3]) + 2
                                  , r = t.slice(e, i);
                                n.push(r),
                                e = i
                            }
                            if (e > t.length)
                                break
                        }
                        return n
                    },
                    decode64: function(t) {
                        var e, n, i, r, o = "", a = "", s = 0, c = [];
                        /[^A-Za-z0-9\+\/\=]/g.exec(t) && console.log("There were invalid base64 characters in the input text.\nValid base64 characters are A-Z, a-z, 0-9, NaNExpect errors in decoding."),
                        t = t.replace(/[^A-Za-z0-9\+\/\=]/g, "");
                        do {
                            e = this.KEY_STR.indexOf(t.charAt(s++)) << 2 | (i = this.KEY_STR.indexOf(t.charAt(s++))) >> 4,
                            n = (15 & i) << 4 | (r = this.KEY_STR.indexOf(t.charAt(s++))) >> 2,
                            o = (3 & r) << 6 | (a = this.KEY_STR.indexOf(t.charAt(s++))),
                            c.push(e),
                            64 !== r && c.push(n),
                            64 !== a && c.push(o),
                            e = n = o = "",
                            i = r = a = ""
                        } while (s < t.length);
                        return c
                    }
                };
                return n.restore(t, e)
            }
            ,
            n
        }
        ])
    }
    ).call(this, n(19), n(19))
}
, function(t, e, n) {
    (function(n) {
        /**
 * oclazyload - Load modules on demand (lazy load) with angularJS
 * @version v1.0.10
 * @link https://github.com/ocombe/ocLazyLoad
 * @license MIT
 * @author Olivier Combe <olivier.combe@gmail.com>
 */
        !function(n, i) {
            "use strict";
            var r = ["ng", "oc.lazyLoad"]
              , o = {}
              , a = []
              , s = []
              , c = []
              , l = []
              , u = n.noop
              , d = {}
              , p = [];
            n.module("oc.lazyLoad", ["ng"]).provider("$ocLazyLoad", ["$controllerProvider", "$provide", "$compileProvider", "$filterProvider", "$injector", "$animateProvider", function(t, e, h, g, v, y) {
                var b = {}
                  , w = {
                    $controllerProvider: t,
                    $compileProvider: h,
                    $filterProvider: g,
                    $provide: e,
                    $injector: v,
                    $animateProvider: y
                }
                  , S = !1
                  , x = !1
                  , M = []
                  , E = {};
                M.push = function(t) {
                    -1 === this.indexOf(t) && Array.prototype.push.apply(this, arguments)
                }
                ,
                this.config = function(t) {
                    n.isDefined(t.modules) && (n.isArray(t.modules) ? n.forEach(t.modules, (function(t) {
                        b[t.name] = t
                    }
                    )) : b[t.modules.name] = t.modules),
                    n.isDefined(t.debug) && (S = t.debug),
                    n.isDefined(t.events) && (x = t.events)
                }
                ,
                this._init = function(t) {
                    if (0 === s.length) {
                        var e = [t]
                          , o = ["ng:app", "ng-app", "x-ng-app", "data-ng-app"]
                          , a = /\sng[:\-]app(:\s*([\w\d_]+);?)?\s/
                          , c = function(t) {
                            return t && e.push(t)
                        };
                        n.forEach(o, (function(e) {
                            o[e] = !0,
                            c(document.getElementById(e)),
                            e = e.replace(":", "\\:"),
                            void 0 !== t[0] && t[0].querySelectorAll && (n.forEach(t[0].querySelectorAll("." + e), c),
                            n.forEach(t[0].querySelectorAll("." + e + "\\:"), c),
                            n.forEach(t[0].querySelectorAll("[" + e + "]"), c))
                        }
                        )),
                        n.forEach(e, (function(e) {
                            if (0 === s.length) {
                                var i = " " + t.className + " "
                                  , r = a.exec(i);
                                r ? s.push((r[2] || "").replace(/\s+/g, ",")) : n.forEach(e.attributes, (function(t) {
                                    0 === s.length && o[t.name] && s.push(t.value)
                                }
                                ))
                            }
                        }
                        ))
                    }
                    0 !== s.length || (i.jasmine || i.mocha) && n.isDefined(n.mock) || console.error("No module found during bootstrap, unable to init ocLazyLoad. You should always use the ng-app directive or angular.boostrap when you use ocLazyLoad.");
                    n.forEach(s, (function(t) {
                        !function t(e) {
                            if (-1 === r.indexOf(e)) {
                                r.push(e);
                                var i = n.module(e);
                                _(null, i._invokeQueue, e),
                                _(null, i._configBlocks, e),
                                n.forEach(i.requires, t)
                            }
                        }(t)
                    }
                    )),
                    s = [],
                    l.pop()
                }
                ;
                var C = function(t) {
                    try {
                        return JSON.stringify(t)
                    } catch (i) {
                        var e = [];
                        return JSON.stringify(t, (function(t, i) {
                            if (n.isObject(i) && null !== i) {
                                if (-1 !== e.indexOf(i))
                                    return;
                                e.push(i)
                            }
                            return i
                        }
                        ))
                    }
                }
                  , A = function(t) {
                    var e, n, i = 0;
                    if (0 == t.length)
                        return i;
                    for (e = 0,
                    n = t.length; e < n; e++)
                        i = (i << 5) - i + t.charCodeAt(e),
                        i |= 0;
                    return i
                };
                function T(t, e, i) {
                    if (e) {
                        var o, a, s, l = [];
                        for (o = e.length - 1; o >= 0; o--)
                            if (a = e[o],
                            n.isString(a) || (a = P(a)),
                            a && -1 === p.indexOf(a) && (!b[a] || -1 !== c.indexOf(a))) {
                                var h = -1 === r.indexOf(a);
                                if (s = m(a),
                                h && (r.push(a),
                                T(t, s.requires, i)),
                                s._runBlocks.length > 0)
                                    for (d[a] = []; s._runBlocks.length > 0; )
                                        d[a].push(s._runBlocks.shift());
                                n.isDefined(d[a]) && (h || i.rerun) && (l = l.concat(d[a])),
                                _(t, s._invokeQueue, a, i.reconfig),
                                _(t, s._configBlocks, a, i.reconfig),
                                u(h ? "ocLazyLoad.moduleLoaded" : "ocLazyLoad.moduleReloaded", a),
                                e.pop(),
                                p.push(a)
                            }
                        var f = t.getInstanceInjector();
                        n.forEach(l, (function(t) {
                            f.invoke(t)
                        }
                        ))
                    }
                }
                function O(t, e) {
                    var i = t[2][0]
                      , r = t[1]
                      , a = !1;
                    n.isUndefined(o[e]) && (o[e] = {}),
                    n.isUndefined(o[e][r]) && (o[e][r] = {});
                    var s = function(t, i) {
                        o[e][r].hasOwnProperty(t) || (o[e][r][t] = []),
                        function(t, e) {
                            var i, r = !0;
                            e.length && (i = c(t),
                            n.forEach(e, (function(t) {
                                r = r && c(t) !== i
                            }
                            )));
                            return r
                        }(i, o[e][r][t]) && (a = !0,
                        o[e][r][t].push(i),
                        u("ocLazyLoad.componentLoaded", [e, r, t]))
                    };
                    function c(t) {
                        return n.isArray(t) ? A(t.toString()) : n.isObject(t) ? A(C(t)) : n.isDefined(t) && null !== t ? A(t.toString()) : t
                    }
                    if (n.isString(i))
                        s(i, t[2][1]);
                    else {
                        if (!n.isObject(i))
                            return !1;
                        n.forEach(i, (function(t, e) {
                            n.isString(t) ? s(t, i[1]) : s(e, t)
                        }
                        ))
                    }
                    return a
                }
                function _(t, e, i, r) {
                    var o, s, c, l;
                    if (e)
                        for (o = 0,
                        s = e.length; o < s; o++)
                            if (c = e[o],
                            n.isArray(c)) {
                                if (null !== t) {
                                    if (!t.hasOwnProperty(c[0]))
                                        throw new Error("unsupported provider " + c[0]);
                                    l = t[c[0]]
                                }
                                var u = O(c, i);
                                if ("invoke" !== c[1])
                                    u && n.isDefined(l) && l[c[1]].apply(l, c[2]);
                                else {
                                    var d = function(t) {
                                        var e = a.indexOf(i + "-" + t);
                                        (-1 === e || r) && (-1 === e && a.push(i + "-" + t),
                                        n.isDefined(l) && l[c[1]].apply(l, c[2]))
                                    };
                                    if (n.isFunction(c[2][0]))
                                        d(c[2][0]);
                                    else if (n.isArray(c[2][0]))
                                        for (var p = 0, h = c[2][0].length; p < h; p++)
                                            n.isFunction(c[2][0][p]) && d(c[2][0][p])
                                }
                            }
                }
                function P(t) {
                    var e = null;
                    return n.isString(t) ? e = t : n.isObject(t) && t.hasOwnProperty("name") && n.isString(t.name) && (e = t.name),
                    e
                }
                function I(t) {
                    if (!n.isString(t))
                        return !1;
                    try {
                        return m(t)
                    } catch (t) {
                        if (/No module/.test(t) || t.message.indexOf("$injector:nomod") > -1)
                            return !1
                    }
                }
                this.$get = ["$log", "$rootElement", "$rootScope", "$cacheFactory", "$q", function(t, e, i, a, c) {
                    var d, h = a("ocLazyLoad");
                    function g(e) {
                        var n = c.defer();
                        return t.error(e.message),
                        n.reject(e),
                        n.promise
                    }
                    return S || ((t = {}).error = n.noop,
                    t.warn = n.noop,
                    t.info = n.noop),
                    w.getInstanceInjector = function() {
                        return d || (d = e.data("$injector") || n.injector())
                    }
                    ,
                    {
                        _broadcast: u = function(e, n) {
                            x && i.$broadcast(e, n),
                            S && t.info(e, n)
                        }
                        ,
                        _$log: t,
                        _getFilesCache: function() {
                            return h
                        },
                        toggleWatch: function(t) {
                            t ? l.push(!0) : l.pop()
                        },
                        getModuleConfig: function(t) {
                            if (!n.isString(t))
                                throw new Error("You need to give the name of the module to get");
                            return b[t] ? n.copy(b[t]) : null
                        },
                        setModuleConfig: function(t) {
                            if (!n.isObject(t))
                                throw new Error("You need to give the module config object to set");
                            return b[t.name] = t,
                            t
                        },
                        getModules: function() {
                            return r
                        },
                        isLoaded: function(t) {
                            var e = function(t) {
                                var e = r.indexOf(t) > -1;
                                return e || (e = !!I(t)),
                                e
                            };
                            if (n.isString(t) && (t = [t]),
                            n.isArray(t)) {
                                var i, o;
                                for (i = 0,
                                o = t.length; i < o; i++)
                                    if (!e(t[i]))
                                        return !1;
                                return !0
                            }
                            throw new Error("You need to define the module(s) name(s)")
                        },
                        _getModuleName: P,
                        _getModule: function(t) {
                            try {
                                return m(t)
                            } catch (e) {
                                throw (/No module/.test(e) || e.message.indexOf("$injector:nomod") > -1) && (e.message = 'The module "' + C(t) + '" that you are trying to load does not exist. ' + e.message),
                                e
                            }
                        },
                        moduleExists: I,
                        _loadDependencies: function(t, e) {
                            var i, r, o, a = [], s = this;
                            if (null === (t = s._getModuleName(t)))
                                return c.when();
                            try {
                                i = s._getModule(t)
                            } catch (t) {
                                return g(t)
                            }
                            return r = s.getRequires(i),
                            n.forEach(r, (function(i) {
                                if (n.isString(i)) {
                                    var r = s.getModuleConfig(i);
                                    if (null === r)
                                        return void M.push(i);
                                    i = r,
                                    r.name = void 0
                                }
                                if (s.moduleExists(i.name))
                                    return 0 !== (o = i.files.filter((function(t) {
                                        return s.getModuleConfig(i.name).files.indexOf(t) < 0
                                    }
                                    ))).length && s._$log.warn('Module "', t, '" attempted to redefine configuration for dependency. "', i.name, '"\n Additional Files Loaded:', o),
                                    n.isDefined(s.filesLoader) ? void a.push(s.filesLoader(i, e).then((function() {
                                        return s._loadDependencies(i)
                                    }
                                    ))) : g(new Error("Error: New dependencies need to be loaded from external files (" + i.files + "), but no loader has been defined."));
                                if (n.isArray(i)) {
                                    var c = [];
                                    n.forEach(i, (function(t) {
                                        var e = s.getModuleConfig(t);
                                        null === e ? c.push(t) : e.files && (c = c.concat(e.files))
                                    }
                                    )),
                                    c.length > 0 && (i = {
                                        files: c
                                    })
                                } else
                                    n.isObject(i) && i.hasOwnProperty("name") && i.name && (s.setModuleConfig(i),
                                    M.push(i.name));
                                if (n.isDefined(i.files) && 0 !== i.files.length) {
                                    if (!n.isDefined(s.filesLoader))
                                        return g(new Error('Error: the module "' + i.name + '" is defined in external files (' + i.files + "), but no loader has been defined."));
                                    a.push(s.filesLoader(i, e).then((function() {
                                        return s._loadDependencies(i)
                                    }
                                    )))
                                }
                            }
                            )),
                            c.all(a)
                        },
                        inject: function(t) {
                            var e = arguments.length <= 1 || void 0 === arguments[1] ? {} : arguments[1]
                              , i = !(arguments.length <= 2 || void 0 === arguments[2]) && arguments[2]
                              , r = this
                              , o = c.defer();
                            if (n.isDefined(t) && null !== t) {
                                if (n.isArray(t)) {
                                    var a = [];
                                    return n.forEach(t, (function(t) {
                                        a.push(r.inject(t, e, i))
                                    }
                                    )),
                                    c.all(a)
                                }
                                r._addToLoadList(r._getModuleName(t), !0, i)
                            }
                            if (s.length > 0) {
                                var l = s.slice()
                                  , u = function t(n) {
                                    M.push(n),
                                    E[n] = o.promise,
                                    r._loadDependencies(n, e).then((function() {
                                        try {
                                            p = [],
                                            T(w, M, e)
                                        } catch (t) {
                                            return r._$log.error(t.message),
                                            void o.reject(t)
                                        }
                                        s.length > 0 ? t(s.shift()) : o.resolve(l)
                                    }
                                    ), (function(t) {
                                        o.reject(t)
                                    }
                                    ))
                                };
                                u(s.shift())
                            } else {
                                if (e && e.name && E[e.name])
                                    return E[e.name];
                                o.resolve()
                            }
                            return o.promise
                        },
                        getRequires: function(t) {
                            var e = [];
                            return n.forEach(t.requires, (function(t) {
                                -1 === r.indexOf(t) && e.push(t)
                            }
                            )),
                            e
                        },
                        _invokeQueue: _,
                        _registerInvokeList: O,
                        _register: T,
                        _addToLoadList: f,
                        _unregister: function(t) {
                            n.isDefined(t) && n.isArray(t) && n.forEach(t, (function(t) {
                                o[t] = void 0
                            }
                            ))
                        }
                    }
                }
                ],
                this._init(n.element(i.document))
            }
            ]);
            var h = n.bootstrap;
            n.bootstrap = function(t, e, i) {
                return r = ["ng", "oc.lazyLoad"],
                o = {},
                a = [],
                s = [],
                c = [],
                l = [],
                u = n.noop,
                d = {},
                p = [],
                n.forEach(e.slice(), (function(t) {
                    f(t, !0, !0)
                }
                )),
                h(t, e, i)
            }
            ;
            var f = function(t, e, i) {
                (l.length > 0 || e) && n.isString(t) && -1 === s.indexOf(t) && (s.push(t),
                i && c.push(t))
            }
              , m = n.module;
            n.module = function(t, e, n) {
                return f(t, !1, !0),
                m(t, e, n)
            }
            ,
            t.exports === e && (t.exports = "oc.lazyLoad")
        }(angular, window),
        function(t) {
            "use strict";
            t.module("oc.lazyLoad").directive("ocLazyLoad", ["$ocLazyLoad", "$compile", "$animate", "$parse", "$timeout", function(e, n, i, r, o) {
                return {
                    restrict: "A",
                    terminal: !0,
                    priority: 1e3,
                    compile: function(o, a) {
                        var s = o[0].innerHTML;
                        return o.html(""),
                        function(o, a, c) {
                            var l = r(c.ocLazyLoad);
                            o.$watch((function() {
                                return l(o) || c.ocLazyLoad
                            }
                            ), (function(r) {
                                t.isDefined(r) && e.load(r).then((function() {
                                    i.enter(s, a),
                                    n(a.contents())(o)
                                }
                                ))
                            }
                            ), !0)
                        }
                    }
                }
            }
            ])
        }(angular),
        function(t) {
            "use strict";
            t.module("oc.lazyLoad").config(["$provide", function(e) {
                e.decorator("$ocLazyLoad", ["$delegate", "$q", "$window", "$interval", function(e, i, r, o) {
                    var a = !1
                      , s = r.document.getElementsByTagName("head")[0] || r.document.getElementsByTagName("body")[0];
                    return e.buildElement = function(c, l, u) {
                        var d, p, h = i.defer(), f = e._getFilesCache(), m = function(t) {
                            var e = (new Date).getTime();
                            return t.indexOf("?") >= 0 ? "&" === t.substring(0, t.length - 1) ? t + "_dc=" + e : t + "&_dc=" + e : t + "?_dc=" + e
                        };
                        switch (t.isUndefined(f.get(l)) && f.put(l, h.promise),
                        c) {
                        case "css":
                            (d = r.document.createElement("link")).type = "text/css",
                            d.rel = "stylesheet",
                            d.href = !1 === u.cache ? m(l) : l;
                            break;
                        case "js":
                            (d = r.document.createElement("script")).src = !1 === u.cache ? m(l) : l;
                            break;
                        default:
                            f.remove(l),
                            h.reject(new Error('Requested type "' + c + '" is not known. Could not inject "' + l + '"'))
                        }
                        d.onload = d.onreadystatechange = function(t) {
                            d.readyState && !/^c|loade/.test(d.readyState) || p || (d.onload = d.onreadystatechange = null,
                            p = 1,
                            e._broadcast("ocLazyLoad.fileLoaded", l),
                            h.resolve(d))
                        }
                        ,
                        d.onerror = function() {
                            f.remove(l),
                            h.reject(new Error("Unable to load " + l))
                        }
                        ,
                        d.async = u.serie ? 0 : 1;
                        var g = s.lastChild;
                        if (u.insertBefore) {
                            var v = t.element(t.isDefined(n) ? u.insertBefore : document.querySelector(u.insertBefore));
                            v && v.length > 0 && (g = v[0])
                        }
                        if (g.parentNode.insertBefore(d, g),
                        "css" == c) {
                            var y = r.navigator.userAgent.toLowerCase();
                            if (y.indexOf("phantomjs/1.9") > -1)
                                a = !0;
                            else if (/iP(hone|od|ad)/.test(r.navigator.platform)) {
                                var b = r.navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/)
                                  , w = parseFloat([parseInt(b[1], 10), parseInt(b[2], 10), parseInt(b[3] || 0, 10)].join("."));
                                a = w < 6
                            } else if (y.indexOf("android") > -1) {
                                var S = parseFloat(y.slice(y.indexOf("android") + 8));
                                a = S < 4.4
                            } else if (y.indexOf("safari") > -1) {
                                var x = y.match(/version\/([\.\d]+)/i);
                                a = x && x[1] && parseFloat(x[1]) < 6
                            }
                            if (a)
                                var M = 1e3
                                  , E = o((function() {
                                    try {
                                        d.sheet.cssRules,
                                        o.cancel(E),
                                        d.onload()
                                    } catch (t) {
                                        --M <= 0 && d.onerror()
                                    }
                                }
                                ), 20)
                        }
                        return h.promise
                    }
                    ,
                    e
                }
                ])
            }
            ])
        }(angular),
        function(t) {
            "use strict";
            t.module("oc.lazyLoad").config(["$provide", function(e) {
                e.decorator("$ocLazyLoad", ["$delegate", "$q", function(e, n) {
                    return e.filesLoader = function(i) {
                        var r = arguments.length <= 1 || void 0 === arguments[1] ? {} : arguments[1]
                          , o = []
                          , a = []
                          , s = []
                          , c = []
                          , l = null
                          , u = e._getFilesCache();
                        e.toggleWatch(!0),
                        t.extend(r, i);
                        var d = function(n) {
                            var i, d = null;
                            if (t.isObject(n) && (d = n.type,
                            n = n.path),
                            l = u.get(n),
                            t.isUndefined(l) || !1 === r.cache) {
                                if (null !== (i = /^(css|less|html|htm|js)?(?=!)/.exec(n)) && (d = i[1],
                                n = n.substr(i[1].length + 1, n.length)),
                                !d)
                                    if (null !== (i = /[.](css|less|html|htm|js)?((\?|#).*)?$/.exec(n)))
                                        d = i[1];
                                    else {
                                        if (e.jsLoader.hasOwnProperty("ocLazyLoadLoader") || !e.jsLoader.hasOwnProperty("requirejs"))
                                            return void e._$log.error("File type could not be determined. " + n);
                                        d = "js"
                                    }
                                "css" !== d && "less" !== d || -1 !== o.indexOf(n) ? "html" !== d && "htm" !== d || -1 !== a.indexOf(n) ? "js" === d || -1 === s.indexOf(n) ? s.push(n) : e._$log.error("File type is not valid. " + n) : a.push(n) : o.push(n)
                            } else
                                l && c.push(l)
                        };
                        if (r.serie ? d(r.files.shift()) : t.forEach(r.files, (function(t) {
                            d(t)
                        }
                        )),
                        o.length > 0) {
                            var p = n.defer();
                            e.cssLoader(o, (function(n) {
                                t.isDefined(n) && e.cssLoader.hasOwnProperty("ocLazyLoadLoader") ? (e._$log.error(n),
                                p.reject(n)) : p.resolve()
                            }
                            ), r),
                            c.push(p.promise)
                        }
                        if (a.length > 0) {
                            var h = n.defer();
                            e.templatesLoader(a, (function(n) {
                                t.isDefined(n) && e.templatesLoader.hasOwnProperty("ocLazyLoadLoader") ? (e._$log.error(n),
                                h.reject(n)) : h.resolve()
                            }
                            ), r),
                            c.push(h.promise)
                        }
                        if (s.length > 0) {
                            var f = n.defer();
                            e.jsLoader(s, (function(n) {
                                t.isDefined(n) && (e.jsLoader.hasOwnProperty("ocLazyLoadLoader") || e.jsLoader.hasOwnProperty("requirejs")) ? (e._$log.error(n),
                                f.reject(n)) : f.resolve()
                            }
                            ), r),
                            c.push(f.promise)
                        }
                        if (0 === c.length) {
                            var m = n.defer()
                              , g = "Error: no file to load has been found, if you're trying to load an existing module you should use the 'inject' method instead of 'load'.";
                            return e._$log.error(g),
                            m.reject(g),
                            m.promise
                        }
                        return r.serie && r.files.length > 0 ? n.all(c).then((function() {
                            return e.filesLoader(i, r)
                        }
                        )) : n.all(c).finally((function(t) {
                            return e.toggleWatch(!1),
                            t
                        }
                        ))
                    }
                    ,
                    e.load = function(i) {
                        var r, o = arguments.length <= 1 || void 0 === arguments[1] ? {} : arguments[1], a = this, s = null, c = [], l = n.defer(), u = t.copy(i), d = t.copy(o);
                        if (t.isArray(u))
                            return t.forEach(u, (function(t) {
                                c.push(a.load(t, d))
                            }
                            )),
                            n.all(c).then((function(t) {
                                l.resolve(t)
                            }
                            ), (function(t) {
                                l.reject(t)
                            }
                            )),
                            l.promise;
                        if (t.isString(u) ? (s = a.getModuleConfig(u)) || (s = {
                            files: [u]
                        }) : t.isObject(u) && (s = t.isDefined(u.path) && t.isDefined(u.type) ? {
                            files: [u]
                        } : a.setModuleConfig(u)),
                        null === s) {
                            var p = a._getModuleName(u);
                            return r = 'Module "' + (p || "unknown") + '" is not configured, cannot load.',
                            e._$log.error(r),
                            l.reject(new Error(r)),
                            l.promise
                        }
                        t.isDefined(s.template) && (t.isUndefined(s.files) && (s.files = []),
                        t.isString(s.template) ? s.files.push(s.template) : t.isArray(s.template) && s.files.concat(s.template));
                        var h = t.extend({}, d, s);
                        return t.isUndefined(s.files) && t.isDefined(s.name) && e.moduleExists(s.name) ? e.inject(s.name, h, !0) : (e.filesLoader(s, h).then((function() {
                            e.inject(null, h).then((function(t) {
                                l.resolve(t)
                            }
                            ), (function(t) {
                                l.reject(t)
                            }
                            ))
                        }
                        ), (function(t) {
                            l.reject(t)
                        }
                        )),
                        l.promise)
                    }
                    ,
                    e
                }
                ])
            }
            ])
        }(angular),
        function(t) {
            "use strict";
            t.module("oc.lazyLoad").config(["$provide", function(e) {
                e.decorator("$ocLazyLoad", ["$delegate", "$q", function(e, n) {
                    return e.cssLoader = function(i, r, o) {
                        var a = [];
                        t.forEach(i, (function(t) {
                            a.push(e.buildElement("css", t, o))
                        }
                        )),
                        n.all(a).then((function() {
                            r()
                        }
                        ), (function(t) {
                            r(t)
                        }
                        ))
                    }
                    ,
                    e.cssLoader.ocLazyLoadLoader = !0,
                    e
                }
                ])
            }
            ])
        }(angular),
        function(t) {
            "use strict";
            t.module("oc.lazyLoad").config(["$provide", function(e) {
                e.decorator("$ocLazyLoad", ["$delegate", "$q", function(e, n) {
                    return e.jsLoader = function(i, r, o) {
                        var a = [];
                        t.forEach(i, (function(t) {
                            a.push(e.buildElement("js", t, o))
                        }
                        )),
                        n.all(a).then((function() {
                            r()
                        }
                        ), (function(t) {
                            r(t)
                        }
                        ))
                    }
                    ,
                    e.jsLoader.ocLazyLoadLoader = !0,
                    e
                }
                ])
            }
            ])
        }(angular),
        function(t) {
            "use strict";
            t.module("oc.lazyLoad").config(["$provide", function(e) {
                e.decorator("$ocLazyLoad", ["$delegate", "$templateCache", "$q", "$http", function(e, n, i, r) {
                    return e.templatesLoader = function(o, a, s) {
                        var c = []
                          , l = e._getFilesCache();
                        return t.forEach(o, (function(e) {
                            var o = i.defer();
                            c.push(o.promise),
                            r.get(e, s).then((function(i) {
                                var r = i.data;
                                t.isString(r) && r.length > 0 && t.forEach(t.element(r), (function(t) {
                                    "SCRIPT" === t.nodeName && "text/ng-template" === t.type && n.put(t.id, t.innerHTML)
                                }
                                )),
                                t.isUndefined(l.get(e)) && l.put(e, !0),
                                o.resolve()
                            }
                            )).catch((function(t) {
                                o.reject(new Error('Unable to load template file "' + e + '": ' + t.data))
                            }
                            ))
                        }
                        )),
                        i.all(c).then((function() {
                            a()
                        }
                        ), (function(t) {
                            a(t)
                        }
                        ))
                    }
                    ,
                    e.templatesLoader.ocLazyLoadLoader = !0,
                    e
                }
                ])
            }
            ])
        }(angular),
        Array.prototype.indexOf || (Array.prototype.indexOf = function(t, e) {
            var n;
            if (null == this)
                throw new TypeError('"this" is null or not defined');
            var i = Object(this)
              , r = i.length >>> 0;
            if (0 === r)
                return -1;
            var o = +e || 0;
            if (Math.abs(o) === 1 / 0 && (o = 0),
            o >= r)
                return -1;
            for (n = Math.max(o >= 0 ? o : r - Math.abs(o), 0); n < r; ) {
                if (n in i && i[n] === t)
                    return n;
                n++
            }
            return -1
        }
        )
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    e.ivWebApp = function() {
        var t = ["ui.bootstrap", "ngFileUpload", "ui.slider", "ngSanitize", "gettext", "LocalStorageModule", "flow", "ngAnimate", "luegg.directives", "cfp.hotkeys", "angular-progress-arc", "colorpicker.module", "oc.lazyLoad"];
        0;
        void 0 !== window.IndoorViewerWebAppExtraModules && (t = t.concat(window.IndoorViewerWebAppExtraModules));
        return i.module("IVWebApp", t)
    }(),
    window.IndoorViewerWebApp = e.ivWebApp,
    n(949)
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    n(950),
    n(956);
    var i = n(957);
    i.keys().forEach(i),
    n(994),
    n(995),
    n(996),
    n(997),
    n(998),
    n(999),
    n(1e3),
    n(1001),
    n(1002),
    n(1003),
    n(1004),
    n(1005),
    n(1007),
    n(1009),
    n(15),
    n(1245),
    n(1249),
    n(1250),
    n(1251),
    n(1252),
    n(1253),
    n(187),
    n(397),
    n(389),
    n(424),
    n(1254),
    n(1256),
    n(1258),
    n(405),
    n(91),
    n(1260),
    n(1265),
    n(50),
    n(49),
    n(404),
    n(562),
    n(201),
    n(86),
    n(1269),
    n(1272),
    n(1284),
    n(1288),
    n(1294),
    n(1298),
    n(454),
    n(1312),
    n(1314),
    n(139),
    n(200),
    n(104),
    n(1318),
    n(259),
    n(1320),
    n(73),
    n(1324),
    n(14),
    n(41),
    n(17),
    n(271),
    n(21),
    n(598),
    n(231),
    n(1376),
    n(140),
    n(1377),
    n(1378),
    n(1379),
    n(1380),
    n(1381),
    n(1382),
    n(1384),
    n(1385),
    n(1386),
    n(1387),
    n(1388),
    n(410),
    n(1401),
    n(1417),
    n(1463),
    n(1467),
    n(1494),
    n(1579),
    n(1585),
    n(1587),
    n(1665),
    n(1666)
}
, function(t, e, n) {
    var i = n(11)
      , r = n(951);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    var i = n(10)
      , r = n(211)
      , o = n(515)
      , a = n(516)
      , s = n(517)
      , c = n(952)
      , l = n(953)
      , u = n(954)
      , d = n(955);
    e = i(!1);
    var p = r(o)
      , h = r(a)
      , f = r(s)
      , m = r(c)
      , g = r(l)
      , v = r(u)
      , y = r(d);
    e.push([t.i, ".indoorViewer.mobile-small .non-mobile{display:none}.indoorViewer.mobile-small #status-check-wrapper .panel{width:calc(100% - 20px)}.indoorViewer.mobile-small #swap-scenes-mobile{width:3em;height:3em;max-height:none;padding:0 .6em;transition:transform .2s;right:10px;bottom:10px}.indoorViewer.mobile-small #swap-scenes-mobile,.indoorViewer.mobile-small #swap-scenes-mobile:active{position:absolute!important}.indoorViewer.mobile-small #swap-scenes-mobile.map{transform:translate3d(0,-20px,0)}.indoorViewer.mobile-small #swap-scenes-mobile.map>img{margin-bottom:1px}.indoorViewer.mobile-small #swap-scenes-mobile.slide-down{transform:translate3d(0,calc(20px + 3em),0)}.indoorViewer.mobile-small #swap-scenes-mobile>img{width:1.8em}.indoorViewer.mobile-small #mapZoomControls{bottom:2em}.indoorViewer.mobile-small #insetPanel{visibility:hidden}.indoorViewer.mobile-small #floorChanger{z-index:4}.indoorViewer.mobile-small #floorChanger button{width:3em;overflow:hidden;padding-left:2px;padding-right:2px}.indoorViewer.mobile-small #left-panel-pois{max-width:100%;transition:max-width .2s}.indoorViewer.mobile-small .context-menu-list{z-index:16!important}.indoorViewer.mobile-small .modal-dialog-licenseText{padding-left:10px;padding-right:10px}.indoorViewer.mobile-small .modal-dialog-licenseText .panel-autoscroll{max-height:none}.indoorViewer.mobile .non-mobile{display:none}.indoorViewer.mobile #status-check-wrapper .panel{width:calc(100% - 20px)}.indoorViewer.mobile #swap-scenes-mobile{width:3em;height:3em;max-height:none;padding:0 .6em;transition:transform .2s;right:10px;bottom:10px}.indoorViewer.mobile #swap-scenes-mobile,.indoorViewer.mobile #swap-scenes-mobile:active{position:absolute!important}.indoorViewer.mobile #swap-scenes-mobile.map{transform:translate3d(0,-20px,0)}.indoorViewer.mobile #swap-scenes-mobile.map>img{margin-bottom:1px}.indoorViewer.mobile #swap-scenes-mobile.slide-down{transform:translate3d(0,calc(20px + 3em),0)}.indoorViewer.mobile #swap-scenes-mobile>img{width:1.8em}.indoorViewer.mobile #mapZoomControls{bottom:2em}.indoorViewer.mobile #insetPanel{visibility:hidden}.indoorViewer.mobile #floorChanger{z-index:4}.indoorViewer.mobile #floorChanger button{width:3em;overflow:hidden;padding-left:2px;padding-right:2px}.indoorViewer.mobile #left-panel-pois{max-width:100%;transition:max-width .2s}.indoorViewer.mobile .context-menu-list{z-index:16!important}.indoorViewer.mobile .modal-dialog-licenseText{padding-left:10px;padding-right:10px}.indoorViewer.mobile .modal-dialog-licenseText .panel-autoscroll{max-height:none}.indoorViewer.desktop .non-desktop{display:none}.indoorViewer.desktop .modal-dialog-licenseText{padding-left:80px;padding-right:80px}.z-index-1{box-shadow:none;position:relative;z-index:1}.indoorViewer.mobile #swap-scenes-mobile,.indoorViewer.mobile #swap-scenes-mobile:active,.indoorViewer.mobile-small #swap-scenes-mobile,.indoorViewer.mobile-small #swap-scenes-mobile:active,.z-index-2{box-shadow:0 1.5px 4px rgba(0,0,0,.24),0 1.5px 6px rgba(0,0,0,.12);position:relative;z-index:5}.z-index-3{box-shadow:0 3px 12px rgba(0,0,0,.23),0 3px 12px rgba(0,0,0,.16);position:relative;z-index:10}.z-index-4{box-shadow:0 6px 12px rgba(0,0,0,.23),0 10px 40px rgba(0,0,0,.19);position:relative;z-index:15}.z-index-5{box-shadow:0 10px 20px rgba(0,0,0,.22),0 14px 56px rgba(0,0,0,.25);position:relative;z-index:20}.front-element{z-index:1031}.full-window{position:fixed;margin:0;padding:0;left:0;right:0;top:0;bottom:0;z-index:1029;border-radius:0}.full-window-scroll{max-height:100vh}.full-window-scroll,.panel-autoscroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.panel-autoscroll{max-height:80vh}.autoscroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.fixed-top-right{position:fixed;top:10px;right:0}.center-vertical{position:absolute;top:50%;transform:translateY(-50%)}.float-left{float:left}.float-right{float:right}.margin-top-small{margin-top:5px!important}.margin-left-small{margin-left:5px!important}.margin-right-small{margin-right:5px!important}.margin-bottom-small{margin-bottom:5px!important}.margin-top{margin-top:15px!important}.margin-left{margin-left:15px!important}.margin-right{margin-right:15px!important}.margin-bottom{margin-bottom:15px!important}.margin-top-big{margin-top:25px!important}.margin-bottom-big{margin-bottom:25px!important}.no-margin{margin:0!important}.no-margin-bottom{margin-bottom:0!important}.padding-horizontal{padding-left:15px!important;padding-right:15px!important}.padding-top,.padding-vertical{padding-top:15px!important}.padding-bottom,.padding-vertical{padding-bottom:15px!important}.no-padding-top{padding-top:0!important}.no-padding-bottom{padding-bottom:0!important}.no-padding-horizontal,.no-padding-left{padding-left:0!important}.no-padding-horizontal,.no-padding-right{padding-right:0!important}.no-padding{padding:0!important}.border{border:1px solid #e6e6e6}.border-top{border-top:1px solid #e6e6e6}.border-bottom{border-bottom:1px solid #e6e6e6}.border-left{border-left:1px solid #e6e6e6}.border-right{border-right:1px solid #e6e6e6}.no-border{border:none;border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.no-border-width{border:none}#mapZoomControls,.border-radius{border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}#mapZoomControls,.border-radius,.border-radius-top{border-top-left-radius:4px!important;border-top-right-radius:4px!important}.border-radius-bottom{border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}.no-border-radius{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.indoorViewer.ios .no-hover-ios:hover{background-color:inherit!important}.no-shadow{box-shadow:none!important}.clear-background{border:0}.clear-background,.no-background{background:none!important}.no-overflow{overflow:hidden}.clear-button,.clear-button:hover,.clickable,.clickable:hover,.link,.link:hover,.menu-close-button,.menu-close-button:hover,:hover[data-toggle~=collapse],[data-toggle~=collapse]{cursor:pointer}@font-face{font-family:Open Sans;src:url(" + p + ') format("woff")}@font-face{font-family:Open Sans;font-weight:700;src:url(' + h + ') format("woff")}@font-face{font-family:Material Icons;font-style:normal;font-weight:400;src:url(' + f + ') format("woff")}.material-icons{font-family:Material Icons,sans-serif;font-weight:400;font-style:normal;font-size:24px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga"}@-ms-viewport{width:auto;height:auto}body{font-family:Open Sans,sans-serif;overflow:hidden}button,button:active,button:focus,button:hover{outline:none!important}.h1,.h2,.h3,.h4,.h5,.h6,.tooltip,h1,h2,h3,h4,h5,h6{font-family:Open Sans,sans-serif}.modal-dialog.full-window{width:100%}.full-window>.modal-content{min-height:100%;display:flex;flex-direction:column}.full-window>.modal-content>.modal-body{flex-grow:1;display:flex;flex-direction:column}.full-window>.modal-content>.modal-body>.cke{flex-grow:1}#splash-screen{transition:visibility .3s,opacity .3s}.indoorViewer{position:relative;height:100%;overflow:hidden;font-size:14px;text-align:left}.indoorViewer:before{display:none;content:"styles-loaded"}.indoorViewer-scene{position:relative;margin:0;padding:0;height:100%;overflow:hidden;background-color:#000}.indoorViewerFull{position:absolute;width:100%;height:100%;overflow:hidden}indoorviewer{display:block}hr{width:100%;margin:15px 0}.relative{position:relative}.absolute-bottom{position:absolute;bottom:0}.absolute-right{position:absolute;right:0}#geo-reg-open-layers-map,.main-view,.map-view{position:absolute;width:100%;height:100%;left:0;top:0}.open-layers-map{background-color:#e5e3df}.open-layers-map.geo-reg-map .olControlZoom{margin-top:60px;margin-left:13px}.open-layers-map .olControlAttribution{right:5px!important;bottom:5px!important}.webGlMissing{position:absolute;width:100%;height:100%;left:0;top:0;padding-top:100px;background:#fff;color:#000;text-align:center}.no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.panel>h4:first-child{margin-top:15px;margin-left:15px}.menu-close-button{position:absolute;top:10px;right:10px;width:44px;height:44px;padding:10px}.menu-close-button[disabled]{cursor:default;opacity:.65}.table tbody>tr>td,.table th{border-top-width:0}.list-group{border-radius:4px}.list-group.panel-autoscroll{margin-bottom:0}.list-group.panel-autoscroll>.list-group-item:first-child,.list-group.panel-autoscroll>.list-group-item:last-child{border-radius:0}.list-group>a{cursor:pointer}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;background-color:#3398c7;border-color:#3398c7}.list-group-item[disabled],.list-group-item[disabled]:active,.list-group-item[disabled]:focus,.list-group-item[disabled]:hover{color:#333;background-color:#ddd;cursor:default}.navbar-nav>li[disabled]>a,.navbar-nav>li[disabled]>a:active,.navbar-nav>li[disabled]>a:focus,.navbar-nav>li[disabled]>a:hover{color:#b5b5b5;cursor:not-allowed}.alert-item-info{display:inline-block;padding:5px 12px;cursor:default}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.clear-button{position:absolute;right:5px;top:50%;transform:translateY(-50%);width:15px;z-index:3}.clear-button-padding{padding-right:35px}.data-set-jump{padding-right:.3em;margin-left:1em;font-size:1.3em;display:inline-block;vertical-align:middle}.multiple-dataset-selector .list-group-item{height:4em;padding:.2em 10px;vertical-align:middle}.multiple-dataset-selector .unassigned-datasets>[role=button]{margin-bottom:10px;padding-right:60px;position:relative}alignment-toolbar>.btn-toolbar{margin-bottom:20px}.data-set-icon{padding:.5em;margin-right:.6em;border-radius:50%;display:inline-block;vertical-align:middle}.data-set-icon.thin-border{border:1px solid #fff}.data-set-icon.thin-border-dark{border:1px solid #000}.nav .dataset .data-set-icon{margin-left:.6em}.data-set-info{margin-top:.3em;overflow:hidden}.data-set-controls{float:right;margin-top:.6em}.nav .dataset input[type=checkbox]{position:absolute;top:4px}.dataset-mgmt-row{display:flex;align-items:center}.dataset-mgmt-row .delete-button{padding:0;font-size:1.2em;background-color:#fff;border-color:#ccc}.dataset-mgmt-row .delete-button i{position:relative;padding:7px 12px}.dataset-mgmt-row .delete-button,.dataset-mgmt-row .delete-button:active,.dataset-mgmt-row .delete-button:hover{color:#333}.dataset-mgmt-row .delete-button:hover{background-color:#e6e6e6;border-color:#adadad}.dataset-mgmt-row .delete-button:active{background-color:#d4d4d4;border-color:#8c8c8c}.dataset-mgmt-row>div{margin:.2em 0 .2em .8em}.dataset-mgmt-icon{padding:.5em;border-radius:50%}.dataset-mgmt-name{font-size:.8em;color:#a2a2a2;margin-top:.1em;text-overflow:ellipsis;overflow-x:hidden}user-editor .modal-content.panel-autoscroll{max-height:calc(100vh - 20px)}#save-user-modal .panel-heading .panel-title{padding-left:0}.exit-icon{font-size:25px;cursor:pointer}#settings-config-panel>.panel-heading>.control-buttons{text-align:right}#settings-config-panel>.panel-body{padding-top:68px}#settings-config-panel textarea{resize:vertical}#settings-config-panel .alert a{word-wrap:break-word}.vertical-menu:not(.sticky-headers-enabled) #settings-config-panel>.panel-body{padding-top:15px}.control-buttons>button[disabled]{opacity:.25}#settings-groups-panel button:focus,#settings-users-panel button:focus{outline:none}#settings-groups-panel>.panel-footer,#settings-users-panel>.panel-footer{text-align:right;background-color:transparent}#settings-users-panel select{padding:0}#settings-users-panel option{padding:5px 10px;min-height:29px}.iv-panel-warning{display:table;margin-bottom:0}.iv-panel-warning.margin-top-no-search-box{margin-top:52px}.iv-panel-warning>*{display:table-cell;vertical-align:middle;padding:0 10px}.panel-control-button{position:relative;outline:none!important;transition:background-color .2s,border-color .2s}.panel-control-button.in-progress,.panel-control-button.in-progress:active,.panel-control-button.in-progress:focus,.panel-control-button.in-progress:hover{background-color:rgba(51,51,51,.1);border-color:rgba(51,51,51,.1)}.panel-control-button>.spinner{opacity:0}.panel-control-button.in-progress>.spinner{opacity:1}.footer .panel-control-button+.panel-control-button,.modal-footer .panel-control-button+.panel-control-button,.panel-footer .panel-control-button+.panel-control-button{margin-left:5px;margin-bottom:0}.undo-button>span:before{font-family:FontAwesome;content:"\\f0e2";margin-right:4px}.move-button>span:before{font-family:FontAwesome;content:"\\f047";margin-right:4px}.dataset-select-color>option[value*="string:"]{display:none}.form-control{box-shadow:none}.form-control:focus{outline:0}select:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}label{cursor:pointer}.normal-font{font-weight:400}.dropdown-menu{overflow-y:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 62px);padding:0;margin:0;box-sizing:content-box;overflow-x:hidden;text-align:left;border:none;border-top:1px solid #e6e6e6;border-radius:0 0 4px 4px;box-shadow:0 1.5px 4px rgba(0,0,0,.24)}.dropdown-menu.dropdown-margin-bottom-extended li:last-child{margin-bottom:60vh}.dropdown-menu.dropdown-menu-item-separators>li:not(.divider):not(:last-child){border-bottom:1px solid #e6e6e6}.dropdown-menu.dropdown-center{left:50%;transform:translateX(-50%);right:auto}.dropdown-menu>li{padding:.8em;white-space:nowrap;cursor:pointer}.dropdown-menu>li.divider{padding:0;margin:0}.dropdown-menu>li.active,.dropdown-menu>li:focus,.dropdown-menu>li:hover{background-color:#e6e6e6}.dropdown-menu>li:focus,.dropdown-menu>li>a:focus{outline:none}.dropdown-menu>li>a{padding:0;color:inherit!important;background-color:inherit!important}.dropdown-menu .dropdown-label{padding:0}.dropdown-menu .dropdown-label label{padding:.8em;margin:0;font-weight:400;width:100%;height:100%}.panel-title{font-weight:700}.long-title{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.header-icon{margin-right:.5em}.panel-heading>.row>.col-xs-6{width:auto}.glyphicon-share-alt{top:3px}.btn:focus{outline:none}.btn-danger,.btn-default,.btn-primary{padding:5px 12px;max-height:32px}.btn-default.dropdown-toggle{max-height:none;white-space:normal}.btn-borderless,.btn-borderless:active,.btn-borderless:focus,.btn-borderless[disabled]{border-color:transparent;background-color:transparent}.btn-borderless:active:focus:hover,.btn-borderless:active:hover,.btn-borderless:focus:focus:hover,.btn-borderless:focus:hover,.btn-borderless:hover,.btn-borderless[disabled]:focus:hover,.btn-borderless[disabled]:hover{border-color:#adadad;background-color:#e6e6e6}.panel-heading.user-logged-in{font-size:15px}.groups-tree{border-left:1px solid #ddd;border-right:1px solid #ddd;border-bottom:1px solid #ddd;cursor:default}.groups-tree .dropdown-menu{margin:0!important}.groups-tree .indent{margin-left:19px}.groups-tree .group-name{line-height:32px;margin-left:5px}.groups-tree .check-icon{margin:0 5px}.groups-tree .check-icon.check-enabled{cursor:pointer}.groups-tree .group-in-adding>.group-left-controls,.groups-tree .group-in-edit>.group-left-controls{width:100%}.groups-tree .list-group-item .group-left-controls{float:left}.groups-tree .list-group-item>.group-right-controls{min-height:34px;text-align:right}.groups-tree .list-group-item>.group-right-controls>.dropdown{margin-right:5px}.groups-tree .list-group-item>.group-right-controls>.dropdown>button{color:#000;background-color:#ebebeb;border-color:#ebebeb;box-shadow:none}.groups-tree .list-group-item>.group-right-controls>.dropdown>button:active{background-color:#e1e1e1;border-color:#e1e1e1}.groups-tree .list-group-item>.group-right-controls>.dropdown>button:disabled{opacity:.8}.groups-tree .list-group-item>.group-right-controls>.dropdown.open>button{background-color:#e1e1e1;border-color:#e1e1e1}.groups-tree .list-group-item>.group-right-controls>.dropdown-menu{margin-right:5px}.groups-tree .list-group-item>.group-right-controls>.dropdown-menu>li.disabled{color:rgba(0,0,0,.5)}.groups-tree .list-group-item.group-added>.group-right-controls>.dropdown>button{color:#fff;background-color:#52a552;border-color:#52a552}.groups-tree .list-group-item.group-added>.group-right-controls>.dropdown>button:active{background-color:#499349;border-color:#499349}.groups-tree .list-group-item.group-added>.group-right-controls>.dropdown>button>.caret{border-top-color:#fff}.groups-tree .list-group-item.group-added>.group-right-controls>.dropdown.open>button{background-color:#499349;border-color:#499349}.groups-tree .list-group-item.group-selected>.group-right-controls>.dropdown>button{color:#fff;background-color:#3b7db5;border-color:#3b7db5}.groups-tree .list-group-item.group-selected>.group-right-controls>.dropdown>button:active{background-color:#2f6490;border-color:#2f6490}.groups-tree .list-group-item.group-selected>.group-right-controls>.dropdown>button>.caret{border-top-color:#fff}.groups-tree .list-group-item.group-selected>.group-right-controls>.dropdown.open>button{background-color:#2f6490;border-color:#2f6490}.groups-tree .group-left-controls input{box-shadow:none}.groups-tree .group-left-controls input:focus{outline:none}.groups-tree .group-left-controls button{min-width:40px}.groups-tree .group-left-controls button:active{box-shadow:none}.groups-tree .group-left-controls button:focus{outline:none}.groups-tree .list-group{margin-top:5px!important;margin-bottom:0!important}.groups-tree .list-group-item{color:#000;background-color:#fff;min-height:44px;padding:5px 0 5px 15px;border-left-width:0;border-right-width:0}.groups-tree .group-hover{background-color:#f5f5f5}.groups-tree .group-added.group-hover{background-color:#6cbf6c}.groups-tree .group-selected.group-hover{background-color:#5496cf}.groups-tree .group-disabled:hover{background-color:#f5f5f5;cursor:not-allowed}.groups-tree .list-group-item.group-expanded{padding-bottom:0;border-bottom-width:0}.groups-tree .list-group-item:first-child,.groups-tree .list-group-item:last-child{border-radius:0}.groups-tree .list-group-item:last-child{border-bottom-width:0}.groups-tree>.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.groups-tree>.list-group-item:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}.groups-tree .group-added{color:#fff;background-color:#5cb85c}.groups-tree .group-semi-checked{color:rgba(0,0,0,.5)}.groups-tree .group-selected{color:#fff;background-color:#428bca}.groups-tree .group-disabled{color:rgba(0,0,0,.5);background-color:#f5f5f5}.row .align-text{margin-top:7px}.row .align-slider{margin-top:12px;margin-bottom:12px}.row .align-textbox{margin-bottom:5px}#measurementsPanel .panel{z-index:4!important}#measurementsPanel .panel.padding-left-menu-icon .panel-heading{padding-left:50px}#measurementsPanel .panel .panel-footer{background-color:#fff}#measurementsPanel .panel .panel-footer button{display:block;float:right;margin-left:5px}#insetPanel{position:absolute;right:0;bottom:0;width:25%;height:15%;z-index:7;min-width:10em;min-height:10em;margin:10px;border:none;background-color:#000;transition:width .2s,height .2s,margin-bottom .2s;transition-delay:.1s,.1s,0s}#insetPanel.hover,#insetPanel.opened-context-menu,#insetPanel:hover{width:calc(50% - 10px);height:calc(50% - 10px)}#insetPanel.hover.transition-hover-longer-delay,#insetPanel.opened-context-menu.transition-hover-longer-delay,#insetPanel:hover.transition-hover-longer-delay{transition-delay:.4s,.4s,0s}#insetPanel.margin-bottom-big .margin-bottom-big{height:calc(50% - 25px)}.swap-views-button{position:absolute;right:0;bottom:0}.swap-views-button span{color:#fff;border-color:#008b8b;padding:15px;cursor:pointer;text-shadow:0 0 2px #000}#insetPanel canvas{width:100%;height:100%;background:rgba(0,0,0,.85)}#insetUI{position:absolute;bottom:20px;right:20px}#rightControls{padding-top:80px;float:right;opacity:1}#rightControls>div{position:absolute;right:10px}#floorChanger{position:absolute;text-align:center;top:50%;transform:translateY(-50%);top:calc(42.5% + 15px)}#BLLinks{bottom:3px;position:absolute}#BLLinks.above-map-info{bottom:2.3em}.modal-dialog-licenseText{padding-top:calc(10vh - 35px);padding-bottom:calc(10vh - 35px)}.modal-dialog-licenseText .panel-autoscroll{overflow-x:hidden}.mt-10{margin-top:10px}.mb-10{margin-bottom:10px}.ml-10{margin-left:10px}.mt-20,.space-from-top-between-rows{margin-top:20px}.mt-40{margin-top:40px}.modal{overflow-y:auto;-webkit-overflow-scrolling:touch;padding-right:0!important;display:none}.modal .modal-header{padding-right:40px}.modal .modal-header .menu-close-button{top:8px;right:8px}.modal .modal-body{word-wrap:break-word}audio{width:100%}.vtop{vertical-align:top}.vcenter,.vtop{display:table-cell;float:none}.vcenter{vertical-align:middle}.padding-left{padding-left:.5em}.link{color:#2e88b3}.link:active,.link:hover{text-decoration:underline}.poiIcon,.siteModelIcon{width:32px;height:32px}.poi-description{word-wrap:break-word}@-webkit-keyframes iv-progress-bar-stripes{0%{background-position:0 0}to{background-position:40px 0}}@-moz-keyframes iv-progress-bar-stripes{0%{background-position:0}to{background-position:40px 0}}@-o-keyframes iv-progress-bar-stripes{0%{background-position:40px 0}to{background-position:0 0}}@keyframes iv-progress-bar-stripes{0%{background-position:0 0}to{background-position:40px 0}}.progress-bar.active{animation:iv-progress-bar-stripes 2s linear 0s infinite normal none running}.progress-bar-striped{background-image:linear-gradient(135deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:40px 40px}.hide{display:inline-block!important;visibility:hidden!important}.fade-out{visibility:hidden;opacity:0;transition:visibility 0s .3s,opacity .3s linear}table.poiAttributes{width:100%;table-layout:fixed}#upload_panel{margin-top:20px;margin-bottom:0;box-shadow:none;border:none}#upload_panel .panel-heading{background:none;border:none}.btn-file{position:relative;overflow:hidden}.btn-file input[type=file]{position:absolute;top:0;right:0;width:100%;height:100%;font-size:100px;text-align:right;filter:alpha(opacity=0);opacity:0;outline:none;background:#fff;cursor:inherit;display:block}.panel-heading [data-toggle=collapse]{text-decoration:none!important}.panel-heading [data-toggle=collapse]:before{font-family:Glyphicons Halflings;content:"\\e114";padding-right:5px;color:#000}.panel-heading [data-toggle=collapse].collapsed:before{content:"\\e080"}#affine-ref-sys-table{margin:30px 0;text-align:center}#affine-ref-sys-table td{width:50px;vertical-align:middle}#affine-ref-sys-table .fa-circle{font-size:6px;transform:translateY(-40%)}#affine-ref-sys-table .vector-symbol{margin:0 10px}#affine-ref-sys-table .right-column{padding-left:0}.cke_contents>iframe{width:100%!important}.cke_toolbar{margin-left:-4px!important}span.spinner.next-to-btngroup{margin-left:10px}img.in-btn-group{max-height:28px}.spinner-in-btn{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.transparent{opacity:1!important;color:transparent!important;background-color:transparent!important;border-color:transparent!important}.animated-scale{transition:transform .2s}.zero-scale{-webkit-transform:scale(0);transform:scale(0)}.group-controls input{display:inline-block;width:40%}.group-controls .btn-default{margin-left:5px}button>span.hidden-xs{display:inline-block!important}.ng-hide{display:none!important}.ng-leave{display:none}.animate-repeat{display:flex;align-items:center}.animate-repeat .progress{margin-bottom:.5em;margin-top:.5em}.animate-repeat.ng-enter,.animate-repeat.ng-leave,.animate-repeat.ng-move{transition:all 1s linear}.animate-repeat.ng-enter,.animate-repeat.ng-leave.ng-leave-active,.animate-repeat.ng-move{opacity:0}.animate-repeat.ng-enter.ng-enter-active,.animate-repeat.ng-leave,.animate-repeat.ng-move.ng-move-active{opacity:1}.ng-animate-leave-fix.ng-leave{display:none}#job-panel .panel-heading{cursor:pointer}#job-panel .panel-heading.empty-job-output{cursor:default}#job-panel .job-details{max-height:30em;overflow-y:auto;-webkit-overflow-scrolling:touch}#job-panel .job-details pre{border:none;margin-bottom:0}.btn-group>.custom-tooltip{float:left}.btn-group>.custom-tooltip:not(:first-child):not(:last-child):not(.dropdown-toggle)>.btn{border-radius:0}.btn-group .btn+.custom-tooltip,.btn-group .btn-group+.custom-tooltip,.btn-group .custom-tooltip+.btn,.btn-group .custom-tooltip+.btn-group,.btn-group .custom-tooltip+.custom-tooltip{margin-left:-1px}.btn-group-vertical>.btn{border-left:#e6e6e6;border-bottom-color:#e6e6e6;border-right:#e6e6e6;border-top-color:#e6e6e6}.btn-group-vertical>.btn:last-child{border-bottom:none}.btn.active,.btn.active:active,.btn.active:focus,.btn.active:hover{box-shadow:inherit;background-color:#e6e6e6;color:#3398c7;font-weight:700}.btn:active{box-shadow:inherit}.disabled{opacity:.65!important}label>input:disabled+span{color:#d3d3d3;cursor:not-allowed}input:disabled{cursor:not-allowed}.btn-close{position:absolute;right:0;top:0;padding:9px 10px;max-height:none}.btn-close,.btn-close:focus,.btn-close:hover{border-top-right-radius:4px!important}.panel .menu-close-button{top:0;right:0}.panel-heading{padding-bottom:10px}.panel-heading h3{font-size:1.3em;margin:5px 0;display:inline-block}.modal-header h4,.panel-heading h4{margin:5px 0}.panel-heading .padding-left{padding:0}.panel-body{padding-top:1em}.panel-body,.panel-body .poi__content{padding-bottom:1em}.panel-body img{display:block;max-width:100%;height:auto!important}.poi-btn-toolbar{text-align:center;padding-bottom:1em;margin-left:4px;margin-right:4px}.poi-btn-toolbar .btn-group{float:none;margin-left:auto;margin-right:auto}.poi-btn-toolbar button{width:4.5em;margin-left:0!important;border:none;font-size:1.2em;text-align:center;max-height:none}.poi-btn-toolbar button,.poi-btn-toolbar button:active,.poi-btn-toolbar button:focus{background-color:transparent}.poi-btn-toolbar button:hover{background-color:#e6e6e6}.poi-btn-toolbar button .ic_svg{height:1.2em;max-width:1.5em}.poi-btn-toolbar button>.btn-description-mobile,.poi-btn-toolbar button>div .btn-description-mobile{font-size:.5em;font-weight:700;color:#3398c7}.panel-heading .btn-group .dropdown-menu{display:none}#left-panel-pois{background-color:#fff}.poi-btn-toolbar .btn-group{width:90%}.poi-btn-toolbar .btn-group button{padding-left:5px;padding-right:0;border-right:5px solid #fff}.poi-btn-toolbar .btn-group button:hover{background-color:#e6e6e6;border-right-color:#e6e6e6}.poi-btn-toolbar .btn-group button:active{background-color:#d4d4d4;border-right-color:#d4d4d4}.poi-btn-toolbar .btn-group .custom-tooltip:first-child:last-child,.poi-btn-toolbar .btn-group button:first-child:last-child,.poi-btn-toolbar .btn-group button:first-child:last-child~.custom-tooltip,.poi-btn-toolbar .btn-group button:first-child:last-child~button{width:100%}.poi-btn-toolbar .btn-group .custom-tooltip:first-child:nth-last-child(2),.poi-btn-toolbar .btn-group button:first-child:nth-last-child(2),.poi-btn-toolbar .btn-group button:first-child:nth-last-child(2)~.custom-tooltip,.poi-btn-toolbar .btn-group button:first-child:nth-last-child(2)~button{width:50%}.poi-btn-toolbar .btn-group .custom-tooltip:first-child:nth-last-child(3),.poi-btn-toolbar .btn-group button:first-child:nth-last-child(3),.poi-btn-toolbar .btn-group button:first-child:nth-last-child(3)~.custom-tooltip,.poi-btn-toolbar .btn-group button:first-child:nth-last-child(3)~button{width:33.33333%}.poi-btn-toolbar .btn-group .custom-tooltip:first-child:nth-last-child(4),.poi-btn-toolbar .btn-group button:first-child:nth-last-child(4),.poi-btn-toolbar .btn-group button:first-child:nth-last-child(4)~.custom-tooltip,.poi-btn-toolbar .btn-group button:first-child:nth-last-child(4)~button{width:25%}.poi-btn-toolbar .btn-group .custom-tooltip{display:inline-block}.poi-btn-toolbar .btn-group .custom-tooltip:last-child:not(:first-child),.poi-btn-toolbar .btn-group .custom-tooltip:last-child:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.poi-btn-toolbar .btn-group .custom-tooltip button{width:100%}.btn-showhide-poi-details{width:100%;padding:10px 0 0;max-height:none;border:none;font-size:1.4em;color:#9b9b9b;border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important;background-color:transparent}.btn-showhide-poi-details .show-hide-text{font-size:.5em;margin-bottom:-.5em;font-weight:700}.btn-showhide-poi-details:active,.btn-showhide-poi-details:focus{background-color:transparent}.btn-showhide-poi-details:hover{background-color:#e6e6e6}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}button:hover{cursor:pointer;cursor:hand}.tree-icon,i.collapse-expand-chevron,i.not-collapsible{font-family:FontAwesome;font-style:normal;line-height:1em;font-size:1em;min-width:1em;display:inline-block}i.not-collapsible:before{content:"\\f111"}i.collapse-expand-chevron:before{content:"\\F078";display:inline-block;transition:.2s ease-in-out}.collapsed>i.collapse-expand-chevron:before{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-o-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.indoorViewer.desktop .modal-dialog-wide{width:700px}.cheatsheet-modal .modal{z-index:10002;display:block}.cheatsheet-modal .modal ul{column-count:2}.cheatsheet-modal .modal li{list-style:none;margin-bottom:4px}@media (max-width:900px){.cheatsheet-modal .modal ul{column-count:1}}.cheatsheet-modal .modal .cfp-hotkeys-key{min-width:60px;box-shadow:inset 0 1px 0 #666}.cheatsheet-modal .modal-backdrop{z-index:10001}.context-menu-list .context-menu-icon-routeEnd:before{font-family:FontAwesome;content:"\\f041"}.context-menu-list .context-menu-icon-routeStart:before{font-family:FontAwesome;content:"\\f192"}.text-light-gray{color:#a2a2a2}.path-draw-cursor{cursor:url(' + m + "),url(" + g + "),auto}.rotate-cursor{cursor:url(" + v + "),url(" + y + "),auto}.full-size{width:max-content}.centered-vertically{display:flex;align-items:center}", ""]),
    t.exports = e
}
, function(t, e, n) {
    t.exports = n.p + "3cc6dd6b814d62e7270783a55e55773d.pen-nib-solid.png"
}
, function(t, e, n) {
    t.exports = n.p + "9f295a8711d42490962d5d7eb42bfee1.pen-nib-solid.cur"
}
, function(t, e, n) {
    t.exports = n.p + "a4a8aed5ebf7004a129844882204bbb4.rotate-cursor.png"
}
, function(t, e, n) {
    t.exports = n.p + "681aa02995db01b49b6b5e6e83b85cce.rotate-cursor.cur"
}
, function(t, e) {
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put("iv.html", "\x3c!--Adjusting the viewport meta for requested desktop site (if needed)--\x3e\n<mobile-desktop-site-detector></mobile-desktop-site-detector>\n\n<iv-body></iv-body>\n")
    }
    ]),
    t.exports = "iv.html"
}
, function(t, e, n) {
    var i = {
        "./FloorChanger.html": 958,
        "./WebGLMissing.html": 959,
        "./alignment/DatasetAlignmentPanel.html": 960,
        "./alignment/GeoRegistrationPanel.html": 961,
        "./alignment/SiteModelEditor.html": 962,
        "./blank.html": 963,
        "./cloudprocessing/ProcessedData.html": 964,
        "./cloudprocessing/ProcessingTasks.html": 965,
        "./cloudprocessing/UploadedData.html": 966,
        "./download-point-cloud/DownloadPointCloud.html": 967,
        "./menu/DatasetsMenu.html": 968,
        "./menu/DeveloperMenu.html": 969,
        "./menu/LoginMenu.html": 970,
        "./menu/Measurements.html": 971,
        "./menu/ModalsInMenus.html": 972,
        "./menu/PointCloudMenu.html": 973,
        "./menu/PointCloudPane.html": 974,
        "./menu/Settings.html": 975,
        "./menu/ShareMenu.html": 976,
        "./menu/ViewMenu.html": 977,
        "./menu/poi/POITypesExistingGroup.html": 978,
        "./menu/poi/POITypesMainPanel.html": 979,
        "./navgraph/NavGraphEditor.html": 980,
        "./settings/AuditPanel.html": 981,
        "./settings/ConfigEditor.html": 982,
        "./settings/DatasetManagement.html": 983,
        "./settings/HiddenImages.html": 984,
        "./settings/ThemePanel.html": 985,
        "./settings/administration/LicenseSubscription.html": 986,
        "./settings/authentication/AuthPanel.html": 987,
        "./settings/permissions/Groups.html": 988,
        "./settings/permissions/GroupsTree.html": 989,
        "./settings/permissions/GroupsTreeItem.html": 990,
        "./settings/permissions/Users.html": 991,
        "./vectormap/VectorMapDialogs.html": 992,
        "./vectormap/VectorMapToolbox.html": 993
    };
    function r(t) {
        var e = o(t);
        return n(e)
    }
    function o(t) {
        if (!n.o(i, t)) {
            var e = new Error("Cannot find module '" + t + "'");
            throw e.code = "MODULE_NOT_FOUND",
            e
        }
        return i[t]
    }
    r.keys = function() {
        return Object.keys(i)
    }
    ,
    r.resolve = o,
    t.exports = r,
    r.id = 957
}
, function(t, e) {
    var n = "templates/FloorChanger.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<floor-changer></floor-changer>")
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/WebGLMissing.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<h1 translate>Your browser or system does not support WebGL</h1>\n<h2 translate>WebGL could not be initialized.</h2>\n\n<p>\n\t<span translate>\n\t\tPlease make sure your browser and graphics hardware support WebGL.\n\t</span>\n\t<br>\n\t<span translate>\n\t\tRecent versions of Google Chrome and Mozilla Firefox should work fine:\n\t</span>\n\t<a href="http://www.google.com/chrome/" target="_blank">\n\t\tGoogle Chrome,\n\t</a>\n\t<a href="http://www.mozilla.org/firefox" target="_blank">\n\t\tMozilla Firefox\n\t</a>\n</p>\n\x3c!--TODO multiple computation of translate and split. not optimal. variable--\x3e\n<p>\n\t<span translate>\n\t\tYou can visit this page for information on how to get a WebGL implementation:\n\t</span>\n\t<a href="http://www.khronos.org/webgl/wiki/Getting_a_WebGL_Implementation" target="_blank">\n\t\tGetting a WebGL Implementation\n\t</a>\n</p>\n<p>\n\t<span translate>\n\t\tYou can test if your browser supports WebGL with the following link:\n\t</span>\n\t<a href="http://get.webgl.org/" target="_blank">\n\t\tget.webgl.org\n\t</a>\n</p>\n')
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/alignment/DatasetAlignmentPanel.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<dataset-alignment-panel></dataset-alignment-panel>\n")
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/alignment/GeoRegistrationPanel.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<geo-registration-panel></geo-registration-panel>\n")
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/alignment/SiteModelEditor.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<site-model-editor></site-model-editor>")
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/blank.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "")
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/cloudprocessing/ProcessedData.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<processed-data-lazy></processed-data-lazy>\n")
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/cloudprocessing/ProcessingTasks.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<processing-task-lazy></processing-task-lazy>\n")
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/cloudprocessing/UploadedData.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<cloud-upload-lazy></cloud-upload-lazy>\n")
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/download-point-cloud/DownloadPointCloud.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<download-point-cloud></download-point-cloud>\n")
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/menu/DatasetsMenu.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<dataset-menu></dataset-menu>")
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/menu/DeveloperMenu.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<developer-lazy></developer-lazy>\n")
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = "templates/menu/LoginMenu.html"
      , r = '<div ng-controller="UserController">\n\n\t\x3c!-- Edit user profile modal – use modal directive for mobile view fix, refs #14120 --\x3e\n\t<modal>\n\t\t<user-editor modal-id="edit-profile-modal" user="edited"></user-editor>\n\t</modal>\n\n\t\x3c!-- Login Menu --\x3e\n\t<div id="login-panel" class="panel panel-default no-border no-shadow">\n\n\t\t\x3c!-- Header --\x3e\n\t\t<div class="panel-heading">\n\t\t\t<h3 ng-if="isUserLoggedIn()">\n\t\t\t\t{{ UserService.userInfo.getDisplayName() }}\n\t\t\t</h3>\n\t\t\t<h3 ng-if="!isUserLoggedIn()" translate translate-context="title">\n\t\t\t\tSign In\n\t\t\t</h3>\n\t\t</div>\n\n\t\t<div class="panel-body">\n\n\t\t\t\x3c!------- Login form -------\x3e\n\t\t\t<login-form ng-class="{\'border-bottom\': !isUserLoggedIn()}"></login-form>\n\n\t\t\t\x3c!------- Logged in user -------\x3e\n\n\t\t\t\x3c!-- User groups spinner --\x3e\n\t\t\t<span ng-if="isUserLoggedIn() && (!UserService.userInfo.groups || !permissionsData.groups)"\n\t\t\t      class="spinner">\n\t\t\t\t<img class="in-btn-group" ng-src="' + n(94) + '">\n\t\t\t</span>\n\n\t\t\t<div class="panel-group" id="accordion">\n\t\t\t\t\x3c!-- User groups --\x3e\n\t\t\t\t<div class="panel"\n\t\t\t\t     ng-if="isUserLoggedIn() && UserService.userInfo.groups && permissionsData.groups">\n\t\t\t\t\t<div class="panel-heading collapsed clickable"\n\t\t\t\t\t     data-toggle="collapse" data-target="#collapse-groups"\n\t\t\t\t\t     data-parent="#accordion">\n\t\t\t\t\t\t<span translate translate-context="title">Your Groups</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div id="collapse-groups" class="panel-collapse collapse">\n\t\t\t\t\t\t<ul class="list-group">\n\t\t\t\t\t\t\t<li class="list-group-item user-group-item"\n\t\t\t\t\t\t\t    ng-repeat="userGroup in groupsData"\n\t\t\t\t\t\t\t    ng-show="userGroup.id !== GroupService.publicGroupId">\n\t\t\t\t\t\t\t\t{{userGroup.name}}\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\x3c!-- no groups --\x3e\n\t\t\t\t\t\t\t<li class="list-group-item user-group-header"\n\t\t\t\t\t\t\t    ng-if="discardPublicGroup(UserService.userInfo.groups).length === 0"\n\t\t\t\t\t\t\t    translate>\n\t\t\t\t\t\t\t\tYou are not a member of any group\n\t\t\t\t\t\t\t</li>\n\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\x3c!-- User Permissions --\x3e\n\t\t\t\t<div class="panel"\n\t\t\t\t     ng-if="isUserLoggedIn() && UserService.userInfo.groups && permissionsData.groups">\n\t\t\t\t\t<div class="panel-heading collapsed clickable"\n\t\t\t\t\t     data-toggle="collapse" data-target="#collapse-permission"\n\t\t\t\t\t     data-parent="#accordion">\n\t\t\t\t\t\t<span translate translate-context="title">Your Permissions</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div id="collapse-permission" class="panel-collapse collapse">\n\t\t\t\t\t\t<ul class="list-group">\n\t\t\t\t\t\t\t<li class="list-group-item user-group-item"\n\t\t\t\t\t\t\t    ng-repeat="(key, value) in UserService.userInfo.attributes"\n\t\t\t\t\t\t\t    ng-if="value && !(getNrOfUserAttributes(true) === getNrOfUserAttributes())">\n\t\t\t\t\t\t\t\t{{GroupService.getGroupAttributesNames()[key]}}\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\x3c!-- all attributes --\x3e\n\t\t\t\t\t\t\t<li class="list-group-item user-group-item"\n\t\t\t\t\t\t\t    ng-if="getNrOfUserAttributes(true) === getNrOfUserAttributes()"\n\t\t\t\t\t\t\t    translate>\n\t\t\t\t\t\t\t\tYou have all permissions\n\t\t\t\t\t\t\t</li>\n\n\t\t\t\t\t\t\t\x3c!-- no attributes --\x3e\n\t\t\t\t\t\t\t<li class="list-group-item user-group-item"\n\t\t\t\t\t\t\t    ng-if="getNrOfUserAttributes(true) === 0"\n\t\t\t\t\t\t\t    translate>\n\t\t\t\t\t\t\t\tYou do not have any permissions\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\x3c!-- Edit Profile --\x3e\n\t\t\t\t<div class="panel">\n\t\t\t\t\t<div class="panel-heading clickable"\n\t\t\t\t\t     ng-if="isUserLoggedIn() && !logoutInProgress"\n\t\t\t\t\t     ng-click="editProfile()">\n\t\t\t\t\t\t<span translate translate-context="title">Edit Profile</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\x3c!-- User settings --\x3e\n\t\t\t\t<div class="panel">\n\t\t\t\t\t<div class="panel-heading collapsed clickable"\n\t\t\t\t\t     data-toggle="collapse" data-target="#collapse-user-settings"\n\t\t\t\t\t     data-parent="#accordion">\n\t\t\t\t\t\t<span translate translate-context="title">Language &amp; Unit System</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div id="collapse-user-settings" class="panel-collapse collapse">\n\t\t\t\t\t\t<language-switcher></language-switcher>\n\t\t\t\t\t\t<unit-switcher></unit-switcher>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\x3c!-- Docs Link --\x3e\n\t\t\t\t<div ng-if="showDocumentation()" class="panel">\n\t\t\t\t\t<div class="panel-heading clickable">\n\t\t\t\t\t\t<a href="{{docsUrl}}" target="_blank"\n\t\t\t\t\t\t   style="text-decoration: none; color: inherit; background-color: inherit;">\n\t\t\t\t\t\t\t<span translate translate-context="link">\n\t\t\t\t\t\t\t\tDocumentation\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\x3c!-- Logout button --\x3e\n\t\t\t\t<div class="panel" ng-if="isUserLoggedIn() && !isLogoutDisabled()">\n\t\t\t\t\t<div class="panel-heading clickable"\n\t\t\t\t\t     ng-show="!logoutInProgress && !userProviderIsPreauth()"\n\t\t\t\t\t     ng-click="logout()">\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t<i class="material-icons">exit_to_app</i>\n\t\t\t\t\t\t\t<b class="margin-left-small" translate translate-context="title">\n\t\t\t\t\t\t\t\tSign Out\n\t\t\t\t\t\t\t</b>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\x3c!-- Logout in progress... means spinner --\x3e\n\t\t\t\t\t<div ng-if="logoutInProgress">\n\t\t\t\t\t\t<span class="spinner">\n\t\t\t\t\t\t\t<img class="in-btn-group" ng-src="' + n(94) + '">\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t</div>\n\t</div>\n</div>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e) {
    var n = "templates/menu/Measurements.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<measurements-lazy></measurements-lazy>\n")
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = "templates/menu/ModalsInMenus.html"
      , r = '\n\x3c!--modal for startup view--\x3e\n<modal>\n\t<div class="modal fade" id="setStartupViewModal" tabindex="-1" role="dialog"\n\t\t aria-labelledby="setStartupViewModalLabel" aria-hidden="true">\n\t\t<div class="modal-dialog">\n\t\t\t<div class="modal-content">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}"\n\t\t\t\t\t     data-dismiss="modal">\n\t\t\t\t\t<h4 id="setStartupViewModalLabel" translate translate-context="title">\n\t\t\t\t\t\tConfirm\n\t\t\t\t\t</h4>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body" translate>\n\t\t\t\t\tThis will set the startup view for all users to the current view.\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t<close-button data-dismiss="modal"></close-button>\n\t\t\t\t\t<ok-button data-dismiss="modal"\n\t\t\t\t\t           ng-click="vm.setStartupView()"></ok-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n\n\x3c!--modal for startup view reset--\x3e\n<modal>\n\t<div class="modal fade" id="resetStartupViewModal" tabindex="-1" role="dialog"\n\t     aria-labelledby="setStartupViewModalLabel" aria-hidden="true">\n\t\t<div class="modal-dialog">\n\t\t\t<div class="modal-content">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}"\n\t\t\t\t\t     data-dismiss="modal">\n\t\t\t\t\t<h4 id="resetStartupViewModalLabel" translate translate-context="title">\n\t\t\t\t\t\tConfirm\n\t\t\t\t\t</h4>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body" translate>\n\t\t\t\t\tThis will reset the startup view for all users.\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t<close-button data-dismiss="modal"></close-button>\n\t\t\t\t\t<ok-button data-dismiss="modal"\n\t\t\t\t\t           ng-click="vm.resetStartupView()"></ok-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n\n\x3c!--modal IV reinit--\x3e\n<modal>\n\t<div class="modal fade" id="ivReinitModal" tabindex="-1" role="dialog"\n\t\t aria-labelledby="ivReinitModalLabel" aria-hidden="true">\n\t\t<div class="modal-dialog">\n\t\t\t<div class="modal-content">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}"\n\t\t\t\t\t     data-dismiss="modal">\n\t\t\t\t\t<h4 id="ivReinitModalLabel" translate translate-context="title">\n\t\t\t\t\t\tTask Finished\n\t\t\t\t\t</h4>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body" translate>\n\t\t\t\t\tA task just finished. Do you want to reinitialize the 4dkankan to load the new data? Unsaved changes may be lost.\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t<close-button data-dismiss="modal"></close-button>\n\t\t\t\t\t<ok-button data-dismiss="modal"\n\t\t\t\t\t           ng-click="vm.reinitIV()"></ok-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e) {
    var n = "templates/menu/PointCloudMenu.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div id="pointcloud-menu" ng-controller="PointCloudMenuController">\n\t<div class="checkbox">\n\t\t<label>\n\t\t\t<input type="checkbox"\n\t\t\t       ng-model="config.showPointCloud"\n\t\t\t       ng-disabled="!showPointCloudOptionEnabled()"\n\t\t\t       ng-change="settingShowPointCloudChangedCallback()">\n\t\t\t<span translate>\n\t\t\t\tShow point cloud\n\t\t\t</span>\n\t\t</label>\n\t</div>\n\n\t<div id="pointcloud-options" ng-if="config.showPointCloud">\n\t\t\x3c!--Auto Activation--\x3e\n\t\t<div class="checkbox form-group">\n\t\t\t<label>\n\t\t\t\t<input type="checkbox"\n\t\t\t\t       ng-model="config.autoActivation"\n\t\t\t\t       ng-disabled="!showPointCloudAutomaticActivationOptionEnabled()"\n\t\t\t\t       ng-change="settingAutoActivationChangedCallback()">\n\t\t\t\t<span translate>\n\t\t\t\t\t\tAutomatic activation\n\t\t\t\t</span>\n\t\t\t</label>\n\t\t</div>\n\n\t\t\x3c!-- Options for the advanced renderer --\x3e\n\t\t<div ng-if="showPotreeOptions()">\n\t\t\t<div ng-repeat="pane in settingsPanes"\n\t\t\t     ng-include="\'templates/menu/PointCloudPane.html\'"></div>\n\t\t\t<hr>\n\t\t</div>\n\n\t\t\x3c!-- Legacy renderer options --\x3e\n\t\t<div id="legacy-pointcloud-pane" ng-if="showLegacyOptions()">\n\t\t\t<div class="checkbox">\n\t\t\t\t<label>\n\t\t\t\t\t<input type="checkbox"\n\t\t\t\t\t       ng-model="config.zBuffering"\n\t\t\t\t\t       ng-change="settingZBufferingChangedCallback()">\n\t\t\t\t\t<span translate>\n\t\t\t\t\t\tUse z-buffer\n\t\t\t\t\t</span>\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<div class="row">\n\t\t\t\t<div class="col-sm-4 align-text" translate>\n\t\t\t\t\tOpacity\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-slider">\n\t\t\t\t\t<div ui-slider\n\t\t\t\t\t     min="0" max="1" step="0.01"\n\t\t\t\t\t     use-decimals\n\t\t\t\t\t     ng-model="config.opacity"\n\t\t\t\t\t     ng-change="settingOpacityChangedCallback()"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-textbox">\n\t\t\t\t\t<input type="number" class="form-control"\n\t\t\t\t\t       min="0" max="1" step="0.01"\n\t\t\t\t\t       ng-model="config.opacity"\n\t\t\t\t\t       ng-change="settingOpacityChangedCallback()"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\n\t\t\t<div class="row">\n\t\t\t\t<div class="col-sm-4 align-text" translate>\n\t\t\t\t\tBrightness\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-slider">\n\t\t\t\t\t<div ui-slider\n\t\t\t\t\t     min="1" max="1000" step="1"\n\t\t\t\t\t     use-decimals\n\t\t\t\t\t     ng-model="config.brightness"\n\t\t\t\t\t     ng-change="settingBrightnessChangedCallback()"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-textbox">\n\t\t\t\t\t<input type="number" class="form-control"\n\t\t\t\t\t       min="1" max="1000" step="1"\n\t\t\t\t\t       ng-model="config.brightness"\n\t\t\t\t\t       ng-change="settingBrightnessChangedCallback()"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\n\t\t\t<div class="row">\n\t\t\t\t<div class="col-sm-4 align-text" translate>\n\t\t\t\t\tRange\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-slider">\n\t\t\t\t\t<div ui-slider\n\t\t\t\t\t     min="20" max="300" step="1"\n\t\t\t\t\t     use-decimals\n\t\t\t\t\t     ng-model="config.maxDist"\n\t\t\t\t\t     ng-change="settingDepthCullingChangedCallback()"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-textbox">\n\t\t\t\t\t<input type="number" class="form-control"\n\t\t\t\t\t       min="20" max="300" step="1"\n\t\t\t\t\t       ng-model="config.maxDist"\n\t\t\t\t\t       ng-change="settingDepthCullingChangedCallback()"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="row">\n\t\t\t\t<div class="col-sm-4 align-text" translate>\n\t\t\t\t\tLevel of detail\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-slider">\n\t\t\t\t\t<div ui-slider\n\t\t\t\t\t     min="2" max="8" step="1"\n\t\t\t\t\t     use-decimals\n\t\t\t\t\t     ng-model="config.maxDepth"\n\t\t\t\t\t     ng-change="settingPcResolutionChangedCallback()"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-textbox">\n\t\t\t\t\t<input type="number" class="form-control"\n\t\t\t\t\t       min="2" max="8" step="1"\n\t\t\t\t\t       ng-model="config.maxDepth"\n\t\t\t\t\t       ng-change="settingPcResolutionChangedCallback()"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="row">\n\t\t\t\t<div class="col-sm-4 align-text" translate>\n\t\t\t\t\tHue offset\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-slider">\n\t\t\t\t\t<div ui-slider\n\t\t\t\t\t     min="0" max="1" step="0.01"\n\t\t\t\t\t     use-decimals\n\t\t\t\t\t     ng-model="config.hueOffset"\n\t\t\t\t\t     ng-change="settingColorHueOffsetChangedCallback()"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-textbox">\n\t\t\t\t\t<input type="number" class="form-control"\n\t\t\t\t\t       min="0" max="1" step="0.01"\n\t\t\t\t\t       ng-model="config.hueOffset"\n\t\t\t\t\t       ng-change="settingColorHueOffsetChangedCallback()"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="row">\n\t\t\t\t<div class="col-sm-4 align-text" translate>\n\t\t\t\t\tHue scale\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-slider">\n\t\t\t\t\t<div ui-slider\n\t\t\t\t\t     min="-1" max="1" step="0.01"\n\t\t\t\t\t     use-decimals\n\t\t\t\t\t     ng-model="config.hueScale"\n\t\t\t\t\t     ng-change="settingColorHueScaleChangedCallback()"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-textbox">\n\t\t\t\t\t<input type="number" class="form-control"\n\t\t\t\t\t       min="-1" max="1" step="0.01"\n\t\t\t\t\t       ng-model="config.hueScale"\n\t\t\t\t\t       ng-change="settingColorHueScaleChangedCallback()"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<hr>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/menu/PointCloudPane.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div ng-show="pane.visible()" id="pointcloud-pane" class="form-group">\n\t<label class="form-label">\n\t\t{{pane.caption | translate:"title"}}\n\t</label>\n\t<br>\n\n\t<div>\n\t\t<select class="form-control"\n\t\t        style="display: inline-block"\n\t\t        ng-model="pane.currentPreset"\n\t\t        ng-options="preset.name as preset.caption | translate for preset in pane.presets"\n\t\t        ng-change="applyPreset(pane.currentPreset, pane.material, pane)">\n\t\t\t<option value="" disabled ng-show="!pane.currentPreset" translate>Custom</option>\n\t\t</select>\n\t\t<button type="button"\n\t\t        class="btn btn-default"\n\t\t        data-toggle="collapse" data-parent="#accordion"\n\t\t        ng-href="{{\'#collapse\'+pane.name}}" aria-expanded="true"\n\t\t        ng-aria-controls="{{\'collapse\'+pane.name}}"\n\t\t        ng-click="pane.collapsed = !pane.collapsed"\n\t\t        ng-class="{\'btn-primary\': !pane.currentPreset}">\n\t\t\t<span ng-class="pane.collapsed? \'glyphicon glyphicon-chevron-down\' : \'glyphicon glyphicon-chevron-up\'"></span>\n\t\t</button>\n\t</div>\n\n\t\x3c!-- Collapsible settings --\x3e\n\t<div ng-attr-id="{{\'collapse\'+pane.name}}" class="collapse">\n\t\t<div class="panel-body">\n\n\t\t\t\x3c!-- Opacity slider --\x3e\n\t\t\t<div class="row" ng-if="pane.visibleSettings.opacity" title="{{tooltips[pane.name].inactiveFromShading}}">\n\t\t\t\t<div class="col-sm-4 align-text" translate>\n\t\t\t\t\tOpacity\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-slider hidden-xs">\n\t\t\t\t\t<div ui-slider\n\t\t\t\t\t     min="0" max="1" step="0.01"\n\t\t\t\t\t     use-decimals\n\t\t\t\t\t     ng-model="pane.material.opacity"\n\t\t\t\t\t     ng-disabled="pane.material.useEDL"\n\t\t\t\t\t     ng-change="advancedSettingChangedCallback(pane)"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-textbox">\n\t\t\t\t\t<input type="number" class="form-control"\n\t\t\t\t\t       min="0" max="1" step="0.01"\n\t\t\t\t\t       ng-model="pane.material.opacity"\n\t\t\t\t\t       ng-disabled="pane.material.useEDL"\n\t\t\t\t\t       ng-change="advancedSettingChangedCallback(pane)"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\x3c!-- Brightness slider --\x3e\n\t\t\t<div class="row" ng-if="pane.visibleSettings.brightness" title="{{tooltips[pane.name].inactiveFromShadingOpacity}}">\n\t\t\t\t<div class="col-sm-4 align-text" translate>\n\t\t\t\t\tBrightness\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-slider hidden-xs">\n\t\t\t\t\t<div ui-slider\n\t\t\t\t\t     min="1" max="1000" step="1"\n\t\t\t\t\t     use-decimals\n\t\t\t\t\t     ng-model="pane.material.brightness"\n\t\t\t\t\t     ng-disabled="pane.material.opacity == 1.0 || pane.material.useEDL"\n\t\t\t\t\t     ng-change="advancedSettingChangedCallback(pane)"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-textbox">\n\t\t\t\t\t<input type="number" class="form-control"\n\t\t\t\t\t       min="1" max="1000" step="1"\n\t\t\t\t\t       ng-model="pane.material.brightness"\n\t\t\t\t\t       ng-disabled="pane.material.opacity == 1.0 || pane.material.useEDL"\n\t\t\t\t\t       ng-change="advancedSettingChangedCallback(pane)"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\x3c!-- Color style dropdown --\x3e\n\t\t\t<div class="row" ng-if="pane.visibleSettings.colorStyle">\n\t\t\t\t<div class="col-sm-4 align-text" translate>\n\t\t\t\t\tColor style\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-8 align-textbox">\n\t\t\t\t\t<select class="form-control"\n\t\t\t\t\t        ng-options="option.name | translate for option in dropdownMenus.colorStyleOptions track by option.id"\n\t\t\t\t\t\t\tng-model="pane.material.colorStyleSelectedOption"\n\t\t\t\t\t\t\tng-change="advancedSettingChangedCallback(pane)"></select>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\x3c!-- Range slider for elevation color mode --\x3e\n\t\t\t<div ng-if="pane.material.colorStyleSelectedOption.id == 3">\n\t\t\t\t<div class="row">\n\t\t\t\t\t<div class="col-sm-4 align-text" translate>\n\t\t\t\t\t\tHeight range\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-sm-8 align-slider hidden-xs">\n\t\t\t\t\t\t<div ui-slider="{range: true}"\n\t\t\t\t\t\t     min="{{config.zMin}}" max="{{config.zMax}}" step="0.01"\n\t\t\t\t\t\t     use-decimals\n\t\t\t\t\t\t     ng-model="pane.material.z"\n\t\t\t\t\t\t     ng-change="advancedSettingChangedCallback(pane)"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="row">\n\t\t\t\t\t<div class="col-sm-4"></div>\n\t\t\t\t\t<div class="col-sm-4 align-textbox">\n\t\t\t\t\t\t<input type="number" class="form-control"\n\t\t\t\t\t\t       min="{{config.zMin}}" max="{{config.zMax}}" step="0.01"\n\t\t\t\t\t\t       ng-model="pane.material.z[0]"\n\t\t\t\t\t\t       ng-change="advancedSettingChangedCallback(pane)"/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-sm-4 align-textbox">\n\t\t\t\t\t\t<input type="number" class="form-control"\n\t\t\t\t\t\t       min="{{config.zMin}}" max="{{config.zMax}}" step="0.01"\n\t\t\t\t\t\t       ng-model="pane.material.z[1]"\n\t\t\t\t\t\t       ng-change="advancedSettingChangedCallback(pane)"/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\x3c!-- Point size mode dropdown --\x3e\n\t\t\t<div class="row" ng-if="pane.visibleSettings.pointSizeMode">\n\t\t\t\t<div class="col-sm-4 align-text" translate>\n\t\t\t\t\tPoint size mode\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-8 align-textbox">\n\t\t\t\t\t<select class="form-control"\n\t\t\t\t\t        ng-options="option.name | translate for option in dropdownMenus.pointSizeOptions track by option.id"\n\t\t\t\t\t        ng-model="pane.material.pointSizeSelectedOption"\n\t\t\t\t\t        ng-change="advancedSettingChangedCallback(pane)"></select>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\x3c!-- Point size slider --\x3e\n\t\t\t<div class="row" ng-if="pane.visibleSettings.pointSize">\n\t\t\t\t<div class="col-sm-4 align-text" translate>\n\t\t\t\t\tPoint size\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-slider hidden-xs">\n\t\t\t\t\t<div ui-slider\n\t\t\t\t\t     min="{{pane.material.pointSizeSelectedOption.minSize}}"\n\t\t\t\t\t     max="{{pane.material.pointSizeSelectedOption.maxSize}}"\n\t\t\t\t\t     step="{{pane.material.pointSizeSelectedOption.stepSize}}"\n\t\t\t\t\t     use-decimals\n\t\t\t\t\t     ng-model="pane.material.pointSize"\n\t\t\t\t\t     ng-change="advancedSettingChangedCallback(pane)"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-textbox">\n\t\t\t\t\t<input type="number" class="form-control"\n\t\t\t\t\t       min="{{pane.material.pointSizeSelectedOption.minSize}}"\n\t\t\t\t\t       max="{{pane.material.pointSizeSelectedOption.maxSize}}"\n\t\t\t\t\t       step="{{pane.material.pointSizeSelectedOption.stepSize}}"\n\t\t\t\t\t       ng-model="pane.material.pointSize"\n\t\t\t\t\t       ng-change="advancedSettingChangedCallback(pane)"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\x3c!-- Point shape dropdown --\x3e\n\t\t\t<div class="row" ng-if="pane.visibleSettings.pointShape">\n\t\t\t\t<div class="col-sm-4 align-text" translate>\n\t\t\t\t\tPoint shape\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-8 align-textbox">\n\t\t\t\t\t<select class="form-control"\n\t\t\t\t\t        ng-options="option.name | translate for option in dropdownMenus.pointShapeOptions track by option.id"\n\t\t\t\t\t        ng-model="pane.material.pointShapeSelectedOption"\n\t\t\t\t\t        ng-change="advancedSettingChangedCallback(pane)"></select>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\x3c!-- Shading(EDL) checkbox --\x3e\n\t\t\t<div class="checkbox" ng-if="pane.visibleSettings.edl">\n\t\t\t\t<label>\n\t\t\t\t\t<input type="checkbox"\n\t\t\t\t\t       ng-disabled="!pane.visibleSettings.edlSupport"\n\t\t\t\t\t       ng-model="pane.material.useEDL"\n\t\t\t\t\t       ng-change="advancedSettingChangedCallback(pane)">\n\t\t\t\t\t<span translate>\n\t\t\t\t\t\tEnhance edges\n\t\t\t\t\t</span>\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t\x3c!-- Advanced shading(EDL) settings --\x3e\n\t\t\t<div ng-if="pane.visibleSettings.edl" ng-show="pane.material.useEDL">\n\n\t\t\t\t\x3c!-- Strength slider --\x3e\n\t\t\t\t<div class="row">\n\t\t\t\t\t<div class="col-sm-4 align-text" translate>\n\t\t\t\t\t\tStrength\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-sm-4 align-slider hidden-xs">\n\t\t\t\t\t\t<div ui-slider\n\t\t\t\t\t\t     min="0" max="3" step="0.05"\n\t\t\t\t\t\t     use-decimals\n\t\t\t\t\t\t     ng-model="pane.material.EDLStrength"\n\t\t\t\t\t\t     ng-change="advancedSettingChangedCallback(pane)"></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-sm-4 align-textbox">\n\t\t\t\t\t\t<input type="number" class="form-control"\n\t\t\t\t\t\t       min="0" max="3" step="0.05"\n\t\t\t\t\t\t       ng-model="pane.material.EDLStrength"\n\t\t\t\t\t\t       ng-change="advancedSettingChangedCallback(pane)"/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\x3c!-- Range slider --\x3e\n\t\t\t<div class="row" ng-if="pane.visibleSettings.maxDist">\n\t\t\t\t<div class="col-sm-4 align-text" translate>\n\t\t\t\t\tRange\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-slider hidden-xs">\n\t\t\t\t\t<div ui-slider\n\t\t\t\t\t     min="20" max="300" step="1"\n\t\t\t\t\t     use-decimals\n\t\t\t\t\t     ng-model="config.maxDist"\n\t\t\t\t\t     ng-change="advancedSettingChangedCallback(pane)"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-textbox">\n\t\t\t\t\t<input type="number" class="form-control"\n\t\t\t\t\t       min="20" max="300" step="1"\n\t\t\t\t\t       ng-model="config.maxDist"\n\t\t\t\t\t       ng-change="advancedSettingChangedCallback(pane)"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\x3c!-- Level of detail slider --\x3e\n\t\t\t<div class="row" ng-if="pane.visibleSettings.maxDepth">\n\t\t\t\t<div class="col-sm-4 align-text" translate>\n\t\t\t\t\tLevel of detail\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-slider hidden-xs">\n\t\t\t\t\t<div ui-slider\n\t\t\t\t\t     min="0" max="12" step="1"\n\t\t\t\t\t     use-decimals\n\t\t\t\t\t     ng-model="config.maxDepth"\n\t\t\t\t\t     ng-change="advancedSettingChangedCallback(pane)"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-textbox">\n\t\t\t\t\t<input type="number" class="form-control"\n\t\t\t\t\t       min="0" max="12" step="1"\n\t\t\t\t\t       ng-model="config.maxDepth"\n\t\t\t\t\t       ng-change="advancedSettingChangedCallback(pane)"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\x3c!-- Point count target slider --\x3e\n\t\t\t<div class="row" ng-if="pane.visibleSettings.pointCountTarget">\n\t\t\t\t<div class="col-sm-4 align-text" translate>\n\t\t\t\t\tPoint count target (M)\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-slider hidden-xs">\n\t\t\t\t\t<div ui-slider\n\t\t\t\t\t     min="0.2" max="15" step="0.1"\n\t\t\t\t\t     use-decimals\n\t\t\t\t\t     ng-model="config.pointCountTarget"\n\t\t\t\t\t     ng-change="advancedSettingChangedCallback(pane)"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-textbox">\n\t\t\t\t\t<input type="number" class="form-control"\n\t\t\t\t\t       min="0.2" max="15" step="0.1"\n\t\t\t\t\t       ng-model="config.pointCountTarget"\n\t\t\t\t\t       ng-change="advancedSettingChangedCallback(pane)"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\x3c!-- Min node size slider --\x3e\n\t\t\t<div class="row" ng-if="pane.visibleSettings.minNodeSize">\n\t\t\t\t<div class="col-sm-4 align-text" translate>\n\t\t\t\t\tMinimum node size (px)\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-slider hidden-xs">\n\t\t\t\t\t<div ui-slider\n\t\t\t\t\t     min="0" max="1000" step="10"\n\t\t\t\t\t     use-decimals\n\t\t\t\t\t     ng-model="config.minNodeSize"\n\t\t\t\t\t     ng-change="advancedSettingChangedCallback(pane)"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-4 align-textbox">\n\t\t\t\t\t<input type="number" class="form-control"\n\t\t\t\t\t       min="0" max="1000" step="10"\n\t\t\t\t\t       ng-model="config.minNodeSize"\n\t\t\t\t\t       ng-change="advancedSettingChangedCallback(pane)"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\x3c!-- Normals filtering checkbox --\x3e\n\t\t\t<div class="checkbox" ng-if="pane.visibleSettings.normalsFiltering">\n\t\t\t\t<label>\n\t\t\t\t\t<input type="checkbox"\n\t\t\t\t\t       ng-model="pane.material.normalsFiltering"\n\t\t\t\t\t       ng-change="advancedSettingChangedCallback(pane)">\n\t\t\t\t\t<span translate>\n\t\t\t\t\t\tNormals filtering\n\t\t\t\t\t</span>\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/menu/Settings.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<license-expired-warning></license-expired-warning>\n")
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/menu/ShareMenu.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="panel panel-default">\n\t<div class="panel-body" x-trigger-cursor-viz>\n\t\t<share-menu share-type="location"></share-menu>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/menu/ViewMenu.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div id="view-menu" class="panel panel-default" ng-controller="ViewMenuController as vm">\n\t<div class="panel-body">\n\n\t\t\x3c!--Point Cloud--\x3e\n\t\t<div ng-include src="\'templates/menu/PointCloudMenu.html\'"></div>\n\n\t\t\x3c!--Meshes--\x3e\n\t\t<div class="checkbox" ng-if="vm.isMeshesOptionFeatureEnabled()">\n\t\t\t<label>\n\t\t\t\t<input type="checkbox" ng-model="config.showMeshes"\n\t\t\t\t       ng-disabled="!vm.showMeshesOptionEnabled()"\n\t\t\t\t       ng-click="vm.toggleMeshes()">\n\t\t\t\t<span translate>Show meshes</span>\n\t\t\t</label>\n\t\t</div>\n\n\t\t<mesh-menu-panel-component ng-if="vm.isMeshesOptionFeatureEnabled() && vm.showMeshMenu()"></mesh-menu-panel-component>\n\n\t\t\x3c!--Panoramas--\x3e\n\t\t<div class="checkbox">\n\t\t\t<label>\n\t\t\t\t<input type="checkbox" ng-model="config.showPanoramas"\n\t\t\t\t       ng-disabled="!vm.showPanoramasOptionEnabled()"\n\t\t\t\t       ng-click="vm.togglePanoramas()">\n\t\t\t\t<span translate>Show panoramas</span>\n\t\t\t</label>\n\t\t</div>\n\n\t\t\x3c!--Mini View --\x3e\n\t\t<div class="checkbox">\n\t\t\t<label>\n\t\t\t\t<input type="checkbox"\n\t\t\t\t       ng-disabled="!vm.showSecondaryViewOptionEnabled()"\n\t\t\t\t       ng-model="ViewService.showSecondaryView">\n\t\t\t\t<span translate>Show secondary view</span>\n\t\t\t</label>\n\t\t</div>\n\n\t\t\x3c!--Location Markers--\x3e\n\t\t<div class="checkbox">\n\t\t\t<label>\n\t\t\t\t<input type="checkbox"\n\t\t\t\t       ng-model="config.showLocationMarkers"\n\t\t\t\t       ng-disabled="!vm.showLocationMarkersOptionEnabled()"\n\t\t\t\t       ng-click="vm.toggleLocationMarkers()">\n\t\t\t\t<span translate>Show location markers</span>\n\t\t\t</label>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/menu/poi/POITypesExistingGroup.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "")
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/menu/poi/POITypesMainPanel.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<poi-type-group-list></poi-type-group-list>\n")
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/navgraph/NavGraphEditor.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<nav-graph-editor></nav-graph-editor>\n")
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/settings/AuditPanel.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<audit-panel-lazy></audit-panel-lazy>\n")
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/settings/ConfigEditor.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<config-editor></config-editor>\n")
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/settings/DatasetManagement.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<dataset-management></dataset-management>\n")
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/settings/HiddenImages.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<hidden-images></hidden-images>\n")
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/settings/ThemePanel.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<theme-panel-lazy></theme-panel-lazy>\n")
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/settings/administration/LicenseSubscription.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<license-subscription-panel></license-subscription-panel>\n")
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/settings/authentication/AuthPanel.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<user-auth-config></user-auth-config>\n")
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/settings/permissions/Groups.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div id="settings-groups-panel" class="panel panel-default" ng-controller="GroupController">\n\n\t\x3c!-- Unsaved changes modal --\x3e\n\t<modal>\n\t\t<warning-dialog modal-id="\'groups-unsaved-changes-modal\'" parent-controller="this"></warning-dialog>\n\t</modal>\n\n\t<div class="panel-body">\n\n\t\t<div class="btn-toolbar form-group" ng-if="hasValidLicenseModule()">\n\t\t\t\x3c!--add--\x3e\n\t\t\t<button title="{{\'Add a subgroup to the selected group\'|translate}}"\n\t\t\t\t\ttype="button"\n\t\t\t\t\tclass="btn btn-default btn-group"\n\t\t\t\t\tng-if="canCreateUserGroups()"\n\t\t\t\t\tng-click="addGroupInAddingState(groupsTree.getSelectedGroup())"\n\t\t\t\t\tng-disabled="!groupsTree.canAddGroup()">\n\t\t\t\t<span class="fa fa-plus" aria-hidden="true"></span>\n\t\t\t</button>\n\n\t\t\t<div class="btn-group"\n\t\t\t\t title="{{getGroupNotWritableText(groupsTree.getSelectedGroup())}}">\n\t\t\t\t\x3c!--edit--\x3e\n\t\t\t\t<button title="{{\'Edit the name of the selected group\'|translate}}"\n\t\t\t\t\t\ttype="button" class="btn btn-default"\n\t\t\t\t\t\tng-click="goToGroupEditState(groupsTree.getSelectedGroup())"\n\t\t\t\t\t\tng-disabled="!groupsTree.getSelectedGroup() || !groupsTree.getSelectedGroup().security.canWrite">\n\t\t\t\t\t<span class="fa fa-pencil" aria-hidden="true"></span>\n\t\t\t\t</button>\n\n\t\t\t\t\x3c!--remove--\x3e\n\t\t\t\t<button title="{{\'Remove the selected group and all its subgroups (also group connections with the users)\'|translate}}"\n\t\t\t\t\t\ttype="button" class="btn btn-default"\n\t\t\t\t\t\tng-click="removeGroup(groupsTree.getSelectedGroup())"\n\t\t\t\t\t\tng-disabled="!groupsTree.getSelectedGroup() || !groupsTree.getSelectedGroup().security.canWrite">\n\t\t\t\t\t<span class="fa fa-trash-o" aria-hidden="true"></span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\n\t\t\x3c!-- Groups tree --\x3e\n\t\t<div ng-include src="\'templates/settings/permissions/GroupsTree.html\'"></div>\n\n\t</div>\n\t<div class="panel-footer">\n\t\t<div class="control-buttons">\n\t\t\t<discard-button ng-click="resetGroups()"\n\t\t\t                ng-disabled="!isDataChanged() || addingInProgressCount"\n\t\t\t                title="{{\'Reset all changes\'|translate}}">\n\t\t\t</discard-button>\n\t\t\t<save-button ng-click="saveGroups()"\n\t\t\t             ng-disabled="!isDataChanged() || addingInProgressCount"\n\t\t\t             in-progress="addingInProgressCount"\n\t\t\t             title="{{\'Save all changes\'|translate}}">\n\t\t\t</save-button>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = "templates/settings/permissions/GroupsTree.html"
      , r = '\x3c!-- Groups tree loading - spinner --\x3e\n<div ng-if="!permissionsData.groups"\n     style="margin-top:15px; text-align:center">\n\t<span class="spinner">\n\t\t<img class="in-btn-group" ng-src="' + n(94) + '">\n\t</span>\n</div>\n\n\x3c!-- No groups data --\x3e\n<div ng-if="permissionsData.groups && !permissionsData.groups.length" style="margin-top:15px; text-align:center">\n\t<span class="fa fa-exclamation-triangle"></span>\n\t<span translate>No groups are visible to you</span>\n</div>\n\n\x3c!-- Groups tree --\x3e\n<ul ng-if="permissionsData.groups && permissionsData.groups.length"\n    class="list-group groups-tree"\n    style="margin:0; text-align:left">\n\t<li ng-repeat="group in permissionsData.groups | orderBy: \'name\'"\n\t    class="list-group-item"\n\t    ng-if="!groupsTree.isGroupExcluded(group)"\n\t    ng-class="{\'group-hover\': groupsTree.isGroupHovered(group),\n\t               \'group-disabled\': !groupsTree.isGroupEnabled(group),\n\t               \'group-expanded\': groupsTree.isGroupExpanded(group),\n\t               \'group-semi-checked\': groupsTree.isGroupSemiChecked(group),\n\t               \'group-selected\': groupsTree.isGroupSelected(group),\n\t               \'group-in-adding\': groupsTree.isGroupInAddingState(group),\n\t               \'group-in-edit\': groupsTree.isGroupInEditState(group),\n\t               \'group-added\': groupsTree.isGroupInAddedState(group)}"\n\t    ng-click="current_page == \'GROUPS\' ? toggleGroupSelected(group) : toggleGroupExpanded(group); $event.stopPropagation()"\n\t    ng-mouseover="mouseOverGroup(group); $event.stopPropagation()"\n\t    ng-mouseleave="mouseLeaveGroup(group); $event.stopPropagation()"\n\t    ng-include src="\'templates/settings/permissions/GroupsTreeItem.html\'">\n\t</li>\n</ul>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e) {
    var n = "templates/settings/permissions/GroupsTreeItem.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="group-left-controls">\n\n\t\x3c!-- indent (in case of no chevron) --\x3e\n\t<span ng-if="!group.childGroups || !group.childGroups.length" class="indent"></span>\n\n\t\x3c!-- chevron icon (group expanded or collapsed) --\x3e\n\t<span ng-if="group.childGroups && group.childGroups.length"\n\t      ng-class="groupsTree.isGroupExpanded(group) ? \'glyphicon-chevron-down\' : \'glyphicon-chevron-right\'"\n\t      class="icon expand-icon glyphicon"\n\t      ng-click="toggleGroupExpanded(group); $event.stopPropagation()">\n\t</span>\n\n\t\x3c!-- check icon (enabled) --\x3e\n\t<span ng-if="groupsTree.getConfig(\'showChecks\')"\n\t      ng-class="groupsTree.isGroupChecked(group) || groupsTree.isGroupSemiChecked(group) ? \'glyphicon-check\' : \'glyphicon-unchecked\'"\n\t      class="icon check-icon check-enabled glyphicon"\n\t      ng-click="toggleGroupChecked(group); $event.stopPropagation()">\n\t</span>\n\n\t\x3c!-- group name --\x3e\n\t<span ng-if="!groupsTree.isGroupInAddingState(group) && !groupsTree.isGroupInEditState(group)" class="group-name">\n\t\t{{group.name}}\n\t</span>\n\n\t\x3c!--group controls (add and edit)--\x3e\n\t<span ng-if="groupsTree.isGroupInAddingState(group) || groupsTree.isGroupInEditState(group)" class="group-controls">\n\t\t\x3c!-- input add --\x3e\n\t\t<input class="form-control"\n\t\t       placeholder="{{\'Group name\'|translate}}"\n\t\t       ng-model="group.name"\n\t\t       ng-if="groupsTree.isGroupInAddingState(group)"\n\t\t       ng-click="$event.stopPropagation()"\n\t\t       press-key=\'{ "enter" : "acceptAddingGroup", "esc" : "cancelAddingGroup", "data" : {{group.local_id}} }\'\n\t\t       init-focus\n\t\t       keep-focus>\n\n\t\t\x3c!-- input edit --\x3e\n\t\t<input class="form-control"\n\t\t       ng-model="group.name"\n\t\t       ng-if="groupsTree.isGroupInEditState(group)"\n\t\t       ng-click="$event.stopPropagation()"\n\t\t       press-key=\'{ "enter" : "acceptUpdatingGroupName", "esc" : "cancelUpdatingGroupName", "data" : {{group.local_id}} }\'\n\t\t       init-focus\n\t\t       keep-focus>\n\n\t\t<button ng-if="groupsTree.isGroupInAddingState(group)"\n\t\t        title="{{\'Add subgroup\'|translate}}"\n\t\t        type="button"\n\t\t        class="btn btn-default"\n\t\t        ng-click="acceptAddingGroup(group.local_id); $event.stopPropagation()">\n\t\t\t<span class="fa fa-check" aria-hidden="true"></span>\n\t\t</button>\n\n\t\t<button ng-if="groupsTree.isGroupInAddingState(group)"\n\t\t        title="{{\'Cancel adding subgroup\'|translate}}"\n\t\t        type="button"\n\t\t        class="btn btn-default"\n\t\t        ng-click="cancelAddingGroup(group.local_id); $event.stopPropagation()">\n\t\t\t<span class="fa fa-times" aria-hidden="true"></span>\n\t\t</button>\n\n\t\t<button ng-if="!groupsTree.isGroupInAddingState(group)"\n\t\t        title="{{\'Accept new name for this group\'|translate}}"\n\t\t        type="button"\n\t\t        class="btn btn-default"\n\t\t        ng-click="acceptUpdatingGroupName(group.local_id); $event.stopPropagation()">\n\t\t\t<span class="fa fa-check" aria-hidden="true"></span>\n\t\t</button>\n\n\t\t<button ng-if="!groupsTree.isGroupInAddingState(group)"\n\t\t        title="{{\'Cancel editing group name\'|translate}}"\n\t\t        type="button"\n\t\t        class="btn btn-default"\n\t\t        ng-click="cancelUpdatingGroupName(group.local_id); $event.stopPropagation()">\n\t\t\t<span class="fa fa-times" aria-hidden="true"></span>\n\t\t</button>\n\t</span>\n\n</div>\n\n\x3c!-- group attributes --\x3e\n<div class="group-right-controls">\n\t<div class="btn-group dropdown" dropdown\n\t     ng-show="groupsTree.getConfig(\'showAttributes\') &&\n\t             !groupsTree.isGroupInAddingState(group) && !groupsTree.isGroupInEditState(group)"\n\t     title="{{getGroupNotWritableText(group)}}"\n\t     style="color:black">\n\t\t<button type="button" class="btn btn-default dropdown-toggle" dropdown-toggle data-toggle="dropdown"\n\t\t        aria-haspopup="true" aria-expanded="false"\n\t\t        ng-disabled="group.id !== 0 && !group.security.canWrite"\n\t\t        ng-click="$event.stopPropagation()">\n\t\t\t<span class="group-attributes-summary"\n\t\t\t      style="{{group.id === 0 || group.security.canWrite ? \'margin-right:6px\' : \'\'}} ">\n\t\t\t\t{{group.attributes_string || (\'Group permissions\'|translate)}}\n\t\t\t</span>\n\t\t\t<span ng-if="group.id === 0 || group.security.canWrite" class="caret"></span>\n\t\t</button>\n\t\t<ul class="dropdown-menu"\n\t\t    ng-if="group.id === 0 || group.security.canWrite"\n\t\t    style="left:auto; right:0">\n\t\t\t<li ng-repeat="(name, translation) in attributeNames"\n\t\t\t    ng-click="toggleGroupAttribute(group, name); $event.stopPropagation()"\n\t\t\t    ng-class="{ \'disabled\' : !isUserAllowedToChangeAttribute(name) }">\n\t\t\t\t<span class="check-icon glyphicon"\n\t\t\t\t      ng-class="group.isAttributeEnabled(name) ? \'glyphicon-check\' : \'glyphicon-unchecked\'"></span>\n\t\t\t\t{{translation}}\n\t\t\t</li>\n\t\t</ul>\n\t</div>\n</div>\n\n\x3c!-- children groups --\x3e\n<ul class="list-group" ng-hide="!groupsTree.isGroupExpanded(group) || !group.childGroups.length">\n\t<li ng-repeat="group in group.childGroups | orderBy: \'name\'"\n\t    class="list-group-item"\n\t    ng-if="!groupsTree.isGroupExcluded(group)"\n\t    ng-class="{\'group-hover\': groupsTree.isGroupHovered(group),\n\t               \'group-disabled\': !groupsTree.isGroupEnabled(group),\n\t               \'group-expanded\': groupsTree.isGroupExpanded(group),\n\t               \'group-semi-checked\': groupsTree.isGroupSemiChecked(group),\n\t               \'group-selected\': groupsTree.isGroupSelected(group),\n\t               \'group-in-adding\': groupsTree.isGroupInAddingState(group),\n\t               \'group-in-edit\': groupsTree.isGroupInEditState(group),\n\t               \'group-added\': groupsTree.isGroupInAddedState(group)}"\n\t    ng-click="current_page == \'GROUPS\' ? toggleGroupSelected(group) : toggleGroupExpanded(group); $event.stopPropagation()"\n\t    ng-mouseover="mouseOverGroup(group); $event.stopPropagation()"\n\t    ng-mouseleave="mouseLeaveGroup(group); $event.stopPropagation()"\n\t    ng-include src="\'templates/settings/permissions/GroupsTreeItem.html\'"></li>\n</ul>\n')
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/settings/permissions/Users.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div id="settings-users-panel" class="panel panel-default" ng-controller="UserController">\n\n\t\x3c!-- Unsaved changes modal --\x3e\n\t<modal>\n\t\t<warning-dialog modal-id="\'users-unsaved-changes-modal\'" parent-controller="this"></warning-dialog>\n\t</modal>\n\t\x3c!-- Add user modal --\x3e\n\t<modal>\n\t\t<user-editor modal-id="save-user-modal" user="adding"></user-editor>\n\t</modal>\n\t\x3c!-- Modify user modal --\x3e\n\t<modal>\n\t\t<user-editor modal-id="edit-profile-modal" user="edited"></user-editor>\n\t</modal>\n\n\t<div class="panel-body">\n\t\t<div class="row" style="text-align:center">\n\t\t\t<div class="col-md-6" style="margin:5px 0;text-align:left">\n\n\t\t\t\t\x3c!-- Users list --\x3e\n\t\t\t\t<div style="margin-bottom: 10px">\n\t\t\t\t\t<select multiple class="form-control"\n\t\t\t\t\t\t\tng-model="selectedUsers"\n\t\t\t\t\t\t\tng-change="updateGroupsForSelectedUsers()"\n\t\t\t\t\t\t\tng-options="user.id as getFriendlyName(user) for user in permissionsData.users | filter:isUserVisibleInList"\n\t\t\t\t\t\t\toptions-disabled="!isUserEnabledInList(user) for user in permissionsData.users | filter:isUserVisibleInList"\n\t\t\t\t\t\t\tng-disabled="!permissionsData.users || !permissionsData.groups"\n\t\t\t\t\t\t\tsize=20 style="width:100%; max-height:400px; padding:10px">\n\t\t\t\t\t</select>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="btn-toolbar">\n\t\t\t\t\t<div class="btn-group">\n\t\t\t\t\t\t\x3c!--select all users--\x3e\n\t\t\t\t\t\t<button title="{{\'Select all\'|translate}}"\n\t\t\t\t\t\t        type="button" class="btn btn-default"\n\t\t\t\t\t\t        ng-disabled="!permissionsData.users || !permissionsData.groups"\n\t\t\t\t\t\t        ng-click="selectAllUsers()"\n\t\t\t\t\t\t        aria-label="Select all">\n\t\t\t\t\t\t\t<span class="fa fa-check-square-o" aria-hidden="true"></span>\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t\x3c!--deselect all users--\x3e\n\t\t\t\t\t\t<button title="{{\'Deselect all\'|translate}}"\n\t\t\t\t\t\t        type="button" class="btn btn-default"\n\t\t\t\t\t\t        ng-disabled="!permissionsData.users || !permissionsData.groups"\n\t\t\t\t\t\t        ng-click="deselectAllUsers()"\n\t\t\t\t\t\t        aria-label="Deselect all">\n\t\t\t\t\t\t\t<span class="fa fa-square-o" aria-hidden="true"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- refresh users list --\x3e\n\t\t\t\t\t<button title="{{\'Refresh the list of users\'|translate}}"\n\t\t\t\t\t        type="button" class="btn btn-default"\n\t\t\t\t\t        ng-disabled="!permissionsData.users || !permissionsData.groups"\n\t\t\t\t\t        ng-click="deselectAllUsers(); refreshUsersList()"\n\t\t\t\t\t        aria-label="Refresh the list of users">\n\t\t\t\t\t\t<span class="fa fa-refresh" aria-hidden="true"></span>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="btn-toolbar" style="position:absolute; right:15px; bottom:0">\n\t\t\t\t\t<div class="btn-group margin-right-small">\n\t\t\t\t\t\t\x3c!-- add user --\x3e\n\t\t\t\t\t\t<button title="{{\'Add user\'|translate}}"\n\t\t\t\t\t\t        type="button" class="btn btn-default"\n\t\t\t\t\t\t        ng-disabled="!canAddUser()"\n\t\t\t\t\t\t        ng-click="addUser()"\n\t\t\t\t\t\t        aria-label="Add user">\n\t\t\t\t\t\t\t<span class="fa fa-plus" aria-hidden="true"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\x3c!-- edit one selected user --\x3e\n\t\t\t\t\t\t<button title="{{\'Edit selected user\'|translate}}"\n\t\t\t\t\t\t        type="button" class="btn btn-default"\n\t\t\t\t\t\t        ng-disabled="selectedUsers.length != 1"\n\t\t\t\t\t\t        ng-click="editProfile(getUserById(selectedUsers[0], permissionsData.users))"\n\t\t\t\t\t\t        aria-label="Edit selected user">\n\t\t\t\t\t\t\t<span class="fa fa-pencil" aria-hidden="true"></span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- delete selected users --\x3e\n\t\t\t\t\t<delete-confirmation button-disabled="!selectedUsers.length"\n\t\t\t\t\t                     aria-label="{{\'Delete selected users\'|translate}}"\n\t\t\t\t\t                     on-confirm-callback="removeUsers(selectedUsers); deselectAllUsers()">\n\t\t\t\t\t\t<button-content>\n\t\t\t\t\t\t\t<i class="fa fa-trash-o"></i>\n\t\t\t\t\t\t</button-content>\n\t\t\t\t\t\t<span translate>Selected users will be deleted.</span>\n\t\t\t\t\t</delete-confirmation>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="col-md-6" style="margin:5px 0">\n\t\t\t\t<div translate>Membership</div>\n\n\t\t\t\t\x3c!-- Groups tree --\x3e\n\t\t\t\t<div ng-include src="\'templates/settings/permissions/GroupsTree.html\'"></div>\n\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row margin-top-small">\n\t\t\t<license-user-limit-warning class="col-md-6"></license-user-limit-warning>\n\t\t</div>\n\t</div>\n\n\t<div class="panel-footer">\n\t\t<div class="control-buttons">\n\t\t\t<discard-button ng-click="resetUserGroups()"\n\t\t\t                ng-disabled="!permissionsData.users || !isDataChanged() || isSavingInProgress()"\n\t\t\t                title="{{\'Reset all changes\'|translate}}">\n\t\t\t</discard-button>\n\t\t\t<save-button ng-click="saveUserGroups()"\n\t\t\t             ng-disabled="!permissionsData.users || !isDataChanged() || isSavingInProgress()"\n\t\t\t             in-progress="isSavingInProgress()"\n\t\t\t             title="{{\'Save all changes\'|translate}}">\n\t\t\t</save-button>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/vectormap/VectorMapDialogs.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '\x3c!-- Modal for confirming deletion of a layer --\x3e\n<modal>\n\t<div class="modal fade" id="confirmDeleteLayer" tabindex="-1" role="dialog"\n\t\t aria-labelledby="confirmDelType" aria-hidden="true">\n\t\t<div class="modal-dialog">\n\t\t\t<div class="modal-content">\n\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<h4 translate translate-context="title">Confirm</h4>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="modal-body" translate>\n\t\t\t\t\tThis action will delete the selected vector layers.\n\t\t\t\t</div>\n\n\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t<cancel-button data-dismiss="modal"></cancel-button>\n\t\t\t\t\t<delete-button data-dismiss="modal" ng-click="vm.removeSelection()"></delete-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n')
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "templates/vectormap/VectorMapToolbox.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "\x3c!--vector map / layer editor--\x3e\n<vector-map-editor></vector-map-editor>\n")
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    t.exports = n.p + "translations/de.json"
}
, function(t, e, n) {
    t.exports = n.p + "translations/en.json"
}
, function(t, e, n) {
    t.exports = n.p + "translations/ja.json"
}
, function(t, e, n) {
    t.exports = n.p + "translations/zh.json"
}
, function(t, e, n) {
    t.exports = n.p + "translations/zh_tw.json"
}
, function(t, e, n) {
    t.exports = n.p + "translations/cs.json"
}
, function(t, e, n) {
    t.exports = n.p + "translations/tr.json"
}
, function(t, e, n) {
    t.exports = n.p + "translations/hu.json"
}
, function(t, e, n) {
    t.exports = n.p + "translations/fr.json"
}
, function(t, e, n) {
    "use strict";
    n.r(e);
    var i = n(128)
      , r = n.n(i)
      , o = r.a.EVENT_START
      , a = r.a.EVENT_MOVE
      , s = r.a.EVENT_END
      , c = r.a.event.determineEventTypes()
      , l = r.a.utils
      , u = r.a.PointerEvent;
    r.a.event.onTouch = function(t, e, n) {
        var i = this
          , d = function(c) {
            var d, p = c.type.toLowerCase(), h = r.a.HAS_POINTEREVENTS, f = l.inStr(p, "mouse"), m = e;
            i.shouldDetect && m === a && -1 === c.button && 0 === c.buttons && (m = d = s),
            f && i.preventMouseEvents || (f && m == o ? (i.preventMouseEvents = !1,
            i.shouldDetect = !0) : h && m == o ? i.shouldDetect = !0 : f || m != o || (i.preventMouseEvents = !0,
            i.shouldDetect = !0),
            h && m != s && u.updatePointer(m, c),
            i.shouldDetect && (d = i.doDetect.call(i, c, m, t, n)),
            d == s && (i.preventMouseEvents = !1,
            i.shouldDetect = !1,
            u.reset()),
            h && m == s && u.updatePointer(m, c))
        };
        return this.on(t, c[e], d),
        d
    }
}
, function(t, e) {
    var n;
    window.onload = function() {
        var t;
        (function() {
            var t = -1;
            if ("Microsoft Internet Explorer" == navigator.appName) {
                var e = navigator.userAgent;
                null != new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})").exec(e) && (t = parseFloat(RegExp.$1))
            }
            return t
        }
        )() > -1 && ((t = document.createElement("div")).innerHTML = '<h1>Your browser or system does not support WebGL</h1><h2>WebGL could not be initialized.</h2><p>Please make sure your browser and graphics hardware support WebGL.<br>Recent versions of <a href="http://www.google.com/chrome/" target="_blank">Google Chrome</a> and<a href="http://www.mozilla.org/firefox" target="_blank">Mozilla Firefox</a> should work fine.</p><p>See <a href="http://www.khronos.org/webgl/wiki/Getting_a_WebGL_Implementation" target="_blank">this page</a> onhow to get a WebGL implementation.</p><p>You can test if your browser supports WebGL <a href="http://get.webgl.org/" target="_blank">here</a>.</p>',
        t.style.position = "absolute",
        t.id = "webGlMissingIE",
        t.className = "webGlMissing",
        document.body.appendChild(t))
    }
    ,
    n = 1,
    Object.defineProperty(Object.prototype, "__unique_id", {
        writable: !0
    }),
    Object.defineProperty(Object.prototype, "unique_id", {
        get: function() {
            return null == this.__unique_id && (this.__unique_id = n++),
            this.__unique_id
        }
    })
}
, function(t, e, n) {
    "use strict";
    n.r(e),
    function(t) {
        var e = n(2)
          , i = n(124)
          , r = n.n(i)
          , o = (n(210),
        n(4));
        window.IV.THREE = o,
        window.IV.TWEEN = r.a,
        window.IV.angular = e,
        window.IV.jQuery = t,
        IndoorViewerWebApp.constant("apiEndpoint", "api/"),
        IndoorViewerWebApp.factory("IV", [function() {
            return window.IV
        }
        ]),
        IndoorViewerWebApp.config(["$compileProvider", function(t) {
            t.aHrefSanitizationWhitelist(/^\s*(blob|http|https|mailto):/)
        }
        ]),
        IndoorViewerWebApp.config(["hotkeysProvider", "gettext", function(t, e) {
            t.templateTitle = e("Available Keyboard Shortcuts", void 0, "title"),
            t.cheatSheetHotkey = "?",
            t.cheatSheetDescription = e("Show/hide this cheatsheet"),
            t.template = n(1006)
        }
        ]),
        IndoorViewerWebApp.config(["$sanitizeProvider", function(t) {
            t.addValidElements(["audio", "iframe", "source"]),
            t.addValidAttrs(["allowfullscreen", "autoplay", "controls", "style"])
        }
        ]);
        var a = window.location.href.includes("#");
        IndoorViewerWebApp.constant("isHtml5Mode", !a),
        IndoorViewerWebApp.config(["$locationProvider", function(t) {
            t.html5Mode({
                enabled: !a,
                requireBase: !1
            }),
            t.hashPrefix("")
        }
        ]),
        IndoorViewerWebApp.run(["TrackingService", function(t) {
            t.setupTracking()
        }
        ])
    }
    .call(this, n(19))
}
, function(t, e, n) {
    t.exports = '<modal>\n\t<div class="custom-modal cheatsheet-modal" ng-if="helpVisible">\n\t\t<div class="modal in" tabindex="-1" init-focus>\n\t\t\t<div class="modal-dialog modal-dialog-wide">\n\t\t\t\t<div class="modal-content">\n\t\t\t\t\t<div class="modal-header">\n\t\t\t\t\t\t<img class="menu-close-button ic_svg" ng-src="' + n(35) + '"\n\t\t\t\t\t\t     alt="{{\'Close\'|translate}}" ng-click="toggleCheatSheet()">\n\t\t\t\t\t\t<h4>{{ title | translate:"title"}}</h4>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="modal-body">\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<li class="" ng-repeat="hotkey in hotkeys | filter:{ description: \'!$$undefined$$\' }">\n\t\t\t\t\t\t\t\t<span ng-repeat="key in hotkey.format() track by $index" class="cfp-hotkeys-key">{{ key }}</span>\n\t\t\t\t\t\t\t\t<span class="cfp-hotkeys-text">{{ hotkey.description | translate}}</span>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="modal-backdrop in" ng-class="{in: helpVisible}" data-iv-modal-stack="-1"></div>\n\t</div>\n</modal>\n'
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(20)
      , o = n(101)
      , a = n(210)
      , s = n(92)
      , c = n(8)
      , l = function() {
        function t(t) {
            this.params = t,
            void 0 === this.getIvWindow().IV.base_url && (this.params = this.params || {},
            this.params.base_url = this.params.base_url || "",
            this.setBaseURL(),
            this.crossSiteSetup(),
            this.bootstrapAngularAndSetupApi())
        }
        return t.prototype.reinit = function() {
            this.impl.reinit()
        }
        ,
        t.prototype.setSceneRendering = function(t, e) {
            this.impl.setSceneRendering(t, e)
        }
        ,
        t.prototype.moveToPOIID = function(t, e, n, i) {
            return console.warn('Deprecated usage of "moveToPOIID", use "moveToPoiId" instead.'),
            this.moveToPoiId(t, e, n, i)
        }
        ,
        t.prototype.moveToPoiId = function(t, e, n, i) {
            return this.impl.moveToPoiId(t, e, n, i)
        }
        ,
        t.prototype.moveToPOI = function(t, e, n, i) {
            return console.warn('Deprecated usage of "moveToPOI", use "moveToPoi" instead.'),
            this.moveToPoi(t, e, n, i)
        }
        ,
        t.prototype.moveToPoi = function(t, e, n, i) {
            return this.impl.moveToPoi(t, e, n, i)
        }
        ,
        t.prototype.moveToStartingLoc = function() {
            return this.impl.moveToStartingLoc()
        }
        ,
        t.prototype.moveToImageId = function(t, e, n) {
            return this.impl.moveToImageId(t, e, n)
        }
        ,
        t.prototype.moveToLocationID = function(t, e, n) {
            return console.warn('Deprecated usage of "moveToLocationID", use "moveToImageId" instead.'),
            this.moveToImageId(t, e, n)
        }
        ,
        t.prototype.moveToLocationId = function(t, e, n) {
            return console.warn('Deprecated usage of "moveToLocationId", use "moveToImageId" instead.'),
            this.impl.moveToImageId(t, e, n)
        }
        ,
        t.prototype.moveToImage = function(t, e, n, i, r) {
            return this.impl.moveToImage(t, e, n, i)
        }
        ,
        t.prototype.moveToLocation = function(t, e, n, i) {
            return console.warn('Deprecated usage of "moveToLocation", use "moveToImage" instead.'),
            this.impl.moveToImage(t, e, n, i)
        }
        ,
        t.prototype.moveToGeoLocation = function(t, e, n, i, r, o, a, s) {
            return this.impl.moveToGeoLocation(t, e, n, i, r, o, a, s)
        }
        ,
        t.prototype.moveToDataset = function(t, e, n) {
            return this.impl.moveToDataset(t, e, n)
        }
        ,
        t.prototype.moveToSiteModelEntity = function(t, e, n) {
            return this.impl.moveToSiteModelEntity(t, e, n)
        }
        ,
        t.prototype.moveToSiteModelEntityId = function(t, e, n) {
            return this.impl.moveToSiteModelEntityId(t, e, n)
        }
        ,
        t.prototype.isMoving = function() {
            return this.impl.isMoving()
        }
        ,
        t.prototype.isMovingToPoi = function() {
            return this.impl.isMovingToPoi()
        }
        ,
        t.prototype.getMainView = function() {
            return this.impl.getMainView()
        }
        ,
        t.prototype.getMapView = function() {
            return this.impl.getMapView()
        }
        ,
        t.prototype.resetView = function() {
            return this.impl.resetView()
        }
        ,
        t.prototype.setMainScene = function(t) {
            return console.log('Deprecated usage of "setMainScene", use "api.view.service.setPrimaryView" instead'),
            this.impl.setMainScene(t)
        }
        ,
        t.prototype.swapScenes = function() {
            return console.log('Deprecated usage of "swapScenes", use "api.view.service.swapViews" instead'),
            this.impl.swapScenes()
        }
        ,
        t.prototype.setPOITypesVisibility = function(t, e) {
            console.warn('Deprecated usage of "setPOITypesVisibility", use "setPoiTypesVisibility" instead.'),
            this.setPoiTypesVisibility(t, e)
        }
        ,
        t.prototype.setPoiTypesVisibility = function(t, e) {
            this.impl.setPoiTypesVisibility(t, e)
        }
        ,
        t.prototype.getShareURL = function() {
            return console.warn('Deprecated usage of "getShareURL", use "getShareUrl" instead.'),
            this.getShareUrl()
        }
        ,
        t.prototype.getShareUrl = function() {
            return this.impl.getShareUrl()
        }
        ,
        t.prototype.setLanguage = function(t) {
            this.impl.setLanguage(t)
        }
        ,
        t.prototype.getLanguage = function() {
            return this.impl.getLanguage()
        }
        ,
        t.prototype.getCurrentCursorPosition = function() {
            return this.impl.getCurrentCursorPosition()
        }
        ,
        t.prototype.getMenuItems = function() {
            return this.impl.getMenuItems()
        }
        ,
        t.prototype.addEventListener = function(t, e) {
            return this.impl.addEventListener(t, e)
        }
        ,
        t.prototype.removeEventListener = function(t, e) {
            return this.impl.removeEventListener(t, e)
        }
        ,
        t.prototype.route = function(t, e, n) {
            return this.impl.route(t, e, n)
        }
        ,
        t.prototype.isLicensed = function() {
            return this.impl.isLicensed()
        }
        ,
        t.prototype.getPoiRepository = function() {
            return this.impl.getPoiRepository()
        }
        ,
        t.prototype.getPoiTypeRepository = function() {
            return this.impl.getPoiTypeRepository()
        }
        ,
        t.prototype.getScreenShot = function(t) {
            return this.impl.getScreenShot(t)
        }
        ,
        t.prototype.setBaseURL = function() {
            var t;
            t = this.params.base_url ? this.params.base_url : window.location.href.split(/[?#]/)[0],
            this.getIvWindow().IV.base_url = t.replace(/\/?$/, "/")
        }
        ,
        t.prototype.crossSiteSetup = function() {
            this.redirectAngularBaseUrl(this.getIvWindow().IndoorViewerWebApp, this.getIvWindow().IV.base_url),
            a.isSameOrigin(this.params.base_url) || o.setCrossOrigin("anonymous")
        }
        ,
        t.prototype.redirectAngularBaseUrl = function(t, e) {
            t.config(["$httpProvider", function(t) {
                t.interceptors.push("middleware")
            }
            ]),
            t.factory("middleware", ["$templateCache", function(t) {
                return {
                    request: function(n) {
                        return !n.disableBaseUrlPrefixing && a.isUrlRelative(n.url) && void 0 === t.get(n.url) && (n.url = e + n.url),
                        n
                    }
                }
            }
            ])
        }
        ,
        t.prototype.bootstrapAngularAndSetupApi = function() {
            var t = this;
            i.element(document).ready((function() {
                t.setupMethodsOnIvWindowObject(!1),
                t.getIvWindow().IV.bootstrapApp().then((function() {
                    var e = t.getIvWindow().IV.injector;
                    t.impl = e.get("IndoorViewerFactory").create(t.params),
                    e.get("LicenseService").initialized.then((function() {
                        return t.performBootstrapCallbacks()
                    }
                    )).catch((function() {
                        return t.performBootstrapCallbacks()
                    }
                    ))
                }
                )).catch(c.handleWarning)
            }
            ))
        }
        ,
        t.prototype.performBootstrapCallbacks = function() {
            this.getIvWindow().IV.bootstrapped = function(t) {
                return t()
            }
            ;
            var t = this.getIvWindow().IV.bootstrapCallbacks;
            this.getIvWindow().IV = Object.assign({}, this.getIvWindow().IV),
            this.setupMethodsOnIvWindowObject(!0),
            t.forEach((function(t) {
                return t()
            }
            )),
            t.length = 0
        }
        ,
        t.prototype.checkedCall = function(t, e) {
            var n = this;
            return function() {
                for (var i = [], o = 0; o < arguments.length; o++)
                    i[o] = arguments[o];
                if (!e || n.getIvWindow().IV.injector.get("LicenseService").isFeatureEnabled(s.LicenseFeatureType.JAVASCRIPT_API))
                    return t.apply(n, i);
                window.setTimeout(r.requestAnimationFrame_, 0)
            }
        }
        ,
        t.prototype.setupMethodsOnIvWindowObject = function(t) {
            var e = this.getIvWindow().IV;
            e.addEventListener = this.checkedCall(this.addEventListener, t),
            e.getCurrentCursorPosition = this.checkedCall(this.getCurrentCursorPosition, t),
            e.getLanguage = this.checkedCall(this.getLanguage, t),
            e.getMainView = this.checkedCall(this.getMainView, t),
            e.getMapView = this.checkedCall(this.getMapView, t),
            e.getMenuItems = this.checkedCall(this.getMenuItems, t),
            e.getPoiRepository = this.checkedCall(this.getPoiRepository, t),
            e.getPoiTypeRepository = this.checkedCall(this.getPoiTypeRepository, t),
            e.getScreenShot = this.checkedCall(this.getScreenShot, t),
            e.getShareURL = this.checkedCall(this.getShareURL, t),
            e.getShareUrl = this.checkedCall(this.getShareUrl, t),
            e.isLicensed = this.checkedCall(this.isLicensed, !1),
            e.isMoving = this.checkedCall(this.isMoving, t),
            e.isMovingToPoi = this.checkedCall(this.isMovingToPoi, t),
            e.moveToDataset = this.checkedCall(this.moveToDataset, t),
            e.moveToGeoLocation = this.checkedCall(this.moveToGeoLocation, t),
            e.moveToImage = this.checkedCall(this.moveToImage, t),
            e.moveToImageId = this.checkedCall(this.moveToImageId, t),
            e.moveToLocation = this.checkedCall(this.moveToLocation, t),
            e.moveToLocationID = this.checkedCall(this.moveToLocationID, t),
            e.moveToLocationId = this.checkedCall(this.moveToLocationId, t),
            e.moveToPOI = this.checkedCall(this.moveToPOI, t),
            e.moveToPOIID = this.checkedCall(this.moveToPOIID, t),
            e.moveToPoi = this.checkedCall(this.moveToPoi, t),
            e.moveToPoiId = this.checkedCall(this.moveToPoiId, t),
            e.moveToSiteModelEntity = this.checkedCall(this.moveToSiteModelEntity, t),
            e.moveToSiteModelEntityId = this.checkedCall(this.moveToSiteModelEntityId, t),
            e.moveToStartingLoc = this.checkedCall(this.moveToStartingLoc, t),
            e.reinit = this.checkedCall(this.reinit, t),
            e.removeEventListener = this.checkedCall(this.removeEventListener, t),
            e.resetView = this.checkedCall(this.resetView, t),
            e.route = this.checkedCall(this.route, t),
            e.setLanguage = this.checkedCall(this.setLanguage, t),
            e.setMainScene = this.checkedCall(this.setMainScene, t),
            e.setPOITypesVisibility = this.checkedCall(this.setPOITypesVisibility, t),
            e.setPoiTypesVisibility = this.checkedCall(this.setPoiTypesVisibility, t),
            e.setSceneRendering = this.checkedCall(this.setSceneRendering, t),
            e.swapScenes = this.checkedCall(this.swapScenes, t)
        }
        ,
        t.prototype.getIvWindow = function() {
            return window
        }
        ,
        t
    }();
    window.IndoorViewer = l
}
, function(t, e, n) {
    "use strict";
    n.r(e),
    n.d(e, "OBJLoader", (function() {
        return r
    }
    ));
    var i = n(4)
      , r = function(t) {
        this.manager = void 0 !== t ? t : i.DefaultLoadingManager,
        this.materials = null,
        this.regexp = {
            vertex_pattern: /^v\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)/,
            normal_pattern: /^vn\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)/,
            uv_pattern: /^vt\s+([\d|\.|\+|\-|e|E]+)\s+([\d|\.|\+|\-|e|E]+)/,
            face_vertex: /^f\s+(-?\d+)\s+(-?\d+)\s+(-?\d+)(?:\s+(-?\d+))?/,
            face_vertex_uv: /^f\s+(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)(?:\s+(-?\d+)\/(-?\d+))?/,
            face_vertex_uv_normal: /^f\s+(-?\d+)\/(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)\/(-?\d+)\s+(-?\d+)\/(-?\d+)\/(-?\d+)(?:\s+(-?\d+)\/(-?\d+)\/(-?\d+))?/,
            face_vertex_normal: /^f\s+(-?\d+)\/\/(-?\d+)\s+(-?\d+)\/\/(-?\d+)\s+(-?\d+)\/\/(-?\d+)(?:\s+(-?\d+)\/\/(-?\d+))?/,
            object_pattern: /^[og]\s*(.+)?/,
            smoothing_pattern: /^s\s+(\d+|on|off)/,
            material_library_pattern: /^mtllib /,
            material_use_pattern: /^usemtl /
        }
    };
    r.prototype = {
        constructor: r,
        load: function(t, e, n, r) {
            var o = this
              , a = new i.FileLoader(o.manager);
            a.setPath(this.path),
            a.load(t, (function(t) {
                e(o.parse(t))
            }
            ), n, r)
        },
        setPath: function(t) {
            this.path = t
        },
        setMaterials: function(t) {
            this.materials = t
        },
        _createParserState: function() {
            var t = {
                objects: [],
                object: {},
                vertices: [],
                normals: [],
                uvs: [],
                materialLibraries: [],
                startObject: function(t, e) {
                    if (this.object && !1 === this.object.fromDeclaration)
                        return this.object.name = t,
                        void (this.object.fromDeclaration = !1 !== e);
                    this.object && "function" == typeof this.object._finalize && this.object._finalize();
                    var n = this.object && "function" == typeof this.object.currentMaterial ? this.object.currentMaterial() : void 0;
                    if (this.object = {
                        name: t || "",
                        fromDeclaration: !1 !== e,
                        geometry: {
                            vertices: [],
                            normals: [],
                            uvs: []
                        },
                        materials: [],
                        smooth: !0,
                        startMaterial: function(t, e) {
                            var n = this._finalize(!1);
                            n && (n.inherited || n.groupCount <= 0) && this.materials.splice(n.index, 1);
                            var i = {
                                index: this.materials.length,
                                name: t || "",
                                mtllib: Array.isArray(e) && e.length > 0 ? e[e.length - 1] : "",
                                smooth: void 0 !== n ? n.smooth : this.smooth,
                                groupStart: void 0 !== n ? n.groupEnd : 0,
                                groupEnd: -1,
                                groupCount: -1,
                                inherited: !1,
                                clone: function(t) {
                                    return {
                                        index: "number" == typeof t ? t : this.index,
                                        name: this.name,
                                        mtllib: this.mtllib,
                                        smooth: this.smooth,
                                        groupStart: this.groupEnd,
                                        groupEnd: -1,
                                        groupCount: -1,
                                        inherited: !1
                                    }
                                }
                            };
                            return this.materials.push(i),
                            i
                        },
                        currentMaterial: function() {
                            if (this.materials.length > 0)
                                return this.materials[this.materials.length - 1]
                        },
                        _finalize: function(t) {
                            var e = this.currentMaterial();
                            return e && -1 === e.groupEnd && (e.groupEnd = this.geometry.vertices.length / 3,
                            e.groupCount = e.groupEnd - e.groupStart,
                            e.inherited = !1),
                            !1 !== t && 0 === this.materials.length && this.materials.push({
                                name: "",
                                smooth: this.smooth
                            }),
                            e
                        }
                    },
                    n && n.name && "function" == typeof n.clone) {
                        var i = n.clone(0);
                        i.inherited = !0,
                        this.object.materials.push(i)
                    }
                    this.objects.push(this.object)
                },
                finalize: function() {
                    this.object && "function" == typeof this.object._finalize && this.object._finalize()
                },
                parseVertexIndex: function(t, e) {
                    var n = parseInt(t, 10);
                    return 3 * (n >= 0 ? n - 1 : n + e / 3)
                },
                parseNormalIndex: function(t, e) {
                    var n = parseInt(t, 10);
                    return 3 * (n >= 0 ? n - 1 : n + e / 3)
                },
                parseUVIndex: function(t, e) {
                    var n = parseInt(t, 10);
                    return 2 * (n >= 0 ? n - 1 : n + e / 2)
                },
                addVertex: function(t, e, n) {
                    var i = this.vertices
                      , r = this.object.geometry.vertices;
                    r.push(i[t + 0]),
                    r.push(i[t + 1]),
                    r.push(i[t + 2]),
                    r.push(i[e + 0]),
                    r.push(i[e + 1]),
                    r.push(i[e + 2]),
                    r.push(i[n + 0]),
                    r.push(i[n + 1]),
                    r.push(i[n + 2])
                },
                addVertexLine: function(t) {
                    var e = this.vertices
                      , n = this.object.geometry.vertices;
                    n.push(e[t + 0]),
                    n.push(e[t + 1]),
                    n.push(e[t + 2])
                },
                addNormal: function(t, e, n) {
                    var i = this.normals
                      , r = this.object.geometry.normals;
                    r.push(i[t + 0]),
                    r.push(i[t + 1]),
                    r.push(i[t + 2]),
                    r.push(i[e + 0]),
                    r.push(i[e + 1]),
                    r.push(i[e + 2]),
                    r.push(i[n + 0]),
                    r.push(i[n + 1]),
                    r.push(i[n + 2])
                },
                addUV: function(t, e, n) {
                    var i = this.uvs
                      , r = this.object.geometry.uvs;
                    r.push(i[t + 0]),
                    r.push(i[t + 1]),
                    r.push(i[e + 0]),
                    r.push(i[e + 1]),
                    r.push(i[n + 0]),
                    r.push(i[n + 1])
                },
                addUVLine: function(t) {
                    var e = this.uvs
                      , n = this.object.geometry.uvs;
                    n.push(e[t + 0]),
                    n.push(e[t + 1])
                },
                addFace: function(t, e, n, i, r, o, a, s, c, l, u, d) {
                    var p, h = this.vertices.length, f = this.parseVertexIndex(t, h), m = this.parseVertexIndex(e, h), g = this.parseVertexIndex(n, h);
                    if (void 0 === i ? this.addVertex(f, m, g) : (p = this.parseVertexIndex(i, h),
                    this.addVertex(f, m, p),
                    this.addVertex(m, g, p)),
                    void 0 !== r) {
                        var v = this.uvs.length;
                        f = this.parseUVIndex(r, v),
                        m = this.parseUVIndex(o, v),
                        g = this.parseUVIndex(a, v),
                        void 0 === i ? this.addUV(f, m, g) : (p = this.parseUVIndex(s, v),
                        this.addUV(f, m, p),
                        this.addUV(m, g, p))
                    }
                    if (void 0 !== c) {
                        var y = this.normals.length;
                        f = this.parseNormalIndex(c, y),
                        m = c === l ? f : this.parseNormalIndex(l, y),
                        g = c === u ? f : this.parseNormalIndex(u, y),
                        void 0 === i ? this.addNormal(f, m, g) : (p = this.parseNormalIndex(d, y),
                        this.addNormal(f, m, p),
                        this.addNormal(m, g, p))
                    }
                },
                addLineGeometry: function(t, e) {
                    this.object.geometry.type = "Line";
                    for (var n = this.vertices.length, i = this.uvs.length, r = 0, o = t.length; r < o; r++)
                        this.addVertexLine(this.parseVertexIndex(t[r], n));
                    var a = 0;
                    for (o = e.length; a < o; a++)
                        this.addUVLine(this.parseUVIndex(e[a], i))
                }
            };
            return t.startObject("", !1),
            t
        },
        parse: function(t) {
            var e = this._createParserState();
            -1 !== t.indexOf("\r\n") && (t = t.replace("\r\n", "\n"));
            for (var n = t.split("\n"), r = "", o = "", a = "", s = [], c = "function" == typeof "".trimLeft, l = 0, u = n.length; l < u; l++)
                if (r = n[l],
                0 !== (r = c ? r.trimLeft() : r.trim()).length && "#" !== (o = r.charAt(0)))
                    if ("v" === o)
                        if (" " === (a = r.charAt(1)) && null !== (s = this.regexp.vertex_pattern.exec(r)))
                            e.vertices.push(parseFloat(s[1]), parseFloat(s[2]), parseFloat(s[3]));
                        else if ("n" === a && null !== (s = this.regexp.normal_pattern.exec(r)))
                            e.normals.push(parseFloat(s[1]), parseFloat(s[2]), parseFloat(s[3]));
                        else {
                            if ("t" !== a || null === (s = this.regexp.uv_pattern.exec(r)))
                                throw new Error("Unexpected vertex/normal/uv line: '" + r + "'");
                            e.uvs.push(parseFloat(s[1]), parseFloat(s[2]))
                        }
                    else if ("f" === o)
                        if (null !== (s = this.regexp.face_vertex_uv_normal.exec(r)))
                            e.addFace(s[1], s[4], s[7], s[10], s[2], s[5], s[8], s[11], s[3], s[6], s[9], s[12]);
                        else if (null !== (s = this.regexp.face_vertex_uv.exec(r)))
                            e.addFace(s[1], s[3], s[5], s[7], s[2], s[4], s[6], s[8]);
                        else if (null !== (s = this.regexp.face_vertex_normal.exec(r)))
                            e.addFace(s[1], s[3], s[5], s[7], void 0, void 0, void 0, void 0, s[2], s[4], s[6], s[8]);
                        else {
                            if (null === (s = this.regexp.face_vertex.exec(r)))
                                throw new Error("Unexpected face line: '" + r + "'");
                            e.addFace(s[1], s[2], s[3], s[4])
                        }
                    else if ("l" === o) {
                        var d = r.substring(1).trim().split(" ")
                          , p = []
                          , h = [];
                        if (-1 === r.indexOf("/"))
                            p = d;
                        else
                            for (var f = 0, m = d.length; f < m; f++) {
                                var g = d[f].split("/");
                                "" !== g[0] && p.push(g[0]),
                                "" !== g[1] && h.push(g[1])
                            }
                        e.addLineGeometry(p, h)
                    } else if (null !== (s = this.regexp.object_pattern.exec(r))) {
                        var v = s[0].substr(1).trim();
                        e.startObject(v)
                    } else if (this.regexp.material_use_pattern.test(r))
                        e.object.startMaterial(r.substring(7).trim(), e.materialLibraries);
                    else if (this.regexp.material_library_pattern.test(r))
                        e.materialLibraries.push(r.substring(7).trim());
                    else {
                        if (null === (s = this.regexp.smoothing_pattern.exec(r))) {
                            if ("\0" === r)
                                continue;
                            throw new Error("Unexpected line: '" + r + "'")
                        }
                        var y = s[1].trim().toLowerCase();
                        e.object.smooth = "1" === y || "on" === y,
                        (P = e.object.currentMaterial()) && (P.smooth = e.object.smooth)
                    }
            e.finalize();
            var b = new i.Group;
            b.materialLibraries = [].concat(e.materialLibraries);
            for (l = 0,
            u = e.objects.length; l < u; l++) {
                var w = e.objects[l]
                  , S = w.geometry
                  , x = w.materials
                  , M = "Line" === S.type;
                if (0 !== S.vertices.length) {
                    var E = new i.BufferGeometry;
                    E.setAttribute("position", new i.BufferAttribute(new Float32Array(S.vertices),3)),
                    S.normals.length > 0 ? E.setAttribute("normal", new i.BufferAttribute(new Float32Array(S.normals),3)) : E.computeVertexNormals(),
                    S.uvs.length > 0 && E.setAttribute("uv", new i.BufferAttribute(new Float32Array(S.uvs),2));
                    for (var C, A = [], T = 0, O = x.length; T < O; T++) {
                        var _ = x[T]
                          , P = void 0;
                        if (null !== this.materials && (P = this.materials.create(_.name),
                        M && P && !(P instanceof i.LineBasicMaterial))) {
                            var I = new i.LineBasicMaterial;
                            I.copy(P),
                            P = I
                        }
                        P || ((P = M ? new i.LineBasicMaterial : new i.MeshPhongMaterial).name = _.name),
                        P.flatShading = !_.smooth,
                        A.push(P)
                    }
                    if (A.length > 1) {
                        for (T = 0,
                        O = x.length; T < O; T++) {
                            _ = x[T];
                            E.addGroup(_.groupStart, _.groupCount, T)
                        }
                        var k = new i.MultiMaterial(A);
                        C = M ? new i.Line(E,k) : new i.Mesh(E,k)
                    } else
                        C = M ? new i.Line(E,A[0]) : new i.Mesh(E,A[0]);
                    C.name = w.name,
                    b.add(C)
                }
            }
            return b
        }
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    n(177),
    n(103),
    n(22),
    n(385),
    n(31);
    var i = n(1062)
      , r = n(2)
      , o = (n(389),
    n(0))
      , a = n(6)
      , s = (n(15),
    n(28),
    n(54),
    n(50),
    n(65),
    n(27),
    n(202),
    n(324),
    n(166),
    n(75),
    n(103),
    n(123),
    n(22),
    n(90),
    n(36),
    n(385),
    n(270),
    n(38),
    n(83),
    n(181),
    n(263),
    n(409),
    n(17),
    n(271),
    n(196),
    n(72),
    n(410),
    n(21),
    n(281),
    n(91),
    n(31),
    n(14),
    n(272),
    n(155),
    n(49),
    n(182),
    n(24),
    n(203),
    n(424),
    n(39),
    n(177),
    n(106),
    n(61),
    n(425),
    n(73),
    n(104),
    n(171),
    n(86),
    n(0))
      , c = n(409)
      , l = n(410)
      , u = n(385)
      , d = n(36)
      , p = n(75)
      , h = n(263)
      , f = n(15)
      , m = n(91)
      , g = n(155)
      , v = n(31)
      , y = n(28)
      , b = n(272)
      , w = n(14)
      , S = n(90)
      , x = n(49)
      , M = n(72)
      , E = n(50)
      , C = n(271)
      , A = n(54)
      , T = n(389)
      , O = n(424)
      , _ = n(281)
      , P = n(171)
      , I = n(61)
      , k = n(24)
      , D = n(203)
      , R = n(182)
      , L = n(103)
      , N = n(39)
      , j = n(196)
      , V = n(123)
      , F = n(177)
      , U = n(106)
      , B = n(104)
      , z = n(181)
      , G = n(38)
      , H = n(22)
      , W = n(83)
      , q = n(425)
      , X = n(166)
      , Y = n(21)
      , K = n(73)
      , Z = n(27)
      , J = n(324)
      , Q = n(270)
      , $ = n(202)
      , tt = n(65)
      , et = n(17)
      , nt = n(86)
      , it = function() {
        function t(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g, v, y, b, w, S, x, M, E, C, A, T, O, _, P, I, k, D, R, L, N, j, V, F, U, B, z, G, H, W, q, X, Y, K, Z, J, Q) {
            this.$location = t,
            this.$rootScope = e,
            this.gettextCatalog = n,
            this.PointCloudMenuService = i,
            this.AffineRefSysRepository = r,
            this.ApiService = o,
            this.ApplyBrowserLocaleService = a,
            this.AuthenticationService = s,
            this.BundleRepository = c,
            this.CameraHeadRepository = l,
            this.ConfigService = u,
            this.CursorService = d,
            this.DatasetAlignmentService = p,
            this.DatasetRepository = h,
            this.FloorChangerService = f,
            this.GeoRegistrationService = m,
            this.GeoTransformationService = g,
            this.ImageRepository = v,
            this.ImageService = y,
            this.JWTTokenService = b,
            this.LanguageService = w,
            this.LegacyService = S,
            this.LicenseService = x,
            this.MainViewService = M,
            this.MapViewService = E,
            this.MeasurementRepository = C,
            this.MeasurementsService = A,
            this.MessageReportingService = T,
            this.ModeService = O,
            this.ModeSwitchService = _,
            this.NavGraphService = P,
            this.PoiRepository = I,
            this.PoiService = k,
            this.PoiTypeGroupRepository = D,
            this.PoiTypeRepository = R,
            this.PoiTypeService = L,
            this.ProgressReportService = N,
            this.RouteService = j,
            this.SearchService = V,
            this.SidebarMenuService = F,
            this.SiteModelRepository = U,
            this.SiteModelService = B,
            this.StatusCheckService = z,
            this.TiledMapRepository = G,
            this.TrackingService = H,
            this.UrlService = W,
            this.UserService = q,
            this.VectorEntityRepository = X,
            this.VectorMapRepository = Y,
            this.VectorMapService = K,
            this.ViewMenuService = Z,
            this.ViewService = J,
            this.InstanceInformationService = Q
        }
        return t.prototype.create = function(t) {
            return new i.IndoorViewerImpl(t,this)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(s.ɵɵinject("$location"),s.ɵɵinject("$rootScope"),s.ɵɵinject("gettextCatalog"),s.ɵɵinject("PointCloudMenuService"),s.ɵɵinject(c.AffineRefSysRepository),s.ɵɵinject(l.ApiService),s.ɵɵinject(u.ApplyBrowserLocaleService),s.ɵɵinject(d.AuthenticationService),s.ɵɵinject(p.BundleRepository),s.ɵɵinject(h.CameraHeadRepository),s.ɵɵinject(f.ConfigService),s.ɵɵinject(m.CursorService),s.ɵɵinject(g.DatasetAlignmentService),s.ɵɵinject(v.DatasetRepository),s.ɵɵinject(y.FloorChangerService),s.ɵɵinject(b.GeoRegistrationService),s.ɵɵinject(w.GeoTransformationService),s.ɵɵinject(S.ImageRepository),s.ɵɵinject(x.ImageService),s.ɵɵinject(M.JWTTokenService),s.ɵɵinject(E.LanguageService),s.ɵɵinject(C.LegacyService),s.ɵɵinject(A.LicenseService),s.ɵɵinject(T.MainViewService),s.ɵɵinject(O.MapViewService),s.ɵɵinject(_.MeasurementRepository),s.ɵɵinject(P.MeasurementsService),s.ɵɵinject(I.MessageReportingService),s.ɵɵinject(k.ModeService),s.ɵɵinject(D.ModeSwitchService),s.ɵɵinject(R.NavGraphService),s.ɵɵinject(L.PoiRepository),s.ɵɵinject(N.PoiService),s.ɵɵinject(j.PoiTypeGroupRepository),s.ɵɵinject(V.PoiTypeRepository),s.ɵɵinject(F.PoiTypeService),s.ɵɵinject(U.ProgressReportService),s.ɵɵinject(B.RouteService),s.ɵɵinject(z.SearchService),s.ɵɵinject(G.SidebarMenuService),s.ɵɵinject(H.SiteModelRepository),s.ɵɵinject(W.SiteModelService),s.ɵɵinject(q.StatusCheckService),s.ɵɵinject(X.TiledMapRepository),s.ɵɵinject(Y.TrackingService),s.ɵɵinject(K.UrlService),s.ɵɵinject(Z.UserService),s.ɵɵinject(J.VectorEntityRepository),s.ɵɵinject(Q.VectorMapRepository),s.ɵɵinject($.VectorMapService),s.ɵɵinject(tt.ViewMenuService),s.ɵɵinject(et.ViewService),s.ɵɵinject(nt.InstanceInformationService))
        }
        ,
        t.ɵprov = s.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.IndoorViewerFactory = it,
    s.ɵsetClassMetadata(it, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: void 0,
            decorators: [{
                type: o.Inject,
                args: ["$location"]
            }]
        }, {
            type: void 0,
            decorators: [{
                type: o.Inject,
                args: ["$rootScope"]
            }]
        }, {
            type: void 0,
            decorators: [{
                type: o.Inject,
                args: ["gettextCatalog"]
            }]
        }, {
            type: void 0,
            decorators: [{
                type: o.Inject,
                args: ["PointCloudMenuService"]
            }]
        }, {
            type: c.AffineRefSysRepository
        }, {
            type: l.ApiService
        }, {
            type: u.ApplyBrowserLocaleService
        }, {
            type: d.AuthenticationService
        }, {
            type: p.BundleRepository
        }, {
            type: h.CameraHeadRepository
        }, {
            type: f.ConfigService
        }, {
            type: m.CursorService
        }, {
            type: g.DatasetAlignmentService
        }, {
            type: v.DatasetRepository
        }, {
            type: y.FloorChangerService
        }, {
            type: b.GeoRegistrationService
        }, {
            type: w.GeoTransformationService
        }, {
            type: S.ImageRepository
        }, {
            type: x.ImageService
        }, {
            type: M.JWTTokenService
        }, {
            type: E.LanguageService
        }, {
            type: C.LegacyService
        }, {
            type: A.LicenseService
        }, {
            type: T.MainViewService
        }, {
            type: O.MapViewService
        }, {
            type: _.MeasurementRepository
        }, {
            type: P.MeasurementsService
        }, {
            type: I.MessageReportingService
        }, {
            type: k.ModeService
        }, {
            type: D.ModeSwitchService
        }, {
            type: R.NavGraphService
        }, {
            type: L.PoiRepository
        }, {
            type: N.PoiService
        }, {
            type: j.PoiTypeGroupRepository
        }, {
            type: V.PoiTypeRepository
        }, {
            type: F.PoiTypeService
        }, {
            type: U.ProgressReportService
        }, {
            type: B.RouteService
        }, {
            type: z.SearchService
        }, {
            type: G.SidebarMenuService
        }, {
            type: H.SiteModelRepository
        }, {
            type: W.SiteModelService
        }, {
            type: q.StatusCheckService
        }, {
            type: X.TiledMapRepository
        }, {
            type: Y.TrackingService
        }, {
            type: K.UrlService
        }, {
            type: Z.UserService
        }, {
            type: J.VectorEntityRepository
        }, {
            type: Q.VectorMapRepository
        }, {
            type: $.VectorMapService
        }, {
            type: tt.ViewMenuService
        }, {
            type: et.ViewService
        }, {
            type: nt.InstanceInformationService
        }]
    }
    ), null),
    r.module("IVWebApp").service("IndoorViewerFactory", a.downgradeInjectable(it))
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1011);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, '@-webkit-keyframes resizeanim{0%{opacity:0}to{opacity:0}}@-moz-keyframes resizeanim{0%{opacity:0}to{opacity:0}}@-o-keyframes resizeanim{0%{opacity:0}to{opacity:0}}@keyframes resizeanim{0%{opacity:0}to{opacity:0}}.resize-triggers{visibility:hidden;opacity:0;-webkit-animation:resizeanim 1ms;-moz-animation:1ms resizeanim;-o-animation:1ms resizeanim;animation:resizeanim 1ms}.contract-trigger:before,.resize-triggers,.resize-triggers>div{content:" ";display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden}.resize-triggers>div{background:#eee;overflow:auto}.contract-trigger:before{width:200%;height:200%}', ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.active = !0,
            e
        }
        return r(e, t),
        e.prototype.reset = function() {
            this.active = !0
        }
        ,
        e.prototype.handle = function(e) {
            this.active && (this.active = !1,
            t.prototype.handle.call(this, e))
        }
        ,
        e
    }(n(521).ErrorWrapper);
    e.OnceErrorWrapper = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.networkApplies = function(t, e, n) {
            return 504 === t
        }
        ,
        e.prototype.report = function() {
            return this.gettextCatalog.getString("The proxy server is unable to reach the 4dkankan server.")
        }
        ,
        e
    }(n(308).NetworkIssueDetector);
    e.ProxyDetector = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.networkApplies = function(t, e, n) {
            return 0 === t
        }
        ,
        e.prototype.report = function() {
            return this.gettextCatalog.getString("Cannot establish network connection.")
        }
        ,
        e
    }(n(308).NetworkIssueDetector);
    e.NetworkDownDetector = o
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t() {}
        return t.prototype.report = function(t) {
            console.warn(t)
        }
        ,
        t
    }();
    e.ConsoleReporter = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t(t, e) {
            this.MessageReportingService = t,
            this.gettextCatalog = e
        }
        return t.prototype.report = function(t) {
            var e = this.gettextCatalog.getString("Error");
            this.MessageReportingService.showMessage(e, t)
        }
        ,
        t
    }();
    e.MessageServiceReporter = i
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.networkApplies = function(t, e, n) {
            var i = n.statusText && n.statusText.length ? n.statusText : this.gettextCatalog.getString("Network error")
              , r = n.data && (n.data.msg || n.data.exception || n.data.path) || "";
            return this.error = {
                text: this.gettextCatalog.getString("Network request failed"),
                status: n.status,
                statusText: i,
                details: r
            },
            !0
        }
        ,
        e.prototype.report = function() {
            return this.error.text + ": " + this.error.statusText + " (" + this.error.status + ") " + this.error.details
        }
        ,
        e
    }(n(308).NetworkIssueDetector);
    e.RequestErrorDetector = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.applies = function(t) {
            switch (this.getExceptionShortName(t)) {
            case "BundleFileNotFoundException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Bundle file does not exist or is not accessible.") + " " + this.gettextCatalog.getString("Please contact the system administrator."),
                !0;
            case "BundleNotFoundException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Cannot find bundle."),
                !0;
            case "DataDirNotFoundException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Data directory does not exist or is not accessible.") + " " + this.gettextCatalog.getString("Please contact the system administrator."),
                !0;
            case "SiteModelEntityNotFoundException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Cannot find any floors or buildings with matching names."),
                !0;
            default:
                return !1
            }
        }
        ,
        e
    }(n(145).ServerExceptionClassDetector);
    e.ServerFileNotFoundExceptionDetector = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.applies = function(t) {
            switch (this.getExceptionShortName(t)) {
            case "MissingBundleFileOnDiskException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Cannot find bundle file."),
                !0;
            case "MissingCameraHeadDataOnDiskException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Dataset could not be added (missing camera head information). Details:") + " " + this.getExceptionMessage(t),
                !0;
            case "MissingDatasetFileOnDiskException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Cannot find dataset directory. Details:") + " " + this.getExceptionMessage(t),
                !0;
            case "MissingPanoFileOnDiskException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Cannot find pano directory for dataset. Details:") + " " + this.getExceptionMessage(t),
                !0;
            case "MissingWebcloudDirOnDiskException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Cannot find webcloud directory for point-cloud-only dataset. Details:") + " " + this.getExceptionMessage(t),
                !0;
            default:
                return !1
            }
        }
        ,
        e
    }(n(145).ServerExceptionClassDetector);
    e.ServerMissingFileOnDiskExceptionDetector = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.applies = function(t) {
            switch (this.getExceptionShortName(t)) {
            case "NoSuchBundleException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Bundle not found."),
                !0;
            case "NoSuchDatasetException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Dataset not found."),
                !0;
            case "BadGroupRequestException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Group not found."),
                !0;
            case "NoSuchPointCloudException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Point cloud file not found."),
                !0;
            case "NoSuchReferenceSystemException":
            case "ReferenceSystemNotFoundException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Geodetic reference system not found."),
                !0;
            case "NoSuchUserException":
                return this.currentErrorMessage = this.gettextCatalog.getString("User not found."),
                !0;
            case "NoSuchVectorMapException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Vector map not found."),
                !0;
            default:
                return !1
            }
        }
        ,
        e
    }(n(145).ServerExceptionClassDetector);
    e.ServerNoSuchObjectExceptionDetector = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.applies = function(t) {
            switch (this.getExceptionShortName(t)) {
            case "BundleConflictException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Bundle has already been added."),
                !0;
            case "DatasetConflictException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Dataset has already been added. Details:") + " " + this.getExceptionMessage(t),
                !0;
            case "ImagesConflictException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Images for dataset have already been added. Details:") + " " + this.getExceptionMessage(t),
                !0;
            case "UserConflictException":
                return this.currentErrorMessage = this.gettextCatalog.getString("User has already been added."),
                !0;
            case "WifiConflictException":
                return this.currentErrorMessage = this.gettextCatalog.getString("WiFi entries for the dataset have already been added. Details:") + " " + this.getExceptionMessage(t),
                !0;
            default:
                return !1
            }
        }
        ,
        e
    }(n(145).ServerExceptionClassDetector);
    e.ServerObjectConflictExceptionDetector = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.applies = function(t) {
            switch (this.getExceptionShortName(t)) {
            case "MissingNamesInSiteModelEntitiesException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Invalid site model. Make sure all floors and buildings have a name."),
                !0;
            case "DuplicateNamesInSiteModelEntitiesException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Invalid site model. Make sure there are no duplicate names among site model entities."),
                !0;
            default:
                return !1
            }
        }
        ,
        e
    }(n(145).ServerExceptionClassDetector);
    e.ServerSiteModelNameExceptionDetector = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.applies = function(t) {
            var e = this.getExceptionShortName(t)
              , n = this.getExceptionMessage(t);
            switch (e) {
            case "ImageSizeIncorrectException":
                return this.currentErrorMessage = this.gettextCatalog.getString("The unzipped image has an incorrect size. A correct size will be a square image with its length and width as multiples of 256."),
                !0;
            case "InvalidIconDimensionException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Unsupported icon size. Supported sizes are: 32x32, 64x64, 128x128, 256x256."),
                !0;
            case "InvalidFileFormatException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Unsupported image format."),
                !0;
            case "MissingValidImagesInZipException":
                return this.currentErrorMessage = this.gettextCatalog.getString("No valid image in the zip file."),
                !0;
            case "InvalidVisualIndexZipFileException":
                return this.currentErrorMessage = this.gettextCatalog.getString("The uploaded visual index is not in the correct format."),
                !0;
            case "MissingTiledMapsInBundleExceptions":
                return this.currentErrorMessage = this.gettextCatalog.getString("There are no maps in the bundle."),
                !0;
            case "MultipartException":
                return !!n.match(/Request exceeds maxRequestSize \(.*\)/) && (this.currentErrorMessage = this.gettextCatalog.getString("Maximum file size (20MB) exceeded."),
                !0);
            case "FileValidationException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Upload was not successful. Details:") + " " + this.getExceptionMessage(t),
                !0;
            case "UploadDirNotWritableException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Upload directory is not writable.") + " " + this.gettextCatalog.getString("Please contact the system administrator."),
                !0;
            case "UploadDirDoesNotExistException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Upload directory does not exist.") + " " + this.gettextCatalog.getString("Please contact the system administrator."),
                !0;
            default:
                return !1
            }
        }
        ,
        e
    }(n(145).ServerExceptionClassDetector);
    e.ServerUploadExceptionDetector = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.applies = function(t) {
            switch (this.getExceptionShortName(t)) {
            case "OperationOnPoiChildrenDenied":
                return this.currentErrorMessage = this.gettextCatalog.getString("Permission denied because there are POIs to which you don't have access."),
                !0;
            default:
                return !1
            }
        }
        ,
        e
    }(n(145).ServerExceptionClassDetector);
    e.ServerVariousExceptionDetector = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.applies = function(t) {
            switch (this.getExceptionShortName(t)) {
            case "BadBundleDataOnDiskException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Bundle file is empty."),
                !0;
            case "BadRecVersionDatasetOnDiskException":
            case "BadWebVersionDatasetOnDiskException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Dataset version is incompatible with preview mode."),
                !0;
            default:
                return !1
            }
        }
        ,
        e
    }(n(145).ServerExceptionClassDetector);
    e.ServerBadDataOnDiskExceptionDetector = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.applies = function(t) {
            var e = t.errors.includes("std::bad_alloc");
            return e && (this.currentErrorMessage = this.gettextCatalog.getString("Not enough memory (RAM) available")),
            e
        }
        ,
        e
    }(n(216).ServerJobFailureDetector);
    e.OutOfMemoryDetector = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.applies = function(t) {
            return !!t.processingToolFailed() && (this.currentErrorMessage = this.gettextCatalog.getString("There was an error while running the processing tool") + " (" + t.status.toString() + ").",
            t.processingToolOutOfMemory() && (this.currentErrorMessage += " " + this.gettextCatalog.getString("Possible reason: out of memory.")),
            !0)
        }
        ,
        e.exitCodeSignifiesError = function(t) {
            return t > 0
        }
        ,
        e
    }(n(216).ServerJobFailureDetector);
    e.ProcessingToolFailureDetector = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.applies = function(t) {
            var e = t.errors.includes("Inconsistent data detected") && t.errors.includes("some points have color");
            return e && (this.currentErrorMessage = this.gettextCatalog.getString("A color inconsistency has been detected in the point cloud. Make sure all points are either colored or not colored. If not possible, split the scanning positions into two E57 files (one with color and one without) and upload each individually.")),
            e
        }
        ,
        e
    }(n(216).ServerJobFailureDetector);
    e.InconsistentScanDetector = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.applies = function(t) {
            var e = t.errors.includes("TooManyRunningJobsException");
            return e && (this.currentErrorMessage = this.gettextCatalog.getString("Maximum of concurrently running jobs exceeded. Please try again later.")),
            e
        }
        ,
        e
    }(n(216).ServerJobFailureDetector);
    e.TooManyRunningJobsDetector = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.applies = function(t) {
            var e = t.errors.includes("[ERROR] OutputFileMissing");
            return e && (this.currentErrorMessage = this.gettextCatalog.getString("The selected volume did not contain any points.")),
            e
        }
        ,
        e
    }(n(216).ServerJobFailureDetector);
    e.EmptyPointCloudDetector = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.applies = function(t) {
            var e = t.errors.includes("MapTilingUnsupportedException");
            return e && (this.currentErrorMessage = this.gettextCatalog.getString("The current maps aren't supported for download/upload. You can recreate them to enable it.")),
            e
        }
        ,
        e
    }(n(216).ServerJobFailureDetector);
    e.MapTilingUnsupportedDetector = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.datasetRegexp = /No normals for datasets in bundle: <\s*(.*?)\s*>/g,
            e
        }
        return r(e, t),
        e.prototype.applies = function(t) {
            var e = this.getExceptionShortName(t)
              , n = this.getExceptionMessage(t);
            if ("JobValidationException" !== e)
                return !1;
            if (n.includes("No normals for datasets in bundle")) {
                var i = this.datasetRegexp.exec(n);
                return this.currentErrorMessage = this.gettextCatalog.getString("Some datasets of the bundle do not have normals: {{datasetNames}}.", {
                    datasetNames: i[1]
                }),
                !0
            }
            return n.includes("No Site Model found for bundle") ? (this.currentErrorMessage = this.gettextCatalog.getString("No site model is present for the bundle."),
            !0) : !!n.includes("has no buildings with a floor") && (this.currentErrorMessage = this.gettextCatalog.getString("Some buildings of the bundle do not have floors."),
            !0)
        }
        ,
        e
    }(n(145).ServerExceptionClassDetector);
    e.ServerJobValidationException = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(7)
      , a = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.name = {},
            e.types = [],
            e
        }
        return r(e, t),
        e.prototype.copy = function(e, n) {
            return void 0 === n && (n = !1),
            t.prototype.fill.call(this, e),
            this.name = o.cloneDeep(e.name),
            this.types = o.clone(e.types),
            this
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.name = o.cloneDeep(e.name)
        }
        ,
        e.prototype.toData = function() {
            var e = {};
            return t.prototype.fillDto.call(this, e),
            e.name = o.cloneDeep(this.name),
            e
        }
        ,
        e
    }(n(198).SecureRepositoryObject);
    e.PoiTypeGroupEntity = a
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(7)
      , a = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.attributes = {},
            e.groups = [],
            e.primaryGroups = [],
            e
        }
        return r(e, t),
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.id = void 0 === e.id ? void 0 : e.id,
            this.username = e.username,
            this.locked = e.locked,
            this.provider = e.provider,
            this.firstName = e.first_name,
            this.lastName = e.last_name,
            this.email = e.email,
            this.defaultGroupRead = e.default_group_read,
            this.defaultGroupWrite = e.default_group_write,
            e.attributes && (this.attributes = o.clone(e.attributes)),
            e.groups && (this.groups = o.clone(e.groups)),
            e.primary_groups && (this.primaryGroups = o.clone(e.primary_groups))
        }
        ,
        e.prototype.toData = function() {
            var e = {};
            return t.prototype.fillDto.call(this, e),
            e.username = this.username,
            e.locked = this.locked,
            e.provider = this.provider,
            e.first_name = this.firstName,
            e.last_name = this.lastName,
            e.email = this.email,
            e.default_group_read = this.defaultGroupRead,
            e.default_group_write = this.defaultGroupWrite,
            e.attributes = o.clone(this.attributes),
            e.groups = o.clone(this.groups),
            e.primary_groups = o.clone(this.primaryGroups),
            e.password = this.password,
            e.new_password = this.passwordNew,
            e.password_expired = this.passwordExpired,
            e
        }
        ,
        e.prototype.copy = function(e, n) {
            return void 0 === n && (n = !1),
            t.prototype.fill.call(this, e),
            this.username = e.username,
            this.locked = e.locked,
            this.provider = e.provider,
            this.firstName = e.firstName,
            this.lastName = e.lastName,
            this.email = e.email,
            this.defaultGroupRead = e.defaultGroupRead,
            this.defaultGroupWrite = e.defaultGroupWrite,
            this.attributes = e.attributes ? o.clone(e.attributes) : {},
            this.groups = e.groups ? o.clone(e.groups) : [],
            this.primaryGroups = e.primaryGroups ? o.clone(e.primaryGroups) : [],
            n || (this.password = e.password,
            this.passwordNew = e.passwordNew,
            this.passwordExpired = e.passwordExpired),
            this
        }
        ,
        e.prototype.getDisplayName = function() {
            return this.firstName && this.lastName ? this.firstName + " " + this.lastName : this.username
        }
        ,
        e.prototype.checkAttribute = function(t) {
            return !!this.attributes && this.attributes[t]
        }
        ,
        e.prototype.isAdmin = function() {
            return this.groups.indexOf(e.ADMIN_GROUP_ID) > -1
        }
        ,
        e.prototype.isGuest = function() {
            return void 0 === this.id
        }
        ,
        e.ADMIN_GROUP_ID = 1,
        e
    }(n(102).RepositoryObject);
    e.UserEntity = a
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t() {}
        return t.prototype.fillFromData = function(t) {
            this.isCloudInstance = t.cloud_instance,
            this.isPrivate = t.private,
            this.isEmpty = t.empty,
            this.oauthLoginUrl = t.oauth_login_url,
            this.instanceName = t.instance_name
        }
        ,
        t
    }();
    e.InstanceInformationEntity = i
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.prepareValueForValidation = function(t) {
            var e = t.trim();
            return "" === e ? "{}" : e
        }
        ,
        e
    }(n(1037).JSONValidator);
    e.VectorMapStyleSheetValidator = o
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(1038)
      , r = function() {
        function t(t, e) {
            this.title = t,
            this.validationErrorPrefix = e
        }
        return t.prototype.validate = function(t) {
            var e = new i.ValidationResult;
            e.cleanedValue = this.prepareValueForValidation(t);
            try {
                JSON.parse(e.cleanedValue),
                e.valid = !0
            } catch (t) {
                e.valid = !1,
                e.reason = this.validationErrorPrefix + " " + t
            }
            return e
        }
        ,
        t.prototype.prepareValueForValidation = function(t) {
            return t.trim()
        }
        ,
        t
    }();
    e.JSONValidator = r
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {};
    e.ValidationResult = i
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(102)
      , a = n(7)
      , s = n(526)
      , c = n(375)
      , l = n(108)
      , u = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.resolveInjectables = function() {
            this.gettextCatalog = this.injectables.gettextCatalog
        }
        ,
        e.prototype.copy = function(e, n) {
            return void 0 === n && (n = !1),
            t.prototype.fill.call(this, e),
            this.licenseValid = e.licenseValid,
            this.subject = e.subject,
            this.licensableSquareMeters = e.licensableSquareMeters,
            this.area = e.area,
            this.features = a.clone(e.features),
            this.validFrom = e.validFrom ? new Date(e.validFrom.getTime()) : void 0,
            this.validTo = e.validTo ? new Date(e.validTo.getTime()) : void 0,
            this.maxUsersWithGroups = e.maxUsersWithGroups,
            this.currentUsersWithGroups = e.currentUsersWithGroups,
            this.maxLocations = e.maxLocations,
            this.currentLocations = e.currentLocations,
            this.isLicenseAreaExceeded = e.isLicenseAreaExceeded,
            this.isLicenseRegisteredUsersExceeded = e.isLicenseRegisteredUsersExceeded,
            this.isLicenseMaxLocationsExceeded = e.isLicenseMaxLocationsExceeded,
            this.isLicenseExpired = e.isLicenseExpired,
            this.isLicenseSignatureInvalid = e.isLicenseSignatureInvalid,
            this
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.licenseValid = e.license_valid,
            this.subject = e.subject,
            this.licensableSquareMeters = e.licensable_square_meters,
            this.area = e.area,
            this.features = c.LicenseFeatures.create(this.gettextCatalog, e.features),
            this.validFrom = e.valid_from ? s.DateUtilities.dateFromEpochSeconds(e.valid_from) : void 0,
            this.validTo = e.valid_to ? s.DateUtilities.dateFromEpochSeconds(e.valid_to) : void 0,
            this.maxUsersWithGroups = e.max_users_with_groups,
            this.currentUsersWithGroups = e.current_users_with_groups,
            this.maxLocations = e.max_locations,
            this.currentLocations = e.current_locations,
            this.isLicenseAreaExceeded = e.license_area_exceeded,
            this.isLicenseRegisteredUsersExceeded = e.license_registered_users_exceeded,
            this.isLicenseMaxLocationsExceeded = e.license_max_locations_exceeded,
            this.isLicenseExpired = e.license_expired,
            this.isLicenseSignatureInvalid = e.license_signature_invalid
        }
        ,
        e.prototype.toData = function() {
            throw new l.IVFrontendException("4dkankan cannot create a license.")
        }
        ,
        e
    }(o.RepositoryObject);
    e.LicenseInfoEntity = u
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(7)
      , a = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.name = {},
            e
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "selected", {
            get: function() {
                return this._selected
            },
            set: function(t) {
                this._selected = t,
                this.invalidate()
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "icon", {
            get: function() {
                return this._icon || n(527)
            },
            set: function(t) {
                this._icon = t
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.copy = function(e, n) {
            return void 0 === n && (n = !1),
            t.prototype.fill.call(this, e),
            this.name = o.cloneDeep(e.name),
            this._icon = e._icon,
            this.visibilityZoomMin = e.visibilityZoomMin,
            this.visibilityZoomMax = e.visibilityZoomMax,
            this.poiTypeGroup = e.poiTypeGroup,
            this.poiTypeGroupId = e.poiTypeGroupId,
            this._selected = e._selected,
            this
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.name = o.cloneDeep(e.name),
            this._icon = e.icon,
            this.visibilityZoomMin = e.visibility_zoom_min,
            this.visibilityZoomMax = e.visibility_zoom_max,
            this.poiTypeGroupId = e.poi_type_group_id,
            this.selected = !0
        }
        ,
        e.prototype.toData = function() {
            var e = {};
            return t.prototype.fillDto.call(this, e),
            e.name = o.cloneDeep(this.name),
            e.icon = this._icon,
            e.visibility_zoom_min = this.visibilityZoomMin,
            e.visibility_zoom_max = this.visibilityZoomMax,
            e.poi_type_group_id = this.poiTypeGroup.id,
            e
        }
        ,
        e
    }(n(102).RepositoryObject);
    e.PoiTypeEntity = a
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(376)
      , a = n(524)
      , s = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.security = new a.SecurityInfo,
            e
        }
        return r(e, t),
        e.prototype.fill = function(e, n) {
            void 0 === n && (n = !1),
            t.prototype.fill.call(this, e, n),
            this.security = e.security ? new a.SecurityInfo({
                can_write: e.security.canWrite,
                group_read: e.security.groupRead,
                group_write: e.security.groupWrite
            }) : void 0
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.security = e.security ? new a.SecurityInfo(e.security) : void 0
        }
        ,
        e.prototype.fillDto = function(e) {
            t.prototype.fillDto.call(this, e),
            e.security = {
                group_read: this.security.groupRead,
                group_write: this.security.groupWrite
            }
        }
        ,
        e.prototype.fillCurrentUsersGroups = function(t) {
            this.security.groupRead = t.getDefaultGroupRead(),
            this.security.groupWrite = t.getDefaultGroupWrite()
        }
        ,
        Object.defineProperty(e.prototype, "canWrite", {
            get: function() {
                return this.security.canWrite
            },
            enumerable: !0,
            configurable: !0
        }),
        e
    }(o.LocationEntity);
    e.SecureLocationEntity = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e
    }(n(102).RepositoryObject);
    e.TreeRepositoryObject = o
}
, function(t, e, n) {
    t.exports = n.p + "3621b0c6e36f04eaf95f6b735f7feb55.building_bg.svg"
}
, function(t, e, n) {
    t.exports = n.p + "33bcf1defb48efe47d3494b8d8515c4d.floor_bg.svg"
}
, function(t, e, n) {
    t.exports = n.p + "cd425ac6eb2c678de3aebc37ec7899f3.room_bg.svg"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(70)
      , a = n(7)
      , s = n(20)
      , c = function(t) {
        function e(e, n, i) {
            var r = t.call(this, e, n) || this;
            return r.DomainType = e,
            r.RestService = n,
            r.treeKey = i,
            r.flattenTreeKey = i,
            r
        }
        return r(e, t),
        e.prototype.removeLocal = function(t) {
            var e = this;
            this.deleteObjectFromDataMap(t),
            this.walkTree(t, (function(t) {
                return e.removeLocal(t)
            }
            )),
            this.synchronizeWithMap(),
            this.entityRemoved.emit(t, !1)
        }
        ,
        e.prototype.addChildrenIds = function(t, e, n) {
            this.walkTree(e, (function(e) {
                a.set(t, e.id, !0)
            }
            ), n)
        }
        ,
        e.prototype.updateData = function(t) {
            var e = this
              , n = this.flattenTree(t);
            return a.forEach(this.dataMap, (function(t) {
                a.has(n, t.id) || (e.deleteObjectFromDataMap(t),
                e.entityRemoved.emit(t, !1))
            }
            )),
            this.cacheEntities(t)
        }
        ,
        e.prototype.cacheEntities = function(t) {
            for (var e = [], n = {}, i = 0, r = t; i < r.length; i++) {
                var o = r[i];
                this.cacheSubTree(o, e),
                this.addChildrenIds(n, o, !1)
            }
            return this.synchronizeWithMap(),
            this.emitCreatedEvent(e),
            this.removeItemsByIds(e, n),
            e
        }
        ,
        e.prototype.synchronizeWithMap = function() {
            var t = this
              , e = {};
            a.forEach(this.dataMap, (function(n) {
                t.addChildrenIds(e, n, !1)
            }
            ));
            var n = a.values(this.dataMap);
            this.removeItemsByIds(n, e),
            s.replaceArray(this.data, n)
        }
        ,
        e.prototype.cacheSubTree = function(t, e) {
            for (var n = t, i = [], r = 0, o = n[this.flattenTreeKey]; r < o.length; r++) {
                var a = o[r];
                a.parent && this.dataMap[a.parent.id] && (a.parent = this.dataMap[a.parent.id]),
                i.push(this.cacheSubTree(a, e))
            }
            return n[this.flattenTreeKey] = i,
            this.cacheEntity(t, e)
        }
        ,
        e.prototype.removeItemsByIds = function(t, e) {
            a.remove(t, (function(t) {
                return a.has(e, t.id)
            }
            ))
        }
        ,
        e.prototype.walkTree = function(t, e, n) {
            void 0 === n && (n = !0);
            var i = t;
            if (this.flattenTreeKey && i[this.flattenTreeKey] && i[this.flattenTreeKey].length)
                for (var r = 0, o = i[this.flattenTreeKey]; r < o.length; r++) {
                    var a = o[r];
                    n && this.walkTree(a, e),
                    e(a)
                }
        }
        ,
        e.prototype.flattenTree = function(t) {
            for (var e = {}, n = 0, i = t; n < i.length; n++) {
                var r = i[n];
                this.flattenTreeNode(r, e)
            }
            return e
        }
        ,
        e.prototype.flattenTreeNode = function(t, e) {
            var n = this;
            e[t.id] = t,
            this.walkTree(t, (function(t) {
                return n.flattenTreeNode(t, e)
            }
            ))
        }
        ,
        e.prototype.deleteObjectFromDataMap = function(e) {
            var n = this;
            t.prototype.deleteObjectFromDataMap.call(this, e),
            a.forEach(this.dataMap, (function(t) {
                n.walkTree(t, (function(t) {
                    var i = t[n.flattenTreeKey];
                    a.remove(i, (function(t) {
                        return t === e
                    }
                    ))
                }
                ));
                var i = t[n.flattenTreeKey];
                a.remove(i, (function(t) {
                    return t === e
                }
                ))
            }
            ))
        }
        ,
        e
    }(o.RestRepository);
    e.TreeRestRepository = c
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t(t, e) {
            void 0 === e && (e = t),
            this.source = t,
            this.target = e
        }
        return t.prototype.getInverse = function() {
            return new t(this.target,this.source)
        }
        ,
        t.prototype.transform = function(t) {
            return t
        }
        ,
        t.prototype.transformQuaternion = function(t) {
            return t
        }
        ,
        t
    }();
    e.IdentityTransform = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(533)
      , r = n(531)
      , o = function() {
        function t(t, e) {
            var n;
            this.transforms = [],
            this.referenceSystems = new Set,
            e && ((n = this.transforms).push.apply(n, e.transforms),
            this.referenceSystems = new Set(e.referenceSystems)),
            this.transforms.push(t),
            this.referenceSystems.add(t.source),
            this.referenceSystems.add(t.target)
        }
        return Object.defineProperty(t.prototype, "target", {
            get: function() {
                return this.transforms[this.transforms.length - 1].target
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.contains = function(t) {
            return this.referenceSystems.has(t)
        }
        ,
        t.prototype.createGeodeticTransforms = function(t, e) {
            var n = []
              , i = this.transforms[0];
            t.geodetic && t !== i.source && n.push(new r.GeodeticTransform(t,i.source)),
            n.push(i);
            for (var o = 1; o < this.transforms.length; ++o) {
                var a = i;
                i = this.transforms[o],
                a.target.geodetic && i.source.geodetic && a.target !== i.source && n.push(new r.GeodeticTransform(a.target,i.source)),
                n.push(i)
            }
            e.geodetic && e !== i.target && n.push(new r.GeodeticTransform(i.target,e)),
            this.transforms = n
        }
        ,
        t.prototype.getTransformationChain = function() {
            return new i.TransformChain(this.transforms)
        }
        ,
        t
    }();
    e.CandidateChain = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e(e) {
            var n = t.call(this) || this;
            return n.repository = e,
            n
        }
        return r(e, t),
        e.prototype.perform = function() {
            this.action(),
            this.emit()
        }
        ,
        e
    }(n(16).Signal);
    e.RepositoryAction = o
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(1051)
      , r = function() {
        function t(t) {
            this.SiteModelRepository = t,
            this.siteModelErrors = []
        }
        return t.prototype.fillFromData = function(t) {
            for (var e = 0, n = t.site_model_error_list; e < n.length; e++) {
                var r = n[e]
                  , o = new i.SiteModelError(this.SiteModelRepository);
                o.fillFromData(r),
                this.siteModelErrors.push(o)
            }
        }
        ,
        t
    }();
    e.SiteModelErrorReport = r
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(179)
      , r = n(1052)
      , o = n(1053)
      , a = n(1054)
      , s = n(1055)
      , c = n(1056)
      , l = n(1057)
      , u = function() {
        function t(t) {
            this.SiteModelRepository = t,
            this.violations = []
        }
        return t.prototype.fillFromData = function(t) {
            var e = this.SiteModelRepository.create();
            e.fillFromData(t.affected_entity),
            this.affectedEntity = e;
            for (var n = 0, i = t.violations; n < i.length; n++) {
                var r = i[n]
                  , o = this.convertFromDto(r);
                this.violations.push(o)
            }
            this.hierarchyNames = t.hierarchy_names
        }
        ,
        t.prototype.convertFromDto = function(t) {
            var e;
            switch (t.type) {
            case i.ViolationType.CHILD_NOT_CONTAINED_IN_PARENT_ENTITY:
                (e = new r.ChildNotContainedInParentEntity(this.SiteModelRepository)).fillFromData(t);
                break;
            case i.ViolationType.FREE_SPACE_NAVIGATION_AREA_WITH_CHILDREN:
                (e = new o.FreeSpaceNavigationWithChildren(this.SiteModelRepository)).fillFromData(t);
                break;
            case i.ViolationType.HEIGHT_NOT_CONTAINED_IN_PARENT:
                (e = new a.HeightNotContainedInParent(this.SiteModelRepository)).fillFromData(t);
                break;
            case i.ViolationType.INCORRECT_HIERARCHY_TYPE:
                (e = new s.IncorrectHierarchyType(this.SiteModelRepository)).fillFromData(t);
                break;
            case i.ViolationType.INVALID_GEOMETRY:
                (e = new c.GeometryInvalidError(this.SiteModelRepository)).fillFromData(t);
                break;
            case i.ViolationType.OVERLAPPING_VOLUMES:
                (e = new l.VolumesOverlappingError(this.SiteModelRepository)).fillFromData(t);
                break;
            default:
                console.log("Element is not of a known type, skipping...")
            }
            return e
        }
        ,
        t
    }();
    e.SiteModelError = u
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e(e) {
            var n = t.call(this) || this;
            return n.SiteModelRepository = e,
            n
        }
        return r(e, t),
        e
    }(n(179).SiteModelViolation);
    e.ChildNotContainedInParentEntity = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e(e) {
            var n = t.call(this) || this;
            return n.SiteModelRepository = e,
            n
        }
        return r(e, t),
        e
    }(n(179).SiteModelViolation);
    e.FreeSpaceNavigationWithChildren = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e(e) {
            var n = t.call(this) || this;
            return n.SiteModelRepository = e,
            n
        }
        return r(e, t),
        e
    }(n(179).SiteModelViolation);
    e.HeightNotContainedInParent = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e(e) {
            var n = t.call(this) || this;
            return n.SiteModelRepository = e,
            n
        }
        return r(e, t),
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.acceptedTypes = e.accepted_types
        }
        ,
        e
    }(n(179).SiteModelViolation);
    e.IncorrectHierarchyType = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e(e) {
            var n = t.call(this) || this;
            return n.SiteModelRepository = e,
            n
        }
        return r(e, t),
        e
    }(n(179).SiteModelViolation);
    e.GeometryInvalidError = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e(e) {
            var n = t.call(this) || this;
            return n.SiteModelRepository = e,
            n
        }
        return r(e, t),
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e);
            var n = this.SiteModelRepository.create();
            n.fillFromData(e.overlapping_entity),
            this.overlappingEntity = n
        }
        ,
        e
    }(n(179).SiteModelViolation);
    e.VolumesOverlappingError = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(254)
      , a = n(344)
      , s = n(96)
      , c = n(4)
      , l = {
        directory: "img/",
        filename: "gridmap_fallback.svg",
        res: .02,
        orientation: 0,
        size: new c.Vector2(500,500),
        origin: new c.Vector2(-5,-5)
    }
      , u = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.pcObj_ = void 0,
            e.locked = !0,
            e
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "pointCloudVisible", {
            get: function() {
                return this._pointCloudVisible
            },
            set: function(t) {
                this._pointCloudVisible !== t && (this._pointCloudVisible = t,
                this.invalidate())
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.copy = function(e, n) {
            return void 0 === n && (n = !1),
            t.prototype.fill.call(this, e),
            n || (this.locked = e.locked,
            this.pointCloudVisible = e.pointCloudVisible),
            this
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.makeMatrix(),
            this.color = a.ColorUtilities.validateColorString(this.color)
        }
        ,
        e.prototype.onReferenceSystemChangedEvent = function() {
            t.prototype.onReferenceSystemChangedEvent.call(this),
            this.makeMatrix()
        }
        ,
        e.prototype.getDirectory = function() {
            return "data/" + this.name + "/"
        }
        ,
        e.prototype.getOctreeDirectory = function() {
            return this.getDirectory() + "ooc/"
        }
        ,
        e.prototype.getOctreeConfigFilename = function() {
            return this.getOctreeDirectory() + "ooc_config.js"
        }
        ,
        e.prototype.getOctreeDataFilename = function() {
            return this.getOctreeDirectory() + "ooc_data.dat"
        }
        ,
        e.prototype.getPotreeConfigFilename = function() {
            return "data/" + this.name + "/webcloud/cloud.js"
        }
        ,
        e.prototype.getMeshConfigFilename = function(t) {
            return void 0 === t && (t = "mesh.gltf"),
            "data/" + this.name + "/webmesh/" + t
        }
        ,
        e.prototype.isGridmapAvailable = function() {
            return !!this.gridmapFilename
        }
        ,
        e.prototype.getGridmapDir = function() {
            return this.isGridmapAvailable() ? this.getDirectory() : l.directory
        }
        ,
        e.prototype.getGridmapFilename = function() {
            return this.isGridmapAvailable() ? this.gridmapFilename : l.filename
        }
        ,
        e.prototype.getGridmapRes = function() {
            return this.isGridmapAvailable() ? this.gridmapRes : l.res
        }
        ,
        e.prototype.getGridmapOrientation = function() {
            return this.isGridmapAvailable() ? this.gridmapOrientation : l.orientation
        }
        ,
        e.prototype.getGridmapSize = function() {
            return this.isGridmapAvailable() ? this.gridmapSize : this.getGridmapFallbackSize()
        }
        ,
        e.prototype.getGridmapOrigin = function() {
            return this.isGridmapAvailable() ? this.gridmapOrigin : this.getGridmapFallbackOrigin()
        }
        ,
        e.prototype.getBoundingBoxMin = function() {
            return this.boundingBoxMin
        }
        ,
        e.prototype.getBoundingBoxMax = function() {
            return this.boundingBoxMax
        }
        ,
        e.prototype.getPointCloudType = function() {
            return this.pointCloudType
        }
        ,
        e.prototype.getPointCloudObject = function() {
            return this.pcObj_ || (this.pcObj_ = {}),
            this.pcObj_
        }
        ,
        e.prototype.local2dataset = function(t) {
            return t.applyMatrix4(this.m2wInv_),
            t
        }
        ,
        e.prototype.dataset2local = function(t) {
            return t.applyMatrix4(this.m2w_),
            t
        }
        ,
        e.prototype.dataset2localdir = function(t) {
            return t.applyMatrix4(this.m2w_),
            t.x -= this.m2w_.elements[12],
            t.y -= this.m2w_.elements[13],
            t.z -= this.m2w_.elements[14],
            t
        }
        ,
        e.prototype.local2datasetdir = function(t) {
            return t.applyMatrix4(this.m2wInv_),
            t.x -= this.m2wInv_.elements[12],
            t.y -= this.m2wInv_.elements[13],
            t.z -= this.m2wInv_.elements[14],
            t
        }
        ,
        e.prototype.getState = function() {
            return this.m2w_.clone()
        }
        ,
        e.prototype.updatePose = function() {
            var t = this.getPointCloudObject();
            t.pointCloudParticleSystemGroup && (t.pointCloudParticleSystemGroup.matrixWorldNeedsUpdate = !0),
            this.pointCloudSceneNode && this.pointCloudSceneNode.updateMatrixWorld(!0)
        }
        ,
        e.prototype.setState = function(t) {
            this.m2w_.copy(t),
            this.m2wInv_ = (new c.Matrix4).getInverse(this.m2w_),
            this.updatePose()
        }
        ,
        e.prototype.getGlobalState = function() {
            var t = this.m2w_;
            return {
                pos: s.VectorFactory.toArray(this.globalLocation),
                orientation: Math.atan2(t.elements[1], t.elements[0])
            }
        }
        ,
        e.prototype.updateLocationsFromMatrix = function() {
            this.location.set(this.m2w_.elements[12], this.m2w_.elements[13], this.m2w_.elements[14]),
            this.globalLocation = this.GeoTransformationService.vectorToGlobal(this.location),
            this.orientation = Math.atan2(this.m2w_.elements[1], this.m2w_.elements[0])
        }
        ,
        e.prototype.getCenter = function() {
            var t = new c.Vector3
              , e = this.getBoundingBoxMin()
              , n = this.getBoundingBoxMax();
            return e && n && t.addVectors(e, n).divideScalar(2),
            this.dataset2local(t)
        }
        ,
        e.prototype.getCenterGlobal = function() {
            var t = this.GeoTransformationService.vectorToGlobal(this.getCenter());
            return s.VectorFactory.toArray(t)
        }
        ,
        e.prototype.getLocalBoundingBox = function() {
            var t = this.boundingBoxMin
              , e = this.boundingBoxMax
              , n = new c.Box3;
            return n.expandByPoint(this.dataset2local(new c.Vector3(t.x,t.y,t.z))),
            n.expandByPoint(this.dataset2local(new c.Vector3(t.x,t.y,e.z))),
            n.expandByPoint(this.dataset2local(new c.Vector3(t.x,e.y,t.z))),
            n.expandByPoint(this.dataset2local(new c.Vector3(t.x,e.y,e.z))),
            n.expandByPoint(this.dataset2local(new c.Vector3(e.x,t.y,t.z))),
            n.expandByPoint(this.dataset2local(new c.Vector3(e.x,t.y,e.z))),
            n.expandByPoint(this.dataset2local(new c.Vector3(e.x,e.y,t.z))),
            n.expandByPoint(this.dataset2local(new c.Vector3(e.x,e.y,e.z))),
            n
        }
        ,
        e.prototype.distanceToBoundingBox = function(t) {
            var e = this.local2dataset(t.clone());
            return this.getBoundingBox().distanceToPoint(e)
        }
        ,
        e.prototype.withinBoundingBox = function(t) {
            var e = this.local2dataset(t.clone());
            return this.getBoundingBox().containsPoint(e)
        }
        ,
        e.prototype.makeMatrix = function() {
            var t = new c.Matrix4;
            t.identity().makeRotationZ(this.orientation).setPosition(this.location),
            this.m2w_ ? (this.m2w_.copy(t),
            this.m2wInv_.getInverse(t)) : (this.m2w_ = t,
            this.m2wInv_ = (new c.Matrix4).getInverse(t))
        }
        ,
        e.prototype.getBoundingBox = function() {
            var t = new c.Box3
              , e = this.getBoundingBoxMin()
              , n = this.getBoundingBoxMax();
            return e && n && t.set(e, n),
            t
        }
        ,
        e.prototype.getGridmapFallbackSize = function() {
            var t = this.getBoundingBoxMin()
              , e = this.getBoundingBoxMax();
            if (t && e) {
                var n = (e.x - t.x) / this.getGridmapRes()
                  , i = (e.y - t.y) / this.getGridmapRes();
                return new c.Vector2(n,i)
            }
            return l.size
        }
        ,
        e.prototype.getGridmapFallbackOrigin = function() {
            var t = this.getBoundingBoxMin()
              , e = this.getBoundingBoxMax();
            if (t && e) {
                var n = -(e.x - t.x) / this.getGridmapRes() / 100
                  , i = -(e.y - t.y) / this.getGridmapRes() / 100;
                return new c.Vector2(n,i)
            }
            return l.origin
        }
        ,
        e
    }(o.DatasetEntity);
    e.Dataset = u
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(55)
      , r = function() {
        function t() {}
        return t.compare = function(t, e) {
            return t === e ? 0 : t === i.SiteModelType.CUSTOM || t === i.SiteModelType.ROOM ? -1 : e === i.SiteModelType.CUSTOM || e === i.SiteModelType.ROOM ? 1 : t === i.SiteModelType.FLOOR ? -1 : e === i.SiteModelType.FLOOR ? 1 : t === i.SiteModelType.BUILDING ? -1 : e === i.SiteModelType.BUILDING ? 1 : t === i.SiteModelType.FREE_SPACE_NAVIGATION ? -1 : 1
        }
        ,
        t
    }();
    e.SiteModelTypeUtil = r
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "displayName", {
            get: function() {
                return this.name ? this.name + " (" + this.id + ")" : this.id.toString()
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.copy = function(e, n) {
            return void 0 === n && (n = !1),
            t.prototype.fill.call(this, e),
            this.serial = e.serial,
            this.name = e.name,
            this.file = e.file,
            this
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.serial = e.serial,
            this.name = e.name
        }
        ,
        e.prototype.toData = function() {
            var t = {};
            return this.fillDto(t),
            t.serial = this.serial,
            t.name = this.name,
            t
        }
        ,
        e
    }(n(198).SecureRepositoryObject);
    e.BundleEntity = o
}
, function(t, e) {
    /*!
 * Determine if an object is a Buffer
 *
 * @author   Feross Aboukhadijeh <https://feross.org>
 * @license  MIT
 */
    t.exports = function(t) {
        return null != t && null != t.constructor && "function" == typeof t.constructor.isBuffer && t.constructor.isBuffer(t)
    }
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        var i = this && this.__awaiter || function(t, e, n, i) {
            return new (n || (n = Promise))((function(r, o) {
                function a(t) {
                    try {
                        c(i.next(t))
                    } catch (t) {
                        o(t)
                    }
                }
                function s(t) {
                    try {
                        c(i.throw(t))
                    } catch (t) {
                        o(t)
                    }
                }
                function c(t) {
                    var e;
                    t.done ? r(t.value) : (e = t.value,
                    e instanceof n ? e : new n((function(t) {
                        t(e)
                    }
                    ))).then(a, s)
                }
                c((i = i.apply(t, e || [])).next())
            }
            ))
        }
          , r = this && this.__generator || function(t, e) {
            var n, i, r, o, a = {
                label: 0,
                sent: function() {
                    if (1 & r[0])
                        throw r[1];
                    return r[1]
                },
                trys: [],
                ops: []
            };
            return o = {
                next: s(0),
                throw: s(1),
                return: s(2)
            },
            "function" == typeof Symbol && (o[Symbol.iterator] = function() {
                return this
            }
            ),
            o;
            function s(o) {
                return function(s) {
                    return function(o) {
                        if (n)
                            throw new TypeError("Generator is already executing.");
                        for (; a; )
                            try {
                                if (n = 1,
                                i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                                0) : i.next) && !(r = r.call(i, o[1])).done)
                                    return r;
                                switch (i = 0,
                                r && (o = [2 & o[0], r.value]),
                                o[0]) {
                                case 0:
                                case 1:
                                    r = o;
                                    break;
                                case 4:
                                    return a.label++,
                                    {
                                        value: o[1],
                                        done: !1
                                    };
                                case 5:
                                    a.label++,
                                    i = o[1],
                                    o = [0];
                                    continue;
                                case 7:
                                    o = a.ops.pop(),
                                    a.trys.pop();
                                    continue;
                                default:
                                    if (!(r = a.trys,
                                    (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                        a = 0;
                                        continue
                                    }
                                    if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                        a.label = o[1];
                                        break
                                    }
                                    if (6 === o[0] && a.label < r[1]) {
                                        a.label = r[1],
                                        r = o;
                                        break
                                    }
                                    if (r && a.label < r[2]) {
                                        a.label = r[2],
                                        a.ops.push(o);
                                        break
                                    }
                                    r[2] && a.ops.pop(),
                                    a.trys.pop();
                                    continue
                                }
                                o = e.call(t, a)
                            } catch (t) {
                                o = [6, t],
                                i = 0
                            } finally {
                                n = r = 0
                            }
                        if (5 & o[0])
                            throw o[1];
                        return {
                            value: o[0] ? o[1] : void 0,
                            done: !0
                        }
                    }([o, s])
                }
            }
        }
        ;
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var o = n(2)
          , a = n(20)
          , s = n(40)
          , c = n(537)
          , l = n(124)
          , u = n(92)
          , d = n(25)
          , p = n(4)
          , h = n(136)
          , f = n(24)
          , m = n(107)
          , g = n(96)
          , v = n(55)
          , y = n(230)
          , b = n(1063)
          , w = n(255)
          , S = n(8)
          , x = n(252)
          , M = n(14)
          , E = n(57)
          , C = n(1064)
          , A = n(626)
          , T = n(81)
          , O = n(638)
          , _ = function() {
            function e(t, e) {
                void 0 === t && (t = {}),
                this.params = t,
                this.factory = e,
                this.bootstrap = !0,
                this.movingToPoi = !1,
                this.movingToSme = !1,
                this.reinitializing = !1,
                this.splashScreen = document.getElementById("splash-screen"),
                this.init()
            }
            return e.prototype.isMovingToPoi = function() {
                return this.movingToPoi
            }
            ,
            e.prototype.setSceneRendering = function(t, e) {
                ("panorama" === t ? this.factory.ViewService.mainView : this.factory.ViewService.mapView).active = e
            }
            ,
            e.prototype.initDataFinally = function() {
                var t = this;
                this.factory.AuthenticationService.dataAccessible ? this.hideSplashScreen() : (this.showSplashScreen(),
                this.setSplashSpinner(!1)),
                this.hideProgressDialog(),
                this.factory.SidebarMenuService.itemsVisibilityUpdated.emit(),
                this.reinitializing || (this.params.onLoadComplete && this.params.onLoadComplete(),
                this.factory.LegacyService.triggerEvent("loadComplete")),
                this.reinitializing = !1,
                this.factory.AuthenticationService.dataLoadCompleted.emit(!0),
                window.setTimeout((function() {
                    return t.loadSecondaryFonts()
                }
                ), 3e3)
            }
            ,
            e.prototype.initData = function(t) {
                var e = this;
                void 0 === t && (t = !1);
                var n = this.factory.AuthenticationService.initialize().then((function() {
                    return e.checkForRouteParameters()
                }
                )).then((function() {
                    return e.factory.AuthenticationService.isDataAccessible()
                }
                )).then((function(t) {
                    return t ? Promise.resolve() : Promise.reject("No data to load")
                }
                )).then((function() {
                    return Promise.all([e.factory.DatasetRepository.findAll(!0), e.factory.BundleRepository.findAll(), e.factory.AffineRefSysRepository.findAll()])
                }
                )).then((function() {
                    return e.factory.VectorMapService.fetch()
                }
                )).then((function() {
                    if (!e.factory.GeoTransformationService.isInitialized())
                        return Promise.reject("No data available")
                }
                )).then((function() {
                    return e.factory.PoiTypeService.initialize(),
                    e.factory.ConfigService.fetch(),
                    Promise.all([e.factory.SiteModelRepository.get(!0), e.factory.CameraHeadRepository.findAll(), e.factory.LanguageService.initialized, e.factory.ConfigService.initialized, e.factory.PoiTypeService.initialized])
                }
                )).then((function() {
                    return e.initConfigData(),
                    e.moveToStartingLoc(!0, t)
                }
                ));
                m.promiseFinally(n, (function() {
                    return e.initDataFinally()
                }
                )).catch(S.handleWarning)
            }
            ,
            e.prototype.checkForRouteParameters = function() {
                return i(this, void 0, void 0, (function() {
                    var t;
                    return r(this, (function(e) {
                        switch (e.label) {
                        case 0:
                            return t = this.factory.$location.search(),
                            O.UrlRouteParameter.PROCESSING_TASKS in t ? [4, this.handleProcessingTaskRouteParameter()] : [3, 2];
                        case 1:
                            e.sent() && this.factory.UrlService.removeParamFromUrl(O.UrlRouteParameter.PROCESSING_TASKS),
                            e.label = 2;
                        case 2:
                            return [2]
                        }
                    }
                    ))
                }
                ))
            }
            ,
            e.prototype.handleProcessingTaskRouteParameter = function() {
                return i(this, void 0, void 0, (function() {
                    var t;
                    return r(this, (function(e) {
                        switch (e.label) {
                        case 0:
                            return [4, this.factory.InstanceInformationService.getInformation()];
                        case 1:
                            return t = e.sent(),
                            this.factory.UserService.userInfo.isGuest() && t.isPrivate ? [2, !1] : this.factory.UserService.userInfo.isGuest() && !t.isPrivate ? (this.factory.AuthenticationService.showLoginScreenModal.emit(),
                            [2, !1]) : this.factory.UserService.userInfo.isGuest() || this.factory.UserService.userInfo.isAdmin() ? (this.factory.SidebarMenuService.isMenuHidden = !1,
                            [4, this.factory.SidebarMenuService.goToItem(this.factory.SidebarMenuService.getItem(T.SidebarMenuItemsKey.CLOUD_PROCESSING)).catch(S.handleWarning)]) : (this.factory.MessageReportingService.showMessage(this.factory.gettextCatalog.getString("Permission denied"), this.factory.gettextCatalog.getString("You do not have sufficient permissions to access this page.")),
                            [2, !0]);
                        case 2:
                            return e.sent(),
                            [4, this.factory.SidebarMenuService.goToItem(this.factory.SidebarMenuService.getItem(T.SidebarMenuItemsKey.CLOUD_PROCESSING_PROCESSING_TASKS)).catch(S.handleWarning)];
                        case 3:
                            return e.sent(),
                            [2, !0]
                        }
                    }
                    ))
                }
                ))
            }
            ,
            e.prototype.initConfigData = function() {
                if (s.isMobileLayout()) {
                    if (!this.factory.$location.search().image || !this.factory.ViewService.canSwapViews()) {
                        var t = "panorama" === this.factory.ConfigService.getString(d.Configs.CORE_INIT_VIEW_MOBILE) ? w.ViewType.PANORAMA : w.ViewType.MAP;
                        this.factory.ViewService.setPrimaryView(t)
                    }
                    if (this.factory.$location.search().image || "panorama" === this.factory.ConfigService.getString(d.Configs.CORE_INIT_VIEW_MOBILE))
                        this.getMapView().getCameraFOVLayer().visibleOnMobile = !0
                } else {
                    var e = "panorama" === this.factory.ConfigService.getString(d.Configs.CORE_INIT_VIEW) ? w.ViewType.PANORAMA : w.ViewType.MAP;
                    this.factory.ViewService.setPrimaryView(e)
                }
                this.factory.TrackingService.trackSessionStart(this.factory.ViewMenuService.config.showPanoramas, this.factory.PointCloudMenuService.config.showPointCloud)
            }
            ,
            e.prototype.init = function() {
                var e = this;
                if (!o.element(".main-view").length)
                    return console.log("Postponing start"),
                    void window.setTimeout((function() {
                        return e.init()
                    }
                    ), 200);
                this.splashScreen || (this.modalTask = this.factory.ProgressReportService.addTask("", 1, !0, !0)),
                window.addEventListener("beforeunload", (function(t) {
                    if (e.factory.ModeService.isDatasetAlignmentMode() || e.factory.ModeService.isSiteModelEditorMode())
                        return t && (t.returnValue = e.factory.gettextCatalog.getString("Do you want to navigate away from the current page?")),
                        e.factory.gettextCatalog.getString("Do you want to navigate away from the current page?")
                }
                )),
                this.factory.ConfigService.setLocalDefaults(this.params),
                this.factory.UrlService.preventNextChange();
                var n = this.factory.UrlService.getParamFromUrl(this.factory.AuthenticationService.OAUTH_ERROR_QUERY_PARAM);
                n && (this.factory.MessageReportingService.showMessage(this.factory.gettextCatalog.getString("Error while performing login with OAuth"), n),
                this.factory.UrlService.removeParamFromUrl(this.factory.AuthenticationService.OAUTH_ERROR_QUERY_PARAM));
                var i = this.factory.UrlService.getParamFromUrl(this.factory.JWTTokenService.TOKEN_QUERY_PARAM);
                i ? (this.factory.UrlService.removeParamFromUrl(this.factory.JWTTokenService.TOKEN_QUERY_PARAM),
                m.promiseFinally(this.factory.AuthenticationService.loginWithTokenInternal(i), (function() {
                    return e.initData()
                }
                )).catch(S.handleWarning)) : this.params.loginToken ? (this.factory.AuthenticationService.markAsLoggedInWithToken(),
                m.promiseFinally(this.factory.AuthenticationService.loginWithTokenInternal(this.params.loginToken, !1, !1), (function() {
                    return e.initData()
                }
                )).catch(S.handleWarning)) : this.initData(),
                this.factory.ViewService.mainViewDeferred.promise.catch((function(n) {
                    if (!(n instanceof c.WebGlFailedException))
                        throw n;
                    e.params.onWebGlFailed && e.params.onWebGlFailed(),
                    e.factory.LegacyService.triggerEvent("webGlFailed"),
                    t("#webGlMissing").show()
                }
                )),
                this.factory.UrlService.setUserLocationChangeCallback((function() {
                    e.factory.ModeService.isNormalMode() && (e.factory.ConfigService.updateFromURL(),
                    e.moveToStartingLoc().catch(S.handleWarning))
                }
                )),
                this.factory.PointCloudMenuService.configShowPointCloudChanged.connect((function(t) {
                    t && (e.factory.ModeService.isNormalMode() || e.factory.ModeService.isMeasurementsMode()) && e.factory.DatasetRepository.data.forEach((function(t) {
                        e.checkInactiveDatasetNearby(t, e.factory.ViewService.mainView.getCamera().position) && (t.pointCloudVisible = !0,
                        a.invalidateAngular())
                    }
                    ))
                }
                )),
                this.factory.AuthenticationService.onAuthenticationChanged.connect((function() {
                    e.setSplashSpinner(!0),
                    e.reinit()
                }
                ))
            }
            ,
            e.prototype.reinit = function() {
                this.reinitializing || (this.reinitializing = !0,
                this.factory.LicenseService.initialize(!0).catch(S.handleWarning),
                this.factory.ConfigService.fetch(!0),
                this.factory.VectorMapService.fetch().catch(S.handleWarning),
                this.factory.TiledMapRepository.resetCache(),
                this.factory.BundleRepository.resetCache(),
                this.factory.PoiRepository.resetCache(),
                this.factory.ImageRepository.resetCache(),
                this.factory.DatasetRepository.resetCache(),
                this.factory.SiteModelRepository.resetCache(),
                this.factory.AffineRefSysRepository.resetCache(),
                this.factory.MeasurementRepository.resetCache(),
                this.factory.UserService.isAdmin() ? this.factory.ViewMenuService.config.showNavGraph && (this.factory.NavGraphService.clear(),
                this.factory.NavGraphService.fetch().catch(S.handleWarning)) : (this.factory.NavGraphService.clear(),
                this.factory.ViewMenuService.showNavGraph(!1)),
                this.factory.ModeService.isNormalMode() || this.factory.ModeSwitchService.switchToMode(f.ModeState.NORMAL).catch(S.handleWarning),
                this.factory.PoiService.clearRouting(),
                this.modalTask && this.modalTask.itemDone(),
                this.modalTask = this.factory.ProgressReportService.addTask("", 1, !1, !1),
                this.factory.PointCloudMenuService.pointCloudsClearEvent.emit(),
                this.initData(!0))
            }
            ,
            e.prototype.moveToPoiId = function(t, e, n, i, r) {
                var o = this;
                return void 0 === r && (r = !1),
                this.factory.PoiRepository.findOne(t).then((function(t) {
                    return o.moveToPoi(t, e, n, i)
                }
                )).catch((function() {
                    return r || o.factory.MessageReportingService.showMessage(o.factory.gettextCatalog.getString("POI with ID {{id}} Not Found", {
                        id: t
                    }, "title"), o.factory.gettextCatalog.getString("Requested POI could not be found, moving to the first image instead.")),
                    o.moveToImageId()
                }
                ))
            }
            ,
            e.prototype.moveToPoi = function(t, n, i, r) {
                var o = this;
                if (this.factory.RouteService.storeCurrentView(),
                this.poiToMoveTo === t && this.poiPromise)
                    return this.poiPromise;
                this.movingToPoi = !0,
                this.poiToMoveTo = t,
                n || this.factory.PoiService.openAndHighlight(t);
                var s, c = function() {
                    o.movingToPoi = !1,
                    o.poiToMoveTo = void 0,
                    o.poiPromise = void 0,
                    t.id ? o.factory.UrlService.updateUrl({
                        poi: t.id.toString()
                    }) : o.factory.UrlService.updateUrl({
                        poi: g.VectorFactory.toString(t.globalLocation)
                    }),
                    a.invalidateAngular()
                };
                return void 0 === t.pov ? (this.poiPromise = m.promiseFinally(this.moveToGeoLocation(t.globalLocation, !1, i, void 0, r), c),
                this.poiPromise) : (s = this.factory.PointCloudMenuService.isCloudVisible() ? this.moveToGeoLocation(t.pov.location, !1, x.QuaternionFactory.toLonLat(t.pov.orientation), void 0, t.pov.fov, void 0, !0) : t.pov.imageId ? this.moveToImageId(t.pov.imageId, x.QuaternionFactory.toLonLat(t.pov.orientation), t.pov.fov) : this.factory.ImageService.getClosestImageGlobal(t.pov.location, e.IMAGE_LOCATION_TOLERANCE).then((function(e) {
                    return o.moveToImage(e, x.QuaternionFactory.toLonLat(t.pov.orientation), void 0, t.pov.fov)
                }
                )).catch((function() {
                    return o.moveToGeoLocation(t.globalLocation, !1, x.QuaternionFactory.toLonLat(t.pov.orientation), void 0, t.pov.fov)
                }
                )),
                this.poiPromise = m.promiseFinally(s, c),
                this.poiPromise)
            }
            ,
            e.prototype.moveToSiteModelEntity = function(t, e, n) {
                var i = this;
                this.factory.RouteService.storeCurrentView(),
                this.movingToSme = !0,
                this.smeToMoveTo = t,
                n = n || this.factory.ViewService.mainView.getViewDir();
                var r = t.globalCenter;
                return r ? m.promiseFinally(this.factory.ImageService.getClosestImageGlobal(r, void 0, [t]).then((function(t) {
                    return i.moveToImage(t, n)
                }
                )).catch((function() {
                    return i.factory.PointCloudMenuService.isCloudVisible() ? i.moveToGeoLocation(r, !1, n) : Promise.reject(void 0)
                }
                )).then((function() {
                    i.factory.UrlService.updateUrl({
                        sme: t.id.toString()
                    })
                }
                )), (function() {
                    e && i.factory.SiteModelService.selectModel(t),
                    i.movingToSme = !1,
                    i.smeToMoveTo = void 0
                }
                )) : Promise.reject()
            }
            ,
            e.prototype.moveToSiteModelEntityId = function(t, e, n) {
                var i = this;
                return this.factory.SiteModelRepository.findOne(t).then((function(t) {
                    return i.moveToSiteModelEntity(t, e, n)
                }
                )).catch((function() {
                    return i.factory.MessageReportingService.showMessage(i.factory.gettextCatalog.getString("No Suitable Location Found", void 0, "title"), i.factory.gettextCatalog.getString("Could not move to the requested Site Model Entity, moving to the first image instead.")),
                    i.moveToImageId()
                }
                ))
            }
            ,
            e.prototype.checkAndFixOffset = function(t, e) {
                M.GeoTransformationService.RELOCATE_LOCAL_SYSTEM_THRESHOLD < t.length() && this.anyDatasetNearPoint(t, 100) && (this.factory.GeoTransformationService.setOffsetFromGlobal(e),
                t.set(0, 0, 0))
            }
            ,
            e.prototype.showSplashScreen = function(t) {
                void 0 === t && (t = !0),
                this.splashScreen && (this.splashScreen.style.visibility = "visible",
                this.splashScreen.style.opacity = "1")
            }
            ,
            e.prototype.setSplashSpinner = function(t) {
                this.splashScreen && (this.splashScreen.querySelector("img").style.display = t ? "block" : "none")
            }
            ,
            e.prototype.hideSplashScreen = function() {
                this.splashScreen && (this.splashScreen.style.visibility = "hidden",
                this.splashScreen.style.opacity = "0")
            }
            ,
            e.prototype.hideProgressDialog = function() {
                this.modalTask && this.modalTask.itemDone(),
                document.getElementById("modal-cover").style.visibility = "hidden"
            }
            ,
            e.prototype.loadSecondaryFonts = function() {
                y.runWithBaseHref((function() {
                    return n.e(8).then(function() {
                        n(1679)
                    }
                    .bind(null, n)).catch((function(t) {
                        return console.error("Failed to load fonts", t)
                    }
                    ))
                }
                ))
            }
            ,
            e.prototype.route = function(t, e, n) {
                var i = this;
                return this.factory.LicenseService.isFeatureEnabled(u.LicenseFeatureType.ROUTING) && this.factory.ConfigService.getBoolean(d.Configs.ROUTING_ENABLED, !1) ? Promise.all([this.handlePoiId(b.parsePoiParam(t)), this.handlePoiId(b.parsePoiParam(e))]).then((function(t) {
                    return i.factory.RouteService.route(t[0], t[1], n)
                }
                )) : Promise.reject()
            }
            ,
            e.prototype.handlePoiId = function(t) {
                return t instanceof p.Vector3 ? Promise.resolve(t) : this.factory.PoiRepository.findOne(t)
            }
            ,
            e.prototype.moveToStartingLoc = function(t, e) {
                var n = this;
                void 0 === t && (t = !1),
                void 0 === e && (e = !1),
                this.hideProgressDialog(),
                this.factory.UrlService.preventNextChange();
                var i = this.factory.$location.search()
                  , r = {
                    lon: this.factory.ConfigService.getFloat(d.Configs.CORE_INIT_LON, 0),
                    lat: this.factory.ConfigService.getFloat(d.Configs.CORE_INIT_LAT, 0)
                }
                  , o = {
                    lon: this.factory.ConfigService.getFloat(d.Configs.CORE_INIT_LOCATION_LON),
                    lat: this.factory.ConfigService.getFloat(d.Configs.CORE_INIT_LOCATION_LAT),
                    z: this.factory.ConfigService.getFloat(d.Configs.CORE_INIT_LOCATION_Z)
                }
                  , a = i.fov ? parseInt(i.fov, 10) : void 0;
                (isNaN(r.lon) || isNaN(r.lat)) && (r.lon = 0,
                r.lat = 0);
                var s = this.checkUrlForRoute(i).catch((function() {
                    if ("image"in i)
                        return n.moveToImageId(parseInt(i.image, 10), r, a, e);
                    if ("poi"in i) {
                        n.isViewDirInUrl(i) || (r = void 0);
                        var s = b.parsePoiParam(i.poi);
                        return s instanceof p.Vector3 ? n.factory.GeoTransformationService.initialized.then((function() {
                            var t = n.factory.PoiService.getLocationAsPoi(s, !0);
                            return n.factory.PoiService.openHighlightAndGoToPoi(t)
                        }
                        )) : n.moveToPoiId(s, i["!"], r, a, e)
                    }
                    return "sme"in i ? (n.isViewDirInUrl(i) || (r = void 0),
                    n.moveToSiteModelEntityId(parseInt(i.sme, 10), !i["!"], r)) : n.checkUrlForGeoLocation(i, r, a).catch((function() {
                        return n.factory.ConfigService.getInteger(d.Configs.CORE_INIT_IMAGE) ? n.moveToImageId(n.factory.ConfigService.getInteger(d.Configs.CORE_INIT_IMAGE), r, a, !0) : o.lon && o.lat && void 0 !== o.z ? n.attemptMoveToImageFallbackPointcloud(new p.Vector3(o.lon,o.lat,o.z), r, a) : n.moveToImageId(void 0, t ? r : void 0)
                    }
                    ))
                }
                ));
                return (s = m.promiseFinally(s, (function() {
                    "mpts"in i && (n.factory.UserService.userInfo.checkAttribute(E.GroupAttributes.CAN_USE_MEASUREMENT_TOOL) ? (n.trackSharedMeasurementVisitedEvent(A.MeasurementPdfExportService.SHARE_LINK_SOURCE in i),
                    n.factory.ModeSwitchService.switchToMode(f.ModeState.MEASUREMENTS).then((function() {
                        n.factory.MeasurementsService.onEmbeddedMeasurementParsed.emit(i.mpts)
                    }
                    )).catch(S.handleWarning)) : n.factory.MessageReportingService.showMessage(n.factory.gettextCatalog.getString("Measurement tool is unavailable"), n.factory.gettextCatalog.getString("The measurement embedded in this URL cannot be viewed because you do not have permissions to use the measurement tool. Please contact your site administrator for permissions.")))
                }
                ))).then((function() {
                    return n.initMap(i)
                }
                )).catch((function() {
                    return n.initMap(i)
                }
                ))
            }
            ,
            e.prototype.trackSharedMeasurementVisitedEvent = function(t) {
                var e = new C.SharedMeasurementVisitedEvent;
                t ? e.sharedMeasurementVisitedFromPdf() : e.sharedMeasurementVisitedFromModalLink(),
                this.factory.TrackingService.trackPreDefinedEvent(e)
            }
            ,
            e.prototype.isViewDirInUrl = function(t) {
                var e = this.factory.ConfigService.getAliasByName(d.Configs.CORE_INIT_LON)
                  , n = this.factory.ConfigService.getAliasByName(d.Configs.CORE_INIT_LAT);
                return void 0 !== t[d.Configs.CORE_INIT_LON] || void 0 !== t[d.Configs.CORE_INIT_LAT] || void 0 !== t[e] || void 0 !== t[n]
            }
            ,
            e.prototype.initMap = function(t) {
                var e = this
                  , n = s.isMobileLayout() ? d.Configs.CORE_INIT_VIEW_MOBILE : d.Configs.CORE_INIT_VIEW;
                if ("map" === this.factory.ConfigService.getString(n))
                    if (s.isMobileLayout() && "lon"in t && "lat"in t && "z"in t) {
                        var i = this.factory.GeoTransformationService.toLocal(parseFloat(t.lon), parseFloat(t.lat), parseFloat(t.z));
                        this.factory.SiteModelService.getCurrentFloorByPosition(i).then((function(t) {
                            t && e.factory.FloorChangerService.changeFloorByName(t.name, !1).catch((function() {}
                            ))
                        }
                        )).catch(S.handleWarning)
                    } else if (s.isMobileLayout() && "image"in t)
                        this.factory.ImageRepository.findOne(t.image).then((function(t) {
                            if (t && t.siteModelEntity) {
                                var n = t.siteModelEntity.getEntityOfType(v.SiteModelType.FLOOR);
                                e.factory.FloorChangerService.changeFloorByName(n.name, !1).catch((function() {}
                                ))
                            }
                        }
                        )).catch(S.handleWarning);
                    else if (s.isMobileLayout() && "poi"in t) {
                        var r = b.parsePoiParam(t.poi);
                        r instanceof p.Vector3 ? this.factory.GeoTransformationService.initialized.then((function() {
                            var t = e.factory.GeoTransformationService.vectorToLocal(r);
                            e.checkAndFixOffset(t, r),
                            e.factory.SiteModelService.getCurrentFloorByPosition(t).then((function(t) {
                                t && e.factory.FloorChangerService.changeFloorByName(t.name, !1).catch((function() {}
                                ))
                            }
                            )).catch(S.handleWarning)
                        }
                        )).catch(S.handleWarning) : this.factory.PoiRepository.findOne(r).then((function(t) {
                            if (t && t.siteModelEntity) {
                                var n = t.siteModelEntity.getEntityOfType(v.SiteModelType.FLOOR);
                                n && e.factory.FloorChangerService.changeFloorByName(n.name, !1).catch((function() {}
                                ))
                            }
                        }
                        )).catch(S.handleWarning)
                    } else {
                        var o = !!this.currImage
                          , a = this.factory.ConfigService.getFloat(d.Configs.CORE_INIT_MAP_FOV);
                        if (!("poi"in t) && void 0 !== a) {
                            this.getMapView().divContainer.onResize();
                            var c = this.getMapView().getDefaultViewport()
                              , l = c.getWidth()
                              , u = c.getHeight();
                            c.cameraController.resolution = a / Math.min(l, u)
                        }
                        this.factory.SiteModelService.getFloorsInView(this.getMapView().getCamera()).then((function(t) {
                            var n = t.length ? t[0].name : ""
                              , i = e.factory.ConfigService.getFloat(d.Configs.CORE_INIT_MAP_LON)
                              , r = e.factory.ConfigService.getFloat(d.Configs.CORE_INIT_MAP_LAT)
                              , a = e.factory.ConfigService.getString(d.Configs.CORE_INIT_MAP_FLOOR, n);
                            o || void 0 === i || void 0 === r || e.factory.GeoTransformationService.initialized.then((function() {
                                var t = e.factory.GeoTransformationService.toLocal(i, r, 0);
                                e.getMapView().moveMap(t)
                            }
                            )).catch(S.handleWarning),
                            "" === a || o && (!s.isMobileLayout() || e.factory.FloorChangerService.getCurrentFloorName()) || e.factory.FloorChangerService.changeFloorByName(a).catch((function() {}
                            ))
                        }
                        )).catch(S.handleWarning)
                    }
            }
            ,
            e.prototype.checkUrlForRoute = function(t) {
                if ("route.start"in t && "route.end"in t) {
                    var e = !("image"in t || "poi"in t || "lon"in t && "lat"in t);
                    return this.route(t["route.start"], t["route.end"], e).then((function() {
                        return e ? {} : Promise.reject()
                    }
                    )).catch((function() {
                        return Promise.reject()
                    }
                    ))
                }
                return Promise.reject()
            }
            ,
            e.prototype.attemptMoveToImageFallbackPointcloud = function(t, e, n) {
                var i = this
                  , r = this.factory.PointCloudMenuService.isCloudVisible() ? .001 : void 0;
                return this.factory.ImageService.getClosestImageOnFloorGlobal(t, r).then((function(t) {
                    return i.moveToImage(t, e, n)
                }
                )).catch((function() {
                    return i.factory.GeoTransformationService.initialized.then((function() {
                        var r = i.factory.GeoTransformationService.vectorToLocal(t);
                        return i.checkAndFixOffset(r, t),
                        i.getMapView().moveMap(r, i.moveLocationAnimationTime()),
                        i.moveMainViewToLocation({
                            destinationPos: r,
                            viewDir: e,
                            fov: n
                        })
                    }
                    ))
                }
                ))
            }
            ,
            e.prototype.checkUrlForGeoLocation = function(t, e, n) {
                if ("lon"in t && "lat"in t && "z"in t) {
                    var i = new p.Vector3(parseFloat(t.lon),parseFloat(t.lat),parseFloat(t.z));
                    return this.attemptMoveToImageFallbackPointcloud(i, e, n)
                }
                return Promise.reject()
            }
            ,
            e.prototype.moveToImageId = function(t, e, n, i) {
                var r = this;
                return void 0 === i && (i = !1),
                (t ? this.factory.ImageRepository.findOne(t, !1, !i) : Promise.reject()).catch((function() {
                    return t && !i && r.factory.MessageReportingService.showMessage(r.factory.gettextCatalog.getString("Image with ID {{id}} Not Found", {
                        id: t
                    }, "title"), r.factory.gettextCatalog.getString("Requested image could not be found, moving to the first image instead.")),
                    r.factory.ImageRepository.filter((new h.ImageRestFilterBuilder).hidden(!1).limit(1).build()).then((function(t) {
                        return 1 === t.length ? t[0] : void 0
                    }
                    ))
                }
                )).then((function(t) {
                    return !t && r.factory.DatasetRepository.data[0] ? r.moveMainViewToLocation({
                        destinationPos: r.factory.DatasetRepository.data[0].getCenter()
                    }) : r.moveToImage(t, e, void 0, n)
                }
                ))
            }
            ,
            e.prototype.moveToImage = function(t, e, n, i, r) {
                var s = this;
                this.mainViewCameraTween && (this.mainViewCameraTween.stop(),
                this.factory.ViewService.mainView.forgetTween(this.mainViewCameraTween),
                this.mainViewCameraTween = void 0),
                t && M.GeoTransformationService.RELOCATE_LOCAL_SYSTEM_THRESHOLD < t.location.length() && this.factory.GeoTransformationService.setOffsetFromGlobal(t.globalLocation),
                void 0 === n && t && (n = 1 + t.location.distanceTo(this.factory.ViewService.mainView.getCamera().position));
                var c = this.currImage;
                if (this.currImage = t,
                this.factory.ViewService.onTransitionStart.emit({
                    previousImage: c,
                    image: t,
                    siteModelEntity: this.smeToMoveTo,
                    poiEntity: this.poiToMoveTo,
                    location: r,
                    viewDistance: n,
                    viewDir: e || this.factory.ViewService.mainView.getViewDir(),
                    duration: this.moveLocationAnimationTime()
                }),
                !t)
                    return Promise.reject();
                this.factory.PointCloudMenuService.isCloudVisible() && (this.factory.ModeService.isNormalMode() || this.factory.ModeService.isMeasurementsMode()) && this.factory.PointCloudMenuService.config.autoActivation && (t.dataset.pointCloudVisible = !0);
                var l = t.location.clone();
                this.bootstrap && this.factory.ViewService.mainView.getCamera().position.copy(l);
                var u = this.factory.ViewService.mainView.getCamera().position.equals(l) ? Promise.resolve() : this.tweenCamPos(l)
                  , d = void 0 !== e && !o.equals(this.factory.ViewService.mainView.getViewDir(), e) ? this.tweenViewDir(e, this.bootstrap) : Promise.resolve()
                  , p = void 0 !== i ? this.tweenViewFOV(i) : Promise.resolve();
                return Promise.all([u, d, p]).then((function() {
                    var e;
                    s.factory.ViewService.onTransitionEnd.emit({
                        previousImage: c,
                        image: s.currImage,
                        siteModelEntity: s.smeToMoveTo,
                        poiEntity: s.poiToMoveTo
                    }),
                    s.bootstrap && (s.bootstrap = !1),
                    s.factory.LegacyService.triggerEvent("locationChanged", {
                        from: c,
                        to: s.currImage
                    });
                    var n = null == c ? void 0 : c.dataset;
                    if (n !== s.currImage.dataset && s.factory.LegacyService.triggerEvent("datasetChanged", {
                        previous_dataset: null == n ? void 0 : n.id,
                        dataset: null === (e = s.currImage.dataset) || void 0 === e ? void 0 : e.id
                    }),
                    !1 === s.movingToPoi && !1 === s.movingToSme) {
                        var i = s.factory.$location.url();
                        s.factory.UrlService.updateUrl({
                            image: t.id.toString()
                        }),
                        i !== s.factory.$location.url() && a.invalidateAngular()
                    }
                }
                ))
            }
            ,
            e.prototype.isMoving = function() {
                return void 0 !== this.mainViewCameraTween
            }
            ,
            e.prototype.tweenViewDir = function(t, e) {
                for (var n = this, i = e ? t : this.factory.ViewService.mainView.getViewDir(), r = 85 / 180 * Math.PI; i.lon < 0; )
                    i.lon += 2 * Math.PI;
                for (i.lon %= 2 * Math.PI; t.lon < 0; )
                    t.lon += 2 * Math.PI;
                return t.lon %= 2 * Math.PI,
                i.lon < t.lon && t.lon - i.lon > Math.PI ? t.lon -= 2 * Math.PI : i.lon > t.lon && i.lon - t.lon > Math.PI && (t.lon += 2 * Math.PI),
                t.lat = Math.max(-r, Math.min(r, t.lat)),
                new Promise((function(e) {
                    var r = new l.Tween(i).to({
                        lon: t.lon,
                        lat: t.lat
                    }, n.moveLocationAnimationTime()).easing(l.Easing.Sinusoidal.InOut).onUpdate((function() {
                        n.factory.ViewService.mainView.updateOrientation(i)
                    }
                    )).onComplete((function() {
                        n.factory.ViewService.mainView.forgetTween(r),
                        e()
                    }
                    )).start();
                    n.factory.ViewService.mainView.watchTween(r)
                }
                ))
            }
            ,
            e.prototype.tweenViewFOV = function(t) {
                var e = this;
                return new Promise((function(n) {
                    var i = {
                        fov: e.factory.ViewService.mainView.getFov()
                    }
                      , r = new l.Tween(i).to({
                        fov: t
                    }, e.moveLocationAnimationTime()).easing(l.Easing.Sinusoidal.InOut).onUpdate((function() {
                        e.factory.ViewService.mainView.updateFov(i.fov)
                    }
                    )).onComplete((function() {
                        e.factory.ViewService.mainView.forgetTween(r),
                        n()
                    }
                    )).start();
                    e.factory.ViewService.mainView.watchTween(r)
                }
                ))
            }
            ,
            e.prototype.tweenCamPos = function(t) {
                var e = this;
                return new Promise((function(n) {
                    var i = new l.Tween(e.factory.ViewService.mainView.getCamera().position).to({
                        x: t.x,
                        y: t.y,
                        z: t.z
                    }, e.moveLocationAnimationTime()).easing(l.Easing.Sinusoidal.InOut).onComplete((function() {
                        e.mainViewCameraTween = void 0,
                        e.factory.ViewService.mainView.forgetTween(i),
                        n()
                    }
                    )).start();
                    e.mainViewCameraTween = i,
                    e.factory.ViewService.mainView.watchTween(i)
                }
                ))
            }
            ,
            e.prototype.moveToGeoLocation = function(t, e, n, i, r, o, a, s) {
                var c = this
                  , l = t;
                e || (l = this.factory.GeoTransformationService.toLocal(t.x, t.y, t.z)),
                this.checkAndFixOffset(l, e ? this.factory.GeoTransformationService.vectorToGlobal(l) : t);
                var u = void 0;
                (!this.movingToPoi && !s || this.factory.PointCloudMenuService.isCloudVisible()) && (u = 10);
                var d = [];
                return this.movingToPoi && !this.poiToMoveTo.isLocationAsPoi && d.push(this.poiToMoveTo.siteModelEntity),
                s && d.push.apply(d, this.factory.FloorChangerService.currentFloors),
                (a ? Promise.reject() : this.getClosestImage(l, u, d)).then((function(t) {
                    if (!n) {
                        var e = (new p.Vector3).subVectors(l, t.location);
                        e.normalize(),
                        n = {
                            lon: Math.atan2(e.y, e.x),
                            lat: void 0 === i ? Math.asin(e.z) : i
                        }
                    }
                    return c.moveToImage(t, n, void 0, r, l)
                }
                )).catch((function() {
                    return c.factory.PointCloudMenuService.isCloudVisible() || c.anyDatasetNearPoint(l, 100) ? (c.getMapView().moveMap(l, c.moveLocationAnimationTime()),
                    c.moveMainViewToLocation({
                        destinationPos: l,
                        destinationNormal: o,
                        viewDir: n,
                        fov: r
                    })) : (c.getMapView().moveMap(l),
                    Promise.reject(void 0))
                }
                ))
            }
            ,
            e.prototype.getClosestImage = function(t, e, n) {
                var i = this;
                return n && n.length > 0 ? this.factory.ImageService.getClosestImage(t, e, n) : this.factory.ImageService.getClosestImageOnFloor(t, e).catch((function() {
                    return i.factory.ImageService.getClosestImage(t, e)
                }
                ))
            }
            ,
            e.prototype.moveMainViewToLocation = function(t) {
                var e = this
                  , n = [];
                this.factory.PointCloudMenuService.isCloudVisible() || (this.factory.PointCloudMenuService.showPointClouds(!0),
                this.factory.ViewMenuService.showPanoramas(!1));
                var i = new p.Vector3(0,0,0);
                if (this.movingToPoi && !this.poiToMoveTo.pov) {
                    var r = new p.Vector3(1,0,0).applyQuaternion(this.poiToMoveTo.orientation);
                    t.destinationNormal = r
                }
                if (t.destinationNormal)
                    if (0 === t.destinationNormal.length())
                        i.subVectors(t.destinationPos, this.factory.ViewService.mainView.getCamera().position).negate().setLength(2),
                        i.z = 0,
                        t.destinationPos.z = this.factory.ViewService.mainView.getCamera().position.z,
                        t.viewDir = void 0;
                    else if (this.movingToPoi || t.destinationNormal.z < .9 && t.destinationNormal.z > -.9)
                        t.destinationNormal.normalize(),
                        t.viewDir = {
                            lon: Math.atan2(-t.destinationNormal.y, -t.destinationNormal.x),
                            lat: Math.asin(-t.destinationNormal.z)
                        },
                        t.destinationNormal.setLength(2),
                        i = t.destinationNormal;
                    else if (t.destinationNormal.z <= -.9) {
                        t.destinationNormal.normalize();
                        var s = this.factory.ViewService.mainView.getViewDir()
                          , c = Math.PI / 2 - Math.asin(-t.destinationNormal.z) / 2
                          , l = s.lon
                          , u = new p.Vector3(0,0,0);
                        u.x = Math.sin(c) * Math.cos(l),
                        u.z = Math.cos(c),
                        u.y = Math.sin(c) * Math.sin(l),
                        t.viewDir = {
                            lon: Math.atan2(u.y, u.x),
                            lat: Math.asin(u.z)
                        },
                        u.setLength(2).negate(),
                        i = u
                    } else
                        i.z = 1.9;
                if (t.destinationPos) {
                    this.bootstrap && this.factory.ViewService.mainView.getCamera().position.copy(t.destinationPos);
                    var d = t.destinationPos.clone();
                    d.add(i),
                    (this.factory.ModeService.isNormalMode() || this.factory.ModeService.isMeasurementsMode()) && this.factory.PointCloudMenuService.config.autoActivation && this.factory.DatasetRepository.data.forEach((function(n) {
                        e.checkInactiveDatasetNearby(n, t.destinationPos) && (n.pointCloudVisible = !0,
                        a.invalidateAngular())
                    }
                    ));
                    var h = {
                        previousImage: void 0,
                        image: void 0,
                        siteModelEntity: this.smeToMoveTo,
                        poiEntity: this.poiToMoveTo,
                        location: d,
                        viewDistance: void 0,
                        viewDir: void 0,
                        duration: this.moveLocationAnimationTime()
                    };
                    this.factory.ViewService.onTransitionStart.emit(h),
                    n.push(this.tweenCamPos(d).then((function() {
                        e.bootstrap && (e.bootstrap = !1)
                    }
                    )))
                }
                return t.viewDir && !o.equals(this.factory.ViewService.mainView.getViewDir(), t.viewDir) && n.push(this.tweenViewDir(t.viewDir, this.bootstrap)),
                t.fov && n.push(this.tweenViewFOV(t.fov)),
                Promise.all(n).then((function() {}
                ))
            }
            ,
            e.prototype.moveToDataset = function(t, e, n) {
                var i = this;
                return this.factory.DatasetRepository.findOne(t).then((function(t) {
                    return i.factory.ImageService.getImageInDataset(t, e).then((function(e) {
                        return e || i.factory.ImageService.getFirstImageInDataset(t)
                    }
                    )).then((function(t) {
                        return t ? i.moveToImage(t, n) : Promise.reject(void 0)
                    }
                    ))
                }
                ))
            }
            ,
            e.prototype.getMainView = function() {
                return this.factory.ViewService.mainView
            }
            ,
            e.prototype.getMapView = function() {
                return this.factory.ViewService.mapView
            }
            ,
            e.prototype.resetView = function() {
                this.currImage && this.moveToImage(this.currImage).catch(S.handleWarning)
            }
            ,
            e.prototype.setMainScene = function(t) {
                return t !== w.ViewType.MAP && t !== w.ViewType.PANORAMA ? (console.log("No such scene."),
                !1) : this.factory.ViewService.getPrimaryView() !== t && (this.factory.ViewService.setPrimaryView(t),
                !0)
            }
            ,
            e.prototype.swapScenes = function() {
                var t = this.factory.ViewService.getPrimaryView() === w.ViewType.MAP ? w.ViewType.PANORAMA : w.ViewType.MAP;
                return this.setMainScene(t)
            }
            ,
            e.prototype.setPoiTypesVisibility = function(t, e) {
                this.factory.PoiTypeService.setPoiTypeVisibility(t, e)
            }
            ,
            e.prototype.getShareUrl = function() {
                return this.factory.UrlService.generateShareUrl()
            }
            ,
            e.prototype.setLanguage = function(t) {
                this.factory.LanguageService.setLanguage(t).catch(S.handleWarning),
                this.factory.PoiService.poisChanged.emit()
            }
            ,
            e.prototype.getLanguage = function() {
                return this.factory.LanguageService.getCurrentLanguage()
            }
            ,
            e.prototype.getCurrentCursorPosition = function() {
                return console.warn('Deprecated usage of "getCurrentCursorPosition()", use "api.view.mainView.getCurrentCursorPosition()" instead.'),
                this.factory.CursorService.getCursorData()
            }
            ,
            e.prototype.getMenuItems = function() {
                return this.factory.SidebarMenuService.items
            }
            ,
            e.prototype.addEventListener = function(t, e) {
                return this.factory.LegacyService.addEventListener(t, e)
            }
            ,
            e.prototype.removeEventListener = function(t, e) {
                return this.factory.LegacyService.removeEventListener(t, e)
            }
            ,
            e.prototype.getScreenShot = function(t) {
                console.warn('Deprecated usage of "getScreenShot()", use "api.view.mainView.getScreenshot()" instead.');
                var e = this.factory.ViewService.mainView.getScreenshot(t, .9);
                return [e.data, e.width, e.height]
            }
            ,
            e.prototype.checkInactiveDatasetNearby = function(t, n) {
                return !t.pointCloudVisible && t.distanceToBoundingBox(n) < e.DATASET_ACTIVATION_DISTANCE
            }
            ,
            e.prototype.anyDatasetNearPoint = function(t, e) {
                return this.factory.DatasetRepository.data.some((function(n) {
                    return n.distanceToBoundingBox(t) < e
                }
                ))
            }
            ,
            e.prototype.moveLocationAnimationTime = function() {
                return s.isMobileLayout() && this.factory.ViewService.isMapPrimaryView() ? 600 : 2e3
            }
            ,
            e.prototype.isLicensed = function() {
                return this.factory.LicenseService.isFeatureEnabled(u.LicenseFeatureType.JAVASCRIPT_API)
            }
            ,
            e.prototype.getPoiRepository = function() {
                return this.factory.PoiRepository
            }
            ,
            e.prototype.getPoiTypeRepository = function() {
                return this.factory.PoiTypeRepository
            }
            ,
            e.DATASET_ACTIVATION_DISTANCE = 10,
            e.IMAGE_LOCATION_TOLERANCE = .01,
            e
        }();
        e.IndoorViewerImpl = _
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(4)
      , r = n(7);
    e.parsePoiParam = function(t) {
        if (r.isArray(t))
            return console.warn('Deprecated usage of "route", please use a IV.THREE.Vector3 instead of an array.'),
            (new i.Vector3).fromArray(t);
        if (t instanceof i.Vector3)
            return t;
        var e = t.split(",").map(parseFloat);
        return 1 === e.length ? e[0] : (new i.Vector3).fromArray(e)
    }
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return t.call(this, "SharedMeasurementVisitedEvent") || this
        }
        return r(e, t),
        e.prototype.sharedMeasurementVisitedFromPdf = function() {
            return this.withData("visitedFrom", "pdf"),
            this
        }
        ,
        e.prototype.sharedMeasurementVisitedFromModalLink = function() {
            return this.withData("visitedFrom", "modalLink"),
            this
        }
        ,
        e
    }(n(64).TrackingEvent);
    e.SharedMeasurementVisitedEvent = o
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t() {}
        return t.prototype.fillFromData = function(t) {
            this.instanceName = t.instance_name,
            this.gtmContainerId = t.gtm_container_id,
            this.isTrackingEnabled = t.tracking_enabled,
            this.isTrial = t.trial,
            this.instanceType = t.instance_type
        }
        ,
        t
    }();
    e.GoogleTagManagerEntity = i
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(146)
      , a = n(4)
      , s = n(137)
      , c = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.createIcon = function() {
            e.icon || (e.icon = s.MeasurementObject3D.createSpriteIcon(n(1079)))
        }
        ,
        e.prototype.canCreatePlane = function() {
            return this.points.length >= 3
        }
        ,
        e.prototype.createPlane = function() {
            var t = this.points[0].position
              , e = this.points[1].position
              , n = this.points[2].position;
            this.plane = (new a.Plane).setFromCoplanarPoints(t, e, n)
        }
        ,
        e.prototype.getIcon = function() {
            return e.icon
        }
        ,
        e
    }(o.AreaMeasurementObject3D);
    e.FreeAreaMeasurementObject3D = c
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    ), o = this && this.__assign || function() {
        return (o = Object.assign || function(t) {
            for (var e, n = 1, i = arguments.length; n < i; n++)
                for (var r in e = arguments[n])
                    Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]);
            return t
        }
        ).apply(this, arguments)
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var a = n(538)
      , s = n(4)
      , c = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.buttonsDescriptions = [],
            e.buttons = [],
            e._buttonWidth = 20,
            e._buttonSpacing = 6,
            e
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "buttonWidth", {
            set: function(t) {
                this._buttonWidth = t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "buttonSpacing", {
            set: function(t) {
                this._buttonSpacing = t
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.createSpriteObject = function() {
            return t.prototype.createSpriteObject.call(this),
            this.defaultScale = this.spriteObject.scale.clone(),
            this.spriteObject
        }
        ,
        e.prototype.setButtons = function(t) {
            if (t.length !== this.buttons.length && (this.removeButtons(),
            this.buttonsDescriptions = t,
            this.buttonsDescriptions.length > 0)) {
                var e = this.padding;
                this.padding = o(o({}, e), {
                    right: e.right + this.calcPaddingForButtons(this.buttonsDescriptions.length)
                }),
                this.updateSpriteTexture(),
                this.updateButtons()
            }
        }
        ,
        e.prototype.removeButtons = function() {
            var t = this;
            if (this.buttons.length > 0) {
                var e = this.padding;
                this.padding = o(o({}, e), {
                    right: e.right - this.calcPaddingForButtons(this.buttons.length)
                }),
                this.buttons.forEach((function(e) {
                    t.spriteObject.remove(e),
                    e.geometry.dispose()
                }
                )),
                this.buttonsDescriptions = [],
                this.buttons = [],
                this.updateSpriteTexture(),
                this.updateButtons()
            }
        }
        ,
        e.prototype.setSpriteIconTextureFromImage = function(e) {
            this.spriteObject && (this.setImage = e,
            t.prototype.setSpriteIconTextureFromImage.call(this, e, this.canvas, this.canvas.getContext("2d")))
        }
        ,
        e.prototype.updateSpriteTexture = function() {
            t.prototype.updateSpriteTexture.call(this),
            this.setSpriteIconTextureFromImage(this.setImage)
        }
        ,
        e.prototype.removeSpriteObject = function() {
            this.removeButtons(),
            t.prototype.removeSpriteObject.call(this),
            this.canvas = void 0
        }
        ,
        e.prototype.createCanvas = function() {
            return this.canvas = t.prototype.createCanvas.call(this),
            this.canvas
        }
        ,
        e.prototype.calcPaddingForButtons = function(t) {
            return this._buttonSpacing * (t + 1) + this._buttonWidth * t
        }
        ,
        e.prototype.updateButtons = function() {
            this.spriteObject.geometry.dispose();
            var t = this.visibleSize.x / this.canvasSize.x
              , e = this.visibleSize.y / this.canvasSize.y;
            this.spriteObject.geometry = a.PlaneSprite.getPlaneGeometry(t, e),
            this.alignPlaneGeometry(this.spriteObject.geometry, this.visibleSize.x, this.visibleSize.y),
            this.spriteObject.scale.set(this.visibleSize.x / this.visibleSize.y, 1, 1),
            this.setSpriteIconTextureFromImage(this.setImage),
            this.buttonsDescriptions.length > 0 && this.addButtonMeshes()
        }
        ,
        e.prototype.addButtonMeshes = function() {
            var t = this
              , n = this.visibleSize.x
              , i = (this.border.width + this.padding.left + this.canvas.getContext("2d").measureText(this.text).width + 2 * this._buttonSpacing - n / 2) / n
              , r = .5 * this._buttonWidth / n
              , o = (this._buttonWidth + this._buttonSpacing) / n;
            this.buttonsDescriptions.forEach((function(n, a) {
                var s = t.createButtonMesh(n.iconTexture);
                s.onClick = n.onClick,
                t.spriteObject.add(s),
                s.position.set(i + r + o * a, e.BUTTON_Z_ADJUSTMENT, 0),
                t.buttons.push(s)
            }
            )),
            this.buttonsDescriptions = []
        }
        ,
        e.prototype.createButtonMesh = function(t) {
            var e = new s.PlaneGeometry(this._buttonWidth / this.visibleSize.x,this._buttonWidth / this.visibleSize.y)
              , n = new s.MeshBasicMaterial({
                map: t,
                color: new s.Color(16777215),
                side: s.FrontSide,
                depthTest: !1,
                depthWrite: !1,
                transparent: !0
            })
              , i = new s.Mesh(e,n);
            return i.renderOrder = this.spriteObject.renderOrder + 1,
            i
        }
        ,
        e.BUTTON_Z_ADJUSTMENT = .05,
        e
    }(a.PlaneSprite);
    e.EditablePlaneSprite = c
}
, function(t, e, n) {
    !function() {
        function e(t, e) {
            document.addEventListener ? t.addEventListener("scroll", e, !1) : t.attachEvent("scroll", e)
        }
        function n(t) {
            this.a = document.createElement("div"),
            this.a.setAttribute("aria-hidden", "true"),
            this.a.appendChild(document.createTextNode(t)),
            this.b = document.createElement("span"),
            this.c = document.createElement("span"),
            this.h = document.createElement("span"),
            this.f = document.createElement("span"),
            this.g = -1,
            this.b.style.cssText = "max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;",
            this.c.style.cssText = "max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;",
            this.f.style.cssText = "max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;",
            this.h.style.cssText = "display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;",
            this.b.appendChild(this.h),
            this.c.appendChild(this.f),
            this.a.appendChild(this.b),
            this.a.appendChild(this.c)
        }
        function i(t, e) {
            t.a.style.cssText = "max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;white-space:nowrap;font-synthesis:none;font:" + e + ";"
        }
        function r(t) {
            var e = t.a.offsetWidth
              , n = e + 100;
            return t.f.style.width = n + "px",
            t.c.scrollLeft = n,
            t.b.scrollLeft = t.b.scrollWidth + 100,
            t.g !== e && (t.g = e,
            !0)
        }
        function o(t, n) {
            function i() {
                var t = o;
                r(t) && t.a.parentNode && n(t.g)
            }
            var o = t;
            e(t.b, i),
            e(t.c, i),
            r(t)
        }
        function a(t, e) {
            var n = e || {};
            this.family = t,
            this.style = n.style || "normal",
            this.weight = n.weight || "normal",
            this.stretch = n.stretch || "normal"
        }
        var s = null
          , c = null
          , l = null
          , u = null;
        function d() {
            return null === u && (u = !!document.fonts),
            u
        }
        function p() {
            if (null === l) {
                var t = document.createElement("div");
                try {
                    t.style.font = "condensed 100px sans-serif"
                } catch (t) {}
                l = "" !== t.style.font
            }
            return l
        }
        function h(t, e) {
            return [t.style, t.weight, p() ? t.stretch : "", "100px", e].join(" ")
        }
        a.prototype.load = function(t, e) {
            var r = this
              , a = t || "BESbswy"
              , l = 0
              , u = e || 3e3
              , p = (new Date).getTime();
            return new Promise((function(t, e) {
                if (d() && !function() {
                    if (null === c)
                        if (d() && /Apple/.test(window.navigator.vendor)) {
                            var t = /AppleWebKit\/([0-9]+)(?:\.([0-9]+))(?:\.([0-9]+))/.exec(window.navigator.userAgent);
                            c = !!t && 603 > parseInt(t[1], 10)
                        } else
                            c = !1;
                    return c
                }()) {
                    var f = new Promise((function(t, e) {
                        !function n() {
                            (new Date).getTime() - p >= u ? e(Error(u + "ms timeout exceeded")) : document.fonts.load(h(r, '"' + r.family + '"'), a).then((function(e) {
                                1 <= e.length ? t() : setTimeout(n, 25)
                            }
                            ), e)
                        }()
                    }
                    ))
                      , m = new Promise((function(t, e) {
                        l = setTimeout((function() {
                            e(Error(u + "ms timeout exceeded"))
                        }
                        ), u)
                    }
                    ));
                    Promise.race([m, f]).then((function() {
                        clearTimeout(l),
                        t(r)
                    }
                    ), e)
                } else
                    !function(t) {
                        document.body ? t() : document.addEventListener ? document.addEventListener("DOMContentLoaded", (function e() {
                            document.removeEventListener("DOMContentLoaded", e),
                            t()
                        }
                        )) : document.attachEvent("onreadystatechange", (function e() {
                            "interactive" != document.readyState && "complete" != document.readyState || (document.detachEvent("onreadystatechange", e),
                            t())
                        }
                        ))
                    }((function() {
                        function c() {
                            var e;
                            (e = -1 != g && -1 != v || -1 != g && -1 != y || -1 != v && -1 != y) && ((e = g != v && g != y && v != y) || (null === s && (e = /AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent),
                            s = !!e && (536 > parseInt(e[1], 10) || 536 === parseInt(e[1], 10) && 11 >= parseInt(e[2], 10))),
                            e = s && (g == b && v == b && y == b || g == w && v == w && y == w || g == S && v == S && y == S)),
                            e = !e),
                            e && (x.parentNode && x.parentNode.removeChild(x),
                            clearTimeout(l),
                            t(r))
                        }
                        var d = new n(a)
                          , f = new n(a)
                          , m = new n(a)
                          , g = -1
                          , v = -1
                          , y = -1
                          , b = -1
                          , w = -1
                          , S = -1
                          , x = document.createElement("div");
                        x.dir = "ltr",
                        i(d, h(r, "sans-serif")),
                        i(f, h(r, "serif")),
                        i(m, h(r, "monospace")),
                        x.appendChild(d.a),
                        x.appendChild(f.a),
                        x.appendChild(m.a),
                        document.body.appendChild(x),
                        b = d.a.offsetWidth,
                        w = f.a.offsetWidth,
                        S = m.a.offsetWidth,
                        function t() {
                            if ((new Date).getTime() - p >= u)
                                x.parentNode && x.parentNode.removeChild(x),
                                e(Error(u + "ms timeout exceeded"));
                            else {
                                var n = document.hidden;
                                !0 !== n && void 0 !== n || (g = d.a.offsetWidth,
                                v = f.a.offsetWidth,
                                y = m.a.offsetWidth,
                                c()),
                                l = setTimeout(t, 50)
                            }
                        }(),
                        o(d, (function(t) {
                            g = t,
                            c()
                        }
                        )),
                        i(d, h(r, '"' + r.family + '",sans-serif')),
                        o(f, (function(t) {
                            v = t,
                            c()
                        }
                        )),
                        i(f, h(r, '"' + r.family + '",serif')),
                        o(m, (function(t) {
                            y = t,
                            c()
                        }
                        )),
                        i(m, h(r, '"' + r.family + '",monospace'))
                    }
                    ))
            }
            ))
        }
        ,
        t.exports = a
    }()
}
, function(t, e, n) {
    t.exports = n.p + "73e183436a3300a80bd91a9900fb2110.plane_sprite_error.png"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(257)
      , a = n(312)
      , s = function(t) {
        function e(n, i) {
            var r = t.call(this, n) || this;
            return r.setUniforms = a.createSetUniformsFunc(r),
            r.vertexShader = e.vertexShader,
            r.fragmentShader = e.fragmentShader,
            r.uniforms.dashColor = {
                value: i.dashColor
            },
            r.uniforms.dashOpacity = {
                value: i.dashOpacity
            },
            r.uniforms.occlusionDistance = {
                value: i.occlusionDistance
            },
            r.uniforms.clipDistance = {
                value: i.clipDistance
            },
            r.extensions.fragDepth = !0,
            r
        }
        return r(e, t),
        e.vertexShader = n(1071),
        e.fragmentShader = n(1072),
        e
    }(o.MeshLineMaterial);
    e.MeasurementLineMaterial = s
}
, function(t, e) {
    t.exports = "attribute vec3 previous;\nattribute vec3 next;\nattribute float side;\nattribute float width;\nattribute float counters;\n\nuniform vec2 resolution;\nuniform float lineWidth;\nuniform vec3 color;\nuniform float opacity;\nuniform float near;\nuniform float far;\nuniform float sizeAttenuation;\nuniform vec3 dashColor;\nuniform float dashOpacity;\n\nvarying vec2 vUV;\nvarying vec4 vColor;\nvarying vec4 vDashColor;\nvarying float vCounters;\n\nvec2 fix(vec4 i, float aspect)\n{\n\tvec2 res = i.xy / i.w;\n\tres.x *= aspect;\n\tvCounters = counters;\n\treturn res;\n}\n\n// This vertex shader is a copy of the one supplied by MeshLineMaterial.\n// It supports drawing dashed lines.\nvoid main()\n{\n\tfloat aspect = resolution.x / resolution.y;\n\tfloat pixelWidthRatio = 1.0 / (resolution.x * projectionMatrix[0][0]);\n\n\tvColor = vec4(color, opacity);\n\tvDashColor = vec4(dashColor, dashOpacity);\n\tvUV = uv;\n\n\tmat4 m = projectionMatrix * modelViewMatrix;\n\tvec4 finalPosition = m * vec4(position, 1.0);\n\tvec4 prevPos = m * vec4(previous, 1.0);\n\tvec4 nextPos = m * vec4(next, 1.0);\n\n\tvec2 currentP = fix(finalPosition, aspect);\n\tvec2 prevP = fix(prevPos, aspect);\n\tvec2 nextP = fix(nextPos, aspect);\n\n\tfloat pixelWidth = finalPosition.w * pixelWidthRatio;\n\tfloat w = 1.8 * pixelWidth * lineWidth * width;\n\n\tif (sizeAttenuation == 1.0)\n\t{\n\t\tw = 1.8 * lineWidth * width;\n\t}\n\n\tvec2 dir;\n\tif (nextP == currentP)\n\t{\n\t\tdir = normalize(currentP - prevP);\n\t}\n\telse if (prevP == currentP)\n\t{\n\t\tdir = normalize(nextP - currentP);\n\t}\n\telse\n\t{\n\t\tvec2 dir1 = normalize(currentP - prevP);\n\t\tvec2 dir2 = normalize(nextP - currentP);\n\t\tdir = normalize(dir1 + dir2);\n\n\t\tvec2 perp = vec2(-dir1.y, dir1.x);\n\t\tvec2 miter = vec2(-dir.y, dir.x);\n\t}\n\n\tvec2 normal = vec2(-dir.y, dir.x);\n\tnormal.x /= aspect;\n\tnormal *= .5 * w;\n\n\tvec4 offset = vec4(normal * side, 0.0, 1.0);\n\tfinalPosition.xy += offset.xy;\n\n\tgl_Position = finalPosition;\n}\n"
}
, function(t, e) {
    t.exports = "uniform sampler2D map;\nuniform sampler2D alphaMap;\nuniform float useMap;\nuniform float useAlphaMap;\nuniform float useDash;\nuniform float dashArray;\nuniform float dashOffset;\nuniform float dashRatio;\nuniform float visibility;\nuniform float alphaTest;\nuniform vec2 repeat;\nuniform sampler2D depthTexture;\nuniform sampler2D rgbaTexture;\nuniform float nearPlane;\nuniform float farPlane;\nuniform float occlusionDistance;\nuniform float clipDistance;\nuniform vec2 viewportSize;\nuniform vec2 viewportOffset;\n\nvarying vec2 vUV;\nvarying vec4 vColor;\nvarying vec4 vDashColor;\nvarying float vCounters;\n\n// Converts the exponential depth value from the depth buffer to a linear value\n// See https://learnopengl.com/Advanced-OpenGL/Depth-testing for more information about this formula\nfloat convertToLinear(float zValue)\n{\n\tfloat z = zValue * 2.0 - 1.0;\n\treturn (2.0 * nearPlane * farPlane) / (farPlane + nearPlane - z * (farPlane - nearPlane));\n}\n\nvoid main()\n{\n\tvec4 c = vDashColor;\n\n\t// <-- The following section of the shader is copied from MeshLineMaterial\n\n\t// Sample the fragment from a texture if such is supplied\n\tif (useMap == 1.0)\n\t{\n\t\tc *= texture2D(map, vUV * repeat);\n\t}\n\n\t// Sample the fragment's alpha value from an alpha texture if such is supplied\n\tif (useAlphaMap == 1.0)\n\t{\n\t\tc.a *= texture2D(alphaMap, vUV * repeat).a;\n\t}\n\n\t// Discard the fragment if below the alpha threshold\n\tif (c.a < alphaTest)\n\t{\n\t\tdiscard;\n\t}\n\n\t// If the line is dashed, set the alpha value of the fragment according to the line segment it belongs to\n\tif (useDash == 1.0)\n\t{\n\t\tc.a *= ceil(mod(vCounters + dashOffset, dashArray) - (dashArray * dashRatio));\n\t}\n\n\t// <-- end of copied code\n\n#ifdef GL_EXT_frag_depth\n\t// mixFactor and clipFactor define the color mixing proportion between the states of\n\t// full visibility and occluded visibility\n\t// and\n\t// full visibility and total invisibility\n\tfloat mixFactor = 0.0;\n\tfloat clipFactor = 0.0;\n\n\t// The linear depth value of the current fragment\n\tfloat fragDepth = convertToLinear(gl_FragCoord.z);\n\n\t// The coordinates of the current fragment in the depth texture\n\tvec2 depthTxtCoords = vec2(gl_FragCoord.x - viewportOffset.x, gl_FragCoord.y) / viewportSize;\n\n\t// The linear depth value of the pixel occupied by this fragment in the depth buffer\n\tfloat textureDepth = convertToLinear(texture2D(depthTexture, depthTxtCoords).r);\n\n\t// The difference between the two depths\n\tfloat delta = textureDepth - fragDepth;\n\n\tif (delta < 0.0)\n\t{\n\t\t// occlusionDistance and clipDistance define the width of the respective zones and\n\t\t// mixFactor and clipFactor express the interpolation between the two colors depending on the position\n\t\t// of the current fragment withing those zones.\n\t\tmixFactor = clamp(delta / occlusionDistance, 0.0, 1.0);\n\t\tclipFactor = clamp(delta / clipDistance, 0.0, 1.0);\n\t}\n\t// If the fragment is totally transparent, don't bother drawing it\n\tif (clipFactor == 1.0)\n\t{\n\t\tdiscard;\n\t}\n#else\n\tfloat mixFactor = 0.0;\n\tfloat clipFactor = 0.0;\n#endif\n\n\t// Calculate the color of the dashed version of the line\n\tvec4 backColor = vec4(c.rgb, c.a * step(vCounters, visibility));\n\n\t// Mix between the solid and the dahsed versions of the line according to the mixFactor\n\tgl_FragColor = mix(vColor, backColor, mixFactor);\n\n\t// Set the alpha value of the fragment according to the clipFactor\n\t// Note that clipFactor was previously clamped [0.0;1.0]\n\tgl_FragColor.a *= (1.0 - clipFactor);\n}\n"
}
, function(t, e) {
    t.exports = "varying vec2 vUv;\n\nvoid main()\n{\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n\tvUv = uv;\n}"
}
, function(t, e) {
    t.exports = "uniform sampler2D depthTexture;\nuniform sampler2D rgbaTexture;\nuniform sampler2D map;\nuniform bool readMap;\nuniform float nearPlane;\nuniform float farPlane;\nuniform vec3 color;\nuniform float opacity;\nuniform vec3 obscuredColor;\nuniform float obscuredOpacity;\nuniform float occlusionDistance;\nuniform float clipDistance;\nuniform vec2 viewportSize;\nuniform vec2 viewportOffset;\nuniform bool disableDepthTesting;\n\nvarying vec2 vUv;\n\n// The relative luminance value of each color as percieved by humans\n// Used to convert RGB to Greyscale\n#define LUMA vec3(0.299, 0.587, 0.114)\n\n// Converts the exponential depth value from the depth buffer to a linear value\n// See https://learnopengl.com/Advanced-OpenGL/Depth-testing for more information about this formula\nfloat convertToLinear(float zValue)\n{\n\tfloat z = zValue * 2.0 - 1.0;\n\treturn (2.0 * nearPlane * farPlane) / (farPlane + nearPlane - z * (farPlane - nearPlane));\n}\n\nvoid main()\n{\n\n\t// mixFactor and clipFactor define the color mixing proportion between the states of\n\t// full visibility and occluded visibility\n\t// and\n\t// full visibility and total invisibility\n\tfloat mixFactor = 0.0;\n\tfloat clipFactor = 0.0;\n\n#ifdef GL_EXT_frag_depth\n\tif (!disableDepthTesting)\n\t{\n\t\t// The linear depth value of the current fragment\n\t\tfloat fragDepth = convertToLinear(gl_FragCoord.z);\n\n\t\t// The coordinates of the current fragment in the depth texture\n\t\tvec2 depthTxtCoords = vec2(gl_FragCoord.x - viewportOffset.x, gl_FragCoord.y) / viewportSize;\n\n\t\t// The linear depth value of the pixel occupied by this fragment in the depth buffer\n\t\tfloat textureDepth = convertToLinear(texture2D(depthTexture, depthTxtCoords).r);\n\n\t\t// The difference between the two depths\n\t\tfloat delta = textureDepth - fragDepth;\n\n\t\tif (delta < 0.0)\n\t\t{\n\t\t\t// occlusionDistance and clipDistance define the width of the respective zones and\n\t\t\t// mixFactor and clipFactor express the interpolation between the two colors depending on the position\n\t\t\t// of the current fragment withing those zones.\n\t\t\tmixFactor = clamp(delta / occlusionDistance, 0.0, 1.0);\n\t\t\tclipFactor = clamp(delta / clipDistance, 0.0, 1.0);\n\t\t}\n\t\t// If the fragment is totally transparent, don't bother drawing it\n\t\tif (clipFactor == 1.0)\n\t\t{\n\t\t\tdiscard;\n\t\t}\n\t}\n#endif\n\n\t// Are we drawing from a texture ?\n\tif (readMap)\n\t{\n\t\t// Sample the fragment from the texture and calculate its greyscale value\n\t\tvec4 voxel = texture2D(map, vUv);\n\t\tfloat voxelIntensity = dot(voxel.rgb, LUMA);\n\t\t// If the texture is completely transparent here, discard the fragment\n\t\tif (voxel.a == 0.0)\n\t\t{\n\t\t\tdiscard;\n\t\t}\n\t\t// Mix between the RGB and the Greyscale version of the texture according to the mixFactor\n\t\tgl_FragColor = mix(vec4(voxel.rgb, opacity * voxel.a), vec4(vec3(voxelIntensity), obscuredOpacity * voxel.a), mixFactor);\n\n\t}\n\telse\n\t{\n\t\tvec4 orgba = vec4(obscuredColor, obscuredOpacity);\n\t\tvec4 rgba = vec4(color, opacity);\n\t\t// Mix between the normal and the obscured color according to the mixFactor\n\t\tgl_FragColor = mix(rgba, orgba, mixFactor);\n\t}\n\t// Set the alpha value of the fragment according to the clipFactor\n\t// Note that clipFactor was previously clamped [0.0;1.0]\n\tgl_FragColor.a *= (1.0 - clipFactor);\n}"
}
, function(t, e, n) {
    t.exports = n.p + "cf8f540e8ad6b9b5240815d29ce9ffb3.visibility_off.png"
}
, function(t, e, n) {
    t.exports = n.p + "ee79da0466afec3b5f9771e2fe9e43d0.delete.png"
}
, function(t, e, n) {
    t.exports = n.p + "735f901d522b7d5ddbae03a04ea90bcd.save.png"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(4)
      , a = n(258)
      , s = function(t) {
        function e(e, n) {
            var i = t.call(this) || this;
            return i.normal = e,
            i.points = n,
            i.createGrid(),
            i
        }
        return r(e, t),
        e.prototype.createGrid = function() {
            var t = new o.GridHelper(e.GRID_SIZE,e.GRID_DIVISIONS,e.GRID_LINES_COLOR,e.GRID_LINES_COLOR);
            if (t.lookAt(this.normal),
            t.geometry.rotateX(Math.PI / 2),
            t.position.add(this.points[0]),
            t.updateWorldMatrix(!1, !1),
            this.points.length >= 3) {
                var n = a.rotateToHorizontalPlane(this.points.map((function(e) {
                    return t.worldToLocal(e.clone())
                }
                )));
                t.rotateOnAxis(e.Z_NORMAL, n.points[1].angle())
            }
            var i = new o.PlaneGeometry(e.GRID_SIZE,e.GRID_SIZE,1)
              , r = new o.Mesh(i,e.GRID_MATERIAL);
            t.add(r),
            this.add(t)
        }
        ,
        e.GRID_MATERIAL_COLOR = 2105376,
        e.GRID_LINES_COLOR = 16777215,
        e.GRID_SIZE = 50,
        e.GRID_DIVISIONS = 100,
        e.Z_NORMAL = new o.Vector3(0,0,1),
        e.GRID_MATERIAL = new o.MeshBasicMaterial({
            color: e.GRID_MATERIAL_COLOR,
            opacity: .15,
            transparent: !0,
            side: o.DoubleSide,
            wireframe: !1,
            depthTest: !1,
            depthWrite: !1
        }),
        e
    }(o.Object3D);
    e.MeasurementGridObject3D = s
}
, function(t, e, n) {
    t.exports = n.p + "d143aded330ea211e9040fdeaad9a887.free_area_sprite.png"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(146)
      , a = n(4)
      , s = n(137)
      , c = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.createIcon = function() {
            e.icon || (e.icon = s.MeasurementObject3D.createSpriteIcon(n(1081)))
        }
        ,
        e.prototype.canCreatePlane = function() {
            return this.points.length >= 1
        }
        ,
        e.prototype.createPlane = function() {
            var t = this.points[0].position;
            this.plane = (new a.Plane).setFromNormalAndCoplanarPoint(o.AreaMeasurementObject3D.Z_NORMAL, t)
        }
        ,
        e.prototype.getIcon = function() {
            return e.icon
        }
        ,
        e
    }(o.AreaMeasurementObject3D);
    e.HorizontalAreaMeasurementObject3D = c
}
, function(t, e, n) {
    t.exports = n.p + "f52cae0f414e4f4c6a834b1e406e35d5.horizontal_area_polygon_sprite.png"
}
, function(t, e, n) {
    t.exports = n.p + "d582e1270c2a21f1e9dd3a4660d8723a.vertical_area_polygon_sprite.png"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(146)
      , a = n(4)
      , s = n(541)
      , c = n(137)
      , l = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.createIcon = function() {
            e.icon || (e.icon = c.MeasurementObject3D.createSpriteIcon(n(1084)))
        }
        ,
        e.prototype.canCreatePlane = function() {
            return this.points.length >= 1
        }
        ,
        e.prototype.createPlane = function() {
            this.plane = (new a.Plane).setFromNormalAndCoplanarPoint(o.AreaMeasurementObject3D.Z_NORMAL, this.points[0].position)
        }
        ,
        e.prototype.getIcon = function() {
            return e.icon
        }
        ,
        e
    }(s.RectangleMeasurementObject3D);
    e.HorizontalRectangleMeasurementObject3D = l
}
, function(t, e, n) {
    t.exports = n.p + "fb3ab9c94f62cf131c6573f56f3b6a21.horizontal_area_rectangle_sprite.png"
}
, function(t, e, n) {
    t.exports = n.p + "62fca11720049dda74b20178901ab62f.vertical_area_rectangle_sprite.png"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(217)
      , a = n(4)
      , s = n(137)
      , c = n(386)
      , l = n(257)
      , u = n(52)
      , d = n(153)
      , p = n(311)
      , h = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.deltaLineMaterial = new l.MeshLineMaterial({
                color: c.GUIDE_LINE_COLOR,
                transparent: !0,
                depthTest: !1,
                lineWidth: .01,
                opacity: 1,
                sizeAttenuation: 1,
                depthWrite: !1,
                dashArray: .05,
                dashOffset: 0,
                dashRatio: .2
            }),
            e
        }
        return r(e, t),
        e.prototype.markNotFresh = function() {
            t.prototype.markNotFresh.call(this),
            this.removeDeltaLines()
        }
        ,
        e.prototype.addPoint = function(e, n) {
            t.prototype.addPoint.call(this, e, n),
            this.addDeltaLines(),
            this.freshlyCreated = !0
        }
        ,
        e.prototype.getIcon = function() {
            return e.icon
        }
        ,
        e.prototype.putPointer = function(e) {
            t.prototype.putPointer.call(this, e),
            this.addDeltaLines(e)
        }
        ,
        e.prototype.dispose = function() {
            t.prototype.dispose.call(this),
            this.zDeltaTextSprite && this.zDeltaTextSprite.removeSpriteObject(),
            this.xyDeltaTextSprite && this.xyDeltaTextSprite.removeSpriteObject()
        }
        ,
        e.prototype.updateMeshScaleForViewport = function(e) {
            t.prototype.updateMeshScaleForViewport.call(this, e);
            var n = e.name === u.SplitViewportName.DEFAULT_VIEW;
            this.setDeltaLinesVisibility(n),
            n && (this.zDeltaTextSprite && this.zDeltaTextSprite.updateSpriteObject(e),
            this.xyDeltaTextSprite && this.xyDeltaTextSprite.updateSpriteObject(e))
        }
        ,
        e.prototype.dragObject = function(e, n, i) {
            i && (n = new a.Vector3(n.x,n.y,this.getOppositePoint(e).position.z));
            var r = t.prototype.dragObject.call(this, e, n);
            return this.addDeltaLines(),
            r
        }
        ,
        e.prototype.setMouseEventCallbacks = function(e, n, i, r, o, a) {
            var s = this;
            t.prototype.setMouseEventCallbacks.call(this, e, n, i, r, o, a),
            this.onPointDragEnd = function(t, e) {
                s.removeDeltaLines(),
                o(t, e)
            }
        }
        ,
        e.prototype.setHovered = function(e) {
            var n, i;
            t.prototype.setHovered.call(this, e),
            e ? this.addDeltaLines() : this.removeDeltaLines();
            var r = e ? p.RenderOrder.ABOVE_HIGHLIGHT : p.RenderOrder.BETWEEN;
            (null === (n = this.xyDeltaTextSprite) || void 0 === n ? void 0 : n.spriteObject) && (this.xyDeltaTextSprite.spriteObject.renderOrder = r),
            (null === (i = this.zDeltaTextSprite) || void 0 === i ? void 0 : i.spriteObject) && (this.zDeltaTextSprite.spriteObject.renderOrder = r)
        }
        ,
        e.prototype.createIcon = function() {
            e.icon || (e.icon = s.MeasurementObject3D.createSpriteIcon(n(1087)))
        }
        ,
        e.prototype.calculateCirclePosition = function(t) {
            return t
        }
        ,
        e.prototype.getOppositePoint = function(t) {
            return t === this.circleStart ? this.circleEnd : this.circleStart
        }
        ,
        e.prototype.addDeltaLines = function(t) {
            if (void 0 === t && (t = this.endPoint),
            !this.freshlyCreated) {
                this.removeDeltaLines();
                var n = this.calculateCirclePosition(t)
                  , i = new a.Vector3
                  , r = [this.startPoint, n].sort((function(t, e) {
                    return t.z - e.z
                }
                ))
                  , o = r[0]
                  , c = r[1];
                Math.abs(this.startPoint.z - n.z) < e.MEASURING_ACCURACY ? i.copy(c) : (i.set(c.x, c.y, o.z),
                this.zDeltaTextSprite = this.createDeltaLabel(new a.Line3(c,i).getCenter(new a.Vector3), Math.abs(c.z - i.z)),
                this.xyDeltaTextSprite = this.createDeltaLabel(new a.Line3(o,i).getCenter(new a.Vector3), o.distanceTo(i)),
                this.zDeltaHelperLine = s.MeasurementObject3D.createDottedLine(c, i, this.deltaLineMaterial),
                this.xyDeltaHelperLine = s.MeasurementObject3D.createDottedLine(o, i, this.deltaLineMaterial),
                this.add(this.zDeltaHelperLine, this.xyDeltaHelperLine, this.zDeltaTextSprite.spriteObject, this.xyDeltaTextSprite.spriteObject))
            }
        }
        ,
        e.prototype.createDeltaLabel = function(t, n) {
            return this.createTextSprite(t, this.UoMService.convert(n, d.MeasurementDomain.DISTANCE, 2, void 0, e.MEASURING_ACCURACY, !0), void 0, c.GUIDE_LINE_COLOR_HEX, c.GUIDE_LINE_COLOR_HEX, this.deltaElementsFontColor, this.noIconLabelPadding, p.RenderOrder.BETWEEN)
        }
        ,
        e.prototype.removeDeltaLines = function() {
            this.freshlyCreated || (this.removeLabels(this.zDeltaTextSprite, this.xyDeltaTextSprite),
            this.removeMeshes(this.zDeltaHelperLine, this.xyDeltaHelperLine))
        }
        ,
        e.prototype.setDeltaLinesVisibility = function(t) {
            var e, n;
            this.setMeshVisibility(t, this.zDeltaHelperLine, this.xyDeltaHelperLine, null === (e = this.zDeltaTextSprite) || void 0 === e ? void 0 : e.spriteObject, null === (n = this.xyDeltaTextSprite) || void 0 === n ? void 0 : n.spriteObject)
        }
        ,
        e.prototype.setMeshVisibility = function(t) {
            for (var e = [], n = 1; n < arguments.length; n++)
                e[n - 1] = arguments[n];
            for (var i = 0, r = e; i < r.length; i++) {
                var o = r[i];
                o && (o.visible = t)
            }
        }
        ,
        e.MEASURING_ACCURACY = .1,
        e
    }(o.DistanceMeasurementObject3D);
    e.FreeDistanceMeasurementObject3D = h
}
, function(t, e, n) {
    t.exports = n.p + "583917ff154f83c6f7dc2a470a8e7a01.free_distance_sprite.png"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(217)
      , a = n(137)
      , s = n(4)
      , c = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.getIcon = function() {
            return e.icon
        }
        ,
        e.prototype.createIcon = function() {
            e.icon || (e.icon = a.MeasurementObject3D.createSpriteIcon(n(1089)))
        }
        ,
        e.prototype.calculateCirclePosition = function(t) {
            return new s.Vector3(t.x,t.y,this.startPoint.z)
        }
        ,
        e
    }(o.DistanceMeasurementObject3D);
    e.HorizontalDistanceMeasurementObject3D = c
}
, function(t, e, n) {
    t.exports = n.p + "3a167e1c80554e2dc13b68eda20db6a7.horizontal_distance_sprite.png"
}
, function(t, e, n) {
    t.exports = n.p + "29def06d2d56645e9e7de3b76545eb4a.vertical_distance_sprite.png"
}
, function(t, e, n) {
    t.exports = n.p + "87ccfb7e7cdbeb899c99456a4da61326.free_area.svg"
}
, function(t, e, n) {
    t.exports = n.p + "ac0e0b5511699ec66145c4153f5c0023.horizontal_area_polygon.svg"
}
, function(t, e, n) {
    t.exports = n.p + "6c9b0975d6ba095cfccbb03860ff45a9.vertical_area_polygon.svg"
}
, function(t, e, n) {
    t.exports = n.p + "de3fd9d7dd7f30358753a7bf817833ae.horizontal_area_rectangle.svg"
}
, function(t, e, n) {
    t.exports = n.p + "5bba7dd7bc6240ea288672b61c3031d1.vertical_area_rectangle.svg"
}
, function(t, e, n) {
    t.exports = n.p + "1540b1aeaab2bc7a19ec443260a1fa0e.free_distance.svg"
}
, function(t, e, n) {
    t.exports = n.p + "843bab5c0f25be1c96cc7437f5a78dfd.horizontal_distance.svg"
}
, function(t, e, n) {
    t.exports = n.p + "02d94ca661791fcac14ba92f8dcecbee.vertical_distance.svg"
}
, function(t, e, n) {
    "use strict";
    var i = n(1100)
      , r = n(1104)
      , o = n(1105);
    a.all = s,
    t.exports = a;
    function a(t, e) {
        return s(t, e)[0][0]
    }
    function s(t, e) {
        var n, a = e || {}, s = 10, f = [].concat(a.whitelist || [], a.only || []), m = [].concat(a.blacklist || [], a.ignore || []);
        return null !== a.minLength && void 0 !== a.minLength && (s = a.minLength),
        !t || t.length < s ? d() : (n = function(t, e) {
            var n, i, r, o = -1;
            for (i in e)
                (r = c(t, e[i])) > o && (o = r,
                n = i);
            return [n, o]
        }(t = t.slice(0, 2048), r))[0]in o ? function(t, e) {
            var n = e[0][1]
              , i = 300 * t.length - n
              , r = -1
              , o = e.length;
            for (; ++r < o; )
                e[r][1] = 1 - (e[r][1] - n) / i || 0;
            return e
        }(t, function(t, e, n, i) {
            var r, o = [];
            for (r in e = function(t, e, n) {
                var i, r;
                if (0 === e.length && 0 === n.length)
                    return t;
                for (r in i = {},
                t)
                    u(r, e, n) && (i[r] = t[r]);
                return i
            }(e, n, i))
                o.push([r, l(t, e[r])]);
            return 0 === o.length ? d() : o.sort(h)
        }(i.asTuples(t), o[n[0]], f, m)) : 0 !== n[1] && u(n[0], f, m) ? p(n[0]) : d()
    }
    function c(t, e) {
        var n = t.match(e);
        return (n ? n.length : 0) / t.length || 0
    }
    function l(t, e) {
        for (var n, i, r = 0, o = -1, a = t.length; ++o < a; )
            (n = t[o])[0]in e ? (i = n[1] - e[n[0]] - 1) < 0 && (i = -i) : i = 300,
            r += i;
        return r
    }
    function u(t, e, n) {
        return 0 === e.length && 0 === n.length || (0 === e.length || -1 !== e.indexOf(t)) && -1 === n.indexOf(t)
    }
    function d() {
        return p("und")
    }
    function p(t) {
        return [[t, 1]]
    }
    function h(t, e) {
        return t[1] - e[1]
    }
    !function() {
        var t, e, n, i, r, a;
        for (r in o)
            for (e in t = o[r]) {
                for (a = (i = t[e].split("|")).length,
                n = {}; a--; )
                    n[i[a]] = a;
                t[e] = n
            }
    }()
}
, function(t, e, n) {
    "use strict";
    var i = n(1101).trigram
      , r = n(1102)
      , o = n(1103)
      , a = {}.hasOwnProperty;
    function s(t) {
        return null == t ? "" : o(r(String(t).replace(/[\u0021-\u0040]+/g, " "))).toLowerCase()
    }
    function c(t) {
        return i(" " + s(t) + " ")
    }
    function l(t) {
        for (var e, n = c(t), i = n.length, r = {}; i--; )
            e = n[i],
            a.call(r, e) ? r[e]++ : r[e] = 1;
        return r
    }
    function u(t, e) {
        return t[1] - e[1]
    }
    e.clean = s,
    e.trigrams = c,
    e.asDictionary = l,
    e.asTuples = function(t) {
        var e, n = l(t), i = [];
        for (e in n)
            i.push([e, n[e]]);
        return i.sort(u),
        i
    }
    ,
    e.tuplesAsDictionary = function(t) {
        var e, n = t.length, i = {};
        for (; n--; )
            e = t[n],
            i[e[0]] = e[1];
        return i
    }
}
, function(t, e, n) {
    "use strict";
    function i(t) {
        if ("number" != typeof t || isNaN(t) || t < 1 || t === 1 / 0)
            throw new Error("`" + t + "` is not a valid argument for n-gram");
        return function(e) {
            var n, i = [];
            if (null == e)
                return i;
            if (e = e.slice ? e : String(e),
            (n = e.length - t + 1) < 1)
                return i;
            for (; n--; )
                i[n] = e.slice(n, n + t);
            return i
        }
    }
    t.exports = i,
    i.bigram = i(2),
    i.trigram = i(3)
}
, function(t, e, n) {
    "use strict";
    t.exports = function(t) {
        return String(t).replace(/\s+/g, " ")
    }
}
, function(t, e) {
    (e = t.exports = function(t) {
        return t.replace(/^\s*|\s*$/g, "")
    }
    ).left = function(t) {
        return t.replace(/^\s*/, "")
    }
    ,
    e.right = function(t) {
        return t.replace(/\s*$/, "")
    }
}
, function(t, e) {
    t.exports = {
        cmn: /[\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u3005\u3007\u3021-\u3029\u3038-\u303B\u3400-\u4DB5\u4E00-\u9FEF\uF900-\uFA6D\uFA70-\uFAD9]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/g,
        Latin: /[A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7BF\uA7C2-\uA7C6\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uAB66\uAB67\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A]/g,
        Cyrillic: /[\u0400-\u0484\u0487-\u052F\u1C80-\u1C88\u1D2B\u1D78\u2DE0-\u2DFF\uA640-\uA69F\uFE2E\uFE2F]/g,
        Arabic: /[\u0600-\u0604\u0606-\u060B\u060D-\u061A\u061C\u061E\u0620-\u063F\u0641-\u064A\u0656-\u066F\u0671-\u06DC\u06DE-\u06FF\u0750-\u077F\u08A0-\u08B4\u08B6-\u08BD\u08D3-\u08E1\u08E3-\u08FF\uFB50-\uFBC1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFD\uFE70-\uFE74\uFE76-\uFEFC]|\uD803[\uDE60-\uDE7E]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB\uDEF0\uDEF1]/g,
        ben: /[\u0980-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09FE]/g,
        Devanagari: /[\u0900-\u0950\u0955-\u0963\u0966-\u097F\uA8E0-\uA8FF]/g,
        jpn: /[\u3041-\u3096\u309D-\u309F]|\uD82C[\uDC01-\uDD1E\uDD50-\uDD52]|\uD83C\uDE00|[\u30A1-\u30FA\u30FD-\u30FF\u31F0-\u31FF\u32D0-\u32FE\u3300-\u3357\uFF66-\uFF6F\uFF71-\uFF9D]|\uD82C[\uDC00\uDD64-\uDD67]|[㐀-䶵一-龯]/g,
        kor: /[\u1100-\u11FF\u302E\u302F\u3131-\u318E\u3200-\u321E\u3260-\u327E\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/g,
        tel: /[\u0C00-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C77-\u0C7F]/g,
        tam: /[\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BFA]|\uD807[\uDFC0-\uDFF1\uDFFF]/g,
        guj: /[\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AF1\u0AF9-\u0AFF]/g,
        kan: /[\u0C80-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2]/g,
        mal: /[\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4F\u0D54-\u0D63\u0D66-\u0D7F]/g,
        mya: /[\u1000-\u109F\uA9E0-\uA9FE\uAA60-\uAA7F]/g,
        ori: /[\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B77]/g,
        pan: /[\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A76]/g,
        amh: /[\u1200-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u137C\u1380-\u1399\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]/g,
        tha: /[\u0E01-\u0E3A\u0E40-\u0E5B]/g,
        sin: /[\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2-\u0DF4]|\uD804[\uDDE1-\uDDF4]/g,
        ell: /[\u0370-\u0373\u0375-\u0377\u037A-\u037D\u037F\u0384\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03E1\u03F0-\u03FF\u1D26-\u1D2A\u1D5D-\u1D61\u1D66-\u1D6A\u1DBF\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4\u1FF6-\u1FFE\u2126\uAB65]|\uD800[\uDD40-\uDD8E\uDDA0]|\uD834[\uDE00-\uDE45]/g
    }
}
, function(t) {
    t.exports = JSON.parse('{"Latin":{"spa":" de|os |de | la|la | y | a |es |ón |ión|rec|ere|der| co|e l|el |en |ien|ent|cho|ech|ció|aci|o a|a p| el|al |a l|as |e d| en|ona|na |da |s d|nte| to|ad |ene|con| su| pr|tod| se|ho | pe|los|per|ers| lo| ti|cia|o d|n d|a t|cio|ida|res| es|tie|ion|rso|te | in|do |to |son|dad| re| li|e s|tad|que|pro|est|oda|men|nci| po|a e| qu|ue | un|ne |s y|lib|n e|su | na|s e|ia |nac|e e|tra|or | pa|ado|a d|nes|se |ra |a c|com|nal|por|er |a s|ual|rta| o |ber|les|one|rá |des|s p|dos|sta|ser|ter|ar |era|ibe|ert|ale| di|a a|nto|l d|del|ica|hos|o e|io |imi|oci|n c|s n|ant|cci|re |e c|y l|ame| as|mie|enc| so|o s|ici|las|par|s t|ndi| cu|ara|dic|bre|una|tos|ntr|l p|s l|e a|pre|cla|o t|a y|omo|man|y a|ial|so |nid|n l|n p| al|mo |e p|s s| ig|igu|gua|uma| fu|nta|y e|soc|o p|no |ali|ten|s a|ade|hum|ran|l t|n t|s c|ria|dis|d d| ca|cas|das|ada|ido|l e|y d|tiv|vid|mbr|a i| hu|fun|und|eli|s i| ma|nda|e i| ha|uni|nad|a u|sar|s o| ac|die|qui|rac|ndo| tr|ind| me|ori|tal|odo|ari|lid|esp|o y|tic|ca |un |esa|cti|cua|ier|ta |lar|ons|ont|iva|ide|med|edi|d y|ele|nos|ist|l m|s h|ecc|sti|tor| le|seg|cie|r e|n a|ito|ios|rse|ie |o i|a o|o l|pen|tri|rim|l y|ami|lig|erá|o c|rot|ote|mat|ond|ern|n s|e h|an |ect|lo |ibr|ple|sus|us ","eng":" th|the| an|he |nd |and|ion| of|of |tio| to|to |on | in|al |ati|igh|rig|ght| ri|or |ent|as |ll |is |ed |in | be|e r|ne |ver|one|s t|all|eve|t t| fr| ha| re|s a|ty |ery|d t| pr| or|e h| ev| co|ht |e a|ng |his|ts |yon|be |ing|ce |ryo| sh|n t|fre|ree|men|her|pro|has|nal|sha|es |nat|y a|for| hi|hal|n a|f t|nt | pe|n o|s o| fo|nce|d i|er |e s|res|ect|ons|ity|l b|ly |e e|ry |an |e o|ter|ers|e i| de|cti|hts|eed|edo|dom| wh|ona|re | no|l a| a |e p| un| as|ny |d f| wi|nit| na|nte| en|d a|any|ere|ith| di|e c|e t|st |y t|ns |ted|sta|per|th |man|ve |om |nti|s e|t o|ch | ar|d o|equ|soc|oci|wit|ess|ote|ial|rea| al| fu| on| so|uni|oth| ma| ac| se|enc| eq|qua|ual|ive|lit|thi|int| st|tat|r t|t a|y o|e w|hum|uma|und|led|cia|l o|e f| is|le |f h| by|by | la|ali|are|y i|con|te | wo|eas| hu|ave|o a|com| me|ic |r a|ge |f a|ms |whe| ch|en |n e|rot|tec|tit|s r| li|o t|ple|s d|rat|ate|t f|o o|wor| fa|hou|dis|t i|nda|nde|eli|anc|rom| su|cie|no |ary|inc|son|age|at |oms|oun|nst|s w|d w|ld |n p|nta|l p|tan|edu|n s|duc|itl|tle|whi|hic|ich|ble|o s|imi|min|law|aw |gni|iti| ot|g t|eme|se |e b|ntr|tra| pu|d n|s i|act|e d|ort| he|r s|cou|unt|pen|ily| ag|ces|rit|it |din|s f|hav|ind| ed|uca|cat|ren|ien|tho|ern|d e|omm","por":"os |de | de| a | e |o d|to |ão | di|ent|da |ito|em | co|eit|as |dir|ire|es |rei| se|ção|ade|a p|e d|s d|dad|men|nte|do |s e| pe| pr|dos| to| da|o e| o |a a|o a|ess|tod|con| qu|que| do|e a|te |al |res|ida|m d| in|er | ou|sso| re| na|a s| po|uma| li|cia| te|pro|açã|e e|ar |a d|a t|ue | su| es|ou |s p|a e|tos|des|com|ra |ia |tem|no | pa|ame|nto|e p|is |est|oda|na |s o|tra|ões|das|pes|soa|o s|s n|o p|ser|s a| à |ais| as| em|o o|e o|ber|oa |o t|ado|a c|sua|ua | no|ter|man|e s| os|s s|e n|çõe|ica|lib|ibe|erd|rda|nci|odo|nal|so |ntr|or |ura|s t|o c|ona| so| ao|hum|ual|sta|ma |ons|a n|era|e t|pre|ara|r a|por| hu|cio|o à|ria|par|ind|e c|ran|gua| um|o i|a l|s c|ndi|m a| en|und|nos|e r|ano|aci|ion|soc|oci|nid|sen|raç| ac|ndo|nsi| ig|igu| fu|fun|m o|nac|per|ali|rec|ime|ont|açõ|int|r p| al|um | me|a i|s h|nta|rio|cçã|ere|pel|l d|a o| ex|pri|uni|ese|ada| ma|ant|ide|nda| fa|am |e f|lid|io |ém |ita|iva|omo|o r|esp|a f|m p|lic|ca |s f|naç|pod|ode|ver|a q|r e|tad|tiv|vid|e l|o q|r d|e i|seu|eli|mo |ecç|s i|ial|ing|ngu|s l| vi|ist|ta |eci|ênc|a m| ca|der|ido|ios| un|dis|cla|qua|se |ati|sti|r o|sid|roc| tr|sem|o n|ao |dam|ens|tur|ico|rot|ote|tec|sse|l e|ena|for| pl| ni|nin|gué|uém|não|ela|tro|ros|ias","ind":"an |ang| da|ng | pe|ak | ke| me| se|ata|dan|kan| di| be|hak|ber|per|ran|nga|yan|eng| ya| ha|asa|men|gan|ara|nya|n p|n d|n k|a d| at|tan|at |ora|ala| ba|san|erh|ap |ya |rha|n b| ma|a s|pen|g b|eba|as |aan| or|ntu|uk |eti|tia|tas|aka|set|ban|n s| un|n y| te|ter|iap|tuk|k m|beb|bas|lam| de|n m|k a|keb|am |i d|ama|unt|ah |dal|end|n h|p o|den|sa |dak|mem|ika|ra |ebe|pun|ri |nda|ela|ma | sa|di |a m|n t|k d|ngg|n a|tau|asi| ti|eri|gar|man|ada|al |um |un |ari|au |lak|a p|ta |a b|ngs|ole| ne|neg|dar|ers|gsa|ida|leh|ert|k h|ana|sam|sia|i m|ia |dap|era|dil|ila|tid|eh |h d|atu|bat|uka|aha|a a|ai |g d|lan|tu |t d|uan| in|ena|har|sem|ser|kat|erl|apa|erb|uat|na |kum|g s|ung|nan|emp|rta|l d|mas|ega|n u| hu|ka |eni|pat|mba|adi| su|aga|ent|nta|huk|uku|rga|ndi|ind|i s|ar |sua|aku|rus|n i|ni |car|si |nny|han| la|in |u d|lah|ik |gga|ua |ian|ann|lai|usi|emb|rik|mer|erk|arg|emu|dun|dip|nas|lua|aru|ema|a u|min|mat|aya|kes|rak|eka|a t|rka|a k|iba|rbu|rma|yat|ini|ina|anu|nus|mua|s p|ut |lin| ta|us |ndu|da |pem|ami|sya|yar|nak|das|k s|kel|ese|mel| pu|ern|a n|aik|uar|t p|g p|ant|ili|dik| an|tin|ing|ipe|tak|iny|ain| um| ja|aks|sar|rse|aup|upu|seo|eor|g m|g t|dir|pel|ura|bai|aba|erd|eca|h p|kep|m m|jam|umu|mum","fra":" de|es |de |ion|nt |et |tio| et|ent| la|la |e d|on |ne |oit|le |e l| le|s d|t d|ati|e p|roi|it | dr|dro| à | co|té |ns |te |e s|men|re | to|tou| l’|con|que|les| qu| so| pe|des|son|ons|s l| un| pr|ue |s e| pa|e c|ts |t l|onn| au|e a|e e|eme| li|ant|ont|out|ute|ers|res|t à| sa| a |ce |per|tre|a d|er |cti| en|ité|lib| re|en |ux |lle|rso| in| ou|un |à l|nne|nat|une|ou |n d|us |par|nte|ur | se| d’|dan|ans|s s|pro|e t|s p|r l|ire|a p|t p|its|és |ond|sa |a l|nce|é d| dé|nal|aux|omm|me |ert| fo| na|iqu|ect|ale| da| ce|t a|s a|mme|ibe|ber|rté|s c|e r|al |t e| po|our|com|san|qui|e n|ous|r d| ne|fon|au |e o|ell|ali|lit| es| ch|iss|tes|éra|air|s n| di|ter|ui | pl|ar |aut|ien|soc|oci|tra|rat|êtr|int|été|pou|du |est|éga|ran|ain|s o|eur|ona|rs |anc|n c|rai|pri|cla|age|nsi|e m|s t| do|bre|sur|ure|ut | êt| ét|à u|ge |ess|ser|ens| ma|cia|l e| su|n p|a c|ein|st |bli| du|ntr|rés|sen|ndi|ir |n t|a s|soi| ég|ine|l’h|nda|rit| ré|t c|s i|il |l’a|e q| te|é e|t s|qu’|ass|ais|cun|peu|ée |tat|ind|t q|u d|n a| ac|tés|idé|l n|ill| as|’en|ign|gal|hom|nta| fa|lig|ins| on|ie |rel|ote|t i|n s|sse| tr|n e|oir|ple|l’e|s é|ive|a r|rec|nna|ssa| mo|s u|uni|t ê|pré|act| vi|era|sid| nu|e f|pay|’ho|cat|leu|ten|rot|tec|s m","deu":"en |er |der| un|nd |und|ein|ung|cht| de|ich|sch|ng | ge|ie |che| di|die|ech|rec|gen|ine|eit| re| da|ch |n d|ver|hen| zu|t d| au|ht | ha|lic|it |ten|rei| be|in | ei| in| ve|nde|auf|ede|den|n s|zu |uf |ter|ne |fre| je|jed|es | se| an|n u|and|sei|run| fr|at |s r|das|hei|hte|e u|ens|r h|nsc|as |nge| al|ere|hat|men|lle|nte|rde|t a|ese|ner| od|ode| we|g d|n g|all|t u|ers| so|d d|n a|nen|te |lei| vo|wer| gr|ben|ige|e a|ion| st|ege|le |cha| me|ren|n j|haf|aft| er|erk|bei|ent|erd| si|kei|tig|eih|ihe|r d|len|on |n i|lun| gl|chu|e s|ist|st |unt|ern|tli|gem|ges|ft |ati|tio|gru|end|ies|mit|eic|sen|r g|e e|ei | wi|n n| na|sta|gun|ite|n z|r s|gle|chl|lie|mei|em |uch|nat|n w|urc|rch|de |hre| sc|sse|ale|ach|r m|des|n e|spr|t w|r e|d f| ni| du|dur|nie| mi|ied|fen|int|dar|e f|e g|geh|e d|f g|t s|ang|ste|hab|abe|h a|n v|alt|tz |hli|sic|her|nun|eme|ruc|taa|aat|he |e m|erf|ans|geg| is|tun|pru|d g|arf|rf |n o|ndl|ehe|e b|h d|d s|dig|arb|wie|r b| ih|r w|nsp|ber|t i|r a|r v|igk|gke|bes|n r|str|gew|rbe|ema|e v|n h| ar|rt |ind|n f|ins|esc|ieß|ken|ger|eru|ffe|ell|han|igu|man|sam|t g|ohn|hul|rst|tra|rli|lte|hut|utz|ls |ebe|von|r o|e i|nne|etz|d a|rn |isc|sel| fa|one|son|et |aus|r i|det|da |raf|iem|e z|lan|sow","jav":"ng |an |ang| ka|ing|kan| sa|ak |lan| la|hak| ha| pa| ma|ngg|ara|sa |abe|ne | in|ant|n k| ng|nin|tan|nga| an|ata|en |ran|man| ba|ban|ane|ong|ra |n u|hi |nth| da|ake|ke |thi|ung|uwo|won|ngs| uw|asa|ben|gsa|sab|ana|aka|beb|nan|a k|nda|g p|adi|at |awa|san|ni |pan| be|dan|eba|g k|e k|ani|bas|g s|dha|aya| pr|gan|mar|di |ya |wa |g u|n s|ta |a s| wa|arb|e h| na|a n|a l|n p|a b|yan| ut|n n|ah |asi| um|g d|as |han|g n| tu|dar|rbe|wen|ggo| di|dak|mat|sar|eni| un|und|iya|a a|k h|kab|ka |be |uma|art|ora|ngk|i h|ala|rta|n b| or|n m|gar|kar|yat|al |g b|na |a m|n i|ega|ina|kak|g a|pra| ta|gge|ger|ena|kat|kal|a p|i k|tum|oni|nya| ne|adh|g m|duw|uwe|dad|kas| pe| si|aga|uta|k k|pa |and|nun|i l|ngu|go |nal| ke|n a|uju|anu|ama|a d|i p|t m|er | li|per|iba|min|sak|apa|war|ha |pad|ggu|gay|ras|taw|ind|eng|a u|we | bi|n l|ali|awi|neg|awe|bak|g t|e p|ndu|bis| ku|ih |ase| me|iji|pri|bad|eh |i t|uwa|ron|ndh|mra|ar | pi|ur |isa|mba|sin|aba|g l|ebu|n t|ika|men|ini|lak|a w|arg|ku |ami|ayo|a i|nas|liy|e s| we|rib|ngl| ik|k b|e d|rga|rap|tin| lu|aku|bed|k a|h k|yom| as| nd|eka|il | te|umu|rak|ut |dil|i w|i s|jin|kon|jud|wae|ae |kap|uha|uto|tow|gka|umr|n d| ti|eda|gon|ona| mi|ate|mum|um |but|r k|wat|si |k p|k l|gaw","vie":"ng |̣c |́c | qu| th|à |nh | ng|̣i | nh| va|và|̀n |uyê| ph| ca|quy|yề|ền|̀i | ch|̀nh| tr| cu|ngư|i n|gươ|ườ|ời|́t | gi| co|ác|̣t |ó |c t|ự |n t|cá|ông| kh|ượ|ợc| tư| đư|đươ|iệ|ìn|́i | ha| đê|i đ|có|gia| mo|mọ|ọi|như|pha|n n|củ|ủa|̉a |̣n | ba|n c|̀u |̃ng|ân |ều| bi|hôn|ất|tự|g t| vi|n đ|đề|t c| la| ti|nhâ| đô|u c|hiê|bả|ên | tô|hân| do|do |́ q|ch |̀ t| na|́n |ới|ay | hi|àn|̣ d| đi|g n|hay|há| mô|ội|hữ|uố|ốc|n v|̣p |́p |quô|thư| ho|nà|ị |́ch|̀ng|ào|̀o |̉n |ôn |i c| hô|c đ|i v|khô|c h|i t|g v| đa|mộ|ột|́ng|tro|ữn|ướ|ia |̣ng|ản|̉ng|h t|hư |ện|ộc|g c|ả | đo|̉ c|là|c c|n h|n b|hà|iế|̣ t| cô| vê|ức|t t|ã |hộ| vơ|iên|g đ|̉i | bâ|̀y |ớc|a c|̉m | sư|áp|ật|viê|vớ|hươ|tha|ực|h v|ron|ong|g b|qua|iá|̀ c|ể |h c|a m|ế |uậ|ảo|̉o |sự|o v|cho|phâ|n l| mi|hạ|côn|o c|̃ h| cư|ục|̀ n| hơ|i h|c q|á |ại|bị|cả|c n| lu|ín|h đ| xa|g h|độ|bấ| nư|m v|thô| tâ|tộ|hả|oà|áo|́o |ốn|ệ |thu|mì| du|̣ c|xã|c p|ải| hư|́ c|ho |y t|o n|n p|ở |hứ|iể|y đ|hấ|ối|chi|án|ề |́ t|ệc|cũ|ũn|tiê|hợ|ợp|o h|hoa|ày|ai |ết|̉ n|c b|đó| đâ|luâ|đố|kha|về|̉ t|c l|̀ đ|i b|nươ| bă|dụ|họ| ta|thê|tri|hí|́nh|g q|p q|n g|o t|c g|hự|yên|i l|́u |an | cơ","ita":" di|to |ion| de| in|la |e d|ne |di | e |zio|re |le |ni |ell|one|lla|a d|rit|o d|itt|del| co|dir|iri|ti |ess|ent| al|azi|tto|te |i d|i i|ere|tà | pr|ndi|e l|ale|ind|o a|e e|gni|e i|nte|con|li |a s| un|i e|ogn|men|uo | og| ne|idu|ivi|e a|div|vid|duo| ha|tti| es|a p|no | li|za |pro|ato|all|sse|per|ser| so|i s| la| su|e p| pe|a l|na |ibe|ali| il|il |e n|lib|ber|e c|ia |ha |che|e s|o s|o e| qu|in |nza|ta |nto| ri|he |o i|oni|sta| o | a |o c|nel|e o|naz|so |o p|o h|gli| po|i u|ond|i p|ame|ers|i c|ver|ro |ri |era|un |lle|a c|ua | ch|ssi|una|el |i a|ert|rtà| l |a a|tat|ant|dis|ei |a e| si| ad|à e|nal| da| le|est|pri|nit|ter|ual| st|ona|are|ità|dei|cia|gua|anz|tut| pa|al | ed| re|sua|ono| na|uni|raz|si |ita|com|ist|man|ed |der|ad |i o|enz|soc|que|res| se|o o|ese| tu|i r|io |ett|à d|on |dic|sia|rso|se |uma|ani|rio|ari|ial|eri|ien|ll |oci|rat|tra|ich|pre|qua|do | um|a t|i l|zza|sci|tri|er |ico|pos|a n|ara|o n|son|att| fo|fon|nda|utt|par|nti|sti|nes|n c| i |chi|hia|iar|int|sen|e u|str|uzi|ati|a r|rop|opr|egu| me|ra |ann| ma| eg|ost|bil|isp|ues| no|ont|rà |tta|ina|ezz|l i|tal| ra|gio|nno|a i|d a|i m|ria| cu|ore|e r|izi|dev|tan|lit|cie|non|sso|sun|ite|ica|l d|ide|lia|cos|i n|nta|a f| is|l p|art","tur":" ve| ha|ve |ler|lar|ir |in |hak| he|her|bir|arı|er |an |eri| bi|ya |r h|ak |ın |eti|iye|ası| ka|yet| ol|tle|ını|ara|eya|akk|kkı|etl|sın|na |esi|de |ek | ta|nda|ini| bu|rın|ile|vey|kla|rin|ne |e h|ır |ine|e k|ına|sin|dır|ere| sa|n h|ama|ınd|nın|mas| ge|le |ı v| va|erk|rke|lma|nma|lan| te|tin|akl|rle|nin|en |e m|ard|a v|ill| de|let|da |k h| me|aya| şa|k v| hü|riy|e b|kın|nı |et |dan|san|e d|var|rdı|kes|si |mil|e a| il|hür|ana|ret|dir| se|şah|mes|irl| mi|ola|bu |ürr|rri|n e|n i|kı |n v|mek| ma|mak|lle|lik|nsa|li |ı h| iş| ed| iç|n b|kar| ba|ala| hi|eli|ulu|a h|eme|re |e s|ni |e t|n k|a b|iş |rak|evl|e i|etm|ik |r ş|ar | eş|olm|un |hai|aiz|izd|zdi|im |dil|n t|nde| gö|ilm|lme|tir|mal|hiç|e g|unm|ma |ele|a i|e e|eşi|şit|ık |mel| et| ko|n s|ahs|i v|sı | an|el |yla|la |ili|r v|rı |anı|ede|ket| ya|lun|may|se |ins|tim|edi|siy|t v|içi|çin|a k|nla|r b|miş|i b|yan|ame|tme| da|bul|mem|eml|eke|mle| ki| ke|lek| in| di|din|uğu|n m|it |ser|ind| mü|arş|rşı|es |ger|a s|len| ay| ku|vle|erd|eye|ye |oru|nam|ken| uy|a m|ün |r a|i i|tür|i m|kor| so|al |hsı|cak|rme|nun|lam|eni|dev|rde|ri |mey|a d|i o|kim|ims|mse|end|ndi|rek|ahi|il |hay|lık|e v|iç |sız| öğ|öğr|ğre| bü|büt|ütü|tün|anl|alı|şma|k g|at |den|i s","pol":" pr|nie| i |ie |pra| po|ani|raw|ia |nia|go |wie| do|ch |ego|iek|owi| ni|ści|ci |awo|a p|do | cz|ośc|ych| ma|ek |rze|prz| na|wo | za| w |ej |noś|czł|zło|eni| je|wa |łow|i p|wol|oln| lu|rod| ka|wsz| wo|lno|y c|ma |każ|ażd|ny |dy |o d|stw|owa|żdy| wy|rzy|ecz|sta| sw|e p|twa|czn|dzi|i w|szy|zys|na |ów |lub|ub |a w|k m|est| sp|kie|wan|ają| ws|pow|e w|spo|nyc|pos|rac|a i|cze|yst|ać |neg|sze|ne |mi |aro|ńst| ja|jak|o p|pod| z |acj|obo| ko|i i|nar|i n| ro|awa| ró|zy |dow|zen|zan|zne|zec|jąc|iej|cy |rów|nej|odn|nic|czy|o s|no |ony|aw |i z|ówn|odz|jeg|o w|edn|o z|aki|o o|a s| st|ni |bez|owo| in|ien|eńs|ami| or|dno|zie|mie| ob|kol|stę|tęp|i k|ez |w c|poł|ołe|łec|ym |orz|jed|o u| os|olw|lwi|wia|ka |owy|owe|y w| be|o n|jes|wob|wyc|a j| od|zna|inn|zyn|aln|któ|cji|ji |się|i s|raz|y s|lud| kr|ją |cza|zes|nik|st |swo|a o|sza|ora|icz|kra|a z|h p|i o|ost|roz|war|ara|że |lni|raj| si|ię |e o|a n|em |eka|stk|tki|pop|ą p|iec|ron|kow|odo|w p|peł|ełn|ran|wni|dni|ows|ech|gan|dów|zon|pie|a d|i l| kt|tór|ini|ejs| de|dek|ywa|iko|z w|god|ków|adz|dst|taw| to|trz|e i|ich|dzy|by |bod|iu |nan|h i|chn|zeń|y z|ano|udz|ieg|w z|ier|ale|a k|z p|zaw|ekl|kla|lar|any|du | zw| go|o r|to |az |y n|ods|ymi|ju |och|nau|wej|i m","gax":"aa |an |uu | ka|ni |aan|umm|ii |mma|maa| wa|ti | fi|nam|ta |tti| na|saa| mi|fi |rga|i k|a n| qa|dha|iyy|oot|mir|irg|in |raa|qab|a i|kan|a k|isa|chu|akk|amu|aba|a f|huu|kam| ta|kka|amn|ami| is|a a|mni|att| bi|yaa|ach|yyu|yuu|ee |miy|wal|waa|ga |aat|ata|a e|tii|oo | ni| ee|moo|ba |ota| ak|a h| ga|i q| dh|daa|a m|haa|ama|i a|a b|yoo|ka |kaa| hi|aas|sum|u n| uu|arg| hu|man| ha| ar| ke| yo| ba|ees|i i|taa|uuf|uf |ada|iin|i f|rra|ani|a w|i w| ad|da |nya|a u|irr|na |hun|isu|hin| ma| ho|ess|und|i m|i b|bar|is |een|ana|mu |bu |i d| sa|f m|add|sa |eeg| ir|i h|n h|u a|aad| la|al |ala|udh|ira|hoj|kee|goo| ya|ook|abu|gac|mum|as |itt|nda|see|n t|n i|uum|n k|ra |rgo|ara|a q|ums|muu|mat|a d|nii|sii|ssa|ati|a g|asu|biy|yya|eef|haw| da| mo|tum|a t|u h|gar|uma|a s|n a|n b|baa|awa|nis|eny|u y|roo|mmo|gam|sat|abs|n m|tee|nna|eer|bir| ku| qo|bil|ili|lis|otu| to|kko|n w|ali|rum|msa|rka| fu|amm|gaa|aaf|era|ya | ye|yer|ero|oti|kun|un |jii|ald|i y|ant|suu|n d|tok|okk|ame|mee|nni|tan| am|lii|n u|aru|lee|gum|ddu|i g|u m|oji|ura|lda|lab|ila|laa|aal|n y|ef |chi|uud| qi|qix|dar|ark|dda|gal|u b| ji|jir|han|art|arb|asa|ega|tam|hii|ffa| se| bu|faa|ndi|n g|bat|oka|kar| mu|mur|aja|uun|naa|sad|a l|lam|ken|enn|u f|egu","swh":"a k|wa |na | ya| ku|ya | na| wa|a m| ha|i y|a h|a n|ana|ki |aki|kwa| kw|hak| ka| ma|la |a w|tu |li |a u|ni |i k|a a|ila| ki|ali|a y|ati|za |ifa|ili| mt|ke | an|kil|kat|mtu|ake|ote|te |ma |ika|ka |we |a s|yo |i n|fa |ata|e k|ama|zi |u a|amb|ia |kut|ina|u w|azi| yo|i z|asi| za|o y|au |yak|uhu|ish|tik|ha |wat| au|u k|e a|mba|hur| bi|ara|sha|uru|mu | as| hi|u n|hi |ru |tai|aif|a b|hal|ayo|cha| uh|i h|yot| ch|awa|chi|atu|e n| zi|u y|ngi|mat|shi|ani|e y|sa |eri|ja |uli| am|ele|i a|end|o k| sh|ima|ami|oja|a t| ta| nc|nch|any|a j|ham|wan|ada|uta|i w|iki|ra |moj|ii |ari|kuw|uwa|ye | la| wo|o h| sa|ti |wak|she|iwe|kan|nay|eza|iri|iwa|fan|bu |i m|uto|lim|ao |her|ria|wen|kam|di | ja|jam| ni|ing|a l|wot|bin|amu|dha|o w|ahi|kaz|zo |da |adh|si | hu|ri |bil|e m|aka|e w|ang|ini|agu|sta|a z|kup|kul|lin|ind|ne |aji|zim|nya|kus|har|nye|asa|nad|dam|rik|iyo| ba|bar| nd|nde|ita|ta |gin|ine|uu |mwe|maa|ndi|kuf|o n|u h|i s|uzi|nga| ye|tah|sil|imu| ut|azo|esh|uni|taa|aar|rif|hii|wez|uba|wam|ush|mbo|bo |ibu|lez|wal|saw|kos|e b|a c| si|aza|tok|oka|tak|eng|dhi|ala|hir|yan|izo|ten|guz| mw|liw|ndo|oa |laz|aha|uku|ian|eli|mam|ua |ndw|zin|aba|pat|del|i b|ufu|nda|a i|mai|ais| um|man|ba |u m|kuh|zwa|sia|tan|taw|e i","sun":"an |na |eun| ka|ng | sa|ana|ang| di| ha|ak |nga|hak|un |ung|keu| ba|anu| an|nu |a b| bo| je|a h|ata|asa|jeu|ina| ng|ara|nan|gan|sa |a k|awa|ah | na|n k|kan|aha|ga |a s|a p|ban| ma|a n|bog|oga|ing|sar| ku| pa|man|a a|ha |san|bae|ae |din|g s|sah|tan|aga|ra | si|ala|kat|n s| pe|ma | ti|per|aya|sin| te| pi| at|n a|aan|pan|lah|gar|n n|u d|ta |eu |kum|ari|ngs|ran|a d|n d|n b|gsa|a m|wa |ama|ku |ike|taw|n p|k h|al | ja|eba|bas|a t|at |ika|beb|asi|atu|pik|kab|una|nda|a j|e b|n h|nag|oh |aba|en |ila|g k|boh|aku|ngg|art|rta|abe|ar |ima|n j|um |di |usa|udu|geu|k a|adi|ola|sak|aca|u s|rim| ay|car|h k|aka|eh |teu|tin| me| po|ti |awe|ngt|sac|jen|u a|uma|ent|k n|gaw|law|dan|uku|ur |teh|h s|bar|aru|ate| hu|nar|n t|jal|aja|dil|ere|iba|ieu|pol|nya|ut |wan|are|mas|ake|upa|pa |yan|huk| so|nus|ngk| du|ura|tun|ya |mpa|isa|lan| ge| mi|u m|kal|uan|ern|tut|tay|h b|hna|kaw|kud|us |und|ena|n m|han|nte|lak| ie|ula|ka | ke|rup| tu|u k| nu|g n|umn|mna|h p|g d|u n|gta|ayu|yun|mba|gam| be|du | ta| wa|wat|eus|a u|ren|umu|i m|ri |eri|rik|u p|dit|ali|h a|k k|k d|ngu|rua|ua | da|amp|men|sal|nge| ra|sas|nas|ona| bi|ame|sab|alm|lma|ami|min|il |kas|ter|mum|rak|mer|ksa|k j|yat|wil|mar|eur|g b|war|gal|kaa|we |tur|e a|r k","ron":" de|și | și|re | în|are|te |de |ea |ul |rep|le |dre|ept|e d| dr|ie |e a|ate|în |tul|ptu| sa| pr|e p|or | pe|la |e s|ori| la| co|lor| or|ii |rea|ce |tat|au | a |ați| ca|ent|ale| fi|ă a| ar|a s|ice|per|ers|uri| li|a d|al |ric| re|e c|e o|nă |i s|ei |tur|men|con| să|lib|ibe|ber|să |rso|tăț|ilo| ac|sau|pri|ăți|i a|i l|l l|car| in|ter|ție|lă |că |tea|a p|ții|soa|oan|ri |nal|in | al|e ș|i î|ril|ană|pre|ui |uni|e f|se |ile|ere|i d|ita| un|ert|e î|a o|ia |i c|fie|ele|ace|i ș|nte|tă |pen|ntr| se|a l|pro| că|ire|ală|eni|est| ni|ă d|lui|a c| cu|n c| nu|ona|sal| as|eri|naț|ând|ră | om| su|ecu|i p|rin|e n|ici|i n|nu |oat|inț|ni |tre| to|tor|ări|soc|oci|ste| na|iun| di| po|l d|va |ega|gal| tr|ă p|ulu|n m|ă î|a a|rec|res|i o| so|fi |sta|sa |uie| au|lit| ce| mo|din|ces|nic|int|nd |i e|cla|ara|ons| îm| eg|a î|rel|e l|ial|i f| fa|ță |leg|e e|tar|ra |ă f|a f|rar|iei|nit|ă c|tru|ru |u d|act|at |rtă|ți |nta|nde|eme|ntu|ame|reb|ebu|bui|toa|l c| o |ion|ă ș|dep|ali|ât |ili|ect|ite|i i|pli|n a|dec|rta|cu |împ|cți|ane|e r|văț|nt |u c|ța |l ș|cia|țio|ită|bil|r ș|poa|ca | st|t î|tri|riv|man|ne |omu|rie|rit|înv|nvă|ăță|mân|mod|od |rot| ma|cur|u a|oar|uma|a ș|rii|era| ex|tra|iil|ani|țiu|lic|t s|nța|eze|ta | va","hau":"da | da|in |a k|ya |an |a d|a a| ya| ko| wa| a |sa |na | ha|a s|ta |kin|wan|wa | ta| ba|a y|a h|n d|n a|iya|ko |a t|ar |ma | na|yan| sa|ba |asa| za| ma|hak|a w| ka|ata|ama|akk|i d|a m| mu|su |owa|a z|iki| ƙa|nci|a b| ci|ai | sh|kow|anc|nsa|a ƙ|a c| su|shi|ka | ku| ga|ne |ani|ci |e d|kum|uma|‘ya|cik| du|uwa|ana| ‘y|i k|ali|ɗan| yi|ada|ƙas|aka|kki|utu|n y|hi |a n| ad| do| ra|mut|tar| ɗa| ab|nda|a g|man|nan|ars|cin|ane|and|n k|min|yi |i a|ke |sam|ins|a i|nin|yin|ki |tum|ni |aɗa|ann|e m|ami|dam|za |en |kan|um |yar|mi |duk|oka|n h| ja|dai|kam|ewa|mat|i y|nna|abi|ash|n s|waɗ|ida|am |re |ga |sar|kok|oki|una|mas|ra |i b|dun|uni|abu|a ‘| ƙu|n j|awa|ce |a r|e s|ara|a ɗ|san|li |aba|cew|she|ƙun|kar|ari|m n|niy| ai|aik|u d|kko|buw|n w| la| ne|rsa|zam|omi|rin|hal|bub|ubu|aya|a l|han|ban|o n|are|add|i m|zai| hu|me |bin|tsa|sas|i s|ake|n ‘| fa|kiy|n m|ans|dom| ce|r d|uns|ƙar| an|jam|ɗin|i w| am|n t|wat|ika|yya|nce|har|ame|gan|hen|n b|n ƙ|dok|fa | ki|yak|ray|abb|din|on |bay|aid|ayi|aci|dan|aur|ili|u k| al|rsu| ts|ukk|kka|aye|nsu|ayu|bba| id|ant|n r|o d|sun|tun|unc|sha| lo|lok|kac|aif|fi |gam|aga|un |lin|aɗi|yuw|aja|fan|i i|ace|uka|n i|war|riy|imi|sak| ir|yay|tab|bat|mar| iy|sab|nta|afi|o a| ak|bi ","fuv":"de | e |e n|nde| ha|la |e e|akk| ka| nd|ina| wa|al |hak|na | in|ndi|ɗo |kke|ii |di |aad|ade|um |ko |i h|ala| mu| ne|lla|ji |wal| jo|mum| fo|all|neɗ|eɗɗ| le| ko|e h|kal|taa|re |aaw| ng|e k|aa |e w|ee |ley|jog|ke |e m|laa|nnd|eed|e l|ɗɗo|aag|ol | ta|o k|kee|gu |ti |dee|a j|ogi|waa|m e|am |le |eji|ond|nga|gal| wo|ɓe |ɗe |e d|awa|gii|ede|eej| re|gol|aan| go|agu|i e|oti|ann|fot|eyd|e t|ɗee|naa|oto|ydi| po|pot|maa| he|een|i n|enn|ni |taw|a i|e j|e f|a k|goo|to |dim|der|ele| aa|o n| de| fa| ba|ngu|oot|er |dir|won|oor| sa|ngo|ka |ndo|i k|a n|ay |ota|a f|ima|e ɓ| to|i f|a e|tee|ren| ja|i w|wa |o f|fof|ore|eyɗ|yɗe|a w|too|ma |o t|awi|i m|kam|o e|hay|and|nan|ñaa|e y|of |eel|e s|hee|aak|nka| do|l e|e g|ira| la| so| ɓe|a t|dii|e i| te|tin|e r|e p|o w|ani|aar|are| na|ral| ña| yi|awo| ya|so |aam|i l| ho|oo |ooj|nng|nge|woo| ma|faw|kaa| mo|u m|und|dow|gaa|en |o i| li|lig|igg|e a|ita|e b| o | nj| mb|o h|nda|ude|ɗi | no|haa|a h| fe| di|iin|iti|tii|yan| tu|tuu|inn|ama|baa|iiɗ|den|tal|aaɗ|yim|imɓ|njo|edd|ine|nee| je|jey|lli|lit|uug|ugn|no |bel|go | hu|ank|je |do |guu| da|mii| ke|a d|ano|non|l n|y g| ɗu|gna|mɓe|ete|i a|wit|jaŋ|aŋd|ŋde| su|alt| ɗe|nna|a a| ɓa|ɓam|amt|tde|ago|l h|m t|ind|ɗɗa|aga|eɗe|ow ","bos":" pr| i |je |rav| na|pra|na |da |ma |ima| sv|a s|nje|a p| da| po|anj|a i|vo |ko |ja |va | u |ako|o i|no | za|ju |e s| im|avo|ti |sva|ava|o n|i p|li |ili|i s|ost|van|vak| ko|ih |ne |a u| sl|nja|jed| ne| dr|koj|ije|i d| bi|stv|im |u s| il|slo|lob|obo|bod| je| ra|pri|sti|vje| ob|a d|om |se | su|e i|a n| se|i i|dru|enj| os|a b|e p|voj|cij|u p|o d|a o|raz|su |i n|uje|ova|u i|edn| nj| od|i u|u o|lo |ran|lju|ni |jen|ovo|aci|iti|o p|a k|oje|žav|nos|dje|e o|bra|pre|a j|pro|ji |i o| ka|nih|bit|jeg| tr|tre|bud|u z|og |sta|drž|rža|e d|u n|pos|mij|elj|svo|reb| bu|avn|jem|ija|e b|ći |aro|rod|red|ba |a z|šti|ka |de |em |aju|iva|lje|ve |e u|jel|jer|bil|ilo| iz|eni|du | do| st|a t|za |tu |nar|tva|odn|gov| sa|nim|m i|e n|vim| ni|u d|o k|oji| sm|dna|ući|ist|i m|eba|ičn|vno| dj|oda|nak|e k|an |nov|sno|stu|aln|nst|eno|eđu|čno|ani|nom|olj|tiv|nac|ave|i b|smi|čov|ovj|osn|a r|nap|ovi|ans|dno|jan|nju|oja|nog|m s|edi|ara|oj |nu |kri| kr|odu|iko|lja|sto|rad|nik|tup| čo|jek|tvo| vj| mi|tel|obr|živ|tit|una|ego|pod|sam|o o|rug| op|nji|din| mo|vu | ov|h p|udu|riv|dst|te | te|a č|vni|svi|i v|ina|i t|ite|o s|u u|m n|zaš|ašt|itu|ak |dni|nic|nič|odr|vol|avi|g p| ta|rim|kla|e t|ao | vr|akv|tno|mje|duć|ona|ada|obi|eds","hrv":" pr| i |je |rav|pra|ma | na|ima| sv|na |ti |a p|nje| po|a s|anj|a i|vo |ko |da |vat|va |no |o i| za|ja |i s|avo| im|sva| u |i p|e s| bi|tko|ju |o n|li |ili|van|ava| sl|ih |ije| dr|ne |ost|jed| ne|u s|ova|nja| os| da| ra| ko|slo|lob|obo|bod|atk|i d|koj|iti| il|stv|pri|im |om | ob| je| su|vje|i u|i n|e i|i i| ka|bit|dru|ati|se |voj|i o|a b|a o|ćen|ući|a n| se|o p|enj|edn|a u|sti| mo|ćav|lo |dje|raz| od|ran|u p|rod|a k|ni |su |mij|u i|svo|ako|a j|aro|drć|rća|pos|eno|e p|pre| nj|e o|ćiv|nar|ji |oje|e n|eni|nih|oda|ći |nov|bra|ra |nim|a d|avn|og |aju|iva|ovo|nos|i b|bil|sno|za |ovi|red|tva|a z|mor|ora|ka |sta|jem|pro|jen|u o|cij|ve |e d|jel|jer|ilo| do|osn|i m|odn| iz|nom|lju|em |lje| ni|aci|oji|o d|du | st|nit|elj|u z|jeg| sa|o o|m i|vno|vim|uje|e b|oj | dj|rad| sm|dna|nak|e k|an |stu|o s|tit|tu |aln|nst|eću|dno|gov|ani|juć|u d|m s|e u|a ć|u u|nju| bu|bud|te |ćov|ovj|tvo|a r|nap|šti|ist|ću |ans|m p|jan|nić|olj|u n|edi|ara|nu |o k|udu|ona|smi|odu|ada|oja|tup| ćo|jek| vj|ina| mi|tel|i v|obr|zaš|ašt|una|dni|ija|pod|sam|duć|rug| op| ta|nji|e m|oso|sob|h p|itk|svi|ite|elo|itu|meć|jim|odr|di |vol|avi|nog|štv|rim|din|kla|će |ao |tno| ći|kak|akv|ave|nac|lja|sto|obi| te|to |vi |ovn|vni|odi|lji","nld":"en |de |an | de|van| va| en| he|ing|cht|der|ng |n d|n v|et |een|ech| ge|n e|ver|rec|nde| ee| re| be|ede|er |e v|gen|het|den| te|ten| op| in|n i| ve|lij| zi|zij|ere|eli|ijk|oor|ht |te |ens|n o|and|t o|ied|ijn| on|ke |op |eid| vo|jn |id |ond|in |sch| vr|n z|rde|aan| ie|aar|ren|men|rij|hei|ord|hte|eft| we|ft |n g|n w|or |n h|eef| me|wor|vri|t r|hee|al |le |of |ati| of|g v|lle|e b| wo|eni| aa|voo|r h|n a| al|nd |e o|n t|ege|erk|t h|jke| na|sta|at | da|e e|end|nat| st|nge|ste|e g|tie|n b|om |die|e r|r d|erw|ij |dig|e s| om|wel|t e|ige|ter|gel|ie |e m|re |t d| za|ers|ijh|jhe|d v|zal|nig|nie|bes|ns |e w|est|d e|g e|e n|ele| do|ge |vol|che|e d|ig |gin|eze|nst|ona|eke|cha|hap|dat|lke|e a| di|waa| to|min|jk |tel| gr|len|eme|lin|elk|ard|doo| wa|eve|ven|n s|str|gro|han|del|ich| ov|ove|n n|t v|tio|ion|wet|it |gem|ijd|met| zo|uit|aat|dez|ze |rin|e i|all|st |ach| ni|toe|n m|ies|es |taa|per|hed|heb|ebb|bbe|ien|sti| ma|nte|ale|kin|nin|mee|daa|el |ben|ema|man|s e|e h|esc|her|lan|ang|ete|g o|wer|is | er|pen|nsc|beg|igd|t g|ont|iet|tig|ron|tin|p v|r e|rwi|wij|ijs| hu|erm|nal|bij|eer|edi|ite|t a|t w|d o|naa|weg|iem|g d|teg|ert|arb|als|d z|tan|tre| la|ar |ame|js |rmi|t b|app|rwe| bi|t z|ker|eri|ken| an","srp":" pr| i |rav|pra| na|na | sv|ma | po|je |da |ima|a p|ja |a i|vo |nje|ko |va |anj|ti |i p|ako| u |a s| da|avo|ju |i s|ost| za|o i|sva| im|vak|o n|e s|ava|nja| sl| ko|om |no | ne|ne |li |u s| dr|ili|a n|slo|obo|koj|ih |lob|bod|im |sti|stv|a o| il| bi|pri|a u| ra| je|og |jed|enj|e p|u p|van|ni |a d|i u|edn|iti|nos|a k|o d|ova|pro| su|i i| os|ran|sta|dru|e i|cij|se |rod| ob|i o|aju|e o|i n|ove| de|aci| ka|ovo| ni| od|ve | se|i d| st|m i|voj|avn|uje|eni|ija|dna|žav|u i|red|su |nov|odi|tva|e b|oja|što|lju|u o|ara|a b|ji |drž|rža|odn|jan|nim|poš|ošt|a j|ka |jen| ov|u u| nj|du |ave|osn|sno|šti|aro|raz|bit|a z|u z|de | iz|nih|o p|u d|e d|pre|vu |u n|lja| tr|tu |eđu|nar|gov|svo|bez|ičn|lje|e n|za |vno|lo |oji| sa|to |an |nak| me|čno|đen|vim|nac|oda|ani|me |iko|nik|ika|e k|pos| kr|tre|reb|nst|stu|e u|ku | do|ašt|tit|aln|dno|jeg|nom|olj|nog|m s| vr|o k|oj |čov|ans|ovi|o s|bra|te |tav|tup|eno|živ|zaš|em |i m|dni|šen|var|riv|rug|vol|avi|tan|štv|kao|ao | li|st |ilo|nju|sme|o j| sm| čo|odu|vre|dst|od |a t|kri| bu|bud| ve|ver|a r|m n|del|tvo|međ|oje|jem|m p|avl|vlj|ego|u v|pod|ena|ugi|la |jav|por| op|ruš|ušt|kom|edi|ba |kla| mo|oju|i b|kak|akv|rad|nu |vek|rim|gla|juć|ude|vni|eba|e r|svi|i v|itu|ter","ckb":" he| û |ên | bi| ma|in | di|na |maf|an | ku|ku | de| ji|xwe|her|iya| xw|ya |kes|kir|rin|iri| ne|ji |bi |yên|afê|e b|de |tin|ke |iyê|e h|es |ye | we|er |di |we |i b|ê d|erk| na|î û| an|ina| be|yê |eye|rke|î y|nê |kî |diy|ete|hey|hem| ci|eke| li|wek|ber|fê |n d|li | bê| se|yî | te|ne |rî |sti|net|tew|yek|af |hev|yan|n b|kar| ki|re |e k|wî |i h| ew|n û|û b|aza|n k| wî| mi|î b|dan|e d|î a|ekî|a m| az|zad|mir|iro|rov|nav|n h|ser|est|a w|ara|bin|ewe|anê|adi|tê |be |emû|mû | yê| ya|ta |ast|tî |ev |ewl|s m|n m|wey| tu|wle| bo|bo | tê|n j| me|ê h|din|ras|î d|n n| da|n w|bat|wed|ema|ê b|cih|st | ge|iye|ing|ar |în |r k| ke| pê|îna|î h|ekh|khe|vî |ana|par|û m|ûna|civ|vak|n e|dî |nge|geh| ye|ê t|ê k|û a|fên|hî |e û|av |eyî|bûn|erb|î m|bik|ê m|a x|iva| re|e n|eyê|vê |ane|man|nên|ela|end| pa|erî|n x| ta|jî |ika|kê |a k|f û|f h|e j|î n|ra |ehî|tiy|tên|û h|a s|rbe|bes|mî |ari|eza| ni|nek|n a|ov |i n|erw|rwe|erd|aye|e e|riy| a |ike|ê x|ovî|û d|inê|etê|tem|yet|eta|ek |ê j|a n|e t|i d|zan|bê |anî|nîn| ra|ama|ere| hi|i a|tuk|uke|bib|lat|awa|u d|ibe|xeb|atê|i m|mal|nda|ewa|a d|a b|arî| ba|edi| hî|hîn|rti| za|ist|e m| wi|mam| şe| qa|qan|anû|nûn|asî|han| ên|a g|u h|tu |dew|let|are|ine|pêş|êr |e a|wel|ger","yor":"ti | ní|ó̩ | è̩|ní | lá|̩n |o̩n|é̩ |wo̩|àn | e̩|kan|an |tó̩| tí|tí | kò|ò̩ | àw|̩tó|è̩ | àt|è̩t|bí |e̩n|àti|lát|áti| gb|lè̩| ló| ó |s̩e|àwo|gbo|̩nì|n l| a | tó|í è|ra | s̩|n t|ò̩k|tó |sí |kò̩|̩ka|o̩ | sí|ìyà|orí|ílè|ì k|̩‐è|dè |yàn|ni |̩ à|ún | or|èdè|jé̩|ríl|è̩‐|‐èd|í à|àbí|n à|nì |ò̩ò|̩ò̩|í ó| tà|tàb| ti|̩ t|jo̩|̩ l|̩e | wo|í ì|nìy|ó n| jé|ló | sì|kò |n è|wó̩|n n| bá|̩ s|rè̩|sì | fú|fún|í a| pé|̩ni| òm| kí|gbà| èn|ènì|pé |in |ba |òmì|nir|ira|ìí |ràn| ìg|ìgb|n o|bá |mìn|ìni|gba|kí |n e| rè|e̩ |̩ n|un |̩ p| o̩|í ò|nín|nú |fi |gbé|yé | ka|ínú|a k|bé̩|mo̩| fi|̩ ì|í i|ó s|i l|wà |o̩d|̩dò|dò̩|̩ o|bò |dá |i ì|bo̩|hun|i ò|o̩m|̩mo|̩ k|áà |̩wó|bo |àgb|ló̩| ò̩|ó j| bí| oh|ohu|í k|n s|írà|bà |ara| ìb|ogb|pò̩|ú ì|yìí|rú |kó̩|ó̩n|i t|̩ ò| lè|lè |̩ e|à t|à l|bog|a w|gé̩| yó|yóò|óò |ò l|̩gb|ò̩r|̩ y|í w|̩ f|í t| wà|ó̩w|yí |ó b|̩ a|ìké|i n|i è|láà|àbò|fin|wùj|ùjo|n k|í e|é̩n| òf|òfi| mì|mìí|ìír|jú |rin|̩é̩|i j|ó t| ar| ir| ná|náà| ìk|̩ b|i s|ú à| yì|kàn|irú|rí | i |è̩k|̩kó|fé̩|é à|i o|s̩é|̩ m| ìd|è̩d|̩dá|i à|àwù|à n|ú è|wù | èt|áyé|í g|í o| mú|a l|láb|ábé|̩è̩|ìn | kú|láì| àà|i g|bé |níp|ípa| ìm|níg|ígb|wò̩|báy|ké̩|mú |í n|de |è̩s|mó̩| dá|i a|dó̩|ó̩g| ni|i p| wó|ayé|ùn |̩ w|a n|n f|n ì|je̩|ò t|n g","uzn":"lar|ish|an |ga |ar | va| bi|da |va |ir | hu|iga|sh |uqu|bir|shi|huq|quq|gan| ha| bo|ini|ng |a e|r b|ni | ta|lis|lik|ing|ida|oʻl|ili|ari|nin|on | in|ins|adi|nso|son|iy | oʻ|lan| ma|har|dir|hi |kin|ash|i b|boʻ| yo| mu|uqi|dan|ila|qig|ega|r i|qla|oʻz| eg|a b| er|erk|kla|qil|oli|ki |gad| ol|nli|lga|at |i h|a o|rki|oki|osh|lig|igi| qa|yok|ib |las|n m| ba| qi|n b|ara|atl|ri |iya| sh|ham|ala|lat|bil|in |r h|bos|a t|siy|a y|cha|n o|a h|ik |a s|inl|a q|yat|nis| et|eti|osi|h h|i v|ani|tla|til|mas|ʻli|asi|ati| qo|i m|ris|im |a i|uql|arn|rni|qar|ha |gi | da|sha|n h|i o|rch|mla|li |i t| xa|arc|bar|ʻz |hun|a a|rla| bu|a m|lin|lib|taʼ| tu| as|h v|tib|aro|un |tga|r v|ikl| be|mum|n q|ali| te|sid| to|mat|amd|mda|tas| ke|shu|lla|shg|hga|n e| ya|dam|aml|oya|xal|hla|ola|iri|irl|ill|rga|iro|tis| de|umk|mki| eʼ|ten|eng|rda| is| sa|gin|imo|tar|ush|ur |ayo|rak| so|alq| ki|aza|k b|oda|oʻr|a k|tni|ʻlg|n v|hda|nda|shq|hqa|zar|miy|i q| mi|mil|r t| si|ak |ada|rat|or |kat|era|siz|am |ch |aso|sos|yot|atn|shl|n t|nid|y t|ana|ti |rin|asl|bu |sin|dav|ilg|as |i y|ech|nga|lak|h k|ino|ʼti|gʻi|muh|a v|bor|uch|lim|a u|uni|lli|n i|uri|si |i e| ka| ch|a d| ja|ami|qon|na |rig|lma|ker|avl|vla|i a|dek|ekl|liy|aka| em|ema|eʼt","zlm":"an |ang| ke| se|ng | da|ada|dan|ara| pe|ak | be|ran|ber| me|ah |nya|hak|per|n s|ata|ala|ya |a s|kan|asa|lah|n k| di|da |aan|gan|nga|dal|erh| ma|n d|eba|rha|a p| ha|kep|pad|yan|ap |ama| ba| ya|nda| te|ra |a b|tia|man|eng|a d|ora|men|iap|n p|ter|epa|san| or|eti|pen| ad| at|n a|a a|h b|set|tan|sia|tau|n t|n b|ta |dak| sa|sa |at |au |ela|apa|pa |beb|bas|p o|h d|n m|keb|end|aka|ega|a k|am |sam|ana|gar|k k|ban|ole|leh|neg| un|lam|di |g a|eh |n y|aha|han|a m|eri|any|ma | ti|a t|uan|mas|ngs|atu|seb|ebe|ing|ian|car|bag| ne|mem|kes|mat|gsa|ia |ika|i d|nan|asi|und| la|epe|ert|agi|emb|na |ers| de|emu|pem|ngg|anu|i m|ind|erk|ung|n h|tu |gi |kla|g b|pun|iha| in|nus|usi|tin|al |si |as |akl|dap|erl|era|sec|eca|i s|lan|bar|k m|ena|aya| as|sas|nny|rta|sem|awa| su|bol|rat|den|ini|ni | ta| he|hen| an|tar|g m|ai |kem|adi|had|in |ti |i k| bo|uka| ap|g t|ka |ann|ema|g s|ain|k h|rka|ri |n i|aga|un |ses|dun|enu|emp|elu|lai|kat|ent|nta|rsa|iad|ua |dia|ira|a n|mpu|ntu|uk |mel|k d|har|ker|dil|mar|h m|aja|ila|k a|mba|lua|i a|rak|uat|jua|rma| pu|t d|rga|i p|uma|ser|esi|ar |esa|nak|bah|rli|lin|ndu|dar|ari|ese|l d|ant|ngk| ol|sua|g d|ati|tuk|erm|saa|erj|rja|kea|raa|gam|g u|tik|ida|sek|eka|sat|i b|mbe|unt|dir|iri","ibo":"a n|e n|ke | na|na | ọ | bụ|nwe| n |ere|ọ b|re |nye| nk|ya |la | nw| ik| ma|ye |e ọ|ike|a o|nke|ụ n|a m| ya|a ọ|ma |bụl|ụla|e i| on| a |iki|kik|ka |ony|ta |bụ |kwa|i n|a i| nd|di |a a|wa |wer|do | mm|dụ |e a|any|ha | ga| ok|e m| ob|he |ndi|e o|a e|ite|ọ n|rụ |hi |ga‐|mma|wu | dị|aka|ara|che|oke|o n|we |n o| ih|mad|adụ|obo|bod|odo|a g|te | ez|hị | ka|ụta|be | an|akw|zi |a‐e|dị | oh|gba|nya|u n|ihe| ak|me |i m|ala|ri | ọz|ghi|ohe|her| mb|ba | nt| si| iw|weg|pụt|ra |iri|chi|ụrụ|rị |zọ |oro|ro |iwu|a‐a|ụ ọ|ụ i| eb|ebe|e ị|a y| in|ezi|kpa|kpe|inw|mba|sit|ịrị|ile|le | ha|e e|bi |n e|chị| en| e |i ọ|asị|mak| ni|nil|ghị|si |ide|a u|o i|i o|i i|apụ|a s|e y|u o|ụ m|ahụ|hụ |a ụ|nkw|edo|n a|ru |ụ o|ozu|enw|ọzọ|kwu|gid|sor|egh|yer|tar|n i|pa |eny|uru|kwe|toz|ị o| mk|ama|de |uso|tu | im|ime| me|i a|ịch|ọ d| ịk|obi| ọn|hed| ọr|ọrụ| to| ch|gas|wet|mkp| kw|osi|a d| nh|nha|ọnọ|nọd| al| nc|nch|sir| o |n u|sịr|eta|u ọ|ị m|n ụ| us|nọ | ot|otu| gb|ọdụ|nwa|o m| ag|ali|lit|ọta|ega|ị n|e k|e s|ji |a k|ikp|ọch| ug|ban|ekọ|pe |nta|agb|na‐|n ọ|hu |i e|e g|a b|zu |chọ|u a|kwụ|ram|esi|uch|onw| nọ|ị k|u m|eme|wan|e h|dịg|ịgh|hịc|ugw|gwu| di|ich|cha| og|okp|kpu| nn|zụz|zụ |i ị|o y|ach| ng|pụr|ị e|a h|meg|nat|uwa","ceb":"sa | sa|ng |ang| ka|an | pa|ga | ma|nga|pag| ng|a p|on |kat|a k|od |ug | ug|g m| an|ana|n s|ay |ata|ung|ngo|a m|atu|ala|san|ag |tun|g s|g k|d s|god|a s|ong| mg|mga|g p|n u|yon|pan|a a|usa|ing|tag|tan|una|mat|ali|aga|g u|han| us|nan|y k|man|ina|non|kin| na|lan|syo|a b|asa|nay|a i|n n| ta|awa|nas|taw| o |nsa|gaw|a n|agp|dun|iya|ban|isa|was| ad|adu| gi|ili|ini|asy|bis|nag|g a|a t|o s| bi|nah|lin| ki|al |sam|lay|ahi|nal| ba|ano| wa|wal|asu|agt| di|yan|ama|a u|n a|ags| iy|gan|n k|kan|him|kag|ya | un|gpa|kas|aha| su|g t|awh|wha|gsa|l n|agk|gka|a g|gla|kal|gal|ran|sud|ud |imo|d u|aba|aka|ika|ig |ngl|ipo|g d|ara|g n|uka|uns|uta|d n|og |i s|y s|kau|li |n o|aki|o p|kab| og|ot |mta|gik| si|n m|gpi| la|g i|aho|ayo|iin|ok |awo|hat|o a|gon|ip |a w|apa|lip|na |a h|bal|la |ad | ga| ti| hu|uba|wo |ati|uga|hon|hin|ma |sal| ub|agb|gba|nin| bu|buh|uha|t n|ahu|may|pin|as |ni |mak|ihi|abu|uma| in|say|d a| pi|dil| ni|ins| pu|agh|at |hun|but|aug|lak|bah|sak|o u|mal|s s|os |amt|t s|pod|sos|ngp|lam|aod|ila|a d|ami|k s|tin|ura|mo |agi|tra| at|bat|aan|ulo|iha|ha |n p|kar|oon|sya|ona|aya|in |inu| hi|it |agl|amb|mbo|mag|a l|ho |lao| al| il|iko|ngb|mah|lih|g b|gta|gtu|y p|rab|ato|tar|nab| re| so|osy|yal|aw |gda","tgl":"ng |ang| pa|an |sa | sa|at | ka| ng| ma|ala|g p|apa| na|ata|pag|pan| at| an|ay |ara|ga |a p|tan|g m| mg|mga|n n|pat| ba|aya|n a|na |ama|g k|kar|awa|a k|lan|rap|gka|nga|n s|g n|g b|a a|aha| ta|agk|gan|asa|tao|aka|yan|ao |a m|may|man|kal|ing|nan|a s| la|aga|ban|ali|g a|ana|y m|kat|san|kan|pam|g i|ong|mag|a n|baw|o a|wat| y |isa|lay|y k|t t|ila|g s|in |kas|o y|aan| ay|ina|t n|t p|wal|ag |una|yon| it| o |nag|tay|pin|ili|ans|lal|ito|any|nsa|kak|a i|lah|mam|nta|nya|gal|hay|to |ant|aba|ran|agt|on |han|agp|kap| ga|t s| wa|gaw|o m|ya |as |g t|lip|y n|hat|g l|ung|ngk|no |gpa|lag|gta|t m|wa |yaa|ari|sal|a l|kai|pap|lin| pi|ita|ahi| is| di|agi|ipi|bat|mak|pun|a b|y s|aki|tat|la |hin|pah|yag|gay|o n|ags|iti|di |i n|sas| si|t a|al |a t|ika|mal|s n|ipu|t k|ais|hal|i a|sap|lit|od |ihi|alo|y p|ani|ig |par|ap | ip|tas|gin|gga|nin|uma|gsa|ano|ira|a g|nah|uka|syo| bu|ini|o s|nap|ngi|o p| ha|a h|mah|a o|li |ipa|uha|asy|lam|iba|aru|mba|g e|usa|lim|sam|pil| da|kin|duk|sin|dai|aig|igd|gdi|dig| tu|d n|ba |nas|pak|iga|kil|n o|nak|ad |lig|git|lab|ma |kab|nar|tag| ed|edu|aho|buh|and|nda|mas|pas| ib|it |ri |lun|ula|agb|g g|ain|pul|ino|gi |sar|g w|abu|s a|api|nil|iyo|siy|iya|anl|uli|aun|agg|amb|g d|ati| li|i m","hun":" sz| a |en | va|és | és|min|ek | mi| jo|jog|ind|an |nek|sze|ság| az|gy |nde|ala|sza|den|az |a v|val|ele| el|mél|oga|egy|n a| eg|ga |zem|zab| me|emé|van|int|tel|aba|bad|tet|ak | te|tás| ne|gye|t a|ény|ély|tt |n s|ben|zet|ség|lam|meg|nak|ni |ete| se|lyn|yne|s a| al|let|z e|ra |et |agy|sen|eté|k j|tek|mel|kin|ok | ki|ez |hoz|oz |n m|re |vag|ett|emb|mbe|es | kö| le|nem|ell|em |ely|hog|ogy|s s|gok|atá|k a|nt |köz| ho|z a|hez|el |len|yen|ásá|ads|dsá|tés| em|a m|a s|nte| ál|k m|ás |a t|szt|áll|a h|y a|ogo|sem|ber|ban|enk|nki|nye|lap|t s|ese|ame|nyi|k é|ágo|ló |ág |t m|on | vé|i m|ami|ébe|s e|lat|lla|ly |mén|fel|tat|eri|lő |a n|eki|n v|yes|emz|mze|lle|a a| cs|át |kül|elő|l a|nd | ke|ég |i é|lis|vet|éte|ért|rés|yil|ésé|enl|szo| am|tar|art|alá|elé|a j| ny|koz|het|ész|ja |lem|nlő|ri |i j|s é|éle|ól |aló|kel| ha|ges|zás|más|s t|tár|s k|t é|vel|tko|zés|ése|se |tő |ot |ott|sít| fe|n k|lek|tte|olg|áza|ssá|e a|eve|szá|ti |n e|ül |zte|ána|zto|tos|árs|os |k k|eze|leh|ehe|t n|tes|kor|atk|del|t k|tot|ány|ége|fej|i v| né|ház|leg|k e|ll |nev|is |ába|t t|véd|éde|d a|zer|ere|kif|ife|téb|ny |ai | bi|biz|izt|i e|sül|lt |zat|at |elm| ar|arr|rra|sel|t e|ágá|s n|csa| mu|nél|it |esz| há|zas|ass|üle| ta|nyo|alk","azj":" və|və |ər |lar| hə|in |ir | ol| hü|hüq|üqu| bi|quq|na |lər|də |hər| şə|bir|an |lik| tə|r b|mal|lma|ası|ini|r h|ən |şəx|əxs|qla|arı|a m|dir|ali|aq |uqu| ma|ilə|ın |una|yət| ya|ara|ikd|ar |əri|əsi|r ş|rin|əti|dən|nin|n h| az|yyə|sin| mü|tin|ni |zad|iyy| mə|ərə|mək|ün |nda|ət |i v|ını|nın|ndə|ə a|aza|rın|qun|olu| et| qa|lıq|ilm|kdi|lə |ə y|ək |lmə|ına|ind|olm|xs |mas|sın|lun| in|ə b|da |n t|əmi| bə|adl|dlı|n m|nə |q v|ya |tmə|bər| on|ə h|əya|sı |nun|etm|dan|inə|maq|un |raq|ə v| va|n a|n b|rlə|ə m|si |əra|n i|ınd| öz|anı|nma|ama|rı |ığı|li |il | al|ala| di|ə d|ik |irl|ins|lət|a b|bil|ıq |müd| sə|ə i|nı |nla|ələ|dil|alı|ə e|unm|n v|ola|asi|üda|ili| də|nsa|san|uql|ə o|xsi| he|uq |ətl|həm|əni|eyn|u v| da|tər|min|yin|kil|dır| bu|lan|iş | ha|məs| ki|mi |lığ|ə q|q h|i s|daf|afi|fiə|r v| iş| əs|sos|osi|sia|xal|alq| ta| as| ed|bu |heç|eç |rə |yan|ı h|kim|iyi|ı o|ina|siy|əsa|sas|a q|yar|lı |tün| is|ist| so|al |n ə|ifa|əmə|ə t|mil|ill|lıd|ıdı|ır |ədə|ıql|liy|tlə|a h|məz| bü|büt|ütü|iya|iə | üç|üçü|çün|t v|dax|axi|xil|r a|ılı|man|sil| se|seç|adə|ial|onu|öz | cə|miy|əyi|n e|edi| mi| nə|a v|mən|ril|əz |ild|rab|abə|şər|ğın|aya|zam| ni|ulm| xa|təh|əhs|hsi|i h|sti|qu |var|ad |tam|uğu|z h|qan|rəf|n d","ces":" pr| a |ní | ne|prá|ráv|ost| sv| po|na |ho |ch | na|nos|o n|ání| ro|ti |vo |neb|má |ávo| má|ou | ka|kaž|ažd|ebo|bo | je| za|ždý|dý | př|svo|a s|sti| st|á p| v |vob|obo| sp|bod|pro| zá|rod|ých|ván|ý m|né | by|ení|ého|spo| ná|í a|ová|o p|roz|mi |ně |ter| li|a p|nár|áro| ja|jak|by |to |lid|u p| vš|ny |ím |í p|i a|a z|o v|kte|mu |at |odn| vy| ma| so|ví |zák|tní|a v|oli|li | kt|í n|kla|do |je |pod|en |em |byl|mí |áva|stá| do|t s|rov|í s|tví|vše|it |dní|o s| ve|pol|í b| bý|být|ýt | se|čin| k |sou|a n|stn|ran|vol|nou|ejn|nes|se |ci |nýc|du |ným|stv|žen|své|vé |ají|jeh|eho|va |mez|ním|ích|ým |ké |ečn|pří|u s|tát|i s|kol|ova|e s|ech|í v|ids| i |maj| to|nu |hra|ave|ole|i v|kon|m p|ému|y s|o z|eré| ze|o d| že|chn|ovn|len|dsk|lad|vat|chr| ta|m a| ab|aby|sta|pra|néh|esm|smí| ni|i n|že |ako| os|sob|aké|i p|st |rac|kdo|zem|m n|odu| ji|bez|ste|ákl|ens|ými|í m| vz|i k| oc|och|jí |oci|áln|lní|a m|dy |lně|vou|při|rav|leč| s |t v| či|čen|áv |slu|jin|oko|nez|tej|řís|stu|ské|ský|nit|ivo|a j|věd|iál| me|ezi|ven|oln|zen|í z|y b|zac|níc|ky |u a|a o|u k|inn|est| tr|svě|nik|ikd|í k| mu|u v|kéh|jno|jíc| dů| od|tup|ože|i j|odi|děl|ího|rok|anu|soc|ciá|ve |é v|něn|din| vo| pl|pln|vin|u o|h p|tak|adn|a t|cho|ává","run":"ra |we |wa | mu|e a| n |se |a k|ira|ntu|tu | ku| um|ko |a i|mu |ye |hir|iri|mun|ing|unt|ere|ash|shi|a n|umu|zwa| bi|gu |ege|a a|za |teg|e k|ama|go |aba|uba|ngo| ba|o a| ar|ung|ish|ora|a m|e n| we|sho|na |ese| kw|nga|e m|mwe| ab|ugu|ate|ndi|kwi| gu|ger|riz|wes| at|di |u w|n u|yo |gih|ban|ngi|iza|e b|ara| am|ri |ka |a b|e i|hob|obo| ca|ro |u b|can|nke|ezw|a u| in|bor|bah|ahi|rez|iwe|gir|iki|igi|ihu|ke |ari|ang|aku|a g|hug|ank|ose|u n|o n|rwa| ak|and|kan| vy|ngu|nta| ub|aka|ran| nt|n i|ata|kur|kun|i n|ana| ko|e u|iye| ka|re |any|amw|ta |nye|uko|gin| zi|ite|era|ga |aha| ib| ng|n a|o u|o k| iv|ivy|ho | as|sha|o m|o b| bu|mak|ako|o i| ig|o z|o y| uk|ubu|aga|izw|i b|vyi|ba |aho|kir|nya| is|kub|hin| it|uri|gan|rik| im|u m|guk|bat|nge|kug|ani|vyo|ene|imi|imw| y |jwe|ze |agi|e c|u a|gek|ush|i i|uru|ham|uza|e y|ibi|amb|bur|ina|eme|i a|abi|ha | nk|eye|gus|ber|u g|no |rah|zi |w i|ma |tun|ind|ron|ras|wo |ne |wub| gi|gen|kiz|y i|kor|ura| zu|zub|zin|je |iro|mat|eko|bwa|ika| bo|bak|onk| ma|ugi|mbe|ihe| mw|eka|ukw|wir|ryo| ic|a z| ry|bwo| ag|yiw| ki|gis| yo|bik|ni |nka|rek| bw| ya|tse| ha| ah|umw|he |eng|bir|aro|ury|twa|ant|a c|tar|uki|mw |bih|ku |tan|bos|nde|uro|y a|utu| no|i y| yi|ya |puz|zam|eny","plt":"ny |na |ana| ny|y f|a n|sy |aha|ra |a a| fa|n n|a m|y n|an | fi|tra|any| ma|han|nan|ara|y a| am|in |ka |y m|ami|olo| ts|min|lon| mi| sy| na|a t| ol|fan|a i| ha| iz|iza|man|ina|ona|aka|y h|ian|o a|a h|reh|a s|etr|het|a f|on |ire|fah|tsy|mba|ay |zan| hi| ar|ndr|ira|y o|y t|ehe| an|o h|y i|afa|ren|ran| zo|ena|dia|amb|amp|ala|zo |ika|y s| di|tan| az|y z|m p|rin|ia |n j| jo|jo | dr|a d|zy |ao |ry |and| ka|dre|mpi|rah|nen|haf|n d| ir|eo |elo| ta|omb|rai|oan|fa |am | pi|ene|ho | ho|ant|iny|itr|azo|dra|ava|tsa| to|tsi|zon|asa|van|a k|ari|ha |n i|mbe|ray|fia| fo|sa |ony|isy|ova|lal|ly |azy|o f|bel|lom|ham|mis|sam|zay| ra|oto|fir|ban|a r|nat|kan| vo| he|ito|ary|nin|iha| re|a e| ko|tok|fit| no|ita|iar|fot|nam|voa|isa|y v| sa|y r|o n|no |aly|mah|har|ain|kam|aza|n o|otr|eri|hev|oka|sia|ial|atr|y l| la|ila|oa |y d|ano|ata|its|tov|pia|y k|pan|fam|oko|aro|nto|pir| ao|ty |anj|nja|reo| as|o s|hia|o t|mpa|mit| eo|ais|sir|air|ba |tin| it|ver|ino|vah|vy |ton|tao|ank|era|rak|kon|a z|tot|ive|ame|aho|hoa|hit|ati|ity|o m|mik|a v|ani|ori|koa|hah|nga|dri|eha|dy | mo|oni| za|ato|bar|jak|n t|nao|end|eve|lah|aov|mia|izy|lan|nar|ria|ama| pa| mb|aln|lna|ifa|za |to |dro|va | in|ind|ehi|n k|iva|nta| va| al|via|rar","qug":"una|ta | ka|na |ka |ash|cha|a k|ari|ish|kun|kta|pak|ana|hka|mi |shk|apa|ach|hay|akt|shp|man|ak | ch| ha|ata|rin|lla|tak|ita|ami|ama|aku| pa|har|pas|ayñ|yñi|ina| ma| ru|uku|sh |hpa|run|kuy|all|aka| tu|tuk|an |chi|yta|a c|chu|in |ñit|ris|a h|nka|nak|tap|kan| ki|ayt|pi |pa | sh|i k|nap|a p|pay|kaw|kam|nam|ayp|aws|wsa|a s|ank|nta|iri|uy |a t|hin|a m|ay | li|ant|kay|lia|nat|a r|shi|iak| wa|lak|uya|say|yuy|y r|ypa|kis|a a|hun| yu|n t|tam| ti|n k| ya|yay|lli|a w|hpi|api| al|un |yku|ipa|a i|iku|ayk|shu| sa|ush|pir|ich|kas|kat| il|huk|ill|a y|hu |rik|yac|a l|kac| ku|hik|tan|ypi|wan|ika|i c| ni|ima|ila|ink|ayl|yll|mac|nis| ta| wi|kus|i y|i p|n s|llu|tin|la |yan|kpi|awa|li | ri|may|tik|iks|lan| pi|aya|kin|yas|ksi|kll|kak|lat|aym|ura|war| ay|k h|uch|akp|sha|ukt|nch|h k|i t|ull|uma|mas|iya|kir| ii|h m|pip|n p|kik|iki|i s|kar|aki|riy|han|y h| su|mak|n m|tac|nal|nac| ña|k k|k t|k a|iwa|mam|i m|nki|yma|wil|his|pal|i i|asi|nmi|i w|sam|k l| hu|sum|pam|kap|k i|pan|iia|huc|ik | mu|mun|pik|was|k m|ma |hat| im|k r|akl|u t|ha |llp|a u|wak|has|anc| ak|imi|mal|y k|ian|iña|tar|yka| iñ|iñi| mi|n y|ywa|uyk|unk|a n|arm|rmi|h p|pur|akk|kim|san|ati|uti|uri| ar|sak|i a|hap|iyt|ayw|si |yar|las|lpa|ñaw|awp|wpa|i r","mad":"an |eng|ban|ng | sa| ka|dha| ba|ren|ak |ang| se| ha|hak| dh|na | pa|adh|se |a s|aba|n s|ara|ngg|are|ha |aga|sa | or|sar|ore|asa|ana| ma|a k|aan|gi |ale| ag|gad|a b|n o|n k|ra |ala|eba|gan| ke|dhu|aja|ota|bas|man|dhi|n b|tab|ka |sab|ama|beb|abb|at |nga| ta|ggu|ako|pan|huw|uwi|wi | ot|san|a d|ata|eka|i h|bba|agi|ba |lak|hal|ong|kab|em |g a|lem|a o| pe| na|par|ane|ngs|nge|gar|a p|tan|gsa|a a|ran|ken|i s|guy|uy |k h|n p|n a|ada|al |apa| ga|on | an|g s|ta |kaa| e |e d|pon|nek|ssa|a m|kal|a e|e e| la|kat|ona|abe|nan|asi|jan|ate|lab|ri |sal|lan|i p|sad|aka|e a|a h|ari|ena| bi|oss|si |daj|i k| ng|har|gen|ton|e k|epo|ano|bad|car|n d|ar |era| be|nag|kon|g k|ase|nya|nos|n n|mat| kl|mas|ela| da| al|n t|uwa|wan|sae|pad|ggi| so|as |hi |adi|a n|i d|g e|k k|ne |oan|uan|k s|k a|e b|ah |ina|kla|ter|om |gap|le |koa|yat|per|neg|ega| ja|bi |abi|aha| ep|aon| as| mo|n h|i a|one| di|ma |kas|m p|di |aya|nto|int|n e|te |bat|epa|nda| ca|pam|e s|amp|to |dra|ann|oko|rga|nna|e p|g p|nta| ra|and|i b|nao|k d|pen|aen|ste|ila|yar|a t|mpo|ok |set|n m|k b|isa|kom|raj|arg|ika|bin|ant|ga |hid|idh|aju|i m|nas|kar|mos|ost| ho|lae|dil|t s|a l|das|rek|tad| a | po|ett|tto| to|bis| dr|jat|add| ko|ent|gam|e m|ndh|hig|iga|maj","nya":"ndi|ali|a k|a m| ku| nd|wa |na |nth| mu|yen| al|ra |thu|se |hu |nse|di |a n|la | pa| wa|mun|unt|nga| la|a u|u a|e a| ma|za |ons|ace|ce | lo|iye|a l|idw|ang| ka|kha|liy|ens|li |ala|ira|pa |ene|i n|we |e m|era|ana|dwa|lo |hal|ulu|ko |dzi|iko|yo |o w| ci|a p|ga |chi| mo|o l|lu |o m|zik| um|moy|oyo|ufu|ner| an|and|iri|umo|ka |a a|dan|ena| uf|ful| nc|nch|hit|ito|to |a c|kuk|dwe| da|fun|wac| dz|e l|kap|ape|a z|e k|ti |u w|ere| za|lir|pen|aye|tha|kut|ro |mu |lid| zo|ofu|ing|i m|amu|mal|o c|kwa|mwa|so |o a|o n|i p|eza| mw|nso|iro|zo |i d|lin|ri |edw| a |i l| li|a d|kul|ati|uti|una|lan|i k|o k|ung|alo|dza|i c|o z|a b|uni|iki|lam|mul|ulo| ca|nkh|nzi|gan| na|ant|e n|san|tsa|wir|oli|u k|lon|dip|ipo|unz|yan|gwi|ca |ome| ko|aku|akh|pon|ngw|kir| po|uli|gwe|cit|mer|pan|kup|ame|mba|tsi|bun|ukh|ope|siy|iya| ya| am|han| bu|ama|bvo|vom|rez|lac| kw|men|u n|ao |pez| on|zid|osa|u o|i a|nda|e p|ne |ank|hun|o o|nik|ku |its|adz|u d|aka|diz| kh|ina|ezo|ndu|kho|okh|ya |awi|izo|ans|pat|eze|khu|zi |phu|kus|eka|o p| ad|mol|ets|sa |iza|kwe|wez| un|izi|oma|ma |oci|du |ula|ani|lok|haw|ika|ja |say|nji|jir|amb|ats|sid|mai|aik|mak|aph|i u|isa|lal|u m|ogw|no |oye|ukw|osi|sam| si|win| zi|ni |tse|si |e o|opa|emb| ba|ban","zyb":"bou|aeu|enz|nz |eng|iz |ih |uz |uq |ing| bo|oux| di| ca|z g|dih|ux |ngh|cae|gen|euq|z c|ng |you|ung|ngz|ij | mi| gi|miz|aen| ge|z d| ci|gya| yi| de|ouj|uj | gu|cin|ien|ngj| mb|mbo|dae|zli|gij| se|j g|ang|z y|j d|ouz| cu| ba|nae|h g| da|yin|oz |de |z b|nzl|li |nj |x m|euz| cw| yo|iq |gz |q g|x b|yau|h c|vun|inh|ix | ga|cwy|wyo| nd|vei|nda| ro|rox|oxn|z m|i c|j b| si|wz |gh | gy|cun|gue|xna|unz|hoz|can|bau|ei |z h|yen| li|inz|dan|q c| hi|gj |uh | vu|faz|yie| bi|zci|hin|goz|uek| fa|gun|aej|ej |ya |nh | ae| go|au |ciz|den|h m|nq |ngq|ouq|gva|z s| do|ci | wn|q d|eix|h d|ekg|kgy|q s|hu |u d|j n|auj|j c|gai| ha|az |nhy|z l|gjs|jso|sou|ou |bin|sin|lij|h s|sev|eve|nei|q y|aiq|sen|h y| la|enj|ouh|i b|vih|din|q n|awz|j y|z r|enh|en |uen|bwn|wng|ozc|z n|anj|j s|liz|g g|g b|i d| ne|bae|awj|sei|eiq|hye|anz|oen|hix|zda|gak|ez |anh|u c|z v| ya|h f|x d|in |ghg|bie|enq|zsi|ghc|hci|siz|i g|n d|h b| du|cou|ngg|ngd|cuz|eiz| ho|dun|g c|law|j m| dw|env|nvi|dei|a d|ek |yaw|wn |giz|gzd|nzg|wnj|gda|ak |nde|auy|yuz|hgy| co|ujh|jhu|e c|hen|ujc|min|izy|g d|gzs|daw|aw |g y|ozg|ai |iuz|x l| na|iet|aih|gih|iuj|zbi|uyu|coz|sae|i m| he|zdi|dwg|q b| fu| ve|guh|iqg|qgy|yai|yoe| so|biu|vaq|aq |yun|izc| ra|cie|zge|n g","kin":"ra | ku| mu|se |ntu|a k|tu |nga|umu|ye |li | um|mun|a n|unt|ira| n |ere|wa |we | gu|e n|mu |ko |a b|e a|o k|a u|a a|u b|e k|ose|uli|ro | ab|aba|gom|e b| ag|omb|ba |ugu|ang|o a|gu |mba| ib| ub|eng|ihu|za | bu|ama| by|hug| ba|o b|e u|kwi|ga |ash|ndi| ka|yo |e i|ren| cy| ak|iye| bi|re |ora|igi|gih|ban|ubu|di | nt| kw|gan|a g|aka|aga|nta|a m|iro|a i| am|ku |i m|ago|byo|ta |ka |cya|ibi|and|na |ali|uba|sha| bw|ili|yan|no |ese| ig|u m|o n|kan|ish|ana|sho|obo|era| we|ya |aci|i a|ura|wes|uko|e m|ran|o i|u w|uru|wo |kub|n a| im|ber|hob|bor|ure| no|ani|u a|gac|cir|o m|ush|bur|eke|ne |wiy|ara|nge|rwa|yos|e y| y |uga|bwa|ho |zo |ind|ane|mwe|iza|are|rag|ge |mo |bwo|bul|teg|ege|u k|u n|n i|ze |aha| uk|bye|anz| al| ki|bah|uha|ite|kug|gir|ngo|go |age|ger|u g|zir| ry|ugo|bih|akw|o g|guh|iki|bat|iby|gar|imi|mbe|y i|n u|ha |atu|mul|tan|eye|e c|kim| ni|shy|aho|tur|kir|ate|abo|je |bo | ng|u u|ata|o u|iko|gus| bo|bos| gi|a s|nir| ru|gek|i b|eza|i n|nzi|i i|rez|kur|ako|any| as|ung| se|bis|nya|o r|uki| ya|ngi|mat|eko|ugi| in|o y|kor|imw|rer|bak|yam|bit| ik|kar|ire|ige|shi|hin|ing|byi|nu |mug| at|yem|eme|gaz|irw|yer|rek|key|ihe|gen| ic|icy|hak|but|ets|tse|eze| ur| na|bag|awe|ubi| yi|i k|ezo|tek|ubw|rya|uza","zul":"nge|oku|lo | ng|a n|ung|nga|le |lun| no|elo|la |wa |e n|ele|ntu|tu |gel|we |ngo| um|e u|thi|uth|ke |hi |ni |ezi|lek| ku|nom|ma |o n|onk|nke|pha|gok|a u|nel|ulu|unt|o l|kwe|oma|o e|ang|lul| uk|kul|a k|eni|uku| wo|kel|hla|mun| lo|ama| ne|ath|ho |umu|ela|won|elw|lwa|ban|a i|ule|zwe|ana| un|une|ing|lok|aka|elu|wen| kw|aba|tho|akh|khe|ala|gan|o y|enz|ko |thu|na |u u|a e|gen|i n|zin|kho|enk|kun|mal|alu|e k|lel| na|kat|e a|nku|eko|he |hak|lan|kwa| ez|o a|o o|kub|ane|ayo|yo |lwe|eth|obu| em|nzi| ok|okw|kut| ba|ile|ben|het|eki|nok|nye|ike|i k|so |isi|ise|esi| ab|mph|nhl| is|aph|fan|ga |isa|ini| ye|e i|nen|uba|ba |zi |hol|ka |ant| fu|fut|uhl|abe|and|do |ukh|kuk|eke|a a|kil|e w|the| ya|nda|za | im| in|olo|ekh|eli|ith|khu|eng|yok|nis|sa |kuh|o u|any|ye |e e|i w| ak|olu|ndl|a o| le|ne |ume|mel|eka|mth| ko|emp|isw|amb|emi|no |uny|iph|i i|zo |kuf|nay|ind|ezw|kuz|vik|alo|o w|hul|ebe|lin| yo|kan|eze|ndo|uph|hlo|yen|enh|phe|ufa|ake|ale|kug|fun|und|wez|li |seb|a l|ula|wam|din|ahl|nez|yez|nya|bus|bo |azw|o k|ink|kek|nan|i e|ola|izi|mbi|ili|han|kuv|ase|hel|hut|a y|kis|kuq|da |omp|swa|kup|nem|ano|phi| ol|azi|ubu|o i|kol|oko| el|e l|huk|ani|nje|sek|uke|lon|pho|kom|lak|kus|zis|ham|mba|izw|ulo|hun|i u|u n","swe":" oc|och|ch |er |ing|för|ar |tt |en |ätt|nde| fö|rät|ill|et |and| en| ti| rä| de|til|het|ll |de |om |var|lig|gen| fr|ska|ell|nin|ng | ha|ter|as | in|ka |att|lle|der|und| i |sam|lla|fri|ghe|ens|all|ör |na |ler| at|ete|den| el| so| av|av |igh|r h|nva|la |r r|env|ga |tig|nsk|iga|har|t a|som| ut|tti|nge|t t|ion|a s|ns |a f| sk|a o|r s|män|an |är |isk|rna| st| si| vi| sa| al|t f|ra | be|a r| är| me|ati|n s|lan| va| an|med|tio|ern|nna|t e| un|äns|ta |nat|sta|ig | åt|ten|kli| gr|vis|t s| la|äll|one|änd|han| ge| li|ans|stä|ner|t i| må|gru|ver|rih|ihe| mä|sni|lik|n f| re|r a| na|må |ers|t o|ad |r e|da |det| vä|ent|run|rkl|kla|ri |h r|nom|kap|igt|gt |n e|dig|uta|tan|e s|dra|s f|ed |d f|lar|rin|ran|upp|erk|tta|ika|änn|r o|erv|rvi|kte|vid|a i|lag| på|g o|id |ari|s s|r u|lin| om|ro |a m|els|isn|del|sky|r d|e m|mot|ot |vil|på | mo|r m|str|örk|ndl|on |i o|nd |tni|n m|ber|nad|gan|örs|r f|kal|era|a d|dd |je |itt| up|sin|nga|täl|ras|n o|ärd|i s|r i|enn|a n|n a| hä|bet|ski|kil|n i|lse|rel|t b|g a|kyd|ydd|arj|rje|l v|s e|end|amt| fa|nas| så|inn|tat|per|t v|l a|int|tet|öra|e f|tra|r g|yck|r ä|vär|ege|arb|d e|re |nis|ap |ara|bar|l s|t l|lit|när|lke|h f|ckl|v s|rän|gar|ndr|mt |se |häl|h a|llm|lmä|ess|sa ","lin":"na | na| ya|ya |a m| mo|a b|to | ko| bo|li |o n| li|i n| pe|i y|ngo|a n|a y|ki | ba| ma|kok|pe |la |a l|zal|oki|ali|nso|oto|ala|ons|so |mot|a k|nyo|eng|kol|go | ny|yon|nge|o e|ang|eko|te |o y|olo|oko|ma |a e|iko|e m|e b|lik|ko |o a|ako| ye|ye |ong|mak|si |isa| ek|aza|lo |sal|ama| te|o p|bat| az|e n|oyo|ani|ela|sen|o m|a p|ta |ban|i k|amb|ni | es|yo |aka|mba|osa| oy|mi |a t|eli|lis|i p|i m|ba |mok| to|mbo|bok|isi| mi|ing|lon|ato|o b| nd|ge |bot|ota| ez|nga|nde|eza|o t|kan|ka |gel|e k|bo |ese|sa |lam|koz|den|oba|omb| po|ga |mos|kop|oli|e e|yan|bon|oka|kob|lin|bik|po |kos| lo|sam|e a| ’t|’te|kot|ti |ngi| bi|e y|omi|esa|i b| el|elo|lok|gom|som|i t|ate|ika|kam|ope|a s|kat|ati|ata|wa |iki|i e|bom|tal| ka|oza|o l|bos|zwa|ola|pes| se|oke|bek|o o|ndi|bal|nda|nza|oso|omo|lak|bak|mis| at|bis|sus|usu|su |osu|lib|and|ozw|asi|ele|tel|mu |i l|e t|ase|mol|mob| nz|kel|ene|ne |mbi|ami|aye|nis|a ’|tan|le |obo|baz|pon|wan| ep|yeb|kum|sem|emb|mal|gi |nya|ote|e l|oku|bas| ta| ak| ti|tin|ina|gis|opo|ana|mab|bol|u y|mat|ebi|oti|mib|obe|a o|san| so|mbe|be | mb|ibo| et|ike|da | en|ben|za |yok|eni|tey|bwa|bi |kom|i o|gob|mik|umb|se |eba|e p|ibe|ale|lel|boy|eta|i a|bu |ime|sik|mon|ona|mel|ose|mwa|sol|geb|ebe","som":" ka|ay |ka |an |oo |uu |da |yo |aha| iy|ada|aan|iyo|a i| wa| in|sha| ah| u |a a| qo|ama| la|ga |hay| dh|ma |aad| xa|ah |a d| da|qof|in |aa |iya|a s|a w| si| oo|isa|eey|yah|xaq| le|ku |lee|u l| ku|taa| ma|la |dha|ta |aq |q u|eya|y i|ast|sta|a k|ha |of | wu|wux|uxu|xuu|kas|sa |u x|ara|doo|wax| am|iis|ro |a q|inu|nuu|ala|a x|o a|maa|nay| sh| qa|o i| aa|kal|le | lo|loo|f k|o d|ana|a u|o x| xu| xo| ba| uu|yad|iga|a l|si |dii|a m|yaa|gu |ash|u d|ale|ima|adk|aas| ca|o m|do |lag|add|na |lo |o k|san| is| so|adi| mi| fa|xor|dka|aqa|iin| he|aar|had|rka|a o|ado|dad|soo|mid|kar|aro|baa|qaa| ha|nta|o h|ad |u k|aga|dda| ga|hii| sa|u s| ay|har|axa|mad|n k|eed|quu|haa|daa|o q|aal|o s|n l|xuq|uqu|n i|id |hel|aya| ee| ho|nka|i k|uuq|nim|ina|ihi|elo|waa|dan|agu|ays|a h|saa|mar|ark|ya |ank|o w|naa|gga|ee |ax | bu|uqd|qda|rri|riy|n a| no|u h|n s|oon|lka|u a|laa|o l|ab |haq|uur|int| gu|ida|iri|lad|dhi|yih|ysa|dah|to |aam|ofk| xi|arc|rci|eli|ood|ool|orr|alk|goo|ayn|e u|n x|h q|asa|sag|a c|sho|ami|i a|n q|siy| ug|kii|o u| ta| ge|gel|agg|a g| di|ido| ji|hoo|a f|al |jee|dal|ago|ii |a b|mo |iir|ooc|bar| ci|caa|xir|ra |aqo|sig| mu|aba|oob|oba|u q|aaq|aab|sad| ra|cad|dar|imo|ar |y k|fka| du|xay|y d|ras|o c|ari","hms":"ang|ngd|gd |ib | na|nan|ex |id | ji|ad |eb |nl |b n|d n|ud | li|jid| le|leb| ga|ot |anl|aot|d g|l l|b l| me|ob |x n|ngs|gs |mex|nd |d d| ne|jan|ul | ni| nj|nja| gu| zh|lib|l n|ong| gh|gao|b j|b g|nb |l g| je|jex|gan|ngb| ad|end|el |gb |han| sh|ub | da|d j|t n|d l| nh|nha|b m|is |d z|x g| ya| wu|she|l j|oul|il |nex| ch|b y|d s|gho|gue|uel|wud| gi|d y|hob|nis|d b|s g| zi|lie| yo|es |it |nx |ies|aob|gia| de|eib|you|ian| hu|s j|d m| ba|zib|oud|b d|chu|ut |t j| do|ol |at |hud|nen|hen|s n|iad|ab |zha|t g|dao| go| mi|enl|x j|enb|b z|hei|eit|nt |b s| ze|d c|al |inl| xi| se| re|ren|hao|d h| fa|ngx|gx |anb|gua|yad| ho|x z|fal|b w|nib|ix |b h|and|had|t l|x m|gou|d x|bao|ant|don| xa|yan|d p|s z|hib|anx|zhe|ox |l d| pu| du|dan|gha|od |s m|sen|xin|lil|hui|uib|uan| we| di|b x|oub|t h|hub|zhi|t z| ju| ge| ng|t m|hol|xan|pud|x l| ma|jul|eud|hea|l s|enx|l z|jil|zen|aos|os |s l|d r|dei|ngt|gt | yi| he| si|nga|heb|zho|hon|did|d a| lo|b a|x c|dud|b b|lou| bi|dou|geu|b c|d k|x a|d w|wei|x b|l h|x d| qi|bad|t w| bl|blo|aod| nd|nia|deb| ja| sa|eut|ax |eab|s a| bo|lol|sat|ngl|gl | to|l m| pa|pao|b f|lia|x s|heu|t s|che| ca|can|s w|s y|sib|mis|zei|ux | pi|x r|gon|t p|jib|iel|d f| cu|ghu|unb|t c|inb| ko|x x","hnj":"it | zh| ni|ab |at | sh|ang|nit|os | do|uat|ox |ax |nx |ol |ob | nd|t d|x n|nf |zhi|as | ta|tab|ef |if |d n|ad | cu| mu|cua|uax|mua|uf |b n|ib |s d|dos|id |enx|hit|nb | lo|f n|t l|ngd|gd |inf|us | go|ux |ed |she|b d|t n|b z| ho| yi|x z|aob|l n|t z|ong| zi|ix |nda|d z|yao|uab|enb|ut | de|f g| dr|dol| yo|zhe| le|euf|x d|inx| ne|nen|das|dro|ngb|gb | ge|d s|s n|f z|uef|hox|len|b g|il |ud |nd |gox| ua| na| du|x j|f y|oux|x c|han|ndo|of |f h| ja| gu| ny|zha|s z| da|uad|heu|lob|shi|ik | bu| ji|hai|ged|od |b h|t g| ya|ngf|gf | hu|ex |bua|you|rou|nil|hen|yin|zhu|out|ous|nya|is |f d|enf|b c|af |dou|lol|nad| re| ha| xa|uk |t s| id|xan|sha|hua|jai|b y|aib| qi| la|s s|d d|l m|ot |hue| xi|x g|x l|ren| kh| dl|ait| ba|aod| zo| ju|jua|zif| nz| ga| di|bao|x y|b s|x s|xin|aof| li|b b|x m|x t|eb |b l|ngx|gx |dax|b t|hef|gua| be|las|d j|s t|hed|nzh|l d|t y|hif| pi|f b|d l| ib|t h|f l|hou|dus|hun|und|s l|t r|el |uas|gai|ngt|gt |hab|aos| mo| zu| bi|f t| za|d y|x h|aik|k n|end|aid|ros| gh|zos|pin|ak |s x|d g|f s|s y| ao|k z|s b|due|mol| fu|dex|iao|x b|hik|x i|deu|l b| bo|b k|s m| lb|lb | hl|lan|uaf|d b|zho|al |eut| ro|ub |et |t c|d m|x x|d h| ch|d p|f x|t b| nt| su|uak|zis|shu|t t|gha|yua| we|oud|gon|d t","ilo":"ti |iti|an |nga| ng|ga | pa| it|en | ka| ke| ma|ana| a | ti|pan|ken|agi|ang|a n|a k|aya|gan|n a|int|n t|ali|lin|a m|dag|git|a a|i p|teg|a p|nte| na|man|awa|kal|da |ng |ada|ega|nag|way|na | da|n i|sa |i k|n k|ysa|n n|al |a i|no |add|aba| me|eys|i a|nna|dda|ngg|mey| sa|ann|pag|ya |gal| ba|mai| tu|gga|ung|i s|kad|yan|tun|nak|wen| ad|aka|aan|enn|nan| ag|asa|i n|wan| we|nno|yaw|i t|l m|ata| ta|ami|a t|apa|ong| si|li |i m|kas|aki|ina|ay | an|n d|ala|a s|g k|gpa|mak|eng|ili|n p|et |ara|at |ika|ipa|dad|ama|nai|g i|yon| aw|in |ao |toy|oy |ta |on |aen|ag |bab|ket|aik|ily|lya|sin|tao|ani|agp| ki|a d|bal|oma|ngi|uma|g a|i i|kin|naa|bae|o k|y n|daa|gil|o t|iwa|ags|pad| am|syo|i b|kab|sab|ida| um|mil|aga|gim|ar |ram|yto|san|tan|min|pap|n m|eg |agt|o n|a b|aar|asi|ino|nom|nia|n w| wa| de|dey|pam|i e|sal|bag|saa|iam|eyt|day|kit|ak |ed |gsa|lak|t n|ari|nay|kan|nat|t k|i l|i u|sap| gi|g n|aw |sia|o p|o i|dum|i g|to |uka|agb|bia|aib|lub|ubo|ged| li|apu|pul|lan|imo|mon|y a|ma |pak|ias|sta|den|i d| id|bas|kai|gin|i w|kap|ita|asy|kni|kar|bon|abi|ad |umi|ban|agk|akd| ar|mid|din|sar|iba|nnu|inn|o m|ibi|ing|ran|akn|nib|isu|abs|maa|kda|aip|as | la|o a|t i|idi|nto|lal|amm|aad|or |adu|kua|ais|nal|w k|ulo|y i"},"Cyrillic":{"rus":" пр| и |рав|ств| на|пра|го |ени|ове|во |ани| ка|ть | по| в | об|ия |лов| св|сво|на | че|о н|ело|ост| со|чел|ие |ого|ния|ет |ест|аво|ажд|ый | им|век|ние| не|льн|име|ова|ли |ать|т п|при|каж|и п| ра|или|обо|жды| до|ых |дый|ек |воб|бод|й ч|его|ва |ся |и и|мее|еет|но |и с|аци|ии |тва|ой |лен|то | ил|ных|к и|енн|ми |тво| бы| за|ию | вс|аль|о с|ом |о п|о в|и н|ван|сто|их |ьно|нов|ног|и в|про|ако|сти|ий |и о|бра|пол|ое |дол|олж|тор| во|раз|ти |я и|я в| ос|ным|нос|жен|все|и р| ег|не |ред|тел|ель|ей |сно|оди|о и|а и|чес|общ|тве|щес| ко|ним|има|как| ли| де|шен|нно|е д|пре|осу| от|тьс|ься|вле|нны|аст|осн|а с|одн|ран|бще|лжн|быт|ыть|сов|нию| ст|сту|ват|рес|е в|оль|ном|чен|иче| ни|ак |ым |что|стр|ден|туп|ду |а о|ля |зов|ежд|нар|род|е и| то|ны |вен|м и|рин|нац|вер|оже|ую | чт|она|обр|ь в|й и| ме|аро|ото|лич|нии|бес|есп|я п|х и|о б|ем |е м| мо|дос|ьны|тоя|еоб|ая | вы| ре|и к|кот|ное|под| та|жно|ста| го|гос|суд|ам |ава|я н| к |ав |авн|ход|льс|нст| бе|ово|и д|ели| дл|для|ной|вов|ами|ате|оро|дно|ен |печ|ече|ка |еск|ве |уще|в к|нен|мож|уда|о д|ю и|ции|ког|вно|оду|жде|и б|тра|сре|дст|от |ьст|е п|нал|пос|о о|вны|сем|азо|тер|соц|оци|циа|ь п|олн|так|кон|ите|обе|изн| др|дру|дов|е о| эт|х п|ни |еди|дин|му ","ukr":"на | пр| і |пра|рав| на|ння|ня | за|ого| по|го |ти |люд| лю|во | ко| ма|юди|льн|их |аво|о н| не|анн|дин| св|сво|кож|ожн|пов|енн|жна| до|ати|ина|ає |а л|ува|не | бу|обо|аці|має| як| ос| ви|є п| та|аль|або|них|ні |ть | ві|ови| аб|бо |а м|ере|і п|без|вин|при|о п|ног|іль|ми |ом |та |ою | бе|ста|воб|бод|до |ост|ті | в | об|ва |о в| що|ий |ся | сп|і с|від|нов|кон|и п|ств|инн|нан|ван| у |дно|она|ват|езп|пер|но |ій | де|ії |ідн|и і|сті|під|ист|нні|ако|ьно| мо|бут|ути|ід |род|і в|що |ава|тис|а з|вно|ну |и с|ої |і д|ду |а в|ів |аро| пе|ний|а п|му |соб|яко|спр|і н| рі|рів|чи |ним|ля |нар|лен| ін|у в|нен|ому|нац|ися|и д|ова|ав |і р| ст|ові|нос| пі|ють|сть|ово|про|одн|у п|віл|овн|вни| ро| її|її | вс|ном|і з| ра| су|мож|чен|ві |буд|іст|івн|оду|а о|ни |сно|ими|а с| со|ьни|роз|и з|зна|я і|о д|х п|е п|о с|и в|дер|ерж|им |чин|рац|ції|і б| од|а н|сі |сту|тер|ніх|ди |їх |нна|так|о з|я н|заб|зпе|у с|спі| ні|е б|ржа|осо|я п|в і|кла|то |а б|осн|рим|сві|віт| дл|для|тва|ами|зах|рес| ре|ков|тор|соц|оці|ціа|і м|ки |тан|абе|печ|ког|ага|гал|ту |ї о|е м|оже|же |удь|ніс|ара|руч|авн|и щ|ною|я в|всі|кої|ини|ь п|осв|і і|ахи|хис|іал|а і|оди|тво|жен|нь |нал|ваг|аги|ги |інш|лив|х в|заг|роб|піл|в я|ком|об |о у|жав|і о","bos":" пр| и |рав| на|пра|на |да |ма |има| св|а с|а п| да| по|а и|је |во |ко |ва | у |ако|о и|но | за|е с| им|аво|ти |сва|ава|о н|и п|ли |или|и с|вак|ост| ко|их |не |а у| сл|вањ| не| др|ње |кој|ије|ња |и д| би|ств|им |у с|јед| ил|сло|лоб|обо|бод| је| ра|при|ање|вје| об|а д|ом |се | су|е и|ју | се|сти|и и|а б|дру| ос|е п|вој|циј|у п|о д|а о|раз|су |ања|а н|ује|ова|у и| од|и у|ло |едн|ни |у о|ово|аци|ити|о п|а к|оје|жав|нос|дје|е о|бра|пре|шти|а ј|про|и о| ка|них|бит| тр|тре| бу|буд|у з|ог |ста|ја |држ|ржа|е д|миј|сво|реб|авн|ија|и н|е б|ђи |пос|ту |аро|род|ред| ње|ба |а з|ка |де |ем |ају|ива|ве |е у|јер|бил|ило| из|ени|ду | до|а т|за |еђу|нар|тва|одн|њег|гов| са|ним|м и|вим| ни|у д|јел|о к|оји| см|дна|уђи| ст|алн|ист|и м|еба|ран|ичн|вно| дј|у н|ода|нак|е к|ан |нов|сно|сту|нст|ено|чно|ани|ном|е н|тив|нац|аве|и б|сми|чов|овј|осн|а р|нап|ови|анс|дно|оја|ног|м с|еди|ара|ој |ну |кри| кр|оду|ико|рад|ник|туп| чо|јек|тво| вј| ми|тељ|обр|жив|заш|ашт|тит|уна|его|под|сам|о о|руг|ји | мо|ву | ов|х п|уду|рив|ење|дст|те | те|а ч|вни|сви|и в|ина|и т|ра |ите|у у|иту|међ|ак |дни|ниц|њу |нич|одр|вољ|ави|г п| оп| та|рим|кла|е т|ао | вр|акв|тно|мје|дуђ|она|ада|сто|оби|едс|то |оди|о с|ку |риј|у м|од |ичк|вен","srp":" пр| и |рав|пра| на|на |ма | по| св|да |има|а п|а и|во |ко |ва |ти |и п|ако| у |а с| да|аво|ост|и с| за|о и|сва| им|вак|је |е с|ава| сл|о н| ко|ња |ом |но | не|не |ли |у с| др|или|сло|обо|кој|их |лоб|бод|им |а н|сти|ств|а о|ју | ил| би|при|а у| ра| је|ог |јед|ње |е п|у п|ни |а д|и у|едн|ити|нос|а к|о д|ање|ова|про| су|и и| ос|вањ|ста|дру|е и|циј|се |род| об|и о|ања|ају|е о|ове| де|аци| ка|ово|ја | ни| од|ве | се|и д| ст|м и|авн|и н|ује|ени|ија|дна|жав|у и|ред|су |нов|оди|вој|тва|е б|оја|што|у о|ара|а б|држ|ржа|одн|ним|ран|пош|ошт|а ј|ка | ов|у у|ду |аве|осн|сно|шти|аро|раз|бит|а з|у з|ења|де | из|них|о п|у д|е д|пре|ву | тр|ту |еђу|нар|гов|без|ичн|за |вно|ло |у н|оји| са|то |ан |нак| ме| ње|чно|сво|вим|нац|ода|ји |ани|ме |ико|ник|ика|е к|пос| кр|тре|реб|нст|сту|е у|ку | до|ашт|тит|алн|дно|њег|ном|ног|м с| вр|о к|ој |чов|анс|ови|о с|бра|те |тав|туп|ено|жив|заш|ем |и м|дни|вар|рив|руг|вољ|ави|штв|е н|као|ао | ли|ст |ило|њу |сме|о ј| см| чо|оду|вре|дст|од |а т|кри| бу|буд|и в| ве|вер|а р|дел|тво|међ|оје|м п|ављ|его|под|ена|уги|ла |пор| оп|руш|ушт|ком|еди|ба |кла| мо|и б|как|акв|рад|ну |век|рим|гла|јућ|уде|вни|еба|е р|сви|м н|иту|тер|ист|а ч|пот|рем|ниц|у в|х п|ива|сам|о о| он|езб|збе","uzn":"лар|ан |га |ар | ва| би|да |ва |ир | ҳу|ига|уқу|бир|ҳуқ|қуқ|ган| ҳа|ини|нг |р б|иш |ни | та|лик|инг|ида|а э|или|лиш|ари|нин|иши| ин|инс|он |ади|нсо|сон|ий |лан| ма|дир|кин|и б|ши | бў|ҳар|бўл| му|уқи|дан|ила|қиг|р и|қла| эг|эга| ўз|а б| эр|эрк|кла|қил|оли|ки |гад| ол|нли|лга|и ҳ|рки|лиг|иги| қа| ёк|ёки|иб |н м| ба| қи|н б|ри |ара|атл| бо|ҳам|лат|бил|ин |р ҳ|а т|ала|лаш|бош|ик |инл| эт|ш ҳ|а ҳ|и в|ниш|тла|эти|тил|мас|а қ|и м|оси|им |ат |уқл|арн|рни|қар|ани|а и|ўли|ги | да|н ҳ|риш|мла|ли |и т| ха|арч|рча|ча |бар|аси|ўз |а а|рла| бу|а м|лин|ати|ият|либ|таъ| ту| ас|тиб|аро|а о|ун |тга|р в|икл| бе|мум|н қ|али| те|сид|ш в|мат|амд|мда| ке|лла|шга|н э|дам|амл|хал|ола| қо|ири|ирл|илл|а ш|рга|иро| шу|тиш| де|умк|мки| эъ|тен|енг|а ў|рда| са|гин|имо|тар|а ё|ур |рак|алқ| ки|аза|к б|ода|сий|а к|тни|ўлг|н в|нда|шқа|зар|н о|и қ| ми|мил|р т| си|ак | ша|ор |кат|ера|сиз|ам |асо|сос|н ў|шла|н т|нид|ошқ|й т|ана|ти |рин|асл|бу |син|дав|илг| со|ас |нга|лак|ино|ъти|муҳ|а в|аш |бор|лим|уни|лли|н и|си |и э| ка| то|а д| жа|ами|қон|на |риг|лма|кер|авл|вла|и а|дек|екл|ят |ака| эм|эма|эът| ҳе|ҳеч|еч |ким|икд|кда|сит|лад|и ў| ни|ник|ага|и о|и с| уч|учу|чун|аъл|ъли|анл|аёт| иш|а у|ўзи|диг|ай |ада|оий|мия|тда|а с","azj":" вә|вә |әр |лар| һә|ин |ир | ол| һү|һүг|үгу| би|гуг|на |ләр|дә |һәр| шә|бир|ан |лик| тә|р б|мал|лма|асы|ини|р һ|ән |шәх|әхс|гла|ары|а м|дир|али|аг |угу| ма|илә|ын |уна|јәт| ја|ара|икд|ар |әри|әси|р ш|рин|әти|дән|нин|н һ| аз|јјә|син| мү|тин|ни |зад|ијј| мә|әрә|мәк|үн |нда|әт |и в|ыны|нын|ндә|ә а|аза|рын|гун|олу| ет| га|лыг|илм|кди|лә |ә ј|әк |лмә|ына|инд|олм| ин|хс |мас|сын|лун|ә б|да |н т|әми| бә|адл|длы|н м|нә |г в|ја |тмә|бәр| он|ә һ|әја|сы |нун|етм|дан|инә|маг|ун |раг|ә в| ва|н а|н б|рлә|ә м|си |әра|н и|ынд| өз|аны|нма|инс|ама|ры |ығы|ли |ил | ал|ала| ди|ә д|ик |ирл|ләт|а б|бил|ыг |мүд| сә|ә и|ны |нла|әлә|дил|алы|ә е|унм|н в|ола|аси|үда|или| дә|нса|сан|угл|ә о|хси| һе|уг |әтл|һәм|әни|ејн|у в| да|тәр|мин|јин|кил|дыр| бу|лан|иш | һа|мәс| ки|ми |лығ|ә г|г һ|и с|даф|афи|фиә|р в| иш| әс|сос|оси|сиа|хал|алг| та| ас| ед|бу |һеч|еч |рә |јан|ы һ|ким|ији|ы о|ина|сиј|әса|сас|а г|јар|лы |түн| ис|ист| со|ал |н ә|ифа|әмә|ә т|мил|илл|лыд|ыды|ыр |әдә|ыгл|лиј|тлә|а һ|мәз| бү|бүт|үтү|ија|иә | үч|үчү|чүн|т в|дах|ахи|хил|р а|ылы|ман|сил| се|сеч|адә|иал|ону|өз | ҹә|миј|әји|н е|еди| ми| нә|а в|мән|рил|әз |илд|раб|абә|шәр|ғын|аја|зам| ни|улм| ха|тәһ|әһс|һси|и һ|сти|гу |вар|ад |там|уғу|з һ|ган|рәф|н д","koi":"ны |ӧн | бы|да | пр|пра|лӧн| мо|рав| да|быд|лӧ |орт|мор|ӧм |аво|ӧй | ве|нӧй|ыд |ыс | не|сӧ |ын |тӧм|во |сь |эз |льн|ьнӧ|тны| ас|д м|ыны|м п| и |сьӧ| по| ӧт|то |бы | эм| кы|тлӧ|эм | от|аль|н э|вер|ртл| кӧ|ӧ в| ко|ерм|ств|воэ| до|тшӧ|ола|ылӧ|вол|ӧс |ы с|ліс|ісь|а с|ас |кыт|тво|кӧр| се|нет|ето|шӧм|ӧдн| ме|мед| ол|злӧ| вы|ӧ д|ӧ к|та |аци|ӧ б|вны|лас| на|з в|ӧрт| во|на |а в|ась|ыдӧ| сы|едб|дбы| вӧ|лан|рмӧ| оз|оз | сі|ытш|оэз|ӧтл|ы а|оти|тир|с о|олӧ| чу|ись| эт|ция|рты|тыс|ы б|кол|ы п| го|сет|кӧт|тӧг|ост|тӧн|н б| со| сь|рті|ӧтн|н н|дз | ке|кер|о с|мӧ |ӧ м| мы|ис |а д|ӧг |дӧс|ест|нӧ |пон|онд|ы н|сис|нац|итӧ|н п|суд| уд|удж|выл| ви|эта|н м| эз|ана|ӧны|с с|ть |орй|йын|сси|рре|рез|ьӧр|ті |сыл|ысл|нда|мӧд|з к|а п|с д|ӧр |чук|укӧ|рны|ӧмӧ|кин|рт |овн|ӧт |она|нал| об|ӧ о|отс|лӧт|й о| тӧ|тӧд|дны|асс|кон|слӧ|ы д|скӧ|с в|с м|ытӧ|езл| ло|быт|осу|эзл|кӧд| ум|умӧ|мӧл|ӧ п|асл|тра| ст|ь м|сьн|ьны|ь к| ов|код|сть|а н|ы к|тла|а к|ӧтч|дор|иал|а о| пы|н к|оль| за|аса| дз|нек|а м|н о|етӧ|ӧ н|ерн| сэ|ы м| де| чт|что|йӧ |ы ч|еки|поз|озь|езӧ|вес|ськ|исӧ|ӧтк|тко|рйӧ|ион|ннё|з д|ӧмы|тсӧ|са |кыд|енн|соц|оци|циа|й д|пыр|зын|нӧя|ӧя |зак|ако| мӧ| а |еск|а б|ан |тӧ |гос|уда|дар|арс|рст|рлӧ|ӧ с| ли|эсӧ|оля|мӧс|ӧсь|дек","bel":" і | пр|пра|ава| на|на | па|рав|ць |ны |або|ва | аб|ацы|ае |аве| ча|анн|льн|ння| ма| св|ала|сва|не |чал|лав|ня |ых |ай |га | як|век|е п| ад|а н| не| ко|ага|пры|кож|ожн|а п| за|жны|ы ч|дна|бод|а а|цца|ца |ваб| ў |мае|ек |і п|ных|нне|пав|а с|асц|бо |ам |ста| са|ьна|ван| вы|одн|го |аць|наг|він| да|дзе|ара|мі |цыя|оўн|тва| ра|і а|то |ад |ств|аві|лен| ас|і с|най|аль|енн|і н|ці |аро|аво|рац|сці|пад|к м| яг|яго|іх |ама| бы|рым|род|і і|ым |энн|што| та|я а|нан|ана|нас| дз|ні | гэ|гэт|а ў|інн|а б|ыць|чын|да |оў | шт|ыі |а і|агу|які|ным|дзя|я п|цыі|і д|ьны|нар| у |ўна|оль| ўс|х п|нац|ыя |ах | ус|ымі|ля |амі|ыма| ні| гр|воў|ў і|адз|эта|іна|ход|о п| ка| ін|ы п|зна|нен|аба|быц|рад|ўле|чэн|ь с|чы |сам| ст|асн|і р|ду |аў |ера|ры |нал|жна|уль|рам| су|аны|кла|аюч|ючы|оду|ую |а р|ўны|маю|ука|кац| дл|для|ь у|пер|е і|нае|ако|і з|гра|адс|ыцц|яўл|і ў|яко|а з|кан| ро|роў|нст| шл|адн|ода|аса|аду|нав|вы |ы і| пе|і м|кі |але|х і|авя|алі|раб|мад|дст|жыц|раз|зе |нна|ані|х н|е м|ада|нні|ы ў|о н|дзі|я я|люб|аюц|бар|дук|ахо|а в|сац|авы|так|я ў|тан|зак|чна|заб|бес|я і|ваг|гул|ім |ган|зяр|ярж|ржа|жав|ве |е а|м п|ацц|од |ены| дэ|ну |у ш|нах|вол|а т|ога|о с| бе|інш|ака|усе|яна|ека|ка |сно|рас| рэ|ь п|ніч|чац|се |і к","bul":" на|на | пр|то | и |рав|да | да|пра|а с|ва |ств|та |а п|ите|но |во |ени|а н|е н| за|о и|ото|ван| вс|не |ки |те | не|ове|о н| по|а и|ава|чов|ия |ане|ни | чо|ие |аво| св| об|а д|е п|век|ест|сво| им|има|и ч|ани|ост|и д|ние|все|тво|или|ли |и с|вот|а в|ма | ра|ват|и п|сек|еки|ек |а о|и н| в |е и| ил|ова|при| се|ето|ата|аци|воб|обо|бод|к и|пре|ат |оди|раз| съ| ос|а б| бъ|ред| ка| ко|лно|ния|о д|бъд|о п|се | от|за |о в|ъде|ята| е | тр|и и|о с|тел|и в|от |ран|е с|нит| де|ка |бра|ен |общ|де |алн|и о|ява|ият|ция|про| до|нег|его|а т|нов|ден|как|ато|ст | из|а ч|тря|ряб|ябв|бва|а р|а к|вен|о о|щес|а з|ено|гов|тве|нац|дър|ърж|ржа|е д|нос|лен|ежд|род|е о|и з|вит| та|зи |акв|ез |она|обр|нар|нот|иче|о т| ни|кат|т с| с |йст|авн| бе|осн|сно|вни|пол|рес|аро|кой|зак|е в|тва|нен|е т|ува| ли|ейс|жав|едв|стр| ст|без|вси|сич|ичк|чки|вид|си |жен|под|еоб|нст| те|ди |ри |сто|ган| дъ|а е|и к| че|ода| ср|сре|ака|чес|и р|и м|т н|одн|о р|лич|елн| ре|бще|ник|ели|че |дви|еме|ира|жда|кри|лни| си|са | то|ой | ме|оет|гра|ход|дру|ичн|еди|дос|ста|дей|я н| къ|ан |ико|чре|й н|ави|нал|пос|тъп|ра |азо|зов|рез|той| со|меж|тно|т в|и у|нет|нич|кон|клю|люч|нео|чит|ита|а у|а м|дно|оят|елс|лит|ине|таз|ази| мо|що |т и|изв|тви|чен","kaz":"ен |не | құ|тар|ұқы| ба| қа|ға |ада|дам|құқ|ық | ад| бо|ына|ықт|қта| жә|ар |ың |ылы|жән|әне|мен| не|лық|на |р а|де |ін |ары|а қ| жа|ан | әр|қыл|ала|ара| ме|уға|н қ|еме|ның| де|іне|ам |асы|тан|лы |әр |да |ста|нды|еке|ығы| өз|ған|анд|ын | бі|мес| қо|бол|бас|ің |ды |етт|ып |ілі|н б|нде|ері|е қ|қық|бір|лар|алы|нем|есе|се |а ж|ы б| ке|тын| ар|е б|бар|ге |ост| ти|тиі|олы|ік |інд| та|аты|сы |е а|дық| бе|ы т|нда| те|ры |ғы |бос|ғын|луы|иіс|сын|рде|рын|еті|қығ|алу|іс |рін|іні|е ж|дар|ім |егі|н к|қар| ер|тті|н ж|ыры|аны|лға| са|уын|ынд|ыны|ы м|рға|ген|ей |тік|тер|нің|ана|уы |аза| от|нан| на|е н|гіз|тық|мыс|ы ә|мны|м б|өзі|сқа|қа |е т|ң қ|еге|ке |ард|нег|луғ|лан|амн|кін|і б|асқ|рал|ті |ру |айд|тта| же|а б|р м|рды|кет|аса|ді |өз |ама|дей|н н|тыр|ауд|ігі|лып| мү| ал|зін|лік|дай|мет|жас|бер|тең|арқ|рқы|а о|е ө|қам|елі|рлы|ы а|а т|дер|біл|р б|еле|қор|ден|тін|уда| тү| жү|кел|і т|ір |лге|ы ж|ең |а д|тты|оны|гін| ха|ркі|лде|е м|н т|түр|оға|ікт|кті|зде|жағ|уге|ауы|рыл|ұлт|лтт| ос|осы| то|ция|ы е|н а|ау | ау|ені| ел|н е|оты|шін|ыс |қты|імд| да|сіз|лма|кім|ң б|лім|қат|зі |орғ| әл|хал|ерк|ек |құр|тте|е д|ағд|ғда|елг| ас|ірі| ұл|ағы|амд|тал| со|рып|ылм|лін|ным|мас|сыз|дан|із |ірд|ай |гі |сты|ым‐|ң ж|с б"},"Arabic":{"arb":" ال|ية | في|في |الح| وا|وال| أو|ة ا|أو |الم|الت|لحق|حق |كل |لى |ان |ة و|الأ| لك|لكل|ن ا|ها |ق ف|ات |مة |اء |ما |و ا|ون |ته |الع|أن |ي ا|ي أ|شخص|ة ل|الإ| عل| أن|م ا|حري|الا|من |على|حقو|قوق|ت ا| شخ|لا |ق ا| لل|فرد|رد | أي|أي |رية| كا|د ا| ول| من| إل|خص |ا ا|وق |نسا|ل ف|ا ي|ه ا|ة أ|كان|ن ي|امة|جتم| حق|الق|ام |دة | لا|ل ش|إنس|سان|ين |ة م|اية|ن ت|ا ل|ذا | فر|ن أ|هذا|لة |اً | عن|ى ا|لتع|اسي| دو| حر|ع ا|ه ل|لك |ه و|ترا|له |ماع|د أ|ي ح|إلى|الج|الد|، و| با|ن و|ي ت|نون|لعا|مع | هذ|ة ع|لحر|يات|عية|ص ا| وي|لإن|لأس|أسا|ساس|سية|بال|ي و|حما|ماي| إن|الف|انو|ير |رام|ا و|عام|دول|مل |الو| مت| له|الب|ساو|ة ب|هم |ع ب|علي|ك ا|لقا|قان|تما|ة ت|ى أ|ول |ة ف|ا ب|اد |الر|ل و|ل ا|انت| قد|لجم|لمي|لتم|تمت|اعي|ليه|لمج|ه أ|ا ك|ال |لأم|لمت|لإع| يج|لدو|ق و|ريا|يه |رة |ن ل|دون|تمي|كرا|يد |ذلك| يع|ر ا|تعل|عال|تسا|لاد|اة |قدم|متع|تع |اجت| كل|مان|غير|اته|م و|مجت|تمع| مع|مم |لان|يجو|جوز|وز |عمل|دم |فيه|الض|ميي|ييز|متس| عا|أسر|ن م|معي|لات| مس|لاج|عن |ي إ|ليم|يم | أس| تع|يز |مية|جمي|ميع|الش|اعا|ة، |الس|شتر|لمس|لما|ني |لي |يها|ملا|ود |تي |لضم|ضما|اعت|ر و|اق |ي م|ي ي| بح| تم|تنا|أمم|تحد|حدة|إعل|علا|ه ع| جم|عة |م ب|ولم|الن|ل إ| به|ب ا|اوي|قد |أية|قيد|د ب|اك |وية|إلي|لزو|د م|مست|كاف|وله|ه ف| ذل| وس|لحم|نت | أم| مر|مرا| وأ| وع","urd":"ور | او|اور|کے | کے| کی|یں | کا|کی | حق|ے ک|کا | کو|یا |نے | اس|سے |ئے |کو | ہے|میں| می|ے ا| کر| ان|وں | ہو|اس |ر ا| شخ|شخص|ی ا| جا| سے|حق |ہر |خص |ے م|ام | یا|ں ک|ہیں|سی | آز|آزا|زاد|ادی|ائے|ہ ا|ص ک|ا ح|جائ|ہے |کہ |ر ش|ت ک| پر|ی ک|م ک|۔ہر|پر |ا ج|ان |دی |س ک|ق ہ|ہے۔|ر م|ں ا|ی ح|و ا|ار |ری |ن ک|کسی|حقو|قوق| مع|ے گ|ی ج|وق | ہی|ر ک|سان|نی |کرن| حا| نہ|تی |ی ت| جو|ئی |انس|نسا| کہ|اپن|ل ک|جو | اپ|ے ب|یت |نہ |ہ ک| مل|ہو |می |ل ہ|رے |ی ش|رنے|ے ل|ے ہ| کس| ای|ا ا|۔ ا|حاص|اصل|صل |معا|نہی|ی م|وہ |یں۔| تع|انہ|ق ک|د ک|ی ب|ات |ملک|ایس|ی ہ| بن| قو|قوم|کیا|ے، |عاش|اشر|ر ہ| گا| دو|یہ |وام|دہ |ں م|ا م| من|بر |انی|ے۔ہ|ر ب|دار|ے ج| وہ| لئ|لئے| عا|اقو|قوا|مل |ائی|علا|اد |ی س| جس|ر ن|ے ح|ہ م|کر |و ت|لیم| و | قا|انو|ا ہ|جس |یوں| یہ|لک |ریق|ے۔ |نیا|تعل| گی|گی |ر پ|دوس|ی آ|یم |، ا| اق|وئی|یر |پنے|ے پ|م ا|گا۔|یاد| رک|علی| مس|ی، |ین |ن ا|انے|وری|ی ن|لاق|ر ع|ون |خلا| با|ا س| سک| دی| چا|رائ|ومی|ہ و|نا |اری| بر|رکھ|ندگ|دگی|ر س|رتی| بی| شا|س م|ق ح|ادا| مم| ہر|ا پ|و گ|وسر|سب | پو|قان|نون| بھ|ے خ|اف | اع| مر|یسے| پی|غیر|ے س|ال |ت ا|، م| مح|ں، |بنی| ذر|ذری|ریع|ہوں| عل|تما|مام|ونک|نکہ|دان|پنی|ر ح| ام|من |عام|پور| طر|ے ع|ائد|بھی|ھی | مت| مق|د ا| خل|لاف|اعل|کوئ| لی|و ک|ے ی|ا ک|ر آ|دیو|اں |چون|، چ|یاس|برا|کرے|ی ع|ر ج","fas":" و | حق| با|که | که|ند | در|در |رد | دا|دار|از |هر | از|یت | هر|ر ک|حق |د ه|ای |ان |د و| را|ود |ین |یا |ارد|کس |ی و|را | یا| کس| بر|باش|د ک|ه ب| آز|آزا| خو|ه ا| اس|د ب|زاد|ار | آن|ق د|شد |حقو|قوق|ی ب|ه د|ده |وق |ید |ی ک|ر م|خود|ور |و ا|رای|اشد|ام |تما| اج|ری |ادی|س ح|دی |اید|است| ان|نه |و م|د ا|ر ا| بی|با |انه|ی ا|د، |ون | تا| هم| نم|ات |مای|ا ب|ایت|ر ب| بش| کن|انو|اسا| مر|ست | مو| مل|برا|وان|این|جتم| می|ورد| شو| ای|ن ا| اع| به|ت و|، ا|اجت|ماع|عی |ا م|ائی|ئی |و ب|نی |ملل|ت ا|و آ|آن |بشر| زن|ی، |کند|ن م|ن و|بای|شود|ی ی|های| من|شور| مس|کار|ت ب| بد|دان|اری|اعی|د آ|مل |ز آ|یگر|ی ر|ت م|مور| گر|گرد| مق|توا|ی م|علا|یه |ن ب|میت| شد| کش|کشو|ه و|ق م|د ش| مج| اح|ن ت|و د| حم|لی | کا|ت ک|هٔ |نون|مین|دیگ| عم|انی|ر خ|ه م| مت|ن ح|ی د|لام|رند|اه |نجا|بعی|نوا|ساس|ساو|د م| آم|ادا|وی |گی |هد |ا ک|اد |ی ح| مح| قا|قان|می |یده|مقا|لل |ر ش|ق و|اعل|ا د|شده|ع ا| بع|اسی|د ت|همه|سان|شر | عق|ر و|دگی|حما|ا ه|خوا|‌ها|ه‌ا| او|او |اده|اً |ر ت| دی|ومی| شر|نمی|بر | هی|هیچ|یر |ز ح|مند|بین|تی |جا |عقی|یتو|م و|مسا|و ت|سی |اوی|بهر|م م|ر د|انت|زش |ارن|زند|ندگ|و ه|رفت|رار|واه|ا ر| بو|تأ|أم|ٔمی|ران|عمو|موم|ی ن|اند|ل م|ردد|ه ح|عیت| فر| بم|دیه|ا ا|نما|آنج|کلی|احد|حدی|مال| تع|و ح|مرد|ت، |ملی|ق ا|واد|م ا|د د| خا| ار|اشن|شند","zlm":" دا|ان |دان| بر| او|ن س|له | ڤر|كن |ن ك|دال|ن ا|ن د|رڠ |حق |يڠ | كڤ|ارا| يڠ|أن |تيا|ڤد |ورڠ|ڠن |اله|ياڤ| تر|ولي|ن ڤ|اور|كڤد|برح|رحق|ين |ستي|اڤ |را |ليه| ات|ه ب| ست|يه |اتا| عد|عدا|ن ب|تاو|ڤ ا|او |ن ت|بيب|يبس|سي | كب|ه د|ن م| من| سو| سا| حق|ق ك|اسا|سام| تي|ن ي|الم|لم | اي|ن، |رن |اتو| ما|د س| با|باڬ|نڬا|ڬار| مم|كبي|بسن|سن |اين|ڠ ع|ڽ س|چار| سب|ي د|ندق|د ڤ|اڽ |اڬي|سبا| ڤم| د |نسي|ا ڤ|هن |قله|يند|تا |ي ا|ام | بو|ڬي | نڬ|اون|تن |وان|ا س|مأن|أنس|ڠ ب| كس| سم| سچ|سچا|ا ب|بول| مأ|سيا|ساس|اسي| ڤڠ|بڠس| دڠ|دڠن| ڤو|ڤا |ت د|رتا| هن|هند|دقل|ي م| اس|ادي|نڽ |ات |تره|رها|هاد|ادڤ| لا|تي |ڤرل|مان|، ك|بار|ارڠ|ق م|ڤون|ون |، د|اي |اول|ق٢ |٢ د|ڠسا|تو |يكن|وين|ن ه|اكن|يأن|وڠن|دڤ |وا |ا د|ن٢ |نتو|وق | سس|ماس|اس |ه م|مرا|ندو| ان| بي| مڠ|ڠ٢ |ائن|رات|يك |حق٢|برس|اد |ي س| كو|مڤو|ري | مل|وات|واس|ڤمب|، ت| سر|سرت|امر|سمو|اڬا|رلي|لين|دوڠ|ل د|تار|ڠ م|، س|وند|ي ك|لوا|سوا|ارك|تيك|ڤري|رسا|ياد|ريك|ا، |ونت|ڠ ت|ترم|ڤرا|سأن|اڤا|ي ڤ|ا ا| در|رأن| ڤن|سوس|ورو|ڠ س|لائ| بڠ|٢ ب|توق|دير|يري|وكن|جوا|هار|ندي|ارأ|وه |كرج|ڠڬو|ي، |موا| كأ|اجر|جرن| به|بها| مر|راس| كم|و ك|نن |ڤرك|ندڠ|دڠ٢|ا م| سڤ|ا٢ |سات|ق ا|ڤ٢ |شته|تها|سال|ينڠ|سسي|وهن|مول|منو|وبو| دل|وار|كور|د ك|ا ك| ڤل|لاج|ڠ ا|مبي|نتي|تيڠ|وسي|يال|ال |انت|نتا|بس |هڽ |ن ح|ه ا|كڤر|ڠ د|م س","skr":"تے |اں | تے|دے |دی |وں | دا| کو| حق|کوں|ے ا| دے|دا | دی|یاں| کی|ے ۔|یں |ہر | ۔ | ہے|ہے | وچ|کیت| ان|وچ | شخ|شخص|ال |ادی| حا|اصل| نا|ے م|خص |ں د|حق |حاص|صل |یا | ای|ل ہ|اتے|ق ح|ے و| ات|ں ک|سی |ہیں| مل|ی ت|نال| از|ازا|زاد| او|حقو|قوق|ار |ا ح| ۔ہ|۔ہر|ر ش|ے ج|ص ک|وق |دیا|نہ |یند|ندے| یا| کر|ئے | جو|کہی|ی د|انس|نسا|سان|وند|ی ا|یتے|و ڄ|ڻ د|یسی| وی|ا ا|ملک|ے ح|ے ک| ہو|ے ب|ں ا|ا و|ئی |ر ک|تی |آپڻ|وڻ |ندی| نہ|ویس| آپ| جی|اون| کن|انہ|ن ۔|جو |ی ن|ان | کہ|ری | تھ|ے ہ| ڄئ|۔ ا|ے ن|ی ۔|ڻے | ہر|ام |دہ |ں ت|ں و|ں م|تھی| من|کو |ی ح|کنو|نوں|ہاں| بچ|ے ت|رے |ون |ی ک|ور |ہکو|نی |یاد|ت د|یتا|ی ہ|نہا|ن د|اری|تا |لے |ڄئے|ے د| ہک| قو|پڻے|می |ی م|قوا|وام| ون|ق ت|اف |ل ک|اے | تع|ین |چ ا|خلا|ل ت|لک |ہو |ارے| و |انی|جیا|ے س| سا|ن ا|دار|یت |ی ج|ئو |ی و| اق|علا|کرڻ|ونڄ|ات | اے|ر ت|ق د|الا|ہوو| چا| رک|بچئ|چئو|وری| وس| لو| پو|پور|قنو|نون|ہ د|ے خ|ایہ|و ا|این| ڋو| خل|لاف|ڻ ک| جا| ۔ک| عز|عزت|ا ک| مع|ے ع|یر |قوم|ں آ|او |اد |ب د|ریا|مل |رکھ|وسی|سیب|یب |کاں| قن|اقو|رڻ |وئی|ں ج|ا ت|ل ا|زت |ت ت|ر ا| سی|لا |وے |ہی |ا م|ے ر|تعل|ں س| سم|یوڻ|ر ہ|ڻی |اوڻ|لوک|م م| مت|متح|تحد|حدہ|ایں| اع|ے ذ| جھ|جھی|کوئ|کار| کھ|ہ ا|ھین|م ت| کم| ہن|ہن |ی، |ں ب|د ا|سار|ن ک|علی|لیم|نڄے|ڄے |ی س|یہو|ھیو|ائد|و ک|ائی|ے ق| مط| سڱ|سڱد| ذر|ذری|ھیا|نے |کیو","pbu":" د | او|او |په | په| چې|چې | حق|ي ا|ره |ې د|نه |و ا|و د|ه ا|هر |ه و| څو|ه د|ري |حق |ي چ| کښ|څوک|وک |وي | شي|له |غه |کښې|ښې | سر| لر|لري|و پ|ه پ|ټول|لو |يت |سره|کړي|ي۔ه|ه ک|ي، |ر څ| ټو|ق ل| له|يا | هغ| از|۔هر|د م|ازا| کړ|دي |هغه| کو|نو |د ا|حقو|قوق|زاد|ه ت| پر| وا|ولو|خه |ه ه| وي| څخ|يو |ه م| يا|ول |د د|څخه| دي|ه ش|کول|ي د|ته |ه ب|ګه |و ي|ړي |اد |و م|ونو|شي۔|د ه|دې |خپل|واد| مل| هي| نه| تر| تو|د پ|ک ح|ې پ|ان |ولن|ني |ه ح|يوا|تون| با|ادي| هر| يو| مس|ي و|ې ا|لي |ې و|ي پ|د ت|يد |امي|وقو|شي |ړي۔|دان|انه|وګه| عم|هيو| دا| دغ|قو |ي۔ |ه چ|ار | خپ|بشر|توګ|اند|هغو|لني|باي|ايد| ده|ه ن|وي،|و ه|، د|ي ح| بر|غو | تا|ين |ايت| شو|شوي|دغه|مي |م د|دهغ| من|و ح| لا| ډو|ډول|بعي|پل | بش| ته|اوي|ه ګ|د ب|نيز|پر |ده |و ت|انو|نون|ون |ومي|رو |هيڅ|يڅ |ي ت|علا|ه ي|ه ل|وم |کار|ساو|تر |وند|ونه|يه |ن ک|مين|موم|و ک|اتو| اع|اعل|لام|اره| ځا|مسا| ان|د ټ|ټه | ګټ|ي ش| بي| مح|قان| پي|و ر|اخل|تو |اسي|سي | وک|ديو|ځاي|عقي| ور|لان|ل ت|ه س|ې چ| وس|و س|وون| ژو|ژون|يز |وکړ|کي |ن ش|ندې|ک د| اس| قا| نو|عمو|لتو|و ب|پار|ولے|لے |ې ک| عق|۔هي|څ څ| را|بل | بل|وسي|ت ا|ر د| ار| هم|هم |دو |ي م|مان|اسا|رته|شري|ا د|ر م|ښوو| رو|ګټه| غو|ونک| وړ|مل | شخ|شخص| اج|د ق|تام|وق |ملت|و ن|من |و څ|ا ب|ن ا|قيد| چا|ل ه| تب|تبع|ر پ|حما| کا|د خ|ر س|اني|نځ "},"Devanagari":{"hin":"के |प्र| के| और|और |ों | का|कार| प्|का | को|ं क|या |ति |ार |को | है|िका|ने |है |्रत| अध|धिक|की |अधि|ा क| कि| की| सम|ें |व्य|्ति|क्त|से | व्|्यक|ा अ|में|मान|ि क| स्| मे|सी |न्त|े क| हो|ता |यक्|ै ।|क्ष|त्य|िक | कर| या|्य |भी | वि|रत्|ी स| जा|र स|्ये|येक|ेक |रों|स्व|िया|ा ज|त्र|क व|र ह| अन|्रा|ित |किस|ा स|िसी|ा ह| से|ना |र क| पर| सा|गा |देश| । | अप|ान |समा|्त |े स|्त्|ी क|ा प| ।प|वार| रा|न क|षा |अन्|।प्|था |ष्ट| मा|्षा|्वा|ारो|तन्| इस|े अ|ाप्|प्त|राष|ाष्|्ट्|ट्र|्वत|वतन| उस|राप|त ह|कि | सं|ं औ|हो | दे|किय|ा ।|े प|ार्| भी|करन| न |री |र अ|जाए|क स|ी प|िवा|सभी|्तर|अपन| नि| तथ|तथा|रा |यों|े व|ाओं|ओं |पर |सम्|्री|ीय |सके|व क| द्|द्व|ारा|िए | ऐस|रता| सभ|िक्|ो स|रक्|र प|माज|्या|होग|र उ|ा व|रने| जि|ं म|े म|ाव |ाएग| भा|पने| लि|स्थ|पूर|इस |त क|ाने|रूप|भाव|लिए|े ल|कृत|र्व|ा औ|ो प|द्ध| घो|घोष|श्य|ेश |। इ| रू|ूप |एगा|शिक|े ब|दी | उन|रीय|रति|ूर्|न्य|्ध |णा |ी र|ं स|र्य|य क|परा| पा|े औ|ी अ|ेशो|शों|ानव|ियो|म क| शि| सु|तर्|जो |्र |तिक|सार|चित| पू|ी भ|जिस|ा उ|दिय|राध|चार|र द|विश|स्त|ारी|परि| जन|वाह|नव | बु|म्म|ले |्म |र्ण| जो|ानू|नून|िश्|गी |साम|ोगा|रका|्रो|ोषण|षणा|ाना|ो क|े य| यह|चूं|ूंक|ंकि|अपर|कोई|ोई |ाह |ी म| ।क|ी न|ा ग|ध क|े ज|न स|बन्|निय|याद|ादी|्मा| सद|जीव|हित|य ह|कर |ास |ी ज|ाज |ं न|्था|ामा|कता","mar":"्या|या |त्य|याच|चा | व |ण्य|प्र|कार|ाचा| प्|धिक|िका| अध|च्य|अधि|ार | आह|आहे|हे |ा अ| स्|्रत|स्व|्ये|ा क| कर|्वा|ता |ास | त्|ा स|त्र|ा व|िक |यां|ांच|वा |मान| या|्य | अस| का|रत्|ष्ट|येक|ल्य|र्य|र आ|ाहि|क्ष| सं| को|कोण|ामा|ाच्|ात | रा|ा न|ेका| सा|ून |ंत्| मा|चे |तंत|राष|ाष्|्ट्|ट्र|ने |े स|वात|करण| कि|किं|िंव|ंवा|व्य|ा प|कास|ना | मि| सम|क्त|ये |मिळ|समा|र्व|ातं|्र्|े प| जा|यास|व स|ोणत|ीय |ा आ|रण्|काम| दे|ांन|े क|ा म|रां| व्|्यक|हि |ान | पा|्षण|िळण| आप|ार्|ही |े अ|ा द|ली |ळण्|े व|ची | आण|ंच्| वि|ारा|्रा|ाही|मा |ा ह|द्ध|्री| नि|णे |ला | सर|सर्| नय|नये|ाचे|ी अ|्व |ंना|षण |आपल|ले |माज|बंध|ी प|्त |त क|लेल| हो|ील | शि|शिक|ध्य|ी स|आणि|णि |े ज|देश|न क|ानव|पाह|हिज|िजे|जे |रीय|क स|व त|यक्|ा ज|यात|िक्|त स|े आ|रक्|पल्|वी |संब|ंबं|न्य| ज्|ज्य|स्थ| के|्वत|असल| उप|य अ|क व|त्व|ीत |त व|केल|ाने|य क|णत्|ासा|रति|भाव|े त|व म|ेण्|िष्|साम|क आ|सार|कां|याय|साठ|ाठी|ठी |े य|ंचा|करत|रता|र व|्ती|ीने|याह|र्थ|च्छ|ी आ|स स|ोणा|संर|ंरक|त आ|ंधा|ायद|ी व|ेशा|ित | अश|जाह|हीर|तील|ा ब| अथ|अथव|थवा|ी म|स्त|ा त|ती |नवी|ाची|िवा|देण|याव|ांत|ण म|व आ|य व| हक|हक्|क्क|ा य|ेत |वस्|पूर|ूर्|ारण|द्य|ंचे|ेले|ेल्|कृत|शा |तीन| अर|अर्|्थी|थी |्रद|राध|यत्|ाला|तिष|ष्ठ|श्र|ण स|रून| आल|्ध |सले|े म| शा|्रक|रका|तिक|ाजि|जिक|्क |ाजा| इत|इतर|तो |साध","mai":"ाक |प्र|कार|धिक|िका|ार | आʼ|आʼ |्रत|ेँ |्यक|क अ|िक |्ति| अध|व्य|अधि|क स| प्| व्|क्त|केँ|यक्|तिक|हि | स्|न्त|क व|मे |बाक| सम|मान|त्य|क्ष| छै|छैक|ेक |रत्|स्व|त्र|्ये|येक| अप|ष्ट|सँ |र छ|ैक।| वि| एह|वा |ित |ति |िके|ट्र| जा|्त्|राष|ाष्|्ट्| हो| सा| रा|्य | अन|अपन| कर|।प्|कोन| अछ|अछि|क आ|्वत|वतन|तन्| पर|था | को| वा|ताक|ार्|एहि|पन |ा आ|नहि| मा|्री|समा|नो |रता| दे|्षा|रक |देश|क प| नि| नह| कए| का|छि |न्य|्त |ि क| सं|ोनो| तथ|तथा|्वा|ारक|ान्|ल ज|ा स|ान |िवा|क ह|ीय |र आ| आ |्या|ँ क|वार|ता |ना |जाए| जे|करब| एक| आओ|आओर|ओर |ानव|परि|ँ अ|रीय|ा प|धार|ारण|स्थ|माज|साम|ामा|्रस|र्व|कएल|घोष|अन्|्तर|त क|स्त| सभ|्रा|रण |ँ स|द्ध|एबा|नक |ा अ|िक्|षा |रक्|क।प|ʼ स|चित|पूर|ʼ अ|यक |ाहि|रबा|क ज|कर | घो|ोषण|सम्|र प| हे|हेत|ेतु|तु |शिक|त अ| उप| अव|ूर्|एल |िमे|एहन|हन |षणा|ाधि|सभ |च्छ|अनु| शि|ेल |रूप|क क|भाव|प्त|्ध |ि ज|वक | सक|र अ|रति|निर|िर्|जाह|हो |ँ ए|े स|होए|चार|ण स|र्य|ि आ|सभक|्रक|ाजि|जिक|ाप्|र्ण|त स|क उ|रा |त आ|एत।|त ह| जन|ैक |विव|ोएत|वाध|क ब|री |न प| भा|य आ|राप| ओ |न व|ʼ प|्ण |न अ|कृत|िश्|ा व|कान|ारा|ि स|हु |रसं| उद|उद्|श्य|ाएत|िसँ|जे |ि घ|जेँ| कि|कि |ेश |केओ|ेओ |त्त|सार|क ए|रिव|वास|य प|्थि|विश|ओ व|यता|पर | भे|क ल|नवा| बी| सह|िष्|ि द| रू| ले| पए|पएब| अथ|अथव|थवा|क र|न स|हिम|ास |ए स|ि अ| दो|षाक| पू| द्|द्व|धक ","bho":" के|के |ार |े क|कार|धिक|िका|ओर | आओ|आओर| अध|अधि|े स|ा क|े अ| सं|र क| हो| मे|में|ें |र स|िक | कर|र ह|ा स| से|मान| सम|न क|रा |से |क्ष|े ब|नो |वे | चा|ता |्रा| रा|ति |खे |चाह|ष्ट| सा|राष|ाष्|प्र| का| मा|्ट्|ट्र|े आ| प्| सक| स्| जा| बा|पन |था |त क|ि क|कौन|ौनो|करे|होख| कौ|ेला|्त |ाति|ला |तथा| आप| ओक|आपन|रे |र म| तथ|सबह| हव|हवे|र आ|कर |ोखे|जा |े ओ|तिर|िर |बहि| ह।|ही |सके|केल|ना |हे | और|त्र|ान | खा|खात|।सब| पर|े म|े च|ा आ|षा |ावे|र ब|न स|ओकर|ी क| लो|ाहे|ल ज| सब|्षा|संग|ं क|ित |माज|मिल|े ज|रक्|हिं|िं |ा प|वे।|े ह|ाज |और |स्व|ंत्|ला।|ो स| नइ|नइख|इखे|हु |ानव|िया|्र |लोग|क स|समा|कान|क्त| जे|करा|्रत|े। | ओ |ी स|े न|्री|रीय|पर |े उ|ाही|ानू|नून|स्थ|े व|ाम |्वत|वतं|तंत|रता|केह|या |े ख|। स| सु|प्त| दे|े त|साम|र अ|ीय |र प|बा।|ा।स|सभे|भे | वि|योग|दी | आद|ून |ा म|्य |व्य|ए क|ेहु| या|री |र न| बि|राप|ाप्|ु क| मि|यता|आदि|दिम|मी |नवा|ाधि|े द|चार|ले | नि| पा|ोग | ही| दो|ादी|हि |तिक|पूर| इ |ा ह|्ति|ल ह|खल |ाव | अप| सभ|िमी|देश|ुक्| सह|शिक|िक्|ि म|जे |षण |ाजि|जिक|क आ|्तर|े प| उप|जाद|े भ|्या| जर|म क|ेकर| अं|े र|।के|न आ|सब |साथ|ंगठ|गठन|ठन |रो | जी|ा। |्म |ी ब|हो |न ह|े ल|न म|वाध|निय|ेश | शि|ज क| ले|ने |बा |संर|ंरक|्षण|ामा|य क|ास |उपय|पयो|दोस| आज|आजा| भी| उच|चित|र व| पू| घो|घोष| व्| शा|िल |ा।क| कई| को|होए|्थि","nep":"को | र |कार|प्र|ार |ने |िका|क्त|्यक|धिक|व्य| गर| प्|्रत|अधि|्ति| अध| व्|यक्|मा |िक |ाई |त्य|न्त|लाई|मान| सम|त्र|गर्|र्न|क व|्ने| वा|वा | स्|रत्|र स|्ये|येक|ेक |छ ।|तिल|हरू|क्ष|ो स| वि|ा स|्त्|िला| । |स्व|हुन|ति | हु| मा| रा|ले |र छ| छ |ष्ट|समा|वतन|तन्|्ट्|ट्र| सं|ो अ|राष|ाष्|्वत|नेछ|ुने|ान |े अ|ता | का|्र |हरु|गरि|ाको|िने| अन|ना | नि|े छ| सा|क स|तिक|ित |नै |र र|रता|रू |था |ा र|कुन|ुनै|ा अ|स्त|्त | छै|छैन| तथ|तथा|ा प|ार्|वार| पर|ा व|एको|्षा|परि|रक्|। प|माज|रु |द्ध|का |्या|ो प|ामा|्रा|सको|ेछ | ला|धार|नि |ाहर|देश| यस|र ह|िवा|सबै|र म|भाव|्य |र व|रहर|रको|न अ|सम्|े र|संर|ंरक|अन्|ताक|्रि|्वा|ा भ|त र| कु| त्|री |ो व|न स|रिन|लाग|ारक|ानव| सब| शि|शिक|िक्|ै व|रिय|रा |ा न|पनि|ारा|श्य|ा त|्यस|यस्|ाउन|्न | अप|चार|ाव | भए|ारम| सु|ुद्|षा |ि र|रूक| सह|बाट|्षण|साम|्तर|िय |रति|ो आ|र प|ो ल|कान|द्व|ुक्|ान्| उप|द्द|ुन |ैन |ेछ।|ैन।|ारह| भे|ागि|गि |निज|वाह|्ध |र्य| आध|रमा|ा म|नको|बै |न ग|ाट |।प्|ाजि|जिक|त्प|िको|ाय |र त|ात्| उस|ूर्| अभ| अर|जको|स्थ| आव|त स|ित्| पन|िएक|्तो|तो | पा|ा ग| भन|ानु|परा|राध| छ।| मत|अपर|भेद|ि स|रुद|ो ह|रिव|रका|न्य| जन|यता|े स|र्म|ारी| दि|क अ|नमा|ूको|हित|ा क|क र|र अ|ा ब|उसक|पूर|त्व|र्द|सार|णको|युक|।कु|विध| घो|घोष| सक|भएक|नुन|्यह|ि व|ो भ| पु| मन|नी |विच| दे|राज|विर|िरु|काम|र न|यहर|िश्"}}')
}
, function(t, e, n) {
    "use strict";
    var i = new String("万与丑专业丛东丝丢两严丧个丬丰临为丽举么义乌乐乔习乡书买乱争于亏云亘亚产亩亲亵亸亿仅从仑仓仪们价众优伙会伛伞伟传伤伥伦伧伪伫体余佣佥侠侣侥侦侧侨侩侪侬俣俦俨俩俪俭债倾偬偻偾偿傥傧储傩儿兑兖党兰关兴兹养兽冁内冈册写军农冢冯冲决况冻净凄凉凌减凑凛几凤凫凭凯击凼凿刍划刘则刚创删别刬刭刽刿剀剂剐剑剥剧劝办务劢动励劲劳势勋勐勚匀匦匮区医华协单卖卢卤卧卫却卺厂厅历厉压厌厍厕厢厣厦厨厩厮县参叆叇双发变叙叠叶号叹叽吁后吓吕吗吣吨听启吴呒呓呕呖呗员呙呛呜咏咔咙咛咝咤咴咸哌响哑哒哓哔哕哗哙哜哝哟唛唝唠唡唢唣唤唿啧啬啭啮啰啴啸喷喽喾嗫呵嗳嘘嘤嘱噜噼嚣嚯团园囱围囵国图圆圣圹场坂坏块坚坛坜坝坞坟坠垄垅垆垒垦垧垩垫垭垯垱垲垴埘埙埚埝埯堑堕塆墙壮声壳壶壸处备复够头夸夹夺奁奂奋奖奥妆妇妈妩妪妫姗姜娄娅娆娇娈娱娲娴婳婴婵婶媪嫒嫔嫱嬷孙学孪宁宝实宠审宪宫宽宾寝对寻导寿将尔尘尧尴尸尽层屃屉届属屡屦屿岁岂岖岗岘岙岚岛岭岳岽岿峃峄峡峣峤峥峦崂崃崄崭嵘嵚嵛嵝嵴巅巩巯币帅师帏帐帘帜带帧帮帱帻帼幂幞干并广庄庆庐庑库应庙庞废庼廪开异弃张弥弪弯弹强归当录彟彦彻径徕御忆忏忧忾怀态怂怃怄怅怆怜总怼怿恋恳恶恸恹恺恻恼恽悦悫悬悭悯惊惧惨惩惫惬惭惮惯愍愠愤愦愿慑慭憷懑懒懔戆戋戏戗战戬户扎扑扦执扩扪扫扬扰抚抛抟抠抡抢护报担拟拢拣拥拦拧拨择挂挚挛挜挝挞挟挠挡挢挣挤挥挦捞损捡换捣据捻掳掴掷掸掺掼揸揽揿搀搁搂搅携摄摅摆摇摈摊撄撑撵撷撸撺擞攒敌敛数斋斓斗斩断无旧时旷旸昙昼昽显晋晒晓晔晕晖暂暧札术朴机杀杂权条来杨杩杰极构枞枢枣枥枧枨枪枫枭柜柠柽栀栅标栈栉栊栋栌栎栏树栖样栾桊桠桡桢档桤桥桦桧桨桩梦梼梾检棂椁椟椠椤椭楼榄榇榈榉槚槛槟槠横樯樱橥橱橹橼檐檩欢欤欧歼殁殇残殒殓殚殡殴毁毂毕毙毡毵氇气氢氩氲汇汉污汤汹沓沟没沣沤沥沦沧沨沩沪沵泞泪泶泷泸泺泻泼泽泾洁洒洼浃浅浆浇浈浉浊测浍济浏浐浑浒浓浔浕涂涌涛涝涞涟涠涡涢涣涤润涧涨涩淀渊渌渍渎渐渑渔渖渗温游湾湿溃溅溆溇滗滚滞滟滠满滢滤滥滦滨滩滪漤潆潇潋潍潜潴澜濑濒灏灭灯灵灾灿炀炉炖炜炝点炼炽烁烂烃烛烟烦烧烨烩烫烬热焕焖焘煅煳熘爱爷牍牦牵牺犊犟状犷犸犹狈狍狝狞独狭狮狯狰狱狲猃猎猕猡猪猫猬献獭玑玙玚玛玮环现玱玺珉珏珐珑珰珲琎琏琐琼瑶瑷璇璎瓒瓮瓯电画畅畲畴疖疗疟疠疡疬疮疯疱疴痈痉痒痖痨痪痫痴瘅瘆瘗瘘瘪瘫瘾瘿癞癣癫癯皑皱皲盏盐监盖盗盘眍眦眬着睁睐睑瞒瞩矫矶矾矿砀码砖砗砚砜砺砻砾础硁硅硕硖硗硙硚确硷碍碛碜碱碹磙礼祎祢祯祷祸禀禄禅离秃秆种积称秽秾稆税稣稳穑穷窃窍窑窜窝窥窦窭竖竞笃笋笔笕笺笼笾筑筚筛筜筝筹签简箓箦箧箨箩箪箫篑篓篮篱簖籁籴类籼粜粝粤粪粮糁糇紧絷纟纠纡红纣纤纥约级纨纩纪纫纬纭纮纯纰纱纲纳纴纵纶纷纸纹纺纻纼纽纾线绀绁绂练组绅细织终绉绊绋绌绍绎经绐绑绒结绔绕绖绗绘给绚绛络绝绞统绠绡绢绣绤绥绦继绨绩绪绫绬续绮绯绰绱绲绳维绵绶绷绸绹绺绻综绽绾绿缀缁缂缃缄缅缆缇缈缉缊缋缌缍缎缏缐缑缒缓缔缕编缗缘缙缚缛缜缝缞缟缠缡缢缣缤缥缦缧缨缩缪缫缬缭缮缯缰缱缲缳缴缵罂网罗罚罢罴羁羟羡翘翙翚耢耧耸耻聂聋职聍联聩聪肃肠肤肷肾肿胀胁胆胜胧胨胪胫胶脉脍脏脐脑脓脔脚脱脶脸腊腌腘腭腻腼腽腾膑臜舆舣舰舱舻艰艳艹艺节芈芗芜芦苁苇苈苋苌苍苎苏苘苹茎茏茑茔茕茧荆荐荙荚荛荜荞荟荠荡荣荤荥荦荧荨荩荪荫荬荭荮药莅莜莱莲莳莴莶获莸莹莺莼萚萝萤营萦萧萨葱蒇蒉蒋蒌蓝蓟蓠蓣蓥蓦蔷蔹蔺蔼蕲蕴薮藁藓虏虑虚虫虬虮虽虾虿蚀蚁蚂蚕蚝蚬蛊蛎蛏蛮蛰蛱蛲蛳蛴蜕蜗蜡蝇蝈蝉蝎蝼蝾螀螨蟏衅衔补衬衮袄袅袆袜袭袯装裆裈裢裣裤裥褛褴襁襕见观觃规觅视觇览觉觊觋觌觍觎觏觐觑觞触觯詟誉誊讠计订讣认讥讦讧讨让讪讫训议讯记讱讲讳讴讵讶讷许讹论讻讼讽设访诀证诂诃评诅识诇诈诉诊诋诌词诎诏诐译诒诓诔试诖诗诘诙诚诛诜话诞诟诠诡询诣诤该详诧诨诩诪诫诬语诮误诰诱诲诳说诵诶请诸诹诺读诼诽课诿谀谁谂调谄谅谆谇谈谊谋谌谍谎谏谐谑谒谓谔谕谖谗谘谙谚谛谜谝谞谟谠谡谢谣谤谥谦谧谨谩谪谫谬谭谮谯谰谱谲谳谴谵谶谷豮贝贞负贠贡财责贤败账货质贩贪贫贬购贮贯贰贱贲贳贴贵贶贷贸费贺贻贼贽贾贿赀赁赂赃资赅赆赇赈赉赊赋赌赍赎赏赐赑赒赓赔赕赖赗赘赙赚赛赜赝赞赟赠赡赢赣赪赵赶趋趱趸跃跄跖跞践跶跷跸跹跻踊踌踪踬踯蹑蹒蹰蹿躏躜躯车轧轨轩轪轫转轭轮软轰轱轲轳轴轵轶轷轸轹轺轻轼载轾轿辀辁辂较辄辅辆辇辈辉辊辋辌辍辎辏辐辑辒输辔辕辖辗辘辙辚辞辩辫边辽达迁过迈运还这进远违连迟迩迳迹适选逊递逦逻遗遥邓邝邬邮邹邺邻郁郄郏郐郑郓郦郧郸酝酦酱酽酾酿释里鉅鉴銮錾钆钇针钉钊钋钌钍钎钏钐钑钒钓钔钕钖钗钘钙钚钛钝钞钟钠钡钢钣钤钥钦钧钨钩钪钫钬钭钮钯钰钱钲钳钴钵钶钷钸钹钺钻钼钽钾钿铀铁铂铃铄铅铆铈铉铊铋铍铎铏铐铑铒铕铗铘铙铚铛铜铝铞铟铠铡铢铣铤铥铦铧铨铪铫铬铭铮铯铰铱铲铳铴铵银铷铸铹铺铻铼铽链铿销锁锂锃锄锅锆锇锈锉锊锋锌锍锎锏锐锑锒锓锔锕锖锗错锚锜锞锟锠锡锢锣锤锥锦锨锩锫锬锭键锯锰锱锲锳锴锵锶锷锸锹锺锻锼锽锾锿镀镁镂镃镆镇镈镉镊镌镍镎镏镐镑镒镕镖镗镙镚镛镜镝镞镟镠镡镢镣镤镥镦镧镨镩镪镫镬镭镮镯镰镱镲镳镴镶长门闩闪闫闬闭问闯闰闱闲闳间闵闶闷闸闹闺闻闼闽闾闿阀阁阂阃阄阅阆阇阈阉阊阋阌阍阎阏阐阑阒阓阔阕阖阗阘阙阚阛队阳阴阵阶际陆陇陈陉陕陧陨险随隐隶隽难雏雠雳雾霁霉霭靓静靥鞑鞒鞯鞴韦韧韨韩韪韫韬韵页顶顷顸项顺须顼顽顾顿颀颁颂颃预颅领颇颈颉颊颋颌颍颎颏颐频颒颓颔颕颖颗题颙颚颛颜额颞颟颠颡颢颣颤颥颦颧风飏飐飑飒飓飔飕飖飗飘飙飚飞飨餍饤饥饦饧饨饩饪饫饬饭饮饯饰饱饲饳饴饵饶饷饸饹饺饻饼饽饾饿馀馁馂馃馄馅馆馇馈馉馊馋馌馍馎馏馐馑馒馓馔馕马驭驮驯驰驱驲驳驴驵驶驷驸驹驺驻驼驽驾驿骀骁骂骃骄骅骆骇骈骉骊骋验骍骎骏骐骑骒骓骔骕骖骗骘骙骚骛骜骝骞骟骠骡骢骣骤骥骦骧髅髋髌鬓魇魉鱼鱽鱾鱿鲀鲁鲂鲄鲅鲆鲇鲈鲉鲊鲋鲌鲍鲎鲏鲐鲑鲒鲓鲔鲕鲖鲗鲘鲙鲚鲛鲜鲝鲞鲟鲠鲡鲢鲣鲤鲥鲦鲧鲨鲩鲪鲫鲬鲭鲮鲯鲰鲱鲲鲳鲴鲵鲶鲷鲸鲹鲺鲻鲼鲽鲾鲿鳀鳁鳂鳃鳄鳅鳆鳇鳈鳉鳊鳋鳌鳍鳎鳏鳐鳑鳒鳓鳔鳕鳖鳗鳘鳙鳛鳜鳝鳞鳟鳠鳡鳢鳣鸟鸠鸡鸢鸣鸤鸥鸦鸧鸨鸩鸪鸫鸬鸭鸮鸯鸰鸱鸲鸳鸴鸵鸶鸷鸸鸹鸺鸻鸼鸽鸾鸿鹀鹁鹂鹃鹄鹅鹆鹇鹈鹉鹊鹋鹌鹍鹎鹏鹐鹑鹒鹓鹔鹕鹖鹗鹘鹚鹛鹜鹝鹞鹟鹠鹡鹢鹣鹤鹥鹦鹧鹨鹩鹪鹫鹬鹭鹯鹰鹱鹲鹳鹴鹾麦麸黄黉黡黩黪黾鼋鼌鼍鼗鼹齄齐齑齿龀龁龂龃龄龅龆龇龈龉龊龋龌龙龚龛龟志制咨只里系范松没尝尝闹面准钟别闲干尽脏拼")
      , r = new String("萬與醜專業叢東絲丟兩嚴喪個爿豐臨為麗舉麼義烏樂喬習鄉書買亂爭於虧雲亙亞產畝親褻嚲億僅從侖倉儀們價眾優夥會傴傘偉傳傷倀倫傖偽佇體餘傭僉俠侶僥偵側僑儈儕儂俁儔儼倆儷儉債傾傯僂僨償儻儐儲儺兒兌兗黨蘭關興茲養獸囅內岡冊寫軍農塚馮衝決況凍淨淒涼淩減湊凜幾鳳鳧憑凱擊氹鑿芻劃劉則剛創刪別剗剄劊劌剴劑剮劍剝劇勸辦務勱動勵勁勞勢勳猛勩勻匭匱區醫華協單賣盧鹵臥衛卻巹廠廳曆厲壓厭厙廁廂厴廈廚廄廝縣參靉靆雙發變敘疊葉號歎嘰籲後嚇呂嗎唚噸聽啟吳嘸囈嘔嚦唄員咼嗆嗚詠哢嚨嚀噝吒噅鹹呱響啞噠嘵嗶噦嘩噲嚌噥喲嘜嗊嘮啢嗩唕喚呼嘖嗇囀齧囉嘽嘯噴嘍嚳囁嗬噯噓嚶囑嚕劈囂謔團園囪圍圇國圖圓聖壙場阪壞塊堅壇壢壩塢墳墜壟壟壚壘墾坰堊墊埡墶壋塏堖塒塤堝墊垵塹墮壪牆壯聲殼壺壼處備複夠頭誇夾奪奩奐奮獎奧妝婦媽嫵嫗媯姍薑婁婭嬈嬌孌娛媧嫻嫿嬰嬋嬸媼嬡嬪嬙嬤孫學孿寧寶實寵審憲宮寬賓寢對尋導壽將爾塵堯尷屍盡層屭屜屆屬屢屨嶼歲豈嶇崗峴嶴嵐島嶺嶽崠巋嶨嶧峽嶢嶠崢巒嶗崍嶮嶄嶸嶔崳嶁脊巔鞏巰幣帥師幃帳簾幟帶幀幫幬幘幗冪襆幹並廣莊慶廬廡庫應廟龐廢廎廩開異棄張彌弳彎彈強歸當錄彠彥徹徑徠禦憶懺憂愾懷態慫憮慪悵愴憐總懟懌戀懇惡慟懨愷惻惱惲悅愨懸慳憫驚懼慘懲憊愜慚憚慣湣慍憤憒願懾憖怵懣懶懍戇戔戲戧戰戩戶紮撲扡執擴捫掃揚擾撫拋摶摳掄搶護報擔擬攏揀擁攔擰撥擇掛摯攣掗撾撻挾撓擋撟掙擠揮撏撈損撿換搗據撚擄摑擲撣摻摜摣攬撳攙擱摟攪攜攝攄擺搖擯攤攖撐攆擷擼攛擻攢敵斂數齋斕鬥斬斷無舊時曠暘曇晝曨顯晉曬曉曄暈暉暫曖劄術樸機殺雜權條來楊榪傑極構樅樞棗櫪梘棖槍楓梟櫃檸檉梔柵標棧櫛櫳棟櫨櫟欄樹棲樣欒棬椏橈楨檔榿橋樺檜槳樁夢檮棶檢欞槨櫝槧欏橢樓欖櫬櫚櫸檟檻檳櫧橫檣櫻櫫櫥櫓櫞簷檁歡歟歐殲歿殤殘殞殮殫殯毆毀轂畢斃氈毿氌氣氫氬氳彙漢汙湯洶遝溝沒灃漚瀝淪滄渢溈滬濔濘淚澩瀧瀘濼瀉潑澤涇潔灑窪浹淺漿澆湞溮濁測澮濟瀏滻渾滸濃潯濜塗湧濤澇淶漣潿渦溳渙滌潤澗漲澀澱淵淥漬瀆漸澠漁瀋滲溫遊灣濕潰濺漵漊潷滾滯灩灄滿瀅濾濫灤濱灘澦濫瀠瀟瀲濰潛瀦瀾瀨瀕灝滅燈靈災燦煬爐燉煒熗點煉熾爍爛烴燭煙煩燒燁燴燙燼熱煥燜燾煆糊溜愛爺牘犛牽犧犢強狀獷獁猶狽麅獮獰獨狹獅獪猙獄猻獫獵獼玀豬貓蝟獻獺璣璵瑒瑪瑋環現瑲璽瑉玨琺瓏璫琿璡璉瑣瓊瑤璦璿瓔瓚甕甌電畫暢佘疇癤療瘧癘瘍鬁瘡瘋皰屙癰痙癢瘂癆瘓癇癡癉瘮瘞瘺癟癱癮癭癩癬癲臒皚皺皸盞鹽監蓋盜盤瞘眥矓著睜睞瞼瞞矚矯磯礬礦碭碼磚硨硯碸礪礱礫礎硜矽碩硤磽磑礄確鹼礙磧磣堿镟滾禮禕禰禎禱禍稟祿禪離禿稈種積稱穢穠穭稅穌穩穡窮竊竅窯竄窩窺竇窶豎競篤筍筆筧箋籠籩築篳篩簹箏籌簽簡籙簀篋籜籮簞簫簣簍籃籬籪籟糴類秈糶糲粵糞糧糝餱緊縶糸糾紆紅紂纖紇約級紈纊紀紉緯紜紘純紕紗綱納紝縱綸紛紙紋紡紵紖紐紓線紺絏紱練組紳細織終縐絆紼絀紹繹經紿綁絨結絝繞絰絎繪給絢絳絡絕絞統綆綃絹繡綌綏絛繼綈績緒綾緓續綺緋綽緔緄繩維綿綬繃綢綯綹綣綜綻綰綠綴緇緙緗緘緬纜緹緲緝縕繢緦綞緞緶線緱縋緩締縷編緡緣縉縛縟縝縫縗縞纏縭縊縑繽縹縵縲纓縮繆繅纈繚繕繒韁繾繰繯繳纘罌網羅罰罷羆羈羥羨翹翽翬耮耬聳恥聶聾職聹聯聵聰肅腸膚膁腎腫脹脅膽勝朧腖臚脛膠脈膾髒臍腦膿臠腳脫腡臉臘醃膕齶膩靦膃騰臏臢輿艤艦艙艫艱豔艸藝節羋薌蕪蘆蓯葦藶莧萇蒼苧蘇檾蘋莖蘢蔦塋煢繭荊薦薘莢蕘蓽蕎薈薺蕩榮葷滎犖熒蕁藎蓀蔭蕒葒葤藥蒞蓧萊蓮蒔萵薟獲蕕瑩鶯蓴蘀蘿螢營縈蕭薩蔥蕆蕢蔣蔞藍薊蘺蕷鎣驀薔蘞藺藹蘄蘊藪槁蘚虜慮虛蟲虯蟣雖蝦蠆蝕蟻螞蠶蠔蜆蠱蠣蟶蠻蟄蛺蟯螄蠐蛻蝸蠟蠅蟈蟬蠍螻蠑螿蟎蠨釁銜補襯袞襖嫋褘襪襲襏裝襠褌褳襝褲襇褸襤繈襴見觀覎規覓視覘覽覺覬覡覿覥覦覯覲覷觴觸觶讋譽謄訁計訂訃認譏訐訌討讓訕訖訓議訊記訒講諱謳詎訝訥許訛論訩訟諷設訪訣證詁訶評詛識詗詐訴診詆謅詞詘詔詖譯詒誆誄試詿詩詰詼誠誅詵話誕詬詮詭詢詣諍該詳詫諢詡譸誡誣語誚誤誥誘誨誑說誦誒請諸諏諾讀諑誹課諉諛誰諗調諂諒諄誶談誼謀諶諜謊諫諧謔謁謂諤諭諼讒諮諳諺諦謎諞諝謨讜謖謝謠謗諡謙謐謹謾謫譾謬譚譖譙讕譜譎讞譴譫讖穀豶貝貞負貟貢財責賢敗賬貨質販貪貧貶購貯貫貳賤賁貰貼貴貺貸貿費賀貽賊贄賈賄貲賃賂贓資賅贐賕賑賚賒賦賭齎贖賞賜贔賙賡賠賧賴賵贅賻賺賽賾贗讚贇贈贍贏贛赬趙趕趨趲躉躍蹌蹠躒踐躂蹺蹕躚躋踴躊蹤躓躑躡蹣躕躥躪躦軀車軋軌軒軑軔轉軛輪軟轟軲軻轤軸軹軼軤軫轢軺輕軾載輊轎輈輇輅較輒輔輛輦輩輝輥輞輬輟輜輳輻輯轀輸轡轅轄輾轆轍轔辭辯辮邊遼達遷過邁運還這進遠違連遲邇逕跡適選遜遞邐邏遺遙鄧鄺鄔郵鄒鄴鄰鬱郤郟鄶鄭鄆酈鄖鄲醞醱醬釅釃釀釋裏钜鑒鑾鏨釓釔針釘釗釙釕釷釺釧釤鈒釩釣鍆釹鍚釵鈃鈣鈈鈦鈍鈔鍾鈉鋇鋼鈑鈐鑰欽鈞鎢鉤鈧鈁鈥鈄鈕鈀鈺錢鉦鉗鈷缽鈳鉕鈽鈸鉞鑽鉬鉭鉀鈿鈾鐵鉑鈴鑠鉛鉚鈰鉉鉈鉍鈹鐸鉶銬銠鉺銪鋏鋣鐃銍鐺銅鋁銱銦鎧鍘銖銑鋌銩銛鏵銓鉿銚鉻銘錚銫鉸銥鏟銃鐋銨銀銣鑄鐒鋪鋙錸鋱鏈鏗銷鎖鋰鋥鋤鍋鋯鋨鏽銼鋝鋒鋅鋶鐦鐧銳銻鋃鋟鋦錒錆鍺錯錨錡錁錕錩錫錮鑼錘錐錦鍁錈錇錟錠鍵鋸錳錙鍥鍈鍇鏘鍶鍔鍤鍬鍾鍛鎪鍠鍰鎄鍍鎂鏤鎡鏌鎮鎛鎘鑷鐫鎳鎿鎦鎬鎊鎰鎔鏢鏜鏍鏰鏞鏡鏑鏃鏇鏐鐔钁鐐鏷鑥鐓鑭鐠鑹鏹鐙鑊鐳鐶鐲鐮鐿鑔鑣鑞鑲長門閂閃閆閈閉問闖閏闈閑閎間閔閌悶閘鬧閨聞闥閩閭闓閥閣閡閫鬮閱閬闍閾閹閶鬩閿閽閻閼闡闌闃闠闊闋闔闐闒闕闞闤隊陽陰陣階際陸隴陳陘陝隉隕險隨隱隸雋難雛讎靂霧霽黴靄靚靜靨韃鞽韉韝韋韌韍韓韙韞韜韻頁頂頃頇項順須頊頑顧頓頎頒頌頏預顱領頗頸頡頰頲頜潁熲頦頤頻頮頹頷頴穎顆題顒顎顓顏額顳顢顛顙顥纇顫顬顰顴風颺颭颮颯颶颸颼颻飀飄飆飆飛饗饜飣饑飥餳飩餼飪飫飭飯飲餞飾飽飼飿飴餌饒餉餄餎餃餏餅餑餖餓餘餒餕餜餛餡館餷饋餶餿饞饁饃餺餾饈饉饅饊饌饢馬馭馱馴馳驅馹駁驢駔駛駟駙駒騶駐駝駑駕驛駘驍罵駰驕驊駱駭駢驫驪騁驗騂駸駿騏騎騍騅騌驌驂騙騭騤騷騖驁騮騫騸驃騾驄驏驟驥驦驤髏髖髕鬢魘魎魚魛魢魷魨魯魴魺鮁鮃鯰鱸鮋鮓鮒鮊鮑鱟鮍鮐鮭鮚鮳鮪鮞鮦鰂鮜鱠鱭鮫鮮鮺鯗鱘鯁鱺鰱鰹鯉鰣鰷鯀鯊鯇鮶鯽鯒鯖鯪鯕鯫鯡鯤鯧鯝鯢鯰鯛鯨鯵鯴鯔鱝鰈鰏鱨鯷鰮鰃鰓鱷鰍鰒鰉鰁鱂鯿鰠鼇鰭鰨鰥鰩鰟鰜鰳鰾鱈鱉鰻鰵鱅鰼鱖鱔鱗鱒鱯鱤鱧鱣鳥鳩雞鳶鳴鳲鷗鴉鶬鴇鴆鴣鶇鸕鴨鴞鴦鴒鴟鴝鴛鴬鴕鷥鷙鴯鴰鵂鴴鵃鴿鸞鴻鵐鵓鸝鵑鵠鵝鵒鷳鵜鵡鵲鶓鵪鶤鵯鵬鵮鶉鶊鵷鷫鶘鶡鶚鶻鶿鶥鶩鷊鷂鶲鶹鶺鷁鶼鶴鷖鸚鷓鷚鷯鷦鷲鷸鷺鸇鷹鸌鸏鸛鸘鹺麥麩黃黌黶黷黲黽黿鼂鼉鞀鼴齇齊齏齒齔齕齗齟齡齙齠齜齦齬齪齲齷龍龔龕龜誌製谘隻裡係範鬆冇嚐嘗鬨麵準鐘彆閒乾儘臟拚");
    function o(t) {
        for (var e = {
            inputLength: t.length,
            simplifiedCharacters: 0,
            traditionalCharacters: 0
        }, n = 0; n < t.length; n++) {
            var i = t.substr(n, 1);
            if (a(i) ? e.simplifiedCharacters++ : s(i) && e.traditionalCharacters++,
            n == t.length - 1)
                return e.simplifiedCharacters > e.traditionalCharacters ? (e.detectedCharacters = "simplified",
                e.detectionRate = e.simplifiedCharacters / e.traditionalCharacters | 1) : e.simplifiedCharacters < e.traditionalCharacters ? (e.detectedCharacters = "traditional",
                e.detectionRate = e.traditionalCharacters / e.simplifiedCharacters | 1) : (e.detectedCharacters = "unknown",
                e.detectionRate = 0),
                e
        }
    }
    function a(t) {
        return new RegExp(t).test(i)
    }
    function s(t) {
        return new RegExp(t).test(r)
    }
    t.exports = {
        isTraditional: function(t) {
            return "traditional" == o(t).detectedCharacters
        },
        isSimplified: function(t) {
            return "simplified" == o(t).detectedCharacters
        },
        detect: o
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function(t, e) {
        void 0 === e && (e = "normal"),
        this.name = t,
        this.weight = e
    };
    e.TrueTypeFont = i
}
, function(t, e, n) {
    (function(i) {
        var r, o;
        r = function() {
            "use strict";
            /** @license
   * jsPDF - PDF Document creation from JavaScript
   * Version 1.5.3 Built on 2018-12-27T14:11:42.696Z
   *                      CommitID d93d28db14
   *
   * Copyright (c) 2010-2016 James Hall <james@parall.ax>, https://github.com/MrRio/jsPDF
   *               2010 Aaron Spike, https://github.com/acspike
   *               2012 Willow Systems Corporation, willow-systems.com
   *               2012 Pablo Hess, https://github.com/pablohess
   *               2012 Florian Jenett, https://github.com/fjenett
   *               2013 Warren Weckesser, https://github.com/warrenweckesser
   *               2013 Youssef Beddad, https://github.com/lifof
   *               2013 Lee Driscoll, https://github.com/lsdriscoll
   *               2013 Stefan Slonevskiy, https://github.com/stefslon
   *               2013 Jeremy Morel, https://github.com/jmorel
   *               2013 Christoph Hartmann, https://github.com/chris-rock
   *               2014 Juan Pablo Gaviria, https://github.com/juanpgaviria
   *               2014 James Makes, https://github.com/dollaruw
   *               2014 Diego Casorran, https://github.com/diegocr
   *               2014 Steven Spungin, https://github.com/Flamenco
   *               2014 Kenneth Glassey, https://github.com/Gavvers
   *
   * Licensed under the MIT License
   *
   * Contributor(s):
   *    siefkenj, ahwolf, rickygu, Midnith, saintclair, eaparango,
   *    kim3er, mfo, alnorth, Flamenco
   */
            function r(t) {
                return (r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
                    return typeof t
                }
                : function(t) {
                    return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
                }
                )(t)
            }
            !function(t) {
                if ("object" !== r(t.console)) {
                    t.console = {};
                    for (var e, n, i = t.console, o = function() {}, a = ["memory"], s = "assert,clear,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profiles,profileEnd,show,table,time,timeEnd,timeline,timelineEnd,timeStamp,trace,warn".split(","); e = a.pop(); )
                        i[e] || (i[e] = {});
                    for (; n = s.pop(); )
                        i[n] || (i[n] = o)
                }
                var c, l, u, d, p = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
                void 0 === t.btoa && (t.btoa = function(t) {
                    var e, n, i, r, o, a = 0, s = 0, c = "", l = [];
                    if (!t)
                        return t;
                    for (; e = (o = t.charCodeAt(a++) << 16 | t.charCodeAt(a++) << 8 | t.charCodeAt(a++)) >> 18 & 63,
                    n = o >> 12 & 63,
                    i = o >> 6 & 63,
                    r = 63 & o,
                    l[s++] = p.charAt(e) + p.charAt(n) + p.charAt(i) + p.charAt(r),
                    a < t.length; )
                        ;
                    c = l.join("");
                    var u = t.length % 3;
                    return (u ? c.slice(0, u - 3) : c) + "===".slice(u || 3)
                }
                ),
                void 0 === t.atob && (t.atob = function(t) {
                    var e, n, i, r, o, a, s = 0, c = 0, l = [];
                    if (!t)
                        return t;
                    for (t += ""; e = (a = p.indexOf(t.charAt(s++)) << 18 | p.indexOf(t.charAt(s++)) << 12 | (r = p.indexOf(t.charAt(s++))) << 6 | (o = p.indexOf(t.charAt(s++)))) >> 16 & 255,
                    n = a >> 8 & 255,
                    i = 255 & a,
                    l[c++] = 64 == r ? String.fromCharCode(e) : 64 == o ? String.fromCharCode(e, n) : String.fromCharCode(e, n, i),
                    s < t.length; )
                        ;
                    return l.join("")
                }
                ),
                Array.prototype.map || (Array.prototype.map = function(t) {
                    if (null == this || "function" != typeof t)
                        throw new TypeError;
                    for (var e = Object(this), n = e.length >>> 0, i = new Array(n), r = 1 < arguments.length ? arguments[1] : void 0, o = 0; o < n; o++)
                        o in e && (i[o] = t.call(r, e[o], o, e));
                    return i
                }
                ),
                Array.isArray || (Array.isArray = function(t) {
                    return "[object Array]" === Object.prototype.toString.call(t)
                }
                ),
                Array.prototype.forEach || (Array.prototype.forEach = function(t, e) {
                    if (null == this || "function" != typeof t)
                        throw new TypeError;
                    for (var n = Object(this), i = n.length >>> 0, r = 0; r < i; r++)
                        r in n && t.call(e, n[r], r, n)
                }
                ),
                Array.prototype.find || Object.defineProperty(Array.prototype, "find", {
                    value: function(t) {
                        if (null == this)
                            throw new TypeError('"this" is null or not defined');
                        var e = Object(this)
                          , n = e.length >>> 0;
                        if ("function" != typeof t)
                            throw new TypeError("predicate must be a function");
                        for (var i = arguments[1], r = 0; r < n; ) {
                            var o = e[r];
                            if (t.call(i, o, r, e))
                                return o;
                            r++
                        }
                    },
                    configurable: !0,
                    writable: !0
                }),
                Object.keys || (Object.keys = (c = Object.prototype.hasOwnProperty,
                l = !{
                    toString: null
                }.propertyIsEnumerable("toString"),
                d = (u = ["toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "constructor"]).length,
                function(t) {
                    if ("object" !== r(t) && ("function" != typeof t || null === t))
                        throw new TypeError;
                    var e, n, i = [];
                    for (e in t)
                        c.call(t, e) && i.push(e);
                    if (l)
                        for (n = 0; n < d; n++)
                            c.call(t, u[n]) && i.push(u[n]);
                    return i
                }
                )),
                "function" != typeof Object.assign && (Object.assign = function(t) {
                    if (null == t)
                        throw new TypeError("Cannot convert undefined or null to object");
                    t = Object(t);
                    for (var e = 1; e < arguments.length; e++) {
                        var n = arguments[e];
                        if (null != n)
                            for (var i in n)
                                Object.prototype.hasOwnProperty.call(n, i) && (t[i] = n[i])
                    }
                    return t
                }
                ),
                String.prototype.trim || (String.prototype.trim = function() {
                    return this.replace(/^\s+|\s+$/g, "")
                }
                ),
                String.prototype.trimLeft || (String.prototype.trimLeft = function() {
                    return this.replace(/^\s+/g, "")
                }
                ),
                String.prototype.trimRight || (String.prototype.trimRight = function() {
                    return this.replace(/\s+$/g, "")
                }
                ),
                Number.isInteger = Number.isInteger || function(t) {
                    return "number" == typeof t && isFinite(t) && Math.floor(t) === t
                }
            }("undefined" != typeof self && self || "undefined" != typeof window && window || void 0 !== i && i || Function('return typeof this === "object" && this.content')() || Function("return this")());
            var a, s, c, l, u, d, p, h, f, m, g, v, y, b, w, S, x, M, E, C, A, T, O, _, P, I, k, D, R, L, N, j, V, F, U, B, z, G, H, W, q, X, Y, K, Z, J, Q, $, tt, et, nt, it, rt, ot, at, st, ct, lt, ut, dt, pt, ht, ft = function(i) {
                function a(t) {
                    if ("object" !== r(t))
                        throw new Error("Invalid Context passed to initialize PubSub (jsPDF-module)");
                    var e = {};
                    this.subscribe = function(t, n, i) {
                        if (i = i || !1,
                        "string" != typeof t || "function" != typeof n || "boolean" != typeof i)
                            throw new Error("Invalid arguments passed to PubSub.subscribe (jsPDF-module)");
                        e.hasOwnProperty(t) || (e[t] = {});
                        var r = Math.random().toString(35);
                        return e[t][r] = [n, !!i],
                        r
                    }
                    ,
                    this.unsubscribe = function(t) {
                        for (var n in e)
                            if (e[n][t])
                                return delete e[n][t],
                                0 === Object.keys(e[n]).length && delete e[n],
                                !0;
                        return !1
                    }
                    ,
                    this.publish = function(n) {
                        if (e.hasOwnProperty(n)) {
                            var r = Array.prototype.slice.call(arguments, 1)
                              , o = [];
                            for (var a in e[n]) {
                                var s = e[n][a];
                                try {
                                    s[0].apply(t, r)
                                } catch (n) {
                                    i.console && console.error("jsPDF PubSub Error", n.message, n)
                                }
                                s[1] && o.push(a)
                            }
                            o.length && o.forEach(this.unsubscribe)
                        }
                    }
                    ,
                    this.getTopics = function() {
                        return e
                    }
                }
                function s(t, e, n, o) {
                    var c = {}
                      , l = []
                      , u = 1;
                    "object" === r(t) && (t = (c = t).orientation,
                    e = c.unit || e,
                    n = c.format || n,
                    o = c.compress || c.compressPdf || o,
                    l = c.filters || (!0 === o ? ["FlateEncode"] : l),
                    u = "number" == typeof c.userUnit ? Math.abs(c.userUnit) : 1),
                    e = e || "mm",
                    t = ("" + (t || "P")).toLowerCase();
                    var d = c.putOnlyUsedFonts || !0
                      , p = {}
                      , h = {
                        internal: {},
                        __private__: {}
                    };
                    h.__private__.PubSub = a;
                    var f = "1.3"
                      , m = h.__private__.getPdfVersion = function() {
                        return f
                    }
                      , g = (h.__private__.setPdfVersion = function(t) {
                        f = t
                    }
                    ,
                    {
                        a0: [2383.94, 3370.39],
                        a1: [1683.78, 2383.94],
                        a2: [1190.55, 1683.78],
                        a3: [841.89, 1190.55],
                        a4: [595.28, 841.89],
                        a5: [419.53, 595.28],
                        a6: [297.64, 419.53],
                        a7: [209.76, 297.64],
                        a8: [147.4, 209.76],
                        a9: [104.88, 147.4],
                        a10: [73.7, 104.88],
                        b0: [2834.65, 4008.19],
                        b1: [2004.09, 2834.65],
                        b2: [1417.32, 2004.09],
                        b3: [1000.63, 1417.32],
                        b4: [708.66, 1000.63],
                        b5: [498.9, 708.66],
                        b6: [354.33, 498.9],
                        b7: [249.45, 354.33],
                        b8: [175.75, 249.45],
                        b9: [124.72, 175.75],
                        b10: [87.87, 124.72],
                        c0: [2599.37, 3676.54],
                        c1: [1836.85, 2599.37],
                        c2: [1298.27, 1836.85],
                        c3: [918.43, 1298.27],
                        c4: [649.13, 918.43],
                        c5: [459.21, 649.13],
                        c6: [323.15, 459.21],
                        c7: [229.61, 323.15],
                        c8: [161.57, 229.61],
                        c9: [113.39, 161.57],
                        c10: [79.37, 113.39],
                        dl: [311.81, 623.62],
                        letter: [612, 792],
                        "government-letter": [576, 756],
                        legal: [612, 1008],
                        "junior-legal": [576, 360],
                        ledger: [1224, 792],
                        tabloid: [792, 1224],
                        "credit-card": [153, 243]
                    })
                      , v = (h.__private__.getPageFormats = function() {
                        return g
                    }
                    ,
                    h.__private__.getPageFormat = function(t) {
                        return g[t]
                    }
                    );
                    "string" == typeof n && (n = v(n)),
                    n = n || v("a4");
                    var y, b = h.f2 = h.__private__.f2 = function(t) {
                        if (isNaN(t))
                            throw new Error("Invalid argument passed to jsPDF.f2");
                        return t.toFixed(2)
                    }
                    , w = h.__private__.f3 = function(t) {
                        if (isNaN(t))
                            throw new Error("Invalid argument passed to jsPDF.f3");
                        return t.toFixed(3)
                    }
                    , S = "00000000000000000000000000000000", x = h.__private__.getFileId = function() {
                        return S
                    }
                    , M = h.__private__.setFileId = function(t) {
                        return t = t || "12345678901234567890123456789012".split("").map((function() {
                            return "ABCDEF0123456789".charAt(Math.floor(16 * Math.random()))
                        }
                        )).join(""),
                        S = t
                    }
                    ;
                    h.setFileId = function(t) {
                        return M(t),
                        this
                    }
                    ,
                    h.getFileId = function() {
                        return x()
                    }
                    ;
                    var E = h.__private__.convertDateToPDFDate = function(t) {
                        var e = t.getTimezoneOffset()
                          , n = e < 0 ? "+" : "-"
                          , i = Math.floor(Math.abs(e / 60))
                          , r = Math.abs(e % 60)
                          , o = [n, N(i), "'", N(r), "'"].join("");
                        return ["D:", t.getFullYear(), N(t.getMonth() + 1), N(t.getDate()), N(t.getHours()), N(t.getMinutes()), N(t.getSeconds()), o].join("")
                    }
                      , C = h.__private__.convertPDFDateToDate = function(t) {
                        var e = parseInt(t.substr(2, 4), 10)
                          , n = parseInt(t.substr(6, 2), 10) - 1
                          , i = parseInt(t.substr(8, 2), 10)
                          , r = parseInt(t.substr(10, 2), 10)
                          , o = parseInt(t.substr(12, 2), 10)
                          , a = parseInt(t.substr(14, 2), 10);
                        return parseInt(t.substr(16, 2), 10),
                        parseInt(t.substr(20, 2), 10),
                        new Date(e,n,i,r,o,a,0)
                    }
                      , A = h.__private__.setCreationDate = function(t) {
                        var e;
                        if (void 0 === t && (t = new Date),
                        "object" === r(t) && "[object Date]" === Object.prototype.toString.call(t))
                            e = E(t);
                        else {
                            if (!/^D:(20[0-2][0-9]|203[0-7]|19[7-9][0-9])(0[0-9]|1[0-2])([0-2][0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])(0[0-9]|[1-5][0-9])(0[0-9]|[1-5][0-9])(\+0[0-9]|\+1[0-4]|\-0[0-9]|\-1[0-1])\'(0[0-9]|[1-5][0-9])\'?$/.test(t))
                                throw new Error("Invalid argument passed to jsPDF.setCreationDate");
                            e = t
                        }
                        return y = e
                    }
                      , T = h.__private__.getCreationDate = function(t) {
                        var e = y;
                        return "jsDate" === t && (e = C(y)),
                        e
                    }
                    ;
                    h.setCreationDate = function(t) {
                        return A(t),
                        this
                    }
                    ,
                    h.getCreationDate = function(t) {
                        return T(t)
                    }
                    ;
                    var O, _, P, I, k, D, R, L, N = h.__private__.padd2 = function(t) {
                        return ("0" + parseInt(t)).slice(-2)
                    }
                    , j = !1, V = [], F = [], U = 0, B = (h.__private__.setCustomOutputDestination = function(t) {
                        _ = t
                    }
                    ,
                    h.__private__.resetCustomOutputDestination = function(t) {
                        _ = void 0
                    }
                    ,
                    h.__private__.out = function(t) {
                        var e;
                        return t = "string" == typeof t ? t : t.toString(),
                        (e = void 0 === _ ? j ? V[O] : F : _).push(t),
                        j || (U += t.length + 1),
                        e
                    }
                    ), z = h.__private__.write = function(t) {
                        return B(1 === arguments.length ? t.toString() : Array.prototype.join.call(arguments, " "))
                    }
                    , G = h.__private__.getArrayBuffer = function(t) {
                        for (var e = t.length, n = new ArrayBuffer(e), i = new Uint8Array(n); e--; )
                            i[e] = t.charCodeAt(e);
                        return n
                    }
                    , H = [["Helvetica", "helvetica", "normal", "WinAnsiEncoding"], ["Helvetica-Bold", "helvetica", "bold", "WinAnsiEncoding"], ["Helvetica-Oblique", "helvetica", "italic", "WinAnsiEncoding"], ["Helvetica-BoldOblique", "helvetica", "bolditalic", "WinAnsiEncoding"], ["Courier", "courier", "normal", "WinAnsiEncoding"], ["Courier-Bold", "courier", "bold", "WinAnsiEncoding"], ["Courier-Oblique", "courier", "italic", "WinAnsiEncoding"], ["Courier-BoldOblique", "courier", "bolditalic", "WinAnsiEncoding"], ["Times-Roman", "times", "normal", "WinAnsiEncoding"], ["Times-Bold", "times", "bold", "WinAnsiEncoding"], ["Times-Italic", "times", "italic", "WinAnsiEncoding"], ["Times-BoldItalic", "times", "bolditalic", "WinAnsiEncoding"], ["ZapfDingbats", "zapfdingbats", "normal", null], ["Symbol", "symbol", "normal", null]], W = (h.__private__.getStandardFonts = function(t) {
                        return H
                    }
                    ,
                    c.fontSize || 16), q = (h.__private__.setFontSize = h.setFontSize = function(t) {
                        return W = t,
                        this
                    }
                    ,
                    h.__private__.getFontSize = h.getFontSize = function() {
                        return W
                    }
                    ), X = c.R2L || !1, Y = (h.__private__.setR2L = h.setR2L = function(t) {
                        return X = t,
                        this
                    }
                    ,
                    h.__private__.getR2L = h.getR2L = function(t) {
                        return X
                    }
                    ,
                    h.__private__.setZoomMode = function(t) {
                        if (/^\d*\.?\d*\%$/.test(t))
                            P = t;
                        else if (isNaN(t)) {
                            if (-1 === [void 0, null, "fullwidth", "fullheight", "fullpage", "original"].indexOf(t))
                                throw new Error('zoom must be Integer (e.g. 2), a percentage Value (e.g. 300%) or fullwidth, fullheight, fullpage, original. "' + t + '" is not recognized.');
                            P = t
                        } else
                            P = parseInt(t, 10)
                    }
                    ), K = (h.__private__.getZoomMode = function() {
                        return P
                    }
                    ,
                    h.__private__.setPageMode = function(t) {
                        if (-1 == [void 0, null, "UseNone", "UseOutlines", "UseThumbs", "FullScreen"].indexOf(t))
                            throw new Error('Page mode must be one of UseNone, UseOutlines, UseThumbs, or FullScreen. "' + t + '" is not recognized.');
                        I = t
                    }
                    ), Z = (h.__private__.getPageMode = function() {
                        return I
                    }
                    ,
                    h.__private__.setLayoutMode = function(t) {
                        if (-1 == [void 0, null, "continuous", "single", "twoleft", "tworight", "two"].indexOf(t))
                            throw new Error('Layout mode must be one of continuous, single, twoleft, tworight. "' + t + '" is not recognized.');
                        k = t
                    }
                    ), J = (h.__private__.getLayoutMode = function() {
                        return k
                    }
                    ,
                    h.__private__.setDisplayMode = h.setDisplayMode = function(t, e, n) {
                        return Y(t),
                        Z(e),
                        K(n),
                        this
                    }
                    ,
                    {
                        title: "",
                        subject: "",
                        author: "",
                        keywords: "",
                        creator: ""
                    }), Q = (h.__private__.getDocumentProperty = function(t) {
                        if (-1 === Object.keys(J).indexOf(t))
                            throw new Error("Invalid argument passed to jsPDF.getDocumentProperty");
                        return J[t]
                    }
                    ,
                    h.__private__.getDocumentProperties = function(t) {
                        return J
                    }
                    ,
                    h.__private__.setDocumentProperties = h.setProperties = h.setDocumentProperties = function(t) {
                        for (var e in J)
                            J.hasOwnProperty(e) && t[e] && (J[e] = t[e]);
                        return this
                    }
                    ,
                    h.__private__.setDocumentProperty = function(t, e) {
                        if (-1 === Object.keys(J).indexOf(t))
                            throw new Error("Invalid arguments passed to jsPDF.setDocumentProperty");
                        return J[t] = e
                    }
                    ,
                    0), $ = [], tt = {}, et = {}, nt = 0, it = [], rt = [], ot = new a(h), at = c.hotfixes || [], st = h.__private__.newObject = function() {
                        var t = ct();
                        return lt(t, !0),
                        t
                    }
                    , ct = h.__private__.newObjectDeferred = function() {
                        return $[++Q] = function() {
                            return U
                        }
                        ,
                        Q
                    }
                    , lt = function(t, e) {
                        return e = "boolean" == typeof e && e,
                        $[t] = U,
                        e && B(t + " 0 obj"),
                        t
                    }, ut = h.__private__.newAdditionalObject = function() {
                        var t = {
                            objId: ct(),
                            content: ""
                        };
                        return rt.push(t),
                        t
                    }
                    , dt = ct(), pt = ct(), ht = h.__private__.decodeColorString = function(t) {
                        var e = t.split(" ");
                        if (2 === e.length && ("g" === e[1] || "G" === e[1])) {
                            var n = parseFloat(e[0]);
                            e = [n, n, n, "r"]
                        }
                        for (var i = "#", r = 0; r < 3; r++)
                            i += ("0" + Math.floor(255 * parseFloat(e[r])).toString(16)).slice(-2);
                        return i
                    }
                    , ft = h.__private__.encodeColorString = function(t) {
                        var e;
                        "string" == typeof t && (t = {
                            ch1: t
                        });
                        var n = t.ch1
                          , i = t.ch2
                          , o = t.ch3
                          , a = t.ch4
                          , s = (t.precision,
                        "draw" === t.pdfColorType ? ["G", "RG", "K"] : ["g", "rg", "k"]);
                        if ("string" == typeof n && "#" !== n.charAt(0)) {
                            var c = new RGBColor(n);
                            if (c.ok)
                                n = c.toHex();
                            else if (!/^\d*\.?\d*$/.test(n))
                                throw new Error('Invalid color "' + n + '" passed to jsPDF.encodeColorString.')
                        }
                        if ("string" == typeof n && /^#[0-9A-Fa-f]{3}$/.test(n) && (n = "#" + n[1] + n[1] + n[2] + n[2] + n[3] + n[3]),
                        "string" == typeof n && /^#[0-9A-Fa-f]{6}$/.test(n)) {
                            var l = parseInt(n.substr(1), 16);
                            n = l >> 16 & 255,
                            i = l >> 8 & 255,
                            o = 255 & l
                        }
                        if (void 0 === i || void 0 === a && n === i && i === o)
                            if ("string" == typeof n)
                                e = n + " " + s[0];
                            else
                                switch (t.precision) {
                                case 2:
                                    e = b(n / 255) + " " + s[0];
                                    break;
                                case 3:
                                default:
                                    e = w(n / 255) + " " + s[0]
                                }
                        else if (void 0 === a || "object" === r(a)) {
                            if (a && !isNaN(a.a) && 0 === a.a)
                                return ["1.000", "1.000", "1.000", s[1]].join(" ");
                            if ("string" == typeof n)
                                e = [n, i, o, s[1]].join(" ");
                            else
                                switch (t.precision) {
                                case 2:
                                    e = [b(n / 255), b(i / 255), b(o / 255), s[1]].join(" ");
                                    break;
                                default:
                                case 3:
                                    e = [w(n / 255), w(i / 255), w(o / 255), s[1]].join(" ")
                                }
                        } else if ("string" == typeof n)
                            e = [n, i, o, a, s[2]].join(" ");
                        else
                            switch (t.precision) {
                            case 2:
                                e = [b(n / 255), b(i / 255), b(o / 255), b(a / 255), s[2]].join(" ");
                                break;
                            case 3:
                            default:
                                e = [w(n / 255), w(i / 255), w(o / 255), w(a / 255), s[2]].join(" ")
                            }
                        return e
                    }
                    , mt = h.__private__.getFilters = function() {
                        return l
                    }
                    , gt = h.__private__.putStream = function(t) {
                        var e, n = (t = t || {}).data || "", i = t.filters || mt(), r = t.alreadyAppliedFilters || [], o = t.addLength1 || !1, a = n.length;
                        !0 === i && (i = ["FlateEncode"]);
                        var c = t.additionalKeyValues || []
                          , l = (e = void 0 !== s.API.processDataByFilters ? s.API.processDataByFilters(n, i) : {
                            data: n,
                            reverseChain: []
                        }).reverseChain + (Array.isArray(r) ? r.join(" ") : r.toString());
                        0 !== e.data.length && (c.push({
                            key: "Length",
                            value: e.data.length
                        }),
                        !0 === o && c.push({
                            key: "Length1",
                            value: a
                        })),
                        0 != l.length && (l.split("/").length - 1 == 1 ? c.push({
                            key: "Filter",
                            value: l
                        }) : c.push({
                            key: "Filter",
                            value: "[" + l + "]"
                        })),
                        B("<<");
                        for (var u = 0; u < c.length; u++)
                            B("/" + c[u].key + " " + c[u].value);
                        B(">>"),
                        0 !== e.data.length && (B("stream"),
                        B(e.data),
                        B("endstream"))
                    }
                    , vt = h.__private__.putPage = function(t) {
                        t.mediaBox;
                        var e = t.number
                          , n = t.data
                          , i = t.objId
                          , r = t.contentsObjId;
                        lt(i, !0),
                        it[O].mediaBox.topRightX,
                        it[O].mediaBox.bottomLeftX,
                        it[O].mediaBox.topRightY,
                        it[O].mediaBox.bottomLeftY,
                        B("<</Type /Page"),
                        B("/Parent " + t.rootDictionaryObjId + " 0 R"),
                        B("/Resources " + t.resourceDictionaryObjId + " 0 R"),
                        B("/MediaBox [" + parseFloat(b(t.mediaBox.bottomLeftX)) + " " + parseFloat(b(t.mediaBox.bottomLeftY)) + " " + b(t.mediaBox.topRightX) + " " + b(t.mediaBox.topRightY) + "]"),
                        null !== t.cropBox && B("/CropBox [" + b(t.cropBox.bottomLeftX) + " " + b(t.cropBox.bottomLeftY) + " " + b(t.cropBox.topRightX) + " " + b(t.cropBox.topRightY) + "]"),
                        null !== t.bleedBox && B("/BleedBox [" + b(t.bleedBox.bottomLeftX) + " " + b(t.bleedBox.bottomLeftY) + " " + b(t.bleedBox.topRightX) + " " + b(t.bleedBox.topRightY) + "]"),
                        null !== t.trimBox && B("/TrimBox [" + b(t.trimBox.bottomLeftX) + " " + b(t.trimBox.bottomLeftY) + " " + b(t.trimBox.topRightX) + " " + b(t.trimBox.topRightY) + "]"),
                        null !== t.artBox && B("/ArtBox [" + b(t.artBox.bottomLeftX) + " " + b(t.artBox.bottomLeftY) + " " + b(t.artBox.topRightX) + " " + b(t.artBox.topRightY) + "]"),
                        "number" == typeof t.userUnit && 1 !== t.userUnit && B("/UserUnit " + t.userUnit),
                        ot.publish("putPage", {
                            objId: i,
                            pageContext: it[e],
                            pageNumber: e,
                            page: n
                        }),
                        B("/Contents " + r + " 0 R"),
                        B(">>"),
                        B("endobj");
                        var o = n.join("\n");
                        return lt(r, !0),
                        gt({
                            data: o,
                            filters: mt()
                        }),
                        B("endobj"),
                        i
                    }
                    , yt = h.__private__.putPages = function() {
                        var t, e, n = [];
                        for (t = 1; t <= nt; t++)
                            it[t].objId = ct(),
                            it[t].contentsObjId = ct();
                        for (t = 1; t <= nt; t++)
                            n.push(vt({
                                number: t,
                                data: V[t],
                                objId: it[t].objId,
                                contentsObjId: it[t].contentsObjId,
                                mediaBox: it[t].mediaBox,
                                cropBox: it[t].cropBox,
                                bleedBox: it[t].bleedBox,
                                trimBox: it[t].trimBox,
                                artBox: it[t].artBox,
                                userUnit: it[t].userUnit,
                                rootDictionaryObjId: dt,
                                resourceDictionaryObjId: pt
                            }));
                        lt(dt, !0),
                        B("<</Type /Pages");
                        var i = "/Kids [";
                        for (e = 0; e < nt; e++)
                            i += n[e] + " 0 R ";
                        B(i + "]"),
                        B("/Count " + nt),
                        B(">>"),
                        B("endobj"),
                        ot.publish("postPutPages")
                    }
                    , bt = function(t, e, n) {
                        et.hasOwnProperty(e) || (et[e] = {}),
                        et[e][n] = t
                    }, wt = function(t, e, n, i, r) {
                        r = r || !1;
                        var o = "F" + (Object.keys(tt).length + 1).toString(10)
                          , a = {
                            id: o,
                            postScriptName: t,
                            fontName: e,
                            fontStyle: n,
                            encoding: i,
                            isStandardFont: r,
                            metadata: {}
                        };
                        return ot.publish("addFont", {
                            font: a,
                            instance: this
                        }),
                        void 0 !== o && (tt[o] = a,
                        bt(o, e, n)),
                        o
                    }, St = h.__private__.pdfEscape = h.pdfEscape = function(t, e) {
                        return function(t, e) {
                            var n, i, r, o, a, s, c, l, u;
                            if (r = (e = e || {}).sourceEncoding || "Unicode",
                            a = e.outputEncoding,
                            (e.autoencode || a) && tt[D].metadata && tt[D].metadata[r] && tt[D].metadata[r].encoding && (o = tt[D].metadata[r].encoding,
                            !a && tt[D].encoding && (a = tt[D].encoding),
                            !a && o.codePages && (a = o.codePages[0]),
                            "string" == typeof a && (a = o[a]),
                            a)) {
                                for (c = !1,
                                s = [],
                                n = 0,
                                i = t.length; n < i; n++)
                                    (l = a[t.charCodeAt(n)]) ? s.push(String.fromCharCode(l)) : s.push(t[n]),
                                    s[n].charCodeAt(0) >> 8 && (c = !0);
                                t = s.join("")
                            }
                            for (n = t.length; void 0 === c && 0 !== n; )
                                t.charCodeAt(n - 1) >> 8 && (c = !0),
                                n--;
                            if (!c)
                                return t;
                            for (s = e.noBOM ? [] : [254, 255],
                            n = 0,
                            i = t.length; n < i; n++) {
                                if ((u = (l = t.charCodeAt(n)) >> 8) >> 8)
                                    throw new Error("Character at position " + n + " of string '" + t + "' exceeds 16bits. Cannot be encoded into UCS-2 BE");
                                s.push(u),
                                s.push(l - (u << 8))
                            }
                            return String.fromCharCode.apply(void 0, s)
                        }(t, e).replace(/\\/g, "\\\\").replace(/\(/g, "\\(").replace(/\)/g, "\\)")
                    }
                    , xt = h.__private__.beginPage = function(t, e) {
                        var i, r = "string" == typeof e && e.toLowerCase();
                        if ("string" == typeof t && (i = v(t.toLowerCase())) && (t = i[0],
                        e = i[1]),
                        Array.isArray(t) && (e = t[1],
                        t = t[0]),
                        (isNaN(t) || isNaN(e)) && (t = n[0],
                        e = n[1]),
                        r) {
                            switch (r.substr(0, 1)) {
                            case "l":
                                t < e && (r = "s");
                                break;
                            case "p":
                                e < t && (r = "s")
                            }
                            "s" === r && (i = t,
                            t = e,
                            e = i)
                        }
                        (14400 < t || 14400 < e) && (console.warn("A page in a PDF can not be wider or taller than 14400 userUnit. jsPDF limits the width/height to 14400"),
                        t = Math.min(14400, t),
                        e = Math.min(14400, e)),
                        n = [t, e],
                        j = !0,
                        V[++nt] = [],
                        it[nt] = {
                            objId: 0,
                            contentsObjId: 0,
                            userUnit: Number(u),
                            artBox: null,
                            bleedBox: null,
                            cropBox: null,
                            trimBox: null,
                            mediaBox: {
                                bottomLeftX: 0,
                                bottomLeftY: 0,
                                topRightX: Number(t),
                                topRightY: Number(e)
                            }
                        },
                        Et(nt)
                    }
                    , Mt = function() {
                        xt.apply(this, arguments),
                        Ht(Gt),
                        B(Qt),
                        0 !== re && B(re + " J"),
                        0 !== ae && B(ae + " j"),
                        ot.publish("addPage", {
                            pageNumber: nt
                        })
                    }, Et = function(t) {
                        0 < t && t <= nt && (O = t)
                    }, Ct = h.__private__.getNumberOfPages = h.getNumberOfPages = function() {
                        return V.length - 1
                    }
                    , At = function(t, e, n) {
                        var i, r = void 0;
                        return n = n || {},
                        t = void 0 !== t ? t : tt[D].fontName,
                        e = void 0 !== e ? e : tt[D].fontStyle,
                        i = t.toLowerCase(),
                        void 0 !== et[i] && void 0 !== et[i][e] ? r = et[i][e] : void 0 !== et[t] && void 0 !== et[t][e] ? r = et[t][e] : !1 === n.disableWarning && console.warn("Unable to look up font label for font '" + t + "', '" + e + "'. Refer to getFontList() for available fonts."),
                        r || n.noFallback || null == (r = et.times[e]) && (r = et.times.normal),
                        r
                    }, Tt = h.__private__.putInfo = function() {
                        for (var t in st(),
                        B("<<"),
                        B("/Producer (jsPDF " + s.version + ")"),
                        J)
                            J.hasOwnProperty(t) && J[t] && B("/" + t.substr(0, 1).toUpperCase() + t.substr(1) + " (" + St(J[t]) + ")");
                        B("/CreationDate (" + y + ")"),
                        B(">>"),
                        B("endobj")
                    }
                    , Ot = h.__private__.putCatalog = function(t) {
                        var e = (t = t || {}).rootDictionaryObjId || dt;
                        switch (st(),
                        B("<<"),
                        B("/Type /Catalog"),
                        B("/Pages " + e + " 0 R"),
                        P || (P = "fullwidth"),
                        P) {
                        case "fullwidth":
                            B("/OpenAction [3 0 R /FitH null]");
                            break;
                        case "fullheight":
                            B("/OpenAction [3 0 R /FitV null]");
                            break;
                        case "fullpage":
                            B("/OpenAction [3 0 R /Fit]");
                            break;
                        case "original":
                            B("/OpenAction [3 0 R /XYZ null null 1]");
                            break;
                        default:
                            var n = "" + P;
                            "%" === n.substr(n.length - 1) && (P = parseInt(P) / 100),
                            "number" == typeof P && B("/OpenAction [3 0 R /XYZ null null " + b(P) + "]")
                        }
                        switch (k || (k = "continuous"),
                        k) {
                        case "continuous":
                            B("/PageLayout /OneColumn");
                            break;
                        case "single":
                            B("/PageLayout /SinglePage");
                            break;
                        case "two":
                        case "twoleft":
                            B("/PageLayout /TwoColumnLeft");
                            break;
                        case "tworight":
                            B("/PageLayout /TwoColumnRight")
                        }
                        I && B("/PageMode /" + I),
                        ot.publish("putCatalog"),
                        B(">>"),
                        B("endobj")
                    }
                    , _t = h.__private__.putTrailer = function() {
                        B("trailer"),
                        B("<<"),
                        B("/Size " + (Q + 1)),
                        B("/Root " + Q + " 0 R"),
                        B("/Info " + (Q - 1) + " 0 R"),
                        B("/ID [ <" + S + "> <" + S + "> ]"),
                        B(">>")
                    }
                    , It = h.__private__.putHeader = function() {
                        B("%PDF-" + f),
                        B("%ºß¬à")
                    }
                    , kt = h.__private__.putXRef = function() {
                        var t = 1
                          , e = "0000000000";
                        for (B("xref"),
                        B("0 " + (Q + 1)),
                        B("0000000000 65535 f "),
                        t = 1; t <= Q; t++)
                            "function" == typeof $[t] ? B((e + $[t]()).slice(-10) + " 00000 n ") : void 0 !== $[t] ? B((e + $[t]).slice(-10) + " 00000 n ") : B("0000000000 00000 n ")
                    }
                    , Dt = h.__private__.buildDocument = function() {
                        j = !1,
                        U = Q = 0,
                        F = [],
                        $ = [],
                        rt = [],
                        dt = ct(),
                        pt = ct(),
                        ot.publish("buildDocument"),
                        It(),
                        yt(),
                        function() {
                            ot.publish("putAdditionalObjects");
                            for (var t = 0; t < rt.length; t++) {
                                var e = rt[t];
                                lt(e.objId, !0),
                                B(e.content),
                                B("endobj")
                            }
                            ot.publish("postPutAdditionalObjects")
                        }(),
                        function() {
                            for (var t in tt)
                                tt.hasOwnProperty(t) && (!1 === d || !0 === d && p.hasOwnProperty(t)) && (e = tt[t],
                                ot.publish("putFont", {
                                    font: e,
                                    out: B,
                                    newObject: st,
                                    putStream: gt
                                }),
                                !0 !== e.isAlreadyPutted && (e.objectNumber = st(),
                                B("<<"),
                                B("/Type /Font"),
                                B("/BaseFont /" + e.postScriptName),
                                B("/Subtype /Type1"),
                                "string" == typeof e.encoding && B("/Encoding /" + e.encoding),
                                B("/FirstChar 32"),
                                B("/LastChar 255"),
                                B(">>"),
                                B("endobj")));
                            var e
                        }(),
                        ot.publish("putResources"),
                        lt(pt, !0),
                        B("<<"),
                        function() {
                            for (var t in B("/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]"),
                            B("/Font <<"),
                            tt)
                                tt.hasOwnProperty(t) && (!1 === d || !0 === d && p.hasOwnProperty(t)) && B("/" + t + " " + tt[t].objectNumber + " 0 R");
                            B(">>"),
                            B("/XObject <<"),
                            ot.publish("putXobjectDict"),
                            B(">>")
                        }(),
                        B(">>"),
                        B("endobj"),
                        ot.publish("postPutResources"),
                        Tt(),
                        Ot();
                        var t = U;
                        return kt(),
                        _t(),
                        B("startxref"),
                        B("" + t),
                        B("%%EOF"),
                        j = !0,
                        F.join("\n")
                    }
                    , Rt = h.__private__.getBlob = function(t) {
                        return new Blob([G(t)],{
                            type: "application/pdf"
                        })
                    }
                    , Lt = h.output = h.__private__.output = ((L = function(t, e) {
                        e = e || {};
                        var n = Dt();
                        switch ("string" == typeof e ? e = {
                            filename: e
                        } : e.filename = e.filename || "generated.pdf",
                        t) {
                        case void 0:
                            return n;
                        case "save":
                            h.save(e.filename);
                            break;
                        case "arraybuffer":
                            return G(n);
                        case "blob":
                            return Rt(n);
                        case "bloburi":
                        case "bloburl":
                            if (void 0 !== i.URL && "function" == typeof i.URL.createObjectURL)
                                return i.URL && i.URL.createObjectURL(Rt(n)) || void 0;
                            console.warn("bloburl is not supported by your system, because URL.createObjectURL is not supported by your browser.");
                            break;
                        case "datauristring":
                        case "dataurlstring":
                            return "data:application/pdf;filename=" + e.filename + ";base64," + btoa(n);
                        case "dataurlnewwindow":
                            var r = '<html><style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;}  </style><body><iframe src="' + this.output("datauristring") + '"></iframe></body></html>'
                              , o = i.open();
                            if (null !== o && o.document.write(r),
                            o || "undefined" == typeof safari)
                                return o;
                        case "datauri":
                        case "dataurl":
                            return i.document.location.href = "data:application/pdf;filename=" + e.filename + ";base64," + btoa(n);
                        default:
                            return null
                        }
                    }
                    ).foo = function() {
                        try {
                            return L.apply(this, arguments)
                        } catch (n) {
                            var t = n.stack || "";
                            ~t.indexOf(" at ") && (t = t.split(" at ")[1]);
                            var e = "Error in function " + t.split("\n")[0].split("<")[0] + ": " + n.message;
                            if (!i.console)
                                throw new Error(e);
                            i.console.error(e, n),
                            i.alert && alert(e)
                        }
                    }
                    ,
                    (L.foo.bar = L).foo), Nt = function(t) {
                        return !0 === Array.isArray(at) && -1 < at.indexOf(t)
                    };
                    switch (e) {
                    case "pt":
                        R = 1;
                        break;
                    case "mm":
                        R = 72 / 25.4;
                        break;
                    case "cm":
                        R = 72 / 2.54;
                        break;
                    case "in":
                        R = 72;
                        break;
                    case "px":
                        R = 1 == Nt("px_scaling") ? .75 : 96 / 72;
                        break;
                    case "pc":
                    case "em":
                        R = 12;
                        break;
                    case "ex":
                        R = 6;
                        break;
                    default:
                        throw new Error("Invalid unit: " + e)
                    }
                    A(),
                    M();
                    var jt = h.__private__.getPageInfo = function(t) {
                        if (isNaN(t) || t % 1 != 0)
                            throw new Error("Invalid argument passed to jsPDF.getPageInfo");
                        return {
                            objId: it[t].objId,
                            pageNumber: t,
                            pageContext: it[t]
                        }
                    }
                      , Vt = h.__private__.getPageInfoByObjId = function(t) {
                        for (var e in it)
                            if (it[e].objId === t)
                                break;
                        if (isNaN(t) || t % 1 != 0)
                            throw new Error("Invalid argument passed to jsPDF.getPageInfoByObjId");
                        return jt(e)
                    }
                      , Ft = h.__private__.getCurrentPageInfo = function() {
                        return {
                            objId: it[O].objId,
                            pageNumber: O,
                            pageContext: it[O]
                        }
                    }
                    ;
                    h.addPage = function() {
                        return Mt.apply(this, arguments),
                        this
                    }
                    ,
                    h.setPage = function() {
                        return Et.apply(this, arguments),
                        this
                    }
                    ,
                    h.insertPage = function(t) {
                        return this.addPage(),
                        this.movePage(O, t),
                        this
                    }
                    ,
                    h.movePage = function(t, e) {
                        if (e < t) {
                            for (var n = V[t], i = it[t], r = t; e < r; r--)
                                V[r] = V[r - 1],
                                it[r] = it[r - 1];
                            V[e] = n,
                            it[e] = i,
                            this.setPage(e)
                        } else if (t < e) {
                            for (n = V[t],
                            i = it[t],
                            r = t; r < e; r++)
                                V[r] = V[r + 1],
                                it[r] = it[r + 1];
                            V[e] = n,
                            it[e] = i,
                            this.setPage(e)
                        }
                        return this
                    }
                    ,
                    h.deletePage = function() {
                        return function(t) {
                            0 < t && t <= nt && (V.splice(t, 1),
                            --nt < O && (O = nt),
                            this.setPage(O))
                        }
                        .apply(this, arguments),
                        this
                    }
                    ,
                    h.__private__.text = h.text = function(t, e, n, i) {
                        var o;
                        "number" != typeof t || "number" != typeof e || "string" != typeof n && !Array.isArray(n) || (o = n,
                        n = e,
                        e = t,
                        t = o);
                        var a = arguments[3]
                          , s = arguments[4]
                          , c = arguments[5];
                        if ("object" === r(a) && null !== a || ("string" == typeof s && (c = s,
                        s = null),
                        "string" == typeof a && (c = a,
                        a = null),
                        "number" == typeof a && (s = a,
                        a = null),
                        i = {
                            flags: a,
                            angle: s,
                            align: c
                        }),
                        (a = a || {}).noBOM = a.noBOM || !0,
                        a.autoencode = a.autoencode || !0,
                        isNaN(e) || isNaN(n) || null == t)
                            throw new Error("Invalid arguments passed to jsPDF.text");
                        if (0 === t.length)
                            return h;
                        var l, u = "", d = "number" == typeof i.lineHeightFactor ? i.lineHeightFactor : zt, h = i.scope || this;
                        function f(t) {
                            for (var e, n = t.concat(), i = [], r = n.length; r--; )
                                "string" == typeof (e = n.shift()) ? i.push(e) : Array.isArray(t) && 1 === e.length ? i.push(e[0]) : i.push([e[0], e[1], e[2]]);
                            return i
                        }
                        function m(t, e) {
                            var n;
                            if ("string" == typeof t)
                                n = e(t)[0];
                            else if (Array.isArray(t)) {
                                for (var i, r, o = t.concat(), a = [], s = o.length; s--; )
                                    "string" == typeof (i = o.shift()) ? a.push(e(i)[0]) : Array.isArray(i) && "string" === i[0] && (r = e(i[0], i[1], i[2]),
                                    a.push([r[0], r[1], r[2]]));
                                n = a
                            }
                            return n
                        }
                        var g = !1
                          , v = !0;
                        if ("string" == typeof t)
                            g = !0;
                        else if (Array.isArray(t)) {
                            for (var y, S = t.concat(), x = [], M = S.length; M--; )
                                ("string" != typeof (y = S.shift()) || Array.isArray(y) && "string" != typeof y[0]) && (v = !1);
                            g = v
                        }
                        if (!1 === g)
                            throw new Error('Type of text must be string or Array. "' + t + '" is not recognized.');
                        var E = tt[D].encoding;
                        "WinAnsiEncoding" !== E && "StandardEncoding" !== E || (t = m(t, (function(t, e, n) {
                            return [(r = t,
                            r = r.split("\t").join(Array(i.TabLen || 9).join(" ")),
                            St(r, a)), e, n];
                            var r
                        }
                        ))),
                        "string" == typeof t && (t = t.match(/[\r?\n]/) ? t.split(/\r\n|\r|\n/g) : [t]);
                        var C = W / h.internal.scaleFactor
                          , A = C * (zt - 1);
                        switch (i.baseline) {
                        case "bottom":
                            n -= A;
                            break;
                        case "top":
                            n += C - A;
                            break;
                        case "hanging":
                            n += C - 2 * A;
                            break;
                        case "middle":
                            n += C / 2 - A
                        }
                        0 < (z = i.maxWidth || 0) && ("string" == typeof t ? t = h.splitTextToSize(t, z) : "[object Array]" === Object.prototype.toString.call(t) && (t = h.splitTextToSize(t.join(" "), z)));
                        var T = {
                            text: t,
                            x: e,
                            y: n,
                            options: i,
                            mutex: {
                                pdfEscape: St,
                                activeFontKey: D,
                                fonts: tt,
                                activeFontSize: W
                            }
                        };
                        ot.publish("preProcessText", T),
                        t = T.text,
                        s = (i = T.options).angle;
                        var O = h.internal.scaleFactor
                          , _ = [];
                        if (s) {
                            s *= Math.PI / 180;
                            var P = Math.cos(s)
                              , I = Math.sin(s);
                            _ = [b(P), b(I), b(-1 * I), b(P)]
                        }
                        void 0 !== (U = i.charSpace) && (u += w(U * O) + " Tc\n"),
                        i.lang;
                        var k = -1
                          , R = void 0 !== i.renderingMode ? i.renderingMode : i.stroke
                          , L = h.internal.getCurrentPageInfo().pageContext;
                        switch (R) {
                        case 0:
                        case !1:
                        case "fill":
                            k = 0;
                            break;
                        case 1:
                        case !0:
                        case "stroke":
                            k = 1;
                            break;
                        case 2:
                        case "fillThenStroke":
                            k = 2;
                            break;
                        case 3:
                        case "invisible":
                            k = 3;
                            break;
                        case 4:
                        case "fillAndAddForClipping":
                            k = 4;
                            break;
                        case 5:
                        case "strokeAndAddPathForClipping":
                            k = 5;
                            break;
                        case 6:
                        case "fillThenStrokeAndAddToPathForClipping":
                            k = 6;
                            break;
                        case 7:
                        case "addToPathForClipping":
                            k = 7
                        }
                        var N = void 0 !== L.usedRenderingMode ? L.usedRenderingMode : -1;
                        -1 !== k ? u += k + " Tr\n" : -1 !== N && (u += "0 Tr\n"),
                        -1 !== k && (L.usedRenderingMode = k),
                        c = i.align || "left";
                        var j = W * d
                          , V = h.internal.pageSize.getWidth()
                          , F = (O = h.internal.scaleFactor,
                        tt[D])
                          , U = i.charSpace || ne
                          , z = i.maxWidth || 0
                          , G = (a = {},
                        []);
                        if ("[object Array]" === Object.prototype.toString.call(t)) {
                            var H, q;
                            x = f(t),
                            "left" !== c && (q = x.map((function(t) {
                                return h.getStringUnitWidth(t, {
                                    font: F,
                                    charSpace: U,
                                    fontSize: W
                                }) * W / O
                            }
                            ))),
                            Math.max.apply(Math, q);
                            var Y, K = 0;
                            if ("right" === c) {
                                e -= q[0],
                                t = [];
                                var Z = 0;
                                for (M = x.length; Z < M; Z++)
                                    q[Z],
                                    H = 0 === Z ? (Y = Yt(e),
                                    Kt(n)) : (Y = (K - q[Z]) * O,
                                    -j),
                                    t.push([x[Z], Y, H]),
                                    K = q[Z]
                            } else if ("center" === c)
                                for (e -= q[0] / 2,
                                t = [],
                                Z = 0,
                                M = x.length; Z < M; Z++)
                                    q[Z],
                                    H = 0 === Z ? (Y = Yt(e),
                                    Kt(n)) : (Y = (K - q[Z]) / 2 * O,
                                    -j),
                                    t.push([x[Z], Y, H]),
                                    K = q[Z];
                            else if ("left" === c)
                                for (t = [],
                                Z = 0,
                                M = x.length; Z < M; Z++)
                                    H = 0 === Z ? Kt(n) : -j,
                                    Y = 0 === Z ? Yt(e) : 0,
                                    t.push(x[Z]);
                            else {
                                if ("justify" !== c)
                                    throw new Error('Unrecognized alignment option, use "left", "center", "right" or "justify".');
                                for (t = [],
                                z = 0 !== z ? z : V,
                                Z = 0,
                                M = x.length; Z < M; Z++)
                                    H = 0 === Z ? Kt(n) : -j,
                                    Y = 0 === Z ? Yt(e) : 0,
                                    Z < M - 1 && G.push(((z - q[Z]) / (x[Z].split(" ").length - 1) * O).toFixed(2)),
                                    t.push([x[Z], Y, H])
                            }
                        }
                        !0 === ("boolean" == typeof i.R2L ? i.R2L : X) && (t = m(t, (function(t, e, n) {
                            return [t.split("").reverse().join(""), e, n]
                        }
                        ))),
                        T = {
                            text: t,
                            x: e,
                            y: n,
                            options: i,
                            mutex: {
                                pdfEscape: St,
                                activeFontKey: D,
                                fonts: tt,
                                activeFontSize: W
                            }
                        },
                        ot.publish("postProcessText", T),
                        t = T.text,
                        l = T.mutex.isHex,
                        x = f(t),
                        t = [];
                        var J, Q, $, et = 0, nt = (M = x.length,
                        "");
                        for (Z = 0; Z < M; Z++)
                            nt = "",
                            Array.isArray(x[Z]) ? (J = parseFloat(x[Z][1]),
                            Q = parseFloat(x[Z][2]),
                            $ = (l ? "<" : "(") + x[Z][0] + (l ? ">" : ")"),
                            et = 1) : (J = Yt(e),
                            Q = Kt(n),
                            $ = (l ? "<" : "(") + x[Z] + (l ? ">" : ")")),
                            void 0 !== G && void 0 !== G[Z] && (nt = G[Z] + " Tw\n"),
                            0 !== _.length && 0 === Z ? t.push(nt + _.join(" ") + " " + J.toFixed(2) + " " + Q.toFixed(2) + " Tm\n" + $) : 1 === et || 0 === et && 0 === Z ? t.push(nt + J.toFixed(2) + " " + Q.toFixed(2) + " Td\n" + $) : t.push(nt + $);
                        t = 0 === et ? t.join(" Tj\nT* ") : t.join(" Tj\n"),
                        t += " Tj\n";
                        var it = "BT\n/" + D + " " + W + " Tf\n" + (W * d).toFixed(2) + " TL\n" + te + "\n";
                        return it += u,
                        it += t,
                        B(it += "ET"),
                        p[D] = !0,
                        h
                    }
                    ,
                    h.__private__.lstext = h.lstext = function(t, e, n, i) {
                        return console.warn("jsPDF.lstext is deprecated"),
                        this.text(t, e, n, {
                            charSpace: i
                        })
                    }
                    ,
                    h.__private__.clip = h.clip = function(t) {
                        B("evenodd" === t ? "W*" : "W"),
                        B("n")
                    }
                    ,
                    h.__private__.clip_fixed = h.clip_fixed = function(t) {
                        console.log("clip_fixed is deprecated"),
                        h.clip(t)
                    }
                    ;
                    var Ut = h.__private__.isValidStyle = function(t) {
                        var e = !1;
                        return -1 !== [void 0, null, "S", "F", "DF", "FD", "f", "f*", "B", "B*"].indexOf(t) && (e = !0),
                        e
                    }
                      , Bt = h.__private__.getStyle = function(t) {
                        var e = "S";
                        return "F" === t ? e = "f" : "FD" === t || "DF" === t ? e = "B" : "f" !== t && "f*" !== t && "B" !== t && "B*" !== t || (e = t),
                        e
                    }
                    ;
                    h.__private__.line = h.line = function(t, e, n, i) {
                        if (isNaN(t) || isNaN(e) || isNaN(n) || isNaN(i))
                            throw new Error("Invalid arguments passed to jsPDF.line");
                        return this.lines([[n - t, i - e]], t, e)
                    }
                    ,
                    h.__private__.lines = h.lines = function(t, e, n, i, r, o) {
                        var a, s, c, l, u, d, p, h, f, m, g, v;
                        if ("number" == typeof t && (v = n,
                        n = e,
                        e = t,
                        t = v),
                        i = i || [1, 1],
                        o = o || !1,
                        isNaN(e) || isNaN(n) || !Array.isArray(t) || !Array.isArray(i) || !Ut(r) || "boolean" != typeof o)
                            throw new Error("Invalid arguments passed to jsPDF.lines");
                        for (B(w(Yt(e)) + " " + w(Kt(n)) + " m "),
                        a = i[0],
                        s = i[1],
                        l = t.length,
                        m = e,
                        g = n,
                        c = 0; c < l; c++)
                            2 === (u = t[c]).length ? (m = u[0] * a + m,
                            g = u[1] * s + g,
                            B(w(Yt(m)) + " " + w(Kt(g)) + " l")) : (d = u[0] * a + m,
                            p = u[1] * s + g,
                            h = u[2] * a + m,
                            f = u[3] * s + g,
                            m = u[4] * a + m,
                            g = u[5] * s + g,
                            B(w(Yt(d)) + " " + w(Kt(p)) + " " + w(Yt(h)) + " " + w(Kt(f)) + " " + w(Yt(m)) + " " + w(Kt(g)) + " c"));
                        return o && B(" h"),
                        null !== r && B(Bt(r)),
                        this
                    }
                    ,
                    h.__private__.rect = h.rect = function(t, e, n, i, r) {
                        if (isNaN(t) || isNaN(e) || isNaN(n) || isNaN(i) || !Ut(r))
                            throw new Error("Invalid arguments passed to jsPDF.rect");
                        return B([b(Yt(t)), b(Kt(e)), b(n * R), b(-i * R), "re"].join(" ")),
                        null !== r && B(Bt(r)),
                        this
                    }
                    ,
                    h.__private__.triangle = h.triangle = function(t, e, n, i, r, o, a) {
                        if (isNaN(t) || isNaN(e) || isNaN(n) || isNaN(i) || isNaN(r) || isNaN(o) || !Ut(a))
                            throw new Error("Invalid arguments passed to jsPDF.triangle");
                        return this.lines([[n - t, i - e], [r - n, o - i], [t - r, e - o]], t, e, [1, 1], a, !0),
                        this
                    }
                    ,
                    h.__private__.roundedRect = h.roundedRect = function(t, e, n, i, r, o, a) {
                        if (isNaN(t) || isNaN(e) || isNaN(n) || isNaN(i) || isNaN(r) || isNaN(o) || !Ut(a))
                            throw new Error("Invalid arguments passed to jsPDF.roundedRect");
                        var s = 4 / 3 * (Math.SQRT2 - 1);
                        return this.lines([[n - 2 * r, 0], [r * s, 0, r, o - o * s, r, o], [0, i - 2 * o], [0, o * s, -r * s, o, -r, o], [2 * r - n, 0], [-r * s, 0, -r, -o * s, -r, -o], [0, 2 * o - i], [0, -o * s, r * s, -o, r, -o]], t + r, e, [1, 1], a),
                        this
                    }
                    ,
                    h.__private__.ellipse = h.ellipse = function(t, e, n, i, r) {
                        if (isNaN(t) || isNaN(e) || isNaN(n) || isNaN(i) || !Ut(r))
                            throw new Error("Invalid arguments passed to jsPDF.ellipse");
                        var o = 4 / 3 * (Math.SQRT2 - 1) * n
                          , a = 4 / 3 * (Math.SQRT2 - 1) * i;
                        return B([b(Yt(t + n)), b(Kt(e)), "m", b(Yt(t + n)), b(Kt(e - a)), b(Yt(t + o)), b(Kt(e - i)), b(Yt(t)), b(Kt(e - i)), "c"].join(" ")),
                        B([b(Yt(t - o)), b(Kt(e - i)), b(Yt(t - n)), b(Kt(e - a)), b(Yt(t - n)), b(Kt(e)), "c"].join(" ")),
                        B([b(Yt(t - n)), b(Kt(e + a)), b(Yt(t - o)), b(Kt(e + i)), b(Yt(t)), b(Kt(e + i)), "c"].join(" ")),
                        B([b(Yt(t + o)), b(Kt(e + i)), b(Yt(t + n)), b(Kt(e + a)), b(Yt(t + n)), b(Kt(e)), "c"].join(" ")),
                        null !== r && B(Bt(r)),
                        this
                    }
                    ,
                    h.__private__.circle = h.circle = function(t, e, n, i) {
                        if (isNaN(t) || isNaN(e) || isNaN(n) || !Ut(i))
                            throw new Error("Invalid arguments passed to jsPDF.circle");
                        return this.ellipse(t, e, n, n, i)
                    }
                    ,
                    h.setFont = function(t, e) {
                        return D = At(t, e, {
                            disableWarning: !1
                        }),
                        this
                    }
                    ,
                    h.setFontStyle = h.setFontType = function(t) {
                        return D = At(void 0, t),
                        this
                    }
                    ,
                    h.__private__.getFontList = h.getFontList = function() {
                        var t, e, n, i = {};
                        for (t in et)
                            if (et.hasOwnProperty(t))
                                for (e in i[t] = n = [],
                                et[t])
                                    et[t].hasOwnProperty(e) && n.push(e);
                        return i
                    }
                    ,
                    h.addFont = function(t, e, n, i) {
                        wt.call(this, t, e, n, i = i || "Identity-H")
                    }
                    ;
                    var zt, Gt = c.lineWidth || .200025, Ht = h.__private__.setLineWidth = h.setLineWidth = function(t) {
                        return B((t * R).toFixed(2) + " w"),
                        this
                    }
                    , Wt = (h.__private__.setLineDash = s.API.setLineDash = function(t, e) {
                        if (t = t || [],
                        e = e || 0,
                        isNaN(e) || !Array.isArray(t))
                            throw new Error("Invalid arguments passed to jsPDF.setLineDash");
                        return t = t.map((function(t) {
                            return (t * R).toFixed(3)
                        }
                        )).join(" "),
                        e = parseFloat((e * R).toFixed(3)),
                        B("[" + t + "] " + e + " d"),
                        this
                    }
                    ,
                    h.__private__.getLineHeight = h.getLineHeight = function() {
                        return W * zt
                    }
                    ), qt = (Wt = h.__private__.getLineHeight = h.getLineHeight = function() {
                        return W * zt
                    }
                    ,
                    h.__private__.setLineHeightFactor = h.setLineHeightFactor = function(t) {
                        return "number" == typeof (t = t || 1.15) && (zt = t),
                        this
                    }
                    ), Xt = h.__private__.getLineHeightFactor = h.getLineHeightFactor = function() {
                        return zt
                    }
                    ;
                    qt(c.lineHeight);
                    var Yt = h.__private__.getHorizontalCoordinate = function(t) {
                        return t * R
                    }
                      , Kt = h.__private__.getVerticalCoordinate = function(t) {
                        return it[O].mediaBox.topRightY - it[O].mediaBox.bottomLeftY - t * R
                    }
                      , Zt = h.__private__.getHorizontalCoordinateString = function(t) {
                        return b(t * R)
                    }
                      , Jt = h.__private__.getVerticalCoordinateString = function(t) {
                        return b(it[O].mediaBox.topRightY - it[O].mediaBox.bottomLeftY - t * R)
                    }
                      , Qt = c.strokeColor || "0 G"
                      , $t = (h.__private__.getStrokeColor = h.getDrawColor = function() {
                        return ht(Qt)
                    }
                    ,
                    h.__private__.setStrokeColor = h.setDrawColor = function(t, e, n, i) {
                        return Qt = ft({
                            ch1: t,
                            ch2: e,
                            ch3: n,
                            ch4: i,
                            pdfColorType: "draw",
                            precision: 2
                        }),
                        B(Qt),
                        this
                    }
                    ,
                    c.fillColor || "0 g")
                      , te = (h.__private__.getFillColor = h.getFillColor = function() {
                        return ht($t)
                    }
                    ,
                    h.__private__.setFillColor = h.setFillColor = function(t, e, n, i) {
                        return $t = ft({
                            ch1: t,
                            ch2: e,
                            ch3: n,
                            ch4: i,
                            pdfColorType: "fill",
                            precision: 2
                        }),
                        B($t),
                        this
                    }
                    ,
                    c.textColor || "0 g")
                      , ee = h.__private__.getTextColor = h.getTextColor = function() {
                        return ht(te)
                    }
                      , ne = (h.__private__.setTextColor = h.setTextColor = function(t, e, n, i) {
                        return te = ft({
                            ch1: t,
                            ch2: e,
                            ch3: n,
                            ch4: i,
                            pdfColorType: "text",
                            precision: 3
                        }),
                        this
                    }
                    ,
                    c.charSpace || 0)
                      , ie = h.__private__.getCharSpace = h.getCharSpace = function() {
                        return ne
                    }
                      , re = (h.__private__.setCharSpace = h.setCharSpace = function(t) {
                        if (isNaN(t))
                            throw new Error("Invalid argument passed to jsPDF.setCharSpace");
                        return ne = t,
                        this
                    }
                    ,
                    0);
                    h.CapJoinStyles = {
                        0: 0,
                        butt: 0,
                        but: 0,
                        miter: 0,
                        1: 1,
                        round: 1,
                        rounded: 1,
                        circle: 1,
                        2: 2,
                        projecting: 2,
                        project: 2,
                        square: 2,
                        bevel: 2
                    },
                    h.__private__.setLineCap = h.setLineCap = function(t) {
                        var e = h.CapJoinStyles[t];
                        if (void 0 === e)
                            throw new Error("Line cap style of '" + t + "' is not recognized. See or extend .CapJoinStyles property for valid styles");
                        return B((re = e) + " J"),
                        this
                    }
                    ;
                    var oe, ae = 0;
                    for (var se in h.__private__.setLineJoin = h.setLineJoin = function(t) {
                        var e = h.CapJoinStyles[t];
                        if (void 0 === e)
                            throw new Error("Line join style of '" + t + "' is not recognized. See or extend .CapJoinStyles property for valid styles");
                        return B((ae = e) + " j"),
                        this
                    }
                    ,
                    h.__private__.setMiterLimit = h.setMiterLimit = function(t) {
                        if (t = t || 0,
                        isNaN(t))
                            throw new Error("Invalid argument passed to jsPDF.setMiterLimit");
                        return oe = parseFloat(b(t * R)),
                        B(oe + " M"),
                        this
                    }
                    ,
                    h.save = function(t, e) {
                        if (t = t || "generated.pdf",
                        (e = e || {}).returnPromise = e.returnPromise || !1,
                        !1 !== e.returnPromise)
                            return new Promise((function(e, n) {
                                try {
                                    var r = Pt(Rt(Dt()), t);
                                    "function" == typeof Pt.unload && i.setTimeout && setTimeout(Pt.unload, 911),
                                    e(r)
                                } catch (e) {
                                    n(e.message)
                                }
                            }
                            ));
                        Pt(Rt(Dt()), t),
                        "function" == typeof Pt.unload && i.setTimeout && setTimeout(Pt.unload, 911)
                    }
                    ,
                    s.API)
                        s.API.hasOwnProperty(se) && ("events" === se && s.API.events.length ? function(t, e) {
                            var n, i, r;
                            for (r = e.length - 1; -1 !== r; r--)
                                n = e[r][0],
                                i = e[r][1],
                                t.subscribe.apply(t, [n].concat("function" == typeof i ? [i] : i))
                        }(ot, s.API.events) : h[se] = s.API[se]);
                    return h.internal = {
                        pdfEscape: St,
                        getStyle: Bt,
                        getFont: function() {
                            return tt[At.apply(h, arguments)]
                        },
                        getFontSize: q,
                        getCharSpace: ie,
                        getTextColor: ee,
                        getLineHeight: Wt,
                        getLineHeightFactor: Xt,
                        write: z,
                        getHorizontalCoordinate: Yt,
                        getVerticalCoordinate: Kt,
                        getCoordinateString: Zt,
                        getVerticalCoordinateString: Jt,
                        collections: {},
                        newObject: st,
                        newAdditionalObject: ut,
                        newObjectDeferred: ct,
                        newObjectDeferredBegin: lt,
                        getFilters: mt,
                        putStream: gt,
                        events: ot,
                        scaleFactor: R,
                        pageSize: {
                            getWidth: function() {
                                return (it[O].mediaBox.topRightX - it[O].mediaBox.bottomLeftX) / R
                            },
                            setWidth: function(t) {
                                it[O].mediaBox.topRightX = t * R + it[O].mediaBox.bottomLeftX
                            },
                            getHeight: function() {
                                return (it[O].mediaBox.topRightY - it[O].mediaBox.bottomLeftY) / R
                            },
                            setHeight: function(t) {
                                it[O].mediaBox.topRightY = t * R + it[O].mediaBox.bottomLeftY
                            }
                        },
                        output: Lt,
                        getNumberOfPages: Ct,
                        pages: V,
                        out: B,
                        f2: b,
                        f3: w,
                        getPageInfo: jt,
                        getPageInfoByObjId: Vt,
                        getCurrentPageInfo: Ft,
                        getPDFVersion: m,
                        hasHotfix: Nt
                    },
                    Object.defineProperty(h.internal.pageSize, "width", {
                        get: function() {
                            return (it[O].mediaBox.topRightX - it[O].mediaBox.bottomLeftX) / R
                        },
                        set: function(t) {
                            it[O].mediaBox.topRightX = t * R + it[O].mediaBox.bottomLeftX
                        },
                        enumerable: !0,
                        configurable: !0
                    }),
                    Object.defineProperty(h.internal.pageSize, "height", {
                        get: function() {
                            return (it[O].mediaBox.topRightY - it[O].mediaBox.bottomLeftY) / R
                        },
                        set: function(t) {
                            it[O].mediaBox.topRightY = t * R + it[O].mediaBox.bottomLeftY
                        },
                        enumerable: !0,
                        configurable: !0
                    }),
                    function(t) {
                        for (var e = 0, n = H.length; e < n; e++) {
                            var i = wt(t[e][0], t[e][1], t[e][2], H[e][3], !0);
                            p[i] = !0;
                            var r = t[e][0].split("-");
                            bt(i, r[0], r[1] || "")
                        }
                        ot.publish("addFonts", {
                            fonts: tt,
                            dictionary: et
                        })
                    }(H),
                    D = "F1",
                    Mt(n, t),
                    ot.publish("initialized"),
                    h
                }
                return s.API = {
                    events: []
                },
                s.version = "1.5.3",
                void 0 !== (o = function() {
                    return s
                }
                .call(e, n, e, t)) && (t.exports = o),
                s
            }("undefined" != typeof self && self || "undefined" != typeof window && window || void 0 !== i && i || Function('return typeof this === "object" && this.content')() || Function("return this")());
            /**
   * @license
   * Copyright (c) 2016 Alexander Weidt,
   * https://github.com/BiggA94
   * 
   * Licensed under the MIT License. http://opensource.org/licenses/mit-license
   */
            (function(t, e) {
                var n, i = 1, o = function(t) {
                    return t.replace(/\\/g, "\\\\").replace(/\(/g, "\\(").replace(/\)/g, "\\)")
                }, a = function(t) {
                    return t.replace(/\\\\/g, "\\").replace(/\\\(/g, "(").replace(/\\\)/g, ")")
                }, s = function(t) {
                    if (isNaN(t))
                        throw new Error("Invalid argument passed to jsPDF.f2");
                    return t.toFixed(2)
                }, c = function(t) {
                    if (isNaN(t))
                        throw new Error("Invalid argument passed to jsPDF.f2");
                    return t.toFixed(5)
                };
                t.__acroform__ = {};
                var l = function(t, e) {
                    t.prototype = Object.create(e.prototype),
                    t.prototype.constructor = t
                }
                  , u = function(t) {
                    return t * i
                }
                  , d = function(t) {
                    return t / i
                }
                  , p = function(t) {
                    var e = new R
                      , n = Y.internal.getHeight(t) || 0
                      , i = Y.internal.getWidth(t) || 0;
                    return e.BBox = [0, 0, Number(s(i)), Number(s(n))],
                    e
                }
                  , h = t.__acroform__.setBit = function(t, e) {
                    if (t = t || 0,
                    e = e || 0,
                    isNaN(t) || isNaN(e))
                        throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.setBit");
                    return t | 1 << e
                }
                  , f = t.__acroform__.clearBit = function(t, e) {
                    if (t = t || 0,
                    e = e || 0,
                    isNaN(t) || isNaN(e))
                        throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.clearBit");
                    return t & ~(1 << e)
                }
                  , m = t.__acroform__.getBit = function(t, e) {
                    if (isNaN(t) || isNaN(e))
                        throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.getBit");
                    return 0 == (t & 1 << e) ? 0 : 1
                }
                  , g = t.__acroform__.getBitForPdf = function(t, e) {
                    if (isNaN(t) || isNaN(e))
                        throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.getBitForPdf");
                    return m(t, e - 1)
                }
                  , v = t.__acroform__.setBitForPdf = function(t, e) {
                    if (isNaN(t) || isNaN(e))
                        throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.setBitForPdf");
                    return h(t, e - 1)
                }
                  , y = t.__acroform__.clearBitForPdf = function(t, e, n) {
                    if (isNaN(t) || isNaN(e))
                        throw new Error("Invalid arguments passed to jsPDF.API.__acroform__.clearBitForPdf");
                    return f(t, e - 1)
                }
                  , b = t.__acroform__.calculateCoordinates = function(t) {
                    var e = this.internal.getHorizontalCoordinate
                      , n = this.internal.getVerticalCoordinate
                      , i = t[0]
                      , r = t[1]
                      , o = t[2]
                      , a = t[3]
                      , c = {};
                    return c.lowerLeft_X = e(i) || 0,
                    c.lowerLeft_Y = n(r + a) || 0,
                    c.upperRight_X = e(i + o) || 0,
                    c.upperRight_Y = n(r) || 0,
                    [Number(s(c.lowerLeft_X)), Number(s(c.lowerLeft_Y)), Number(s(c.upperRight_X)), Number(s(c.upperRight_Y))]
                }
                  , w = function(t) {
                    if (t.appearanceStreamContent)
                        return t.appearanceStreamContent;
                    if (t.V || t.DV) {
                        var e = []
                          , i = t.V || t.DV
                          , r = S(t, i)
                          , o = n.internal.getFont(t.fontName, t.fontStyle).id;
                        e.push("/Tx BMC"),
                        e.push("q"),
                        e.push("BT"),
                        e.push(n.__private__.encodeColorString(t.color)),
                        e.push("/" + o + " " + s(r.fontSize) + " Tf"),
                        e.push("1 0 0 1 0 0 Tm"),
                        e.push(r.text),
                        e.push("ET"),
                        e.push("Q"),
                        e.push("EMC");
                        var a = new p(t);
                        return a.stream = e.join("\n"),
                        a
                    }
                }
                  , S = function(t, e) {
                    var i = t.maxFontSize || 12
                      , r = (t.fontName,
                    {
                        text: "",
                        fontSize: ""
                    })
                      , a = (e = ")" == (e = "(" == e.substr(0, 1) ? e.substr(1) : e).substr(e.length - 1) ? e.substr(0, e.length - 1) : e).split(" ")
                      , c = (n.__private__.encodeColorString(t.color),
                    i)
                      , l = Y.internal.getHeight(t) || 0;
                    l = l < 0 ? -l : l;
                    var u = Y.internal.getWidth(t) || 0;
                    u = u < 0 ? -u : u;
                    var d = function(e, n, i) {
                        if (e + 1 < a.length) {
                            var r = n + " " + a[e + 1];
                            return x(r, t, i).width <= u - 4
                        }
                        return !1
                    };
                    c++;
                    t: for (; ; ) {
                        e = "";
                        var p = x("3", t, --c).height
                          , h = t.multiline ? l - c : (l - p) / 2
                          , f = -2
                          , m = h += 2
                          , g = 0
                          , v = 0
                          , y = 0;
                        if (c <= 0) {
                            e = "(...) Tj\n",
                            e += "% Width of Text: " + x(e, t, c = 12).width + ", FieldWidth:" + u + "\n";
                            break
                        }
                        y = x(a[0] + " ", t, c).width;
                        var b = ""
                          , w = 0;
                        for (var S in a)
                            if (a.hasOwnProperty(S)) {
                                b = " " == (b += a[S] + " ").substr(b.length - 1) ? b.substr(0, b.length - 1) : b;
                                var M = parseInt(S);
                                y = x(b + " ", t, c).width;
                                var E = d(M, b, c)
                                  , C = S >= a.length - 1;
                                if (E && !C) {
                                    b += " ";
                                    continue
                                }
                                if (E || C) {
                                    if (C)
                                        v = M;
                                    else if (t.multiline && l < (p + 2) * (w + 2) + 2)
                                        continue t
                                } else {
                                    if (!t.multiline)
                                        continue t;
                                    if (l < (p + 2) * (w + 2) + 2)
                                        continue t;
                                    v = M
                                }
                                for (var A = "", T = g; T <= v; T++)
                                    A += a[T] + " ";
                                switch (A = " " == A.substr(A.length - 1) ? A.substr(0, A.length - 1) : A,
                                y = x(A, t, c).width,
                                t.textAlign) {
                                case "right":
                                    f = u - y - 2;
                                    break;
                                case "center":
                                    f = (u - y) / 2;
                                    break;
                                case "left":
                                default:
                                    f = 2
                                }
                                e += s(f) + " " + s(m) + " Td\n",
                                e += "(" + o(A) + ") Tj\n",
                                e += -s(f) + " 0 Td\n",
                                m = -(c + 2),
                                y = 0,
                                g = v + 1,
                                w++,
                                b = ""
                            }
                        break
                    }
                    return r.text = e,
                    r.fontSize = c,
                    r
                }
                  , x = function(t, e, i) {
                    var r = n.internal.getFont(e.fontName, e.fontStyle)
                      , o = n.getStringUnitWidth(t, {
                        font: r,
                        fontSize: parseFloat(i),
                        charSpace: 0
                    }) * parseFloat(i);
                    return {
                        height: n.getStringUnitWidth("3", {
                            font: r,
                            fontSize: parseFloat(i),
                            charSpace: 0
                        }) * parseFloat(i) * 1.5,
                        width: o
                    }
                }
                  , M = {
                    fields: [],
                    xForms: [],
                    acroFormDictionaryRoot: null,
                    printedOut: !1,
                    internal: null,
                    isInitialized: !1
                }
                  , E = function() {
                    n.internal.acroformPlugin.acroFormDictionaryRoot.objId = void 0;
                    var t = n.internal.acroformPlugin.acroFormDictionaryRoot.Fields;
                    for (var e in t)
                        if (t.hasOwnProperty(e)) {
                            var i = t[e];
                            i.objId = void 0,
                            i.hasAnnotation && C.call(n, i)
                        }
                }
                  , C = function(t) {
                    var e = {
                        type: "reference",
                        object: t
                    };
                    void 0 === n.internal.getPageInfo(t.page).pageContext.annotations.find((function(t) {
                        return t.type === e.type && t.object === e.object
                    }
                    )) && n.internal.getPageInfo(t.page).pageContext.annotations.push(e)
                }
                  , A = function() {
                    if (void 0 === n.internal.acroformPlugin.acroFormDictionaryRoot)
                        throw new Error("putCatalogCallback: Root missing.");
                    n.internal.write("/AcroForm " + n.internal.acroformPlugin.acroFormDictionaryRoot.objId + " 0 R")
                }
                  , T = function() {
                    n.internal.events.unsubscribe(n.internal.acroformPlugin.acroFormDictionaryRoot._eventID),
                    delete n.internal.acroformPlugin.acroFormDictionaryRoot._eventID,
                    n.internal.acroformPlugin.printedOut = !0
                }
                  , O = function(t) {
                    var e = !t;
                    for (var i in t || (n.internal.newObjectDeferredBegin(n.internal.acroformPlugin.acroFormDictionaryRoot.objId, !0),
                    n.internal.acroformPlugin.acroFormDictionaryRoot.putStream()),
                    t = t || n.internal.acroformPlugin.acroFormDictionaryRoot.Kids)
                        if (t.hasOwnProperty(i)) {
                            var o = t[i]
                              , a = []
                              , s = o.Rect;
                            if (o.Rect && (o.Rect = b.call(this, o.Rect)),
                            n.internal.newObjectDeferredBegin(o.objId, !0),
                            o.DA = Y.createDefaultAppearanceStream(o),
                            "object" === r(o) && "function" == typeof o.getKeyValueListForStream && (a = o.getKeyValueListForStream()),
                            o.Rect = s,
                            o.hasAppearanceStream && !o.appearanceStreamContent) {
                                var c = w.call(this, o);
                                a.push({
                                    key: "AP",
                                    value: "<</N " + c + ">>"
                                }),
                                n.internal.acroformPlugin.xForms.push(c)
                            }
                            if (o.appearanceStreamContent) {
                                var l = "";
                                for (var u in o.appearanceStreamContent)
                                    if (o.appearanceStreamContent.hasOwnProperty(u)) {
                                        var d = o.appearanceStreamContent[u];
                                        if (l += "/" + u + " ",
                                        l += "<<",
                                        1 <= Object.keys(d).length || Array.isArray(d))
                                            for (var i in d) {
                                                var p;
                                                d.hasOwnProperty(i) && ("function" == typeof (p = d[i]) && (p = p.call(this, o)),
                                                l += "/" + i + " " + p + " ",
                                                0 <= n.internal.acroformPlugin.xForms.indexOf(p) || n.internal.acroformPlugin.xForms.push(p))
                                            }
                                        else
                                            "function" == typeof (p = d) && (p = p.call(this, o)),
                                            l += "/" + i + " " + p,
                                            0 <= n.internal.acroformPlugin.xForms.indexOf(p) || n.internal.acroformPlugin.xForms.push(p);
                                        l += ">>"
                                    }
                                a.push({
                                    key: "AP",
                                    value: "<<\n" + l + ">>"
                                })
                            }
                            n.internal.putStream({
                                additionalKeyValues: a
                            }),
                            n.internal.out("endobj")
                        }
                    e && _.call(this, n.internal.acroformPlugin.xForms)
                }
                  , _ = function(t) {
                    for (var e in t)
                        if (t.hasOwnProperty(e)) {
                            var i = e
                              , o = t[e];
                            n.internal.newObjectDeferredBegin(o && o.objId, !0),
                            "object" === r(o) && "function" == typeof o.putStream && o.putStream(),
                            delete t[i]
                        }
                }
                  , P = function() {
                    if (void 0 !== this.internal && (void 0 === this.internal.acroformPlugin || !1 === this.internal.acroformPlugin.isInitialized)) {
                        if (n = this,
                        N.FieldNum = 0,
                        this.internal.acroformPlugin = JSON.parse(JSON.stringify(M)),
                        this.internal.acroformPlugin.acroFormDictionaryRoot)
                            throw new Error("Exception while creating AcroformDictionary");
                        i = n.internal.scaleFactor,
                        n.internal.acroformPlugin.acroFormDictionaryRoot = new L,
                        n.internal.acroformPlugin.acroFormDictionaryRoot._eventID = n.internal.events.subscribe("postPutResources", T),
                        n.internal.events.subscribe("buildDocument", E),
                        n.internal.events.subscribe("putCatalog", A),
                        n.internal.events.subscribe("postPutPages", O),
                        n.internal.acroformPlugin.isInitialized = !0
                    }
                }
                  , I = t.__acroform__.arrayToPdfArray = function(t) {
                    if (Array.isArray(t)) {
                        for (var e = "[", n = 0; n < t.length; n++)
                            switch (0 !== n && (e += " "),
                            r(t[n])) {
                            case "boolean":
                            case "number":
                            case "object":
                                e += t[n].toString();
                                break;
                            case "string":
                                "/" !== t[n].substr(0, 1) ? e += "(" + o(t[n].toString()) + ")" : e += t[n].toString()
                            }
                        return e + "]"
                    }
                    throw new Error("Invalid argument passed to jsPDF.__acroform__.arrayToPdfArray")
                }
                  , k = function(t) {
                    return (t = t || "").toString(),
                    "(" + o(t) + ")"
                }
                  , D = function() {
                    var t;
                    Object.defineProperty(this, "objId", {
                        configurable: !0,
                        get: function() {
                            if (t || (t = n.internal.newObjectDeferred()),
                            !t)
                                throw new Error("AcroFormPDFObject: Couldn't create Object ID");
                            return t
                        },
                        set: function(e) {
                            t = e
                        }
                    })
                };
                D.prototype.toString = function() {
                    return this.objId + " 0 R"
                }
                ,
                D.prototype.putStream = function() {
                    var t = this.getKeyValueListForStream();
                    n.internal.putStream({
                        data: this.stream,
                        additionalKeyValues: t
                    }),
                    n.internal.out("endobj")
                }
                ,
                D.prototype.getKeyValueListForStream = function() {
                    return function(t) {
                        var e = []
                          , n = Object.getOwnPropertyNames(t).filter((function(t) {
                            return "content" != t && "appearanceStreamContent" != t && "_" != t.substring(0, 1)
                        }
                        ));
                        for (var i in n)
                            if (!1 === Object.getOwnPropertyDescriptor(t, n[i]).configurable) {
                                var r = n[i]
                                  , o = t[r];
                                o && (Array.isArray(o) ? e.push({
                                    key: r,
                                    value: I(o)
                                }) : o instanceof D ? e.push({
                                    key: r,
                                    value: o.objId + " 0 R"
                                }) : "function" != typeof o && e.push({
                                    key: r,
                                    value: o
                                }))
                            }
                        return e
                    }(this)
                }
                ;
                var R = function() {
                    D.call(this),
                    Object.defineProperty(this, "Type", {
                        value: "/XObject",
                        configurable: !1,
                        writeable: !0
                    }),
                    Object.defineProperty(this, "Subtype", {
                        value: "/Form",
                        configurable: !1,
                        writeable: !0
                    }),
                    Object.defineProperty(this, "FormType", {
                        value: 1,
                        configurable: !1,
                        writeable: !0
                    });
                    var t, e = [];
                    Object.defineProperty(this, "BBox", {
                        configurable: !1,
                        writeable: !0,
                        get: function() {
                            return e
                        },
                        set: function(t) {
                            e = t
                        }
                    }),
                    Object.defineProperty(this, "Resources", {
                        value: "2 0 R",
                        configurable: !1,
                        writeable: !0
                    }),
                    Object.defineProperty(this, "stream", {
                        enumerable: !1,
                        configurable: !0,
                        set: function(e) {
                            t = e.trim()
                        },
                        get: function() {
                            return t || null
                        }
                    })
                };
                l(R, D);
                var L = function() {
                    D.call(this);
                    var t, e = [];
                    Object.defineProperty(this, "Kids", {
                        enumerable: !1,
                        configurable: !0,
                        get: function() {
                            return 0 < e.length ? e : void 0
                        }
                    }),
                    Object.defineProperty(this, "Fields", {
                        enumerable: !1,
                        configurable: !1,
                        get: function() {
                            return e
                        }
                    }),
                    Object.defineProperty(this, "DA", {
                        enumerable: !1,
                        configurable: !1,
                        get: function() {
                            if (t)
                                return "(" + t + ")"
                        },
                        set: function(e) {
                            t = e
                        }
                    })
                };
                l(L, D);
                var N = function t() {
                    D.call(this);
                    var e = 4;
                    Object.defineProperty(this, "F", {
                        enumerable: !1,
                        configurable: !1,
                        get: function() {
                            return e
                        },
                        set: function(t) {
                            if (isNaN(t))
                                throw new Error('Invalid value "' + t + '" for attribute F supplied.');
                            e = t
                        }
                    }),
                    Object.defineProperty(this, "showWhenPrinted", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return Boolean(g(e, 3))
                        },
                        set: function(t) {
                            !0 === Boolean(t) ? this.F = v(e, 3) : this.F = y(e, 3)
                        }
                    });
                    var n = 0;
                    Object.defineProperty(this, "Ff", {
                        enumerable: !1,
                        configurable: !1,
                        get: function() {
                            return n
                        },
                        set: function(t) {
                            if (isNaN(t))
                                throw new Error('Invalid value "' + t + '" for attribute Ff supplied.');
                            n = t
                        }
                    });
                    var i = [];
                    Object.defineProperty(this, "Rect", {
                        enumerable: !1,
                        configurable: !1,
                        get: function() {
                            if (0 !== i.length)
                                return i
                        },
                        set: function(t) {
                            i = void 0 !== t ? t : []
                        }
                    }),
                    Object.defineProperty(this, "x", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return !i || isNaN(i[0]) ? 0 : d(i[0])
                        },
                        set: function(t) {
                            i[0] = u(t)
                        }
                    }),
                    Object.defineProperty(this, "y", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return !i || isNaN(i[1]) ? 0 : d(i[1])
                        },
                        set: function(t) {
                            i[1] = u(t)
                        }
                    }),
                    Object.defineProperty(this, "width", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return !i || isNaN(i[2]) ? 0 : d(i[2])
                        },
                        set: function(t) {
                            i[2] = u(t)
                        }
                    }),
                    Object.defineProperty(this, "height", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return !i || isNaN(i[3]) ? 0 : d(i[3])
                        },
                        set: function(t) {
                            i[3] = u(t)
                        }
                    });
                    var r = "";
                    Object.defineProperty(this, "FT", {
                        enumerable: !0,
                        configurable: !1,
                        get: function() {
                            return r
                        },
                        set: function(t) {
                            switch (t) {
                            case "/Btn":
                            case "/Tx":
                            case "/Ch":
                            case "/Sig":
                                r = t;
                                break;
                            default:
                                throw new Error('Invalid value "' + t + '" for attribute FT supplied.')
                            }
                        }
                    });
                    var s = null;
                    Object.defineProperty(this, "T", {
                        enumerable: !0,
                        configurable: !1,
                        get: function() {
                            if (!s || s.length < 1) {
                                if (this instanceof H)
                                    return;
                                s = "FieldObject" + t.FieldNum++
                            }
                            return "(" + o(s) + ")"
                        },
                        set: function(t) {
                            s = t.toString()
                        }
                    }),
                    Object.defineProperty(this, "fieldName", {
                        configurable: !0,
                        enumerable: !0,
                        get: function() {
                            return s
                        },
                        set: function(t) {
                            s = t
                        }
                    });
                    var c = "helvetica";
                    Object.defineProperty(this, "fontName", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return c
                        },
                        set: function(t) {
                            c = t
                        }
                    });
                    var l = "normal";
                    Object.defineProperty(this, "fontStyle", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return l
                        },
                        set: function(t) {
                            l = t
                        }
                    });
                    var p = 0;
                    Object.defineProperty(this, "fontSize", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return d(p)
                        },
                        set: function(t) {
                            p = u(t)
                        }
                    });
                    var h = 50;
                    Object.defineProperty(this, "maxFontSize", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return d(h)
                        },
                        set: function(t) {
                            h = u(t)
                        }
                    });
                    var f = "black";
                    Object.defineProperty(this, "color", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return f
                        },
                        set: function(t) {
                            f = t
                        }
                    });
                    var m = "/F1 0 Tf 0 g";
                    Object.defineProperty(this, "DA", {
                        enumerable: !0,
                        configurable: !1,
                        get: function() {
                            if (!(!m || this instanceof H || this instanceof q))
                                return k(m)
                        },
                        set: function(t) {
                            t = t.toString(),
                            m = t
                        }
                    });
                    var b = null;
                    Object.defineProperty(this, "DV", {
                        enumerable: !1,
                        configurable: !1,
                        get: function() {
                            if (b)
                                return this instanceof B == 0 ? k(b) : b
                        },
                        set: function(t) {
                            t = t.toString(),
                            b = this instanceof B == 0 ? "(" === t.substr(0, 1) ? a(t.substr(1, t.length - 2)) : a(t) : t
                        }
                    }),
                    Object.defineProperty(this, "defaultValue", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return this instanceof B == 1 ? a(b.substr(1, b.length - 1)) : b
                        },
                        set: function(t) {
                            t = t.toString(),
                            b = this instanceof B == 1 ? "/" + t : t
                        }
                    });
                    var w = null;
                    Object.defineProperty(this, "V", {
                        enumerable: !1,
                        configurable: !1,
                        get: function() {
                            if (w)
                                return this instanceof B == 0 ? k(w) : w
                        },
                        set: function(t) {
                            t = t.toString(),
                            w = this instanceof B == 0 ? "(" === t.substr(0, 1) ? a(t.substr(1, t.length - 2)) : a(t) : t
                        }
                    }),
                    Object.defineProperty(this, "value", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return this instanceof B == 1 ? a(w.substr(1, w.length - 1)) : w
                        },
                        set: function(t) {
                            t = t.toString(),
                            w = this instanceof B == 1 ? "/" + t : t
                        }
                    }),
                    Object.defineProperty(this, "hasAnnotation", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return this.Rect
                        }
                    }),
                    Object.defineProperty(this, "Type", {
                        enumerable: !0,
                        configurable: !1,
                        get: function() {
                            return this.hasAnnotation ? "/Annot" : null
                        }
                    }),
                    Object.defineProperty(this, "Subtype", {
                        enumerable: !0,
                        configurable: !1,
                        get: function() {
                            return this.hasAnnotation ? "/Widget" : null
                        }
                    });
                    var S, x = !1;
                    Object.defineProperty(this, "hasAppearanceStream", {
                        enumerable: !0,
                        configurable: !0,
                        writeable: !0,
                        get: function() {
                            return x
                        },
                        set: function(t) {
                            t = Boolean(t),
                            x = t
                        }
                    }),
                    Object.defineProperty(this, "page", {
                        enumerable: !0,
                        configurable: !0,
                        writeable: !0,
                        get: function() {
                            if (S)
                                return S
                        },
                        set: function(t) {
                            S = t
                        }
                    }),
                    Object.defineProperty(this, "readOnly", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return Boolean(g(this.Ff, 1))
                        },
                        set: function(t) {
                            !0 === Boolean(t) ? this.Ff = v(this.Ff, 1) : this.Ff = y(this.Ff, 1)
                        }
                    }),
                    Object.defineProperty(this, "required", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return Boolean(g(this.Ff, 2))
                        },
                        set: function(t) {
                            !0 === Boolean(t) ? this.Ff = v(this.Ff, 2) : this.Ff = y(this.Ff, 2)
                        }
                    }),
                    Object.defineProperty(this, "noExport", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return Boolean(g(this.Ff, 3))
                        },
                        set: function(t) {
                            !0 === Boolean(t) ? this.Ff = v(this.Ff, 3) : this.Ff = y(this.Ff, 3)
                        }
                    });
                    var M = null;
                    Object.defineProperty(this, "Q", {
                        enumerable: !0,
                        configurable: !1,
                        get: function() {
                            if (null !== M)
                                return M
                        },
                        set: function(t) {
                            if (-1 === [0, 1, 2].indexOf(t))
                                throw new Error('Invalid value "' + t + '" for attribute Q supplied.');
                            M = t
                        }
                    }),
                    Object.defineProperty(this, "textAlign", {
                        get: function() {
                            var t = "left";
                            switch (M) {
                            case 0:
                            default:
                                t = "left";
                                break;
                            case 1:
                                t = "center";
                                break;
                            case 2:
                                t = "right"
                            }
                            return t
                        },
                        configurable: !0,
                        enumerable: !0,
                        set: function(t) {
                            switch (t) {
                            case "right":
                            case 2:
                                M = 2;
                                break;
                            case "center":
                            case 1:
                                M = 1;
                                break;
                            case "left":
                            case 0:
                            default:
                                M = 0
                            }
                        }
                    })
                };
                l(N, D);
                var j = function() {
                    N.call(this),
                    this.FT = "/Ch",
                    this.V = "()",
                    this.fontName = "zapfdingbats";
                    var t = 0;
                    Object.defineProperty(this, "TI", {
                        enumerable: !0,
                        configurable: !1,
                        get: function() {
                            return t
                        },
                        set: function(e) {
                            t = e
                        }
                    }),
                    Object.defineProperty(this, "topIndex", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return t
                        },
                        set: function(e) {
                            t = e
                        }
                    });
                    var e = [];
                    Object.defineProperty(this, "Opt", {
                        enumerable: !0,
                        configurable: !1,
                        get: function() {
                            return I(e)
                        },
                        set: function(t) {
                            var n, i;
                            i = [],
                            "string" == typeof (n = t) && (i = function(t, e, n) {
                                n || (n = 1);
                                for (var i, r = []; i = e.exec(t); )
                                    r.push(i[n]);
                                return r
                            }(n, /\((.*?)\)/g)),
                            e = i
                        }
                    }),
                    this.getOptions = function() {
                        return e
                    }
                    ,
                    this.setOptions = function(t) {
                        e = t,
                        this.sort && e.sort()
                    }
                    ,
                    this.addOption = function(t) {
                        t = (t = t || "").toString(),
                        e.push(t),
                        this.sort && e.sort()
                    }
                    ,
                    this.removeOption = function(t, n) {
                        for (n = n || !1,
                        t = (t = t || "").toString(); -1 !== e.indexOf(t) && (e.splice(e.indexOf(t), 1),
                        !1 !== n); )
                            ;
                    }
                    ,
                    Object.defineProperty(this, "combo", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return Boolean(g(this.Ff, 18))
                        },
                        set: function(t) {
                            !0 === Boolean(t) ? this.Ff = v(this.Ff, 18) : this.Ff = y(this.Ff, 18)
                        }
                    }),
                    Object.defineProperty(this, "edit", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return Boolean(g(this.Ff, 19))
                        },
                        set: function(t) {
                            !0 === this.combo && (!0 === Boolean(t) ? this.Ff = v(this.Ff, 19) : this.Ff = y(this.Ff, 19))
                        }
                    }),
                    Object.defineProperty(this, "sort", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return Boolean(g(this.Ff, 20))
                        },
                        set: function(t) {
                            !0 === Boolean(t) ? (this.Ff = v(this.Ff, 20),
                            e.sort()) : this.Ff = y(this.Ff, 20)
                        }
                    }),
                    Object.defineProperty(this, "multiSelect", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return Boolean(g(this.Ff, 22))
                        },
                        set: function(t) {
                            !0 === Boolean(t) ? this.Ff = v(this.Ff, 22) : this.Ff = y(this.Ff, 22)
                        }
                    }),
                    Object.defineProperty(this, "doNotSpellCheck", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return Boolean(g(this.Ff, 23))
                        },
                        set: function(t) {
                            !0 === Boolean(t) ? this.Ff = v(this.Ff, 23) : this.Ff = y(this.Ff, 23)
                        }
                    }),
                    Object.defineProperty(this, "commitOnSelChange", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return Boolean(g(this.Ff, 27))
                        },
                        set: function(t) {
                            !0 === Boolean(t) ? this.Ff = v(this.Ff, 27) : this.Ff = y(this.Ff, 27)
                        }
                    }),
                    this.hasAppearanceStream = !1
                };
                l(j, N);
                var V = function() {
                    j.call(this),
                    this.fontName = "helvetica",
                    this.combo = !1
                };
                l(V, j);
                var F = function() {
                    V.call(this),
                    this.combo = !0
                };
                l(F, V);
                var U = function() {
                    F.call(this),
                    this.edit = !0
                };
                l(U, F);
                var B = function() {
                    N.call(this),
                    this.FT = "/Btn",
                    Object.defineProperty(this, "noToggleToOff", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return Boolean(g(this.Ff, 15))
                        },
                        set: function(t) {
                            !0 === Boolean(t) ? this.Ff = v(this.Ff, 15) : this.Ff = y(this.Ff, 15)
                        }
                    }),
                    Object.defineProperty(this, "radio", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return Boolean(g(this.Ff, 16))
                        },
                        set: function(t) {
                            !0 === Boolean(t) ? this.Ff = v(this.Ff, 16) : this.Ff = y(this.Ff, 16)
                        }
                    }),
                    Object.defineProperty(this, "pushButton", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return Boolean(g(this.Ff, 17))
                        },
                        set: function(t) {
                            !0 === Boolean(t) ? this.Ff = v(this.Ff, 17) : this.Ff = y(this.Ff, 17)
                        }
                    }),
                    Object.defineProperty(this, "radioIsUnison", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return Boolean(g(this.Ff, 26))
                        },
                        set: function(t) {
                            !0 === Boolean(t) ? this.Ff = v(this.Ff, 26) : this.Ff = y(this.Ff, 26)
                        }
                    });
                    var t, e = {};
                    Object.defineProperty(this, "MK", {
                        enumerable: !1,
                        configurable: !1,
                        get: function() {
                            if (0 !== Object.keys(e).length) {
                                var t, n = [];
                                for (t in n.push("<<"),
                                e)
                                    n.push("/" + t + " (" + e[t] + ")");
                                return n.push(">>"),
                                n.join("\n")
                            }
                        },
                        set: function(t) {
                            "object" === r(t) && (e = t)
                        }
                    }),
                    Object.defineProperty(this, "caption", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return e.CA || ""
                        },
                        set: function(t) {
                            "string" == typeof t && (e.CA = t)
                        }
                    }),
                    Object.defineProperty(this, "AS", {
                        enumerable: !1,
                        configurable: !1,
                        get: function() {
                            return t
                        },
                        set: function(e) {
                            t = e
                        }
                    }),
                    Object.defineProperty(this, "appearanceState", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return t.substr(1, t.length - 1)
                        },
                        set: function(e) {
                            t = "/" + e
                        }
                    })
                };
                l(B, N);
                var z = function() {
                    B.call(this),
                    this.pushButton = !0
                };
                l(z, B);
                var G = function() {
                    B.call(this),
                    this.radio = !0,
                    this.pushButton = !1;
                    var t = [];
                    Object.defineProperty(this, "Kids", {
                        enumerable: !0,
                        configurable: !1,
                        get: function() {
                            return t
                        },
                        set: function(e) {
                            t = void 0 !== e ? e : []
                        }
                    })
                };
                l(G, B);
                var H = function() {
                    var t, e;
                    N.call(this),
                    Object.defineProperty(this, "Parent", {
                        enumerable: !1,
                        configurable: !1,
                        get: function() {
                            return t
                        },
                        set: function(e) {
                            t = e
                        }
                    }),
                    Object.defineProperty(this, "optionName", {
                        enumerable: !1,
                        configurable: !0,
                        get: function() {
                            return e
                        },
                        set: function(t) {
                            e = t
                        }
                    });
                    var n, i = {};
                    Object.defineProperty(this, "MK", {
                        enumerable: !1,
                        configurable: !1,
                        get: function() {
                            var t, e = [];
                            for (t in e.push("<<"),
                            i)
                                e.push("/" + t + " (" + i[t] + ")");
                            return e.push(">>"),
                            e.join("\n")
                        },
                        set: function(t) {
                            "object" === r(t) && (i = t)
                        }
                    }),
                    Object.defineProperty(this, "caption", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return i.CA || ""
                        },
                        set: function(t) {
                            "string" == typeof t && (i.CA = t)
                        }
                    }),
                    Object.defineProperty(this, "AS", {
                        enumerable: !1,
                        configurable: !1,
                        get: function() {
                            return n
                        },
                        set: function(t) {
                            n = t
                        }
                    }),
                    Object.defineProperty(this, "appearanceState", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return n.substr(1, n.length - 1)
                        },
                        set: function(t) {
                            n = "/" + t
                        }
                    }),
                    this.optionName = name,
                    this.caption = "l",
                    this.appearanceState = "Off",
                    this._AppearanceType = Y.RadioButton.Circle,
                    this.appearanceStreamContent = this._AppearanceType.createAppearanceStream(name)
                };
                l(H, N),
                G.prototype.setAppearance = function(t) {
                    if (!("createAppearanceStream"in t) || !("getCA"in t))
                        throw new Error("Couldn't assign Appearance to RadioButton. Appearance was Invalid!");
                    for (var e in this.Kids)
                        if (this.Kids.hasOwnProperty(e)) {
                            var n = this.Kids[e];
                            n.appearanceStreamContent = t.createAppearanceStream(n.optionName),
                            n.caption = t.getCA()
                        }
                }
                ,
                G.prototype.createOption = function(t) {
                    this.Kids.length;
                    var e = new H;
                    return e.Parent = this,
                    e.optionName = t,
                    this.Kids.push(e),
                    K.call(this, e),
                    e
                }
                ;
                var W = function() {
                    B.call(this),
                    this.fontName = "zapfdingbats",
                    this.caption = "3",
                    this.appearanceState = "On",
                    this.value = "On",
                    this.textAlign = "center",
                    this.appearanceStreamContent = Y.CheckBox.createAppearanceStream()
                };
                l(W, B);
                var q = function() {
                    N.call(this),
                    this.FT = "/Tx",
                    Object.defineProperty(this, "multiline", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return Boolean(g(this.Ff, 13))
                        },
                        set: function(t) {
                            !0 === Boolean(t) ? this.Ff = v(this.Ff, 13) : this.Ff = y(this.Ff, 13)
                        }
                    }),
                    Object.defineProperty(this, "fileSelect", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return Boolean(g(this.Ff, 21))
                        },
                        set: function(t) {
                            !0 === Boolean(t) ? this.Ff = v(this.Ff, 21) : this.Ff = y(this.Ff, 21)
                        }
                    }),
                    Object.defineProperty(this, "doNotSpellCheck", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return Boolean(g(this.Ff, 23))
                        },
                        set: function(t) {
                            !0 === Boolean(t) ? this.Ff = v(this.Ff, 23) : this.Ff = y(this.Ff, 23)
                        }
                    }),
                    Object.defineProperty(this, "doNotScroll", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return Boolean(g(this.Ff, 24))
                        },
                        set: function(t) {
                            !0 === Boolean(t) ? this.Ff = v(this.Ff, 24) : this.Ff = y(this.Ff, 24)
                        }
                    }),
                    Object.defineProperty(this, "comb", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return Boolean(g(this.Ff, 25))
                        },
                        set: function(t) {
                            !0 === Boolean(t) ? this.Ff = v(this.Ff, 25) : this.Ff = y(this.Ff, 25)
                        }
                    }),
                    Object.defineProperty(this, "richText", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return Boolean(g(this.Ff, 26))
                        },
                        set: function(t) {
                            !0 === Boolean(t) ? this.Ff = v(this.Ff, 26) : this.Ff = y(this.Ff, 26)
                        }
                    });
                    var t = null;
                    Object.defineProperty(this, "MaxLen", {
                        enumerable: !0,
                        configurable: !1,
                        get: function() {
                            return t
                        },
                        set: function(e) {
                            t = e
                        }
                    }),
                    Object.defineProperty(this, "maxLength", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return t
                        },
                        set: function(e) {
                            Number.isInteger(e) && (t = e)
                        }
                    }),
                    Object.defineProperty(this, "hasAppearanceStream", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return this.V || this.DV
                        }
                    })
                };
                l(q, N);
                var X = function() {
                    q.call(this),
                    Object.defineProperty(this, "password", {
                        enumerable: !0,
                        configurable: !0,
                        get: function() {
                            return Boolean(g(this.Ff, 14))
                        },
                        set: function(t) {
                            !0 === Boolean(t) ? this.Ff = v(this.Ff, 14) : this.Ff = y(this.Ff, 14)
                        }
                    }),
                    this.password = !0
                };
                l(X, q);
                var Y = {
                    CheckBox: {
                        createAppearanceStream: function() {
                            return {
                                N: {
                                    On: Y.CheckBox.YesNormal
                                },
                                D: {
                                    On: Y.CheckBox.YesPushDown,
                                    Off: Y.CheckBox.OffPushDown
                                }
                            }
                        },
                        YesPushDown: function(t) {
                            var e = p(t)
                              , i = []
                              , r = n.internal.getFont(t.fontName, t.fontStyle).id
                              , o = n.__private__.encodeColorString(t.color)
                              , a = S(t, t.caption);
                            return i.push("0.749023 g"),
                            i.push("0 0 " + s(Y.internal.getWidth(t)) + " " + s(Y.internal.getHeight(t)) + " re"),
                            i.push("f"),
                            i.push("BMC"),
                            i.push("q"),
                            i.push("0 0 1 rg"),
                            i.push("/" + r + " " + s(a.fontSize) + " Tf " + o),
                            i.push("BT"),
                            i.push(a.text),
                            i.push("ET"),
                            i.push("Q"),
                            i.push("EMC"),
                            e.stream = i.join("\n"),
                            e
                        },
                        YesNormal: function(t) {
                            var e = p(t)
                              , i = n.internal.getFont(t.fontName, t.fontStyle).id
                              , r = n.__private__.encodeColorString(t.color)
                              , o = []
                              , a = Y.internal.getHeight(t)
                              , c = Y.internal.getWidth(t)
                              , l = S(t, t.caption);
                            return o.push("1 g"),
                            o.push("0 0 " + s(c) + " " + s(a) + " re"),
                            o.push("f"),
                            o.push("q"),
                            o.push("0 0 1 rg"),
                            o.push("0 0 " + s(c - 1) + " " + s(a - 1) + " re"),
                            o.push("W"),
                            o.push("n"),
                            o.push("0 g"),
                            o.push("BT"),
                            o.push("/" + i + " " + s(l.fontSize) + " Tf " + r),
                            o.push(l.text),
                            o.push("ET"),
                            o.push("Q"),
                            e.stream = o.join("\n"),
                            e
                        },
                        OffPushDown: function(t) {
                            var e = p(t)
                              , n = [];
                            return n.push("0.749023 g"),
                            n.push("0 0 " + s(Y.internal.getWidth(t)) + " " + s(Y.internal.getHeight(t)) + " re"),
                            n.push("f"),
                            e.stream = n.join("\n"),
                            e
                        }
                    },
                    RadioButton: {
                        Circle: {
                            createAppearanceStream: function(t) {
                                var e = {
                                    D: {
                                        Off: Y.RadioButton.Circle.OffPushDown
                                    },
                                    N: {}
                                };
                                return e.N[t] = Y.RadioButton.Circle.YesNormal,
                                e.D[t] = Y.RadioButton.Circle.YesPushDown,
                                e
                            },
                            getCA: function() {
                                return "l"
                            },
                            YesNormal: function(t) {
                                var e = p(t)
                                  , n = []
                                  , i = Y.internal.getWidth(t) <= Y.internal.getHeight(t) ? Y.internal.getWidth(t) / 4 : Y.internal.getHeight(t) / 4;
                                i = Number((.9 * i).toFixed(5));
                                var r = Y.internal.Bezier_C
                                  , o = Number((i * r).toFixed(5));
                                return n.push("q"),
                                n.push("1 0 0 1 " + c(Y.internal.getWidth(t) / 2) + " " + c(Y.internal.getHeight(t) / 2) + " cm"),
                                n.push(i + " 0 m"),
                                n.push(i + " " + o + " " + o + " " + i + " 0 " + i + " c"),
                                n.push("-" + o + " " + i + " -" + i + " " + o + " -" + i + " 0 c"),
                                n.push("-" + i + " -" + o + " -" + o + " -" + i + " 0 -" + i + " c"),
                                n.push(o + " -" + i + " " + i + " -" + o + " " + i + " 0 c"),
                                n.push("f"),
                                n.push("Q"),
                                e.stream = n.join("\n"),
                                e
                            },
                            YesPushDown: function(t) {
                                var e = p(t)
                                  , n = []
                                  , i = Y.internal.getWidth(t) <= Y.internal.getHeight(t) ? Y.internal.getWidth(t) / 4 : Y.internal.getHeight(t) / 4
                                  , r = (i = Number((.9 * i).toFixed(5)),
                                Number((2 * i).toFixed(5)))
                                  , o = Number((r * Y.internal.Bezier_C).toFixed(5))
                                  , a = Number((i * Y.internal.Bezier_C).toFixed(5));
                                return n.push("0.749023 g"),
                                n.push("q"),
                                n.push("1 0 0 1 " + c(Y.internal.getWidth(t) / 2) + " " + c(Y.internal.getHeight(t) / 2) + " cm"),
                                n.push(r + " 0 m"),
                                n.push(r + " " + o + " " + o + " " + r + " 0 " + r + " c"),
                                n.push("-" + o + " " + r + " -" + r + " " + o + " -" + r + " 0 c"),
                                n.push("-" + r + " -" + o + " -" + o + " -" + r + " 0 -" + r + " c"),
                                n.push(o + " -" + r + " " + r + " -" + o + " " + r + " 0 c"),
                                n.push("f"),
                                n.push("Q"),
                                n.push("0 g"),
                                n.push("q"),
                                n.push("1 0 0 1 " + c(Y.internal.getWidth(t) / 2) + " " + c(Y.internal.getHeight(t) / 2) + " cm"),
                                n.push(i + " 0 m"),
                                n.push(i + " " + a + " " + a + " " + i + " 0 " + i + " c"),
                                n.push("-" + a + " " + i + " -" + i + " " + a + " -" + i + " 0 c"),
                                n.push("-" + i + " -" + a + " -" + a + " -" + i + " 0 -" + i + " c"),
                                n.push(a + " -" + i + " " + i + " -" + a + " " + i + " 0 c"),
                                n.push("f"),
                                n.push("Q"),
                                e.stream = n.join("\n"),
                                e
                            },
                            OffPushDown: function(t) {
                                var e = p(t)
                                  , n = []
                                  , i = Y.internal.getWidth(t) <= Y.internal.getHeight(t) ? Y.internal.getWidth(t) / 4 : Y.internal.getHeight(t) / 4
                                  , r = (i = Number((.9 * i).toFixed(5)),
                                Number((2 * i).toFixed(5)))
                                  , o = Number((r * Y.internal.Bezier_C).toFixed(5));
                                return n.push("0.749023 g"),
                                n.push("q"),
                                n.push("1 0 0 1 " + c(Y.internal.getWidth(t) / 2) + " " + c(Y.internal.getHeight(t) / 2) + " cm"),
                                n.push(r + " 0 m"),
                                n.push(r + " " + o + " " + o + " " + r + " 0 " + r + " c"),
                                n.push("-" + o + " " + r + " -" + r + " " + o + " -" + r + " 0 c"),
                                n.push("-" + r + " -" + o + " -" + o + " -" + r + " 0 -" + r + " c"),
                                n.push(o + " -" + r + " " + r + " -" + o + " " + r + " 0 c"),
                                n.push("f"),
                                n.push("Q"),
                                e.stream = n.join("\n"),
                                e
                            }
                        },
                        Cross: {
                            createAppearanceStream: function(t) {
                                var e = {
                                    D: {
                                        Off: Y.RadioButton.Cross.OffPushDown
                                    },
                                    N: {}
                                };
                                return e.N[t] = Y.RadioButton.Cross.YesNormal,
                                e.D[t] = Y.RadioButton.Cross.YesPushDown,
                                e
                            },
                            getCA: function() {
                                return "8"
                            },
                            YesNormal: function(t) {
                                var e = p(t)
                                  , n = []
                                  , i = Y.internal.calculateCross(t);
                                return n.push("q"),
                                n.push("1 1 " + s(Y.internal.getWidth(t) - 2) + " " + s(Y.internal.getHeight(t) - 2) + " re"),
                                n.push("W"),
                                n.push("n"),
                                n.push(s(i.x1.x) + " " + s(i.x1.y) + " m"),
                                n.push(s(i.x2.x) + " " + s(i.x2.y) + " l"),
                                n.push(s(i.x4.x) + " " + s(i.x4.y) + " m"),
                                n.push(s(i.x3.x) + " " + s(i.x3.y) + " l"),
                                n.push("s"),
                                n.push("Q"),
                                e.stream = n.join("\n"),
                                e
                            },
                            YesPushDown: function(t) {
                                var e = p(t)
                                  , n = Y.internal.calculateCross(t)
                                  , i = [];
                                return i.push("0.749023 g"),
                                i.push("0 0 " + s(Y.internal.getWidth(t)) + " " + s(Y.internal.getHeight(t)) + " re"),
                                i.push("f"),
                                i.push("q"),
                                i.push("1 1 " + s(Y.internal.getWidth(t) - 2) + " " + s(Y.internal.getHeight(t) - 2) + " re"),
                                i.push("W"),
                                i.push("n"),
                                i.push(s(n.x1.x) + " " + s(n.x1.y) + " m"),
                                i.push(s(n.x2.x) + " " + s(n.x2.y) + " l"),
                                i.push(s(n.x4.x) + " " + s(n.x4.y) + " m"),
                                i.push(s(n.x3.x) + " " + s(n.x3.y) + " l"),
                                i.push("s"),
                                i.push("Q"),
                                e.stream = i.join("\n"),
                                e
                            },
                            OffPushDown: function(t) {
                                var e = p(t)
                                  , n = [];
                                return n.push("0.749023 g"),
                                n.push("0 0 " + s(Y.internal.getWidth(t)) + " " + s(Y.internal.getHeight(t)) + " re"),
                                n.push("f"),
                                e.stream = n.join("\n"),
                                e
                            }
                        }
                    },
                    createDefaultAppearanceStream: function(t) {
                        var e = n.internal.getFont(t.fontName, t.fontStyle).id
                          , i = n.__private__.encodeColorString(t.color);
                        return "/" + e + " " + t.fontSize + " Tf " + i
                    }
                };
                Y.internal = {
                    Bezier_C: .551915024494,
                    calculateCross: function(t) {
                        var e = Y.internal.getWidth(t)
                          , n = Y.internal.getHeight(t)
                          , i = Math.min(e, n);
                        return {
                            x1: {
                                x: (e - i) / 2,
                                y: (n - i) / 2 + i
                            },
                            x2: {
                                x: (e - i) / 2 + i,
                                y: (n - i) / 2
                            },
                            x3: {
                                x: (e - i) / 2,
                                y: (n - i) / 2
                            },
                            x4: {
                                x: (e - i) / 2 + i,
                                y: (n - i) / 2 + i
                            }
                        }
                    }
                },
                Y.internal.getWidth = function(t) {
                    var e = 0;
                    return "object" === r(t) && (e = u(t.Rect[2])),
                    e
                }
                ,
                Y.internal.getHeight = function(t) {
                    var e = 0;
                    return "object" === r(t) && (e = u(t.Rect[3])),
                    e
                }
                ;
                var K = t.addField = function(t) {
                    if (P.call(this),
                    !(t instanceof N))
                        throw new Error("Invalid argument passed to jsPDF.addField.");
                    return function(t) {
                        n.internal.acroformPlugin.printedOut && (n.internal.acroformPlugin.printedOut = !1,
                        n.internal.acroformPlugin.acroFormDictionaryRoot = null),
                        n.internal.acroformPlugin.acroFormDictionaryRoot || P.call(n),
                        n.internal.acroformPlugin.acroFormDictionaryRoot.Fields.push(t)
                    }
                    .call(this, t),
                    t.page = n.internal.getCurrentPageInfo().pageNumber,
                    this
                }
                ;
                t.addButton = function(t) {
                    if (t instanceof B == 0)
                        throw new Error("Invalid argument passed to jsPDF.addButton.");
                    return K.call(this, t)
                }
                ,
                t.addTextField = function(t) {
                    if (t instanceof q == 0)
                        throw new Error("Invalid argument passed to jsPDF.addTextField.");
                    return K.call(this, t)
                }
                ,
                t.addChoiceField = function(t) {
                    if (t instanceof j == 0)
                        throw new Error("Invalid argument passed to jsPDF.addChoiceField.");
                    return K.call(this, t)
                }
                ,
                "object" == r(e) && void 0 === e.ChoiceField && void 0 === e.ListBox && void 0 === e.ComboBox && void 0 === e.EditBox && void 0 === e.Button && void 0 === e.PushButton && void 0 === e.RadioButton && void 0 === e.CheckBox && void 0 === e.TextField && void 0 === e.PasswordField ? (e.ChoiceField = j,
                e.ListBox = V,
                e.ComboBox = F,
                e.EditBox = U,
                e.Button = B,
                e.PushButton = z,
                e.RadioButton = G,
                e.CheckBox = W,
                e.TextField = q,
                e.PasswordField = X,
                e.AcroForm = {
                    Appearance: Y
                }) : console.warn("AcroForm-Classes are not populated into global-namespace, because the class-Names exist already."),
                t.AcroFormChoiceField = j,
                t.AcroFormListBox = V,
                t.AcroFormComboBox = F,
                t.AcroFormEditBox = U,
                t.AcroFormButton = B,
                t.AcroFormPushButton = z,
                t.AcroFormRadioButton = G,
                t.AcroFormCheckBox = W,
                t.AcroFormTextField = q,
                t.AcroFormPasswordField = X,
                t.AcroFormAppearance = Y,
                t.AcroForm = {
                    ChoiceField: j,
                    ListBox: V,
                    ComboBox: F,
                    EditBox: U,
                    Button: B,
                    PushButton: z,
                    RadioButton: G,
                    CheckBox: W,
                    TextField: q,
                    PasswordField: X,
                    Appearance: Y
                }
            }
            )((window.tmp = ft).API, "undefined" != typeof window && window || void 0 !== i && i),
            /** @license
   * jsPDF addImage plugin
   * Copyright (c) 2012 Jason Siefken, https://github.com/siefkenj/
   *               2013 Chris Dowling, https://github.com/gingerchris
   *               2013 Trinh Ho, https://github.com/ineedfat
   *               2013 Edwin Alejandro Perez, https://github.com/eaparango
   *               2013 Norah Smith, https://github.com/burnburnrocket
   *               2014 Diego Casorran, https://github.com/diegocr
   *               2014 James Robb, https://github.com/jamesbrobb
   *
   * 
   */
            function(t) {
                var e = "addImage_"
                  , n = {
                    PNG: [[137, 80, 78, 71]],
                    TIFF: [[77, 77, 0, 42], [73, 73, 42, 0]],
                    JPEG: [[255, 216, 255, 224, void 0, void 0, 74, 70, 73, 70, 0], [255, 216, 255, 225, void 0, void 0, 69, 120, 105, 102, 0, 0]],
                    JPEG2000: [[0, 0, 0, 12, 106, 80, 32, 32]],
                    GIF87a: [[71, 73, 70, 56, 55, 97]],
                    GIF89a: [[71, 73, 70, 56, 57, 97]],
                    BMP: [[66, 77], [66, 65], [67, 73], [67, 80], [73, 67], [80, 84]]
                }
                  , i = t.getImageFileTypeByImageData = function(e, i) {
                    var r, o;
                    i = i || "UNKNOWN";
                    var a, s, c, l = "UNKNOWN";
                    for (c in t.isArrayBufferView(e) && (e = t.arrayBufferToBinaryString(e)),
                    n)
                        for (a = n[c],
                        r = 0; r < a.length; r += 1) {
                            for (s = !0,
                            o = 0; o < a[r].length; o += 1)
                                if (void 0 !== a[r][o] && a[r][o] !== e.charCodeAt(o)) {
                                    s = !1;
                                    break
                                }
                            if (!0 === s) {
                                l = c;
                                break
                            }
                        }
                    return "UNKNOWN" === l && "UNKNOWN" !== i && (console.warn('FileType of Image not recognized. Processing image as "' + i + '".'),
                    l = i),
                    l
                }
                  , o = function t(e) {
                    for (var n = this.internal.newObject(), i = this.internal.write, r = this.internal.putStream, o = (0,
                    this.internal.getFilters)(); -1 !== o.indexOf("FlateEncode"); )
                        o.splice(o.indexOf("FlateEncode"), 1);
                    e.n = n;
                    var a = [];
                    if (a.push({
                        key: "Type",
                        value: "/XObject"
                    }),
                    a.push({
                        key: "Subtype",
                        value: "/Image"
                    }),
                    a.push({
                        key: "Width",
                        value: e.w
                    }),
                    a.push({
                        key: "Height",
                        value: e.h
                    }),
                    e.cs === this.color_spaces.INDEXED ? a.push({
                        key: "ColorSpace",
                        value: "[/Indexed /DeviceRGB " + (e.pal.length / 3 - 1) + " " + ("smask"in e ? n + 2 : n + 1) + " 0 R]"
                    }) : (a.push({
                        key: "ColorSpace",
                        value: "/" + e.cs
                    }),
                    e.cs === this.color_spaces.DEVICE_CMYK && a.push({
                        key: "Decode",
                        value: "[1 0 1 0 1 0 1 0]"
                    })),
                    a.push({
                        key: "BitsPerComponent",
                        value: e.bpc
                    }),
                    "dp"in e && a.push({
                        key: "DecodeParms",
                        value: "<<" + e.dp + ">>"
                    }),
                    "trns"in e && e.trns.constructor == Array) {
                        for (var s = "", c = 0, l = e.trns.length; c < l; c++)
                            s += e.trns[c] + " " + e.trns[c] + " ";
                        a.push({
                            key: "Mask",
                            value: "[" + s + "]"
                        })
                    }
                    "smask"in e && a.push({
                        key: "SMask",
                        value: n + 1 + " 0 R"
                    });
                    var u = void 0 !== e.f ? ["/" + e.f] : void 0;
                    if (r({
                        data: e.data,
                        additionalKeyValues: a,
                        alreadyAppliedFilters: u
                    }),
                    i("endobj"),
                    "smask"in e) {
                        var d = "/Predictor " + e.p + " /Colors 1 /BitsPerComponent " + e.bpc + " /Columns " + e.w
                          , p = {
                            w: e.w,
                            h: e.h,
                            cs: "DeviceGray",
                            bpc: e.bpc,
                            dp: d,
                            data: e.smask
                        };
                        "f"in e && (p.f = e.f),
                        t.call(this, p)
                    }
                    e.cs === this.color_spaces.INDEXED && (this.internal.newObject(),
                    r({
                        data: this.arrayBufferToBinaryString(new Uint8Array(e.pal))
                    }),
                    i("endobj"))
                }
                  , a = function() {
                    var t = this.internal.collections[e + "images"];
                    for (var n in t)
                        o.call(this, t[n])
                }
                  , s = function() {
                    var t, n = this.internal.collections[e + "images"], i = this.internal.write;
                    for (var r in n)
                        i("/I" + (t = n[r]).i, t.n, "0", "R")
                }
                  , c = function(e) {
                    return "function" == typeof t["process" + e.toUpperCase()]
                }
                  , l = function(t) {
                    return "object" === r(t) && 1 === t.nodeType
                }
                  , u = function(e, n) {
                    if ("IMG" === e.nodeName && e.hasAttribute("src")) {
                        var i = "" + e.getAttribute("src");
                        if (0 === i.indexOf("data:image/"))
                            return unescape(i);
                        var r = t.loadFile(i);
                        if (void 0 !== r)
                            return btoa(r)
                    }
                    if ("CANVAS" === e.nodeName) {
                        var o = e;
                        return e.toDataURL("image/jpeg", 1)
                    }
                    (o = document.createElement("canvas")).width = e.clientWidth || e.width,
                    o.height = e.clientHeight || e.height;
                    var a = o.getContext("2d");
                    if (!a)
                        throw "addImage requires canvas to be supported by browser.";
                    return a.drawImage(e, 0, 0, o.width, o.height),
                    o.toDataURL("png" == ("" + n).toLowerCase() ? "image/png" : "image/jpeg")
                }
                  , d = function(t, e) {
                    var n;
                    if (e)
                        for (var i in e)
                            if (t === e[i].alias) {
                                n = e[i];
                                break
                            }
                    return n
                };
                t.color_spaces = {
                    DEVICE_RGB: "DeviceRGB",
                    DEVICE_GRAY: "DeviceGray",
                    DEVICE_CMYK: "DeviceCMYK",
                    CAL_GREY: "CalGray",
                    CAL_RGB: "CalRGB",
                    LAB: "Lab",
                    ICC_BASED: "ICCBased",
                    INDEXED: "Indexed",
                    PATTERN: "Pattern",
                    SEPARATION: "Separation",
                    DEVICE_N: "DeviceN"
                },
                t.decode = {
                    DCT_DECODE: "DCTDecode",
                    FLATE_DECODE: "FlateDecode",
                    LZW_DECODE: "LZWDecode",
                    JPX_DECODE: "JPXDecode",
                    JBIG2_DECODE: "JBIG2Decode",
                    ASCII85_DECODE: "ASCII85Decode",
                    ASCII_HEX_DECODE: "ASCIIHexDecode",
                    RUN_LENGTH_DECODE: "RunLengthDecode",
                    CCITT_FAX_DECODE: "CCITTFaxDecode"
                },
                t.image_compression = {
                    NONE: "NONE",
                    FAST: "FAST",
                    MEDIUM: "MEDIUM",
                    SLOW: "SLOW"
                },
                t.sHashCode = function(t) {
                    var e, n = 0;
                    if (0 === (t = t || "").length)
                        return n;
                    for (e = 0; e < t.length; e++)
                        n = (n << 5) - n + t.charCodeAt(e),
                        n |= 0;
                    return n
                }
                ,
                t.isString = function(t) {
                    return "string" == typeof t
                }
                ,
                t.validateStringAsBase64 = function(t) {
                    (t = t || "").toString().trim();
                    var e = !0;
                    return 0 === t.length && (e = !1),
                    t.length % 4 != 0 && (e = !1),
                    !1 === /^[A-Za-z0-9+\/]+$/.test(t.substr(0, t.length - 2)) && (e = !1),
                    !1 === /^[A-Za-z0-9\/][A-Za-z0-9+\/]|[A-Za-z0-9+\/]=|==$/.test(t.substr(-2)) && (e = !1),
                    e
                }
                ,
                t.extractInfoFromBase64DataURI = function(t) {
                    return /^data:([\w]+?\/([\w]+?));\S*;*base64,(.+)$/g.exec(t)
                }
                ,
                t.extractImageFromDataUrl = function(t) {
                    var e = (t = t || "").split("base64,")
                      , n = null;
                    if (2 === e.length) {
                        var i = /^data:(\w*\/\w*);*(charset=[\w=-]*)*;*$/.exec(e[0]);
                        Array.isArray(i) && (n = {
                            mimeType: i[1],
                            charset: i[2],
                            data: e[1]
                        })
                    }
                    return n
                }
                ,
                t.supportsArrayBuffer = function() {
                    return "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array
                }
                ,
                t.isArrayBuffer = function(t) {
                    return !!this.supportsArrayBuffer() && t instanceof ArrayBuffer
                }
                ,
                t.isArrayBufferView = function(t) {
                    return !!this.supportsArrayBuffer() && "undefined" != typeof Uint32Array && (t instanceof Int8Array || t instanceof Uint8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array)
                }
                ,
                t.binaryStringToUint8Array = function(t) {
                    for (var e = t.length, n = new Uint8Array(e), i = 0; i < e; i++)
                        n[i] = t.charCodeAt(i);
                    return n
                }
                ,
                t.arrayBufferToBinaryString = function(t) {
                    if ("function" == typeof atob)
                        return atob(this.arrayBufferToBase64(t))
                }
                ,
                t.arrayBufferToBase64 = function(t) {
                    for (var e, n = "", i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", r = new Uint8Array(t), o = r.byteLength, a = o % 3, s = o - a, c = 0; c < s; c += 3)
                        n += i[(16515072 & (e = r[c] << 16 | r[c + 1] << 8 | r[c + 2])) >> 18] + i[(258048 & e) >> 12] + i[(4032 & e) >> 6] + i[63 & e];
                    return 1 == a ? n += i[(252 & (e = r[s])) >> 2] + i[(3 & e) << 4] + "==" : 2 == a && (n += i[(64512 & (e = r[s] << 8 | r[s + 1])) >> 10] + i[(1008 & e) >> 4] + i[(15 & e) << 2] + "="),
                    n
                }
                ,
                t.createImageInfo = function(t, e, n, i, r, o, a, s, c, l, u, d, p) {
                    var h = {
                        alias: s,
                        w: e,
                        h: n,
                        cs: i,
                        bpc: r,
                        i: a,
                        data: t
                    };
                    return o && (h.f = o),
                    c && (h.dp = c),
                    l && (h.trns = l),
                    u && (h.pal = u),
                    d && (h.smask = d),
                    p && (h.p = p),
                    h
                }
                ,
                t.addImage = function(n, i, o, p, h, f, m, g, v) {
                    var y = "";
                    if ("string" != typeof i) {
                        var b = f;
                        f = h,
                        h = p,
                        p = o,
                        o = i,
                        i = b
                    }
                    if ("object" === r(n) && !l(n) && "imageData"in n) {
                        var w = n;
                        n = w.imageData,
                        i = w.format || i || "UNKNOWN",
                        o = w.x || o || 0,
                        p = w.y || p || 0,
                        h = w.w || h,
                        f = w.h || f,
                        m = w.alias || m,
                        g = w.compression || g,
                        v = w.rotation || w.angle || v
                    }
                    var S = this.internal.getFilters();
                    if (void 0 === g && -1 !== S.indexOf("FlateEncode") && (g = "SLOW"),
                    "string" == typeof n && (n = unescape(n)),
                    isNaN(o) || isNaN(p))
                        throw console.error("jsPDF.addImage: Invalid coordinates", arguments),
                        new Error("Invalid coordinates passed to jsPDF.addImage");
                    var x, M, E, C, A, T, O, _ = function() {
                        var t = this.internal.collections[e + "images"];
                        return t || (this.internal.collections[e + "images"] = t = {},
                        this.internal.events.subscribe("putResources", a),
                        this.internal.events.subscribe("putXobjectDict", s)),
                        t
                    }
                    .call(this);
                    if (!((x = d(n, _)) || (l(n) && (n = u(n, i)),
                    (null == (O = m) || 0 === O.length) && (m = "string" == typeof (T = n) ? t.sHashCode(T) : t.isArrayBufferView(T) ? t.sHashCode(t.arrayBufferToBinaryString(T)) : null),
                    x = d(m, _)))) {
                        if (this.isString(n) && ("" !== (y = this.convertStringToImageData(n)) || void 0 !== (y = t.loadFile(n))) && (n = y),
                        i = this.getImageFileTypeByImageData(n, i),
                        !c(i))
                            throw new Error("addImage does not support files of type '" + i + "', please ensure that a plugin for '" + i + "' support is added.");
                        if (this.supportsArrayBuffer() && (n instanceof Uint8Array || (M = n,
                        n = this.binaryStringToUint8Array(n))),
                        !(x = this["process" + i.toUpperCase()](n, (A = 0,
                        (C = _) && (A = Object.keys ? Object.keys(C).length : function(t) {
                            var e = 0;
                            for (var n in t)
                                t.hasOwnProperty(n) && e++;
                            return e
                        }(C)),
                        A), m, ((E = g) && "string" == typeof E && (E = E.toUpperCase()),
                        E in t.image_compression ? E : t.image_compression.NONE), M)))
                            throw new Error("An unknown error occurred whilst processing the image")
                    }
                    return function(t, e, n, i, r, o, a, s) {
                        var c = function(t, e, n) {
                            return t || e || (e = t = -96),
                            t < 0 && (t = -1 * n.w * 72 / t / this.internal.scaleFactor),
                            e < 0 && (e = -1 * n.h * 72 / e / this.internal.scaleFactor),
                            0 === t && (t = e * n.w / n.h),
                            0 === e && (e = t * n.h / n.w),
                            [t, e]
                        }
                        .call(this, n, i, r)
                          , l = this.internal.getCoordinateString
                          , u = this.internal.getVerticalCoordinateString;
                        if (n = c[0],
                        i = c[1],
                        a[o] = r,
                        s) {
                            s *= Math.PI / 180;
                            var d = Math.cos(s)
                              , p = Math.sin(s)
                              , h = function(t) {
                                return t.toFixed(4)
                            }
                              , f = [h(d), h(p), h(-1 * p), h(d), 0, 0, "cm"]
                        }
                        this.internal.write("q"),
                        s ? (this.internal.write([1, "0", "0", 1, l(t), u(e + i), "cm"].join(" ")),
                        this.internal.write(f.join(" ")),
                        this.internal.write([l(n), "0", "0", l(i), "0", "0", "cm"].join(" "))) : this.internal.write([l(n), "0", "0", l(i), l(t), u(e + i), "cm"].join(" ")),
                        this.internal.write("/I" + r.i + " Do"),
                        this.internal.write("Q")
                    }
                    .call(this, o, p, h, f, x, x.i, _, v),
                    this
                }
                ,
                t.convertStringToImageData = function(e) {
                    var n, i = "";
                    if (this.isString(e)) {
                        var r;
                        n = null !== (r = this.extractImageFromDataUrl(e)) ? r.data : e;
                        try {
                            i = atob(n)
                        } catch (e) {
                            throw t.validateStringAsBase64(n) ? new Error("atob-Error in jsPDF.convertStringToImageData " + e.message) : new Error("Supplied Data is not a valid base64-String jsPDF.convertStringToImageData ")
                        }
                    }
                    return i
                }
                ;
                var p = function(t, e) {
                    return t.subarray(e, e + 5)
                };
                t.processJPEG = function(t, e, n, r, o, a) {
                    var s, c = this.decode.DCT_DECODE;
                    if (!this.isString(t) && !this.isArrayBuffer(t) && !this.isArrayBufferView(t))
                        return null;
                    if (this.isString(t) && (s = function(t) {
                        var e;
                        if ("JPEG" !== i(t))
                            throw new Error("getJpegSize requires a binary string jpeg file");
                        for (var n = 256 * t.charCodeAt(4) + t.charCodeAt(5), r = 4, o = t.length; r < o; ) {
                            if (r += n,
                            255 !== t.charCodeAt(r))
                                throw new Error("getJpegSize could not find the size of the image");
                            if (192 === t.charCodeAt(r + 1) || 193 === t.charCodeAt(r + 1) || 194 === t.charCodeAt(r + 1) || 195 === t.charCodeAt(r + 1) || 196 === t.charCodeAt(r + 1) || 197 === t.charCodeAt(r + 1) || 198 === t.charCodeAt(r + 1) || 199 === t.charCodeAt(r + 1))
                                return e = 256 * t.charCodeAt(r + 5) + t.charCodeAt(r + 6),
                                [256 * t.charCodeAt(r + 7) + t.charCodeAt(r + 8), e, t.charCodeAt(r + 9)];
                            r += 2,
                            n = 256 * t.charCodeAt(r) + t.charCodeAt(r + 1)
                        }
                    }(t)),
                    this.isArrayBuffer(t) && (t = new Uint8Array(t)),
                    this.isArrayBufferView(t) && (s = function(t) {
                        if (65496 != (t[0] << 8 | t[1]))
                            throw new Error("Supplied data is not a JPEG");
                        for (var e, n = t.length, i = (t[4] << 8) + t[5], r = 4; r < n; ) {
                            if (i = ((e = p(t, r += i))[2] << 8) + e[3],
                            (192 === e[1] || 194 === e[1]) && 255 === e[0] && 7 < i)
                                return {
                                    width: ((e = p(t, r + 5))[2] << 8) + e[3],
                                    height: (e[0] << 8) + e[1],
                                    numcomponents: e[4]
                                };
                            r += 2
                        }
                        throw new Error("getJpegSizeFromBytes could not find the size of the image")
                    }(t),
                    t = o || this.arrayBufferToBinaryString(t)),
                    void 0 === a)
                        switch (s.numcomponents) {
                        case 1:
                            a = this.color_spaces.DEVICE_GRAY;
                            break;
                        case 4:
                            a = this.color_spaces.DEVICE_CMYK;
                            break;
                        default:
                        case 3:
                            a = this.color_spaces.DEVICE_RGB
                        }
                    return this.createImageInfo(t, s.width, s.height, a, 8, c, e, n)
                }
                ,
                t.processJPG = function() {
                    return this.processJPEG.apply(this, arguments)
                }
                ,
                t.getImageProperties = function(e) {
                    var n, i, r = "";
                    if (l(e) && (e = u(e)),
                    this.isString(e) && ("" !== (r = this.convertStringToImageData(e)) || void 0 !== (r = t.loadFile(e))) && (e = r),
                    i = this.getImageFileTypeByImageData(e),
                    !c(i))
                        throw new Error("addImage does not support files of type '" + i + "', please ensure that a plugin for '" + i + "' support is added.");
                    if (this.supportsArrayBuffer() && (e instanceof Uint8Array || (e = this.binaryStringToUint8Array(e))),
                    !(n = this["process" + i.toUpperCase()](e)))
                        throw new Error("An unknown error occurred whilst processing the image");
                    return {
                        fileType: i,
                        width: n.w,
                        height: n.h,
                        colorSpace: n.cs,
                        compressionMode: n.f,
                        bitsPerComponent: n.bpc
                    }
                }
            }(ft.API),
            /**
   * @license
   * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  steven@twelvetone.tv
   *
   * Licensed under the MIT License.
   * http://opensource.org/licenses/mit-license
   */
            a = ft.API,
            ft.API.events.push(["addPage", function(t) {
                this.internal.getPageInfo(t.pageNumber).pageContext.annotations = []
            }
            ]),
            a.events.push(["putPage", function(t) {
                for (var e = this.internal.getPageInfoByObjId(t.objId), n = t.pageContext.annotations, i = function(t) {
                    if (void 0 !== t && "" != t)
                        return !0
                }, r = !1, o = 0; o < n.length && !r; o++)
                    switch ((c = n[o]).type) {
                    case "link":
                        if (i(c.options.url) || i(c.options.pageNumber)) {
                            r = !0;
                            break
                        }
                    case "reference":
                    case "text":
                    case "freetext":
                        r = !0
                    }
                if (0 != r) {
                    this.internal.write("/Annots ["),
                    this.internal.pageSize.height;
                    var a = this.internal.getCoordinateString
                      , s = this.internal.getVerticalCoordinateString;
                    for (o = 0; o < n.length; o++) {
                        var c;
                        switch ((c = n[o]).type) {
                        case "reference":
                            this.internal.write(" " + c.object.objId + " 0 R ");
                            break;
                        case "text":
                            var l = this.internal.newAdditionalObject()
                              , u = this.internal.newAdditionalObject()
                              , d = c.title || "Note";
                            g = "<</Type /Annot /Subtype /Text " + (h = "/Rect [" + a(c.bounds.x) + " " + s(c.bounds.y + c.bounds.h) + " " + a(c.bounds.x + c.bounds.w) + " " + s(c.bounds.y) + "] ") + "/Contents (" + c.contents + ")",
                            g += " /Popup " + u.objId + " 0 R",
                            g += " /P " + e.objId + " 0 R",
                            g += " /T (" + d + ") >>",
                            l.content = g;
                            var p = l.objId + " 0 R";
                            g = "<</Type /Annot /Subtype /Popup " + (h = "/Rect [" + a(c.bounds.x + 30) + " " + s(c.bounds.y + c.bounds.h) + " " + a(c.bounds.x + c.bounds.w + 30) + " " + s(c.bounds.y) + "] ") + " /Parent " + p,
                            c.open && (g += " /Open true"),
                            g += " >>",
                            u.content = g,
                            this.internal.write(l.objId, "0 R", u.objId, "0 R");
                            break;
                        case "freetext":
                            var h = "/Rect [" + a(c.bounds.x) + " " + s(c.bounds.y) + " " + a(c.bounds.x + c.bounds.w) + " " + s(c.bounds.y + c.bounds.h) + "] "
                              , f = c.color || "#000000";
                            g = "<</Type /Annot /Subtype /FreeText " + h + "/Contents (" + c.contents + ")",
                            g += " /DS(font: Helvetica,sans-serif 12.0pt; text-align:left; color:#" + f + ")",
                            g += " /Border [0 0 0]",
                            g += " >>",
                            this.internal.write(g);
                            break;
                        case "link":
                            if (c.options.name) {
                                var m = this.annotations._nameMap[c.options.name];
                                c.options.pageNumber = m.page,
                                c.options.top = m.y
                            } else
                                c.options.top || (c.options.top = 0);
                            h = "/Rect [" + a(c.x) + " " + s(c.y) + " " + a(c.x + c.w) + " " + s(c.y + c.h) + "] ";
                            var g = "";
                            if (c.options.url)
                                g = "<</Type /Annot /Subtype /Link " + h + "/Border [0 0 0] /A <</S /URI /URI (" + c.options.url + ") >>";
                            else if (c.options.pageNumber)
                                switch (g = "<</Type /Annot /Subtype /Link " + h + "/Border [0 0 0] /Dest [" + this.internal.getPageInfo(c.options.pageNumber).objId + " 0 R",
                                c.options.magFactor = c.options.magFactor || "XYZ",
                                c.options.magFactor) {
                                case "Fit":
                                    g += " /Fit]";
                                    break;
                                case "FitH":
                                    g += " /FitH " + c.options.top + "]";
                                    break;
                                case "FitV":
                                    c.options.left = c.options.left || 0,
                                    g += " /FitV " + c.options.left + "]";
                                    break;
                                case "XYZ":
                                default:
                                    var v = s(c.options.top);
                                    c.options.left = c.options.left || 0,
                                    void 0 === c.options.zoom && (c.options.zoom = 0),
                                    g += " /XYZ " + c.options.left + " " + v + " " + c.options.zoom + "]"
                                }
                            "" != g && (g += " >>",
                            this.internal.write(g))
                        }
                    }
                    this.internal.write("]")
                }
            }
            ]),
            a.createAnnotation = function(t) {
                var e = this.internal.getCurrentPageInfo();
                switch (t.type) {
                case "link":
                    this.link(t.bounds.x, t.bounds.y, t.bounds.w, t.bounds.h, t);
                    break;
                case "text":
                case "freetext":
                    e.pageContext.annotations.push(t)
                }
            }
            ,
            a.link = function(t, e, n, i, r) {
                this.internal.getCurrentPageInfo().pageContext.annotations.push({
                    x: t,
                    y: e,
                    w: n,
                    h: i,
                    options: r,
                    type: "link"
                })
            }
            ,
            a.textWithLink = function(t, e, n, i) {
                var r = this.getTextWidth(t)
                  , o = this.internal.getLineHeight() / this.internal.scaleFactor;
                return this.text(t, e, n),
                n += .2 * o,
                this.link(e, n - o, r, o, i),
                r
            }
            ,
            a.getTextWidth = function(t) {
                var e = this.internal.getFontSize();
                return this.getStringUnitWidth(t) * e / this.internal.scaleFactor
            }
            ,
            /**
   * @license
   * Copyright (c) 2017 Aras Abbasi 
   *
   * Licensed under the MIT License.
   * http://opensource.org/licenses/mit-license
   */
            function(t) {
                var e = {
                    1569: [65152],
                    1570: [65153, 65154],
                    1571: [65155, 65156],
                    1572: [65157, 65158],
                    1573: [65159, 65160],
                    1574: [65161, 65162, 65163, 65164],
                    1575: [65165, 65166],
                    1576: [65167, 65168, 65169, 65170],
                    1577: [65171, 65172],
                    1578: [65173, 65174, 65175, 65176],
                    1579: [65177, 65178, 65179, 65180],
                    1580: [65181, 65182, 65183, 65184],
                    1581: [65185, 65186, 65187, 65188],
                    1582: [65189, 65190, 65191, 65192],
                    1583: [65193, 65194],
                    1584: [65195, 65196],
                    1585: [65197, 65198],
                    1586: [65199, 65200],
                    1587: [65201, 65202, 65203, 65204],
                    1588: [65205, 65206, 65207, 65208],
                    1589: [65209, 65210, 65211, 65212],
                    1590: [65213, 65214, 65215, 65216],
                    1591: [65217, 65218, 65219, 65220],
                    1592: [65221, 65222, 65223, 65224],
                    1593: [65225, 65226, 65227, 65228],
                    1594: [65229, 65230, 65231, 65232],
                    1601: [65233, 65234, 65235, 65236],
                    1602: [65237, 65238, 65239, 65240],
                    1603: [65241, 65242, 65243, 65244],
                    1604: [65245, 65246, 65247, 65248],
                    1605: [65249, 65250, 65251, 65252],
                    1606: [65253, 65254, 65255, 65256],
                    1607: [65257, 65258, 65259, 65260],
                    1608: [65261, 65262],
                    1609: [65263, 65264, 64488, 64489],
                    1610: [65265, 65266, 65267, 65268],
                    1649: [64336, 64337],
                    1655: [64477],
                    1657: [64358, 64359, 64360, 64361],
                    1658: [64350, 64351, 64352, 64353],
                    1659: [64338, 64339, 64340, 64341],
                    1662: [64342, 64343, 64344, 64345],
                    1663: [64354, 64355, 64356, 64357],
                    1664: [64346, 64347, 64348, 64349],
                    1667: [64374, 64375, 64376, 64377],
                    1668: [64370, 64371, 64372, 64373],
                    1670: [64378, 64379, 64380, 64381],
                    1671: [64382, 64383, 64384, 64385],
                    1672: [64392, 64393],
                    1676: [64388, 64389],
                    1677: [64386, 64387],
                    1678: [64390, 64391],
                    1681: [64396, 64397],
                    1688: [64394, 64395],
                    1700: [64362, 64363, 64364, 64365],
                    1702: [64366, 64367, 64368, 64369],
                    1705: [64398, 64399, 64400, 64401],
                    1709: [64467, 64468, 64469, 64470],
                    1711: [64402, 64403, 64404, 64405],
                    1713: [64410, 64411, 64412, 64413],
                    1715: [64406, 64407, 64408, 64409],
                    1722: [64414, 64415],
                    1723: [64416, 64417, 64418, 64419],
                    1726: [64426, 64427, 64428, 64429],
                    1728: [64420, 64421],
                    1729: [64422, 64423, 64424, 64425],
                    1733: [64480, 64481],
                    1734: [64473, 64474],
                    1735: [64471, 64472],
                    1736: [64475, 64476],
                    1737: [64482, 64483],
                    1739: [64478, 64479],
                    1740: [64508, 64509, 64510, 64511],
                    1744: [64484, 64485, 64486, 64487],
                    1746: [64430, 64431],
                    1747: [64432, 64433]
                }
                  , n = {
                    65247: {
                        65154: 65269,
                        65156: 65271,
                        65160: 65273,
                        65166: 65275
                    },
                    65248: {
                        65154: 65270,
                        65156: 65272,
                        65160: 65274,
                        65166: 65276
                    },
                    65165: {
                        65247: {
                            65248: {
                                65258: 65010
                            }
                        }
                    },
                    1617: {
                        1612: 64606,
                        1613: 64607,
                        1614: 64608,
                        1615: 64609,
                        1616: 64610
                    }
                }
                  , i = {
                    1612: 64606,
                    1613: 64607,
                    1614: 64608,
                    1615: 64609,
                    1616: 64610
                }
                  , r = [1570, 1571, 1573, 1575];
                t.__arabicParser__ = {};
                var o = t.__arabicParser__.isInArabicSubstitutionA = function(t) {
                    return void 0 !== e[t.charCodeAt(0)]
                }
                  , a = t.__arabicParser__.isArabicLetter = function(t) {
                    return "string" == typeof t && /^[\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDFF\uFE70-\uFEFF]+$/.test(t)
                }
                  , s = t.__arabicParser__.isArabicEndLetter = function(t) {
                    return a(t) && o(t) && e[t.charCodeAt(0)].length <= 2
                }
                  , c = t.__arabicParser__.isArabicAlfLetter = function(t) {
                    return a(t) && 0 <= r.indexOf(t.charCodeAt(0))
                }
                  , l = (t.__arabicParser__.arabicLetterHasIsolatedForm = function(t) {
                    return a(t) && o(t) && 1 <= e[t.charCodeAt(0)].length
                }
                ,
                t.__arabicParser__.arabicLetterHasFinalForm = function(t) {
                    return a(t) && o(t) && 2 <= e[t.charCodeAt(0)].length
                }
                )
                  , u = (t.__arabicParser__.arabicLetterHasInitialForm = function(t) {
                    return a(t) && o(t) && 3 <= e[t.charCodeAt(0)].length
                }
                ,
                t.__arabicParser__.arabicLetterHasMedialForm = function(t) {
                    return a(t) && o(t) && 4 == e[t.charCodeAt(0)].length
                }
                )
                  , d = t.__arabicParser__.resolveLigatures = function(t) {
                    var e = 0
                      , i = n
                      , r = 0
                      , o = ""
                      , a = 0;
                    for (e = 0; e < t.length; e += 1)
                        void 0 !== i[t.charCodeAt(e)] ? (a++,
                        "number" == typeof (i = i[t.charCodeAt(e)]) && (r = -1 !== (r = p(t.charAt(e), t.charAt(e - a), t.charAt(e + 1))) ? r : 0,
                        o += String.fromCharCode(i),
                        i = n,
                        a = 0),
                        e === t.length - 1 && (i = n,
                        o += t.charAt(e - (a - 1)),
                        e -= a - 1,
                        a = 0)) : (i = n,
                        o += t.charAt(e - a),
                        e -= a,
                        a = 0);
                    return o
                }
                  , p = (t.__arabicParser__.isArabicDiacritic = function(t) {
                    return void 0 !== t && void 0 !== i[t.charCodeAt(0)]
                }
                ,
                t.__arabicParser__.getCorrectForm = function(t, e, n) {
                    return a(t) ? !1 === o(t) ? -1 : !l(t) || !a(e) && !a(n) || !a(n) && s(e) || s(t) && !a(e) || s(t) && c(e) || s(t) && s(e) ? 0 : u(t) && a(e) && !s(e) && a(n) && l(n) ? 3 : s(t) || !a(n) ? 1 : 2 : -1
                }
                )
                  , h = t.__arabicParser__.processArabic = t.processArabic = function(t) {
                    var n = 0
                      , i = 0
                      , r = 0
                      , o = ""
                      , s = ""
                      , c = ""
                      , l = (t = t || "").split("\\s+")
                      , u = [];
                    for (n = 0; n < l.length; n += 1) {
                        for (u.push(""),
                        i = 0; i < l[n].length; i += 1)
                            o = l[n][i],
                            s = l[n][i - 1],
                            c = l[n][i + 1],
                            a(o) ? (r = p(o, s, c),
                            u[n] += -1 !== r ? String.fromCharCode(e[o.charCodeAt(0)][r]) : o) : u[n] += o;
                        u[n] = d(u[n])
                    }
                    return u.join(" ")
                }
                ;
                t.events.push(["preProcessText", function(t) {
                    var e = t.text
                      , n = (t.x,
                    t.y,
                    t.options || {})
                      , i = (t.mutex,
                    n.lang,
                    []);
                    if ("[object Array]" === Object.prototype.toString.call(e)) {
                        var r = 0;
                        for (i = [],
                        r = 0; r < e.length; r += 1)
                            "[object Array]" === Object.prototype.toString.call(e[r]) ? i.push([h(e[r][0]), e[r][1], e[r][2]]) : i.push([h(e[r])]);
                        t.text = i
                    } else
                        t.text = h(e)
                }
                ])
            }(ft.API),
            ft.API.autoPrint = function(t) {
                var e;
                switch ((t = t || {}).variant = t.variant || "non-conform",
                t.variant) {
                case "javascript":
                    this.addJS("print({});");
                    break;
                case "non-conform":
                default:
                    this.internal.events.subscribe("postPutResources", (function() {
                        e = this.internal.newObject(),
                        this.internal.out("<<"),
                        this.internal.out("/S /Named"),
                        this.internal.out("/Type /Action"),
                        this.internal.out("/N /Print"),
                        this.internal.out(">>"),
                        this.internal.out("endobj")
                    }
                    )),
                    this.internal.events.subscribe("putCatalog", (function() {
                        this.internal.out("/OpenAction " + e + " 0 R")
                    }
                    ))
                }
                return this
            }
            ,
            /**
   * @license
   * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  steven@twelvetone.tv
   *
   * Licensed under the MIT License.
   * http://opensource.org/licenses/mit-license
   */
            s = ft.API,
            (c = function() {
                var t = void 0;
                Object.defineProperty(this, "pdf", {
                    get: function() {
                        return t
                    },
                    set: function(e) {
                        t = e
                    }
                });
                var e = 150;
                Object.defineProperty(this, "width", {
                    get: function() {
                        return e
                    },
                    set: function(t) {
                        e = isNaN(t) || !1 === Number.isInteger(t) || t < 0 ? 150 : t,
                        this.getContext("2d").pageWrapXEnabled && (this.getContext("2d").pageWrapX = e + 1)
                    }
                });
                var n = 300;
                Object.defineProperty(this, "height", {
                    get: function() {
                        return n
                    },
                    set: function(t) {
                        n = isNaN(t) || !1 === Number.isInteger(t) || t < 0 ? 300 : t,
                        this.getContext("2d").pageWrapYEnabled && (this.getContext("2d").pageWrapY = n + 1)
                    }
                });
                var i = [];
                Object.defineProperty(this, "childNodes", {
                    get: function() {
                        return i
                    },
                    set: function(t) {
                        i = t
                    }
                });
                var r = {};
                Object.defineProperty(this, "style", {
                    get: function() {
                        return r
                    },
                    set: function(t) {
                        r = t
                    }
                }),
                Object.defineProperty(this, "parentNode", {
                    get: function() {
                        return !1
                    }
                })
            }
            ).prototype.getContext = function(t, e) {
                var n;
                if ("2d" !== (t = t || "2d"))
                    return null;
                for (n in e)
                    this.pdf.context2d.hasOwnProperty(n) && (this.pdf.context2d[n] = e[n]);
                return (this.pdf.context2d._canvas = this).pdf.context2d
            }
            ,
            c.prototype.toDataURL = function() {
                throw new Error("toDataURL is not implemented.")
            }
            ,
            s.events.push(["initialized", function() {
                this.canvas = new c,
                this.canvas.pdf = this
            }
            ]),
            /** 
   * @license
   * ====================================================================
   * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com
   *               2013 Eduardo Menezes de Morais, eduardo.morais@usp.br
   *               2013 Lee Driscoll, https://github.com/lsdriscoll
   *               2014 Juan Pablo Gaviria, https://github.com/juanpgaviria
   *               2014 James Hall, james@parall.ax
   *               2014 Diego Casorran, https://github.com/diegocr
   *
   * 
   * ====================================================================
   */
            l = ft.API,
            d = {
                x: void 0,
                y: void 0,
                w: void 0,
                h: void 0,
                ln: void 0
            },
            p = 1,
            h = function(t, e, n, i, r) {
                d = {
                    x: t,
                    y: e,
                    w: n,
                    h: i,
                    ln: r
                }
            }
            ,
            f = function() {
                return d
            }
            ,
            m = {
                left: 0,
                top: 0,
                bottom: 0
            },
            l.setHeaderFunction = function(t) {
                u = t
            }
            ,
            l.getTextDimensions = function(t, e) {
                var n = this.table_font_size || this.internal.getFontSize()
                  , i = (this.internal.getFont().fontStyle,
                (e = e || {}).scaleFactor || this.internal.scaleFactor)
                  , r = 0
                  , o = 0
                  , a = 0;
                if ("string" == typeof t)
                    0 != (r = this.getStringUnitWidth(t) * n) && (o = 1);
                else {
                    if ("[object Array]" !== Object.prototype.toString.call(t))
                        throw new Error("getTextDimensions expects text-parameter to be of type String or an Array of Strings.");
                    for (var s = 0; s < t.length; s++)
                        r < (a = this.getStringUnitWidth(t[s]) * n) && (r = a);
                    0 !== r && (o = t.length)
                }
                return {
                    w: r /= i,
                    h: Math.max((o * n * this.getLineHeightFactor() - n * (this.getLineHeightFactor() - 1)) / i, 0)
                }
            }
            ,
            l.cellAddPage = function() {
                var t = this.margins || m;
                this.addPage(),
                h(t.left, t.top, void 0, void 0),
                p += 1
            }
            ,
            l.cellInitialize = function() {
                d = {
                    x: void 0,
                    y: void 0,
                    w: void 0,
                    h: void 0,
                    ln: void 0
                },
                p = 1
            }
            ,
            l.cell = function(t, e, n, i, r, o, a) {
                var s = f()
                  , c = !1;
                if (void 0 !== s.ln)
                    if (s.ln === o)
                        t = s.x + s.w,
                        e = s.y;
                    else {
                        var l = this.margins || m;
                        s.y + s.h + i + 13 >= this.internal.pageSize.getHeight() - l.bottom && (this.cellAddPage(),
                        c = !0,
                        this.printHeaders && this.tableHeaderRow && this.printHeaderRow(o, !0)),
                        e = f().y + f().h,
                        c && (e = 23)
                    }
                if (void 0 !== r[0])
                    if (this.printingHeaderRow ? this.rect(t, e, n, i, "FD") : this.rect(t, e, n, i),
                    "right" === a) {
                        r instanceof Array || (r = [r]);
                        for (var u = 0; u < r.length; u++) {
                            var d = r[u]
                              , p = this.getStringUnitWidth(d) * this.internal.getFontSize() / this.internal.scaleFactor;
                            this.text(d, t + n - p - 3, e + this.internal.getLineHeight() * (u + 1))
                        }
                    } else
                        this.text(r, t + 3, e + this.internal.getLineHeight());
                return h(t, e, n, i, o),
                this
            }
            ,
            l.arrayMax = function(t, e) {
                var n, i, r, o = t[0];
                for (n = 0,
                i = t.length; n < i; n += 1)
                    r = t[n],
                    e ? -1 === e(o, r) && (o = r) : o < r && (o = r);
                return o
            }
            ,
            l.table = function(t, e, n, i, r) {
                if (!n)
                    throw "No data for PDF table";
                var o, a, s, c, u, h, f, g, v, y, b = [], w = [], S = {}, x = {}, M = [], E = [], C = !1, A = !0, T = 12, O = m;
                if (O.width = this.internal.pageSize.getWidth(),
                r && (!0 === r.autoSize && (C = !0),
                !1 === r.printHeaders && (A = !1),
                r.fontSize && (T = r.fontSize),
                r.css && void 0 !== r.css["font-size"] && (T = 16 * r.css["font-size"]),
                r.margins && (O = r.margins)),
                this.lnMod = 0,
                d = {
                    x: void 0,
                    y: void 0,
                    w: void 0,
                    h: void 0,
                    ln: void 0
                },
                p = 1,
                this.printHeaders = A,
                this.margins = O,
                this.setFontSize(T),
                this.table_font_size = T,
                null == i)
                    b = Object.keys(n[0]);
                else if (i[0] && "string" != typeof i[0])
                    for (a = 0,
                    s = i.length; a < s; a += 1)
                        o = i[a],
                        b.push(o.name),
                        w.push(o.prompt),
                        x[o.name] = o.width * (19.049976 / 25.4);
                else
                    b = i;
                if (C)
                    for (y = function(t) {
                        return t[o]
                    }
                    ,
                    a = 0,
                    s = b.length; a < s; a += 1) {
                        for (S[o = b[a]] = n.map(y),
                        M.push(this.getTextDimensions(w[a] || o, {
                            scaleFactor: 1
                        }).w),
                        f = 0,
                        c = (h = S[o]).length; f < c; f += 1)
                            u = h[f],
                            M.push(this.getTextDimensions(u, {
                                scaleFactor: 1
                            }).w);
                        x[o] = l.arrayMax(M),
                        M = []
                    }
                if (A) {
                    var _ = this.calculateLineHeight(b, x, w.length ? w : b);
                    for (a = 0,
                    s = b.length; a < s; a += 1)
                        o = b[a],
                        E.push([t, e, x[o], _, String(w.length ? w[a] : o)]);
                    this.setTableHeaderRow(E),
                    this.printHeaderRow(1, !1)
                }
                for (a = 0,
                s = n.length; a < s; a += 1)
                    for (g = n[a],
                    _ = this.calculateLineHeight(b, x, g),
                    f = 0,
                    v = b.length; f < v; f += 1)
                        o = b[f],
                        this.cell(t, e, x[o], _, g[o], a + 2, o.align);
                return this.lastCellPos = d,
                this.table_x = t,
                this.table_y = e,
                this
            }
            ,
            l.calculateLineHeight = function(t, e, n) {
                for (var i, r = 0, o = 0; o < t.length; o++) {
                    n[i = t[o]] = this.splitTextToSize(String(n[i]), e[i] - 3);
                    var a = this.internal.getLineHeight() * n[i].length + 3;
                    r < a && (r = a)
                }
                return r
            }
            ,
            l.setTableHeaderRow = function(t) {
                this.tableHeaderRow = t
            }
            ,
            l.printHeaderRow = function(t, e) {
                if (!this.tableHeaderRow)
                    throw "Property tableHeaderRow does not exist.";
                var n, i, r, o;
                if (this.printingHeaderRow = !0,
                void 0 !== u) {
                    var a = u(this, p);
                    h(a[0], a[1], a[2], a[3], -1)
                }
                this.setFontStyle("bold");
                var s = [];
                for (r = 0,
                o = this.tableHeaderRow.length; r < o; r += 1)
                    this.setFillColor(200, 200, 200),
                    n = this.tableHeaderRow[r],
                    e && (this.margins.top = 13,
                    n[1] = this.margins && this.margins.top || 0,
                    s.push(n)),
                    i = [].concat(n),
                    this.cell.apply(this, i.concat(t));
                0 < s.length && this.setTableHeaderRow(s),
                this.setFontStyle("normal"),
                this.printingHeaderRow = !1
            }
            ,
            function(t, e) {
                var n, i, o, a, s, c = function(t) {
                    return t = t || {},
                    this.isStrokeTransparent = t.isStrokeTransparent || !1,
                    this.strokeOpacity = t.strokeOpacity || 1,
                    this.strokeStyle = t.strokeStyle || "#000000",
                    this.fillStyle = t.fillStyle || "#000000",
                    this.isFillTransparent = t.isFillTransparent || !1,
                    this.fillOpacity = t.fillOpacity || 1,
                    this.font = t.font || "10px sans-serif",
                    this.textBaseline = t.textBaseline || "alphabetic",
                    this.textAlign = t.textAlign || "left",
                    this.lineWidth = t.lineWidth || 1,
                    this.lineJoin = t.lineJoin || "miter",
                    this.lineCap = t.lineCap || "butt",
                    this.path = t.path || [],
                    this.transform = void 0 !== t.transform ? t.transform.clone() : new L,
                    this.globalCompositeOperation = t.globalCompositeOperation || "normal",
                    this.globalAlpha = t.globalAlpha || 1,
                    this.clip_path = t.clip_path || [],
                    this.currentPoint = t.currentPoint || new D,
                    this.miterLimit = t.miterLimit || 10,
                    this.lastPoint = t.lastPoint || new D,
                    this.ignoreClearRect = "boolean" != typeof t.ignoreClearRect || t.ignoreClearRect,
                    this
                };
                t.events.push(["initialized", function() {
                    this.context2d = new l(this),
                    n = this.internal.f2,
                    this.internal.f3,
                    i = this.internal.getCoordinateString,
                    o = this.internal.getVerticalCoordinateString,
                    a = this.internal.getHorizontalCoordinate,
                    s = this.internal.getVerticalCoordinate
                }
                ]);
                var l = function(t) {
                    Object.defineProperty(this, "canvas", {
                        get: function() {
                            return {
                                parentNode: !1,
                                style: !1
                            }
                        }
                    }),
                    Object.defineProperty(this, "pdf", {
                        get: function() {
                            return t
                        }
                    });
                    var e = !1;
                    Object.defineProperty(this, "pageWrapXEnabled", {
                        get: function() {
                            return e
                        },
                        set: function(t) {
                            e = Boolean(t)
                        }
                    });
                    var n = !1;
                    Object.defineProperty(this, "pageWrapYEnabled", {
                        get: function() {
                            return n
                        },
                        set: function(t) {
                            n = Boolean(t)
                        }
                    });
                    var i = 0;
                    Object.defineProperty(this, "posX", {
                        get: function() {
                            return i
                        },
                        set: function(t) {
                            isNaN(t) || (i = t)
                        }
                    });
                    var r = 0;
                    Object.defineProperty(this, "posY", {
                        get: function() {
                            return r
                        },
                        set: function(t) {
                            isNaN(t) || (r = t)
                        }
                    });
                    var o = !1;
                    Object.defineProperty(this, "autoPaging", {
                        get: function() {
                            return o
                        },
                        set: function(t) {
                            o = Boolean(t)
                        }
                    });
                    var a = 0;
                    Object.defineProperty(this, "lastBreak", {
                        get: function() {
                            return a
                        },
                        set: function(t) {
                            a = t
                        }
                    });
                    var s = [];
                    Object.defineProperty(this, "pageBreaks", {
                        get: function() {
                            return s
                        },
                        set: function(t) {
                            s = t
                        }
                    });
                    var l = new c;
                    Object.defineProperty(this, "ctx", {
                        get: function() {
                            return l
                        },
                        set: function(t) {
                            t instanceof c && (l = t)
                        }
                    }),
                    Object.defineProperty(this, "path", {
                        get: function() {
                            return l.path
                        },
                        set: function(t) {
                            l.path = t
                        }
                    });
                    var d = [];
                    Object.defineProperty(this, "ctxStack", {
                        get: function() {
                            return d
                        },
                        set: function(t) {
                            d = t
                        }
                    }),
                    Object.defineProperty(this, "fillStyle", {
                        get: function() {
                            return this.ctx.fillStyle
                        },
                        set: function(t) {
                            var e;
                            e = u(t),
                            this.ctx.fillStyle = e.style,
                            this.ctx.isFillTransparent = 0 === e.a,
                            this.ctx.fillOpacity = e.a,
                            this.pdf.setFillColor(e.r, e.g, e.b, {
                                a: e.a
                            }),
                            this.pdf.setTextColor(e.r, e.g, e.b, {
                                a: e.a
                            })
                        }
                    }),
                    Object.defineProperty(this, "strokeStyle", {
                        get: function() {
                            return this.ctx.strokeStyle
                        },
                        set: function(t) {
                            var e = u(t);
                            this.ctx.strokeStyle = e.style,
                            this.ctx.isStrokeTransparent = 0 === e.a,
                            this.ctx.strokeOpacity = e.a,
                            0 === e.a ? this.pdf.setDrawColor(255, 255, 255) : (e.a,
                            this.pdf.setDrawColor(e.r, e.g, e.b))
                        }
                    }),
                    Object.defineProperty(this, "lineCap", {
                        get: function() {
                            return this.ctx.lineCap
                        },
                        set: function(t) {
                            -1 !== ["butt", "round", "square"].indexOf(t) && (this.ctx.lineCap = t,
                            this.pdf.setLineCap(t))
                        }
                    }),
                    Object.defineProperty(this, "lineWidth", {
                        get: function() {
                            return this.ctx.lineWidth
                        },
                        set: function(t) {
                            isNaN(t) || (this.ctx.lineWidth = t,
                            this.pdf.setLineWidth(t))
                        }
                    }),
                    Object.defineProperty(this, "lineJoin", {
                        get: function() {
                            return this.ctx.lineJoin
                        },
                        set: function(t) {
                            -1 !== ["bevel", "round", "miter"].indexOf(t) && (this.ctx.lineJoin = t,
                            this.pdf.setLineJoin(t))
                        }
                    }),
                    Object.defineProperty(this, "miterLimit", {
                        get: function() {
                            return this.ctx.miterLimit
                        },
                        set: function(t) {
                            isNaN(t) || (this.ctx.miterLimit = t,
                            this.pdf.setMiterLimit(t))
                        }
                    }),
                    Object.defineProperty(this, "textBaseline", {
                        get: function() {
                            return this.ctx.textBaseline
                        },
                        set: function(t) {
                            this.ctx.textBaseline = t
                        }
                    }),
                    Object.defineProperty(this, "textAlign", {
                        get: function() {
                            return this.ctx.textAlign
                        },
                        set: function(t) {
                            -1 !== ["right", "end", "center", "left", "start"].indexOf(t) && (this.ctx.textAlign = t)
                        }
                    }),
                    Object.defineProperty(this, "font", {
                        get: function() {
                            return this.ctx.font
                        },
                        set: function(t) {
                            var e;
                            if (this.ctx.font = t,
                            null !== (e = /^\s*(?=(?:(?:[-a-z]+\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\1|\2|\3)\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\d]+(?:\%|in|[cem]m|ex|p[ctx]))(?:\s*\/\s*(normal|[.\d]+(?:\%|in|[cem]m|ex|p[ctx])))?\s*([-_,\"\'\sa-z]+?)\s*$/i.exec(t))) {
                                var n = e[1]
                                  , i = (e[2],
                                e[3])
                                  , r = e[4]
                                  , o = e[5]
                                  , a = e[6];
                                r = "px" === o ? Math.floor(parseFloat(r)) : "em" === o ? Math.floor(parseFloat(r) * this.pdf.getFontSize()) : Math.floor(parseFloat(r)),
                                this.pdf.setFontSize(r);
                                var s = "";
                                ("bold" === i || 700 <= parseInt(i, 10) || "bold" === n) && (s = "bold"),
                                "italic" === n && (s += "italic"),
                                0 === s.length && (s = "normal");
                                for (var c = "", l = a.toLowerCase().replace(/"|'/g, "").split(/\s*,\s*/), u = {
                                    arial: "Helvetica",
                                    verdana: "Helvetica",
                                    helvetica: "Helvetica",
                                    "sans-serif": "Helvetica",
                                    fixed: "Courier",
                                    monospace: "Courier",
                                    terminal: "Courier",
                                    courier: "Courier",
                                    times: "Times",
                                    cursive: "Times",
                                    fantasy: "Times",
                                    serif: "Times"
                                }, d = 0; d < l.length; d++) {
                                    if (void 0 !== this.pdf.internal.getFont(l[d], s, {
                                        noFallback: !0,
                                        disableWarning: !0
                                    })) {
                                        c = l[d];
                                        break
                                    }
                                    if ("bolditalic" === s && void 0 !== this.pdf.internal.getFont(l[d], "bold", {
                                        noFallback: !0,
                                        disableWarning: !0
                                    }))
                                        c = l[d],
                                        s = "bold";
                                    else if (void 0 !== this.pdf.internal.getFont(l[d], "normal", {
                                        noFallback: !0,
                                        disableWarning: !0
                                    })) {
                                        c = l[d],
                                        s = "normal";
                                        break
                                    }
                                }
                                if ("" === c)
                                    for (d = 0; d < l.length; d++)
                                        if (u[l[d]]) {
                                            c = u[l[d]];
                                            break
                                        }
                                c = "" === c ? "Times" : c,
                                this.pdf.setFont(c, s)
                            }
                        }
                    }),
                    Object.defineProperty(this, "globalCompositeOperation", {
                        get: function() {
                            return this.ctx.globalCompositeOperation
                        },
                        set: function(t) {
                            this.ctx.globalCompositeOperation = t
                        }
                    }),
                    Object.defineProperty(this, "globalAlpha", {
                        get: function() {
                            return this.ctx.globalAlpha
                        },
                        set: function(t) {
                            this.ctx.globalAlpha = t
                        }
                    }),
                    Object.defineProperty(this, "ignoreClearRect", {
                        get: function() {
                            return this.ctx.ignoreClearRect
                        },
                        set: function(t) {
                            this.ctx.ignoreClearRect = Boolean(t)
                        }
                    })
                };
                l.prototype.fill = function() {
                    g.call(this, "fill", !1)
                }
                ,
                l.prototype.stroke = function() {
                    g.call(this, "stroke", !1)
                }
                ,
                l.prototype.beginPath = function() {
                    this.path = [{
                        type: "begin"
                    }]
                }
                ,
                l.prototype.moveTo = function(t, e) {
                    if (isNaN(t) || isNaN(e))
                        throw console.error("jsPDF.context2d.moveTo: Invalid arguments", arguments),
                        new Error("Invalid arguments passed to jsPDF.context2d.moveTo");
                    var n = this.ctx.transform.applyToPoint(new D(t,e));
                    this.path.push({
                        type: "mt",
                        x: n.x,
                        y: n.y
                    }),
                    this.ctx.lastPoint = new D(t,e)
                }
                ,
                l.prototype.closePath = function() {
                    var t = new D(0,0)
                      , e = 0;
                    for (e = this.path.length - 1; -1 !== e; e--)
                        if ("begin" === this.path[e].type && "object" === r(this.path[e + 1]) && "number" == typeof this.path[e + 1].x) {
                            t = new D(this.path[e + 1].x,this.path[e + 1].y),
                            this.path.push({
                                type: "lt",
                                x: t.x,
                                y: t.y
                            });
                            break
                        }
                    "object" === r(this.path[e + 2]) && "number" == typeof this.path[e + 2].x && this.path.push(JSON.parse(JSON.stringify(this.path[e + 2]))),
                    this.path.push({
                        type: "close"
                    }),
                    this.ctx.lastPoint = new D(t.x,t.y)
                }
                ,
                l.prototype.lineTo = function(t, e) {
                    if (isNaN(t) || isNaN(e))
                        throw console.error("jsPDF.context2d.lineTo: Invalid arguments", arguments),
                        new Error("Invalid arguments passed to jsPDF.context2d.lineTo");
                    var n = this.ctx.transform.applyToPoint(new D(t,e));
                    this.path.push({
                        type: "lt",
                        x: n.x,
                        y: n.y
                    }),
                    this.ctx.lastPoint = new D(n.x,n.y)
                }
                ,
                l.prototype.clip = function() {
                    this.ctx.clip_path = JSON.parse(JSON.stringify(this.path)),
                    g.call(this, null, !0)
                }
                ,
                l.prototype.quadraticCurveTo = function(t, e, n, i) {
                    if (isNaN(n) || isNaN(i) || isNaN(t) || isNaN(e))
                        throw console.error("jsPDF.context2d.quadraticCurveTo: Invalid arguments", arguments),
                        new Error("Invalid arguments passed to jsPDF.context2d.quadraticCurveTo");
                    var r = this.ctx.transform.applyToPoint(new D(n,i))
                      , o = this.ctx.transform.applyToPoint(new D(t,e));
                    this.path.push({
                        type: "qct",
                        x1: o.x,
                        y1: o.y,
                        x: r.x,
                        y: r.y
                    }),
                    this.ctx.lastPoint = new D(r.x,r.y)
                }
                ,
                l.prototype.bezierCurveTo = function(t, e, n, i, r, o) {
                    if (isNaN(r) || isNaN(o) || isNaN(t) || isNaN(e) || isNaN(n) || isNaN(i))
                        throw console.error("jsPDF.context2d.bezierCurveTo: Invalid arguments", arguments),
                        new Error("Invalid arguments passed to jsPDF.context2d.bezierCurveTo");
                    var a = this.ctx.transform.applyToPoint(new D(r,o))
                      , s = this.ctx.transform.applyToPoint(new D(t,e))
                      , c = this.ctx.transform.applyToPoint(new D(n,i));
                    this.path.push({
                        type: "bct",
                        x1: s.x,
                        y1: s.y,
                        x2: c.x,
                        y2: c.y,
                        x: a.x,
                        y: a.y
                    }),
                    this.ctx.lastPoint = new D(a.x,a.y)
                }
                ,
                l.prototype.arc = function(t, e, n, i, r, o) {
                    if (isNaN(t) || isNaN(e) || isNaN(n) || isNaN(i) || isNaN(r))
                        throw console.error("jsPDF.context2d.arc: Invalid arguments", arguments),
                        new Error("Invalid arguments passed to jsPDF.context2d.arc");
                    if (o = Boolean(o),
                    !this.ctx.transform.isIdentity) {
                        var a = this.ctx.transform.applyToPoint(new D(t,e));
                        t = a.x,
                        e = a.y;
                        var s = this.ctx.transform.applyToPoint(new D(0,n))
                          , c = this.ctx.transform.applyToPoint(new D(0,0));
                        n = Math.sqrt(Math.pow(s.x - c.x, 2) + Math.pow(s.y - c.y, 2))
                    }
                    Math.abs(r - i) >= 2 * Math.PI && (i = 0,
                    r = 2 * Math.PI),
                    this.path.push({
                        type: "arc",
                        x: t,
                        y: e,
                        radius: n,
                        startAngle: i,
                        endAngle: r,
                        counterclockwise: o
                    })
                }
                ,
                l.prototype.arcTo = function(t, e, n, i, r) {
                    throw new Error("arcTo not implemented.")
                }
                ,
                l.prototype.rect = function(t, e, n, i) {
                    if (isNaN(t) || isNaN(e) || isNaN(n) || isNaN(i))
                        throw console.error("jsPDF.context2d.rect: Invalid arguments", arguments),
                        new Error("Invalid arguments passed to jsPDF.context2d.rect");
                    this.moveTo(t, e),
                    this.lineTo(t + n, e),
                    this.lineTo(t + n, e + i),
                    this.lineTo(t, e + i),
                    this.lineTo(t, e),
                    this.lineTo(t + n, e),
                    this.lineTo(t, e)
                }
                ,
                l.prototype.fillRect = function(t, e, n, i) {
                    if (isNaN(t) || isNaN(e) || isNaN(n) || isNaN(i))
                        throw console.error("jsPDF.context2d.fillRect: Invalid arguments", arguments),
                        new Error("Invalid arguments passed to jsPDF.context2d.fillRect");
                    if (!d.call(this)) {
                        var r = {};
                        "butt" !== this.lineCap && (r.lineCap = this.lineCap,
                        this.lineCap = "butt"),
                        "miter" !== this.lineJoin && (r.lineJoin = this.lineJoin,
                        this.lineJoin = "miter"),
                        this.beginPath(),
                        this.rect(t, e, n, i),
                        this.fill(),
                        r.hasOwnProperty("lineCap") && (this.lineCap = r.lineCap),
                        r.hasOwnProperty("lineJoin") && (this.lineJoin = r.lineJoin)
                    }
                }
                ,
                l.prototype.strokeRect = function(t, e, n, i) {
                    if (isNaN(t) || isNaN(e) || isNaN(n) || isNaN(i))
                        throw console.error("jsPDF.context2d.strokeRect: Invalid arguments", arguments),
                        new Error("Invalid arguments passed to jsPDF.context2d.strokeRect");
                    p.call(this) || (this.beginPath(),
                    this.rect(t, e, n, i),
                    this.stroke())
                }
                ,
                l.prototype.clearRect = function(t, e, n, i) {
                    if (isNaN(t) || isNaN(e) || isNaN(n) || isNaN(i))
                        throw console.error("jsPDF.context2d.clearRect: Invalid arguments", arguments),
                        new Error("Invalid arguments passed to jsPDF.context2d.clearRect");
                    this.ignoreClearRect || (this.fillStyle = "#ffffff",
                    this.fillRect(t, e, n, i))
                }
                ,
                l.prototype.save = function(t) {
                    t = "boolean" != typeof t || t;
                    for (var e = this.pdf.internal.getCurrentPageInfo().pageNumber, n = 0; n < this.pdf.internal.getNumberOfPages(); n++)
                        this.pdf.setPage(n + 1),
                        this.pdf.internal.out("q");
                    if (this.pdf.setPage(e),
                    t) {
                        this.ctx.fontSize = this.pdf.internal.getFontSize();
                        var i = new c(this.ctx);
                        this.ctxStack.push(this.ctx),
                        this.ctx = i
                    }
                }
                ,
                l.prototype.restore = function(t) {
                    t = "boolean" != typeof t || t;
                    for (var e = this.pdf.internal.getCurrentPageInfo().pageNumber, n = 0; n < this.pdf.internal.getNumberOfPages(); n++)
                        this.pdf.setPage(n + 1),
                        this.pdf.internal.out("Q");
                    this.pdf.setPage(e),
                    t && 0 !== this.ctxStack.length && (this.ctx = this.ctxStack.pop(),
                    this.fillStyle = this.ctx.fillStyle,
                    this.strokeStyle = this.ctx.strokeStyle,
                    this.font = this.ctx.font,
                    this.lineCap = this.ctx.lineCap,
                    this.lineWidth = this.ctx.lineWidth,
                    this.lineJoin = this.ctx.lineJoin)
                }
                ,
                l.prototype.toDataURL = function() {
                    throw new Error("toDataUrl not implemented.")
                }
                ;
                var u = function(t) {
                    var e, n, i, r;
                    if (!0 === t.isCanvasGradient && (t = t.getColor()),
                    !t)
                        return {
                            r: 0,
                            g: 0,
                            b: 0,
                            a: 0,
                            style: t
                        };
                    if (/transparent|rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*0+\s*\)/.test(t))
                        r = i = n = e = 0;
                    else {
                        var o = /rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/.exec(t);
                        if (null !== o)
                            e = parseInt(o[1]),
                            n = parseInt(o[2]),
                            i = parseInt(o[3]),
                            r = 1;
                        else if (null !== (o = /rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d\.]+)\s*\)/.exec(t)))
                            e = parseInt(o[1]),
                            n = parseInt(o[2]),
                            i = parseInt(o[3]),
                            r = parseFloat(o[4]);
                        else {
                            if (r = 1,
                            "string" == typeof t && "#" !== t.charAt(0)) {
                                var a = new RGBColor(t);
                                t = a.ok ? a.toHex() : "#000000"
                            }
                            4 === t.length ? (e = t.substring(1, 2),
                            e += e,
                            n = t.substring(2, 3),
                            n += n,
                            i = t.substring(3, 4),
                            i += i) : (e = t.substring(1, 3),
                            n = t.substring(3, 5),
                            i = t.substring(5, 7)),
                            e = parseInt(e, 16),
                            n = parseInt(n, 16),
                            i = parseInt(i, 16)
                        }
                    }
                    return {
                        r: e,
                        g: n,
                        b: i,
                        a: r,
                        style: t
                    }
                }
                  , d = function() {
                    return this.ctx.isFillTransparent || 0 == this.globalAlpha
                }
                  , p = function() {
                    return Boolean(this.ctx.isStrokeTransparent || 0 == this.globalAlpha)
                };
                l.prototype.fillText = function(t, e, n, i) {
                    if (isNaN(e) || isNaN(n) || "string" != typeof t)
                        throw console.error("jsPDF.context2d.fillText: Invalid arguments", arguments),
                        new Error("Invalid arguments passed to jsPDF.context2d.fillText");
                    if (i = isNaN(i) ? void 0 : i,
                    !d.call(this)) {
                        n = y.call(this, n);
                        var r = _(this.ctx.transform.rotation)
                          , o = this.ctx.transform.scaleX;
                        M.call(this, {
                            text: t,
                            x: e,
                            y: n,
                            scale: o,
                            angle: r,
                            align: this.textAlign,
                            maxWidth: i
                        })
                    }
                }
                ,
                l.prototype.strokeText = function(t, e, n, i) {
                    if (isNaN(e) || isNaN(n) || "string" != typeof t)
                        throw console.error("jsPDF.context2d.strokeText: Invalid arguments", arguments),
                        new Error("Invalid arguments passed to jsPDF.context2d.strokeText");
                    if (!p.call(this)) {
                        i = isNaN(i) ? void 0 : i,
                        n = y.call(this, n);
                        var r = _(this.ctx.transform.rotation)
                          , o = this.ctx.transform.scaleX;
                        M.call(this, {
                            text: t,
                            x: e,
                            y: n,
                            scale: o,
                            renderingMode: "stroke",
                            angle: r,
                            align: this.textAlign,
                            maxWidth: i
                        })
                    }
                }
                ,
                l.prototype.measureText = function(t) {
                    if ("string" != typeof t)
                        throw console.error("jsPDF.context2d.measureText: Invalid arguments", arguments),
                        new Error("Invalid arguments passed to jsPDF.context2d.measureText");
                    var e = this.pdf
                      , n = this.pdf.internal.scaleFactor
                      , i = e.internal.getFontSize()
                      , r = e.getStringUnitWidth(t) * i / e.internal.scaleFactor;
                    return new function(t) {
                        var e = (t = t || {}).width || 0;
                        return Object.defineProperty(this, "width", {
                            get: function() {
                                return e
                            }
                        }),
                        this
                    }
                    ({
                        width: r *= Math.round(96 * n / 72 * 1e4) / 1e4
                    })
                }
                ,
                l.prototype.scale = function(t, e) {
                    if (isNaN(t) || isNaN(e))
                        throw console.error("jsPDF.context2d.scale: Invalid arguments", arguments),
                        new Error("Invalid arguments passed to jsPDF.context2d.scale");
                    var n = new L(t,0,0,e,0,0);
                    this.ctx.transform = this.ctx.transform.multiply(n)
                }
                ,
                l.prototype.rotate = function(t) {
                    if (isNaN(t))
                        throw console.error("jsPDF.context2d.rotate: Invalid arguments", arguments),
                        new Error("Invalid arguments passed to jsPDF.context2d.rotate");
                    var e = new L(Math.cos(t),Math.sin(t),-Math.sin(t),Math.cos(t),0,0);
                    this.ctx.transform = this.ctx.transform.multiply(e)
                }
                ,
                l.prototype.translate = function(t, e) {
                    if (isNaN(t) || isNaN(e))
                        throw console.error("jsPDF.context2d.translate: Invalid arguments", arguments),
                        new Error("Invalid arguments passed to jsPDF.context2d.translate");
                    var n = new L(1,0,0,1,t,e);
                    this.ctx.transform = this.ctx.transform.multiply(n)
                }
                ,
                l.prototype.transform = function(t, e, n, i, r, o) {
                    if (isNaN(t) || isNaN(e) || isNaN(n) || isNaN(i) || isNaN(r) || isNaN(o))
                        throw console.error("jsPDF.context2d.transform: Invalid arguments", arguments),
                        new Error("Invalid arguments passed to jsPDF.context2d.transform");
                    var a = new L(t,e,n,i,r,o);
                    this.ctx.transform = this.ctx.transform.multiply(a)
                }
                ,
                l.prototype.setTransform = function(t, e, n, i, r, o) {
                    t = isNaN(t) ? 1 : t,
                    e = isNaN(e) ? 0 : e,
                    n = isNaN(n) ? 0 : n,
                    i = isNaN(i) ? 1 : i,
                    r = isNaN(r) ? 0 : r,
                    o = isNaN(o) ? 0 : o,
                    this.ctx.transform = new L(t,e,n,i,r,o)
                }
                ,
                l.prototype.drawImage = function(t, e, n, i, r, o, a, s, c) {
                    var l = this.pdf.getImageProperties(t)
                      , u = 1
                      , d = 1
                      , p = 1
                      , f = 1;
                    void 0 !== i && void 0 !== s && (p = s / i,
                    f = c / r,
                    u = l.width / i * s / i,
                    d = l.height / r * c / r),
                    void 0 === o && (o = e,
                    a = n,
                    n = e = 0),
                    void 0 !== i && void 0 === s && (s = i,
                    c = r),
                    void 0 === i && void 0 === s && (s = l.width,
                    c = l.height);
                    var g = this.ctx.transform.decompose()
                      , y = _(g.rotate.shx);
                    g.scale.sx,
                    g.scale.sy;
                    for (var b, w = new L, S = ((w = (w = (w = w.multiply(g.translate)).multiply(g.skew)).multiply(g.scale)).applyToPoint(new D(s,c)),
                    w.applyToRectangle(new R(o - e * p,a - n * f,i * u,r * d))), x = h.call(this, S), M = [], E = 0; E < x.length; E += 1)
                        -1 === M.indexOf(x[E]) && M.push(x[E]);
                    if (M.sort(),
                    this.autoPaging)
                        for (var C = M[0], A = M[M.length - 1], T = C; T < A + 1; T++) {
                            if (this.pdf.setPage(T),
                            0 !== this.ctx.clip_path.length) {
                                var O = this.path;
                                b = JSON.parse(JSON.stringify(this.ctx.clip_path)),
                                this.path = m(b, this.posX, -1 * this.pdf.internal.pageSize.height * (T - 1) + this.posY),
                                v.call(this, "fill", !0),
                                this.path = O
                            }
                            var P = JSON.parse(JSON.stringify(S));
                            P = m([P], this.posX, -1 * this.pdf.internal.pageSize.height * (T - 1) + this.posY)[0],
                            this.pdf.addImage(t, "jpg", P.x, P.y, P.w, P.h, null, null, y)
                        }
                    else
                        this.pdf.addImage(t, "jpg", S.x, S.y, S.w, S.h, null, null, y)
                }
                ;
                var h = function(t, e, n) {
                    var i = [];
                    switch (e = e || this.pdf.internal.pageSize.width,
                    n = n || this.pdf.internal.pageSize.height,
                    t.type) {
                    default:
                    case "mt":
                    case "lt":
                        i.push(Math.floor((t.y + this.posY) / n) + 1);
                        break;
                    case "arc":
                        i.push(Math.floor((t.y + this.posY - t.radius) / n) + 1),
                        i.push(Math.floor((t.y + this.posY + t.radius) / n) + 1);
                        break;
                    case "qct":
                        var r = I(this.ctx.lastPoint.x, this.ctx.lastPoint.y, t.x1, t.y1, t.x, t.y);
                        i.push(Math.floor(r.y / n) + 1),
                        i.push(Math.floor((r.y + r.h) / n) + 1);
                        break;
                    case "bct":
                        var o = k(this.ctx.lastPoint.x, this.ctx.lastPoint.y, t.x1, t.y1, t.x2, t.y2, t.x, t.y);
                        i.push(Math.floor(o.y / n) + 1),
                        i.push(Math.floor((o.y + o.h) / n) + 1);
                        break;
                    case "rect":
                        i.push(Math.floor((t.y + this.posY) / n) + 1),
                        i.push(Math.floor((t.y + t.h + this.posY) / n) + 1)
                    }
                    for (var a = 0; a < i.length; a += 1)
                        for (; this.pdf.internal.getNumberOfPages() < i[a]; )
                            f.call(this);
                    return i
                }
                  , f = function() {
                    var t = this.fillStyle
                      , e = this.strokeStyle
                      , n = this.font
                      , i = this.lineCap
                      , r = this.lineWidth
                      , o = this.lineJoin;
                    this.pdf.addPage(),
                    this.fillStyle = t,
                    this.strokeStyle = e,
                    this.font = n,
                    this.lineCap = i,
                    this.lineWidth = r,
                    this.lineJoin = o
                }
                  , m = function(t, e, n) {
                    for (var i = 0; i < t.length; i++)
                        switch (t[i].type) {
                        case "bct":
                            t[i].x2 += e,
                            t[i].y2 += n;
                        case "qct":
                            t[i].x1 += e,
                            t[i].y1 += n;
                        case "mt":
                        case "lt":
                        case "arc":
                        default:
                            t[i].x += e,
                            t[i].y += n
                        }
                    return t
                }
                  , g = function(t, e) {
                    for (var n, i, r = this.fillStyle, o = this.strokeStyle, a = (this.font,
                    this.lineCap), s = this.lineWidth, c = this.lineJoin, l = JSON.parse(JSON.stringify(this.path)), u = JSON.parse(JSON.stringify(this.path)), d = [], p = 0; p < u.length; p++)
                        if (void 0 !== u[p].x)
                            for (var g = h.call(this, u[p]), y = 0; y < g.length; y += 1)
                                -1 === d.indexOf(g[y]) && d.push(g[y]);
                    for (p = 0; p < d.length; p++)
                        for (; this.pdf.internal.getNumberOfPages() < d[p]; )
                            f.call(this);
                    if (d.sort(),
                    this.autoPaging) {
                        var b = d[0]
                          , w = d[d.length - 1];
                        for (p = b; p < w + 1; p++) {
                            if (this.pdf.setPage(p),
                            this.fillStyle = r,
                            this.strokeStyle = o,
                            this.lineCap = a,
                            this.lineWidth = s,
                            this.lineJoin = c,
                            0 !== this.ctx.clip_path.length) {
                                var S = this.path;
                                n = JSON.parse(JSON.stringify(this.ctx.clip_path)),
                                this.path = m(n, this.posX, -1 * this.pdf.internal.pageSize.height * (p - 1) + this.posY),
                                v.call(this, t, !0),
                                this.path = S
                            }
                            i = JSON.parse(JSON.stringify(l)),
                            this.path = m(i, this.posX, -1 * this.pdf.internal.pageSize.height * (p - 1) + this.posY),
                            !1 !== e && 0 !== p || v.call(this, t, e)
                        }
                    } else
                        v.call(this, t, e);
                    this.path = l
                }
                  , v = function(t, e) {
                    if (("stroke" !== t || e || !p.call(this)) && ("stroke" === t || e || !d.call(this))) {
                        var n = [];
                        this.ctx.globalAlpha,
                        this.ctx.fillOpacity < 1 && this.ctx.fillOpacity;
                        for (var i, r = this.path, o = 0; o < r.length; o++) {
                            var a = r[o];
                            switch (a.type) {
                            case "begin":
                                n.push({
                                    begin: !0
                                });
                                break;
                            case "close":
                                n.push({
                                    close: !0
                                });
                                break;
                            case "mt":
                                n.push({
                                    start: a,
                                    deltas: [],
                                    abs: []
                                });
                                break;
                            case "lt":
                                var s = n.length;
                                if (!isNaN(r[o - 1].x)) {
                                    var c = [a.x - r[o - 1].x, a.y - r[o - 1].y];
                                    if (0 < s)
                                        for (; 0 <= s; s--)
                                            if (!0 !== n[s - 1].close && !0 !== n[s - 1].begin) {
                                                n[s - 1].deltas.push(c),
                                                n[s - 1].abs.push(a);
                                                break
                                            }
                                }
                                break;
                            case "bct":
                                c = [a.x1 - r[o - 1].x, a.y1 - r[o - 1].y, a.x2 - r[o - 1].x, a.y2 - r[o - 1].y, a.x - r[o - 1].x, a.y - r[o - 1].y],
                                n[n.length - 1].deltas.push(c);
                                break;
                            case "qct":
                                var l = r[o - 1].x + 2 / 3 * (a.x1 - r[o - 1].x)
                                  , u = r[o - 1].y + 2 / 3 * (a.y1 - r[o - 1].y)
                                  , h = a.x + 2 / 3 * (a.x1 - a.x)
                                  , f = a.y + 2 / 3 * (a.y1 - a.y)
                                  , m = a.x
                                  , g = a.y;
                                c = [l - r[o - 1].x, u - r[o - 1].y, h - r[o - 1].x, f - r[o - 1].y, m - r[o - 1].x, g - r[o - 1].y],
                                n[n.length - 1].deltas.push(c);
                                break;
                            case "arc":
                                n.push({
                                    deltas: [],
                                    abs: [],
                                    arc: !0
                                }),
                                Array.isArray(n[n.length - 1].abs) && n[n.length - 1].abs.push(a)
                            }
                        }
                        for (i = e ? null : "stroke" === t ? "stroke" : "fill",
                        o = 0; o < n.length; o++) {
                            if (n[o].arc)
                                for (var v = n[o].abs, y = 0; y < v.length; y++) {
                                    var x = v[y];
                                    if (void 0 !== x.startAngle) {
                                        var M = _(x.startAngle)
                                          , A = _(x.endAngle)
                                          , T = x.x
                                          , O = x.y;
                                        b.call(this, T, O, x.radius, M, A, x.counterclockwise, i, e)
                                    } else
                                        E.call(this, x.x, x.y)
                                }
                            n[o].arc || !0 === n[o].close || !0 === n[o].begin || (T = n[o].start.x,
                            O = n[o].start.y,
                            C.call(this, n[o].deltas, T, O, null, null))
                        }
                        i && w.call(this, i),
                        e && S.call(this)
                    }
                }
                  , y = function(t) {
                    var e = this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor
                      , n = e * (this.pdf.internal.getLineHeightFactor() - 1);
                    switch (this.ctx.textBaseline) {
                    case "bottom":
                        return t - n;
                    case "top":
                        return t + e - n;
                    case "hanging":
                        return t + e - 2 * n;
                    case "middle":
                        return t + e / 2 - n;
                    case "ideographic":
                        return t;
                    case "alphabetic":
                    default:
                        return t
                    }
                };
                l.prototype.createLinearGradient = function() {
                    var t = function() {};
                    return t.colorStops = [],
                    t.addColorStop = function(t, e) {
                        this.colorStops.push([t, e])
                    }
                    ,
                    t.getColor = function() {
                        return 0 === this.colorStops.length ? "#000000" : this.colorStops[0][1]
                    }
                    ,
                    t.isCanvasGradient = !0,
                    t
                }
                ,
                l.prototype.createPattern = function() {
                    return this.createLinearGradient()
                }
                ,
                l.prototype.createRadialGradient = function() {
                    return this.createLinearGradient()
                }
                ;
                var b = function(t, e, n, i, r, o, a, s) {
                    this.pdf.internal.scaleFactor;
                    for (var c = P(i), l = P(r), u = T.call(this, n, c, l, o), d = 0; d < u.length; d++) {
                        var p = u[d];
                        0 === d && x.call(this, p.x1 + t, p.y1 + e),
                        A.call(this, t, e, p.x2, p.y2, p.x3, p.y3, p.x4, p.y4)
                    }
                    s ? S.call(this) : w.call(this, a)
                }
                  , w = function(t) {
                    switch (t) {
                    case "stroke":
                        this.pdf.internal.out("S");
                        break;
                    case "fill":
                        this.pdf.internal.out("f")
                    }
                }
                  , S = function() {
                    this.pdf.clip()
                }
                  , x = function(t, e) {
                    this.pdf.internal.out(i(t) + " " + o(e) + " m")
                }
                  , M = function(t) {
                    var e;
                    switch (t.align) {
                    case "right":
                    case "end":
                        e = "right";
                        break;
                    case "center":
                        e = "center";
                        break;
                    case "left":
                    case "start":
                    default:
                        e = "left"
                    }
                    var n = this.ctx.transform.applyToPoint(new D(t.x,t.y))
                      , i = this.ctx.transform.decompose()
                      , r = new L;
                    r = (r = (r = r.multiply(i.translate)).multiply(i.skew)).multiply(i.scale);
                    for (var o, a = this.pdf.getTextDimensions(t.text), s = this.ctx.transform.applyToRectangle(new R(t.x,t.y,a.w,a.h)), c = r.applyToRectangle(new R(t.x,t.y - a.h,a.w,a.h)), l = h.call(this, c), u = [], d = 0; d < l.length; d += 1)
                        -1 === u.indexOf(l[d]) && u.push(l[d]);
                    if (u.sort(),
                    !0 === this.autoPaging)
                        for (var p = u[0], f = u[u.length - 1], g = p; g < f + 1; g++) {
                            if (this.pdf.setPage(g),
                            0 !== this.ctx.clip_path.length) {
                                var y = this.path;
                                o = JSON.parse(JSON.stringify(this.ctx.clip_path)),
                                this.path = m(o, this.posX, -1 * this.pdf.internal.pageSize.height * (g - 1) + this.posY),
                                v.call(this, "fill", !0),
                                this.path = y
                            }
                            var b = JSON.parse(JSON.stringify(s));
                            if (b = m([b], this.posX, -1 * this.pdf.internal.pageSize.height * (g - 1) + this.posY)[0],
                            .01 <= t.scale) {
                                var w = this.pdf.internal.getFontSize();
                                this.pdf.setFontSize(w * t.scale)
                            }
                            this.pdf.text(t.text, b.x, b.y, {
                                angle: t.angle,
                                align: e,
                                renderingMode: t.renderingMode,
                                maxWidth: t.maxWidth
                            }),
                            .01 <= t.scale && this.pdf.setFontSize(w)
                        }
                    else
                        .01 <= t.scale && (w = this.pdf.internal.getFontSize(),
                        this.pdf.setFontSize(w * t.scale)),
                        this.pdf.text(t.text, n.x + this.posX, n.y + this.posY, {
                            angle: t.angle,
                            align: e,
                            renderingMode: t.renderingMode,
                            maxWidth: t.maxWidth
                        }),
                        .01 <= t.scale && this.pdf.setFontSize(w)
                }
                  , E = function(t, e, n, r) {
                    n = n || 0,
                    r = r || 0,
                    this.pdf.internal.out(i(t + n) + " " + o(e + r) + " l")
                }
                  , C = function(t, e, n) {
                    return this.pdf.lines(t, e, n, null, null)
                }
                  , A = function(t, e, i, r, o, c, l, u) {
                    this.pdf.internal.out([n(a(i + t)), n(s(r + e)), n(a(o + t)), n(s(c + e)), n(a(l + t)), n(s(u + e)), "c"].join(" "))
                }
                  , T = function(t, e, n, i) {
                    var r = 2 * Math.PI
                      , o = e;
                    (o < r || r < o) && (o %= r);
                    var a = n;
                    (a < r || r < a) && (a %= r);
                    for (var s = [], c = Math.PI / 2, l = i ? -1 : 1, u = e, d = Math.min(r, Math.abs(a - o)); 1e-5 < d; ) {
                        var p = u + l * Math.min(d, c);
                        s.push(O.call(this, t, u, p)),
                        d -= Math.abs(p - u),
                        u = p
                    }
                    return s
                }
                  , O = function(t, e, n) {
                    var i = (n - e) / 2
                      , r = t * Math.cos(i)
                      , o = t * Math.sin(i)
                      , a = r
                      , s = -o
                      , c = a * a + s * s
                      , l = c + a * r + s * o
                      , u = 4 / 3 * (Math.sqrt(2 * c * l) - l) / (a * o - s * r)
                      , d = a - u * s
                      , p = s + u * a
                      , h = d
                      , f = -p
                      , m = i + e
                      , g = Math.cos(m)
                      , v = Math.sin(m);
                    return {
                        x1: t * Math.cos(e),
                        y1: t * Math.sin(e),
                        x2: d * g - p * v,
                        y2: d * v + p * g,
                        x3: h * g - f * v,
                        y3: h * v + f * g,
                        x4: t * Math.cos(n),
                        y4: t * Math.sin(n)
                    }
                }
                  , _ = function(t) {
                    return 180 * t / Math.PI
                }
                  , P = function(t) {
                    return t * Math.PI / 180
                }
                  , I = function(t, e, n, i, r, o) {
                    var a = t + .5 * (n - t)
                      , s = e + .5 * (i - e)
                      , c = r + .5 * (n - r)
                      , l = o + .5 * (i - o)
                      , u = Math.min(t, r, a, c)
                      , d = Math.max(t, r, a, c)
                      , p = Math.min(e, o, s, l)
                      , h = Math.max(e, o, s, l);
                    return new R(u,p,d - u,h - p)
                }
                  , k = function(t, e, n, i, r, o, a, s) {
                    for (var c, l, u, d, p, h, f, m, g, v, y, b, w, S = n - t, x = i - e, M = r - n, E = o - i, C = a - r, A = s - o, T = 0; T < 41; T++)
                        m = (h = (l = t + (c = T / 40) * S) + c * ((d = n + c * M) - l)) + c * (d + c * (r + c * C - d) - h),
                        g = (f = (u = e + c * x) + c * ((p = i + c * E) - u)) + c * (p + c * (o + c * A - p) - f),
                        w = 0 == T ? (b = v = m,
                        y = g) : (v = Math.min(v, m),
                        y = Math.min(y, g),
                        b = Math.max(b, m),
                        Math.max(w, g));
                    return new R(Math.round(v),Math.round(y),Math.round(b - v),Math.round(w - y))
                }
                  , D = function(t, e) {
                    var n = t || 0;
                    Object.defineProperty(this, "x", {
                        enumerable: !0,
                        get: function() {
                            return n
                        },
                        set: function(t) {
                            isNaN(t) || (n = parseFloat(t))
                        }
                    });
                    var i = e || 0;
                    Object.defineProperty(this, "y", {
                        enumerable: !0,
                        get: function() {
                            return i
                        },
                        set: function(t) {
                            isNaN(t) || (i = parseFloat(t))
                        }
                    });
                    var r = "pt";
                    return Object.defineProperty(this, "type", {
                        enumerable: !0,
                        get: function() {
                            return r
                        },
                        set: function(t) {
                            r = t.toString()
                        }
                    }),
                    this
                }
                  , R = function(t, e, n, i) {
                    D.call(this, t, e),
                    this.type = "rect";
                    var r = n || 0;
                    Object.defineProperty(this, "w", {
                        enumerable: !0,
                        get: function() {
                            return r
                        },
                        set: function(t) {
                            isNaN(t) || (r = parseFloat(t))
                        }
                    });
                    var o = i || 0;
                    return Object.defineProperty(this, "h", {
                        enumerable: !0,
                        get: function() {
                            return o
                        },
                        set: function(t) {
                            isNaN(t) || (o = parseFloat(t))
                        }
                    }),
                    this
                }
                  , L = function(t, e, n, i, r, o) {
                    var a = [];
                    return Object.defineProperty(this, "sx", {
                        get: function() {
                            return a[0]
                        },
                        set: function(t) {
                            a[0] = Math.round(1e5 * t) / 1e5
                        }
                    }),
                    Object.defineProperty(this, "shy", {
                        get: function() {
                            return a[1]
                        },
                        set: function(t) {
                            a[1] = Math.round(1e5 * t) / 1e5
                        }
                    }),
                    Object.defineProperty(this, "shx", {
                        get: function() {
                            return a[2]
                        },
                        set: function(t) {
                            a[2] = Math.round(1e5 * t) / 1e5
                        }
                    }),
                    Object.defineProperty(this, "sy", {
                        get: function() {
                            return a[3]
                        },
                        set: function(t) {
                            a[3] = Math.round(1e5 * t) / 1e5
                        }
                    }),
                    Object.defineProperty(this, "tx", {
                        get: function() {
                            return a[4]
                        },
                        set: function(t) {
                            a[4] = Math.round(1e5 * t) / 1e5
                        }
                    }),
                    Object.defineProperty(this, "ty", {
                        get: function() {
                            return a[5]
                        },
                        set: function(t) {
                            a[5] = Math.round(1e5 * t) / 1e5
                        }
                    }),
                    Object.defineProperty(this, "rotation", {
                        get: function() {
                            return Math.atan2(this.shx, this.sx)
                        }
                    }),
                    Object.defineProperty(this, "scaleX", {
                        get: function() {
                            return this.decompose().scale.sx
                        }
                    }),
                    Object.defineProperty(this, "scaleY", {
                        get: function() {
                            return this.decompose().scale.sy
                        }
                    }),
                    Object.defineProperty(this, "isIdentity", {
                        get: function() {
                            return 1 === this.sx && 0 === this.shy && 0 === this.shx && 1 === this.sy && 0 === this.tx && 0 === this.ty
                        }
                    }),
                    this.sx = isNaN(t) ? 1 : t,
                    this.shy = isNaN(e) ? 0 : e,
                    this.shx = isNaN(n) ? 0 : n,
                    this.sy = isNaN(i) ? 1 : i,
                    this.tx = isNaN(r) ? 0 : r,
                    this.ty = isNaN(o) ? 0 : o,
                    this
                };
                L.prototype.multiply = function(t) {
                    var e = t.sx * this.sx + t.shy * this.shx
                      , n = t.sx * this.shy + t.shy * this.sy
                      , i = t.shx * this.sx + t.sy * this.shx
                      , r = t.shx * this.shy + t.sy * this.sy
                      , o = t.tx * this.sx + t.ty * this.shx + this.tx
                      , a = t.tx * this.shy + t.ty * this.sy + this.ty;
                    return new L(e,n,i,r,o,a)
                }
                ,
                L.prototype.decompose = function() {
                    var t = this.sx
                      , e = this.shy
                      , n = this.shx
                      , i = this.sy
                      , r = this.tx
                      , o = this.ty
                      , a = Math.sqrt(t * t + e * e)
                      , s = (t /= a) * n + (e /= a) * i;
                    n -= t * s,
                    i -= e * s;
                    var c = Math.sqrt(n * n + i * i);
                    return s /= c,
                    t * (i /= c) < e * (n /= c) && (t = -t,
                    e = -e,
                    s = -s,
                    a = -a),
                    {
                        scale: new L(a,0,0,c,0,0),
                        translate: new L(1,0,0,1,r,o),
                        rotate: new L(t,e,-e,t,0,0),
                        skew: new L(1,0,s,1,0,0)
                    }
                }
                ,
                L.prototype.applyToPoint = function(t) {
                    var e = t.x * this.sx + t.y * this.shx + this.tx
                      , n = t.x * this.shy + t.y * this.sy + this.ty;
                    return new D(e,n)
                }
                ,
                L.prototype.applyToRectangle = function(t) {
                    var e = this.applyToPoint(t)
                      , n = this.applyToPoint(new D(t.x + t.w,t.y + t.h));
                    return new R(e.x,e.y,n.x - e.x,n.y - e.y)
                }
                ,
                L.prototype.clone = function() {
                    var t = this.sx
                      , e = this.shy
                      , n = this.shx
                      , i = this.sy
                      , r = this.tx
                      , o = this.ty;
                    return new L(t,e,n,i,r,o)
                }
            }(ft.API, "undefined" != typeof self && self || "undefined" != typeof window && window || void 0 !== i && i || Function('return typeof this === "object" && this.content')() || Function("return this")()),
            g = ft.API,
            v = function(t) {
                var e, n, i, r, o, a, s, c, l, u;
                for (/[^\x00-\xFF]/.test(t),
                n = [],
                i = 0,
                r = (t += e = "\0\0\0\0".slice(t.length % 4 || 4)).length; i < r; i += 4)
                    0 !== (o = (t.charCodeAt(i) << 24) + (t.charCodeAt(i + 1) << 16) + (t.charCodeAt(i + 2) << 8) + t.charCodeAt(i + 3)) ? (a = (o = ((o = ((o = ((o = (o - (u = o % 85)) / 85) - (l = o % 85)) / 85) - (c = o % 85)) / 85) - (s = o % 85)) / 85) % 85,
                    n.push(a + 33, s + 33, c + 33, l + 33, u + 33)) : n.push(122);
                return function(t, n) {
                    for (var i = e.length; 0 < i; i--)
                        t.pop()
                }(n),
                String.fromCharCode.apply(String, n) + "~>"
            }
            ,
            y = function(t) {
                var e, n, i, r, o, a = String, s = "length", c = "charCodeAt", l = "slice", u = "replace";
                for (t[l](-2),
                t = t[l](0, -2)[u](/\s/g, "")[u]("z", "!!!!!"),
                i = [],
                r = 0,
                o = (t += e = "uuuuu"[l](t[s] % 5 || 5))[s]; r < o; r += 5)
                    n = 52200625 * (t[c](r) - 33) + 614125 * (t[c](r + 1) - 33) + 7225 * (t[c](r + 2) - 33) + 85 * (t[c](r + 3) - 33) + (t[c](r + 4) - 33),
                    i.push(255 & n >> 24, 255 & n >> 16, 255 & n >> 8, 255 & n);
                return function(t, n) {
                    for (var i = e[s]; 0 < i; i--)
                        t.pop()
                }(i),
                a.fromCharCode.apply(a, i)
            }
            ,
            b = function(t) {
                for (var e = "", n = 0; n < t.length; n += 1)
                    e += ("0" + t.charCodeAt(n).toString(16)).slice(-2);
                return e + ">"
            }
            ,
            w = function(t) {
                var e = new RegExp(/^([0-9A-Fa-f]{2})+$/);
                if (-1 !== (t = t.replace(/\s/g, "")).indexOf(">") && (t = t.substr(0, t.indexOf(">"))),
                t.length % 2 && (t += "0"),
                !1 === e.test(t))
                    return "";
                for (var n = "", i = 0; i < t.length; i += 2)
                    n += String.fromCharCode("0x" + (t[i] + t[i + 1]));
                return n
            }
            ,
            S = function(t, e) {
                e = Object.assign({
                    predictor: 1,
                    colors: 1,
                    bitsPerComponent: 8,
                    columns: 1
                }, e);
                for (var n, i, r = [], o = t.length; o--; )
                    r[o] = t.charCodeAt(o);
                return n = g.adler32cs.from(t),
                (i = new Deflater(6)).append(new Uint8Array(r)),
                t = i.flush(),
                (r = new Uint8Array(t.length + 6)).set(new Uint8Array([120, 156])),
                r.set(t, 2),
                r.set(new Uint8Array([255 & n, n >> 8 & 255, n >> 16 & 255, n >> 24 & 255]), t.length + 2),
                String.fromCharCode.apply(null, r)
            }
            ,
            g.processDataByFilters = function(t, e) {
                var n = 0
                  , i = t || ""
                  , r = [];
                for ("string" == typeof (e = e || []) && (e = [e]),
                n = 0; n < e.length; n += 1)
                    switch (e[n]) {
                    case "ASCII85Decode":
                    case "/ASCII85Decode":
                        i = y(i),
                        r.push("/ASCII85Encode");
                        break;
                    case "ASCII85Encode":
                    case "/ASCII85Encode":
                        i = v(i),
                        r.push("/ASCII85Decode");
                        break;
                    case "ASCIIHexDecode":
                    case "/ASCIIHexDecode":
                        i = w(i),
                        r.push("/ASCIIHexEncode");
                        break;
                    case "ASCIIHexEncode":
                    case "/ASCIIHexEncode":
                        i = b(i),
                        r.push("/ASCIIHexDecode");
                        break;
                    case "FlateEncode":
                    case "/FlateEncode":
                        i = S(i),
                        r.push("/FlateDecode");
                        break;
                    default:
                        throw 'The filter: "' + e[n] + '" is not implemented'
                    }
                return {
                    data: i,
                    reverseChain: r.reverse().join(" ")
                }
            }
            ,
            (x = ft.API).loadFile = function(t, e, n) {
                var i;
                e = e || !0,
                n = n || function() {}
                ;
                try {
                    i = function(t, e, n) {
                        var i = new XMLHttpRequest
                          , r = []
                          , o = 0
                          , a = function(t) {
                            var e = t.length
                              , n = String.fromCharCode;
                            for (o = 0; o < e; o += 1)
                                r.push(n(255 & t.charCodeAt(o)));
                            return r.join("")
                        };
                        if (i.open("GET", t, !e),
                        i.overrideMimeType("text/plain; charset=x-user-defined"),
                        !1 === e && (i.onload = function() {
                            return a(this.responseText)
                        }
                        ),
                        i.send(null),
                        200 === i.status)
                            return e ? a(i.responseText) : void 0;
                        console.warn('Unable to load file "' + t + '"')
                    }(t, e)
                } catch (t) {
                    i = void 0
                }
                return i
            }
            ,
            x.loadImageFile = x.loadFile,
            M = ft.API,
            E = "undefined" != typeof window && window || void 0 !== i && i,
            C = function(t) {
                var e = r(t);
                return "undefined" === e ? "undefined" : "string" === e || t instanceof String ? "string" : "number" === e || t instanceof Number ? "number" : "function" === e || t instanceof Function ? "function" : t && t.constructor === Array ? "array" : t && 1 === t.nodeType ? "element" : "object" === e ? "object" : "unknown"
            }
            ,
            A = function(t, e) {
                var n = document.createElement(t);
                if (e.className && (n.className = e.className),
                e.innerHTML) {
                    n.innerHTML = e.innerHTML;
                    for (var i = n.getElementsByTagName("script"), r = i.length; 0 < r--; null)
                        i[r].parentNode.removeChild(i[r])
                }
                for (var o in e.style)
                    n.style[o] = e.style[o];
                return n
            }
            ,
            (((T = function t(e) {
                var n = Object.assign(t.convert(Promise.resolve()), JSON.parse(JSON.stringify(t.template)))
                  , i = t.convert(Promise.resolve(), n);
                return (i = i.setProgress(1, t, 1, [t])).set(e)
            }
            ).prototype = Object.create(Promise.prototype)).constructor = T).convert = function(t, e) {
                return t.__proto__ = e || T.prototype,
                t
            }
            ,
            T.template = {
                prop: {
                    src: null,
                    container: null,
                    overlay: null,
                    canvas: null,
                    img: null,
                    pdf: null,
                    pageSize: null,
                    callback: function() {}
                },
                progress: {
                    val: 0,
                    state: null,
                    n: 0,
                    stack: []
                },
                opt: {
                    filename: "file.pdf",
                    margin: [0, 0, 0, 0],
                    enableLinks: !0,
                    x: 0,
                    y: 0,
                    html2canvas: {},
                    jsPDF: {}
                }
            },
            T.prototype.from = function(t, e) {
                return this.then((function() {
                    switch (e = e || function(t) {
                        switch (C(t)) {
                        case "string":
                            return "string";
                        case "element":
                            return "canvas" === t.nodeName.toLowerCase ? "canvas" : "element";
                        default:
                            return "unknown"
                        }
                    }(t)) {
                    case "string":
                        return this.set({
                            src: A("div", {
                                innerHTML: t
                            })
                        });
                    case "element":
                        return this.set({
                            src: t
                        });
                    case "canvas":
                        return this.set({
                            canvas: t
                        });
                    case "img":
                        return this.set({
                            img: t
                        });
                    default:
                        return this.error("Unknown source type.")
                    }
                }
                ))
            }
            ,
            T.prototype.to = function(t) {
                switch (t) {
                case "container":
                    return this.toContainer();
                case "canvas":
                    return this.toCanvas();
                case "img":
                    return this.toImg();
                case "pdf":
                    return this.toPdf();
                default:
                    return this.error("Invalid target.")
                }
            }
            ,
            T.prototype.toContainer = function() {
                return this.thenList([function() {
                    return this.prop.src || this.error("Cannot duplicate - no source HTML.")
                }
                , function() {
                    return this.prop.pageSize || this.setPageSize()
                }
                ]).then((function() {
                    var t = {
                        position: "relative",
                        display: "inline-block",
                        width: Math.max(this.prop.src.clientWidth, this.prop.src.scrollWidth, this.prop.src.offsetWidth) + "px",
                        left: 0,
                        right: 0,
                        top: 0,
                        margin: "auto",
                        backgroundColor: "white"
                    }
                      , e = function t(e, n) {
                        for (var i = 3 === e.nodeType ? document.createTextNode(e.nodeValue) : e.cloneNode(!1), r = e.firstChild; r; r = r.nextSibling)
                            !0 !== n && 1 === r.nodeType && "SCRIPT" === r.nodeName || i.appendChild(t(r, n));
                        return 1 === e.nodeType && ("CANVAS" === e.nodeName ? (i.width = e.width,
                        i.height = e.height,
                        i.getContext("2d").drawImage(e, 0, 0)) : "TEXTAREA" !== e.nodeName && "SELECT" !== e.nodeName || (i.value = e.value),
                        i.addEventListener("load", (function() {
                            i.scrollTop = e.scrollTop,
                            i.scrollLeft = e.scrollLeft
                        }
                        ), !0)),
                        i
                    }(this.prop.src, this.opt.html2canvas.javascriptEnabled);
                    "BODY" === e.tagName && (t.height = Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight) + "px"),
                    this.prop.overlay = A("div", {
                        className: "html2pdf__overlay",
                        style: {
                            position: "fixed",
                            overflow: "hidden",
                            zIndex: 1e3,
                            left: "-100000px",
                            right: 0,
                            bottom: 0,
                            top: 0
                        }
                    }),
                    this.prop.container = A("div", {
                        className: "html2pdf__container",
                        style: t
                    }),
                    this.prop.container.appendChild(e),
                    this.prop.container.firstChild.appendChild(A("div", {
                        style: {
                            clear: "both",
                            border: "0 none transparent",
                            margin: 0,
                            padding: 0,
                            height: 0
                        }
                    })),
                    this.prop.container.style.float = "none",
                    this.prop.overlay.appendChild(this.prop.container),
                    document.body.appendChild(this.prop.overlay),
                    this.prop.container.firstChild.style.position = "relative",
                    this.prop.container.height = Math.max(this.prop.container.firstChild.clientHeight, this.prop.container.firstChild.scrollHeight, this.prop.container.firstChild.offsetHeight) + "px"
                }
                ))
            }
            ,
            T.prototype.toCanvas = function() {
                var t = [function() {
                    return document.body.contains(this.prop.container) || this.toContainer()
                }
                ];
                return this.thenList(t).then((function() {
                    var t = Object.assign({}, this.opt.html2canvas);
                    if (delete t.onrendered,
                    this.isHtml2CanvasLoaded())
                        return html2canvas(this.prop.container, t)
                }
                )).then((function(t) {
                    (this.opt.html2canvas.onrendered || function() {}
                    )(t),
                    this.prop.canvas = t,
                    document.body.removeChild(this.prop.overlay)
                }
                ))
            }
            ,
            T.prototype.toContext2d = function() {
                var t = [function() {
                    return document.body.contains(this.prop.container) || this.toContainer()
                }
                ];
                return this.thenList(t).then((function() {
                    var t = this.opt.jsPDF
                      , e = Object.assign({
                        async: !0,
                        allowTaint: !0,
                        backgroundColor: "#ffffff",
                        imageTimeout: 15e3,
                        logging: !0,
                        proxy: null,
                        removeContainer: !0,
                        foreignObjectRendering: !1,
                        useCORS: !1
                    }, this.opt.html2canvas);
                    if (delete e.onrendered,
                    t.context2d.autoPaging = !0,
                    t.context2d.posX = this.opt.x,
                    t.context2d.posY = this.opt.y,
                    e.windowHeight = e.windowHeight || 0,
                    e.windowHeight = 0 == e.windowHeight ? Math.max(this.prop.container.clientHeight, this.prop.container.scrollHeight, this.prop.container.offsetHeight) : e.windowHeight,
                    this.isHtml2CanvasLoaded())
                        return html2canvas(this.prop.container, e)
                }
                )).then((function(t) {
                    (this.opt.html2canvas.onrendered || function() {}
                    )(t),
                    this.prop.canvas = t,
                    document.body.removeChild(this.prop.overlay)
                }
                ))
            }
            ,
            T.prototype.toImg = function() {
                return this.thenList([function() {
                    return this.prop.canvas || this.toCanvas()
                }
                ]).then((function() {
                    var t = this.prop.canvas.toDataURL("image/" + this.opt.image.type, this.opt.image.quality);
                    this.prop.img = document.createElement("img"),
                    this.prop.img.src = t
                }
                ))
            }
            ,
            T.prototype.toPdf = function() {
                return this.thenList([function() {
                    return this.toContext2d()
                }
                ]).then((function() {
                    this.prop.pdf = this.prop.pdf || this.opt.jsPDF
                }
                ))
            }
            ,
            T.prototype.output = function(t, e, n) {
                return "img" === (n = n || "pdf").toLowerCase() || "image" === n.toLowerCase() ? this.outputImg(t, e) : this.outputPdf(t, e)
            }
            ,
            T.prototype.outputPdf = function(t, e) {
                return this.thenList([function() {
                    return this.prop.pdf || this.toPdf()
                }
                ]).then((function() {
                    return this.prop.pdf.output(t, e)
                }
                ))
            }
            ,
            T.prototype.outputImg = function(t, e) {
                return this.thenList([function() {
                    return this.prop.img || this.toImg()
                }
                ]).then((function() {
                    switch (t) {
                    case void 0:
                    case "img":
                        return this.prop.img;
                    case "datauristring":
                    case "dataurlstring":
                        return this.prop.img.src;
                    case "datauri":
                    case "dataurl":
                        return document.location.href = this.prop.img.src;
                    default:
                        throw 'Image output type "' + t + '" is not supported.'
                    }
                }
                ))
            }
            ,
            T.prototype.isHtml2CanvasLoaded = function() {
                var t = void 0 !== E.html2canvas;
                return t || console.error("html2canvas not loaded."),
                t
            }
            ,
            T.prototype.save = function(t) {
                if (this.isHtml2CanvasLoaded())
                    return this.thenList([function() {
                        return this.prop.pdf || this.toPdf()
                    }
                    ]).set(t ? {
                        filename: t
                    } : null).then((function() {
                        this.prop.pdf.save(this.opt.filename)
                    }
                    ))
            }
            ,
            T.prototype.doCallback = function(t) {
                if (this.isHtml2CanvasLoaded())
                    return this.thenList([function() {
                        return this.prop.pdf || this.toPdf()
                    }
                    ]).then((function() {
                        this.prop.callback(this.prop.pdf)
                    }
                    ))
            }
            ,
            T.prototype.set = function(t) {
                if ("object" !== C(t))
                    return this;
                var e = Object.keys(t || {}).map((function(e) {
                    if (e in T.template.prop)
                        return function() {
                            this.prop[e] = t[e]
                        }
                        ;
                    switch (e) {
                    case "margin":
                        return this.setMargin.bind(this, t.margin);
                    case "jsPDF":
                        return function() {
                            return this.opt.jsPDF = t.jsPDF,
                            this.setPageSize()
                        }
                        ;
                    case "pageSize":
                        return this.setPageSize.bind(this, t.pageSize);
                    default:
                        return function() {
                            this.opt[e] = t[e]
                        }
                    }
                }
                ), this);
                return this.then((function() {
                    return this.thenList(e)
                }
                ))
            }
            ,
            T.prototype.get = function(t, e) {
                return this.then((function() {
                    var n = t in T.template.prop ? this.prop[t] : this.opt[t];
                    return e ? e(n) : n
                }
                ))
            }
            ,
            T.prototype.setMargin = function(t) {
                return this.then((function() {
                    switch (C(t)) {
                    case "number":
                        t = [t, t, t, t];
                    case "array":
                        if (2 === t.length && (t = [t[0], t[1], t[0], t[1]]),
                        4 === t.length)
                            break;
                    default:
                        return this.error("Invalid margin array.")
                    }
                    this.opt.margin = t
                }
                )).then(this.setPageSize)
            }
            ,
            T.prototype.setPageSize = function(t) {
                function e(t, e) {
                    return Math.floor(t * e / 72 * 96)
                }
                return this.then((function() {
                    (t = t || ft.getPageSize(this.opt.jsPDF)).hasOwnProperty("inner") || (t.inner = {
                        width: t.width - this.opt.margin[1] - this.opt.margin[3],
                        height: t.height - this.opt.margin[0] - this.opt.margin[2]
                    },
                    t.inner.px = {
                        width: e(t.inner.width, t.k),
                        height: e(t.inner.height, t.k)
                    },
                    t.inner.ratio = t.inner.height / t.inner.width),
                    this.prop.pageSize = t
                }
                ))
            }
            ,
            T.prototype.setProgress = function(t, e, n, i) {
                return null != t && (this.progress.val = t),
                null != e && (this.progress.state = e),
                null != n && (this.progress.n = n),
                null != i && (this.progress.stack = i),
                this.progress.ratio = this.progress.val / this.progress.state,
                this
            }
            ,
            T.prototype.updateProgress = function(t, e, n, i) {
                return this.setProgress(t ? this.progress.val + t : null, e || null, n ? this.progress.n + n : null, i ? this.progress.stack.concat(i) : null)
            }
            ,
            T.prototype.then = function(t, e) {
                var n = this;
                return this.thenCore(t, e, (function(t, e) {
                    return n.updateProgress(null, null, 1, [t]),
                    Promise.prototype.then.call(this, (function(e) {
                        return n.updateProgress(null, t),
                        e
                    }
                    )).then(t, e).then((function(t) {
                        return n.updateProgress(1),
                        t
                    }
                    ))
                }
                ))
            }
            ,
            T.prototype.thenCore = function(t, e, n) {
                n = n || Promise.prototype.then;
                var i = this;
                t && (t = t.bind(i)),
                e && (e = e.bind(i));
                var r = -1 !== Promise.toString().indexOf("[native code]") && "Promise" === Promise.name ? i : T.convert(Object.assign({}, i), Promise.prototype)
                  , o = n.call(r, t, e);
                return T.convert(o, i.__proto__)
            }
            ,
            T.prototype.thenExternal = function(t, e) {
                return Promise.prototype.then.call(this, t, e)
            }
            ,
            T.prototype.thenList = function(t) {
                var e = this;
                return t.forEach((function(t) {
                    e = e.thenCore(t)
                }
                )),
                e
            }
            ,
            T.prototype.catch = function(t) {
                t && (t = t.bind(this));
                var e = Promise.prototype.catch.call(this, t);
                return T.convert(e, this)
            }
            ,
            T.prototype.catchExternal = function(t) {
                return Promise.prototype.catch.call(this, t)
            }
            ,
            T.prototype.error = function(t) {
                return this.then((function() {
                    throw new Error(t)
                }
                ))
            }
            ,
            T.prototype.using = T.prototype.set,
            T.prototype.saveAs = T.prototype.save,
            T.prototype.export = T.prototype.output,
            T.prototype.run = T.prototype.then,
            ft.getPageSize = function(t, e, n) {
                if ("object" === r(t)) {
                    var i = t;
                    t = i.orientation,
                    e = i.unit || e,
                    n = i.format || n
                }
                e = e || "mm",
                n = n || "a4",
                t = ("" + (t || "P")).toLowerCase();
                var o = ("" + n).toLowerCase()
                  , a = {
                    a0: [2383.94, 3370.39],
                    a1: [1683.78, 2383.94],
                    a2: [1190.55, 1683.78],
                    a3: [841.89, 1190.55],
                    a4: [595.28, 841.89],
                    a5: [419.53, 595.28],
                    a6: [297.64, 419.53],
                    a7: [209.76, 297.64],
                    a8: [147.4, 209.76],
                    a9: [104.88, 147.4],
                    a10: [73.7, 104.88],
                    b0: [2834.65, 4008.19],
                    b1: [2004.09, 2834.65],
                    b2: [1417.32, 2004.09],
                    b3: [1000.63, 1417.32],
                    b4: [708.66, 1000.63],
                    b5: [498.9, 708.66],
                    b6: [354.33, 498.9],
                    b7: [249.45, 354.33],
                    b8: [175.75, 249.45],
                    b9: [124.72, 175.75],
                    b10: [87.87, 124.72],
                    c0: [2599.37, 3676.54],
                    c1: [1836.85, 2599.37],
                    c2: [1298.27, 1836.85],
                    c3: [918.43, 1298.27],
                    c4: [649.13, 918.43],
                    c5: [459.21, 649.13],
                    c6: [323.15, 459.21],
                    c7: [229.61, 323.15],
                    c8: [161.57, 229.61],
                    c9: [113.39, 161.57],
                    c10: [79.37, 113.39],
                    dl: [311.81, 623.62],
                    letter: [612, 792],
                    "government-letter": [576, 756],
                    legal: [612, 1008],
                    "junior-legal": [576, 360],
                    ledger: [1224, 792],
                    tabloid: [792, 1224],
                    "credit-card": [153, 243]
                };
                switch (e) {
                case "pt":
                    var s = 1;
                    break;
                case "mm":
                    s = 72 / 25.4;
                    break;
                case "cm":
                    s = 72 / 2.54;
                    break;
                case "in":
                    s = 72;
                    break;
                case "px":
                    s = .75;
                    break;
                case "pc":
                case "em":
                    s = 12;
                    break;
                case "ex":
                    s = 6;
                    break;
                default:
                    throw "Invalid unit: " + e
                }
                if (a.hasOwnProperty(o))
                    var c = a[o][1] / s
                      , l = a[o][0] / s;
                else
                    try {
                        c = n[1],
                        l = n[0]
                    } catch (t) {
                        throw new Error("Invalid format: " + n)
                    }
                if ("p" === t || "portrait" === t) {
                    if (t = "p",
                    c < l) {
                        var u = l;
                        l = c,
                        c = u
                    }
                } else {
                    if ("l" !== t && "landscape" !== t)
                        throw "Invalid orientation: " + t;
                    t = "l",
                    l < c && (u = l,
                    l = c,
                    c = u)
                }
                return {
                    width: l,
                    height: c,
                    unit: e,
                    k: s
                }
            }
            ,
            M.html = function(t, e) {
                (e = e || {}).callback = e.callback || function() {}
                ,
                e.html2canvas = e.html2canvas || {},
                e.html2canvas.canvas = e.html2canvas.canvas || this.canvas,
                e.jsPDF = e.jsPDF || this,
                e.jsPDF;
                var n = new T(e);
                return e.worker ? n : n.from(t).doCallback()
            }
            ,
            ft.API.addJS = function(t) {
                return P = t,
                this.internal.events.subscribe("postPutResources", (function(t) {
                    O = this.internal.newObject(),
                    this.internal.out("<<"),
                    this.internal.out("/Names [(EmbeddedJS) " + (O + 1) + " 0 R]"),
                    this.internal.out(">>"),
                    this.internal.out("endobj"),
                    _ = this.internal.newObject(),
                    this.internal.out("<<"),
                    this.internal.out("/S /JavaScript"),
                    this.internal.out("/JS (" + P + ")"),
                    this.internal.out(">>"),
                    this.internal.out("endobj")
                }
                )),
                this.internal.events.subscribe("putCatalog", (function() {
                    void 0 !== O && void 0 !== _ && this.internal.out("/Names <</JavaScript " + O + " 0 R>>")
                }
                )),
                this
            }
            ,
            /**
   * @license
   * Copyright (c) 2014 Steven Spungin (TwelveTone LLC)  steven@twelvetone.tv
   *
   * Licensed under the MIT License.
   * http://opensource.org/licenses/mit-license
   */
            (I = ft.API).events.push(["postPutResources", function() {
                var t = this
                  , e = /^(\d+) 0 obj$/;
                if (0 < this.outline.root.children.length)
                    for (var n = t.outline.render().split(/\r\n/), i = 0; i < n.length; i++) {
                        var r = n[i]
                          , o = e.exec(r);
                        if (null != o) {
                            var a = o[1];
                            t.internal.newObjectDeferredBegin(a, !1)
                        }
                        t.internal.write(r)
                    }
                if (this.outline.createNamedDestinations) {
                    var s = this.internal.pages.length
                      , c = [];
                    for (i = 0; i < s; i++) {
                        var l = t.internal.newObject();
                        c.push(l);
                        var u = t.internal.getPageInfo(i + 1);
                        t.internal.write("<< /D[" + u.objId + " 0 R /XYZ null null null]>> endobj")
                    }
                    var d = t.internal.newObject();
                    for (t.internal.write("<< /Names [ "),
                    i = 0; i < c.length; i++)
                        t.internal.write("(page_" + (i + 1) + ")" + c[i] + " 0 R");
                    t.internal.write(" ] >>", "endobj"),
                    t.internal.newObject(),
                    t.internal.write("<< /Dests " + d + " 0 R"),
                    t.internal.write(">>", "endobj")
                }
            }
            ]),
            I.events.push(["putCatalog", function() {
                0 < this.outline.root.children.length && (this.internal.write("/Outlines", this.outline.makeRef(this.outline.root)),
                this.outline.createNamedDestinations && this.internal.write("/Names " + namesOid + " 0 R"))
            }
            ]),
            I.events.push(["initialized", function() {
                var t = this;
                t.outline = {
                    createNamedDestinations: !1,
                    root: {
                        children: []
                    }
                },
                t.outline.add = function(t, e, n) {
                    var i = {
                        title: e,
                        options: n,
                        children: []
                    };
                    return null == t && (t = this.root),
                    t.children.push(i),
                    i
                }
                ,
                t.outline.render = function() {
                    return this.ctx = {},
                    this.ctx.val = "",
                    this.ctx.pdf = t,
                    this.genIds_r(this.root),
                    this.renderRoot(this.root),
                    this.renderItems(this.root),
                    this.ctx.val
                }
                ,
                t.outline.genIds_r = function(e) {
                    e.id = t.internal.newObjectDeferred();
                    for (var n = 0; n < e.children.length; n++)
                        this.genIds_r(e.children[n])
                }
                ,
                t.outline.renderRoot = function(t) {
                    this.objStart(t),
                    this.line("/Type /Outlines"),
                    0 < t.children.length && (this.line("/First " + this.makeRef(t.children[0])),
                    this.line("/Last " + this.makeRef(t.children[t.children.length - 1]))),
                    this.line("/Count " + this.count_r({
                        count: 0
                    }, t)),
                    this.objEnd()
                }
                ,
                t.outline.renderItems = function(e) {
                    this.ctx.pdf.internal.getCoordinateString;
                    for (var n = this.ctx.pdf.internal.getVerticalCoordinateString, i = 0; i < e.children.length; i++) {
                        var r = e.children[i];
                        this.objStart(r),
                        this.line("/Title " + this.makeString(r.title)),
                        this.line("/Parent " + this.makeRef(e)),
                        0 < i && this.line("/Prev " + this.makeRef(e.children[i - 1])),
                        i < e.children.length - 1 && this.line("/Next " + this.makeRef(e.children[i + 1])),
                        0 < r.children.length && (this.line("/First " + this.makeRef(r.children[0])),
                        this.line("/Last " + this.makeRef(r.children[r.children.length - 1])));
                        var o = this.count = this.count_r({
                            count: 0
                        }, r);
                        if (0 < o && this.line("/Count " + o),
                        r.options && r.options.pageNumber) {
                            var a = t.internal.getPageInfo(r.options.pageNumber);
                            this.line("/Dest [" + a.objId + " 0 R /XYZ 0 " + n(0) + " 0]")
                        }
                        this.objEnd()
                    }
                    for (i = 0; i < e.children.length; i++)
                        r = e.children[i],
                        this.renderItems(r)
                }
                ,
                t.outline.line = function(t) {
                    this.ctx.val += t + "\r\n"
                }
                ,
                t.outline.makeRef = function(t) {
                    return t.id + " 0 R"
                }
                ,
                t.outline.makeString = function(e) {
                    return "(" + t.internal.pdfEscape(e) + ")"
                }
                ,
                t.outline.objStart = function(t) {
                    this.ctx.val += "\r\n" + t.id + " 0 obj\r\n<<\r\n"
                }
                ,
                t.outline.objEnd = function(t) {
                    this.ctx.val += ">> \r\nendobj\r\n"
                }
                ,
                t.outline.count_r = function(t, e) {
                    for (var n = 0; n < e.children.length; n++)
                        t.count++,
                        this.count_r(t, e.children[n]);
                    return t.count
                }
            }
            ]),
            /**
   * @license
   * 
   * Copyright (c) 2014 James Robb, https://github.com/jamesbrobb
   *
   * 
   * ====================================================================
   */
            k = ft.API,
            D = function() {
                var t = "function" == typeof Deflater;
                if (!t)
                    throw new Error("requires deflate.js for compression");
                return t
            }
            ,
            R = function(t, e, n, i) {
                var r = 5
                  , o = U;
                switch (i) {
                case k.image_compression.FAST:
                    r = 3,
                    o = F;
                    break;
                case k.image_compression.MEDIUM:
                    r = 6,
                    o = B;
                    break;
                case k.image_compression.SLOW:
                    r = 9,
                    o = z
                }
                t = j(t, e, n, o);
                var a = new Uint8Array(L(r))
                  , s = N(t)
                  , c = new Deflater(r)
                  , l = c.append(t)
                  , u = c.flush()
                  , d = a.length + l.length + u.length
                  , p = new Uint8Array(d + 4);
                return p.set(a),
                p.set(l, a.length),
                p.set(u, a.length + l.length),
                p[d++] = s >>> 24 & 255,
                p[d++] = s >>> 16 & 255,
                p[d++] = s >>> 8 & 255,
                p[d++] = 255 & s,
                k.arrayBufferToBinaryString(p)
            }
            ,
            L = function(t, e) {
                var n = Math.LOG2E * Math.log(32768) - 8 << 4 | 8
                  , i = n << 8;
                return i |= Math.min(3, (e - 1 & 255) >> 1) << 6,
                i |= 0,
                [n, 255 & (i += 31 - i % 31)]
            }
            ,
            N = function(t, e) {
                for (var n, i = 1, r = 0, o = t.length, a = 0; 0 < o; ) {
                    for (o -= n = e < o ? e : o; r += i += t[a++],
                    --n; )
                        ;
                    i %= 65521,
                    r %= 65521
                }
                return (r << 16 | i) >>> 0
            }
            ,
            j = function(t, e, n, i) {
                for (var r, o, a, s = t.length / e, c = new Uint8Array(t.length + s), l = H(), u = 0; u < s; u++) {
                    if (a = u * e,
                    r = t.subarray(a, a + e),
                    i)
                        c.set(i(r, n, o), a + u);
                    else {
                        for (var d = 0, p = l.length, h = []; d < p; d++)
                            h[d] = l[d](r, n, o);
                        var f = W(h.concat());
                        c.set(h[f], a + u)
                    }
                    o = r
                }
                return c
            }
            ,
            V = function(t, e, n) {
                var i = Array.apply([], t);
                return i.unshift(0),
                i
            }
            ,
            F = function(t, e, n) {
                var i, r = [], o = 0, a = t.length;
                for (r[0] = 1; o < a; o++)
                    i = t[o - e] || 0,
                    r[o + 1] = t[o] - i + 256 & 255;
                return r
            }
            ,
            U = function(t, e, n) {
                var i, r = [], o = 0, a = t.length;
                for (r[0] = 2; o < a; o++)
                    i = n && n[o] || 0,
                    r[o + 1] = t[o] - i + 256 & 255;
                return r
            }
            ,
            B = function(t, e, n) {
                var i, r, o = [], a = 0, s = t.length;
                for (o[0] = 3; a < s; a++)
                    i = t[a - e] || 0,
                    r = n && n[a] || 0,
                    o[a + 1] = t[a] + 256 - (i + r >>> 1) & 255;
                return o
            }
            ,
            z = function(t, e, n) {
                var i, r, o, a, s = [], c = 0, l = t.length;
                for (s[0] = 4; c < l; c++)
                    i = t[c - e] || 0,
                    r = n && n[c] || 0,
                    o = n && n[c - e] || 0,
                    a = G(i, r, o),
                    s[c + 1] = t[c] - a + 256 & 255;
                return s
            }
            ,
            G = function(t, e, n) {
                var i = t + e - n
                  , r = Math.abs(i - t)
                  , o = Math.abs(i - e)
                  , a = Math.abs(i - n);
                return r <= o && r <= a ? t : o <= a ? e : n
            }
            ,
            H = function() {
                return [V, F, U, B, z]
            }
            ,
            W = function(t) {
                for (var e, n, i, r = 0, o = t.length; r < o; )
                    ((e = q(t[r].slice(1))) < n || !n) && (n = e,
                    i = r),
                    r++;
                return i
            }
            ,
            q = function(t) {
                for (var e = 0, n = t.length, i = 0; e < n; )
                    i += Math.abs(t[e++]);
                return i
            }
            ,
            k.processPNG = function(t, e, n, i, r) {
                var o, a, s, c, l, u, d = this.color_spaces.DEVICE_RGB, p = this.decode.FLATE_DECODE, h = 8;
                if (this.isArrayBuffer(t) && (t = new Uint8Array(t)),
                this.isArrayBufferView(t)) {
                    if ("function" != typeof PNG || "function" != typeof Nt)
                        throw new Error("PNG support requires png.js and zlib.js");
                    if (t = (o = new PNG(t)).imgData,
                    h = o.bits,
                    d = o.colorSpace,
                    c = o.colors,
                    -1 !== [4, 6].indexOf(o.colorType)) {
                        if (8 === o.bits)
                            for (var f, m = (A = 32 == o.pixelBitlength ? new Uint32Array(o.decodePixels().buffer) : 16 == o.pixelBitlength ? new Uint16Array(o.decodePixels().buffer) : new Uint8Array(o.decodePixels().buffer)).length, g = new Uint8Array(m * o.colors), v = new Uint8Array(m), y = o.pixelBitlength - o.bits, b = 0, w = 0; b < m; b++) {
                                for (S = A[b],
                                f = 0; f < y; )
                                    g[w++] = S >>> f & 255,
                                    f += o.bits;
                                v[b] = S >>> f & 255
                            }
                        if (16 === o.bits) {
                            m = (A = new Uint32Array(o.decodePixels().buffer)).length,
                            g = new Uint8Array(m * (32 / o.pixelBitlength) * o.colors),
                            v = new Uint8Array(m * (32 / o.pixelBitlength));
                            for (var S, x = 1 < o.colors, M = w = b = 0; b < m; )
                                S = A[b++],
                                g[w++] = S >>> 0 & 255,
                                x && (g[w++] = S >>> 16 & 255,
                                S = A[b++],
                                g[w++] = S >>> 0 & 255),
                                v[M++] = S >>> 16 & 255;
                            h = 8
                        }
                        i !== k.image_compression.NONE && D() ? (t = R(g, o.width * o.colors, o.colors, i),
                        u = R(v, o.width, 1, i)) : (t = g,
                        u = v,
                        p = null)
                    }
                    if (3 === o.colorType && (d = this.color_spaces.INDEXED,
                    l = o.palette,
                    o.transparency.indexed)) {
                        var E = o.transparency.indexed
                          , C = 0;
                        for (b = 0,
                        m = E.length; b < m; ++b)
                            C += E[b];
                        if ((C /= 255) == m - 1 && -1 !== E.indexOf(0))
                            s = [E.indexOf(0)];
                        else if (C !== m) {
                            var A = o.decodePixels();
                            for (v = new Uint8Array(A.length),
                            b = 0,
                            m = A.length; b < m; b++)
                                v[b] = E[A[b]];
                            u = R(v, o.width, 1)
                        }
                    }
                    var T = function(t) {
                        var e;
                        switch (t) {
                        case k.image_compression.FAST:
                            e = 11;
                            break;
                        case k.image_compression.MEDIUM:
                            e = 13;
                            break;
                        case k.image_compression.SLOW:
                            e = 14;
                            break;
                        default:
                            e = 12
                        }
                        return e
                    }(i);
                    return a = p === this.decode.FLATE_DECODE ? "/Predictor " + T + " /Colors " + c + " /BitsPerComponent " + h + " /Columns " + o.width : "/Colors " + c + " /BitsPerComponent " + h + " /Columns " + o.width,
                    (this.isArrayBuffer(t) || this.isArrayBufferView(t)) && (t = this.arrayBufferToBinaryString(t)),
                    (u && this.isArrayBuffer(u) || this.isArrayBufferView(u)) && (u = this.arrayBufferToBinaryString(u)),
                    this.createImageInfo(t, o.width, o.height, d, h, p, e, n, a, s, l, u, T)
                }
                throw new Error("Unsupported PNG image data, try using JPEG instead.")
            }
            ,
            /**
   * @license
   * Copyright (c) 2017 Aras Abbasi 
   *
   * Licensed under the MIT License.
   * http://opensource.org/licenses/mit-license
   */
            (X = ft.API).processGIF89A = function(t, e, n, i, r) {
                var o = new It(t)
                  , a = o.width
                  , s = o.height
                  , c = [];
                o.decodeAndBlitFrameRGBA(0, c);
                var l = {
                    data: c,
                    width: a,
                    height: s
                }
                  , u = new Dt(100).encode(l, 100);
                return X.processJPEG.call(this, u, e, n, i)
            }
            ,
            X.processGIF87A = X.processGIF89A,
            (Y = ft.API).processBMP = function(t, e, n, i, r) {
                var o = new Rt(t,!1)
                  , a = o.width
                  , s = o.height
                  , c = {
                    data: o.getData(),
                    width: a,
                    height: s
                }
                  , l = new Dt(100).encode(c, 100);
                return Y.processJPEG.call(this, l, e, n, i)
            }
            ,
            ft.API.setLanguage = function(t) {
                return void 0 === this.internal.languageSettings && (this.internal.languageSettings = {},
                this.internal.languageSettings.isSubscribed = !1),
                void 0 !== {
                    af: "Afrikaans",
                    sq: "Albanian",
                    ar: "Arabic (Standard)",
                    "ar-DZ": "Arabic (Algeria)",
                    "ar-BH": "Arabic (Bahrain)",
                    "ar-EG": "Arabic (Egypt)",
                    "ar-IQ": "Arabic (Iraq)",
                    "ar-JO": "Arabic (Jordan)",
                    "ar-KW": "Arabic (Kuwait)",
                    "ar-LB": "Arabic (Lebanon)",
                    "ar-LY": "Arabic (Libya)",
                    "ar-MA": "Arabic (Morocco)",
                    "ar-OM": "Arabic (Oman)",
                    "ar-QA": "Arabic (Qatar)",
                    "ar-SA": "Arabic (Saudi Arabia)",
                    "ar-SY": "Arabic (Syria)",
                    "ar-TN": "Arabic (Tunisia)",
                    "ar-AE": "Arabic (U.A.E.)",
                    "ar-YE": "Arabic (Yemen)",
                    an: "Aragonese",
                    hy: "Armenian",
                    as: "Assamese",
                    ast: "Asturian",
                    az: "Azerbaijani",
                    eu: "Basque",
                    be: "Belarusian",
                    bn: "Bengali",
                    bs: "Bosnian",
                    br: "Breton",
                    bg: "Bulgarian",
                    my: "Burmese",
                    ca: "Catalan",
                    ch: "Chamorro",
                    ce: "Chechen",
                    zh: "Chinese",
                    "zh-HK": "Chinese (Hong Kong)",
                    "zh-CN": "Chinese (PRC)",
                    "zh-SG": "Chinese (Singapore)",
                    "zh-TW": "Chinese (Taiwan)",
                    cv: "Chuvash",
                    co: "Corsican",
                    cr: "Cree",
                    hr: "Croatian",
                    cs: "Czech",
                    da: "Danish",
                    nl: "Dutch (Standard)",
                    "nl-BE": "Dutch (Belgian)",
                    en: "English",
                    "en-AU": "English (Australia)",
                    "en-BZ": "English (Belize)",
                    "en-CA": "English (Canada)",
                    "en-IE": "English (Ireland)",
                    "en-JM": "English (Jamaica)",
                    "en-NZ": "English (New Zealand)",
                    "en-PH": "English (Philippines)",
                    "en-ZA": "English (South Africa)",
                    "en-TT": "English (Trinidad & Tobago)",
                    "en-GB": "English (United Kingdom)",
                    "en-US": "English (United States)",
                    "en-ZW": "English (Zimbabwe)",
                    eo: "Esperanto",
                    et: "Estonian",
                    fo: "Faeroese",
                    fj: "Fijian",
                    fi: "Finnish",
                    fr: "French (Standard)",
                    "fr-BE": "French (Belgium)",
                    "fr-CA": "French (Canada)",
                    "fr-FR": "French (France)",
                    "fr-LU": "French (Luxembourg)",
                    "fr-MC": "French (Monaco)",
                    "fr-CH": "French (Switzerland)",
                    fy: "Frisian",
                    fur: "Friulian",
                    gd: "Gaelic (Scots)",
                    "gd-IE": "Gaelic (Irish)",
                    gl: "Galacian",
                    ka: "Georgian",
                    de: "German (Standard)",
                    "de-AT": "German (Austria)",
                    "de-DE": "German (Germany)",
                    "de-LI": "German (Liechtenstein)",
                    "de-LU": "German (Luxembourg)",
                    "de-CH": "German (Switzerland)",
                    el: "Greek",
                    gu: "Gujurati",
                    ht: "Haitian",
                    he: "Hebrew",
                    hi: "Hindi",
                    hu: "Hungarian",
                    is: "Icelandic",
                    id: "Indonesian",
                    iu: "Inuktitut",
                    ga: "Irish",
                    it: "Italian (Standard)",
                    "it-CH": "Italian (Switzerland)",
                    ja: "Japanese",
                    kn: "Kannada",
                    ks: "Kashmiri",
                    kk: "Kazakh",
                    km: "Khmer",
                    ky: "Kirghiz",
                    tlh: "Klingon",
                    ko: "Korean",
                    "ko-KP": "Korean (North Korea)",
                    "ko-KR": "Korean (South Korea)",
                    la: "Latin",
                    lv: "Latvian",
                    lt: "Lithuanian",
                    lb: "Luxembourgish",
                    mk: "FYRO Macedonian",
                    ms: "Malay",
                    ml: "Malayalam",
                    mt: "Maltese",
                    mi: "Maori",
                    mr: "Marathi",
                    mo: "Moldavian",
                    nv: "Navajo",
                    ng: "Ndonga",
                    ne: "Nepali",
                    no: "Norwegian",
                    nb: "Norwegian (Bokmal)",
                    nn: "Norwegian (Nynorsk)",
                    oc: "Occitan",
                    or: "Oriya",
                    om: "Oromo",
                    fa: "Persian",
                    "fa-IR": "Persian/Iran",
                    pl: "Polish",
                    pt: "Portuguese",
                    "pt-BR": "Portuguese (Brazil)",
                    pa: "Punjabi",
                    "pa-IN": "Punjabi (India)",
                    "pa-PK": "Punjabi (Pakistan)",
                    qu: "Quechua",
                    rm: "Rhaeto-Romanic",
                    ro: "Romanian",
                    "ro-MO": "Romanian (Moldavia)",
                    ru: "Russian",
                    "ru-MO": "Russian (Moldavia)",
                    sz: "Sami (Lappish)",
                    sg: "Sango",
                    sa: "Sanskrit",
                    sc: "Sardinian",
                    sd: "Sindhi",
                    si: "Singhalese",
                    sr: "Serbian",
                    sk: "Slovak",
                    sl: "Slovenian",
                    so: "Somani",
                    sb: "Sorbian",
                    es: "Spanish",
                    "es-AR": "Spanish (Argentina)",
                    "es-BO": "Spanish (Bolivia)",
                    "es-CL": "Spanish (Chile)",
                    "es-CO": "Spanish (Colombia)",
                    "es-CR": "Spanish (Costa Rica)",
                    "es-DO": "Spanish (Dominican Republic)",
                    "es-EC": "Spanish (Ecuador)",
                    "es-SV": "Spanish (El Salvador)",
                    "es-GT": "Spanish (Guatemala)",
                    "es-HN": "Spanish (Honduras)",
                    "es-MX": "Spanish (Mexico)",
                    "es-NI": "Spanish (Nicaragua)",
                    "es-PA": "Spanish (Panama)",
                    "es-PY": "Spanish (Paraguay)",
                    "es-PE": "Spanish (Peru)",
                    "es-PR": "Spanish (Puerto Rico)",
                    "es-ES": "Spanish (Spain)",
                    "es-UY": "Spanish (Uruguay)",
                    "es-VE": "Spanish (Venezuela)",
                    sx: "Sutu",
                    sw: "Swahili",
                    sv: "Swedish",
                    "sv-FI": "Swedish (Finland)",
                    "sv-SV": "Swedish (Sweden)",
                    ta: "Tamil",
                    tt: "Tatar",
                    te: "Teluga",
                    th: "Thai",
                    tig: "Tigre",
                    ts: "Tsonga",
                    tn: "Tswana",
                    tr: "Turkish",
                    tk: "Turkmen",
                    uk: "Ukrainian",
                    hsb: "Upper Sorbian",
                    ur: "Urdu",
                    ve: "Venda",
                    vi: "Vietnamese",
                    vo: "Volapuk",
                    wa: "Walloon",
                    cy: "Welsh",
                    xh: "Xhosa",
                    ji: "Yiddish",
                    zu: "Zulu"
                }[t] && (this.internal.languageSettings.languageCode = t,
                !1 === this.internal.languageSettings.isSubscribed && (this.internal.events.subscribe("putCatalog", (function() {
                    this.internal.write("/Lang (" + this.internal.languageSettings.languageCode + ")")
                }
                )),
                this.internal.languageSettings.isSubscribed = !0)),
                this
                /** @license
   * MIT license.
   * Copyright (c) 2012 Willow Systems Corporation, willow-systems.com
   *               2014 Diego Casorran, https://github.com/diegocr
   *
   * 
   * ====================================================================
   */
            }
            ,
            K = ft.API,
            Z = K.getCharWidthsArray = function(t, e) {
                var n, i, r, o = (e = e || {}).font || this.internal.getFont(), a = e.fontSize || this.internal.getFontSize(), s = e.charSpace || this.internal.getCharSpace(), c = e.widths ? e.widths : o.metadata.Unicode.widths, l = c.fof ? c.fof : 1, u = e.kerning ? e.kerning : o.metadata.Unicode.kerning, d = u.fof ? u.fof : 1, p = 0, h = c[0] || l, f = [];
                for (n = 0,
                i = t.length; n < i; n++)
                    r = t.charCodeAt(n),
                    "function" == typeof o.metadata.widthOfString ? f.push((o.metadata.widthOfGlyph(o.metadata.characterToGlyph(r)) + s * (1e3 / a) || 0) / 1e3) : f.push((c[r] || h) / l + (u[r] && u[r][p] || 0) / d),
                    p = r;
                return f
            }
            ,
            J = K.getArraySum = function(t) {
                for (var e = t.length, n = 0; e; )
                    n += t[--e];
                return n
            }
            ,
            Q = K.getStringUnitWidth = function(t, e) {
                var n = (e = e || {}).fontSize || this.internal.getFontSize()
                  , i = e.font || this.internal.getFont()
                  , r = e.charSpace || this.internal.getCharSpace();
                return "function" == typeof i.metadata.widthOfString ? i.metadata.widthOfString(t, n, r) / n : J(Z.apply(this, arguments))
            }
            ,
            $ = function(t, e, n, i) {
                for (var r = [], o = 0, a = t.length, s = 0; o !== a && s + e[o] < n; )
                    s += e[o],
                    o++;
                r.push(t.slice(0, o));
                var c = o;
                for (s = 0; o !== a; )
                    s + e[o] > i && (r.push(t.slice(c, o)),
                    s = 0,
                    c = o),
                    s += e[o],
                    o++;
                return c !== o && r.push(t.slice(c, o)),
                r
            }
            ,
            tt = function(t, e, n) {
                n || (n = {});
                var i, r, o, a, s, c, l = [], u = [l], d = n.textIndent || 0, p = 0, h = 0, f = t.split(" "), m = Z.apply(this, [" ", n])[0];
                if (c = -1 === n.lineIndent ? f[0].length + 2 : n.lineIndent || 0) {
                    var g = Array(c).join(" ")
                      , v = [];
                    f.map((function(t) {
                        1 < (t = t.split(/\s*\n/)).length ? v = v.concat(t.map((function(t, e) {
                            return (e && t.length ? "\n" : "") + t
                        }
                        ))) : v.push(t[0])
                    }
                    )),
                    f = v,
                    c = Q.apply(this, [g, n])
                }
                for (o = 0,
                a = f.length; o < a; o++) {
                    var y = 0;
                    if (i = f[o],
                    c && "\n" == i[0] && (i = i.substr(1),
                    y = 1),
                    r = Z.apply(this, [i, n]),
                    e < d + p + (h = J(r)) || y) {
                        if (e < h) {
                            for (s = $.apply(this, [i, r, e - (d + p), e]),
                            l.push(s.shift()),
                            l = [s.pop()]; s.length; )
                                u.push([s.shift()]);
                            h = J(r.slice(i.length - (l[0] ? l[0].length : 0)))
                        } else
                            l = [i];
                        u.push(l),
                        d = h + c,
                        p = m
                    } else
                        l.push(i),
                        d += p + h,
                        p = m
                }
                if (c)
                    var b = function(t, e) {
                        return (e ? g : "") + t.join(" ")
                    };
                else
                    b = function(t) {
                        return t.join(" ")
                    }
                    ;
                return u.map(b)
            }
            ,
            K.splitTextToSize = function(t, e, n) {
                var i, r = (n = n || {}).fontSize || this.internal.getFontSize(), o = function(t) {
                    if (t.widths && t.kerning)
                        return {
                            widths: t.widths,
                            kerning: t.kerning
                        };
                    var e = this.internal.getFont(t.fontName, t.fontStyle)
                      , n = "Unicode";
                    return e.metadata[n] ? {
                        widths: e.metadata[n].widths || {
                            0: 1
                        },
                        kerning: e.metadata[n].kerning || {}
                    } : {
                        font: e.metadata,
                        fontSize: this.internal.getFontSize(),
                        charSpace: this.internal.getCharSpace()
                    }
                }
                .call(this, n);
                i = Array.isArray(t) ? t : t.split(/\r?\n/);
                var a = 1 * this.internal.scaleFactor * e / r;
                o.textIndent = n.textIndent ? 1 * n.textIndent * this.internal.scaleFactor / r : 0,
                o.lineIndent = n.lineIndent;
                var s, c, l = [];
                for (s = 0,
                c = i.length; s < c; s++)
                    l = l.concat(tt.apply(this, [i[s], a, o]));
                return l
            }
            ,
            /** @license
   jsPDF standard_fonts_metrics plugin
   * Copyright (c) 2012 Willow Systems Corporation, willow-systems.com
   * MIT license.
   * 
   * ====================================================================
   */
            et = ft.API,
            it = {
                codePages: ["WinAnsiEncoding"],
                WinAnsiEncoding: (nt = function(t) {
                    for (var e = "klmnopqrstuvwxyz", n = {}, i = 0; i < e.length; i++)
                        n[e[i]] = "0123456789abcdef"[i];
                    var r, o, a, s, c, l = {}, u = 1, d = l, p = [], h = "", f = "", m = t.length - 1;
                    for (i = 1; i != m; )
                        c = t[i],
                        i += 1,
                        "'" == c ? o = o ? (s = o.join(""),
                        r) : [] : o ? o.push(c) : "{" == c ? (p.push([d, s]),
                        d = {},
                        s = r) : "}" == c ? ((a = p.pop())[0][a[1]] = d,
                        s = r,
                        d = a[0]) : "-" == c ? u = -1 : s === r ? n.hasOwnProperty(c) ? (h += n[c],
                        s = parseInt(h, 16) * u,
                        u = 1,
                        h = "") : h += c : n.hasOwnProperty(c) ? (f += n[c],
                        d[s] = parseInt(f, 16) * u,
                        u = 1,
                        s = r,
                        f = "") : f += c;
                    return l
                }
                )("{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}")
            },
            rt = {
                Unicode: {
                    Courier: it,
                    "Courier-Bold": it,
                    "Courier-BoldOblique": it,
                    "Courier-Oblique": it,
                    Helvetica: it,
                    "Helvetica-Bold": it,
                    "Helvetica-BoldOblique": it,
                    "Helvetica-Oblique": it,
                    "Times-Roman": it,
                    "Times-Bold": it,
                    "Times-BoldItalic": it,
                    "Times-Italic": it
                }
            },
            ot = {
                Unicode: {
                    "Courier-Oblique": nt("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
                    "Times-BoldItalic": nt("{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}"),
                    "Helvetica-Bold": nt("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"),
                    Courier: nt("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
                    "Courier-BoldOblique": nt("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
                    "Times-Bold": nt("{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}"),
                    Symbol: nt("{'widths'{k3uaw4r19m3m2k1t2l2l202m2y2n3m2p5n202q6o3k3m2s2l2t2l2v3r2w1t3m3m2y1t2z1wbk2sbl3r'fof'6o3n3m3o3m3p3m3q3m3r3m3s3m3t3m3u1w3v1w3w3r3x3r3y3r3z2wbp3t3l3m5v2l5x2l5z3m2q4yfr3r7v3k7w1o7x3k}'kerning'{'fof'-6o}}"),
                    Helvetica: nt("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}"),
                    "Helvetica-BoldOblique": nt("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"),
                    ZapfDingbats: nt("{'widths'{k4u2k1w'fof'6o}'kerning'{'fof'-6o}}"),
                    "Courier-Bold": nt("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"),
                    "Times-Italic": nt("{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}"),
                    "Times-Roman": nt("{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}"),
                    "Helvetica-Oblique": nt("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}")
                }
            },
            et.events.push(["addFont", function(t) {
                var e, n, i, r = t.font, o = "Unicode";
                (e = ot[o][r.postScriptName]) && ((n = r.metadata[o] ? r.metadata[o] : r.metadata[o] = {}).widths = e.widths,
                n.kerning = e.kerning),
                (i = rt[o][r.postScriptName]) && ((n = r.metadata[o] ? r.metadata[o] : r.metadata[o] = {}).encoding = i).codePages && i.codePages.length && (r.encoding = i.codePages[0])
            }
            ]),
            /**
   * @license
   * Licensed under the MIT License.
   * http://opensource.org/licenses/mit-license
   */
            at = ft,
            "undefined" != typeof self && self || void 0 !== i && i || "undefined" != typeof window && window || Function("return this")(),
            at.API.events.push(["addFont", function(t) {
                var e = t.font
                  , n = t.instance;
                if (void 0 !== n && n.existsFileInVFS(e.postScriptName)) {
                    var i = n.getFileFromVFS(e.postScriptName);
                    if ("string" != typeof i)
                        throw new Error("Font is not stored as string-data in vFS, import fonts or remove declaration doc.addFont('" + e.postScriptName + "').");
                    e.metadata = at.API.TTFFont.open(e.postScriptName, e.fontName, i, e.encoding),
                    e.metadata.Unicode = e.metadata.Unicode || {
                        encoding: {},
                        kerning: {},
                        widths: []
                    },
                    e.metadata.glyIdsUsed = [0]
                } else if (!1 === e.isStandardFont)
                    throw new Error("Font does not exist in vFS, import fonts or remove declaration doc.addFont('" + e.postScriptName + "').")
            }
            ]),
            /** @license
   * Copyright (c) 2012 Willow Systems Corporation, willow-systems.com
   * 
   * 
   * ====================================================================
   */
            (st = ft.API).addSvg = function(t, e, n, i, r) {
                if (void 0 === e || void 0 === n)
                    throw new Error("addSVG needs values for 'x' and 'y'");
                function o(t) {
                    for (var e = parseFloat(t[1]), n = parseFloat(t[2]), i = [], r = 3, o = t.length; r < o; )
                        "c" === t[r] ? (i.push([parseFloat(t[r + 1]), parseFloat(t[r + 2]), parseFloat(t[r + 3]), parseFloat(t[r + 4]), parseFloat(t[r + 5]), parseFloat(t[r + 6])]),
                        r += 7) : "l" === t[r] ? (i.push([parseFloat(t[r + 1]), parseFloat(t[r + 2])]),
                        r += 3) : r += 1;
                    return [e, n, i]
                }
                var a, s, c, l, u, d, p, h, f = (a = t,
                (c = ((h = (l = document).createElement("iframe"),
                u = ".jsPDF_sillysvg_iframe {display:none;position:absolute;}",
                (p = (d = l).createElement("style")).type = "text/css",
                p.styleSheet ? p.styleSheet.cssText = u : p.appendChild(d.createTextNode(u)),
                d.getElementsByTagName("head")[0].appendChild(p),
                h.name = "childframe",
                h.setAttribute("width", 0),
                h.setAttribute("height", 0),
                h.setAttribute("frameborder", "0"),
                h.setAttribute("scrolling", "no"),
                h.setAttribute("seamless", "seamless"),
                h.setAttribute("class", "jsPDF_sillysvg_iframe"),
                l.body.appendChild(h),
                s = h).contentWindow || s.contentDocument).document).write(a),
                c.close(),
                c.getElementsByTagName("svg")[0]), m = [1, 1], g = parseFloat(f.getAttribute("width")), v = parseFloat(f.getAttribute("height"));
                g && v && (i && r ? m = [i / g, r / v] : i ? m = [i / g, i / g] : r && (m = [r / v, r / v]));
                var y, b, w, S, x = f.childNodes;
                for (y = 0,
                b = x.length; y < b; y++)
                    (w = x[y]).tagName && "PATH" === w.tagName.toUpperCase() && ((S = o(w.getAttribute("d").split(" ")))[0] = S[0] * m[0] + e,
                    S[1] = S[1] * m[1] + n,
                    this.lines.call(this, S[2], S[0], S[1], m));
                return this
            }
            ,
            st.addSVG = st.addSvg,
            st.addSvgAsImage = function(t, e, n, i, r, o, a, s) {
                if (isNaN(e) || isNaN(n))
                    throw console.error("jsPDF.addSvgAsImage: Invalid coordinates", arguments),
                    new Error("Invalid coordinates passed to jsPDF.addSvgAsImage");
                if (isNaN(i) || isNaN(r))
                    throw console.error("jsPDF.addSvgAsImage: Invalid measurements", arguments),
                    new Error("Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage");
                var c = document.createElement("canvas");
                c.width = i,
                c.height = r;
                var l = c.getContext("2d");
                return l.fillStyle = "#fff",
                l.fillRect(0, 0, c.width, c.height),
                canvg(c, t, {
                    ignoreMouse: !0,
                    ignoreAnimation: !0,
                    ignoreDimensions: !0,
                    ignoreClear: !0
                }),
                this.addImage(c.toDataURL("image/jpeg", 1), e, n, i, r, a, s),
                this
            }
            ,
            ft.API.putTotalPages = function(t) {
                var e, n;
                n = parseInt(this.internal.getFont().id.substr(1), 10) < 15 ? (e = new RegExp(t,"g"),
                this.internal.getNumberOfPages()) : (e = new RegExp(this.pdfEscape16(t, this.internal.getFont()),"g"),
                this.pdfEscape16(this.internal.getNumberOfPages() + "", this.internal.getFont()));
                for (var i = 1; i <= this.internal.getNumberOfPages(); i++)
                    for (var r = 0; r < this.internal.pages[i].length; r++)
                        this.internal.pages[i][r] = this.internal.pages[i][r].replace(e, n);
                return this
            }
            ,
            ft.API.viewerPreferences = function(t, e) {
                var n;
                t = t || {},
                e = e || !1;
                var i, o, a = {
                    HideToolbar: {
                        defaultValue: !1,
                        value: !1,
                        type: "boolean",
                        explicitSet: !1,
                        valueSet: [!0, !1],
                        pdfVersion: 1.3
                    },
                    HideMenubar: {
                        defaultValue: !1,
                        value: !1,
                        type: "boolean",
                        explicitSet: !1,
                        valueSet: [!0, !1],
                        pdfVersion: 1.3
                    },
                    HideWindowUI: {
                        defaultValue: !1,
                        value: !1,
                        type: "boolean",
                        explicitSet: !1,
                        valueSet: [!0, !1],
                        pdfVersion: 1.3
                    },
                    FitWindow: {
                        defaultValue: !1,
                        value: !1,
                        type: "boolean",
                        explicitSet: !1,
                        valueSet: [!0, !1],
                        pdfVersion: 1.3
                    },
                    CenterWindow: {
                        defaultValue: !1,
                        value: !1,
                        type: "boolean",
                        explicitSet: !1,
                        valueSet: [!0, !1],
                        pdfVersion: 1.3
                    },
                    DisplayDocTitle: {
                        defaultValue: !1,
                        value: !1,
                        type: "boolean",
                        explicitSet: !1,
                        valueSet: [!0, !1],
                        pdfVersion: 1.4
                    },
                    NonFullScreenPageMode: {
                        defaultValue: "UseNone",
                        value: "UseNone",
                        type: "name",
                        explicitSet: !1,
                        valueSet: ["UseNone", "UseOutlines", "UseThumbs", "UseOC"],
                        pdfVersion: 1.3
                    },
                    Direction: {
                        defaultValue: "L2R",
                        value: "L2R",
                        type: "name",
                        explicitSet: !1,
                        valueSet: ["L2R", "R2L"],
                        pdfVersion: 1.3
                    },
                    ViewArea: {
                        defaultValue: "CropBox",
                        value: "CropBox",
                        type: "name",
                        explicitSet: !1,
                        valueSet: ["MediaBox", "CropBox", "TrimBox", "BleedBox", "ArtBox"],
                        pdfVersion: 1.4
                    },
                    ViewClip: {
                        defaultValue: "CropBox",
                        value: "CropBox",
                        type: "name",
                        explicitSet: !1,
                        valueSet: ["MediaBox", "CropBox", "TrimBox", "BleedBox", "ArtBox"],
                        pdfVersion: 1.4
                    },
                    PrintArea: {
                        defaultValue: "CropBox",
                        value: "CropBox",
                        type: "name",
                        explicitSet: !1,
                        valueSet: ["MediaBox", "CropBox", "TrimBox", "BleedBox", "ArtBox"],
                        pdfVersion: 1.4
                    },
                    PrintClip: {
                        defaultValue: "CropBox",
                        value: "CropBox",
                        type: "name",
                        explicitSet: !1,
                        valueSet: ["MediaBox", "CropBox", "TrimBox", "BleedBox", "ArtBox"],
                        pdfVersion: 1.4
                    },
                    PrintScaling: {
                        defaultValue: "AppDefault",
                        value: "AppDefault",
                        type: "name",
                        explicitSet: !1,
                        valueSet: ["AppDefault", "None"],
                        pdfVersion: 1.6
                    },
                    Duplex: {
                        defaultValue: "",
                        value: "none",
                        type: "name",
                        explicitSet: !1,
                        valueSet: ["Simplex", "DuplexFlipShortEdge", "DuplexFlipLongEdge", "none"],
                        pdfVersion: 1.7
                    },
                    PickTrayByPDFSize: {
                        defaultValue: !1,
                        value: !1,
                        type: "boolean",
                        explicitSet: !1,
                        valueSet: [!0, !1],
                        pdfVersion: 1.7
                    },
                    PrintPageRange: {
                        defaultValue: "",
                        value: "",
                        type: "array",
                        explicitSet: !1,
                        valueSet: null,
                        pdfVersion: 1.7
                    },
                    NumCopies: {
                        defaultValue: 1,
                        value: 1,
                        type: "integer",
                        explicitSet: !1,
                        valueSet: null,
                        pdfVersion: 1.7
                    }
                }, s = Object.keys(a), c = [], l = 0, u = 0, d = 0, p = !0;
                function h(t, e) {
                    var n, i = !1;
                    for (n = 0; n < t.length; n += 1)
                        t[n] === e && (i = !0);
                    return i
                }
                if (void 0 === this.internal.viewerpreferences && (this.internal.viewerpreferences = {},
                this.internal.viewerpreferences.configuration = JSON.parse(JSON.stringify(a)),
                this.internal.viewerpreferences.isSubscribed = !1),
                n = this.internal.viewerpreferences.configuration,
                "reset" === t || !0 === e) {
                    var f = s.length;
                    for (d = 0; d < f; d += 1)
                        n[s[d]].value = n[s[d]].defaultValue,
                        n[s[d]].explicitSet = !1
                }
                if ("object" === r(t))
                    for (i in t)
                        if (o = t[i],
                        h(s, i) && void 0 !== o) {
                            if ("boolean" === n[i].type && "boolean" == typeof o)
                                n[i].value = o;
                            else if ("name" === n[i].type && h(n[i].valueSet, o))
                                n[i].value = o;
                            else if ("integer" === n[i].type && Number.isInteger(o))
                                n[i].value = o;
                            else if ("array" === n[i].type) {
                                for (l = 0; l < o.length; l += 1)
                                    if (p = !0,
                                    1 === o[l].length && "number" == typeof o[l][0])
                                        c.push(String(o[l] - 1));
                                    else if (1 < o[l].length) {
                                        for (u = 0; u < o[l].length; u += 1)
                                            "number" != typeof o[l][u] && (p = !1);
                                        !0 === p && c.push([o[l][0] - 1, o[l][1] - 1].join(" "))
                                    }
                                n[i].value = "[" + c.join(" ") + "]"
                            } else
                                n[i].value = n[i].defaultValue;
                            n[i].explicitSet = !0
                        }
                return !1 === this.internal.viewerpreferences.isSubscribed && (this.internal.events.subscribe("putCatalog", (function() {
                    var t, e = [];
                    for (t in n)
                        !0 === n[t].explicitSet && ("name" === n[t].type ? e.push("/" + t + " /" + n[t].value) : e.push("/" + t + " " + n[t].value));
                    0 !== e.length && this.internal.write("/ViewerPreferences\n<<\n" + e.join("\n") + "\n>>")
                }
                )),
                this.internal.viewerpreferences.isSubscribed = !0),
                this.internal.viewerpreferences.configuration = n,
                this
            }
            ,
            ct = ft.API,
            dt = ut = lt = "",
            ct.addMetadata = function(t, e) {
                return ut = e || "http://jspdf.default.namespaceuri/",
                lt = t,
                this.internal.events.subscribe("postPutResources", (function() {
                    if (lt) {
                        var t = '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description rdf:about="" xmlns:jspdf="' + ut + '"><jspdf:metadata>'
                          , e = unescape(encodeURIComponent('<x:xmpmeta xmlns:x="adobe:ns:meta/">'))
                          , n = unescape(encodeURIComponent(t))
                          , i = unescape(encodeURIComponent(lt))
                          , r = unescape(encodeURIComponent("</jspdf:metadata></rdf:Description></rdf:RDF>"))
                          , o = unescape(encodeURIComponent("</x:xmpmeta>"))
                          , a = n.length + i.length + r.length + e.length + o.length;
                        dt = this.internal.newObject(),
                        this.internal.write("<< /Type /Metadata /Subtype /XML /Length " + a + " >>"),
                        this.internal.write("stream"),
                        this.internal.write(e + n + i + r + o),
                        this.internal.write("endstream"),
                        this.internal.write("endobj")
                    } else
                        dt = ""
                }
                )),
                this.internal.events.subscribe("putCatalog", (function() {
                    dt && this.internal.write("/Metadata " + dt + " 0 R")
                }
                )),
                this
            }
            ,
            function(t, e) {
                var n = t.API
                  , i = n.pdfEscape16 = function(t, e) {
                    for (var n, i = e.metadata.Unicode.widths, r = ["", "0", "00", "000", "0000"], o = [""], a = 0, s = t.length; a < s; ++a) {
                        if (n = e.metadata.characterToGlyph(t.charCodeAt(a)),
                        e.metadata.glyIdsUsed.push(n),
                        e.metadata.toUnicode[n] = t.charCodeAt(a),
                        -1 == i.indexOf(n) && (i.push(n),
                        i.push([parseInt(e.metadata.widthOfGlyph(n), 10)])),
                        "0" == n)
                            return o.join("");
                        n = n.toString(16),
                        o.push(r[4 - n.length], n)
                    }
                    return o.join("")
                }
                  , r = function(t) {
                    var e, n, i, r, o, a, s;
                    for (o = "/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo <<\n  /Registry (Adobe)\n  /Ordering (UCS)\n  /Supplement 0\n>> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000><ffff>\nendcodespacerange",
                    i = [],
                    a = 0,
                    s = (n = Object.keys(t).sort((function(t, e) {
                        return t - e
                    }
                    ))).length; a < s; a++)
                        e = n[a],
                        100 <= i.length && (o += "\n" + i.length + " beginbfchar\n" + i.join("\n") + "\nendbfchar",
                        i = []),
                        r = ("0000" + t[e].toString(16)).slice(-4),
                        e = ("0000" + (+e).toString(16)).slice(-4),
                        i.push("<" + e + "><" + r + ">");
                    return i.length && (o += "\n" + i.length + " beginbfchar\n" + i.join("\n") + "\nendbfchar\n"),
                    o + "endcmap\nCMapName currentdict /CMap defineresource pop\nend\nend"
                };
                n.events.push(["putFont", function(e) {
                    !function(e, n, i, o) {
                        if (e.metadata instanceof t.API.TTFFont && "Identity-H" === e.encoding) {
                            for (var a = e.metadata.Unicode.widths, s = e.metadata.subset.encode(e.metadata.glyIdsUsed, 1), c = "", l = 0; l < s.length; l++)
                                c += String.fromCharCode(s[l]);
                            var u = i();
                            o({
                                data: c,
                                addLength1: !0
                            }),
                            n("endobj");
                            var d = i();
                            o({
                                data: r(e.metadata.toUnicode),
                                addLength1: !0
                            }),
                            n("endobj");
                            var p = i();
                            n("<<"),
                            n("/Type /FontDescriptor"),
                            n("/FontName /" + e.fontName),
                            n("/FontFile2 " + u + " 0 R"),
                            n("/FontBBox " + t.API.PDFObject.convert(e.metadata.bbox)),
                            n("/Flags " + e.metadata.flags),
                            n("/StemV " + e.metadata.stemV),
                            n("/ItalicAngle " + e.metadata.italicAngle),
                            n("/Ascent " + e.metadata.ascender),
                            n("/Descent " + e.metadata.decender),
                            n("/CapHeight " + e.metadata.capHeight),
                            n(">>"),
                            n("endobj");
                            var h = i();
                            n("<<"),
                            n("/Type /Font"),
                            n("/BaseFont /" + e.fontName),
                            n("/FontDescriptor " + p + " 0 R"),
                            n("/W " + t.API.PDFObject.convert(a)),
                            n("/CIDToGIDMap /Identity"),
                            n("/DW 1000"),
                            n("/Subtype /CIDFontType2"),
                            n("/CIDSystemInfo"),
                            n("<<"),
                            n("/Supplement 0"),
                            n("/Registry (Adobe)"),
                            n("/Ordering (" + e.encoding + ")"),
                            n(">>"),
                            n(">>"),
                            n("endobj"),
                            e.objectNumber = i(),
                            n("<<"),
                            n("/Type /Font"),
                            n("/Subtype /Type0"),
                            n("/ToUnicode " + d + " 0 R"),
                            n("/BaseFont /" + e.fontName),
                            n("/Encoding /" + e.encoding),
                            n("/DescendantFonts [" + h + " 0 R]"),
                            n(">>"),
                            n("endobj"),
                            e.isAlreadyPutted = !0
                        }
                    }(e.font, e.out, e.newObject, e.putStream)
                }
                ]),
                n.events.push(["putFont", function(e) {
                    !function(e, n, i, o) {
                        if (e.metadata instanceof t.API.TTFFont && "WinAnsiEncoding" === e.encoding) {
                            e.metadata.Unicode.widths;
                            for (var a = e.metadata.rawData, s = "", c = 0; c < a.length; c++)
                                s += String.fromCharCode(a[c]);
                            var l = i();
                            o({
                                data: s,
                                addLength1: !0
                            }),
                            n("endobj");
                            var u = i();
                            o({
                                data: r(e.metadata.toUnicode),
                                addLength1: !0
                            }),
                            n("endobj");
                            var d = i();
                            for (n("<<"),
                            n("/Descent " + e.metadata.decender),
                            n("/CapHeight " + e.metadata.capHeight),
                            n("/StemV " + e.metadata.stemV),
                            n("/Type /FontDescriptor"),
                            n("/FontFile2 " + l + " 0 R"),
                            n("/Flags 96"),
                            n("/FontBBox " + t.API.PDFObject.convert(e.metadata.bbox)),
                            n("/FontName /" + e.fontName),
                            n("/ItalicAngle " + e.metadata.italicAngle),
                            n("/Ascent " + e.metadata.ascender),
                            n(">>"),
                            n("endobj"),
                            e.objectNumber = i(),
                            c = 0; c < e.metadata.hmtx.widths.length; c++)
                                e.metadata.hmtx.widths[c] = parseInt(e.metadata.hmtx.widths[c] * (1e3 / e.metadata.head.unitsPerEm));
                            n("<</Subtype/TrueType/Type/Font/ToUnicode " + u + " 0 R/BaseFont/" + e.fontName + "/FontDescriptor " + d + " 0 R/Encoding/" + e.encoding + " /FirstChar 29 /LastChar 255 /Widths " + t.API.PDFObject.convert(e.metadata.hmtx.widths) + ">>"),
                            n("endobj"),
                            e.isAlreadyPutted = !0
                        }
                    }(e.font, e.out, e.newObject, e.putStream)
                }
                ]);
                var o = function(t) {
                    var e, n, r = t.text || "", o = t.x, a = t.y, s = t.options || {}, c = t.mutex || {}, l = c.pdfEscape, u = c.activeFontKey, d = c.fonts, p = (c.activeFontSize,
                    ""), h = 0, f = "", m = d[n = u].encoding;
                    if ("Identity-H" !== d[n].encoding)
                        return {
                            text: r,
                            x: o,
                            y: a,
                            options: s,
                            mutex: c
                        };
                    for (f = r,
                    n = u,
                    "[object Array]" === Object.prototype.toString.call(r) && (f = r[0]),
                    h = 0; h < f.length; h += 1)
                        d[n].metadata.hasOwnProperty("cmap") && (e = d[n].metadata.cmap.unicode.codeMap[f[h].charCodeAt(0)]),
                        e || f[h].charCodeAt(0) < 256 && d[n].metadata.hasOwnProperty("Unicode") ? p += f[h] : p += "";
                    var g = "";
                    return parseInt(n.slice(1)) < 14 || "WinAnsiEncoding" === m ? g = function(t) {
                        for (var e = "", n = 0; n < t.length; n++)
                            e += "" + t.charCodeAt(n).toString(16);
                        return e
                    }(l(p, n)) : "Identity-H" === m && (g = i(p, d[n])),
                    c.isHex = !0,
                    {
                        text: g,
                        x: o,
                        y: a,
                        options: s,
                        mutex: c
                    }
                };
                n.events.push(["postProcessText", function(t) {
                    var e = t.text || ""
                      , n = t.x
                      , i = t.y
                      , r = t.options
                      , a = t.mutex
                      , s = (r.lang,
                    [])
                      , c = {
                        text: e,
                        x: n,
                        y: i,
                        options: r,
                        mutex: a
                    };
                    if ("[object Array]" === Object.prototype.toString.call(e)) {
                        var l = 0;
                        for (l = 0; l < e.length; l += 1)
                            "[object Array]" === Object.prototype.toString.call(e[l]) && 3 === e[l].length ? s.push([o(Object.assign({}, c, {
                                text: e[l][0]
                            })).text, e[l][1], e[l][2]]) : s.push(o(Object.assign({}, c, {
                                text: e[l]
                            })).text);
                        t.text = s
                    } else
                        t.text = o(Object.assign({}, c, {
                            text: e
                        })).text
                }
                ])
            }(ft, "undefined" != typeof self && self || void 0 !== i && i || "undefined" != typeof window && window || Function("return this")()),
            pt = ft.API,
            ht = function(t) {
                return void 0 !== t && (void 0 === t.vFS && (t.vFS = {}),
                !0)
            }
            ,
            pt.existsFileInVFS = function(t) {
                return !!ht(this.internal) && void 0 !== this.internal.vFS[t]
            }
            ,
            pt.addFileToVFS = function(t, e) {
                return ht(this.internal),
                this.internal.vFS[t] = e,
                this
            }
            ,
            pt.getFileFromVFS = function(t) {
                return ht(this.internal),
                void 0 !== this.internal.vFS[t] ? this.internal.vFS[t] : null
            }
            ,
            ft.API.addHTML = function(t, e, n, i, r) {
                if ("undefined" == typeof html2canvas && "undefined" == typeof rasterizeHTML)
                    throw new Error("You need either https://github.com/niklasvh/html2canvas or https://github.com/cburgmer/rasterizeHTML.js");
                "number" != typeof e && (i = e,
                r = n),
                "function" == typeof i && (r = i,
                i = null),
                "function" != typeof r && (r = function() {}
                );
                var o = this.internal
                  , a = o.scaleFactor
                  , s = o.pageSize.getWidth()
                  , c = o.pageSize.getHeight();
                if ((i = i || {}).onrendered = function(t) {
                    e = parseInt(e) || 0,
                    n = parseInt(n) || 0;
                    var o = i.dim || {}
                      , l = Object.assign({
                        top: 0,
                        right: 0,
                        bottom: 0,
                        left: 0,
                        useFor: "content"
                    }, i.margin)
                      , u = o.h || Math.min(c, t.height / a)
                      , d = o.w || Math.min(s, t.width / a) - e
                      , p = i.format || "JPEG"
                      , h = i.imageCompression || "SLOW";
                    if (t.height > c - l.top - l.bottom && i.pagesplit) {
                        var f = function(t, e, n, r, o) {
                            var a = document.createElement("canvas");
                            a.height = o,
                            a.width = r;
                            var s = a.getContext("2d");
                            return s.mozImageSmoothingEnabled = !1,
                            s.webkitImageSmoothingEnabled = !1,
                            s.msImageSmoothingEnabled = !1,
                            s.imageSmoothingEnabled = !1,
                            s.fillStyle = i.backgroundColor || "#ffffff",
                            s.fillRect(0, 0, r, o),
                            s.drawImage(t, e, n, r, o, 0, 0, r, o),
                            a
                        }
                          , m = function() {
                            for (var i, o, u = 0, m = 0, g = {}, v = !1; ; ) {
                                var y;
                                if (m = 0,
                                g.top = 0 !== u ? l.top : n,
                                g.left = 0 !== u ? l.left : e,
                                v = (s - l.left - l.right) * a < t.width,
                                "content" === l.useFor ? 0 === u ? (i = Math.min((s - l.left) * a, t.width),
                                o = Math.min((c - l.top) * a, t.height - u)) : (i = Math.min(s * a, t.width),
                                o = Math.min(c * a, t.height - u),
                                g.top = 0) : (i = Math.min((s - l.left - l.right) * a, t.width),
                                o = Math.min((c - l.bottom - l.top) * a, t.height - u)),
                                v)
                                    for (; ; ) {
                                        "content" === l.useFor && (0 === m ? i = Math.min((s - l.left) * a, t.width) : (i = Math.min(s * a, t.width - m),
                                        g.left = 0));
                                        var b = [y = f(t, m, u, i, o), g.left, g.top, y.width / a, y.height / a, p, null, h];
                                        if (this.addImage.apply(this, b),
                                        (m += i) >= t.width)
                                            break;
                                        this.addPage()
                                    }
                                else
                                    b = [y = f(t, 0, u, i, o), g.left, g.top, y.width / a, y.height / a, p, null, h],
                                    this.addImage.apply(this, b);
                                if ((u += o) >= t.height)
                                    break;
                                this.addPage()
                            }
                            r(d, u, null, b)
                        }
                        .bind(this);
                        if ("CANVAS" === t.nodeName) {
                            var g = new Image;
                            g.onload = m,
                            g.src = t.toDataURL("image/png"),
                            t = g
                        } else
                            m()
                    } else {
                        var v = Math.random().toString(35)
                          , y = [t, e, n, d, u, p, v, h];
                        this.addImage.apply(this, y),
                        r(d, u, v, y)
                    }
                }
                .bind(this),
                "undefined" != typeof html2canvas && !i.rstz)
                    return html2canvas(t, i);
                if ("undefined" == typeof rasterizeHTML)
                    return null;
                var l = "drawDocument";
                return "string" == typeof t && (l = /^http/.test(t) ? "drawURL" : "drawHTML"),
                i.width = i.width || s * a,
                rasterizeHTML[l](t, void 0, i).then((function(t) {
                    i.onrendered(t.image)
                }
                ), (function(t) {
                    r(null, t)
                }
                ))
                /**
   * jsPDF fromHTML plugin. BETA stage. API subject to change. Needs browser
   * Copyright (c) 2012 Willow Systems Corporation, willow-systems.com
   *               2014 Juan Pablo Gaviria, https://github.com/juanpgaviria
   *               2014 Diego Casorran, https://github.com/diegocr
   *               2014 Daniel Husar, https://github.com/danielhusar
   *               2014 Wolfgang Gassler, https://github.com/woolfg
   *               2014 Steven Spungin, https://github.com/flamenco
   *
   * @license
   * 
   * ====================================================================
   */
            }
            ,
            function(t) {
                var e, n, i, o, a, s, c, l, u, d, p, h, f, m, g, v, y, b, w, S;
                e = function() {
                    return function(e) {
                        return t.prototype = e,
                        new t
                    }
                    ;
                    function t() {}
                }(),
                d = function(t) {
                    var e, n, i, r, o, a, s;
                    for (n = 0,
                    i = t.length,
                    e = void 0,
                    a = r = !1; !r && n !== i; )
                        (e = t[n] = t[n].trimLeft()) && (r = !0),
                        n++;
                    for (n = i - 1; i && !a && -1 !== n; )
                        (e = t[n] = t[n].trimRight()) && (a = !0),
                        n--;
                    for (o = /\s+$/g,
                    s = !0,
                    n = 0; n !== i; )
                        "\u2028" != t[n] && (e = t[n].replace(/\s+/g, " "),
                        s && (e = e.trimLeft()),
                        e && (s = o.test(e)),
                        t[n] = e),
                        n++;
                    return t
                }
                ,
                h = function(t) {
                    var e, n, r;
                    for (e = void 0,
                    n = (r = t.split(",")).shift(); !e && n; )
                        e = i[n.trim().toLowerCase()],
                        n = r.shift();
                    return e
                }
                ,
                f = function(t) {
                    var e;
                    return -1 < (t = "auto" === t ? "0px" : t).indexOf("em") && !isNaN(Number(t.replace("em", ""))) && (t = 18.719 * Number(t.replace("em", "")) + "px"),
                    -1 < t.indexOf("pt") && !isNaN(Number(t.replace("pt", ""))) && (t = 1.333 * Number(t.replace("pt", "")) + "px"),
                    (e = m[t]) ? e : void 0 !== (e = {
                        "xx-small": 9,
                        "x-small": 11,
                        small: 13,
                        medium: 16,
                        large: 19,
                        "x-large": 23,
                        "xx-large": 28,
                        auto: 0
                    }[t]) || (e = parseFloat(t)) ? m[t] = e / 16 : (e = t.match(/([\d\.]+)(px)/),
                    Array.isArray(e) && 3 === e.length ? m[t] = parseFloat(e[1]) / 16 : m[t] = 1)
                }
                ,
                u = function(t) {
                    var e, n, i, r, u;
                    return u = t,
                    r = document.defaultView && document.defaultView.getComputedStyle ? document.defaultView.getComputedStyle(u, null) : u.currentStyle ? u.currentStyle : u.style,
                    n = void 0,
                    (e = {})["font-family"] = h((i = function(t) {
                        return t = t.replace(/-\D/g, (function(t) {
                            return t.charAt(1).toUpperCase()
                        }
                        )),
                        r[t]
                    }
                    )("font-family")) || "times",
                    e["font-style"] = o[i("font-style")] || "normal",
                    e["text-align"] = a[i("text-align")] || "left",
                    "bold" === (n = s[i("font-weight")] || "normal") && ("normal" === e["font-style"] ? e["font-style"] = n : e["font-style"] = n + e["font-style"]),
                    e["font-size"] = f(i("font-size")) || 1,
                    e["line-height"] = f(i("line-height")) || 1,
                    e.display = "inline" === i("display") ? "inline" : "block",
                    n = "block" === e.display,
                    e["margin-top"] = n && f(i("margin-top")) || 0,
                    e["margin-bottom"] = n && f(i("margin-bottom")) || 0,
                    e["padding-top"] = n && f(i("padding-top")) || 0,
                    e["padding-bottom"] = n && f(i("padding-bottom")) || 0,
                    e["margin-left"] = n && f(i("margin-left")) || 0,
                    e["margin-right"] = n && f(i("margin-right")) || 0,
                    e["padding-left"] = n && f(i("padding-left")) || 0,
                    e["padding-right"] = n && f(i("padding-right")) || 0,
                    e["page-break-before"] = i("page-break-before") || "auto",
                    e.float = c[i("cssFloat")] || "none",
                    e.clear = l[i("clear")] || "none",
                    e.color = i("color"),
                    e
                }
                ,
                g = function(t, e, n) {
                    var i, r, o, a, s;
                    if (o = !1,
                    a = r = void 0,
                    i = n["#" + t.id])
                        if ("function" == typeof i)
                            o = i(t, e);
                        else
                            for (r = 0,
                            a = i.length; !o && r !== a; )
                                o = i[r](t, e),
                                r++;
                    if (i = n[t.nodeName],
                    !o && i)
                        if ("function" == typeof i)
                            o = i(t, e);
                        else
                            for (r = 0,
                            a = i.length; !o && r !== a; )
                                o = i[r](t, e),
                                r++;
                    for (s = "string" == typeof t.className ? t.className.split(" ") : [],
                    r = 0; r < s.length; r++)
                        if (i = n["." + s[r]],
                        !o && i)
                            if ("function" == typeof i)
                                o = i(t, e);
                            else
                                for (r = 0,
                                a = i.length; !o && r !== a; )
                                    o = i[r](t, e),
                                    r++;
                    return o
                }
                ,
                S = function(t, e) {
                    var n, i, r, o, a, s, c, l, u;
                    for (n = [],
                    i = [],
                    r = 0,
                    u = t.rows[0].cells.length,
                    c = t.clientWidth; r < u; )
                        l = t.rows[0].cells[r],
                        i[r] = {
                            name: l.textContent.toLowerCase().replace(/\s+/g, ""),
                            prompt: l.textContent.replace(/\r?\n/g, ""),
                            width: l.clientWidth / c * e.pdf.internal.pageSize.getWidth()
                        },
                        r++;
                    for (r = 1; r < t.rows.length; ) {
                        for (s = t.rows[r],
                        a = {},
                        o = 0; o < s.cells.length; )
                            a[i[o].name] = s.cells[o].textContent.replace(/\r?\n/g, ""),
                            o++;
                        n.push(a),
                        r++
                    }
                    return {
                        rows: n,
                        headers: i
                    }
                }
                ;
                var x = {
                    SCRIPT: 1,
                    STYLE: 1,
                    NOSCRIPT: 1,
                    OBJECT: 1,
                    EMBED: 1,
                    SELECT: 1
                }
                  , M = 1;
                n = function(t, i, o) {
                    var a, s, c, l, d, p, h, f;
                    for (s = t.childNodes,
                    a = void 0,
                    (d = "block" === (c = u(t)).display) && (i.setBlockBoundary(),
                    i.setBlockStyle(c)),
                    l = 0,
                    p = s.length; l < p; ) {
                        if ("object" === r(a = s[l])) {
                            if (i.executeWatchFunctions(a),
                            1 === a.nodeType && "HEADER" === a.nodeName) {
                                var m = a
                                  , y = i.pdf.margins_doc.top;
                                i.pdf.internal.events.subscribe("addPage", (function(t) {
                                    i.y = y,
                                    n(m, i, o),
                                    i.pdf.margins_doc.top = i.y + 10,
                                    i.y += 10
                                }
                                ), !1)
                            }
                            if (8 === a.nodeType && "#comment" === a.nodeName)
                                ~a.textContent.indexOf("ADD_PAGE") && (i.pdf.addPage(),
                                i.y = i.pdf.margins_doc.top);
                            else if (1 !== a.nodeType || x[a.nodeName])
                                if (3 === a.nodeType) {
                                    var b = a.nodeValue;
                                    if (a.nodeValue && "LI" === a.parentNode.nodeName)
                                        if ("OL" === a.parentNode.parentNode.nodeName)
                                            b = M++ + ". " + b;
                                        else {
                                            var w = c["font-size"]
                                              , E = (3 - .75 * w) * i.pdf.internal.scaleFactor
                                              , C = .75 * w * i.pdf.internal.scaleFactor
                                              , A = 1.74 * w / i.pdf.internal.scaleFactor;
                                            f = function(t, e) {
                                                this.pdf.circle(t + E, e + C, A, "FD")
                                            }
                                        }
                                    16 & a.ownerDocument.body.compareDocumentPosition(a) && i.addText(b, c)
                                } else
                                    "string" == typeof a && i.addText(a, c);
                            else {
                                var T;
                                if ("IMG" === a.nodeName) {
                                    var O = a.getAttribute("src");
                                    T = v[i.pdf.sHashCode(O) || O]
                                }
                                if (T) {
                                    i.pdf.internal.pageSize.getHeight() - i.pdf.margins_doc.bottom < i.y + a.height && i.y > i.pdf.margins_doc.top && (i.pdf.addPage(),
                                    i.y = i.pdf.margins_doc.top,
                                    i.executeWatchFunctions(a));
                                    var _ = u(a)
                                      , P = i.x
                                      , I = 12 / i.pdf.internal.scaleFactor
                                      , k = (_["margin-left"] + _["padding-left"]) * I
                                      , D = (_["margin-right"] + _["padding-right"]) * I
                                      , R = (_["margin-top"] + _["padding-top"]) * I
                                      , L = (_["margin-bottom"] + _["padding-bottom"]) * I;
                                    void 0 !== _.float && "right" === _.float ? P += i.settings.width - a.width - D : P += k,
                                    i.pdf.addImage(T, P, i.y + R, a.width, a.height),
                                    T = void 0,
                                    "right" === _.float || "left" === _.float ? (i.watchFunctions.push(function(t, e, n, r) {
                                        return i.y >= e ? (i.x += t,
                                        i.settings.width += n,
                                        !0) : !!(r && 1 === r.nodeType && !x[r.nodeName] && i.x + r.width > i.pdf.margins_doc.left + i.pdf.margins_doc.width) && (i.x += t,
                                        i.y = e,
                                        i.settings.width += n,
                                        !0)
                                    }
                                    .bind(this, "left" === _.float ? -a.width - k - D : 0, i.y + a.height + R + L, a.width)),
                                    i.watchFunctions.push(function(t, e, n) {
                                        return !(i.y < t && e === i.pdf.internal.getNumberOfPages()) || 1 === n.nodeType && "both" === u(n).clear && (i.y = t,
                                        !0)
                                    }
                                    .bind(this, i.y + a.height, i.pdf.internal.getNumberOfPages())),
                                    i.settings.width -= a.width + k + D,
                                    "left" === _.float && (i.x += a.width + k + D)) : i.y += a.height + R + L
                                } else if ("TABLE" === a.nodeName)
                                    h = S(a, i),
                                    i.y += 10,
                                    i.pdf.table(i.x, i.y, h.rows, h.headers, {
                                        autoSize: !1,
                                        printHeaders: o.printHeaders,
                                        margins: i.pdf.margins_doc,
                                        css: u(a)
                                    }),
                                    i.y = i.pdf.lastCellPos.y + i.pdf.lastCellPos.h + 20;
                                else if ("OL" === a.nodeName || "UL" === a.nodeName)
                                    M = 1,
                                    g(a, i, o) || n(a, i, o),
                                    i.y += 10;
                                else if ("LI" === a.nodeName) {
                                    var N = i.x;
                                    i.x += 20 / i.pdf.internal.scaleFactor,
                                    i.y += 3,
                                    g(a, i, o) || n(a, i, o),
                                    i.x = N
                                } else
                                    "BR" === a.nodeName ? (i.y += c["font-size"] * i.pdf.internal.scaleFactor,
                                    i.addText("\u2028", e(c))) : g(a, i, o) || n(a, i, o)
                            }
                        }
                        l++
                    }
                    if (o.outY = i.y,
                    d)
                        return i.setBlockBoundary(f)
                }
                ,
                v = {},
                y = function(t, e, n, i) {
                    var r, o = t.getElementsByTagName("img"), a = o.length, s = 0;
                    function c() {
                        e.pdf.internal.events.publish("imagesLoaded"),
                        i(r)
                    }
                    function l(t, n, i) {
                        if (t) {
                            var o = new Image;
                            r = ++s,
                            o.crossOrigin = "",
                            o.onerror = o.onload = function() {
                                if (o.complete && (0 === o.src.indexOf("data:image/") && (o.width = n || o.width || 0,
                                o.height = i || o.height || 0),
                                o.width + o.height)) {
                                    var r = e.pdf.sHashCode(t) || t;
                                    v[r] = v[r] || o
                                }
                                --s || c()
                            }
                            ,
                            o.src = t
                        }
                    }
                    for (; a--; )
                        l(o[a].getAttribute("src"), o[a].width, o[a].height);
                    return s || c()
                }
                ,
                b = function(t, e, i) {
                    var r = t.getElementsByTagName("footer");
                    if (0 < r.length) {
                        r = r[0];
                        var o = e.pdf.internal.write
                          , a = e.y;
                        e.pdf.internal.write = function() {}
                        ,
                        n(r, e, i);
                        var s = Math.ceil(e.y - a) + 5;
                        e.y = a,
                        e.pdf.internal.write = o,
                        e.pdf.margins_doc.bottom += s;
                        for (var c = function(t) {
                            var o = void 0 !== t ? t.pageNumber : 1
                              , a = e.y;
                            e.y = e.pdf.internal.pageSize.getHeight() - e.pdf.margins_doc.bottom,
                            e.pdf.margins_doc.bottom -= s;
                            for (var c = r.getElementsByTagName("span"), l = 0; l < c.length; ++l)
                                -1 < (" " + c[l].className + " ").replace(/[\n\t]/g, " ").indexOf(" pageCounter ") && (c[l].innerHTML = o),
                                -1 < (" " + c[l].className + " ").replace(/[\n\t]/g, " ").indexOf(" totalPages ") && (c[l].innerHTML = "###jsPDFVarTotalPages###");
                            n(r, e, i),
                            e.pdf.margins_doc.bottom += s,
                            e.y = a
                        }, l = r.getElementsByTagName("span"), u = 0; u < l.length; ++u)
                            -1 < (" " + l[u].className + " ").replace(/[\n\t]/g, " ").indexOf(" totalPages ") && e.pdf.internal.events.subscribe("htmlRenderingFinished", e.pdf.putTotalPages.bind(e.pdf, "###jsPDFVarTotalPages###"), !0);
                        e.pdf.internal.events.subscribe("addPage", c, !1),
                        c(),
                        x.FOOTER = 1
                    }
                }
                ,
                w = function(t, e, i, r, o, a) {
                    if (!e)
                        return !1;
                    var s, c, l, u;
                    "string" == typeof e || e.parentNode || (e = "" + e.innerHTML),
                    "string" == typeof e && (s = e.replace(/<\/?script[^>]*?>/gi, ""),
                    u = "jsPDFhtmlText" + Date.now().toString() + (1e3 * Math.random()).toFixed(0),
                    (l = document.createElement("div")).style.cssText = "position: absolute !important;clip: rect(1px 1px 1px 1px); /* IE6, IE7 */clip: rect(1px, 1px, 1px, 1px);padding:0 !important;border:0 !important;height: 1px !important;width: 1px !important; top:auto;left:-100px;overflow: hidden;",
                    l.innerHTML = '<iframe style="height:1px;width:1px" name="' + u + '" />',
                    document.body.appendChild(l),
                    (c = window.frames[u]).document.open(),
                    c.document.writeln(s),
                    c.document.close(),
                    e = c.document.body);
                    var d, h = new p(t,i,r,o);
                    return y.call(this, e, h, o.elementHandlers, (function(t) {
                        b(e, h, o.elementHandlers),
                        n(e, h, o.elementHandlers),
                        h.pdf.internal.events.publish("htmlRenderingFinished"),
                        d = h.dispose(),
                        "function" == typeof a ? a(d) : t && console.error("jsPDF Warning: rendering issues? provide a callback to fromHTML!")
                    }
                    )),
                    d || {
                        x: h.x,
                        y: h.y
                    }
                }
                ,
                (p = function(t, e, n, i) {
                    return this.pdf = t,
                    this.x = e,
                    this.y = n,
                    this.settings = i,
                    this.watchFunctions = [],
                    this.init(),
                    this
                }
                ).prototype.init = function() {
                    return this.paragraph = {
                        text: [],
                        style: []
                    },
                    this.pdf.internal.write("q")
                }
                ,
                p.prototype.dispose = function() {
                    return this.pdf.internal.write("Q"),
                    {
                        x: this.x,
                        y: this.y,
                        ready: !0
                    }
                }
                ,
                p.prototype.executeWatchFunctions = function(t) {
                    var e = !1
                      , n = [];
                    if (0 < this.watchFunctions.length) {
                        for (var i = 0; i < this.watchFunctions.length; ++i)
                            !0 === this.watchFunctions[i](t) ? e = !0 : n.push(this.watchFunctions[i]);
                        this.watchFunctions = n
                    }
                    return e
                }
                ,
                p.prototype.splitFragmentsIntoLines = function(t, n) {
                    var i, r, o, a, s, c, l, u, d, p, h, f, m, g;
                    for (p = this.pdf.internal.scaleFactor,
                    a = {},
                    c = l = u = g = s = o = d = r = void 0,
                    f = [h = []],
                    i = 0,
                    m = this.settings.width; t.length; )
                        if (s = t.shift(),
                        g = n.shift(),
                        s)
                            if ((o = a[(r = g["font-family"]) + (d = g["font-style"])]) || (o = this.pdf.internal.getFont(r, d).metadata.Unicode,
                            a[r + d] = o),
                            u = {
                                widths: o.widths,
                                kerning: o.kerning,
                                fontSize: 12 * g["font-size"],
                                textIndent: i
                            },
                            l = this.pdf.getStringUnitWidth(s, u) * u.fontSize / p,
                            "\u2028" == s)
                                h = [],
                                f.push(h);
                            else if (m < i + l) {
                                for (c = this.pdf.splitTextToSize(s, m, u),
                                h.push([c.shift(), g]); c.length; )
                                    h = [[c.shift(), g]],
                                    f.push(h);
                                i = this.pdf.getStringUnitWidth(h[0][0], u) * u.fontSize / p
                            } else
                                h.push([s, g]),
                                i += l;
                    if (void 0 !== g["text-align"] && ("center" === g["text-align"] || "right" === g["text-align"] || "justify" === g["text-align"]))
                        for (var v = 0; v < f.length; ++v) {
                            var y = this.pdf.getStringUnitWidth(f[v][0][0], u) * u.fontSize / p;
                            0 < v && (f[v][0][1] = e(f[v][0][1]));
                            var b = m - y;
                            if ("right" === g["text-align"])
                                f[v][0][1]["margin-left"] = b;
                            else if ("center" === g["text-align"])
                                f[v][0][1]["margin-left"] = b / 2;
                            else if ("justify" === g["text-align"]) {
                                var w = f[v][0][0].split(" ").length - 1;
                                f[v][0][1]["word-spacing"] = b / w,
                                v === f.length - 1 && (f[v][0][1]["word-spacing"] = 0)
                            }
                        }
                    return f
                }
                ,
                p.prototype.RenderTextFragment = function(t, e) {
                    var n, i;
                    i = 0,
                    this.pdf.internal.pageSize.getHeight() - this.pdf.margins_doc.bottom < this.y + this.pdf.internal.getFontSize() && (this.pdf.internal.write("ET", "Q"),
                    this.pdf.addPage(),
                    this.y = this.pdf.margins_doc.top,
                    this.pdf.internal.write("q", "BT", this.getPdfColor(e.color), this.pdf.internal.getCoordinateString(this.x), this.pdf.internal.getVerticalCoordinateString(this.y), "Td"),
                    i = Math.max(i, e["line-height"], e["font-size"]),
                    this.pdf.internal.write(0, (-12 * i).toFixed(2), "Td")),
                    n = this.pdf.internal.getFont(e["font-family"], e["font-style"]);
                    var r = this.getPdfColor(e.color);
                    r !== this.lastTextColor && (this.pdf.internal.write(r),
                    this.lastTextColor = r),
                    void 0 !== e["word-spacing"] && 0 < e["word-spacing"] && this.pdf.internal.write(e["word-spacing"].toFixed(2), "Tw"),
                    this.pdf.internal.write("/" + n.id, (12 * e["font-size"]).toFixed(2), "Tf", "(" + this.pdf.internal.pdfEscape(t) + ") Tj"),
                    void 0 !== e["word-spacing"] && this.pdf.internal.write(0, "Tw")
                }
                ,
                p.prototype.getPdfColor = function(t) {
                    var e, n, i, r = /rgb\s*\(\s*(\d+),\s*(\d+),\s*(\d+\s*)\)/.exec(t);
                    if (null != r)
                        e = parseInt(r[1]),
                        n = parseInt(r[2]),
                        i = parseInt(r[3]);
                    else {
                        if ("string" == typeof t && "#" != t.charAt(0)) {
                            var o = new RGBColor(t);
                            t = o.ok ? o.toHex() : "#000000"
                        }
                        e = t.substring(1, 3),
                        e = parseInt(e, 16),
                        n = t.substring(3, 5),
                        n = parseInt(n, 16),
                        i = t.substring(5, 7),
                        i = parseInt(i, 16)
                    }
                    if ("string" == typeof e && /^#[0-9A-Fa-f]{6}$/.test(e)) {
                        var a = parseInt(e.substr(1), 16);
                        e = a >> 16 & 255,
                        n = a >> 8 & 255,
                        i = 255 & a
                    }
                    var s = this.f3;
                    return 0 === e && 0 === n && 0 === i || void 0 === n ? s(e / 255) + " g" : [s(e / 255), s(n / 255), s(i / 255), "rg"].join(" ")
                }
                ,
                p.prototype.f3 = function(t) {
                    return t.toFixed(3)
                }
                ,
                p.prototype.renderParagraph = function(t) {
                    var e, n, i, r, o, a, s, c, l, u, p, h, f;
                    if (i = d(this.paragraph.text),
                    h = this.paragraph.style,
                    e = this.paragraph.blockstyle,
                    this.paragraph.priorblockstyle,
                    this.paragraph = {
                        text: [],
                        style: [],
                        blockstyle: {},
                        priorblockstyle: e
                    },
                    i.join("").trim()) {
                        s = this.splitFragmentsIntoLines(i, h),
                        c = a = void 0,
                        n = 12 / this.pdf.internal.scaleFactor,
                        this.priorMarginBottom = this.priorMarginBottom || 0,
                        p = (Math.max((e["margin-top"] || 0) - this.priorMarginBottom, 0) + (e["padding-top"] || 0)) * n,
                        u = ((e["margin-bottom"] || 0) + (e["padding-bottom"] || 0)) * n,
                        this.priorMarginBottom = e["margin-bottom"] || 0,
                        "always" === e["page-break-before"] && (this.pdf.addPage(),
                        this.y = 0,
                        p = ((e["margin-top"] || 0) + (e["padding-top"] || 0)) * n),
                        l = this.pdf.internal.write,
                        o = r = void 0,
                        this.y += p,
                        l("q", "BT 0 g", this.pdf.internal.getCoordinateString(this.x), this.pdf.internal.getVerticalCoordinateString(this.y), "Td");
                        for (var m = 0; s.length; ) {
                            for (r = c = 0,
                            o = (a = s.shift()).length; r !== o; )
                                a[r][0].trim() && (c = Math.max(c, a[r][1]["line-height"], a[r][1]["font-size"]),
                                f = 7 * a[r][1]["font-size"]),
                                r++;
                            var g = 0
                              , v = 0;
                            for (void 0 !== a[0][1]["margin-left"] && 0 < a[0][1]["margin-left"] && (g = (v = this.pdf.internal.getCoordinateString(a[0][1]["margin-left"])) - m,
                            m = v),
                            l(g + Math.max(e["margin-left"] || 0, 0) * n, (-12 * c).toFixed(2), "Td"),
                            r = 0,
                            o = a.length; r !== o; )
                                a[r][0] && this.RenderTextFragment(a[r][0], a[r][1]),
                                r++;
                            if (this.y += c * n,
                            this.executeWatchFunctions(a[0][1]) && 0 < s.length) {
                                var y = []
                                  , b = [];
                                s.forEach((function(t) {
                                    for (var e = 0, n = t.length; e !== n; )
                                        t[e][0] && (y.push(t[e][0] + " "),
                                        b.push(t[e][1])),
                                        ++e
                                }
                                )),
                                s = this.splitFragmentsIntoLines(d(y), b),
                                l("ET", "Q"),
                                l("q", "BT 0 g", this.pdf.internal.getCoordinateString(this.x), this.pdf.internal.getVerticalCoordinateString(this.y), "Td")
                            }
                        }
                        return t && "function" == typeof t && t.call(this, this.x - 9, this.y - f / 2),
                        l("ET", "Q"),
                        this.y += u
                    }
                }
                ,
                p.prototype.setBlockBoundary = function(t) {
                    return this.renderParagraph(t)
                }
                ,
                p.prototype.setBlockStyle = function(t) {
                    return this.paragraph.blockstyle = t
                }
                ,
                p.prototype.addText = function(t, e) {
                    return this.paragraph.text.push(t),
                    this.paragraph.style.push(e)
                }
                ,
                i = {
                    helvetica: "helvetica",
                    "sans-serif": "helvetica",
                    "times new roman": "times",
                    serif: "times",
                    times: "times",
                    monospace: "courier",
                    courier: "courier"
                },
                s = {
                    100: "normal",
                    200: "normal",
                    300: "normal",
                    400: "normal",
                    500: "bold",
                    600: "bold",
                    700: "bold",
                    800: "bold",
                    900: "bold",
                    normal: "normal",
                    bold: "bold",
                    bolder: "bold",
                    lighter: "normal"
                },
                o = {
                    normal: "normal",
                    italic: "italic",
                    oblique: "italic"
                },
                a = {
                    left: "left",
                    right: "right",
                    center: "center",
                    justify: "justify"
                },
                c = {
                    none: "none",
                    right: "right",
                    left: "left"
                },
                l = {
                    none: "none",
                    both: "both"
                },
                m = {
                    normal: 1
                },
                t.fromHTML = function(t, e, n, i, r, o) {
                    return this.margins_doc = o || {
                        top: 0,
                        bottom: 0
                    },
                    i || (i = {}),
                    i.elementHandlers || (i.elementHandlers = {}),
                    w(this, t, isNaN(e) ? 4 : e, isNaN(n) ? 4 : n, i, r)
                }
            }(ft.API),
            ft.API,
            ("undefined" != typeof window && window || void 0 !== i && i).html2pdf = function(t, e, n) {
                var i = e.canvas;
                if (i) {
                    var r, o;
                    if ((i.pdf = e).annotations = {
                        _nameMap: [],
                        createAnnotation: function(t, n) {
                            var i, r = e.context2d._wrapX(n.left), o = e.context2d._wrapY(n.top), a = (e.context2d._page(n.top),
                            t.indexOf("#"));
                            i = 0 <= a ? {
                                name: t.substring(a + 1)
                            } : {
                                url: t
                            },
                            e.link(r, o, n.right - n.left, n.bottom - n.top, i)
                        },
                        setName: function(t, n) {
                            var i = e.context2d._wrapX(n.left)
                              , r = e.context2d._wrapY(n.top)
                              , o = e.context2d._page(n.top);
                            this._nameMap[t] = {
                                page: o,
                                x: i,
                                y: r
                            }
                        }
                    },
                    i.annotations = e.annotations,
                    e.context2d._pageBreakAt = function(t) {
                        this.pageBreaks.push(t)
                    }
                    ,
                    e.context2d._gotoPage = function(t) {
                        for (; e.internal.getNumberOfPages() < t; )
                            e.addPage();
                        e.setPage(t)
                    }
                    ,
                    "string" == typeof t) {
                        t = t.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, "");
                        var a, s, c = document.createElement("iframe");
                        document.body.appendChild(c),
                        null != (a = c.contentDocument) && null != a || (a = c.contentWindow.document),
                        a.open(),
                        a.write(t),
                        a.close(),
                        r = a.body,
                        s = a.body || {},
                        t = a.documentElement || {},
                        o = Math.max(s.scrollHeight, s.offsetHeight, t.clientHeight, t.scrollHeight, t.offsetHeight)
                    } else
                        s = (r = t).body || {},
                        o = Math.max(s.scrollHeight, s.offsetHeight, t.clientHeight, t.scrollHeight, t.offsetHeight);
                    var l = {
                        async: !0,
                        allowTaint: !0,
                        backgroundColor: "#ffffff",
                        canvas: i,
                        imageTimeout: 15e3,
                        logging: !0,
                        proxy: null,
                        removeContainer: !0,
                        foreignObjectRendering: !1,
                        useCORS: !1,
                        windowHeight: o = e.internal.pageSize.getHeight(),
                        scrollY: o
                    };
                    e.context2d.pageWrapYEnabled = !0,
                    e.context2d.pageWrapY = e.internal.pageSize.getHeight(),
                    html2canvas(r, l).then((function(t) {
                        n && (c && c.parentElement.removeChild(c),
                        n(e))
                    }
                    ))
                } else
                    alert("jsPDF canvas plugin not installed")
            }
            ,
            window.tmp = html2pdf,
            function(t) {
                var e = t.BlobBuilder || t.WebKitBlobBuilder || t.MSBlobBuilder || t.MozBlobBuilder;
                t.URL = t.URL || t.webkitURL || function(t, e) {
                    return (e = document.createElement("a")).href = t,
                    e
                }
                ;
                var n = t.Blob
                  , i = URL.createObjectURL
                  , r = URL.revokeObjectURL
                  , o = t.Symbol && t.Symbol.toStringTag
                  , a = !1
                  , s = !1
                  , c = !!t.ArrayBuffer
                  , l = e && e.prototype.append && e.prototype.getBlob;
                try {
                    a = 2 === new Blob(["ä"]).size,
                    s = 2 === new Blob([new Uint8Array([1, 2])]).size
                } catch (a) {}
                function u(t) {
                    return t.map((function(t) {
                        if (t.buffer instanceof ArrayBuffer) {
                            var e = t.buffer;
                            if (t.byteLength !== e.byteLength) {
                                var n = new Uint8Array(t.byteLength);
                                n.set(new Uint8Array(e,t.byteOffset,t.byteLength)),
                                e = n.buffer
                            }
                            return e
                        }
                        return t
                    }
                    ))
                }
                function d(t, n) {
                    n = n || {};
                    var i = new e;
                    return u(t).forEach((function(t) {
                        i.append(t)
                    }
                    )),
                    n.type ? i.getBlob(n.type) : i.getBlob()
                }
                function p(t, e) {
                    return new n(u(t),e || {})
                }
                if (t.Blob && (d.prototype = Blob.prototype,
                p.prototype = Blob.prototype),
                o)
                    try {
                        File.prototype[o] = "File",
                        Blob.prototype[o] = "Blob",
                        FileReader.prototype[o] = "FileReader"
                    } catch (a) {}
                function h() {
                    var e = !!t.ActiveXObject || "-ms-scroll-limit"in document.documentElement.style && "-ms-ime-align"in document.documentElement.style
                      , n = t.XMLHttpRequest && t.XMLHttpRequest.prototype.send;
                    e && n && (XMLHttpRequest.prototype.send = function(t) {
                        t instanceof Blob && this.setRequestHeader("Content-Type", t.type),
                        n.call(this, t)
                    }
                    );
                    try {
                        new File([],"")
                    } catch (e) {
                        try {
                            var i = new Function('class File extends Blob {constructor(chunks, name, opts) {opts = opts || {};super(chunks, opts || {});this.name = name;this.lastModifiedDate = opts.lastModified ? new Date(opts.lastModified) : new Date;this.lastModified = +this.lastModifiedDate;}};return new File([], ""), File')();
                            t.File = i
                        } catch (e) {
                            i = function(t, e, n) {
                                var i = new Blob(t,n)
                                  , r = n && void 0 !== n.lastModified ? new Date(n.lastModified) : new Date;
                                return i.name = e,
                                i.lastModifiedDate = r,
                                i.lastModified = +r,
                                i.toString = function() {
                                    return "[object File]"
                                }
                                ,
                                o && (i[o] = "File"),
                                i
                            }
                            ,
                            t.File = i
                        }
                    }
                }
                a ? (h(),
                t.Blob = s ? t.Blob : p) : l ? (h(),
                t.Blob = d) : function() {
                    function e(t) {
                        for (var e = [], n = 0; n < t.length; n++) {
                            var i = t.charCodeAt(n);
                            i < 128 ? e.push(i) : i < 2048 ? e.push(192 | i >> 6, 128 | 63 & i) : i < 55296 || 57344 <= i ? e.push(224 | i >> 12, 128 | i >> 6 & 63, 128 | 63 & i) : (n++,
                            i = 65536 + ((1023 & i) << 10 | 1023 & t.charCodeAt(n)),
                            e.push(240 | i >> 18, 128 | i >> 12 & 63, 128 | i >> 6 & 63, 128 | 63 & i))
                        }
                        return e
                    }
                    function n(t) {
                        var e, n, i, r, o, a;
                        for (e = "",
                        i = t.length,
                        n = 0; n < i; )
                            switch ((r = t[n++]) >> 4) {
                            case 0:
                            case 1:
                            case 2:
                            case 3:
                            case 4:
                            case 5:
                            case 6:
                            case 7:
                                e += String.fromCharCode(r);
                                break;
                            case 12:
                            case 13:
                                o = t[n++],
                                e += String.fromCharCode((31 & r) << 6 | 63 & o);
                                break;
                            case 14:
                                o = t[n++],
                                a = t[n++],
                                e += String.fromCharCode((15 & r) << 12 | (63 & o) << 6 | (63 & a) << 0)
                            }
                        return e
                    }
                    function o(t) {
                        for (var e = new Array(t.byteLength), n = new Uint8Array(t), i = e.length; i--; )
                            e[i] = n[i];
                        return e
                    }
                    function a(t) {
                        for (var e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", n = [], i = 0; i < t.length; i += 3) {
                            var r = t[i]
                              , o = i + 1 < t.length
                              , a = o ? t[i + 1] : 0
                              , s = i + 2 < t.length
                              , c = s ? t[i + 2] : 0
                              , l = r >> 2
                              , u = (3 & r) << 4 | a >> 4
                              , d = (15 & a) << 2 | c >> 6
                              , p = 63 & c;
                            s || (p = 64,
                            o || (d = 64)),
                            n.push(e[l], e[u], e[d], e[p])
                        }
                        return n.join("")
                    }
                    var s = Object.create || function(t) {
                        function e() {}
                        return e.prototype = t,
                        new e
                    }
                    ;
                    if (c)
                        var l = ["[object Int8Array]", "[object Uint8Array]", "[object Uint8ClampedArray]", "[object Int16Array]", "[object Uint16Array]", "[object Int32Array]", "[object Uint32Array]", "[object Float32Array]", "[object Float64Array]"]
                          , u = ArrayBuffer.isView || function(t) {
                            return t && -1 < l.indexOf(Object.prototype.toString.call(t))
                        }
                        ;
                    function d(t, n) {
                        for (var i = 0, r = (t = t || []).length; i < r; i++) {
                            var a = t[i];
                            a instanceof d ? t[i] = a._buffer : "string" == typeof a ? t[i] = e(a) : c && (ArrayBuffer.prototype.isPrototypeOf(a) || u(a)) ? t[i] = o(a) : c && (s = a) && DataView.prototype.isPrototypeOf(s) ? t[i] = o(a.buffer) : t[i] = e(String(a))
                        }
                        var s;
                        this._buffer = [].concat.apply([], t),
                        this.size = this._buffer.length,
                        this.type = n && n.type || ""
                    }
                    function p(t, e, n) {
                        var i = d.call(this, t, n = n || {}) || this;
                        return i.name = e,
                        i.lastModifiedDate = n.lastModified ? new Date(n.lastModified) : new Date,
                        i.lastModified = +i.lastModifiedDate,
                        i
                    }
                    if (d.prototype.slice = function(t, e, n) {
                        return new d([this._buffer.slice(t || 0, e || this._buffer.length)],{
                            type: n
                        })
                    }
                    ,
                    d.prototype.toString = function() {
                        return "[object Blob]"
                    }
                    ,
                    (p.prototype = s(d.prototype)).constructor = p,
                    Object.setPrototypeOf)
                        Object.setPrototypeOf(p, d);
                    else
                        try {
                            p.__proto__ = d
                        } catch (s) {}
                    function h() {
                        if (!(this instanceof h))
                            throw new TypeError("Failed to construct 'FileReader': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");
                        var t = document.createDocumentFragment();
                        this.addEventListener = t.addEventListener,
                        this.dispatchEvent = function(e) {
                            var n = this["on" + e.type];
                            "function" == typeof n && n(e),
                            t.dispatchEvent(e)
                        }
                        ,
                        this.removeEventListener = t.removeEventListener
                    }
                    function f(t, e, n) {
                        if (!(e instanceof d))
                            throw new TypeError("Failed to execute '" + n + "' on 'FileReader': parameter 1 is not of type 'Blob'.");
                        t.result = "",
                        setTimeout((function() {
                            this.readyState = h.LOADING,
                            t.dispatchEvent(new Event("load")),
                            t.dispatchEvent(new Event("loadend"))
                        }
                        ))
                    }
                    p.prototype.toString = function() {
                        return "[object File]"
                    }
                    ,
                    h.EMPTY = 0,
                    h.LOADING = 1,
                    h.DONE = 2,
                    h.prototype.error = null,
                    h.prototype.onabort = null,
                    h.prototype.onerror = null,
                    h.prototype.onload = null,
                    h.prototype.onloadend = null,
                    h.prototype.onloadstart = null,
                    h.prototype.onprogress = null,
                    h.prototype.readAsDataURL = function(t) {
                        f(this, t, "readAsDataURL"),
                        this.result = "data:" + t.type + ";base64," + a(t._buffer)
                    }
                    ,
                    h.prototype.readAsText = function(t) {
                        f(this, t, "readAsText"),
                        this.result = n(t._buffer)
                    }
                    ,
                    h.prototype.readAsArrayBuffer = function(t) {
                        f(this, t, "readAsText"),
                        this.result = t._buffer.slice()
                    }
                    ,
                    h.prototype.abort = function() {}
                    ,
                    URL.createObjectURL = function(t) {
                        return t instanceof d ? "data:" + t.type + ";base64," + a(t._buffer) : i.call(URL, t)
                    }
                    ,
                    URL.revokeObjectURL = function(t) {
                        r && r.call(URL, t)
                    }
                    ;
                    var m = t.XMLHttpRequest && t.XMLHttpRequest.prototype.send;
                    m && (XMLHttpRequest.prototype.send = function(t) {
                        t instanceof d ? (this.setRequestHeader("Content-Type", t.type),
                        m.call(this, n(t._buffer))) : m.call(this, t)
                    }
                    ),
                    t.FileReader = h,
                    t.File = p,
                    t.Blob = d
                }()
            }("undefined" != typeof self && self || "undefined" != typeof window && window || void 0 !== i && i || Function('return typeof this === "object" && this.content')() || Function("return this")());
            var mt, gt, vt, yt, bt, wt, St, xt, Mt, Et, Ct, At, Tt, Ot, _t, Pt = Pt || function(t) {
                if (!(void 0 === t || "undefined" != typeof navigator && /MSIE [1-9]\./.test(navigator.userAgent))) {
                    var e = t.document
                      , n = function() {
                        return t.URL || t.webkitURL || t
                    }
                      , i = e.createElementNS("http://www.w3.org/1999/xhtml", "a")
                      , r = "download"in i
                      , o = /constructor/i.test(t.HTMLElement) || t.safari
                      , a = /CriOS\/[\d]+/.test(navigator.userAgent)
                      , s = t.setImmediate || t.setTimeout
                      , c = function(t) {
                        s((function() {
                            throw t
                        }
                        ), 0)
                    }
                      , l = function(t) {
                        setTimeout((function() {
                            "string" == typeof t ? n().revokeObjectURL(t) : t.remove()
                        }
                        ), 4e4)
                    }
                      , u = function(t) {
                        return /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type) ? new Blob([String.fromCharCode(65279), t],{
                            type: t.type
                        }) : t
                    }
                      , d = function(e, d, p) {
                        p || (e = u(e));
                        var h, f = this, m = "application/octet-stream" === e.type, g = function() {
                            !function(t, e, n) {
                                for (var i = (e = [].concat(e)).length; i--; ) {
                                    var r = t["on" + e[i]];
                                    if ("function" == typeof r)
                                        try {
                                            r.call(t, t)
                                        } catch (t) {
                                            c(t)
                                        }
                                }
                            }(f, "writestart progress write writeend".split(" "))
                        };
                        if (f.readyState = f.INIT,
                        r)
                            return h = n().createObjectURL(e),
                            void s((function() {
                                var t, e;
                                i.href = h,
                                i.download = d,
                                t = i,
                                e = new MouseEvent("click"),
                                t.dispatchEvent(e),
                                g(),
                                l(h),
                                f.readyState = f.DONE
                            }
                            ), 0);
                        !function() {
                            if ((a || m && o) && t.FileReader) {
                                var i = new FileReader;
                                return i.onloadend = function() {
                                    var e = a ? i.result : i.result.replace(/^data:[^;]*;/, "data:attachment/file;");
                                    t.open(e, "_blank") || (t.location.href = e),
                                    e = void 0,
                                    f.readyState = f.DONE,
                                    g()
                                }
                                ,
                                i.readAsDataURL(e),
                                f.readyState = f.INIT
                            }
                            h || (h = n().createObjectURL(e)),
                            m ? t.location.href = h : t.open(h, "_blank") || (t.location.href = h),
                            f.readyState = f.DONE,
                            g(),
                            l(h)
                        }()
                    }
                      , p = d.prototype;
                    return "undefined" != typeof navigator && navigator.msSaveOrOpenBlob ? function(t, e, n) {
                        return e = e || t.name || "download",
                        n || (t = u(t)),
                        navigator.msSaveOrOpenBlob(t, e)
                    }
                    : (p.abort = function() {}
                    ,
                    p.readyState = p.INIT = 0,
                    p.WRITING = 1,
                    p.DONE = 2,
                    p.error = p.onwritestart = p.onprogress = p.onwrite = p.onabort = p.onerror = p.onwriteend = null,
                    function(t, e, n) {
                        return new d(t,e || t.name || "download",n)
                    }
                    )
                }
            }("undefined" != typeof self && self || "undefined" != typeof window && window || void 0);
            function It(t) {
                var e = 0;
                if (71 !== t[e++] || 73 !== t[e++] || 70 !== t[e++] || 56 !== t[e++] || 56 != (t[e++] + 1 & 253) || 97 !== t[e++])
                    throw "Invalid GIF 87a/89a header.";
                var n = t[e++] | t[e++] << 8
                  , i = t[e++] | t[e++] << 8
                  , r = t[e++]
                  , o = r >> 7
                  , a = 1 << 1 + (7 & r);
                t[e++],
                t[e++];
                var s = null;
                o && (s = e,
                e += 3 * a);
                var c = !0
                  , l = []
                  , u = 0
                  , d = null
                  , p = 0
                  , h = null;
                for (this.width = n,
                this.height = i; c && e < t.length; )
                    switch (t[e++]) {
                    case 33:
                        switch (t[e++]) {
                        case 255:
                            if (11 !== t[e] || 78 == t[e + 1] && 69 == t[e + 2] && 84 == t[e + 3] && 83 == t[e + 4] && 67 == t[e + 5] && 65 == t[e + 6] && 80 == t[e + 7] && 69 == t[e + 8] && 50 == t[e + 9] && 46 == t[e + 10] && 48 == t[e + 11] && 3 == t[e + 12] && 1 == t[e + 13] && 0 == t[e + 16])
                                e += 14,
                                h = t[e++] | t[e++] << 8,
                                e++;
                            else
                                for (e += 12; 0 !== (E = t[e++]); )
                                    e += E;
                            break;
                        case 249:
                            if (4 !== t[e++] || 0 !== t[e + 4])
                                throw "Invalid graphics extension block.";
                            var f = t[e++];
                            u = t[e++] | t[e++] << 8,
                            d = t[e++],
                            0 == (1 & f) && (d = null),
                            p = f >> 2 & 7,
                            e++;
                            break;
                        case 254:
                            for (; 0 !== (E = t[e++]); )
                                e += E;
                            break;
                        default:
                            throw "Unknown graphic control label: 0x" + t[e - 1].toString(16)
                        }
                        break;
                    case 44:
                        var m = t[e++] | t[e++] << 8
                          , g = t[e++] | t[e++] << 8
                          , v = t[e++] | t[e++] << 8
                          , y = t[e++] | t[e++] << 8
                          , b = t[e++]
                          , w = b >> 6 & 1
                          , S = s
                          , x = !1;
                        b >> 7 && (x = !0,
                        S = e,
                        e += 3 * (1 << 1 + (7 & b)));
                        var M = e;
                        for (e++; ; ) {
                            var E;
                            if (0 === (E = t[e++]))
                                break;
                            e += E
                        }
                        l.push({
                            x: m,
                            y: g,
                            width: v,
                            height: y,
                            has_local_palette: x,
                            palette_offset: S,
                            data_offset: M,
                            data_length: e - M,
                            transparent_index: d,
                            interlaced: !!w,
                            delay: u,
                            disposal: p
                        });
                        break;
                    case 59:
                        c = !1;
                        break;
                    default:
                        throw "Unknown gif block: 0x" + t[e - 1].toString(16)
                    }
                this.numFrames = function() {
                    return l.length
                }
                ,
                this.loopCount = function() {
                    return h
                }
                ,
                this.frameInfo = function(t) {
                    if (t < 0 || t >= l.length)
                        throw "Frame index out of range.";
                    return l[t]
                }
                ,
                this.decodeAndBlitFrameBGRA = function(e, i) {
                    var r = this.frameInfo(e)
                      , o = r.width * r.height
                      , a = new Uint8Array(o);
                    kt(t, r.data_offset, a, o);
                    var s = r.palette_offset
                      , c = r.transparent_index;
                    null === c && (c = 256);
                    var l = r.width
                      , u = n - l
                      , d = l
                      , p = 4 * (r.y * n + r.x)
                      , h = 4 * ((r.y + r.height) * n + r.x)
                      , f = p
                      , m = 4 * u;
                    !0 === r.interlaced && (m += 4 * (l + u) * 7);
                    for (var g = 8, v = 0, y = a.length; v < y; ++v) {
                        var b = a[v];
                        if (0 === d && (d = l,
                        h <= (f += m) && (m = u + 4 * (l + u) * (g - 1),
                        f = p + (l + u) * (g << 1),
                        g >>= 1)),
                        b === c)
                            f += 4;
                        else {
                            var w = t[s + 3 * b]
                              , S = t[s + 3 * b + 1]
                              , x = t[s + 3 * b + 2];
                            i[f++] = x,
                            i[f++] = S,
                            i[f++] = w,
                            i[f++] = 255
                        }
                        --d
                    }
                }
                ,
                this.decodeAndBlitFrameRGBA = function(e, i) {
                    var r = this.frameInfo(e)
                      , o = r.width * r.height
                      , a = new Uint8Array(o);
                    kt(t, r.data_offset, a, o);
                    var s = r.palette_offset
                      , c = r.transparent_index;
                    null === c && (c = 256);
                    var l = r.width
                      , u = n - l
                      , d = l
                      , p = 4 * (r.y * n + r.x)
                      , h = 4 * ((r.y + r.height) * n + r.x)
                      , f = p
                      , m = 4 * u;
                    !0 === r.interlaced && (m += 4 * (l + u) * 7);
                    for (var g = 8, v = 0, y = a.length; v < y; ++v) {
                        var b = a[v];
                        if (0 === d && (d = l,
                        h <= (f += m) && (m = u + 4 * (l + u) * (g - 1),
                        f = p + (l + u) * (g << 1),
                        g >>= 1)),
                        b === c)
                            f += 4;
                        else {
                            var w = t[s + 3 * b]
                              , S = t[s + 3 * b + 1]
                              , x = t[s + 3 * b + 2];
                            i[f++] = w,
                            i[f++] = S,
                            i[f++] = x,
                            i[f++] = 255
                        }
                        --d
                    }
                }
            }
            function kt(t, e, n, i) {
                for (var r = t[e++], o = 1 << r, a = o + 1, s = a + 1, c = r + 1, l = (1 << c) - 1, u = 0, d = 0, p = 0, h = t[e++], f = new Int32Array(4096), m = null; ; ) {
                    for (; u < 16 && 0 !== h; )
                        d |= t[e++] << u,
                        u += 8,
                        1 === h ? h = t[e++] : --h;
                    if (u < c)
                        break;
                    var g = d & l;
                    if (d >>= c,
                    u -= c,
                    g !== o) {
                        if (g === a)
                            break;
                        for (var v = g < s ? g : m, y = 0, b = v; o < b; )
                            b = f[b] >> 8,
                            ++y;
                        var w = b;
                        if (i < p + y + (v !== g ? 1 : 0))
                            return void console.log("Warning, gif stream longer than expected.");
                        n[p++] = w;
                        var S = p += y;
                        for (v !== g && (n[p++] = w),
                        b = v; y--; )
                            b = f[b],
                            n[--S] = 255 & b,
                            b >>= 8;
                        null !== m && s < 4096 && (f[s++] = m << 8 | w,
                        l + 1 <= s && c < 12 && (++c,
                        l = l << 1 | 1)),
                        m = g
                    } else
                        s = a + 1,
                        l = (1 << (c = r + 1)) - 1,
                        m = null
                }
                return p !== i && console.log("Warning, gif stream shorter than expected."),
                n
            }
            try {
                e.GifWriter = function(t, e, n, i) {
                    var r = 0
                      , o = void 0 === (i = void 0 === i ? {} : i).loop ? null : i.loop
                      , a = void 0 === i.palette ? null : i.palette;
                    if (e <= 0 || n <= 0 || 65535 < e || 65535 < n)
                        throw "Width/Height invalid.";
                    function s(t) {
                        var e = t.length;
                        if (e < 2 || 256 < e || e & e - 1)
                            throw "Invalid code/color length, must be power of 2 and 2 .. 256.";
                        return e
                    }
                    t[r++] = 71,
                    t[r++] = 73,
                    t[r++] = 70,
                    t[r++] = 56,
                    t[r++] = 57,
                    t[r++] = 97;
                    var c = 0
                      , l = 0;
                    if (null !== a) {
                        for (var u = s(a); u >>= 1; )
                            ++c;
                        if (u = 1 << c,
                        --c,
                        void 0 !== i.background) {
                            if (u <= (l = i.background))
                                throw "Background index out of range.";
                            if (0 === l)
                                throw "Background index explicitly passed as 0."
                        }
                    }
                    if (t[r++] = 255 & e,
                    t[r++] = e >> 8 & 255,
                    t[r++] = 255 & n,
                    t[r++] = n >> 8 & 255,
                    t[r++] = (null !== a ? 128 : 0) | c,
                    t[r++] = l,
                    t[r++] = 0,
                    null !== a)
                        for (var d = 0, p = a.length; d < p; ++d) {
                            var h = a[d];
                            t[r++] = h >> 16 & 255,
                            t[r++] = h >> 8 & 255,
                            t[r++] = 255 & h
                        }
                    if (null !== o) {
                        if (o < 0 || 65535 < o)
                            throw "Loop count invalid.";
                        t[r++] = 33,
                        t[r++] = 255,
                        t[r++] = 11,
                        t[r++] = 78,
                        t[r++] = 69,
                        t[r++] = 84,
                        t[r++] = 83,
                        t[r++] = 67,
                        t[r++] = 65,
                        t[r++] = 80,
                        t[r++] = 69,
                        t[r++] = 50,
                        t[r++] = 46,
                        t[r++] = 48,
                        t[r++] = 3,
                        t[r++] = 1,
                        t[r++] = 255 & o,
                        t[r++] = o >> 8 & 255,
                        t[r++] = 0
                    }
                    var f = !1;
                    this.addFrame = function(e, n, i, o, c, l) {
                        if (!0 === f && (--r,
                        f = !1),
                        l = void 0 === l ? {} : l,
                        e < 0 || n < 0 || 65535 < e || 65535 < n)
                            throw "x/y invalid.";
                        if (i <= 0 || o <= 0 || 65535 < i || 65535 < o)
                            throw "Width/Height invalid.";
                        if (c.length < i * o)
                            throw "Not enough pixels for the frame size.";
                        var u = !0
                          , d = l.palette;
                        if (null == d && (u = !1,
                        d = a),
                        null == d)
                            throw "Must supply either a local or global palette.";
                        for (var p = s(d), h = 0; p >>= 1; )
                            ++h;
                        p = 1 << h;
                        var m = void 0 === l.delay ? 0 : l.delay
                          , g = void 0 === l.disposal ? 0 : l.disposal;
                        if (g < 0 || 3 < g)
                            throw "Disposal out of range.";
                        var v = !1
                          , y = 0;
                        if (void 0 !== l.transparent && null !== l.transparent && (v = !0,
                        (y = l.transparent) < 0 || p <= y))
                            throw "Transparent color index.";
                        if ((0 !== g || v || 0 !== m) && (t[r++] = 33,
                        t[r++] = 249,
                        t[r++] = 4,
                        t[r++] = g << 2 | (!0 === v ? 1 : 0),
                        t[r++] = 255 & m,
                        t[r++] = m >> 8 & 255,
                        t[r++] = y,
                        t[r++] = 0),
                        t[r++] = 44,
                        t[r++] = 255 & e,
                        t[r++] = e >> 8 & 255,
                        t[r++] = 255 & n,
                        t[r++] = n >> 8 & 255,
                        t[r++] = 255 & i,
                        t[r++] = i >> 8 & 255,
                        t[r++] = 255 & o,
                        t[r++] = o >> 8 & 255,
                        t[r++] = !0 === u ? 128 | h - 1 : 0,
                        !0 === u)
                            for (var b = 0, w = d.length; b < w; ++b) {
                                var S = d[b];
                                t[r++] = S >> 16 & 255,
                                t[r++] = S >> 8 & 255,
                                t[r++] = 255 & S
                            }
                        r = function(t, e, n, i) {
                            t[e++] = n;
                            var r = e++
                              , o = 1 << n
                              , a = o - 1
                              , s = o + 1
                              , c = s + 1
                              , l = n + 1
                              , u = 0
                              , d = 0;
                            function p(n) {
                                for (; n <= u; )
                                    t[e++] = 255 & d,
                                    d >>= 8,
                                    u -= 8,
                                    e === r + 256 && (t[r] = 255,
                                    r = e++)
                            }
                            function h(t) {
                                d |= t << u,
                                u += l,
                                p(8)
                            }
                            var f = i[0] & a
                              , m = {};
                            h(o);
                            for (var g = 1, v = i.length; g < v; ++g) {
                                var y = i[g] & a
                                  , b = f << 8 | y
                                  , w = m[b];
                                if (void 0 === w) {
                                    for (d |= f << u,
                                    u += l; 8 <= u; )
                                        t[e++] = 255 & d,
                                        d >>= 8,
                                        u -= 8,
                                        e === r + 256 && (t[r] = 255,
                                        r = e++);
                                    4096 === c ? (h(o),
                                    c = s + 1,
                                    l = n + 1,
                                    m = {}) : (1 << l <= c && ++l,
                                    m[b] = c++),
                                    f = y
                                } else
                                    f = w
                            }
                            return h(f),
                            h(s),
                            p(1),
                            r + 1 === e ? t[r] = 0 : (t[r] = e - r - 1,
                            t[e++] = 0),
                            e
                        }(t, r, h < 2 ? 2 : h, c)
                    }
                    ,
                    this.end = function() {
                        return !1 === f && (t[r++] = 59,
                        f = !0),
                        r
                    }
                }
                ,
                e.GifReader = It
            } catch (a) {}
            function Dt(t) {
                var e, n, i, r, o, a = Math.floor, s = new Array(64), c = new Array(64), l = new Array(64), u = new Array(64), d = new Array(65535), p = new Array(65535), h = new Array(64), f = new Array(64), m = [], g = 0, v = 7, y = new Array(64), b = new Array(64), w = new Array(64), S = new Array(256), x = new Array(2048), M = [0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12, 17, 25, 30, 41, 43, 9, 11, 18, 24, 31, 40, 44, 53, 10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63], E = [0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], C = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], A = [0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 125], T = [1, 2, 3, 0, 4, 17, 5, 18, 33, 49, 65, 6, 19, 81, 97, 7, 34, 113, 20, 50, 129, 145, 161, 8, 35, 66, 177, 193, 21, 82, 209, 240, 36, 51, 98, 114, 130, 9, 10, 22, 23, 24, 25, 26, 37, 38, 39, 40, 41, 42, 52, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250], O = [0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0], _ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], P = [0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119], I = [0, 1, 2, 3, 17, 4, 5, 33, 49, 6, 18, 65, 81, 7, 97, 113, 19, 34, 50, 129, 8, 20, 66, 145, 161, 177, 193, 9, 35, 51, 82, 240, 21, 98, 114, 209, 10, 22, 36, 52, 225, 37, 241, 23, 24, 25, 26, 38, 39, 40, 41, 42, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 226, 227, 228, 229, 230, 231, 232, 233, 234, 242, 243, 244, 245, 246, 247, 248, 249, 250];
                function k(t, e) {
                    for (var n = 0, i = 0, r = new Array, o = 1; o <= 16; o++) {
                        for (var a = 1; a <= t[o]; a++)
                            r[e[i]] = [],
                            r[e[i]][0] = n,
                            r[e[i]][1] = o,
                            i++,
                            n++;
                        n *= 2
                    }
                    return r
                }
                function D(t) {
                    for (var e = t[0], n = t[1] - 1; 0 <= n; )
                        e & 1 << n && (g |= 1 << v),
                        n--,
                        --v < 0 && (255 == g ? (R(255),
                        R(0)) : R(g),
                        v = 7,
                        g = 0)
                }
                function R(t) {
                    m.push(t)
                }
                function L(t) {
                    R(t >> 8 & 255),
                    R(255 & t)
                }
                function N(t, e, n, i, r) {
                    for (var o, a = r[0], s = r[240], c = function(t, e) {
                        var n, i, r, o, a, s, c, l, u, d, p = 0;
                        for (u = 0; u < 8; ++u) {
                            n = t[p],
                            i = t[p + 1],
                            r = t[p + 2],
                            o = t[p + 3],
                            a = t[p + 4],
                            s = t[p + 5],
                            c = t[p + 6];
                            var f = n + (l = t[p + 7])
                              , m = n - l
                              , g = i + c
                              , v = i - c
                              , y = r + s
                              , b = r - s
                              , w = o + a
                              , S = o - a
                              , x = f + w
                              , M = f - w
                              , E = g + y
                              , C = g - y;
                            t[p] = x + E,
                            t[p + 4] = x - E;
                            var A = .707106781 * (C + M);
                            t[p + 2] = M + A,
                            t[p + 6] = M - A;
                            var T = .382683433 * ((x = S + b) - (C = v + m))
                              , O = .5411961 * x + T
                              , _ = 1.306562965 * C + T
                              , P = .707106781 * (E = b + v)
                              , I = m + P
                              , k = m - P;
                            t[p + 5] = k + O,
                            t[p + 3] = k - O,
                            t[p + 1] = I + _,
                            t[p + 7] = I - _,
                            p += 8
                        }
                        for (u = p = 0; u < 8; ++u) {
                            n = t[p],
                            i = t[p + 8],
                            r = t[p + 16],
                            o = t[p + 24],
                            a = t[p + 32],
                            s = t[p + 40],
                            c = t[p + 48];
                            var D = n + (l = t[p + 56])
                              , R = n - l
                              , L = i + c
                              , N = i - c
                              , j = r + s
                              , V = r - s
                              , F = o + a
                              , U = o - a
                              , B = D + F
                              , z = D - F
                              , G = L + j
                              , H = L - j;
                            t[p] = B + G,
                            t[p + 32] = B - G;
                            var W = .707106781 * (H + z);
                            t[p + 16] = z + W,
                            t[p + 48] = z - W;
                            var q = .382683433 * ((B = U + V) - (H = N + R))
                              , X = .5411961 * B + q
                              , Y = 1.306562965 * H + q
                              , K = .707106781 * (G = V + N)
                              , Z = R + K
                              , J = R - K;
                            t[p + 40] = J + X,
                            t[p + 24] = J - X,
                            t[p + 8] = Z + Y,
                            t[p + 56] = Z - Y,
                            p++
                        }
                        for (u = 0; u < 64; ++u)
                            d = t[u] * e[u],
                            h[u] = 0 < d ? d + .5 | 0 : d - .5 | 0;
                        return h
                    }(t, e), l = 0; l < 64; ++l)
                        f[M[l]] = c[l];
                    var u = f[0] - n;
                    n = f[0],
                    0 == u ? D(i[0]) : (D(i[p[o = 32767 + u]]),
                    D(d[o]));
                    for (var m = 63; 0 < m && 0 == f[m]; m--)
                        ;
                    if (0 == m)
                        return D(a),
                        n;
                    for (var g, v = 1; v <= m; ) {
                        for (var y = v; 0 == f[v] && v <= m; ++v)
                            ;
                        var b = v - y;
                        if (16 <= b) {
                            g = b >> 4;
                            for (var w = 1; w <= g; ++w)
                                D(s);
                            b &= 15
                        }
                        o = 32767 + f[v],
                        D(r[(b << 4) + p[o]]),
                        D(d[o]),
                        v++
                    }
                    return 63 != m && D(a),
                    n
                }
                function j(t) {
                    t <= 0 && (t = 1),
                    100 < t && (t = 100),
                    o != t && (function(t) {
                        for (var e = [16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55, 14, 13, 16, 24, 40, 57, 69, 56, 14, 17, 22, 29, 51, 87, 80, 62, 18, 22, 37, 56, 68, 109, 103, 77, 24, 35, 55, 64, 81, 104, 113, 92, 49, 64, 78, 87, 103, 121, 120, 101, 72, 92, 95, 98, 112, 100, 103, 99], n = 0; n < 64; n++) {
                            var i = a((e[n] * t + 50) / 100);
                            i < 1 ? i = 1 : 255 < i && (i = 255),
                            s[M[n]] = i
                        }
                        for (var r = [17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99, 24, 26, 56, 99, 99, 99, 99, 99, 47, 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99], o = 0; o < 64; o++) {
                            var d = a((r[o] * t + 50) / 100);
                            d < 1 ? d = 1 : 255 < d && (d = 255),
                            c[M[o]] = d
                        }
                        for (var p = [1, 1.387039845, 1.306562965, 1.175875602, 1, .785694958, .5411961, .275899379], h = 0, f = 0; f < 8; f++)
                            for (var m = 0; m < 8; m++)
                                l[h] = 1 / (s[M[h]] * p[f] * p[m] * 8),
                                u[h] = 1 / (c[M[h]] * p[f] * p[m] * 8),
                                h++
                    }(t < 50 ? Math.floor(5e3 / t) : Math.floor(200 - 2 * t)),
                    o = t)
                }
                this.encode = function(t, o) {
                    var a, d;
                    (new Date).getTime(),
                    o && j(o),
                    m = new Array,
                    g = 0,
                    v = 7,
                    L(65496),
                    L(65504),
                    L(16),
                    R(74),
                    R(70),
                    R(73),
                    R(70),
                    R(0),
                    R(1),
                    R(1),
                    R(0),
                    L(1),
                    L(1),
                    R(0),
                    R(0),
                    function() {
                        L(65499),
                        L(132),
                        R(0);
                        for (var t = 0; t < 64; t++)
                            R(s[t]);
                        R(1);
                        for (var e = 0; e < 64; e++)
                            R(c[e])
                    }(),
                    a = t.width,
                    d = t.height,
                    L(65472),
                    L(17),
                    R(8),
                    L(d),
                    L(a),
                    R(3),
                    R(1),
                    R(17),
                    R(0),
                    R(2),
                    R(17),
                    R(1),
                    R(3),
                    R(17),
                    R(1),
                    function() {
                        L(65476),
                        L(418),
                        R(0);
                        for (var t = 0; t < 16; t++)
                            R(E[t + 1]);
                        for (var e = 0; e <= 11; e++)
                            R(C[e]);
                        R(16);
                        for (var n = 0; n < 16; n++)
                            R(A[n + 1]);
                        for (var i = 0; i <= 161; i++)
                            R(T[i]);
                        R(1);
                        for (var r = 0; r < 16; r++)
                            R(O[r + 1]);
                        for (var o = 0; o <= 11; o++)
                            R(_[o]);
                        R(17);
                        for (var a = 0; a < 16; a++)
                            R(P[a + 1]);
                        for (var s = 0; s <= 161; s++)
                            R(I[s])
                    }(),
                    L(65498),
                    L(12),
                    R(3),
                    R(1),
                    R(0),
                    R(2),
                    R(17),
                    R(3),
                    R(17),
                    R(0),
                    R(63),
                    R(0);
                    var p = 0
                      , h = 0
                      , f = 0;
                    g = 0,
                    v = 7,
                    this.encode.displayName = "_encode_";
                    for (var S, M, k, V, F, U, B, z, G, H = t.data, W = t.width, q = t.height, X = 4 * W, Y = 0; Y < q; ) {
                        for (S = 0; S < X; ) {
                            for (U = F = X * Y + S,
                            B = -1,
                            G = z = 0; G < 64; G++)
                                U = F + (z = G >> 3) * X + (B = 4 * (7 & G)),
                                q <= Y + z && (U -= X * (Y + 1 + z - q)),
                                X <= S + B && (U -= S + B - X + 4),
                                M = H[U++],
                                k = H[U++],
                                V = H[U++],
                                y[G] = (x[M] + x[k + 256 >> 0] + x[V + 512 >> 0] >> 16) - 128,
                                b[G] = (x[M + 768 >> 0] + x[k + 1024 >> 0] + x[V + 1280 >> 0] >> 16) - 128,
                                w[G] = (x[M + 1280 >> 0] + x[k + 1536 >> 0] + x[V + 1792 >> 0] >> 16) - 128;
                            p = N(y, l, p, e, i),
                            h = N(b, u, h, n, r),
                            f = N(w, u, f, n, r),
                            S += 32
                        }
                        Y += 8
                    }
                    if (0 <= v) {
                        var K = [];
                        K[1] = v + 1,
                        K[0] = (1 << v + 1) - 1,
                        D(K)
                    }
                    return L(65497),
                    new Uint8Array(m)
                }
                ,
                (new Date).getTime(),
                t || (t = 50),
                function() {
                    for (var t = String.fromCharCode, e = 0; e < 256; e++)
                        S[e] = t(e)
                }(),
                e = k(E, C),
                n = k(O, _),
                i = k(A, T),
                r = k(P, I),
                function() {
                    for (var t = 1, e = 2, n = 1; n <= 15; n++) {
                        for (var i = t; i < e; i++)
                            p[32767 + i] = n,
                            d[32767 + i] = [],
                            d[32767 + i][1] = n,
                            d[32767 + i][0] = i;
                        for (var r = -(e - 1); r <= -t; r++)
                            p[32767 + r] = n,
                            d[32767 + r] = [],
                            d[32767 + r][1] = n,
                            d[32767 + r][0] = e - 1 + r;
                        t <<= 1,
                        e <<= 1
                    }
                }(),
                function() {
                    for (var t = 0; t < 256; t++)
                        x[t] = 19595 * t,
                        x[t + 256 >> 0] = 38470 * t,
                        x[t + 512 >> 0] = 7471 * t + 32768,
                        x[t + 768 >> 0] = -11059 * t,
                        x[t + 1024 >> 0] = -21709 * t,
                        x[t + 1280 >> 0] = 32768 * t + 8421375,
                        x[t + 1536 >> 0] = -27439 * t,
                        x[t + 1792 >> 0] = -5329 * t
                }(),
                j(t),
                (new Date).getTime()
            }
            function Rt(t, e) {
                if (this.pos = 0,
                this.buffer = t,
                this.datav = new DataView(t.buffer),
                this.is_with_alpha = !!e,
                this.bottom_up = !0,
                this.flag = String.fromCharCode(this.buffer[0]) + String.fromCharCode(this.buffer[1]),
                this.pos += 2,
                -1 === ["BM", "BA", "CI", "CP", "IC", "PT"].indexOf(this.flag))
                    throw new Error("Invalid BMP File");
                this.parseHeader(),
                this.parseBGR()
            }
            window.tmp = It,
            ft.API.adler32cs = (wt = "function" == typeof ArrayBuffer && "function" == typeof Uint8Array,
            St = null,
            xt = function() {
                if (!wt)
                    return function() {
                        return !1
                    }
                    ;
                try {
                    var t = {};
                    "function" == typeof t.Buffer && (St = t.Buffer)
                } catch (t) {}
                return function(t) {
                    return t instanceof ArrayBuffer || null !== St && t instanceof St
                }
            }(),
            Mt = null !== St ? function(t) {
                return new St(t,"utf8").toString("binary")
            }
            : function(t) {
                return unescape(encodeURIComponent(t))
            }
            ,
            Et = function(t, e) {
                for (var n = 65535 & t, i = t >>> 16, r = 0, o = e.length; r < o; r++)
                    i = (i + (n = (n + (255 & e.charCodeAt(r))) % 65521)) % 65521;
                return (i << 16 | n) >>> 0
            }
            ,
            Ct = function(t, e) {
                for (var n = 65535 & t, i = t >>> 16, r = 0, o = e.length; r < o; r++)
                    i = (i + (n = (n + e[r]) % 65521)) % 65521;
                return (i << 16 | n) >>> 0
            }
            ,
            Tt = (At = {}).Adler32 = (((bt = (yt = function(t) {
                if (!(this instanceof yt))
                    throw new TypeError("Constructor cannot called be as a function.");
                if (!isFinite(t = null == t ? 1 : +t))
                    throw new Error("First arguments needs to be a finite number.");
                this.checksum = t >>> 0
            }
            ).prototype = {}).constructor = yt).from = ((mt = function(t) {
                if (!(this instanceof yt))
                    throw new TypeError("Constructor cannot called be as a function.");
                if (null == t)
                    throw new Error("First argument needs to be a string.");
                this.checksum = Et(1, t.toString())
            }
            ).prototype = bt,
            mt),
            yt.fromUtf8 = ((gt = function(t) {
                if (!(this instanceof yt))
                    throw new TypeError("Constructor cannot called be as a function.");
                if (null == t)
                    throw new Error("First argument needs to be a string.");
                var e = Mt(t.toString());
                this.checksum = Et(1, e)
            }
            ).prototype = bt,
            gt),
            wt && (yt.fromBuffer = ((vt = function(t) {
                if (!(this instanceof yt))
                    throw new TypeError("Constructor cannot called be as a function.");
                if (!xt(t))
                    throw new Error("First argument needs to be ArrayBuffer.");
                var e = new Uint8Array(t);
                return this.checksum = Ct(1, e)
            }
            ).prototype = bt,
            vt)),
            bt.update = function(t) {
                if (null == t)
                    throw new Error("First argument needs to be a string.");
                return t = t.toString(),
                this.checksum = Et(this.checksum, t)
            }
            ,
            bt.updateUtf8 = function(t) {
                if (null == t)
                    throw new Error("First argument needs to be a string.");
                var e = Mt(t.toString());
                return this.checksum = Et(this.checksum, e)
            }
            ,
            wt && (bt.updateBuffer = function(t) {
                if (!xt(t))
                    throw new Error("First argument needs to be ArrayBuffer.");
                var e = new Uint8Array(t);
                return this.checksum = Ct(this.checksum, e)
            }
            ),
            bt.clone = function() {
                return new Tt(this.checksum)
            }
            ,
            yt),
            At.from = function(t) {
                if (null == t)
                    throw new Error("First argument needs to be a string.");
                return Et(1, t.toString())
            }
            ,
            At.fromUtf8 = function(t) {
                if (null == t)
                    throw new Error("First argument needs to be a string.");
                var e = Mt(t.toString());
                return Et(1, e)
            }
            ,
            wt && (At.fromBuffer = function(t) {
                if (!xt(t))
                    throw new Error("First argument need to be ArrayBuffer.");
                var e = new Uint8Array(t);
                return Ct(1, e)
            }
            ),
            At),
            function(t) {
                t.__bidiEngine__ = t.prototype.__bidiEngine__ = function(t) {
                    var n, i, r, o, a, s, c, l = e, u = [[0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 17, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 21, 21, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0]], d = [[2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 33, 3, 1, 1]], p = {
                        L: 0,
                        R: 1,
                        EN: 2,
                        AN: 3,
                        N: 4,
                        B: 5,
                        S: 6
                    }, h = {
                        0: 0,
                        5: 1,
                        6: 2,
                        7: 3,
                        32: 4,
                        251: 5,
                        254: 6,
                        255: 7
                    }, f = ["(", ")", "(", "<", ">", "<", "[", "]", "[", "{", "}", "{", "«", "»", "«", "‹", "›", "‹", "⁅", "⁆", "⁅", "⁽", "⁾", "⁽", "₍", "₎", "₍", "≤", "≥", "≤", "〈", "〉", "〈", "﹙", "﹚", "﹙", "﹛", "﹜", "﹛", "﹝", "﹞", "﹝", "﹤", "﹥", "﹤"], m = new RegExp(/^([1-4|9]|1[0-9]|2[0-9]|3[0168]|4[04589]|5[012]|7[78]|159|16[0-9]|17[0-2]|21[569]|22[03489]|250)$/), g = !1, v = 0;
                    this.__bidiEngine__ = {};
                    var y = function(t) {
                        var e = t.charCodeAt()
                          , n = e >> 8
                          , i = h[n];
                        return void 0 !== i ? l[256 * i + (255 & e)] : 252 === n || 253 === n ? "AL" : m.test(n) ? "L" : 8 === n ? "R" : "N"
                    }
                      , b = function(t) {
                        for (var e, n = 0; n < t.length; n++) {
                            if ("L" === (e = y(t.charAt(n))))
                                return !1;
                            if ("R" === e)
                                return !0
                        }
                        return !1
                    }
                      , w = function(t, e, a, s) {
                        var c, l, u, d, p = e[s];
                        switch (p) {
                        case "L":
                        case "R":
                            g = !1;
                            break;
                        case "N":
                        case "AN":
                            break;
                        case "EN":
                            g && (p = "AN");
                            break;
                        case "AL":
                            g = !0,
                            p = "R";
                            break;
                        case "WS":
                            p = "N";
                            break;
                        case "CS":
                            s < 1 || s + 1 >= e.length || "EN" !== (c = a[s - 1]) && "AN" !== c || "EN" !== (l = e[s + 1]) && "AN" !== l ? p = "N" : g && (l = "AN"),
                            p = l === c ? l : "N";
                            break;
                        case "ES":
                            p = "EN" === (c = 0 < s ? a[s - 1] : "B") && s + 1 < e.length && "EN" === e[s + 1] ? "EN" : "N";
                            break;
                        case "ET":
                            if (0 < s && "EN" === a[s - 1]) {
                                p = "EN";
                                break
                            }
                            if (g) {
                                p = "N";
                                break
                            }
                            for (u = s + 1,
                            d = e.length; u < d && "ET" === e[u]; )
                                u++;
                            p = u < d && "EN" === e[u] ? "EN" : "N";
                            break;
                        case "NSM":
                            if (r && !o) {
                                for (d = e.length,
                                u = s + 1; u < d && "NSM" === e[u]; )
                                    u++;
                                if (u < d) {
                                    var h = t[s]
                                      , f = 1425 <= h && h <= 2303 || 64286 === h;
                                    if (c = e[u],
                                    f && ("R" === c || "AL" === c)) {
                                        p = "R";
                                        break
                                    }
                                }
                            }
                            p = s < 1 || "B" === (c = e[s - 1]) ? "N" : a[s - 1];
                            break;
                        case "B":
                            n = !(g = !1),
                            p = v;
                            break;
                        case "S":
                            i = !0,
                            p = "N";
                            break;
                        case "LRE":
                        case "RLE":
                        case "LRO":
                        case "RLO":
                        case "PDF":
                            g = !1;
                            break;
                        case "BN":
                            p = "N"
                        }
                        return p
                    }
                      , S = function(t, e, n) {
                        var i = t.split("");
                        return n && x(i, n, {
                            hiLevel: v
                        }),
                        i.reverse(),
                        e && e.reverse(),
                        i.join("")
                    }
                      , x = function(t, e, r) {
                        var o, a, s, c, l, h = -1, f = t.length, m = 0, b = [], S = v ? d : u, x = [];
                        for (i = n = g = !1,
                        a = 0; a < f; a++)
                            x[a] = y(t[a]);
                        for (s = 0; s < f; s++) {
                            if (l = m,
                            b[s] = w(t, x, b, s),
                            o = 240 & (m = S[l][p[b[s]]]),
                            m &= 15,
                            e[s] = c = S[m][5],
                            0 < o)
                                if (16 === o) {
                                    for (a = h; a < s; a++)
                                        e[a] = 1;
                                    h = -1
                                } else
                                    h = -1;
                            if (S[m][6])
                                -1 === h && (h = s);
                            else if (-1 < h) {
                                for (a = h; a < s; a++)
                                    e[a] = c;
                                h = -1
                            }
                            "B" === x[s] && (e[s] = 0),
                            r.hiLevel |= c
                        }
                        i && function(t, e, n) {
                            for (var i = 0; i < n; i++)
                                if ("S" === t[i]) {
                                    e[i] = v;
                                    for (var r = i - 1; 0 <= r && "WS" === t[r]; r--)
                                        e[r] = v
                                }
                        }(x, e, f)
                    }
                      , M = function(t, e, i, r, o) {
                        if (!(o.hiLevel < t)) {
                            if (1 === t && 1 === v && !n)
                                return e.reverse(),
                                void (i && i.reverse());
                            for (var a, s, c, l, u = e.length, d = 0; d < u; ) {
                                if (r[d] >= t) {
                                    for (c = d + 1; c < u && r[c] >= t; )
                                        c++;
                                    for (l = d,
                                    s = c - 1; l < s; l++,
                                    s--)
                                        a = e[l],
                                        e[l] = e[s],
                                        e[s] = a,
                                        i && (a = i[l],
                                        i[l] = i[s],
                                        i[s] = a);
                                    d = c
                                }
                                d++
                            }
                        }
                    }
                      , E = function(t, e, n) {
                        var i = t.split("")
                          , r = {
                            hiLevel: v
                        };
                        return n || (n = []),
                        x(i, n, r),
                        function(t, e, n) {
                            if (0 !== n.hiLevel && c)
                                for (var i, r = 0; r < t.length; r++)
                                    1 === e[r] && 0 <= (i = f.indexOf(t[r])) && (t[r] = f[i + 1])
                        }(i, n, r),
                        M(2, i, e, n, r),
                        M(1, i, e, n, r),
                        i.join("")
                    };
                    return this.__bidiEngine__.doBidiReorder = function(t, e, n) {
                        if (function(t, e) {
                            if (e)
                                for (var n = 0; n < t.length; n++)
                                    e[n] = n;
                            void 0 === o && (o = b(t)),
                            void 0 === s && (s = b(t))
                        }(t, e),
                        r || !a || s)
                            if (r && a && o ^ s)
                                v = o ? 1 : 0,
                                t = S(t, e, n);
                            else if (!r && a && s)
                                v = o ? 1 : 0,
                                t = E(t, e, n),
                                t = S(t, e);
                            else if (!r || o || a || s) {
                                if (r && !a && o ^ s)
                                    t = S(t, e),
                                    t = o ? (v = 0,
                                    E(t, e, n)) : (v = 1,
                                    t = E(t, e, n),
                                    S(t, e));
                                else if (r && o && !a && s)
                                    v = 1,
                                    t = E(t, e, n),
                                    t = S(t, e);
                                else if (!r && !a && o ^ s) {
                                    var i = c;
                                    o ? (v = 1,
                                    t = E(t, e, n),
                                    v = 0,
                                    c = !1,
                                    t = E(t, e, n),
                                    c = i) : (v = 0,
                                    t = E(t, e, n),
                                    t = S(t, e),
                                    c = !(v = 1),
                                    t = E(t, e, n),
                                    c = i,
                                    t = S(t, e))
                                }
                            } else
                                v = 0,
                                t = E(t, e, n);
                        else
                            v = o ? 1 : 0,
                            t = E(t, e, n);
                        return t
                    }
                    ,
                    this.__bidiEngine__.setOptions = function(t) {
                        t && (r = t.isInputVisual,
                        a = t.isOutputVisual,
                        o = t.isInputRtl,
                        s = t.isOutputRtl,
                        c = t.isSymmetricSwapping)
                    }
                    ,
                    this.__bidiEngine__.setOptions(t),
                    this.__bidiEngine__
                }
                ;
                var e = ["BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "S", "B", "S", "WS", "B", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "B", "B", "B", "S", "WS", "N", "N", "ET", "ET", "ET", "N", "N", "N", "N", "N", "ES", "CS", "ES", "CS", "CS", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "CS", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "BN", "BN", "BN", "BN", "BN", "BN", "B", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "BN", "CS", "N", "ET", "ET", "ET", "ET", "N", "N", "N", "N", "L", "N", "N", "BN", "N", "N", "ET", "ET", "EN", "EN", "N", "L", "N", "N", "N", "EN", "L", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "L", "L", "L", "L", "L", "L", "L", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "L", "N", "N", "N", "N", "N", "ET", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "R", "NSM", "R", "NSM", "NSM", "R", "NSM", "NSM", "R", "NSM", "N", "N", "N", "N", "N", "N", "N", "N", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "N", "N", "N", "N", "N", "R", "R", "R", "R", "R", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "AN", "AN", "AN", "AN", "AN", "AN", "N", "N", "AL", "ET", "ET", "AL", "CS", "AL", "N", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "N", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "AN", "ET", "AN", "AN", "AL", "AL", "AL", "NSM", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AN", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "NSM", "NSM", "N", "NSM", "NSM", "NSM", "NSM", "AL", "AL", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "N", "AL", "AL", "NSM", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "N", "N", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "AL", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "R", "R", "N", "N", "N", "N", "R", "N", "N", "N", "N", "N", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "WS", "BN", "BN", "BN", "L", "R", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "WS", "B", "LRE", "RLE", "PDF", "LRO", "RLO", "CS", "ET", "ET", "ET", "ET", "ET", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "CS", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "WS", "BN", "BN", "BN", "BN", "BN", "N", "LRI", "RLI", "FSI", "PDI", "BN", "BN", "BN", "BN", "BN", "BN", "EN", "L", "N", "N", "EN", "EN", "EN", "EN", "EN", "EN", "ES", "ES", "N", "N", "N", "L", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "ES", "ES", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "ET", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "R", "NSM", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "ES", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "N", "R", "R", "R", "R", "R", "N", "R", "N", "R", "R", "N", "R", "R", "N", "R", "R", "R", "R", "R", "R", "R", "R", "R", "R", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "NSM", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "CS", "N", "CS", "N", "N", "CS", "N", "N", "N", "N", "N", "N", "N", "N", "N", "ET", "N", "N", "ES", "ES", "N", "N", "N", "N", "N", "ET", "ET", "N", "N", "N", "N", "N", "AL", "AL", "AL", "AL", "AL", "N", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "AL", "N", "N", "BN", "N", "N", "N", "ET", "ET", "ET", "N", "N", "N", "N", "N", "ES", "CS", "ES", "CS", "CS", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "EN", "CS", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "L", "N", "N", "N", "L", "L", "L", "L", "L", "L", "N", "N", "L", "L", "L", "L", "L", "L", "N", "N", "L", "L", "L", "L", "L", "L", "N", "N", "L", "L", "L", "N", "N", "N", "ET", "ET", "N", "N", "N", "ET", "ET", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N", "N"]
                  , n = new t.__bidiEngine__({
                    isInputVisual: !0
                });
                t.API.events.push(["postProcessText", function(t) {
                    var e = t.text
                      , i = (t.x,
                    t.y,
                    t.options || {})
                      , r = (t.mutex,
                    i.lang,
                    []);
                    if ("[object Array]" === Object.prototype.toString.call(e)) {
                        var o = 0;
                        for (r = [],
                        o = 0; o < e.length; o += 1)
                            "[object Array]" === Object.prototype.toString.call(e[o]) ? r.push([n.doBidiReorder(e[o][0]), e[o][1], e[o][2]]) : r.push([n.doBidiReorder(e[o])]);
                        t.text = r
                    } else
                        t.text = n.doBidiReorder(e)
                }
                ])
            }(ft),
            window.tmp = Dt,
            Rt.prototype.parseHeader = function() {
                if (this.fileSize = this.datav.getUint32(this.pos, !0),
                this.pos += 4,
                this.reserved = this.datav.getUint32(this.pos, !0),
                this.pos += 4,
                this.offset = this.datav.getUint32(this.pos, !0),
                this.pos += 4,
                this.headerSize = this.datav.getUint32(this.pos, !0),
                this.pos += 4,
                this.width = this.datav.getUint32(this.pos, !0),
                this.pos += 4,
                this.height = this.datav.getInt32(this.pos, !0),
                this.pos += 4,
                this.planes = this.datav.getUint16(this.pos, !0),
                this.pos += 2,
                this.bitPP = this.datav.getUint16(this.pos, !0),
                this.pos += 2,
                this.compress = this.datav.getUint32(this.pos, !0),
                this.pos += 4,
                this.rawSize = this.datav.getUint32(this.pos, !0),
                this.pos += 4,
                this.hr = this.datav.getUint32(this.pos, !0),
                this.pos += 4,
                this.vr = this.datav.getUint32(this.pos, !0),
                this.pos += 4,
                this.colors = this.datav.getUint32(this.pos, !0),
                this.pos += 4,
                this.importantColors = this.datav.getUint32(this.pos, !0),
                this.pos += 4,
                16 === this.bitPP && this.is_with_alpha && (this.bitPP = 15),
                this.bitPP < 15) {
                    var t = 0 === this.colors ? 1 << this.bitPP : this.colors;
                    this.palette = new Array(t);
                    for (var e = 0; e < t; e++) {
                        var n = this.datav.getUint8(this.pos++, !0)
                          , i = this.datav.getUint8(this.pos++, !0)
                          , r = this.datav.getUint8(this.pos++, !0)
                          , o = this.datav.getUint8(this.pos++, !0);
                        this.palette[e] = {
                            red: r,
                            green: i,
                            blue: n,
                            quad: o
                        }
                    }
                }
                this.height < 0 && (this.height *= -1,
                this.bottom_up = !1)
            }
            ,
            Rt.prototype.parseBGR = function() {
                this.pos = this.offset;
                try {
                    var t = "bit" + this.bitPP
                      , e = this.width * this.height * 4;
                    this.data = new Uint8Array(e),
                    this[t]()
                } catch (t) {
                    console.log("bit decode error:" + t)
                }
            }
            ,
            Rt.prototype.bit1 = function() {
                var t = Math.ceil(this.width / 8)
                  , e = t % 4
                  , n = 0 <= this.height ? this.height - 1 : -this.height;
                for (n = this.height - 1; 0 <= n; n--) {
                    for (var i = this.bottom_up ? n : this.height - 1 - n, r = 0; r < t; r++)
                        for (var o = this.datav.getUint8(this.pos++, !0), a = i * this.width * 4 + 8 * r * 4, s = 0; s < 8 && 8 * r + s < this.width; s++) {
                            var c = this.palette[o >> 7 - s & 1];
                            this.data[a + 4 * s] = c.blue,
                            this.data[a + 4 * s + 1] = c.green,
                            this.data[a + 4 * s + 2] = c.red,
                            this.data[a + 4 * s + 3] = 255
                        }
                    0 != e && (this.pos += 4 - e)
                }
            }
            ,
            Rt.prototype.bit4 = function() {
                for (var t = Math.ceil(this.width / 2), e = t % 4, n = this.height - 1; 0 <= n; n--) {
                    for (var i = this.bottom_up ? n : this.height - 1 - n, r = 0; r < t; r++) {
                        var o = this.datav.getUint8(this.pos++, !0)
                          , a = i * this.width * 4 + 2 * r * 4
                          , s = o >> 4
                          , c = 15 & o
                          , l = this.palette[s];
                        if (this.data[a] = l.blue,
                        this.data[a + 1] = l.green,
                        this.data[a + 2] = l.red,
                        this.data[a + 3] = 255,
                        2 * r + 1 >= this.width)
                            break;
                        l = this.palette[c],
                        this.data[a + 4] = l.blue,
                        this.data[a + 4 + 1] = l.green,
                        this.data[a + 4 + 2] = l.red,
                        this.data[a + 4 + 3] = 255
                    }
                    0 != e && (this.pos += 4 - e)
                }
            }
            ,
            Rt.prototype.bit8 = function() {
                for (var t = this.width % 4, e = this.height - 1; 0 <= e; e--) {
                    for (var n = this.bottom_up ? e : this.height - 1 - e, i = 0; i < this.width; i++) {
                        var r = this.datav.getUint8(this.pos++, !0)
                          , o = n * this.width * 4 + 4 * i;
                        if (r < this.palette.length) {
                            var a = this.palette[r];
                            this.data[o] = a.red,
                            this.data[o + 1] = a.green,
                            this.data[o + 2] = a.blue,
                            this.data[o + 3] = 255
                        } else
                            this.data[o] = 255,
                            this.data[o + 1] = 255,
                            this.data[o + 2] = 255,
                            this.data[o + 3] = 255
                    }
                    0 != t && (this.pos += 4 - t)
                }
            }
            ,
            Rt.prototype.bit15 = function() {
                for (var t = this.width % 3, e = parseInt("11111", 2), n = this.height - 1; 0 <= n; n--) {
                    for (var i = this.bottom_up ? n : this.height - 1 - n, r = 0; r < this.width; r++) {
                        var o = this.datav.getUint16(this.pos, !0);
                        this.pos += 2;
                        var a = (o & e) / e * 255 | 0
                          , s = (o >> 5 & e) / e * 255 | 0
                          , c = (o >> 10 & e) / e * 255 | 0
                          , l = o >> 15 ? 255 : 0
                          , u = i * this.width * 4 + 4 * r;
                        this.data[u] = c,
                        this.data[u + 1] = s,
                        this.data[u + 2] = a,
                        this.data[u + 3] = l
                    }
                    this.pos += t
                }
            }
            ,
            Rt.prototype.bit16 = function() {
                for (var t = this.width % 3, e = parseInt("11111", 2), n = parseInt("111111", 2), i = this.height - 1; 0 <= i; i--) {
                    for (var r = this.bottom_up ? i : this.height - 1 - i, o = 0; o < this.width; o++) {
                        var a = this.datav.getUint16(this.pos, !0);
                        this.pos += 2;
                        var s = (a & e) / e * 255 | 0
                          , c = (a >> 5 & n) / n * 255 | 0
                          , l = (a >> 11) / e * 255 | 0
                          , u = r * this.width * 4 + 4 * o;
                        this.data[u] = l,
                        this.data[u + 1] = c,
                        this.data[u + 2] = s,
                        this.data[u + 3] = 255
                    }
                    this.pos += t
                }
            }
            ,
            Rt.prototype.bit24 = function() {
                for (var t = this.height - 1; 0 <= t; t--) {
                    for (var e = this.bottom_up ? t : this.height - 1 - t, n = 0; n < this.width; n++) {
                        var i = this.datav.getUint8(this.pos++, !0)
                          , r = this.datav.getUint8(this.pos++, !0)
                          , o = this.datav.getUint8(this.pos++, !0)
                          , a = e * this.width * 4 + 4 * n;
                        this.data[a] = o,
                        this.data[a + 1] = r,
                        this.data[a + 2] = i,
                        this.data[a + 3] = 255
                    }
                    this.pos += this.width % 4
                }
            }
            ,
            Rt.prototype.bit32 = function() {
                for (var t = this.height - 1; 0 <= t; t--)
                    for (var e = this.bottom_up ? t : this.height - 1 - t, n = 0; n < this.width; n++) {
                        var i = this.datav.getUint8(this.pos++, !0)
                          , r = this.datav.getUint8(this.pos++, !0)
                          , o = this.datav.getUint8(this.pos++, !0)
                          , a = this.datav.getUint8(this.pos++, !0)
                          , s = e * this.width * 4 + 4 * n;
                        this.data[s] = o,
                        this.data[s + 1] = r,
                        this.data[s + 2] = i,
                        this.data[s + 3] = a
                    }
            }
            ,
            Rt.prototype.getData = function() {
                return this.data
            }
            ,
            window.tmp = Rt,
            function(t) {
                var e = [0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17, 18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29];
                function n() {
                    var t = this;
                    function e(t, e) {
                        for (var n = 0; n |= 1 & t,
                        t >>>= 1,
                        n <<= 1,
                        0 < --e; )
                            ;
                        return n >>> 1
                    }
                    t.build_tree = function(n) {
                        var i, r, o, a = t.dyn_tree, s = t.stat_desc.static_tree, c = t.stat_desc.elems, l = -1;
                        for (n.heap_len = 0,
                        n.heap_max = 573,
                        i = 0; i < c; i++)
                            0 !== a[2 * i] ? (n.heap[++n.heap_len] = l = i,
                            n.depth[i] = 0) : a[2 * i + 1] = 0;
                        for (; n.heap_len < 2; )
                            a[2 * (o = n.heap[++n.heap_len] = l < 2 ? ++l : 0)] = 1,
                            n.depth[o] = 0,
                            n.opt_len--,
                            s && (n.static_len -= s[2 * o + 1]);
                        for (t.max_code = l,
                        i = Math.floor(n.heap_len / 2); 1 <= i; i--)
                            n.pqdownheap(a, i);
                        for (o = c; i = n.heap[1],
                        n.heap[1] = n.heap[n.heap_len--],
                        n.pqdownheap(a, 1),
                        r = n.heap[1],
                        n.heap[--n.heap_max] = i,
                        n.heap[--n.heap_max] = r,
                        a[2 * o] = a[2 * i] + a[2 * r],
                        n.depth[o] = Math.max(n.depth[i], n.depth[r]) + 1,
                        a[2 * i + 1] = a[2 * r + 1] = o,
                        n.heap[1] = o++,
                        n.pqdownheap(a, 1),
                        2 <= n.heap_len; )
                            ;
                        n.heap[--n.heap_max] = n.heap[1],
                        function(e) {
                            var n, i, r, o, a, s, c = t.dyn_tree, l = t.stat_desc.static_tree, u = t.stat_desc.extra_bits, d = t.stat_desc.extra_base, p = t.stat_desc.max_length, h = 0;
                            for (o = 0; o <= 15; o++)
                                e.bl_count[o] = 0;
                            for (c[2 * e.heap[e.heap_max] + 1] = 0,
                            n = e.heap_max + 1; n < 573; n++)
                                p < (o = c[2 * c[2 * (i = e.heap[n]) + 1] + 1] + 1) && (o = p,
                                h++),
                                c[2 * i + 1] = o,
                                i > t.max_code || (e.bl_count[o]++,
                                a = 0,
                                d <= i && (a = u[i - d]),
                                s = c[2 * i],
                                e.opt_len += s * (o + a),
                                l && (e.static_len += s * (l[2 * i + 1] + a)));
                            if (0 !== h) {
                                do {
                                    for (o = p - 1; 0 === e.bl_count[o]; )
                                        o--;
                                    e.bl_count[o]--,
                                    e.bl_count[o + 1] += 2,
                                    e.bl_count[p]--,
                                    h -= 2
                                } while (0 < h);
                                for (o = p; 0 !== o; o--)
                                    for (i = e.bl_count[o]; 0 !== i; )
                                        (r = e.heap[--n]) > t.max_code || (c[2 * r + 1] != o && (e.opt_len += (o - c[2 * r + 1]) * c[2 * r],
                                        c[2 * r + 1] = o),
                                        i--)
                            }
                        }(n),
                        function(t, n, i) {
                            var r, o, a, s = [], c = 0;
                            for (r = 1; r <= 15; r++)
                                s[r] = c = c + i[r - 1] << 1;
                            for (o = 0; o <= n; o++)
                                0 !== (a = t[2 * o + 1]) && (t[2 * o] = e(s[a]++, a))
                        }(a, t.max_code, n.bl_count)
                    }
                }
                function i(t, e, n, i, r) {
                    this.static_tree = t,
                    this.extra_bits = e,
                    this.extra_base = n,
                    this.elems = i,
                    this.max_length = r
                }
                function r(t, e, n, i, r) {
                    this.good_length = t,
                    this.max_lazy = e,
                    this.nice_length = n,
                    this.max_chain = i,
                    this.func = r
                }
                n._length_code = [0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28],
                n.base_length = [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 0],
                n.base_dist = [0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576],
                n.d_code = function(t) {
                    return t < 256 ? e[t] : e[256 + (t >>> 7)]
                }
                ,
                n.extra_lbits = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0],
                n.extra_dbits = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13],
                n.extra_blbits = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7],
                n.bl_order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15],
                i.static_ltree = [12, 8, 140, 8, 76, 8, 204, 8, 44, 8, 172, 8, 108, 8, 236, 8, 28, 8, 156, 8, 92, 8, 220, 8, 60, 8, 188, 8, 124, 8, 252, 8, 2, 8, 130, 8, 66, 8, 194, 8, 34, 8, 162, 8, 98, 8, 226, 8, 18, 8, 146, 8, 82, 8, 210, 8, 50, 8, 178, 8, 114, 8, 242, 8, 10, 8, 138, 8, 74, 8, 202, 8, 42, 8, 170, 8, 106, 8, 234, 8, 26, 8, 154, 8, 90, 8, 218, 8, 58, 8, 186, 8, 122, 8, 250, 8, 6, 8, 134, 8, 70, 8, 198, 8, 38, 8, 166, 8, 102, 8, 230, 8, 22, 8, 150, 8, 86, 8, 214, 8, 54, 8, 182, 8, 118, 8, 246, 8, 14, 8, 142, 8, 78, 8, 206, 8, 46, 8, 174, 8, 110, 8, 238, 8, 30, 8, 158, 8, 94, 8, 222, 8, 62, 8, 190, 8, 126, 8, 254, 8, 1, 8, 129, 8, 65, 8, 193, 8, 33, 8, 161, 8, 97, 8, 225, 8, 17, 8, 145, 8, 81, 8, 209, 8, 49, 8, 177, 8, 113, 8, 241, 8, 9, 8, 137, 8, 73, 8, 201, 8, 41, 8, 169, 8, 105, 8, 233, 8, 25, 8, 153, 8, 89, 8, 217, 8, 57, 8, 185, 8, 121, 8, 249, 8, 5, 8, 133, 8, 69, 8, 197, 8, 37, 8, 165, 8, 101, 8, 229, 8, 21, 8, 149, 8, 85, 8, 213, 8, 53, 8, 181, 8, 117, 8, 245, 8, 13, 8, 141, 8, 77, 8, 205, 8, 45, 8, 173, 8, 109, 8, 237, 8, 29, 8, 157, 8, 93, 8, 221, 8, 61, 8, 189, 8, 125, 8, 253, 8, 19, 9, 275, 9, 147, 9, 403, 9, 83, 9, 339, 9, 211, 9, 467, 9, 51, 9, 307, 9, 179, 9, 435, 9, 115, 9, 371, 9, 243, 9, 499, 9, 11, 9, 267, 9, 139, 9, 395, 9, 75, 9, 331, 9, 203, 9, 459, 9, 43, 9, 299, 9, 171, 9, 427, 9, 107, 9, 363, 9, 235, 9, 491, 9, 27, 9, 283, 9, 155, 9, 411, 9, 91, 9, 347, 9, 219, 9, 475, 9, 59, 9, 315, 9, 187, 9, 443, 9, 123, 9, 379, 9, 251, 9, 507, 9, 7, 9, 263, 9, 135, 9, 391, 9, 71, 9, 327, 9, 199, 9, 455, 9, 39, 9, 295, 9, 167, 9, 423, 9, 103, 9, 359, 9, 231, 9, 487, 9, 23, 9, 279, 9, 151, 9, 407, 9, 87, 9, 343, 9, 215, 9, 471, 9, 55, 9, 311, 9, 183, 9, 439, 9, 119, 9, 375, 9, 247, 9, 503, 9, 15, 9, 271, 9, 143, 9, 399, 9, 79, 9, 335, 9, 207, 9, 463, 9, 47, 9, 303, 9, 175, 9, 431, 9, 111, 9, 367, 9, 239, 9, 495, 9, 31, 9, 287, 9, 159, 9, 415, 9, 95, 9, 351, 9, 223, 9, 479, 9, 63, 9, 319, 9, 191, 9, 447, 9, 127, 9, 383, 9, 255, 9, 511, 9, 0, 7, 64, 7, 32, 7, 96, 7, 16, 7, 80, 7, 48, 7, 112, 7, 8, 7, 72, 7, 40, 7, 104, 7, 24, 7, 88, 7, 56, 7, 120, 7, 4, 7, 68, 7, 36, 7, 100, 7, 20, 7, 84, 7, 52, 7, 116, 7, 3, 8, 131, 8, 67, 8, 195, 8, 35, 8, 163, 8, 99, 8, 227, 8],
                i.static_dtree = [0, 5, 16, 5, 8, 5, 24, 5, 4, 5, 20, 5, 12, 5, 28, 5, 2, 5, 18, 5, 10, 5, 26, 5, 6, 5, 22, 5, 14, 5, 30, 5, 1, 5, 17, 5, 9, 5, 25, 5, 5, 5, 21, 5, 13, 5, 29, 5, 3, 5, 19, 5, 11, 5, 27, 5, 7, 5, 23, 5],
                i.static_l_desc = new i(i.static_ltree,n.extra_lbits,257,286,15),
                i.static_d_desc = new i(i.static_dtree,n.extra_dbits,0,30,15),
                i.static_bl_desc = new i(null,n.extra_blbits,0,19,7);
                var o = [new r(0,0,0,0,0), new r(4,4,8,4,1), new r(4,5,16,8,1), new r(4,6,32,32,1), new r(4,4,16,16,2), new r(8,16,32,32,2), new r(8,16,128,128,2), new r(8,32,128,256,2), new r(32,128,258,1024,2), new r(32,258,258,4096,2)]
                  , a = ["need dictionary", "stream end", "", "", "stream error", "data error", "", "buffer error", "", ""];
                function s(t, e, n, i) {
                    var r = t[2 * e]
                      , o = t[2 * n];
                    return r < o || r == o && i[e] <= i[n]
                }
                function c() {
                    var t, e, r, c, l, u, d, p, h, f, m, g, v, y, b, w, S, x, M, E, C, A, T, O, _, P, I, k, D, R, L, N, j, V, F, U, B, z, G, H, W, q = this, X = new n, Y = new n, K = new n;
                    function Z() {
                        var t;
                        for (t = 0; t < 286; t++)
                            L[2 * t] = 0;
                        for (t = 0; t < 30; t++)
                            N[2 * t] = 0;
                        for (t = 0; t < 19; t++)
                            j[2 * t] = 0;
                        L[512] = 1,
                        q.opt_len = q.static_len = 0,
                        U = z = 0
                    }
                    function J(t, e) {
                        var n, i, r = -1, o = t[1], a = 0, s = 7, c = 4;
                        for (0 === o && (s = 138,
                        c = 3),
                        t[2 * (e + 1) + 1] = 65535,
                        n = 0; n <= e; n++)
                            i = o,
                            o = t[2 * (n + 1) + 1],
                            ++a < s && i == o || (a < c ? j[2 * i] += a : 0 !== i ? (i != r && j[2 * i]++,
                            j[32]++) : a <= 10 ? j[34]++ : j[36]++,
                            r = i,
                            c = (a = 0) === o ? (s = 138,
                            3) : i == o ? (s = 6,
                            3) : (s = 7,
                            4))
                    }
                    function Q(t) {
                        q.pending_buf[q.pending++] = t
                    }
                    function $(t) {
                        Q(255 & t),
                        Q(t >>> 8 & 255)
                    }
                    function tt(t, e) {
                        var n, i = e;
                        16 - i < W ? ($(H |= (n = t) << W & 65535),
                        H = n >>> 16 - W,
                        W += i - 16) : (H |= t << W & 65535,
                        W += i)
                    }
                    function et(t, e) {
                        var n = 2 * t;
                        tt(65535 & e[n], 65535 & e[n + 1])
                    }
                    function nt(t, e) {
                        var n, i, r = -1, o = t[1], a = 0, s = 7, c = 4;
                        for (0 === o && (s = 138,
                        c = 3),
                        n = 0; n <= e; n++)
                            if (i = o,
                            o = t[2 * (n + 1) + 1],
                            !(++a < s && i == o)) {
                                if (a < c)
                                    for (; et(i, j),
                                    0 != --a; )
                                        ;
                                else
                                    0 !== i ? (i != r && (et(i, j),
                                    a--),
                                    et(16, j),
                                    tt(a - 3, 2)) : a <= 10 ? (et(17, j),
                                    tt(a - 3, 3)) : (et(18, j),
                                    tt(a - 11, 7));
                                r = i,
                                c = (a = 0) === o ? (s = 138,
                                3) : i == o ? (s = 6,
                                3) : (s = 7,
                                4)
                            }
                    }
                    function it() {
                        16 == W ? ($(H),
                        W = H = 0) : 8 <= W && (Q(255 & H),
                        H >>>= 8,
                        W -= 8)
                    }
                    function rt(t, e) {
                        var i, r, o;
                        if (q.pending_buf[B + 2 * U] = t >>> 8 & 255,
                        q.pending_buf[B + 2 * U + 1] = 255 & t,
                        q.pending_buf[V + U] = 255 & e,
                        U++,
                        0 === t ? L[2 * e]++ : (z++,
                        t--,
                        L[2 * (n._length_code[e] + 256 + 1)]++,
                        N[2 * n.d_code(t)]++),
                        0 == (8191 & U) && 2 < I) {
                            for (i = 8 * U,
                            r = C - S,
                            o = 0; o < 30; o++)
                                i += N[2 * o] * (5 + n.extra_dbits[o]);
                            if (i >>>= 3,
                            z < Math.floor(U / 2) && i < Math.floor(r / 2))
                                return !0
                        }
                        return U == F - 1
                    }
                    function ot(t, e) {
                        var i, r, o, a, s = 0;
                        if (0 !== U)
                            for (; i = q.pending_buf[B + 2 * s] << 8 & 65280 | 255 & q.pending_buf[B + 2 * s + 1],
                            r = 255 & q.pending_buf[V + s],
                            s++,
                            0 === i ? et(r, t) : (et((o = n._length_code[r]) + 256 + 1, t),
                            0 !== (a = n.extra_lbits[o]) && tt(r -= n.base_length[o], a),
                            et(o = n.d_code(--i), e),
                            0 !== (a = n.extra_dbits[o]) && tt(i -= n.base_dist[o], a)),
                            s < U; )
                                ;
                        et(256, t),
                        G = t[513]
                    }
                    function at() {
                        8 < W ? $(H) : 0 < W && Q(255 & H),
                        W = H = 0
                    }
                    function st(t, e, n) {
                        var i, r;
                        tt(0 + (n ? 1 : 0), 3),
                        i = t,
                        r = e,
                        at(),
                        G = 8,
                        $(r),
                        $(~r),
                        q.pending_buf.set(p.subarray(i, i + r), q.pending),
                        q.pending += r
                    }
                    function ct(e) {
                        (function(t, e, r) {
                            var o, a, s = 0;
                            0 < I ? (X.build_tree(q),
                            Y.build_tree(q),
                            s = function() {
                                var t;
                                for (J(L, X.max_code),
                                J(N, Y.max_code),
                                K.build_tree(q),
                                t = 18; 3 <= t && 0 === j[2 * n.bl_order[t] + 1]; t--)
                                    ;
                                return q.opt_len += 3 * (t + 1) + 5 + 5 + 4,
                                t
                            }(),
                            o = q.opt_len + 3 + 7 >>> 3,
                            (a = q.static_len + 3 + 7 >>> 3) <= o && (o = a)) : o = a = e + 5,
                            e + 4 <= o && -1 != t ? st(t, e, r) : a == o ? (tt(2 + (r ? 1 : 0), 3),
                            ot(i.static_ltree, i.static_dtree)) : (tt(4 + (r ? 1 : 0), 3),
                            function(t, e, i) {
                                var r;
                                for (tt(t - 257, 5),
                                tt(e - 1, 5),
                                tt(i - 4, 4),
                                r = 0; r < i; r++)
                                    tt(j[2 * n.bl_order[r] + 1], 3);
                                nt(L, t - 1),
                                nt(N, e - 1)
                            }(X.max_code + 1, Y.max_code + 1, s + 1),
                            ot(L, N)),
                            Z(),
                            r && at()
                        }
                        )(0 <= S ? S : -1, C - S, e),
                        S = C,
                        t.flush_pending()
                    }
                    function lt() {
                        var e, n, i, r;
                        do {
                            if (0 == (r = h - T - C) && 0 === C && 0 === T)
                                r = l;
                            else if (-1 == r)
                                r--;
                            else if (l + l - 262 <= C) {
                                for (p.set(p.subarray(l, l + l), 0),
                                A -= l,
                                C -= l,
                                S -= l,
                                i = e = v; n = 65535 & m[--i],
                                m[i] = l <= n ? n - l : 0,
                                0 != --e; )
                                    ;
                                for (i = e = l; n = 65535 & f[--i],
                                f[i] = l <= n ? n - l : 0,
                                0 != --e; )
                                    ;
                                r += l
                            }
                            if (0 === t.avail_in)
                                return;
                            e = t.read_buf(p, C + T, r),
                            3 <= (T += e) && (g = ((g = 255 & p[C]) << w ^ 255 & p[C + 1]) & b)
                        } while (T < 262 && 0 !== t.avail_in)
                    }
                    function ut(t) {
                        var e, n, i = _, r = C, o = O, a = l - 262 < C ? C - (l - 262) : 0, s = R, c = d, u = C + 258, h = p[r + o - 1], m = p[r + o];
                        D <= O && (i >>= 2),
                        T < s && (s = T);
                        do {
                            if (p[(e = t) + o] == m && p[e + o - 1] == h && p[e] == p[r] && p[++e] == p[r + 1]) {
                                r += 2,
                                e++;
                                do {} while (p[++r] == p[++e] && p[++r] == p[++e] && p[++r] == p[++e] && p[++r] == p[++e] && p[++r] == p[++e] && p[++r] == p[++e] && p[++r] == p[++e] && p[++r] == p[++e] && r < u);
                                if (n = 258 - (u - r),
                                r = u - 258,
                                o < n) {
                                    if (A = t,
                                    s <= (o = n))
                                        break;
                                    h = p[r + o - 1],
                                    m = p[r + o]
                                }
                            }
                        } while ((t = 65535 & f[t & c]) > a && 0 != --i);
                        return o <= T ? o : T
                    }
                    function dt(t) {
                        return t.total_in = t.total_out = 0,
                        t.msg = null,
                        q.pending = 0,
                        q.pending_out = 0,
                        e = 113,
                        c = 0,
                        X.dyn_tree = L,
                        X.stat_desc = i.static_l_desc,
                        Y.dyn_tree = N,
                        Y.stat_desc = i.static_d_desc,
                        K.dyn_tree = j,
                        K.stat_desc = i.static_bl_desc,
                        W = H = 0,
                        G = 8,
                        Z(),
                        function() {
                            var t;
                            for (h = 2 * l,
                            t = m[v - 1] = 0; t < v - 1; t++)
                                m[t] = 0;
                            P = o[I].max_lazy,
                            D = o[I].good_length,
                            R = o[I].nice_length,
                            _ = o[I].max_chain,
                            x = O = 2,
                            g = E = T = S = C = 0
                        }(),
                        0
                    }
                    q.depth = [],
                    q.bl_count = [],
                    q.heap = [],
                    L = [],
                    N = [],
                    j = [],
                    q.pqdownheap = function(t, e) {
                        for (var n = q.heap, i = n[e], r = e << 1; r <= q.heap_len && (r < q.heap_len && s(t, n[r + 1], n[r], q.depth) && r++,
                        !s(t, i, n[r], q.depth)); )
                            n[e] = n[r],
                            e = r,
                            r <<= 1;
                        n[e] = i
                    }
                    ,
                    q.deflateInit = function(t, e, n, i, o, a) {
                        return i || (i = 8),
                        o || (o = 8),
                        a || (a = 0),
                        t.msg = null,
                        -1 == e && (e = 6),
                        o < 1 || 9 < o || 8 != i || n < 9 || 15 < n || e < 0 || 9 < e || a < 0 || 2 < a ? -2 : (t.dstate = q,
                        d = (l = 1 << (u = n)) - 1,
                        b = (v = 1 << (y = o + 7)) - 1,
                        w = Math.floor((y + 3 - 1) / 3),
                        p = new Uint8Array(2 * l),
                        f = [],
                        m = [],
                        F = 1 << o + 6,
                        q.pending_buf = new Uint8Array(4 * F),
                        r = 4 * F,
                        B = Math.floor(F / 2),
                        V = 3 * F,
                        I = e,
                        k = a,
                        dt(t))
                    }
                    ,
                    q.deflateEnd = function() {
                        return 42 != e && 113 != e && 666 != e ? -2 : (q.pending_buf = null,
                        p = f = m = null,
                        q.dstate = null,
                        113 == e ? -3 : 0)
                    }
                    ,
                    q.deflateParams = function(t, e, n) {
                        var i = 0;
                        return -1 == e && (e = 6),
                        e < 0 || 9 < e || n < 0 || 2 < n ? -2 : (o[I].func != o[e].func && 0 !== t.total_in && (i = t.deflate(1)),
                        I != e && (P = o[I = e].max_lazy,
                        D = o[I].good_length,
                        R = o[I].nice_length,
                        _ = o[I].max_chain),
                        k = n,
                        i)
                    }
                    ,
                    q.deflateSetDictionary = function(t, n, i) {
                        var r, o = i, a = 0;
                        if (!n || 42 != e)
                            return -2;
                        if (o < 3)
                            return 0;
                        for (l - 262 < o && (a = i - (o = l - 262)),
                        p.set(n.subarray(a, a + o), 0),
                        S = C = o,
                        g = ((g = 255 & p[0]) << w ^ 255 & p[1]) & b,
                        r = 0; r <= o - 3; r++)
                            g = (g << w ^ 255 & p[r + 2]) & b,
                            f[r & d] = m[g],
                            m[g] = r;
                        return 0
                    }
                    ,
                    q.deflate = function(n, s) {
                        var h, y, _, D, R, L;
                        if (4 < s || s < 0)
                            return -2;
                        if (!n.next_out || !n.next_in && 0 !== n.avail_in || 666 == e && 4 != s)
                            return n.msg = a[4],
                            -2;
                        if (0 === n.avail_out)
                            return n.msg = a[7],
                            -5;
                        if (t = n,
                        D = c,
                        c = s,
                        42 == e && (y = 8 + (u - 8 << 4) << 8,
                        3 < (_ = (I - 1 & 255) >> 1) && (_ = 3),
                        y |= _ << 6,
                        0 !== C && (y |= 32),
                        e = 113,
                        Q((L = y += 31 - y % 31) >> 8 & 255),
                        Q(255 & L)),
                        0 !== q.pending) {
                            if (t.flush_pending(),
                            0 === t.avail_out)
                                return c = -1,
                                0
                        } else if (0 === t.avail_in && s <= D && 4 != s)
                            return t.msg = a[7],
                            -5;
                        if (666 == e && 0 !== t.avail_in)
                            return n.msg = a[7],
                            -5;
                        if (0 !== t.avail_in || 0 !== T || 0 != s && 666 != e) {
                            switch (R = -1,
                            o[I].func) {
                            case 0:
                                R = function(e) {
                                    var n, i = 65535;
                                    for (r - 5 < i && (i = r - 5); ; ) {
                                        if (T <= 1) {
                                            if (lt(),
                                            0 === T && 0 == e)
                                                return 0;
                                            if (0 === T)
                                                break
                                        }
                                        if (C += T,
                                        n = S + i,
                                        ((T = 0) === C || n <= C) && (T = C - n,
                                        C = n,
                                        ct(!1),
                                        0 === t.avail_out))
                                            return 0;
                                        if (l - 262 <= C - S && (ct(!1),
                                        0 === t.avail_out))
                                            return 0
                                    }
                                    return ct(4 == e),
                                    0 === t.avail_out ? 4 == e ? 2 : 0 : 4 == e ? 3 : 1
                                }(s);
                                break;
                            case 1:
                                R = function(e) {
                                    for (var n, i = 0; ; ) {
                                        if (T < 262) {
                                            if (lt(),
                                            T < 262 && 0 == e)
                                                return 0;
                                            if (0 === T)
                                                break
                                        }
                                        if (3 <= T && (g = (g << w ^ 255 & p[C + 2]) & b,
                                        i = 65535 & m[g],
                                        f[C & d] = m[g],
                                        m[g] = C),
                                        0 !== i && (C - i & 65535) <= l - 262 && 2 != k && (x = ut(i)),
                                        3 <= x)
                                            if (n = rt(C - A, x - 3),
                                            T -= x,
                                            x <= P && 3 <= T) {
                                                for (x--; g = (g << w ^ 255 & p[2 + ++C]) & b,
                                                i = 65535 & m[g],
                                                f[C & d] = m[g],
                                                m[g] = C,
                                                0 != --x; )
                                                    ;
                                                C++
                                            } else
                                                C += x,
                                                x = 0,
                                                g = ((g = 255 & p[C]) << w ^ 255 & p[C + 1]) & b;
                                        else
                                            n = rt(0, 255 & p[C]),
                                            T--,
                                            C++;
                                        if (n && (ct(!1),
                                        0 === t.avail_out))
                                            return 0
                                    }
                                    return ct(4 == e),
                                    0 === t.avail_out ? 4 == e ? 2 : 0 : 4 == e ? 3 : 1
                                }(s);
                                break;
                            case 2:
                                R = function(e) {
                                    for (var n, i, r = 0; ; ) {
                                        if (T < 262) {
                                            if (lt(),
                                            T < 262 && 0 == e)
                                                return 0;
                                            if (0 === T)
                                                break
                                        }
                                        if (3 <= T && (g = (g << w ^ 255 & p[C + 2]) & b,
                                        r = 65535 & m[g],
                                        f[C & d] = m[g],
                                        m[g] = C),
                                        O = x,
                                        M = A,
                                        x = 2,
                                        0 !== r && O < P && (C - r & 65535) <= l - 262 && (2 != k && (x = ut(r)),
                                        x <= 5 && (1 == k || 3 == x && 4096 < C - A) && (x = 2)),
                                        3 <= O && x <= O) {
                                            for (i = C + T - 3,
                                            n = rt(C - 1 - M, O - 3),
                                            T -= O - 1,
                                            O -= 2; ++C <= i && (g = (g << w ^ 255 & p[C + 2]) & b,
                                            r = 65535 & m[g],
                                            f[C & d] = m[g],
                                            m[g] = C),
                                            0 != --O; )
                                                ;
                                            if (E = 0,
                                            x = 2,
                                            C++,
                                            n && (ct(!1),
                                            0 === t.avail_out))
                                                return 0
                                        } else if (0 !== E) {
                                            if ((n = rt(0, 255 & p[C - 1])) && ct(!1),
                                            C++,
                                            T--,
                                            0 === t.avail_out)
                                                return 0
                                        } else
                                            E = 1,
                                            C++,
                                            T--
                                    }
                                    return 0 !== E && (n = rt(0, 255 & p[C - 1]),
                                    E = 0),
                                    ct(4 == e),
                                    0 === t.avail_out ? 4 == e ? 2 : 0 : 4 == e ? 3 : 1
                                }(s)
                            }
                            if (2 != R && 3 != R || (e = 666),
                            0 == R || 2 == R)
                                return 0 === t.avail_out && (c = -1),
                                0;
                            if (1 == R) {
                                if (1 == s)
                                    tt(2, 3),
                                    et(256, i.static_ltree),
                                    it(),
                                    1 + G + 10 - W < 9 && (tt(2, 3),
                                    et(256, i.static_ltree),
                                    it()),
                                    G = 7;
                                else if (st(0, 0, !1),
                                3 == s)
                                    for (h = 0; h < v; h++)
                                        m[h] = 0;
                                if (t.flush_pending(),
                                0 === t.avail_out)
                                    return c = -1,
                                    0
                            }
                        }
                        return 4 != s ? 0 : 1
                    }
                }
                function l() {
                    this.next_in_index = 0,
                    this.next_out_index = 0,
                    this.avail_in = 0,
                    this.total_in = 0,
                    this.avail_out = 0,
                    this.total_out = 0
                }
                l.prototype = {
                    deflateInit: function(t, e) {
                        return this.dstate = new c,
                        e || (e = 15),
                        this.dstate.deflateInit(this, t, e)
                    },
                    deflate: function(t) {
                        return this.dstate ? this.dstate.deflate(this, t) : -2
                    },
                    deflateEnd: function() {
                        if (!this.dstate)
                            return -2;
                        var t = this.dstate.deflateEnd();
                        return this.dstate = null,
                        t
                    },
                    deflateParams: function(t, e) {
                        return this.dstate ? this.dstate.deflateParams(this, t, e) : -2
                    },
                    deflateSetDictionary: function(t, e) {
                        return this.dstate ? this.dstate.deflateSetDictionary(this, t, e) : -2
                    },
                    read_buf: function(t, e, n) {
                        var i = this.avail_in;
                        return n < i && (i = n),
                        0 === i ? 0 : (this.avail_in -= i,
                        t.set(this.next_in.subarray(this.next_in_index, this.next_in_index + i), e),
                        this.next_in_index += i,
                        this.total_in += i,
                        i)
                    },
                    flush_pending: function() {
                        var t = this
                          , e = t.dstate.pending;
                        e > t.avail_out && (e = t.avail_out),
                        0 !== e && (t.next_out.set(t.dstate.pending_buf.subarray(t.dstate.pending_out, t.dstate.pending_out + e), t.next_out_index),
                        t.next_out_index += e,
                        t.dstate.pending_out += e,
                        t.total_out += e,
                        t.avail_out -= e,
                        t.dstate.pending -= e,
                        0 === t.dstate.pending && (t.dstate.pending_out = 0))
                    }
                };
                var u = t.zip || t;
                u.Deflater = u._jzlib_Deflater = function(t) {
                    var e = new l
                      , n = new Uint8Array(512)
                      , i = t ? t.level : -1;
                    void 0 === i && (i = -1),
                    e.deflateInit(i),
                    e.next_out = n,
                    this.append = function(t, i) {
                        var r, o = [], a = 0, s = 0, c = 0;
                        if (t.length) {
                            e.next_in_index = 0,
                            e.next_in = t,
                            e.avail_in = t.length;
                            do {
                                if (e.next_out_index = 0,
                                e.avail_out = 512,
                                0 != e.deflate(0))
                                    throw new Error("deflating: " + e.msg);
                                e.next_out_index && (512 == e.next_out_index ? o.push(new Uint8Array(n)) : o.push(new Uint8Array(n.subarray(0, e.next_out_index)))),
                                c += e.next_out_index,
                                i && 0 < e.next_in_index && e.next_in_index != a && (i(e.next_in_index),
                                a = e.next_in_index)
                            } while (0 < e.avail_in || 0 === e.avail_out);
                            return r = new Uint8Array(c),
                            o.forEach((function(t) {
                                r.set(t, s),
                                s += t.length
                            }
                            )),
                            r
                        }
                    }
                    ,
                    this.flush = function() {
                        var t, i, r = [], o = 0, a = 0;
                        do {
                            if (e.next_out_index = 0,
                            e.avail_out = 512,
                            1 != (t = e.deflate(4)) && 0 != t)
                                throw new Error("deflating: " + e.msg);
                            0 < 512 - e.avail_out && r.push(new Uint8Array(n.subarray(0, e.next_out_index))),
                            a += e.next_out_index
                        } while (0 < e.avail_in || 0 === e.avail_out);
                        return e.deflateEnd(),
                        i = new Uint8Array(a),
                        r.forEach((function(t) {
                            i.set(t, o),
                            o += t.length
                        }
                        )),
                        i
                    }
                }
            }("undefined" != typeof self && self || "undefined" != typeof window && window || void 0 !== i && i || Function('return typeof this === "object" && this.content')() || Function("return this")()),
            ("undefined" != typeof self && self || "undefined" != typeof window && window || void 0 !== i && i || Function('return typeof this === "object" && this.content')() || Function("return this")()).RGBColor = function(t) {
                var e;
                t = t || "",
                this.ok = !1,
                "#" == t.charAt(0) && (t = t.substr(1, 6)),
                t = (t = t.replace(/ /g, "")).toLowerCase();
                var n = {
                    aliceblue: "f0f8ff",
                    antiquewhite: "faebd7",
                    aqua: "00ffff",
                    aquamarine: "7fffd4",
                    azure: "f0ffff",
                    beige: "f5f5dc",
                    bisque: "ffe4c4",
                    black: "000000",
                    blanchedalmond: "ffebcd",
                    blue: "0000ff",
                    blueviolet: "8a2be2",
                    brown: "a52a2a",
                    burlywood: "deb887",
                    cadetblue: "5f9ea0",
                    chartreuse: "7fff00",
                    chocolate: "d2691e",
                    coral: "ff7f50",
                    cornflowerblue: "6495ed",
                    cornsilk: "fff8dc",
                    crimson: "dc143c",
                    cyan: "00ffff",
                    darkblue: "00008b",
                    darkcyan: "008b8b",
                    darkgoldenrod: "b8860b",
                    darkgray: "a9a9a9",
                    darkgreen: "006400",
                    darkkhaki: "bdb76b",
                    darkmagenta: "8b008b",
                    darkolivegreen: "556b2f",
                    darkorange: "ff8c00",
                    darkorchid: "9932cc",
                    darkred: "8b0000",
                    darksalmon: "e9967a",
                    darkseagreen: "8fbc8f",
                    darkslateblue: "483d8b",
                    darkslategray: "2f4f4f",
                    darkturquoise: "00ced1",
                    darkviolet: "9400d3",
                    deeppink: "ff1493",
                    deepskyblue: "00bfff",
                    dimgray: "696969",
                    dodgerblue: "1e90ff",
                    feldspar: "d19275",
                    firebrick: "b22222",
                    floralwhite: "fffaf0",
                    forestgreen: "228b22",
                    fuchsia: "ff00ff",
                    gainsboro: "dcdcdc",
                    ghostwhite: "f8f8ff",
                    gold: "ffd700",
                    goldenrod: "daa520",
                    gray: "808080",
                    green: "008000",
                    greenyellow: "adff2f",
                    honeydew: "f0fff0",
                    hotpink: "ff69b4",
                    indianred: "cd5c5c",
                    indigo: "4b0082",
                    ivory: "fffff0",
                    khaki: "f0e68c",
                    lavender: "e6e6fa",
                    lavenderblush: "fff0f5",
                    lawngreen: "7cfc00",
                    lemonchiffon: "fffacd",
                    lightblue: "add8e6",
                    lightcoral: "f08080",
                    lightcyan: "e0ffff",
                    lightgoldenrodyellow: "fafad2",
                    lightgrey: "d3d3d3",
                    lightgreen: "90ee90",
                    lightpink: "ffb6c1",
                    lightsalmon: "ffa07a",
                    lightseagreen: "20b2aa",
                    lightskyblue: "87cefa",
                    lightslateblue: "8470ff",
                    lightslategray: "778899",
                    lightsteelblue: "b0c4de",
                    lightyellow: "ffffe0",
                    lime: "00ff00",
                    limegreen: "32cd32",
                    linen: "faf0e6",
                    magenta: "ff00ff",
                    maroon: "800000",
                    mediumaquamarine: "66cdaa",
                    mediumblue: "0000cd",
                    mediumorchid: "ba55d3",
                    mediumpurple: "9370d8",
                    mediumseagreen: "3cb371",
                    mediumslateblue: "7b68ee",
                    mediumspringgreen: "00fa9a",
                    mediumturquoise: "48d1cc",
                    mediumvioletred: "c71585",
                    midnightblue: "191970",
                    mintcream: "f5fffa",
                    mistyrose: "ffe4e1",
                    moccasin: "ffe4b5",
                    navajowhite: "ffdead",
                    navy: "000080",
                    oldlace: "fdf5e6",
                    olive: "808000",
                    olivedrab: "6b8e23",
                    orange: "ffa500",
                    orangered: "ff4500",
                    orchid: "da70d6",
                    palegoldenrod: "eee8aa",
                    palegreen: "98fb98",
                    paleturquoise: "afeeee",
                    palevioletred: "d87093",
                    papayawhip: "ffefd5",
                    peachpuff: "ffdab9",
                    peru: "cd853f",
                    pink: "ffc0cb",
                    plum: "dda0dd",
                    powderblue: "b0e0e6",
                    purple: "800080",
                    red: "ff0000",
                    rosybrown: "bc8f8f",
                    royalblue: "4169e1",
                    saddlebrown: "8b4513",
                    salmon: "fa8072",
                    sandybrown: "f4a460",
                    seagreen: "2e8b57",
                    seashell: "fff5ee",
                    sienna: "a0522d",
                    silver: "c0c0c0",
                    skyblue: "87ceeb",
                    slateblue: "6a5acd",
                    slategray: "708090",
                    snow: "fffafa",
                    springgreen: "00ff7f",
                    steelblue: "4682b4",
                    tan: "d2b48c",
                    teal: "008080",
                    thistle: "d8bfd8",
                    tomato: "ff6347",
                    turquoise: "40e0d0",
                    violet: "ee82ee",
                    violetred: "d02090",
                    wheat: "f5deb3",
                    white: "ffffff",
                    whitesmoke: "f5f5f5",
                    yellow: "ffff00",
                    yellowgreen: "9acd32"
                };
                for (var i in n)
                    t == i && (t = n[i]);
                for (var r = [{
                    re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
                    example: ["rgb(123, 234, 45)", "rgb(255,234,245)"],
                    process: function(t) {
                        return [parseInt(t[1]), parseInt(t[2]), parseInt(t[3])]
                    }
                }, {
                    re: /^(\w{2})(\w{2})(\w{2})$/,
                    example: ["#00ff00", "336699"],
                    process: function(t) {
                        return [parseInt(t[1], 16), parseInt(t[2], 16), parseInt(t[3], 16)]
                    }
                }, {
                    re: /^(\w{1})(\w{1})(\w{1})$/,
                    example: ["#fb0", "f0f"],
                    process: function(t) {
                        return [parseInt(t[1] + t[1], 16), parseInt(t[2] + t[2], 16), parseInt(t[3] + t[3], 16)]
                    }
                }], o = 0; o < r.length; o++) {
                    var a = r[o].re
                      , s = r[o].process
                      , c = a.exec(t);
                    c && (e = s(c),
                    this.r = e[0],
                    this.g = e[1],
                    this.b = e[2],
                    this.ok = !0)
                }
                this.r = this.r < 0 || isNaN(this.r) ? 0 : 255 < this.r ? 255 : this.r,
                this.g = this.g < 0 || isNaN(this.g) ? 0 : 255 < this.g ? 255 : this.g,
                this.b = this.b < 0 || isNaN(this.b) ? 0 : 255 < this.b ? 255 : this.b,
                this.toRGB = function() {
                    return "rgb(" + this.r + ", " + this.g + ", " + this.b + ")"
                }
                ,
                this.toHex = function() {
                    var t = this.r.toString(16)
                      , e = this.g.toString(16)
                      , n = this.b.toString(16);
                    return 1 == t.length && (t = "0" + t),
                    1 == e.length && (e = "0" + e),
                    1 == n.length && (n = "0" + n),
                    "#" + t + e + n
                }
            }
            ,
            function(t) {
                var e = "+".charCodeAt(0)
                  , n = "/".charCodeAt(0)
                  , i = "0".charCodeAt(0)
                  , r = "a".charCodeAt(0)
                  , o = "A".charCodeAt(0)
                  , a = "-".charCodeAt(0)
                  , s = "_".charCodeAt(0)
                  , c = function(t) {
                    var c = t.charCodeAt(0);
                    return c === e || c === a ? 62 : c === n || c === s ? 63 : c < i ? -1 : c < i + 10 ? c - i + 26 + 26 : c < o + 26 ? c - o : c < r + 26 ? c - r + 26 : void 0
                };
                t.API.TTFFont = function() {
                    function t(t, e, n) {
                        var i;
                        if (this.rawData = t,
                        i = this.contents = new u(t),
                        this.contents.pos = 4,
                        "ttcf" === i.readString(4)) {
                            if (!e)
                                throw new Error("Must specify a font name for TTC files.");
                            throw new Error("Font " + e + " not found in TTC file.")
                        }
                        i.pos = 0,
                        this.parse(),
                        this.subset = new _(this),
                        this.registerTTF()
                    }
                    return t.open = function(e, n, i, r) {
                        if ("string" != typeof i)
                            throw new Error("Invalid argument supplied in TTFFont.open");
                        return new t(function(t) {
                            var e, n, i, r, o, a;
                            if (0 < t.length % 4)
                                throw new Error("Invalid string. Length must be a multiple of 4");
                            var s = t.length;
                            o = "=" === t.charAt(s - 2) ? 2 : "=" === t.charAt(s - 1) ? 1 : 0,
                            a = new Uint8Array(3 * t.length / 4 - o),
                            i = 0 < o ? t.length - 4 : t.length;
                            var l = 0;
                            function u(t) {
                                a[l++] = t
                            }
                            for (n = e = 0; e < i; e += 4,
                            n += 3)
                                u((16711680 & (r = c(t.charAt(e)) << 18 | c(t.charAt(e + 1)) << 12 | c(t.charAt(e + 2)) << 6 | c(t.charAt(e + 3)))) >> 16),
                                u((65280 & r) >> 8),
                                u(255 & r);
                            return 2 === o ? u(255 & (r = c(t.charAt(e)) << 2 | c(t.charAt(e + 1)) >> 4)) : 1 === o && (u((r = c(t.charAt(e)) << 10 | c(t.charAt(e + 1)) << 4 | c(t.charAt(e + 2)) >> 2) >> 8 & 255),
                            u(255 & r)),
                            a
                        }(i),n,r)
                    }
                    ,
                    t.prototype.parse = function() {
                        return this.directory = new d(this.contents),
                        this.head = new f(this),
                        this.name = new S(this),
                        this.cmap = new g(this),
                        this.toUnicode = new Map,
                        this.hhea = new v(this),
                        this.maxp = new x(this),
                        this.hmtx = new M(this),
                        this.post = new b(this),
                        this.os2 = new y(this),
                        this.loca = new O(this),
                        this.glyf = new C(this),
                        this.ascender = this.os2.exists && this.os2.ascender || this.hhea.ascender,
                        this.decender = this.os2.exists && this.os2.decender || this.hhea.decender,
                        this.lineGap = this.os2.exists && this.os2.lineGap || this.hhea.lineGap,
                        this.bbox = [this.head.xMin, this.head.yMin, this.head.xMax, this.head.yMax]
                    }
                    ,
                    t.prototype.registerTTF = function() {
                        var t, e, n, i, r;
                        if (this.scaleFactor = 1e3 / this.head.unitsPerEm,
                        this.bbox = function() {
                            var e, n, i, r;
                            for (r = [],
                            e = 0,
                            n = (i = this.bbox).length; e < n; e++)
                                t = i[e],
                                r.push(Math.round(t * this.scaleFactor));
                            return r
                        }
                        .call(this),
                        this.stemV = 0,
                        this.post.exists ? (n = 255 & (i = this.post.italic_angle),
                        !0 & (e = i >> 16) && (e = -(1 + (65535 ^ e))),
                        this.italicAngle = +(e + "." + n)) : this.italicAngle = 0,
                        this.ascender = Math.round(this.ascender * this.scaleFactor),
                        this.decender = Math.round(this.decender * this.scaleFactor),
                        this.lineGap = Math.round(this.lineGap * this.scaleFactor),
                        this.capHeight = this.os2.exists && this.os2.capHeight || this.ascender,
                        this.xHeight = this.os2.exists && this.os2.xHeight || 0,
                        this.familyClass = (this.os2.exists && this.os2.familyClass || 0) >> 8,
                        this.isSerif = 1 === (r = this.familyClass) || 2 === r || 3 === r || 4 === r || 5 === r || 7 === r,
                        this.isScript = 10 === this.familyClass,
                        this.flags = 0,
                        this.post.isFixedPitch && (this.flags |= 1),
                        this.isSerif && (this.flags |= 2),
                        this.isScript && (this.flags |= 8),
                        0 !== this.italicAngle && (this.flags |= 64),
                        this.flags |= 32,
                        !this.cmap.unicode)
                            throw new Error("No unicode cmap for font")
                    }
                    ,
                    t.prototype.characterToGlyph = function(t) {
                        var e;
                        return (null != (e = this.cmap.unicode) ? e.codeMap[t] : void 0) || 0
                    }
                    ,
                    t.prototype.widthOfGlyph = function(t) {
                        var e;
                        return e = 1e3 / this.head.unitsPerEm,
                        this.hmtx.forGlyph(t).advance * e
                    }
                    ,
                    t.prototype.widthOfString = function(t, e, n) {
                        var i, r, o, a, s;
                        for (r = a = o = 0,
                        s = (t = "" + t).length; 0 <= s ? a < s : s < a; r = 0 <= s ? ++a : --a)
                            i = t.charCodeAt(r),
                            o += this.widthOfGlyph(this.characterToGlyph(i)) + n * (1e3 / e) || 0;
                        return o * (e / 1e3)
                    }
                    ,
                    t.prototype.lineHeight = function(t, e) {
                        var n;
                        return null == e && (e = !1),
                        n = e ? this.lineGap : 0,
                        (this.ascender + n - this.decender) / 1e3 * t
                    }
                    ,
                    t
                }();
                var l, u = function() {
                    function t(t) {
                        this.data = null != t ? t : [],
                        this.pos = 0,
                        this.length = this.data.length
                    }
                    return t.prototype.readByte = function() {
                        return this.data[this.pos++]
                    }
                    ,
                    t.prototype.writeByte = function(t) {
                        return this.data[this.pos++] = t
                    }
                    ,
                    t.prototype.readUInt32 = function() {
                        return 16777216 * this.readByte() + (this.readByte() << 16) + (this.readByte() << 8) + this.readByte()
                    }
                    ,
                    t.prototype.writeUInt32 = function(t) {
                        return this.writeByte(t >>> 24 & 255),
                        this.writeByte(t >> 16 & 255),
                        this.writeByte(t >> 8 & 255),
                        this.writeByte(255 & t)
                    }
                    ,
                    t.prototype.readInt32 = function() {
                        var t;
                        return 2147483648 <= (t = this.readUInt32()) ? t - 4294967296 : t
                    }
                    ,
                    t.prototype.writeInt32 = function(t) {
                        return t < 0 && (t += 4294967296),
                        this.writeUInt32(t)
                    }
                    ,
                    t.prototype.readUInt16 = function() {
                        return this.readByte() << 8 | this.readByte()
                    }
                    ,
                    t.prototype.writeUInt16 = function(t) {
                        return this.writeByte(t >> 8 & 255),
                        this.writeByte(255 & t)
                    }
                    ,
                    t.prototype.readInt16 = function() {
                        var t;
                        return 32768 <= (t = this.readUInt16()) ? t - 65536 : t
                    }
                    ,
                    t.prototype.writeInt16 = function(t) {
                        return t < 0 && (t += 65536),
                        this.writeUInt16(t)
                    }
                    ,
                    t.prototype.readString = function(t) {
                        var e, n, i;
                        for (n = [],
                        e = i = 0; 0 <= t ? i < t : t < i; e = 0 <= t ? ++i : --i)
                            n[e] = String.fromCharCode(this.readByte());
                        return n.join("")
                    }
                    ,
                    t.prototype.writeString = function(t) {
                        var e, n, i, r;
                        for (r = [],
                        e = n = 0,
                        i = t.length; 0 <= i ? n < i : i < n; e = 0 <= i ? ++n : --n)
                            r.push(this.writeByte(t.charCodeAt(e)));
                        return r
                    }
                    ,
                    t.prototype.readShort = function() {
                        return this.readInt16()
                    }
                    ,
                    t.prototype.writeShort = function(t) {
                        return this.writeInt16(t)
                    }
                    ,
                    t.prototype.readLongLong = function() {
                        var t, e, n, i, r, o, a, s;
                        return t = this.readByte(),
                        e = this.readByte(),
                        n = this.readByte(),
                        i = this.readByte(),
                        r = this.readByte(),
                        o = this.readByte(),
                        a = this.readByte(),
                        s = this.readByte(),
                        128 & t ? -1 * (72057594037927940 * (255 ^ t) + 281474976710656 * (255 ^ e) + 1099511627776 * (255 ^ n) + 4294967296 * (255 ^ i) + 16777216 * (255 ^ r) + 65536 * (255 ^ o) + 256 * (255 ^ a) + (255 ^ s) + 1) : 72057594037927940 * t + 281474976710656 * e + 1099511627776 * n + 4294967296 * i + 16777216 * r + 65536 * o + 256 * a + s
                    }
                    ,
                    t.prototype.writeLongLong = function(t) {
                        var e, n;
                        return e = Math.floor(t / 4294967296),
                        n = 4294967295 & t,
                        this.writeByte(e >> 24 & 255),
                        this.writeByte(e >> 16 & 255),
                        this.writeByte(e >> 8 & 255),
                        this.writeByte(255 & e),
                        this.writeByte(n >> 24 & 255),
                        this.writeByte(n >> 16 & 255),
                        this.writeByte(n >> 8 & 255),
                        this.writeByte(255 & n)
                    }
                    ,
                    t.prototype.readInt = function() {
                        return this.readInt32()
                    }
                    ,
                    t.prototype.writeInt = function(t) {
                        return this.writeInt32(t)
                    }
                    ,
                    t.prototype.read = function(t) {
                        var e, n;
                        for (e = [],
                        n = 0; 0 <= t ? n < t : t < n; 0 <= t ? ++n : --n)
                            e.push(this.readByte());
                        return e
                    }
                    ,
                    t.prototype.write = function(t) {
                        var e, n, i, r;
                        for (r = [],
                        n = 0,
                        i = t.length; n < i; n++)
                            e = t[n],
                            r.push(this.writeByte(e));
                        return r
                    }
                    ,
                    t
                }(), d = function() {
                    var t;
                    function e(t) {
                        var e, n, i;
                        for (this.scalarType = t.readInt(),
                        this.tableCount = t.readShort(),
                        this.searchRange = t.readShort(),
                        this.entrySelector = t.readShort(),
                        this.rangeShift = t.readShort(),
                        this.tables = {},
                        n = 0,
                        i = this.tableCount; 0 <= i ? n < i : i < n; 0 <= i ? ++n : --n)
                            e = {
                                tag: t.readString(4),
                                checksum: t.readInt(),
                                offset: t.readInt(),
                                length: t.readInt()
                            },
                            this.tables[e.tag] = e
                    }
                    return e.prototype.encode = function(e) {
                        var n, i, r, o, a, s, c, l, d, p, h, f, m;
                        for (m in h = Object.keys(e).length,
                        s = Math.log(2),
                        d = 16 * Math.floor(Math.log(h) / s),
                        o = Math.floor(d / s),
                        l = 16 * h - d,
                        (i = new u).writeInt(this.scalarType),
                        i.writeShort(h),
                        i.writeShort(d),
                        i.writeShort(o),
                        i.writeShort(l),
                        r = 16 * h,
                        c = i.pos + r,
                        a = null,
                        f = [],
                        e)
                            for (p = e[m],
                            i.writeString(m),
                            i.writeInt(t(p)),
                            i.writeInt(c),
                            i.writeInt(p.length),
                            f = f.concat(p),
                            "head" === m && (a = c),
                            c += p.length; c % 4; )
                                f.push(0),
                                c++;
                        return i.write(f),
                        n = 2981146554 - t(i.data),
                        i.pos = a + 8,
                        i.writeUInt32(n),
                        i.data
                    }
                    ,
                    t = function(t) {
                        var e, n, i, r;
                        for (t = E.call(t); t.length % 4; )
                            t.push(0);
                        for (n = new u(t),
                        i = e = 0,
                        r = t.length; i < r; i += 4)
                            e += n.readUInt32();
                        return 4294967295 & e
                    }
                    ,
                    e
                }(), p = {}.hasOwnProperty, h = function(t, e) {
                    for (var n in e)
                        p.call(e, n) && (t[n] = e[n]);
                    function i() {
                        this.constructor = t
                    }
                    return i.prototype = e.prototype,
                    t.prototype = new i,
                    t.__super__ = e.prototype,
                    t
                };
                l = function() {
                    function t(t) {
                        var e;
                        this.file = t,
                        e = this.file.directory.tables[this.tag],
                        this.exists = !!e,
                        e && (this.offset = e.offset,
                        this.length = e.length,
                        this.parse(this.file.contents))
                    }
                    return t.prototype.parse = function() {}
                    ,
                    t.prototype.encode = function() {}
                    ,
                    t.prototype.raw = function() {
                        return this.exists ? (this.file.contents.pos = this.offset,
                        this.file.contents.read(this.length)) : null
                    }
                    ,
                    t
                }();
                var f = function(t) {
                    function e() {
                        return e.__super__.constructor.apply(this, arguments)
                    }
                    return h(e, l),
                    e.prototype.tag = "head",
                    e.prototype.parse = function(t) {
                        return t.pos = this.offset,
                        this.version = t.readInt(),
                        this.revision = t.readInt(),
                        this.checkSumAdjustment = t.readInt(),
                        this.magicNumber = t.readInt(),
                        this.flags = t.readShort(),
                        this.unitsPerEm = t.readShort(),
                        this.created = t.readLongLong(),
                        this.modified = t.readLongLong(),
                        this.xMin = t.readShort(),
                        this.yMin = t.readShort(),
                        this.xMax = t.readShort(),
                        this.yMax = t.readShort(),
                        this.macStyle = t.readShort(),
                        this.lowestRecPPEM = t.readShort(),
                        this.fontDirectionHint = t.readShort(),
                        this.indexToLocFormat = t.readShort(),
                        this.glyphDataFormat = t.readShort()
                    }
                    ,
                    e.prototype.encode = function(t) {
                        var e;
                        return (e = new u).writeInt(this.version),
                        e.writeInt(this.revision),
                        e.writeInt(this.checkSumAdjustment),
                        e.writeInt(this.magicNumber),
                        e.writeShort(this.flags),
                        e.writeShort(this.unitsPerEm),
                        e.writeLongLong(this.created),
                        e.writeLongLong(this.modified),
                        e.writeShort(this.xMin),
                        e.writeShort(this.yMin),
                        e.writeShort(this.xMax),
                        e.writeShort(this.yMax),
                        e.writeShort(this.macStyle),
                        e.writeShort(this.lowestRecPPEM),
                        e.writeShort(this.fontDirectionHint),
                        e.writeShort(t),
                        e.writeShort(this.glyphDataFormat),
                        e.data
                    }
                    ,
                    e
                }()
                  , m = function() {
                    function t(t, e) {
                        var n, i, r, o, a, s, c, l, u, d, p, h, f, m, g, v, y, b;
                        switch (this.platformID = t.readUInt16(),
                        this.encodingID = t.readShort(),
                        this.offset = e + t.readInt(),
                        u = t.pos,
                        t.pos = this.offset,
                        this.format = t.readUInt16(),
                        this.length = t.readUInt16(),
                        this.language = t.readUInt16(),
                        this.isUnicode = 3 === this.platformID && 1 === this.encodingID && 4 === this.format || 0 === this.platformID && 4 === this.format,
                        this.codeMap = {},
                        this.format) {
                        case 0:
                            for (s = g = 0; g < 256; s = ++g)
                                this.codeMap[s] = t.readByte();
                            break;
                        case 4:
                            for (p = t.readUInt16(),
                            d = p / 2,
                            t.pos += 6,
                            r = function() {
                                var e, n;
                                for (n = [],
                                s = e = 0; 0 <= d ? e < d : d < e; s = 0 <= d ? ++e : --e)
                                    n.push(t.readUInt16());
                                return n
                            }(),
                            t.pos += 2,
                            f = function() {
                                var e, n;
                                for (n = [],
                                s = e = 0; 0 <= d ? e < d : d < e; s = 0 <= d ? ++e : --e)
                                    n.push(t.readUInt16());
                                return n
                            }(),
                            c = function() {
                                var e, n;
                                for (n = [],
                                s = e = 0; 0 <= d ? e < d : d < e; s = 0 <= d ? ++e : --e)
                                    n.push(t.readUInt16());
                                return n
                            }(),
                            l = function() {
                                var e, n;
                                for (n = [],
                                s = e = 0; 0 <= d ? e < d : d < e; s = 0 <= d ? ++e : --e)
                                    n.push(t.readUInt16());
                                return n
                            }(),
                            i = (this.length - t.pos + this.offset) / 2,
                            a = function() {
                                var e, n;
                                for (n = [],
                                s = e = 0; 0 <= i ? e < i : i < e; s = 0 <= i ? ++e : --e)
                                    n.push(t.readUInt16());
                                return n
                            }(),
                            s = v = 0,
                            b = r.length; v < b; s = ++v)
                                for (m = r[s],
                                n = y = h = f[s]; h <= m ? y <= m : m <= y; n = h <= m ? ++y : --y)
                                    0 === l[s] ? o = n + c[s] : 0 !== (o = a[l[s] / 2 + (n - h) - (d - s)] || 0) && (o += c[s]),
                                    this.codeMap[n] = 65535 & o
                        }
                        t.pos = u
                    }
                    return t.encode = function(t, e) {
                        var n, i, r, o, a, s, c, l, d, p, h, f, m, g, v, y, b, w, S, x, M, E, C, A, T, O, _, P, I, k, D, R, L, N, j, V, F, U, B, z, G, H, W, q, X, Y;
                        switch (P = new u,
                        o = Object.keys(t).sort((function(t, e) {
                            return t - e
                        }
                        )),
                        e) {
                        case "macroman":
                            for (m = 0,
                            g = function() {
                                var t, e;
                                for (e = [],
                                f = t = 0; t < 256; f = ++t)
                                    e.push(0);
                                return e
                            }(),
                            y = {
                                0: 0
                            },
                            r = {},
                            I = 0,
                            L = o.length; I < L; I++)
                                null == y[W = t[i = o[I]]] && (y[W] = ++m),
                                r[i] = {
                                    old: t[i],
                                    new: y[t[i]]
                                },
                                g[i] = y[t[i]];
                            return P.writeUInt16(1),
                            P.writeUInt16(0),
                            P.writeUInt32(12),
                            P.writeUInt16(0),
                            P.writeUInt16(262),
                            P.writeUInt16(0),
                            P.write(g),
                            {
                                charMap: r,
                                subtable: P.data,
                                maxGlyphID: m + 1
                            };
                        case "unicode":
                            for (O = [],
                            d = [],
                            y = {},
                            n = {},
                            v = c = null,
                            k = b = 0,
                            N = o.length; k < N; k++)
                                null == y[S = t[i = o[k]]] && (y[S] = ++b),
                                n[i] = {
                                    old: S,
                                    new: y[S]
                                },
                                a = y[S] - i,
                                null != v && a === c || (v && d.push(v),
                                O.push(i),
                                c = a),
                                v = i;
                            for (v && d.push(v),
                            d.push(65535),
                            O.push(65535),
                            A = 2 * (C = O.length),
                            E = 2 * Math.pow(Math.log(C) / Math.LN2, 2),
                            p = Math.log(E / 2) / Math.LN2,
                            M = 2 * C - E,
                            s = [],
                            x = [],
                            h = [],
                            f = D = 0,
                            j = O.length; D < j; f = ++D) {
                                if (T = O[f],
                                l = d[f],
                                65535 === T) {
                                    s.push(0),
                                    x.push(0);
                                    break
                                }
                                if (32768 <= T - (_ = n[T].new))
                                    for (s.push(0),
                                    x.push(2 * (h.length + C - f)),
                                    i = R = T; T <= l ? R <= l : l <= R; i = T <= l ? ++R : --R)
                                        h.push(n[i].new);
                                else
                                    s.push(_ - T),
                                    x.push(0)
                            }
                            for (P.writeUInt16(3),
                            P.writeUInt16(1),
                            P.writeUInt32(12),
                            P.writeUInt16(4),
                            P.writeUInt16(16 + 8 * C + 2 * h.length),
                            P.writeUInt16(0),
                            P.writeUInt16(A),
                            P.writeUInt16(E),
                            P.writeUInt16(p),
                            P.writeUInt16(M),
                            G = 0,
                            V = d.length; G < V; G++)
                                i = d[G],
                                P.writeUInt16(i);
                            for (P.writeUInt16(0),
                            H = 0,
                            F = O.length; H < F; H++)
                                i = O[H],
                                P.writeUInt16(i);
                            for (q = 0,
                            U = s.length; q < U; q++)
                                a = s[q],
                                P.writeUInt16(a);
                            for (X = 0,
                            B = x.length; X < B; X++)
                                w = x[X],
                                P.writeUInt16(w);
                            for (Y = 0,
                            z = h.length; Y < z; Y++)
                                m = h[Y],
                                P.writeUInt16(m);
                            return {
                                charMap: n,
                                subtable: P.data,
                                maxGlyphID: b + 1
                            }
                        }
                    }
                    ,
                    t
                }()
                  , g = function(t) {
                    function e() {
                        return e.__super__.constructor.apply(this, arguments)
                    }
                    return h(e, l),
                    e.prototype.tag = "cmap",
                    e.prototype.parse = function(t) {
                        var e, n, i;
                        for (t.pos = this.offset,
                        this.version = t.readUInt16(),
                        n = t.readUInt16(),
                        this.tables = [],
                        this.unicode = null,
                        i = 0; 0 <= n ? i < n : n < i; 0 <= n ? ++i : --i)
                            e = new m(t,this.offset),
                            this.tables.push(e),
                            e.isUnicode && null == this.unicode && (this.unicode = e);
                        return !0
                    }
                    ,
                    e.encode = function(t, e) {
                        var n, i;
                        return null == e && (e = "macroman"),
                        n = m.encode(t, e),
                        (i = new u).writeUInt16(0),
                        i.writeUInt16(1),
                        n.table = i.data.concat(n.subtable),
                        n
                    }
                    ,
                    e
                }()
                  , v = function(t) {
                    function e() {
                        return e.__super__.constructor.apply(this, arguments)
                    }
                    return h(e, l),
                    e.prototype.tag = "hhea",
                    e.prototype.parse = function(t) {
                        return t.pos = this.offset,
                        this.version = t.readInt(),
                        this.ascender = t.readShort(),
                        this.decender = t.readShort(),
                        this.lineGap = t.readShort(),
                        this.advanceWidthMax = t.readShort(),
                        this.minLeftSideBearing = t.readShort(),
                        this.minRightSideBearing = t.readShort(),
                        this.xMaxExtent = t.readShort(),
                        this.caretSlopeRise = t.readShort(),
                        this.caretSlopeRun = t.readShort(),
                        this.caretOffset = t.readShort(),
                        t.pos += 8,
                        this.metricDataFormat = t.readShort(),
                        this.numberOfMetrics = t.readUInt16()
                    }
                    ,
                    e
                }()
                  , y = function(t) {
                    function e() {
                        return e.__super__.constructor.apply(this, arguments)
                    }
                    return h(e, l),
                    e.prototype.tag = "OS/2",
                    e.prototype.parse = function(t) {
                        if (t.pos = this.offset,
                        this.version = t.readUInt16(),
                        this.averageCharWidth = t.readShort(),
                        this.weightClass = t.readUInt16(),
                        this.widthClass = t.readUInt16(),
                        this.type = t.readShort(),
                        this.ySubscriptXSize = t.readShort(),
                        this.ySubscriptYSize = t.readShort(),
                        this.ySubscriptXOffset = t.readShort(),
                        this.ySubscriptYOffset = t.readShort(),
                        this.ySuperscriptXSize = t.readShort(),
                        this.ySuperscriptYSize = t.readShort(),
                        this.ySuperscriptXOffset = t.readShort(),
                        this.ySuperscriptYOffset = t.readShort(),
                        this.yStrikeoutSize = t.readShort(),
                        this.yStrikeoutPosition = t.readShort(),
                        this.familyClass = t.readShort(),
                        this.panose = function() {
                            var e, n;
                            for (n = [],
                            e = 0; e < 10; ++e)
                                n.push(t.readByte());
                            return n
                        }(),
                        this.charRange = function() {
                            var e, n;
                            for (n = [],
                            e = 0; e < 4; ++e)
                                n.push(t.readInt());
                            return n
                        }(),
                        this.vendorID = t.readString(4),
                        this.selection = t.readShort(),
                        this.firstCharIndex = t.readShort(),
                        this.lastCharIndex = t.readShort(),
                        0 < this.version && (this.ascent = t.readShort(),
                        this.descent = t.readShort(),
                        this.lineGap = t.readShort(),
                        this.winAscent = t.readShort(),
                        this.winDescent = t.readShort(),
                        this.codePageRange = function() {
                            var e, n;
                            for (n = [],
                            e = 0; e < 2; ++e)
                                n.push(t.readInt());
                            return n
                        }(),
                        1 < this.version))
                            return this.xHeight = t.readShort(),
                            this.capHeight = t.readShort(),
                            this.defaultChar = t.readShort(),
                            this.breakChar = t.readShort(),
                            this.maxContext = t.readShort()
                    }
                    ,
                    e
                }()
                  , b = function(t) {
                    function e() {
                        return e.__super__.constructor.apply(this, arguments)
                    }
                    return h(e, l),
                    e.prototype.tag = "post",
                    e.prototype.parse = function(t) {
                        var e, n, i, r;
                        switch (t.pos = this.offset,
                        this.format = t.readInt(),
                        this.italicAngle = t.readInt(),
                        this.underlinePosition = t.readShort(),
                        this.underlineThickness = t.readShort(),
                        this.isFixedPitch = t.readInt(),
                        this.minMemType42 = t.readInt(),
                        this.maxMemType42 = t.readInt(),
                        this.minMemType1 = t.readInt(),
                        this.maxMemType1 = t.readInt(),
                        this.format) {
                        case 65536:
                            break;
                        case 131072:
                            for (n = t.readUInt16(),
                            this.glyphNameIndex = [],
                            i = 0; 0 <= n ? i < n : n < i; 0 <= n ? ++i : --i)
                                this.glyphNameIndex.push(t.readUInt16());
                            for (this.names = [],
                            r = []; t.pos < this.offset + this.length; )
                                e = t.readByte(),
                                r.push(this.names.push(t.readString(e)));
                            return r;
                        case 151552:
                            return n = t.readUInt16(),
                            this.offsets = t.read(n);
                        case 196608:
                            break;
                        case 262144:
                            return this.map = function() {
                                var e, n, i;
                                for (i = [],
                                e = 0,
                                n = this.file.maxp.numGlyphs; 0 <= n ? e < n : n < e; 0 <= n ? ++e : --e)
                                    i.push(t.readUInt32());
                                return i
                            }
                            .call(this)
                        }
                    }
                    ,
                    e
                }()
                  , w = function(t, e) {
                    this.raw = t,
                    this.length = t.length,
                    this.platformID = e.platformID,
                    this.encodingID = e.encodingID,
                    this.languageID = e.languageID
                }
                  , S = function(t) {
                    function e() {
                        return e.__super__.constructor.apply(this, arguments)
                    }
                    return h(e, l),
                    e.prototype.tag = "name",
                    e.prototype.parse = function(t) {
                        var e, n, i, r, o, a, s, c, l, u, d, p;
                        for (t.pos = this.offset,
                        t.readShort(),
                        e = t.readShort(),
                        a = t.readShort(),
                        n = [],
                        r = l = 0; 0 <= e ? l < e : e < l; r = 0 <= e ? ++l : --l)
                            n.push({
                                platformID: t.readShort(),
                                encodingID: t.readShort(),
                                languageID: t.readShort(),
                                nameID: t.readShort(),
                                length: t.readShort(),
                                offset: this.offset + a + t.readShort()
                            });
                        for (s = {},
                        r = u = 0,
                        d = n.length; u < d; r = ++u)
                            i = n[r],
                            t.pos = i.offset,
                            c = t.readString(i.length),
                            o = new w(c,i),
                            null == s[p = i.nameID] && (s[p] = []),
                            s[i.nameID].push(o);
                        this.strings = s,
                        this.copyright = s[0],
                        this.fontFamily = s[1],
                        this.fontSubfamily = s[2],
                        this.uniqueSubfamily = s[3],
                        this.fontName = s[4],
                        this.version = s[5];
                        try {
                            this.postscriptName = s[6][0].raw.replace(/[\x00-\x19\x80-\xff]/g, "")
                        } catch (t) {
                            this.postscriptName = s[4][0].raw.replace(/[\x00-\x19\x80-\xff]/g, "")
                        }
                        return this.trademark = s[7],
                        this.manufacturer = s[8],
                        this.designer = s[9],
                        this.description = s[10],
                        this.vendorUrl = s[11],
                        this.designerUrl = s[12],
                        this.license = s[13],
                        this.licenseUrl = s[14],
                        this.preferredFamily = s[15],
                        this.preferredSubfamily = s[17],
                        this.compatibleFull = s[18],
                        this.sampleText = s[19]
                    }
                    ,
                    e
                }()
                  , x = function(t) {
                    function e() {
                        return e.__super__.constructor.apply(this, arguments)
                    }
                    return h(e, l),
                    e.prototype.tag = "maxp",
                    e.prototype.parse = function(t) {
                        return t.pos = this.offset,
                        this.version = t.readInt(),
                        this.numGlyphs = t.readUInt16(),
                        this.maxPoints = t.readUInt16(),
                        this.maxContours = t.readUInt16(),
                        this.maxCompositePoints = t.readUInt16(),
                        this.maxComponentContours = t.readUInt16(),
                        this.maxZones = t.readUInt16(),
                        this.maxTwilightPoints = t.readUInt16(),
                        this.maxStorage = t.readUInt16(),
                        this.maxFunctionDefs = t.readUInt16(),
                        this.maxInstructionDefs = t.readUInt16(),
                        this.maxStackElements = t.readUInt16(),
                        this.maxSizeOfInstructions = t.readUInt16(),
                        this.maxComponentElements = t.readUInt16(),
                        this.maxComponentDepth = t.readUInt16()
                    }
                    ,
                    e
                }()
                  , M = function(t) {
                    function e() {
                        return e.__super__.constructor.apply(this, arguments)
                    }
                    return h(e, l),
                    e.prototype.tag = "hmtx",
                    e.prototype.parse = function(t) {
                        var e, n, i, r, o, a, s;
                        for (t.pos = this.offset,
                        this.metrics = [],
                        r = 0,
                        a = this.file.hhea.numberOfMetrics; 0 <= a ? r < a : a < r; 0 <= a ? ++r : --r)
                            this.metrics.push({
                                advance: t.readUInt16(),
                                lsb: t.readInt16()
                            });
                        for (n = this.file.maxp.numGlyphs - this.file.hhea.numberOfMetrics,
                        this.leftSideBearings = function() {
                            var e, i;
                            for (i = [],
                            e = 0; 0 <= n ? e < n : n < e; 0 <= n ? ++e : --e)
                                i.push(t.readInt16());
                            return i
                        }(),
                        this.widths = function() {
                            var t, e, n, r;
                            for (r = [],
                            t = 0,
                            e = (n = this.metrics).length; t < e; t++)
                                i = n[t],
                                r.push(i.advance);
                            return r
                        }
                        .call(this),
                        e = this.widths[this.widths.length - 1],
                        s = [],
                        o = 0; 0 <= n ? o < n : n < o; 0 <= n ? ++o : --o)
                            s.push(this.widths.push(e));
                        return s
                    }
                    ,
                    e.prototype.forGlyph = function(t) {
                        return t in this.metrics ? this.metrics[t] : {
                            advance: this.metrics[this.metrics.length - 1].advance,
                            lsb: this.leftSideBearings[t - this.metrics.length]
                        }
                    }
                    ,
                    e
                }()
                  , E = [].slice
                  , C = function(t) {
                    function e() {
                        return e.__super__.constructor.apply(this, arguments)
                    }
                    return h(e, l),
                    e.prototype.tag = "glyf",
                    e.prototype.parse = function(t) {
                        return this.cache = {}
                    }
                    ,
                    e.prototype.glyphFor = function(t) {
                        var e, n, i, r, o, a, s, c, l, d;
                        return (t = t)in this.cache ? this.cache[t] : (r = this.file.loca,
                        e = this.file.contents,
                        n = r.indexOf(t),
                        0 === (i = r.lengthOf(t)) ? this.cache[t] = null : (e.pos = this.offset + n,
                        o = (a = new u(e.read(i))).readShort(),
                        c = a.readShort(),
                        d = a.readShort(),
                        s = a.readShort(),
                        l = a.readShort(),
                        this.cache[t] = -1 === o ? new T(a,c,d,s,l) : new A(a,o,c,d,s,l),
                        this.cache[t]))
                    }
                    ,
                    e.prototype.encode = function(t, e, n) {
                        var i, r, o, a, s;
                        for (o = [],
                        r = [],
                        a = 0,
                        s = e.length; a < s; a++)
                            i = t[e[a]],
                            r.push(o.length),
                            i && (o = o.concat(i.encode(n)));
                        return r.push(o.length),
                        {
                            table: o,
                            offsets: r
                        }
                    }
                    ,
                    e
                }()
                  , A = function() {
                    function t(t, e, n, i, r, o) {
                        this.raw = t,
                        this.numberOfContours = e,
                        this.xMin = n,
                        this.yMin = i,
                        this.xMax = r,
                        this.yMax = o,
                        this.compound = !1
                    }
                    return t.prototype.encode = function() {
                        return this.raw.data
                    }
                    ,
                    t
                }()
                  , T = function() {
                    function t(t, e, n, i, r) {
                        var o, a;
                        for (this.raw = t,
                        this.xMin = e,
                        this.yMin = n,
                        this.xMax = i,
                        this.yMax = r,
                        this.compound = !0,
                        this.glyphIDs = [],
                        this.glyphOffsets = [],
                        o = this.raw; a = o.readShort(),
                        this.glyphOffsets.push(o.pos),
                        this.glyphIDs.push(o.readShort()),
                        32 & a; )
                            o.pos += 1 & a ? 4 : 2,
                            128 & a ? o.pos += 8 : 64 & a ? o.pos += 4 : 8 & a && (o.pos += 2)
                    }
                    return t.prototype.encode = function(t) {
                        var e, n, i, r, o;
                        for (n = new u(E.call(this.raw.data)),
                        e = i = 0,
                        r = (o = this.glyphIDs).length; i < r; e = ++i)
                            o[e],
                            n.pos = this.glyphOffsets[e];
                        return n.data
                    }
                    ,
                    t
                }()
                  , O = function(t) {
                    function e() {
                        return e.__super__.constructor.apply(this, arguments)
                    }
                    return h(e, l),
                    e.prototype.tag = "loca",
                    e.prototype.parse = function(t) {
                        var e;
                        return t.pos = this.offset,
                        e = this.file.head.indexToLocFormat,
                        this.offsets = 0 === e ? function() {
                            var e, n, i;
                            for (i = [],
                            e = 0,
                            n = this.length; e < n; e += 2)
                                i.push(2 * t.readUInt16());
                            return i
                        }
                        .call(this) : function() {
                            var e, n, i;
                            for (i = [],
                            e = 0,
                            n = this.length; e < n; e += 4)
                                i.push(t.readUInt32());
                            return i
                        }
                        .call(this)
                    }
                    ,
                    e.prototype.indexOf = function(t) {
                        return this.offsets[t]
                    }
                    ,
                    e.prototype.lengthOf = function(t) {
                        return this.offsets[t + 1] - this.offsets[t]
                    }
                    ,
                    e.prototype.encode = function(t, e) {
                        for (var n = new Uint32Array(this.offsets.length), i = 0, r = 0, o = 0; o < n.length; ++o)
                            if (n[o] = i,
                            r < e.length && e[r] == o) {
                                ++r,
                                n[o] = i;
                                var a = this.offsets[o]
                                  , s = this.offsets[o + 1] - a;
                                0 < s && (i += s)
                            }
                        for (var c = new Array(4 * n.length), l = 0; l < n.length; ++l)
                            c[4 * l + 3] = 255 & n[l],
                            c[4 * l + 2] = (65280 & n[l]) >> 8,
                            c[4 * l + 1] = (16711680 & n[l]) >> 16,
                            c[4 * l] = (4278190080 & n[l]) >> 24;
                        return c
                    }
                    ,
                    e
                }()
                  , _ = function() {
                    function t(t) {
                        this.font = t,
                        this.subset = {},
                        this.unicodes = {},
                        this.next = 33
                    }
                    return t.prototype.generateCmap = function() {
                        var t, e, n, i, r;
                        for (e in i = this.font.cmap.tables[0].codeMap,
                        t = {},
                        r = this.subset)
                            n = r[e],
                            t[e] = i[n];
                        return t
                    }
                    ,
                    t.prototype.glyphsFor = function(t) {
                        var e, n, i, r, o, a, s;
                        for (i = {},
                        o = 0,
                        a = t.length; o < a; o++)
                            i[r = t[o]] = this.font.glyf.glyphFor(r);
                        for (r in e = [],
                        i)
                            (null != (n = i[r]) ? n.compound : void 0) && e.push.apply(e, n.glyphIDs);
                        if (0 < e.length)
                            for (r in s = this.glyphsFor(e))
                                n = s[r],
                                i[r] = n;
                        return i
                    }
                    ,
                    t.prototype.encode = function(t, e) {
                        var n, i, r, o, a, s, c, l, u, d, p, h, f, m, v;
                        for (i in n = g.encode(this.generateCmap(), "unicode"),
                        o = this.glyphsFor(t),
                        p = {
                            0: 0
                        },
                        v = n.charMap)
                            p[(s = v[i]).old] = s.new;
                        for (h in d = n.maxGlyphID,
                        o)
                            h in p || (p[h] = d++);
                        return l = function(t) {
                            var e, n;
                            for (e in n = {},
                            t)
                                n[t[e]] = e;
                            return n
                        }(p),
                        u = Object.keys(l).sort((function(t, e) {
                            return t - e
                        }
                        )),
                        f = function() {
                            var t, e, n;
                            for (n = [],
                            t = 0,
                            e = u.length; t < e; t++)
                                a = u[t],
                                n.push(l[a]);
                            return n
                        }(),
                        r = this.font.glyf.encode(o, f, p),
                        c = this.font.loca.encode(r.offsets, f),
                        m = {
                            cmap: this.font.cmap.raw(),
                            glyf: r.table,
                            loca: c,
                            hmtx: this.font.hmtx.raw(),
                            hhea: this.font.hhea.raw(),
                            maxp: this.font.maxp.raw(),
                            post: this.font.post.raw(),
                            name: this.font.name.raw(),
                            head: this.font.head.encode(e)
                        },
                        this.font.os2.exists && (m["OS/2"] = this.font.os2.raw()),
                        this.font.directory.encode(m)
                    }
                    ,
                    t
                }();
                t.API.PDFObject = function() {
                    var t;
                    function e() {}
                    return t = function(t, e) {
                        return (Array(e + 1).join("0") + t).slice(-e)
                    }
                    ,
                    e.convert = function(n) {
                        var i, r, o, a;
                        if (Array.isArray(n))
                            return "[" + function() {
                                var t, r, o;
                                for (o = [],
                                t = 0,
                                r = n.length; t < r; t++)
                                    i = n[t],
                                    o.push(e.convert(i));
                                return o
                            }().join(" ") + "]";
                        if ("string" == typeof n)
                            return "/" + n;
                        if (null != n ? n.isString : void 0)
                            return "(" + n + ")";
                        if (n instanceof Date)
                            return "(D:" + t(n.getUTCFullYear(), 4) + t(n.getUTCMonth(), 2) + t(n.getUTCDate(), 2) + t(n.getUTCHours(), 2) + t(n.getUTCMinutes(), 2) + t(n.getUTCSeconds(), 2) + "Z)";
                        if ("[object Object]" !== {}.toString.call(n))
                            return "" + n;
                        for (r in o = ["<<"],
                        n)
                            a = n[r],
                            o.push("/" + r + " " + e.convert(a));
                        return o.push(">>"),
                        o.join("\n")
                    }
                    ,
                    e
                }()
            }(ft),
            Ot = "undefined" != typeof self && self || "undefined" != typeof window && window || void 0 !== i && i || Function('return typeof this === "object" && this.content')() || Function("return this")(),
            _t = function() {
                var t, e, n;
                function i(t) {
                    var e, n, i, r, o, a, s, c, l, u, d, p, h, f;
                    for (this.data = t,
                    this.pos = 8,
                    this.palette = [],
                    this.imgData = [],
                    this.transparency = {},
                    this.animation = null,
                    this.text = {},
                    a = null; ; ) {
                        switch (e = this.readUInt32(),
                        l = function() {
                            var t, e;
                            for (e = [],
                            t = 0; t < 4; ++t)
                                e.push(String.fromCharCode(this.data[this.pos++]));
                            return e
                        }
                        .call(this).join("")) {
                        case "IHDR":
                            this.width = this.readUInt32(),
                            this.height = this.readUInt32(),
                            this.bits = this.data[this.pos++],
                            this.colorType = this.data[this.pos++],
                            this.compressionMethod = this.data[this.pos++],
                            this.filterMethod = this.data[this.pos++],
                            this.interlaceMethod = this.data[this.pos++];
                            break;
                        case "acTL":
                            this.animation = {
                                numFrames: this.readUInt32(),
                                numPlays: this.readUInt32() || 1 / 0,
                                frames: []
                            };
                            break;
                        case "PLTE":
                            this.palette = this.read(e);
                            break;
                        case "fcTL":
                            a && this.animation.frames.push(a),
                            this.pos += 4,
                            a = {
                                width: this.readUInt32(),
                                height: this.readUInt32(),
                                xOffset: this.readUInt32(),
                                yOffset: this.readUInt32()
                            },
                            o = this.readUInt16(),
                            r = this.readUInt16() || 100,
                            a.delay = 1e3 * o / r,
                            a.disposeOp = this.data[this.pos++],
                            a.blendOp = this.data[this.pos++],
                            a.data = [];
                            break;
                        case "IDAT":
                        case "fdAT":
                            for ("fdAT" === l && (this.pos += 4,
                            e -= 4),
                            t = (null != a ? a.data : void 0) || this.imgData,
                            p = 0; 0 <= e ? p < e : e < p; 0 <= e ? ++p : --p)
                                t.push(this.data[this.pos++]);
                            break;
                        case "tRNS":
                            switch (this.transparency = {},
                            this.colorType) {
                            case 3:
                                if (i = this.palette.length / 3,
                                this.transparency.indexed = this.read(e),
                                this.transparency.indexed.length > i)
                                    throw new Error("More transparent colors than palette size");
                                if (0 < (u = i - this.transparency.indexed.length))
                                    for (h = 0; 0 <= u ? h < u : u < h; 0 <= u ? ++h : --h)
                                        this.transparency.indexed.push(255);
                                break;
                            case 0:
                                this.transparency.grayscale = this.read(e)[0];
                                break;
                            case 2:
                                this.transparency.rgb = this.read(e)
                            }
                            break;
                        case "tEXt":
                            s = (d = this.read(e)).indexOf(0),
                            c = String.fromCharCode.apply(String, d.slice(0, s)),
                            this.text[c] = String.fromCharCode.apply(String, d.slice(s + 1));
                            break;
                        case "IEND":
                            return a && this.animation.frames.push(a),
                            this.colors = function() {
                                switch (this.colorType) {
                                case 0:
                                case 3:
                                case 4:
                                    return 1;
                                case 2:
                                case 6:
                                    return 3
                                }
                            }
                            .call(this),
                            this.hasAlphaChannel = 4 === (f = this.colorType) || 6 === f,
                            n = this.colors + (this.hasAlphaChannel ? 1 : 0),
                            this.pixelBitlength = this.bits * n,
                            this.colorSpace = function() {
                                switch (this.colors) {
                                case 1:
                                    return "DeviceGray";
                                case 3:
                                    return "DeviceRGB"
                                }
                            }
                            .call(this),
                            void (this.imgData = new Uint8Array(this.imgData));
                        default:
                            this.pos += e
                        }
                        if (this.pos += 4,
                        this.pos > this.data.length)
                            throw new Error("Incomplete or corrupt PNG file")
                    }
                }
                i.load = function(t, e, n) {
                    var r;
                    return "function" == typeof e && (n = e),
                    (r = new XMLHttpRequest).open("GET", t, !0),
                    r.responseType = "arraybuffer",
                    r.onload = function() {
                        var t;
                        return t = new i(new Uint8Array(r.response || r.mozResponseArrayBuffer)),
                        "function" == typeof (null != e ? e.getContext : void 0) && t.render(e),
                        "function" == typeof n ? n(t) : void 0
                    }
                    ,
                    r.send(null)
                }
                ,
                i.prototype.read = function(t) {
                    var e, n;
                    for (n = [],
                    e = 0; 0 <= t ? e < t : t < e; 0 <= t ? ++e : --e)
                        n.push(this.data[this.pos++]);
                    return n
                }
                ,
                i.prototype.readUInt32 = function() {
                    return this.data[this.pos++] << 24 | this.data[this.pos++] << 16 | this.data[this.pos++] << 8 | this.data[this.pos++]
                }
                ,
                i.prototype.readUInt16 = function() {
                    return this.data[this.pos++] << 8 | this.data[this.pos++]
                }
                ,
                i.prototype.decodePixels = function(t) {
                    var e = this.pixelBitlength / 8
                      , n = new Uint8Array(this.width * this.height * e)
                      , i = 0
                      , r = this;
                    if (null == t && (t = this.imgData),
                    0 === t.length)
                        return new Uint8Array(0);
                    function o(o, a, s, c) {
                        var l, u, d, p, h, f, m, g, v, y, b, w, S, x, M, E, C, A, T, O, _, P = Math.ceil((r.width - o) / s), I = Math.ceil((r.height - a) / c), k = r.width == P && r.height == I;
                        for (x = e * P,
                        w = k ? n : new Uint8Array(x * I),
                        f = t.length,
                        u = S = 0; S < I && i < f; ) {
                            switch (t[i++]) {
                            case 0:
                                for (p = C = 0; C < x; p = C += 1)
                                    w[u++] = t[i++];
                                break;
                            case 1:
                                for (p = A = 0; A < x; p = A += 1)
                                    l = t[i++],
                                    h = p < e ? 0 : w[u - e],
                                    w[u++] = (l + h) % 256;
                                break;
                            case 2:
                                for (p = T = 0; T < x; p = T += 1)
                                    l = t[i++],
                                    d = (p - p % e) / e,
                                    M = S && w[(S - 1) * x + d * e + p % e],
                                    w[u++] = (M + l) % 256;
                                break;
                            case 3:
                                for (p = O = 0; O < x; p = O += 1)
                                    l = t[i++],
                                    d = (p - p % e) / e,
                                    h = p < e ? 0 : w[u - e],
                                    M = S && w[(S - 1) * x + d * e + p % e],
                                    w[u++] = (l + Math.floor((h + M) / 2)) % 256;
                                break;
                            case 4:
                                for (p = _ = 0; _ < x; p = _ += 1)
                                    l = t[i++],
                                    d = (p - p % e) / e,
                                    h = p < e ? 0 : w[u - e],
                                    0 === S ? M = E = 0 : (M = w[(S - 1) * x + d * e + p % e],
                                    E = d && w[(S - 1) * x + (d - 1) * e + p % e]),
                                    m = h + M - E,
                                    g = Math.abs(m - h),
                                    y = Math.abs(m - M),
                                    b = Math.abs(m - E),
                                    v = g <= y && g <= b ? h : y <= b ? M : E,
                                    w[u++] = (l + v) % 256;
                                break;
                            default:
                                throw new Error("Invalid filter algorithm: " + t[i - 1])
                            }
                            if (!k) {
                                var D = ((a + S * c) * r.width + o) * e
                                  , R = S * x;
                                for (p = 0; p < P; p += 1) {
                                    for (var L = 0; L < e; L += 1)
                                        n[D++] = w[R++];
                                    D += (s - 1) * e
                                }
                            }
                            S++
                        }
                    }
                    return t = (t = new Nt(t)).getBytes(),
                    1 == r.interlaceMethod ? (o(0, 0, 8, 8),
                    o(4, 0, 8, 8),
                    o(0, 4, 4, 8),
                    o(2, 0, 4, 4),
                    o(0, 2, 2, 4),
                    o(1, 0, 2, 2),
                    o(0, 1, 1, 2)) : o(0, 0, 1, 1),
                    n
                }
                ,
                i.prototype.decodePalette = function() {
                    var t, e, n, i, r, o, a, s, c;
                    for (n = this.palette,
                    o = this.transparency.indexed || [],
                    r = new Uint8Array((o.length || 0) + n.length),
                    i = 0,
                    n.length,
                    e = a = t = 0,
                    s = n.length; a < s; e = a += 3)
                        r[i++] = n[e],
                        r[i++] = n[e + 1],
                        r[i++] = n[e + 2],
                        r[i++] = null != (c = o[t++]) ? c : 255;
                    return r
                }
                ,
                i.prototype.copyToImageData = function(t, e) {
                    var n, i, r, o, a, s, c, l, u, d, p;
                    if (i = this.colors,
                    u = null,
                    n = this.hasAlphaChannel,
                    this.palette.length && (u = null != (p = this._decodedPalette) ? p : this._decodedPalette = this.decodePalette(),
                    i = 4,
                    n = !0),
                    l = (r = t.data || t).length,
                    a = u || e,
                    o = s = 0,
                    1 === i)
                        for (; o < l; )
                            c = u ? 4 * e[o / 4] : s,
                            d = a[c++],
                            r[o++] = d,
                            r[o++] = d,
                            r[o++] = d,
                            r[o++] = n ? a[c++] : 255,
                            s = c;
                    else
                        for (; o < l; )
                            c = u ? 4 * e[o / 4] : s,
                            r[o++] = a[c++],
                            r[o++] = a[c++],
                            r[o++] = a[c++],
                            r[o++] = n ? a[c++] : 255,
                            s = c
                }
                ,
                i.prototype.decode = function() {
                    var t;
                    return t = new Uint8Array(this.width * this.height * 4),
                    this.copyToImageData(t, this.decodePixels()),
                    t
                }
                ;
                try {
                    e = Ot.document.createElement("canvas"),
                    n = e.getContext("2d")
                } catch (t) {
                    return -1
                }
                return t = function(t) {
                    var i;
                    return n.width = t.width,
                    n.height = t.height,
                    n.clearRect(0, 0, t.width, t.height),
                    n.putImageData(t, 0, 0),
                    (i = new Image).src = e.toDataURL(),
                    i
                }
                ,
                i.prototype.decodeFrames = function(e) {
                    var n, i, r, o, a, s, c, l;
                    if (this.animation) {
                        for (l = [],
                        i = a = 0,
                        s = (c = this.animation.frames).length; a < s; i = ++a)
                            n = c[i],
                            r = e.createImageData(n.width, n.height),
                            o = this.decodePixels(new Uint8Array(n.data)),
                            this.copyToImageData(r, o),
                            n.imageData = r,
                            l.push(n.image = t(r));
                        return l
                    }
                }
                ,
                i.prototype.renderFrame = function(t, e) {
                    var n, i, r;
                    return n = (i = this.animation.frames)[e],
                    r = i[e - 1],
                    0 === e && t.clearRect(0, 0, this.width, this.height),
                    1 === (null != r ? r.disposeOp : void 0) ? t.clearRect(r.xOffset, r.yOffset, r.width, r.height) : 2 === (null != r ? r.disposeOp : void 0) && t.putImageData(r.imageData, r.xOffset, r.yOffset),
                    0 === n.blendOp && t.clearRect(n.xOffset, n.yOffset, n.width, n.height),
                    t.drawImage(n.image, n.xOffset, n.yOffset)
                }
                ,
                i.prototype.animate = function(t) {
                    var e, n, i, r, o, a, s = this;
                    return n = 0,
                    a = this.animation,
                    r = a.numFrames,
                    i = a.frames,
                    o = a.numPlays,
                    (e = function() {
                        var a, c;
                        if (a = n++ % r,
                        c = i[a],
                        s.renderFrame(t, a),
                        1 < r && n / r < o)
                            return s.animation._timeout = setTimeout(e, c.delay)
                    }
                    )()
                }
                ,
                i.prototype.stopAnimation = function() {
                    var t;
                    return clearTimeout(null != (t = this.animation) ? t._timeout : void 0)
                }
                ,
                i.prototype.render = function(t) {
                    var e, n;
                    return t._png && t._png.stopAnimation(),
                    t._png = this,
                    t.width = this.width,
                    t.height = this.height,
                    e = t.getContext("2d"),
                    this.animation ? (this.decodeFrames(e),
                    this.animate(e)) : (n = e.createImageData(this.width, this.height),
                    this.copyToImageData(n, this.decodePixels()),
                    e.putImageData(n, 0, 0))
                }
                ,
                i
            }(),
            Ot.PNG = _t;
            var Lt = function() {
                function t() {
                    this.pos = 0,
                    this.bufferLength = 0,
                    this.eof = !1,
                    this.buffer = null
                }
                return t.prototype = {
                    ensureBuffer: function(t) {
                        var e = this.buffer
                          , n = e ? e.byteLength : 0;
                        if (t < n)
                            return e;
                        for (var i = 512; i < t; )
                            i <<= 1;
                        for (var r = new Uint8Array(i), o = 0; o < n; ++o)
                            r[o] = e[o];
                        return this.buffer = r
                    },
                    getByte: function() {
                        for (var t = this.pos; this.bufferLength <= t; ) {
                            if (this.eof)
                                return null;
                            this.readBlock()
                        }
                        return this.buffer[this.pos++]
                    },
                    getBytes: function(t) {
                        var e = this.pos;
                        if (t) {
                            this.ensureBuffer(e + t);
                            for (var n = e + t; !this.eof && this.bufferLength < n; )
                                this.readBlock();
                            var i = this.bufferLength;
                            i < n && (n = i)
                        } else {
                            for (; !this.eof; )
                                this.readBlock();
                            n = this.bufferLength
                        }
                        return this.pos = n,
                        this.buffer.subarray(e, n)
                    },
                    lookChar: function() {
                        for (var t = this.pos; this.bufferLength <= t; ) {
                            if (this.eof)
                                return null;
                            this.readBlock()
                        }
                        return String.fromCharCode(this.buffer[this.pos])
                    },
                    getChar: function() {
                        for (var t = this.pos; this.bufferLength <= t; ) {
                            if (this.eof)
                                return null;
                            this.readBlock()
                        }
                        return String.fromCharCode(this.buffer[this.pos++])
                    },
                    makeSubStream: function(t, e, n) {
                        for (var i = t + e; this.bufferLength <= i && !this.eof; )
                            this.readBlock();
                        return new Stream(this.buffer,t,e,n)
                    },
                    skip: function(t) {
                        t || (t = 1),
                        this.pos += t
                    },
                    reset: function() {
                        this.pos = 0
                    }
                },
                t
            }()
              , Nt = function() {
                if ("undefined" != typeof Uint32Array) {
                    var t = new Uint32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15])
                      , e = new Uint32Array([3, 4, 5, 6, 7, 8, 9, 10, 65547, 65549, 65551, 65553, 131091, 131095, 131099, 131103, 196643, 196651, 196659, 196667, 262211, 262227, 262243, 262259, 327811, 327843, 327875, 327907, 258, 258, 258])
                      , n = new Uint32Array([1, 2, 3, 4, 65541, 65543, 131081, 131085, 196625, 196633, 262177, 262193, 327745, 327777, 393345, 393409, 459009, 459137, 524801, 525057, 590849, 591361, 657409, 658433, 724993, 727041, 794625, 798721, 868353, 876545])
                      , i = [new Uint32Array([459008, 524368, 524304, 524568, 459024, 524400, 524336, 590016, 459016, 524384, 524320, 589984, 524288, 524416, 524352, 590048, 459012, 524376, 524312, 589968, 459028, 524408, 524344, 590032, 459020, 524392, 524328, 59e4, 524296, 524424, 524360, 590064, 459010, 524372, 524308, 524572, 459026, 524404, 524340, 590024, 459018, 524388, 524324, 589992, 524292, 524420, 524356, 590056, 459014, 524380, 524316, 589976, 459030, 524412, 524348, 590040, 459022, 524396, 524332, 590008, 524300, 524428, 524364, 590072, 459009, 524370, 524306, 524570, 459025, 524402, 524338, 590020, 459017, 524386, 524322, 589988, 524290, 524418, 524354, 590052, 459013, 524378, 524314, 589972, 459029, 524410, 524346, 590036, 459021, 524394, 524330, 590004, 524298, 524426, 524362, 590068, 459011, 524374, 524310, 524574, 459027, 524406, 524342, 590028, 459019, 524390, 524326, 589996, 524294, 524422, 524358, 590060, 459015, 524382, 524318, 589980, 459031, 524414, 524350, 590044, 459023, 524398, 524334, 590012, 524302, 524430, 524366, 590076, 459008, 524369, 524305, 524569, 459024, 524401, 524337, 590018, 459016, 524385, 524321, 589986, 524289, 524417, 524353, 590050, 459012, 524377, 524313, 589970, 459028, 524409, 524345, 590034, 459020, 524393, 524329, 590002, 524297, 524425, 524361, 590066, 459010, 524373, 524309, 524573, 459026, 524405, 524341, 590026, 459018, 524389, 524325, 589994, 524293, 524421, 524357, 590058, 459014, 524381, 524317, 589978, 459030, 524413, 524349, 590042, 459022, 524397, 524333, 590010, 524301, 524429, 524365, 590074, 459009, 524371, 524307, 524571, 459025, 524403, 524339, 590022, 459017, 524387, 524323, 589990, 524291, 524419, 524355, 590054, 459013, 524379, 524315, 589974, 459029, 524411, 524347, 590038, 459021, 524395, 524331, 590006, 524299, 524427, 524363, 590070, 459011, 524375, 524311, 524575, 459027, 524407, 524343, 590030, 459019, 524391, 524327, 589998, 524295, 524423, 524359, 590062, 459015, 524383, 524319, 589982, 459031, 524415, 524351, 590046, 459023, 524399, 524335, 590014, 524303, 524431, 524367, 590078, 459008, 524368, 524304, 524568, 459024, 524400, 524336, 590017, 459016, 524384, 524320, 589985, 524288, 524416, 524352, 590049, 459012, 524376, 524312, 589969, 459028, 524408, 524344, 590033, 459020, 524392, 524328, 590001, 524296, 524424, 524360, 590065, 459010, 524372, 524308, 524572, 459026, 524404, 524340, 590025, 459018, 524388, 524324, 589993, 524292, 524420, 524356, 590057, 459014, 524380, 524316, 589977, 459030, 524412, 524348, 590041, 459022, 524396, 524332, 590009, 524300, 524428, 524364, 590073, 459009, 524370, 524306, 524570, 459025, 524402, 524338, 590021, 459017, 524386, 524322, 589989, 524290, 524418, 524354, 590053, 459013, 524378, 524314, 589973, 459029, 524410, 524346, 590037, 459021, 524394, 524330, 590005, 524298, 524426, 524362, 590069, 459011, 524374, 524310, 524574, 459027, 524406, 524342, 590029, 459019, 524390, 524326, 589997, 524294, 524422, 524358, 590061, 459015, 524382, 524318, 589981, 459031, 524414, 524350, 590045, 459023, 524398, 524334, 590013, 524302, 524430, 524366, 590077, 459008, 524369, 524305, 524569, 459024, 524401, 524337, 590019, 459016, 524385, 524321, 589987, 524289, 524417, 524353, 590051, 459012, 524377, 524313, 589971, 459028, 524409, 524345, 590035, 459020, 524393, 524329, 590003, 524297, 524425, 524361, 590067, 459010, 524373, 524309, 524573, 459026, 524405, 524341, 590027, 459018, 524389, 524325, 589995, 524293, 524421, 524357, 590059, 459014, 524381, 524317, 589979, 459030, 524413, 524349, 590043, 459022, 524397, 524333, 590011, 524301, 524429, 524365, 590075, 459009, 524371, 524307, 524571, 459025, 524403, 524339, 590023, 459017, 524387, 524323, 589991, 524291, 524419, 524355, 590055, 459013, 524379, 524315, 589975, 459029, 524411, 524347, 590039, 459021, 524395, 524331, 590007, 524299, 524427, 524363, 590071, 459011, 524375, 524311, 524575, 459027, 524407, 524343, 590031, 459019, 524391, 524327, 589999, 524295, 524423, 524359, 590063, 459015, 524383, 524319, 589983, 459031, 524415, 524351, 590047, 459023, 524399, 524335, 590015, 524303, 524431, 524367, 590079]), 9]
                      , r = [new Uint32Array([327680, 327696, 327688, 327704, 327684, 327700, 327692, 327708, 327682, 327698, 327690, 327706, 327686, 327702, 327694, 0, 327681, 327697, 327689, 327705, 327685, 327701, 327693, 327709, 327683, 327699, 327691, 327707, 327687, 327703, 327695, 0]), 5];
                    return (a.prototype = Object.create(Lt.prototype)).getBits = function(t) {
                        for (var e, n = this.codeSize, i = this.codeBuf, r = this.bytes, a = this.bytesPos; n < t; )
                            void 0 === (e = r[a++]) && o("Bad encoding in flate stream"),
                            i |= e << n,
                            n += 8;
                        return e = i & (1 << t) - 1,
                        this.codeBuf = i >> t,
                        this.codeSize = n -= t,
                        this.bytesPos = a,
                        e
                    }
                    ,
                    a.prototype.getCode = function(t) {
                        for (var e = t[0], n = t[1], i = this.codeSize, r = this.codeBuf, a = this.bytes, s = this.bytesPos; i < n; ) {
                            var c;
                            void 0 === (c = a[s++]) && o("Bad encoding in flate stream"),
                            r |= c << i,
                            i += 8
                        }
                        var l = e[r & (1 << n) - 1]
                          , u = l >> 16
                          , d = 65535 & l;
                        return (0 == i || i < u || 0 == u) && o("Bad encoding in flate stream"),
                        this.codeBuf = r >> u,
                        this.codeSize = i - u,
                        this.bytesPos = s,
                        d
                    }
                    ,
                    a.prototype.generateHuffmanTable = function(t) {
                        for (var e = t.length, n = 0, i = 0; i < e; ++i)
                            t[i] > n && (n = t[i]);
                        for (var r = 1 << n, o = new Uint32Array(r), a = 1, s = 0, c = 2; a <= n; ++a,
                        s <<= 1,
                        c <<= 1)
                            for (var l = 0; l < e; ++l)
                                if (t[l] == a) {
                                    var u = 0
                                      , d = s;
                                    for (i = 0; i < a; ++i)
                                        u = u << 1 | 1 & d,
                                        d >>= 1;
                                    for (i = u; i < r; i += c)
                                        o[i] = a << 16 | l;
                                    ++s
                                }
                        return [o, n]
                    }
                    ,
                    a.prototype.readBlock = function() {
                        function a(t, e, n, i, r) {
                            for (var o = t.getBits(n) + i; 0 < o--; )
                                e[f++] = r
                        }
                        var s = this.getBits(3);
                        if (1 & s && (this.eof = !0),
                        0 != (s >>= 1)) {
                            var c, l;
                            if (1 == s)
                                c = i,
                                l = r;
                            else if (2 == s) {
                                for (var u = this.getBits(5) + 257, d = this.getBits(5) + 1, p = this.getBits(4) + 4, h = Array(t.length), f = 0; f < p; )
                                    h[t[f++]] = this.getBits(3);
                                for (var m = this.generateHuffmanTable(h), g = 0, v = (f = 0,
                                u + d), y = new Array(v); f < v; ) {
                                    var b = this.getCode(m);
                                    16 == b ? a(this, y, 2, 3, g) : 17 == b ? a(this, y, 3, 3, g = 0) : 18 == b ? a(this, y, 7, 11, g = 0) : y[f++] = g = b
                                }
                                c = this.generateHuffmanTable(y.slice(0, u)),
                                l = this.generateHuffmanTable(y.slice(u, v))
                            } else
                                o("Unknown block type in flate stream");
                            for (var w = (k = this.buffer) ? k.length : 0, S = this.bufferLength; ; ) {
                                var x = this.getCode(c);
                                if (x < 256)
                                    w <= S + 1 && (w = (k = this.ensureBuffer(S + 1)).length),
                                    k[S++] = x;
                                else {
                                    if (256 == x)
                                        return void (this.bufferLength = S);
                                    var M = (x = e[x -= 257]) >> 16;
                                    0 < M && (M = this.getBits(M)),
                                    g = (65535 & x) + M,
                                    x = this.getCode(l),
                                    0 < (M = (x = n[x]) >> 16) && (M = this.getBits(M));
                                    var E = (65535 & x) + M;
                                    w <= S + g && (w = (k = this.ensureBuffer(S + g)).length);
                                    for (var C = 0; C < g; ++C,
                                    ++S)
                                        k[S] = k[S - E]
                                }
                            }
                        } else {
                            var A, T = this.bytes, O = this.bytesPos;
                            void 0 === (A = T[O++]) && o("Bad block header in flate stream");
                            var _ = A;
                            void 0 === (A = T[O++]) && o("Bad block header in flate stream"),
                            _ |= A << 8,
                            void 0 === (A = T[O++]) && o("Bad block header in flate stream");
                            var P = A;
                            void 0 === (A = T[O++]) && o("Bad block header in flate stream"),
                            (P |= A << 8) != (65535 & ~_) && o("Bad uncompressed block length in flate stream"),
                            this.codeBuf = 0,
                            this.codeSize = 0;
                            var I = this.bufferLength
                              , k = this.ensureBuffer(I + _)
                              , D = I + _;
                            this.bufferLength = D;
                            for (var R = I; R < D; ++R) {
                                if (void 0 === (A = T[O++])) {
                                    this.eof = !0;
                                    break
                                }
                                k[R] = A
                            }
                            this.bytesPos = O
                        }
                    }
                    ,
                    a
                }
                function o(t) {
                    throw new Error(t)
                }
                function a(t) {
                    var e = 0
                      , n = t[e++]
                      , i = t[e++];
                    -1 != n && -1 != i || o("Invalid header in flate stream"),
                    8 != (15 & n) && o("Unknown compression method in flate stream"),
                    ((n << 8) + i) % 31 != 0 && o("Bad FCHECK in flate stream"),
                    32 & i && o("FDICT bit set in flate stream"),
                    this.bytes = t,
                    this.bytesPos = 2,
                    this.codeSize = 0,
                    this.codeBuf = 0,
                    Lt.call(this)
                }
            }();
            window.tmp = Nt
        }
        ,
        void 0 === (o = "function" == typeof r ? r.call(e, n, e, t) : r) || (t.exports = o);
        try {
            t.exports = jsPDF
        } catch (t) {}
    }
    ).call(this, n(213))
}
, function(t, e, n) {
    t.exports = n(314)("iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9TtSKVgnYQcchQnSyIijhqFYpQIdQKrTqYXPohNGlIUlwcBdeCgx+LVQcXZ10dXAVB8APEydFJ0UVK/F9SaBHjwXE/3t173L0DhHqZaVbHGKDptplOJsRsbkUMvaILEYQRQp/MLGNWklLwHV/3CPD1Ls6z/M/9OXrVvMWAgEg8wwzTJl4nntq0Dc77xFFWklXic+JRky5I/Mh1xeM3zkWXBZ4ZNTPpOeIosVhsY6WNWcnUiCeJY6qmU76Q9VjlvMVZK1dZ8578heG8vrzEdZpDSGIBi5AgQkEVGyjDRpxWnRQLadpP+PgHXb9ELoVcG2DkmEcFGmTXD/4Hv7u1ChPjXlI4AXS+OM7HMBDaBRo1x/k+dpzGCRB8Bq70lr9SB6Y/Sa+1tNgRENkGLq5bmrIHXO4AA0+GbMquFKQpFArA+xl9Uw7ovwV6Vr3emvs4fQAy1FXqBjg4BEaKlL3m8+7u9t7+PdPs7wf7KnJ3vnrwOAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+QGDwwJB9CewUwAAAOISURBVHja7d1fiFRVHMDxb7ksrpXGItqGhiSku+GjCPkkBFIvJiKRY2LBGviyEOSDECSClImoBNpDQS8JLQQhrC/bH0pwBRF1jQgpF0qSCFNiqW1Jfbg3OHs6uzOOe+feye8HDtx75jd7zt75zfzOndk7C5IkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkqYoeKHn8B4FtwOIWjzsKDPnwl+814HZJbbWHP3sGlunJ+3Tsyuio0Fy+As4UPMYGYKUPezUT4CSwv+AxlpkA1SoBMgFkAsg1wDTmAYcS/XuAq/n2M8D26PbfgN0+vO2fAHOB/kT/e0ECrEjEjDWRAOuBV1r8qvgXcAC4aAKUXwo/AeaXMPZyYK1rgHJ1lvTgAyy0BFTLJFAreIwe4LBrgPomgOOJ/t+D7R8SMb/ew5j/AIMF/15PuQhszDiwpU7M13mTawCZAPpflYCH89Oz2M78XB/gWeD16PZrwKuzPJd+YGPUdxrYG+x/CDwWxRwEhk2A5k/Pnkv0h6dsSxMxYwXMpS8xzmS0v47sE8fQYJUPsCXANYBMALkIrKg/gXcT/eEbPaOJmOsFzOWLRM3/Ntp/H+iO+kZNgHtLgF11Ys7mrWgn8jaTty0BMgHkGmC2zAdOJfo3AZfz7Q1MfTMG4Gfg+VmeyxvAy1Hfl8BAsD8ELIli3gQ+MwGan9+qRH9XsN2diHmkgLk8nhjnSrTfy3/fCOq2BMgEkAkg1wB3bTxaZP3rarA9koi5WcBcPk3U/B+j/beABVHfiAnQvAngSJ2Y7/JWtG/yNpOPLAEyAWQCzJZH83oet6eDmFri9gsFzGVfYpyPo5gLiZhalQ9wRxskaOqCjTnBduqijiIu8uhK/NyHEuPGMZ2+AsgEkAkg1wB37Q/ghUT/WLA9nIgZL2AuH5B9kVXol2i/P7EuOGcCNG+S+h+l/pS3ol3K20yG2+0VwBJgCWg7L5F9Nh86D3ze4nk8AWxO9B8rqASZALkBYE3ioLc6AVaQfb1L7Hg7JYAlwNNAmQAyAeRZQNnWADsaiFuU6Otr8L7LG4iZ0+DP6p2mfytwo859F5t6mXco7x9GvBjMY26J8/j+fi4B10ocO3wb92+KuaC06seg9BJwlOyPKHtaPO55pn6z2C2yK4xqLX5STJB97a0kSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSQB3AL6S4v02CeJyAAAAAElFTkSuQmCC")
}
, function(t, e, n) {
    "use strict";
    e.byteLength = function(t) {
        var e = l(t)
          , n = e[0]
          , i = e[1];
        return 3 * (n + i) / 4 - i
    }
    ,
    e.toByteArray = function(t) {
        var e, n, i = l(t), a = i[0], s = i[1], c = new o(function(t, e, n) {
            return 3 * (e + n) / 4 - n
        }(0, a, s)), u = 0, d = s > 0 ? a - 4 : a;
        for (n = 0; n < d; n += 4)
            e = r[t.charCodeAt(n)] << 18 | r[t.charCodeAt(n + 1)] << 12 | r[t.charCodeAt(n + 2)] << 6 | r[t.charCodeAt(n + 3)],
            c[u++] = e >> 16 & 255,
            c[u++] = e >> 8 & 255,
            c[u++] = 255 & e;
        2 === s && (e = r[t.charCodeAt(n)] << 2 | r[t.charCodeAt(n + 1)] >> 4,
        c[u++] = 255 & e);
        1 === s && (e = r[t.charCodeAt(n)] << 10 | r[t.charCodeAt(n + 1)] << 4 | r[t.charCodeAt(n + 2)] >> 2,
        c[u++] = e >> 8 & 255,
        c[u++] = 255 & e);
        return c
    }
    ,
    e.fromByteArray = function(t) {
        for (var e, n = t.length, r = n % 3, o = [], a = 0, s = n - r; a < s; a += 16383)
            o.push(u(t, a, a + 16383 > s ? s : a + 16383));
        1 === r ? (e = t[n - 1],
        o.push(i[e >> 2] + i[e << 4 & 63] + "==")) : 2 === r && (e = (t[n - 2] << 8) + t[n - 1],
        o.push(i[e >> 10] + i[e >> 4 & 63] + i[e << 2 & 63] + "="));
        return o.join("")
    }
    ;
    for (var i = [], r = [], o = "undefined" != typeof Uint8Array ? Uint8Array : Array, a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", s = 0, c = a.length; s < c; ++s)
        i[s] = a[s],
        r[a.charCodeAt(s)] = s;
    function l(t) {
        var e = t.length;
        if (e % 4 > 0)
            throw new Error("Invalid string. Length must be a multiple of 4");
        var n = t.indexOf("=");
        return -1 === n && (n = e),
        [n, n === e ? 0 : 4 - n % 4]
    }
    function u(t, e, n) {
        for (var r, o, a = [], s = e; s < n; s += 3)
            r = (t[s] << 16 & 16711680) + (t[s + 1] << 8 & 65280) + (255 & t[s + 2]),
            a.push(i[(o = r) >> 18 & 63] + i[o >> 12 & 63] + i[o >> 6 & 63] + i[63 & o]);
        return a.join("")
    }
    r["-".charCodeAt(0)] = 62,
    r["_".charCodeAt(0)] = 63
}
, function(t, e) {
    e.read = function(t, e, n, i, r) {
        var o, a, s = 8 * r - i - 1, c = (1 << s) - 1, l = c >> 1, u = -7, d = n ? r - 1 : 0, p = n ? -1 : 1, h = t[e + d];
        for (d += p,
        o = h & (1 << -u) - 1,
        h >>= -u,
        u += s; u > 0; o = 256 * o + t[e + d],
        d += p,
        u -= 8)
            ;
        for (a = o & (1 << -u) - 1,
        o >>= -u,
        u += i; u > 0; a = 256 * a + t[e + d],
        d += p,
        u -= 8)
            ;
        if (0 === o)
            o = 1 - l;
        else {
            if (o === c)
                return a ? NaN : 1 / 0 * (h ? -1 : 1);
            a += Math.pow(2, i),
            o -= l
        }
        return (h ? -1 : 1) * a * Math.pow(2, o - i)
    }
    ,
    e.write = function(t, e, n, i, r, o) {
        var a, s, c, l = 8 * o - r - 1, u = (1 << l) - 1, d = u >> 1, p = 23 === r ? Math.pow(2, -24) - Math.pow(2, -77) : 0, h = i ? 0 : o - 1, f = i ? 1 : -1, m = e < 0 || 0 === e && 1 / e < 0 ? 1 : 0;
        for (e = Math.abs(e),
        isNaN(e) || e === 1 / 0 ? (s = isNaN(e) ? 1 : 0,
        a = u) : (a = Math.floor(Math.log(e) / Math.LN2),
        e * (c = Math.pow(2, -a)) < 1 && (a--,
        c *= 2),
        (e += a + d >= 1 ? p / c : p * Math.pow(2, 1 - d)) * c >= 2 && (a++,
        c /= 2),
        a + d >= u ? (s = 0,
        a = u) : a + d >= 1 ? (s = (e * c - 1) * Math.pow(2, r),
        a += d) : (s = e * Math.pow(2, d - 1) * Math.pow(2, r),
        a = 0)); r >= 8; t[n + h] = 255 & s,
        h += f,
        s /= 256,
        r -= 8)
            ;
        for (a = a << r | s,
        l += r; l > 0; t[n + h] = 255 & a,
        h += f,
        a /= 256,
        l -= 8)
            ;
        t[n + h - f] |= 128 * m
    }
}
, function(t, e) {
    var n = {}.toString;
    t.exports = Array.isArray || function(t) {
        return "[object Array]" == n.call(t)
    }
}
, function(t, e, n) {
    t.exports = n(314)("iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9TtSKVgnYQcchQnSyIijhqFYpQIdQKrTqYXPohNGlIUlwcBdeCgx+LVQcXZ10dXAVB8APEydFJ0UVK/F9SaBHjwXE/3t173L0DhHqZaVbHGKDptplOJsRsbkUMvaILEYQRQp/MLGNWklLwHV/3CPD1Ls6z/M/9OXrVvMWAgEg8wwzTJl4nntq0Dc77xFFWklXic+JRky5I/Mh1xeM3zkWXBZ4ZNTPpOeIosVhsY6WNWcnUiCeJY6qmU76Q9VjlvMVZK1dZ8578heG8vrzEdZpDSGIBi5AgQkEVGyjDRpxWnRQLadpP+PgHXb9ELoVcG2DkmEcFGmTXD/4Hv7u1ChPjXlI4AXS+OM7HMBDaBRo1x/k+dpzGCRB8Bq70lr9SB6Y/Sa+1tNgRENkGLq5bmrIHXO4AA0+GbMquFKQpFArA+xl9Uw7ovwV6Vr3emvs4fQAy1FXqBjg4BEaKlL3m8+7u9t7+PdPs7wf7KnJ3vnrwOAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+QGDwwJNG9OoFoAAAatSURBVHja7Z1bbBVFGMd/gFzKtYiAKCqgCBQUbEEjEFFTjYlBHwz6pEaNmiBRn+QRjUYxEWO9oFWjBoxRiJFEY0xQn0AJIEiQm3iPxijIvZRLKT7snPB1mTlnT9vT7jn7/yXngezudOb7vt2Z+eY/AwghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIdJLr4y3/0LgXmAEsFvhkA16APXACuAEcNr9tgLz3HVRgVQDDwHbjNN9vy0KhMpiJrAMaPY4uxVYCxzxXPsGuEnmK08Gubd9c+AtPwA0AlPc/ecBi4Emz71rXZchyoCJzpH7Ao7f6AJjQOD54e75o55n1wA3yMTpo6/rs1cHnN7suoDaIsoc4QKhORAIc2T27udS56R/A47fCSwEzu3A37gIaACOecpfDcyQG7qWnmYK1+JxynF3rb6TR/GXuDHDyUAg1Mk1peV89zb/Fnjb/wSedJ/uUjImEAitwKfAVXJV5zLbk7DJ/U65t28eXZ/RHOsCoSUQCFPluo5xF7Ar8Lb/DTwDXJyCek4GVjrH2zq2AMuB8XJl8QwL9LVfA3cCvVNY56nAKk8gnATeBcbJrcUNuE4Hpl83przudcBnnrqfAN5ybRMJBny2T/V9CWalvA3XAF8EZilLgdFyc/4kTM5ge/IkZFYDV6e8Lde6QaEvEBqJlqOFZwyQM9TehAmZtM/DZwFf5gmEUXL7GYYaA+2LXRsHvBeYfq0EalLetnqixaV4IDQB8+X6iCG0XbXzMQH4wOUC4rmB91M+/eoFLAIOcvaahTQIwEBjlMMF7p0CfByYfr1DlLlL0+B2IfA7YTHKOXI/9I99GpNQGxhsHQYu7+b2FMpmtioA2tLXGORYwmcuA17Ar+x5qhvaMJhId7CVcDZzscsL2MDoLfdHRrAJlHx96e1uvn0qz2f1wQJljCFaZewMat2o/ghhQco9MUcfN9f7yP2RU2xOPc5I15f+GjDyT8AG8+/7PWXkJGM73T07nGN6tvOLlU+QctAFxRWB5xUAHqwBc9Q5Qx6l8Mrg2+baA7Fp5EueEXjutwm4NWEdc4KUPYGytgOPuUFtPmxuo69cH2E/6Q8D3weM/I9zwtjY82/GuoA5wCcFuoq4ENSn/yskSDnGGUFKUhQAHloKOCgn7qwKPN9o7v05UMaP7g0dTSQm8X0V1gDXJeh2coKU4e1oq01z98uy0/uQTNw5LUFZbwTKaAU+B272JF1GEk43n6R0ghTbpVVl0fGDgacJizu3AQvcfUl53fNpXkYk4CjEJPfmt+bpdp6l85Z27V6E/lkMgOX4189XANe3s8ylpqxVJFMGT3RfgMPt7Hbai50yDshiAKzzGHs9HRN/vGbKmt+BbucQkZCjlBo/G3ADFQBnL/XObEeZr5oyHvFcHwM8l6fb2eoCZ1AXtP+Q+buDshgA640BPgwMwordjfOKeXaBZwrnG9SVak+BAqAANms3ncKbMJLsxnnZPPOEm+6FpoN/uVxCd8m0FACxALCf6XyBMD1PmQ2xAWW+KVx3r8DZ/MPgLAbARmMAn7QrtAkjFwh202c/opx+qG/f78qalKL2HzD1G5LFAPjOGCDfDt4a4CP8KqAVrt8P5fi/dYGRxkzbflPP6iwGwCZjgCR762pcUqdQXj+XOUz7fr3MB4A9xWNaEc+FduPsAB4tI2PawyyGKgCKp45ICLrMJY/KTVi517R/mAIgO8wg2jfYkvUAsGv9lb6tugq4Lzb1tQLYTOoBthgjXFmhbRwPLAH+CwxYNwC3kFGscnZKBbWrFOohBUAZkES0upDobEIB/GCMM7mM21GMaFUY7Nm9NWVW95y8vFjRqjBsNwabVCZ1nkCyE0mr5N7C7DCGm5jievYC5rpPuU8vWIxoVZRRAIxyg7Y/Am/7Ljp+Immm2WmMOSFF9cq3q7eFaDdyV6uHKj4ApndzXaqBx2N1im8AWQRcILeVpgtoAl4kOkyhK6klUv/6/r+AVuAr4A60f78kLMGfFy91IPQD7iYSi4T+U4mGlA9MK4IewG20lYaVMhDGAc8T3tW7mWhD6QC5puupp61M3ObNGzvQ9xZzzLyooECoJpKE/0Ln7+oVKQ6EpHl5DeoqKBBykvBNhCXhDejk7rIeLM4NDBaP0lZda3/rSK8kXHQgEDYQloQ3EZ0TVCtzZatr2E2Ulx8m0yR/myqhDbM5c7jTablVCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIUSF8T8g6s63xw5AgAAAAABJRU5ErkJggg==")
}
, function(t, e, n) {
    t.exports = n(314)("iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9TtSKVgnYQcchQnSyIijhqFYpQIdQKrTqYXPohNGlIUlwcBdeCgx+LVQcXZ10dXAVB8APEydFJ0UVK/F9SaBHjwXE/3t173L0DhHqZaVbHGKDptplOJsRsbkUMvaILEYQRQp/MLGNWklLwHV/3CPD1Ls6z/M/9OXrVvMWAgEg8wwzTJl4nntq0Dc77xFFWklXic+JRky5I/Mh1xeM3zkWXBZ4ZNTPpOeIosVhsY6WNWcnUiCeJY6qmU76Q9VjlvMVZK1dZ8578heG8vrzEdZpDSGIBi5AgQkEVGyjDRpxWnRQLadpP+PgHXb9ELoVcG2DkmEcFGmTXD/4Hv7u1ChPjXlI4AXS+OM7HMBDaBRo1x/k+dpzGCRB8Bq70lr9SB6Y/Sa+1tNgRENkGLq5bmrIHXO4AA0+GbMquFKQpFArA+xl9Uw7ovwV6Vr3emvs4fQAy1FXqBjg4BEaKlL3m8+7u9t7+PdPs7wf7KnJ3vnrwOAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+QGDwwJIpuaFQsAAAe9SURBVHja7Zx5bFRVFIe/FqGl7IsiAkrdWN0NRllUIooRNC5EiQrGfQ3uuMSoUSNq3EGDRhOJJkqixiBGgxpDXEFEFAQVxA2hiOxCKdj6xzsTxnrPdKbzOp3O/L5k/pnMvPveWe4995xzHwghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQoi8o5VEEDuHARcAO4DVEkdxUAqMBeYAtUCdfeaYQYgCZS9gMvBLktLrf/4BZgIHSlyFwxBgBlAdUPgO4NN6M0Hi+2eAfSS+lkkbYJxN6yFPXwNMAfrY7web54cMZDrQQyKNJ4gdA7xugl0KTAD2iHGMXsB9puCQ4j8BzgNaO/8fCnwU+N8m4B6go9SYOf3N2/5wlLIcuCSFUtJhhHlwTeD624EXgSMzuN7JwLzAtdYBtwBtpdbUdAQuNY+rS/PzM3AlUJbmGBU2xtcprjcZ6N7IZygBzgS+DVx7FXC1LTUiSWAnAC8BWx2l/AE8ZN54p3lU/d/8BlwLlDvjVAIPA38F/lsLfGCKiytvUmq5guWB8X6yZayoczR9gLuAFY7Sd9i6Pyaw3rcHbgWqHGO5wTy9BBgFvGVbtfq/3QI8CwxqwudsDVxhBlp//EXFFiiWA+OB9xyFJIRyPbBnGtdrB9zoxAlVFjCGxvjBxuiUw1luDLAhcC+XFYPijwamAesdhawHpgJHNfL6bYHrHC9LTta8A5xq03Mu6A7cbAbnxRt9C1nxbYEPUyjkXdtelcc0XhlwlQk2Mc5G4HFym6UbDrzsJJHqbMs4PoPAtcUywhHA1KRkSlMldMYDEy1eyAWdbRZanGKWewIYUExrfgXwWUAY24Angd4F8IxDzNtrHMV/DlxUzDmAEqIq2nwn0p9ByyuilNs2boGj9C1EqeAjtMv/LyeZR9QXWI0ZwsF5fv8DiLKT6xtITlXZcqCEj8MwS7x4ZdX+eXSvZaQuEFUTVQZDO5BfgcuJt25RcIYwyzGEWWSWh4+bg83b/3QU/z1Ryrib/b7UDCWU2FpmS0apVB5mqGMItfb90Tm6j+RycK0Ts8y0pawkxYwxiXCWciFwmtT9f/qYN61Ksa7OAY5povF7E5Vtq/Arj5OJuoPSpZ39JxQvfAaMLHalt7ft0VzH26oJp4s/Bk6MYfxS8+SZwK7AOLvM6MaRXdGmC/AA4ULXbIqsV6DE1v0XgM0pIuhHiQo0g213sMsxhLGNuIee5pk/O+OvsrV/35iffbgzG1xSDIrvBdxugVNI6DuJKnZnEG7wGGiGsLORhpDs7TudoDPh7XFG7K3tmh84s9xGmrYS2ezskcKD64AlRMWSdEuilZZgCWXdvjJhJwdnPczbvZLzavP2ypifu69N+6udcVcAt2UYU7RIhjsCmJFlQFcJPGdRef1rf2l7b6/Vq9a8/RyyayerTyvgdKKK4z/OLPcmMLqYtoOdCXfErCHqkcu2UNOHqKawjYZbxzbY7BH3lNsLuD9FdvA34G77XVFSZh4ZypSts+1X5yzH2Ieo5Pt3YIy5wPnEW3pNjilqchhTtGjaWDYsNCNstrW4a5Zj9CDqHVwCPNUE3t7FkjzLG5htfgzEIyIpMp5AuEtmi03pe+fZPR9ly8e2FNN8aJ8/j6gnUTjT6DjCfXtbzRB6NuP9dbKl6xtH6RvNKAYnJbYm2/ehgyXHS+W+IYy1bVwoGzg9xwFUwtu9FvXELqPC+X934BFntngbOFwqD3vbRPzDGonGkQOaaPwOptSFzvibzCgyUd6eFtdUEy5wHSrPjyLpV4iOYYWaRLzGkYNiuoeBttRsacDbs9muVhIdetkVyAtMJ76G2BbD/sC9+Oftq4HXLGEyinBPYcIQ+jVi/HJSN3hsZ3fJN06GET4XMKEYlF4BXEjUIl7rCH4B0dGuro7w3sfvIEqn07afTcnrnPGXWhDXNeZnP9ZmgO3O0nZMISu+BHjQ1tCQ0P8kapU+NAMvyqSDqKEGj2oabvBoDB2JDoEuSrGDmEp+tb41Ccc5ApgNnE3jmyaHEh0qCeX53wBOsUg8VTvXTexu54qLI4lqFF5MMZ/oZHK7Ylnv9wLWBgSxmOjgRranY4eY59fScC2gxrx9ZMzeXgFcTPi9AImcxvM0/thbQRjBI45XJJols82XH2GeHzKElcAdxJ9dHAQ87SR+6iyBdA25O4Ca93QjKvxscJQ0iewLNocAr1qg9xbxHwQta6aYoqDogN8s+YsZQr4dozrQdhBr8Y+bZ/NWkaKkvSk71DWzxgRa0Yz318o82Ysxdsjb46GdGULoJQ9ryf1btnqZ8f3qePvvNhv0luriJdE48ruTL7iH7BtHPDJpGtW7l5uYNmYIIQ/cZN7XJaax9jZvX4n/cqopwH5SS/MYgtc4kk0HUQnpt3O1lhqan0QH0TL8DqJ0Gkc628yyBP9AyhSiYpXIQxIdRN/hdxCFXtLcUDtXouSrt3i2IEM4l/CbOLexuxl0kmMsdUQvi3yMIijGFLohnEW4lcz7fGrLSbnEVzgk3kH0BX471zTUglUUjCY6LJpoMLmM3L0mTuQRHSQCIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIkdf8C/JUG2xUoYiqAAAAAElFTkSuQmCC")
}
, function(t, e, n) {
    t.exports = n(314)(" ")
}
, function(t, e, n) {
    t.exports = n.p + "c963f7b7c5a8b68495d347a8e6c74433.route_start.png"
}
, function(t, e, n) {
    t.exports = n.p + "cf98f0467d25a11595abd53403eaaf00.route_end.png"
}
, function(t, e, n) {
    t.exports = n.p + "cf98f0467d25a11595abd53403eaaf00.location_marker.png"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(64)
      , a = n(222)
      , s = function(t) {
        function e() {
            var e = t.call(this, "pointCloudRenderingChanged") || this;
            return e.data.mode = a.RenderingMode[a.RenderingMode.PointCloud],
            e
        }
        return r(e, t),
        e.prototype.isEnabled = function(t) {
            return this.withData("enabled", t),
            this
        }
        ,
        e
    }(o.TrackingEvent);
    e.PointCloudRenderingModeChangedEvent = s;
    var c = function(t) {
        function e() {
            var e = t.call(this, "panoramaRenderingChanged") || this;
            return e.data.mode = a.RenderingMode[a.RenderingMode.Panorama],
            e
        }
        return r(e, t),
        e.prototype.isEnabled = function(t) {
            return this.withData("enabled", t),
            this
        }
        ,
        e
    }(o.TrackingEvent);
    e.PanoramaRenderingModeChangedEvent = c
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(64)
      , a = n(222)
      , s = function(t) {
        function e() {
            return t.call(this, "sessionStarted") || this
        }
        return r(e, t),
        e.prototype.withRenderingMode = function(t, e) {
            return this.withData("mode", a.RenderingMode[this.getRenderingMode(t, e)]),
            this
        }
        ,
        e.prototype.getRenderingMode = function(t, e) {
            return t && !e ? a.RenderingMode.Panorama : e && !t ? a.RenderingMode.PointCloud : t && e ? a.RenderingMode.PanoramaAndPointCloud : a.RenderingMode.None
        }
        ,
        e
    }(o.TrackingEvent);
    e.SessionStartedEvent = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(20)
      , a = n(1122)
      , s = n(396)
      , c = n(4)
      , l = n(52)
      , u = n(55)
      , d = n(199)
      , p = function(t) {
        function e(e, n, i, r, o, s) {
            var l = t.call(this) || this;
            l.factory = e,
            l.materialConfig = n,
            l.entity = i,
            l.path = r,
            l.holes = o,
            l.meshName = s,
            l.dragBottom = !1,
            l.dragTop = !1;
            for (var d = new c.Shape(l.path), p = 0, h = l.holes; p < h.length; p++) {
                var f = h[p];
                f.length > 1 && d.holes.push(new c.Path(f))
            }
            var m = {
                depth: void 0 !== i.zMin && void 0 !== i.zMax ? Math.abs(i.zMax - i.zMin) : 0,
                bevelEnabled: !1,
                UVGenerator: new a.MetricUVGenerator
            };
            return l.geometry = new c.ExtrudeGeometry(d,m),
            l.material = i.selected ? l.materialConfig.highlightMaterials[i.type] : l.materialConfig.materials[i.type],
            void 0 === i.zMin && i.children[0] ? l.position.z = i.children[0].zMin : l.position.z = i.zMin ? i.zMin : 0,
            l.name = l.meshName,
            i.selected ? l.renderOrder = 5 : l.renderOrder = i.type === u.SiteModelType.FLOOR ? 4 : 3,
            l
        }
        return r(e, t),
        e.prototype.onMouseMove = function(t, e) {
            if (this.entity.selected && (e.name === l.SplitViewportName.EAST_WEST_VIEW || e.name === l.SplitViewportName.NORTH_SOUTH_VIEW)) {
                var n = Math.abs(this.entity.zMax - this.entity.zMin)
                  , i = e.unprojectScreenCoordinates(t.x, t.y, 1);
                i.z < this.entity.zMin + n / 3 || i.z > this.entity.zMax - n / 3 ? "default" !== document.body.style.cursor && "" !== document.body.style.cursor || (document.body.style.cursor = "row-resize") : "row-resize" === document.body.style.cursor && (document.body.style.cursor = "default")
            }
        }
        ,
        e.prototype.onMouseOut = function(t, e) {
            "row-resize" === document.body.style.cursor && (document.body.style.cursor = "default")
        }
        ,
        e.prototype.onDragStart = function(t, e) {
            if (this.entity.selected && this.factory.ModeService.isSiteModelEditorMode() && (e.name === l.SplitViewportName.EAST_WEST_VIEW || e.name === l.SplitViewportName.NORTH_SOUTH_VIEW)) {
                this.factory.SiteModelEditorService.isDraggingHeight = !0;
                var n = e.unprojectScreenCoordinates(t.x, t.y, 1);
                return this.dragStartZ = n.z,
                this.dragStartHeight = Math.abs(this.entity.zMax - this.entity.zMin),
                n.z < this.entity.zMin + this.dragStartHeight / 3 ? this.dragBottom = !0 : n.z > this.entity.zMax - this.dragStartHeight / 3 && (this.dragTop = !0),
                !0
            }
            return !1
        }
        ,
        e.prototype.onDrag = function(t, e) {
            if (this.entity.selected) {
                var n = e.unprojectScreenCoordinates(t.x, t.y, 1)
                  , i = this.dragStartZ - n.z
                  , r = Math.floor(100 * (this.dragStartHeight + i)) / 100
                  , a = Math.floor(100 * (this.dragStartHeight - i)) / 100;
                this.dragBottom && r > d.SiteModelEditorService.MIN_FLOOR_HEIGHT && r < this.factory.SiteModelEditorService.checkMaxHeight(this.entity, !0) && (this.entity.height = r,
                this.factory.SiteModelEditorService.updateBottom(this.entity, !1)),
                this.dragTop && a > d.SiteModelEditorService.MIN_FLOOR_HEIGHT && a < this.factory.SiteModelEditorService.checkMaxHeight(this.entity, !1) && (this.entity.height = a,
                this.factory.SiteModelEditorService.updateTop(this.entity, !1)),
                document.body.style.cursor = "row-resize",
                o.invalidateAngular(),
                this.factory.SiteModelEditorService.redrawSiteModel.emit(!0)
            }
        }
        ,
        e.prototype.onDragEnd = function() {
            this.factory.SiteModelEditorService.markAsChanged(this.entity),
            this.factory.SiteModelEditorService.isDraggingHeight = this.dragBottom = this.dragTop = !1
        }
        ,
        e.prototype.onContextMenu = function() {
            var t = this;
            if (!this.factory.SiteModelEditorService.isDrawingMode() && this.entity.selected)
                return [{
                    name: this.factory.gettextCatalog.getString("Remove this entity"),
                    icon: "delete",
                    callback: function() {
                        s.showDeleteConfirmationModal("#delete-confirmation-layer-modal", (function() {
                            return t.factory.SiteModelEditorService.deleteEntity(t.entity)
                        }
                        ), t.factory.gettextCatalog.getString("This entity and all its sub-entities will be deleted."))
                    }
                }]
        }
        ,
        e
    }(c.Mesh);
    e.SiteModelEntityMesh = p
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(4)
      , r = function() {
        function t() {
            this.a = new i.Vector3,
            this.b = new i.Vector3,
            this.c = new i.Vector3,
            this.d = new i.Vector3
        }
        return t.prototype.generateTopUV = function(t, e, n, r, o) {
            return [new i.Vector2(e[3 * n],e[3 * n + 1]), new i.Vector2(e[3 * r],e[3 * r + 1]), new i.Vector2(e[3 * o],e[3 * o + 1])]
        }
        ,
        t.prototype.generateSideWallUV = function(t, e, n, r, o, a) {
            var s = e;
            this.a.set(s[3 * n], s[3 * n + 1], s[3 * n + 2]),
            this.b.set(s[3 * r], s[3 * r + 1], s[3 * r + 2]),
            this.c.set(s[3 * o], s[3 * o + 1], s[3 * o + 2]),
            this.d.set(s[3 * a], s[3 * a + 1], s[3 * a + 2]);
            var c = this.a.x !== this.b.x
              , l = c ? this.b : this.d
              , u = this.a.distanceTo(l)
              , d = l.distanceTo(this.c);
            return [new i.Vector2(this.a.x,0), c ? new i.Vector2(this.a.x + u,0) : new i.Vector2(this.a.x,d), new i.Vector2(this.a.x + u,d), c ? new i.Vector2(this.a.x,d) : new i.Vector2(this.a.x + u,0)]
        }
        ,
        t
    }();
    e.MetricUVGenerator = r
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(396)
      , a = n(4)
      , s = n(52)
      , c = function(t) {
        function e(e, n, i, r, o, a, s, c) {
            var l = t.call(this) || this;
            l.factory = e,
            l.materialConfig = n,
            l.point = i,
            l.points = r,
            l.entity = o,
            l.idx = a,
            l.handleGeometry = s,
            l.siteModelSnapper = c;
            var u = i === l.factory.SiteModelEditorService.lastSelectedPoint || i === l.factory.SiteModelEditorService.lastTempPoint
              , d = l.materialConfig.handleMaterial;
            return u && (d = l.materialConfig.selectedHandleMaterial),
            (i.virtual_ || o.drawing) && (d = l.materialConfig.virtualHandleMaterial),
            i === l.factory.SiteModelEditorService.lastClosingPoint && (d = l.materialConfig.snappedHandleMaterial),
            l.geometry = l.handleGeometry,
            l.material = d,
            l.position.x = i.x,
            l.position.y = i.y,
            void 0 === o.zMin && o.children[0] ? l.position.z = o.children[0].zMin : l.position.z = o.zMin ? o.zMin : 0,
            l.updateMatrix(),
            l.renderOrder = 6,
            l
        }
        return r(e, t),
        e.prototype.onClick = function(t) {
            return this.factory.SiteModelEditorService.selectPoint(this.points, this.point),
            !1
        }
        ,
        e.prototype.onDragStart = function(t, e) {
            return !(!this.factory.ModeService.isSiteModelEditorMode() || e.name !== s.SplitViewportName.TOP_VIEW) && (this.points.dragging = !0,
            this.factory.SiteModelEditorService.isDragging = !0,
            !0)
        }
        ,
        e.prototype.onDrag = function(t, e) {
            this.point.virtual_ && (this.points.splice(this.idx, 0, this.point),
            this.point.virtual_ = !1),
            this.factory.SiteModelEditorService.selectEntity(this.entity, !0),
            this.factory.SiteModelEditorService.selectPoint(this.points, this.point);
            var n = this.siteModelSnapper.getLocation(t, e);
            n && (this.point.x = n.x,
            this.point.y = n.y,
            this.points.indexOf(this.point) === this.points.length - 1 && (this.points[0].x = n.x,
            this.points[0].y = n.y),
            this.factory.SiteModelEditorService.redrawSiteModel.emit(!0))
        }
        ,
        e.prototype.onDragEnd = function() {
            this.factory.SiteModelEditorService.markAsChanged(this.entity),
            this.points.dragging = !1,
            this.factory.SiteModelEditorService.isDragging = !1
        }
        ,
        e.prototype.onMouseMove = function(t, e) {
            ("default" === document.body.style.cursor || "" === document.body.style.cursor || this.factory.SiteModelEditorService.isDragging && !this.entity.drawing) && (document.body.style.cursor = "move")
        }
        ,
        e.prototype.onMouseOver = function(t, e) {
            ("default" === document.body.style.cursor || "" === document.body.style.cursor || this.factory.SiteModelEditorService.isDragging && !this.entity.drawing) && (document.body.style.cursor = "move")
        }
        ,
        e.prototype.onMouseOut = function(t, e) {
            "move" !== document.body.style.cursor || this.factory.SiteModelEditorService.isDragging || (document.body.style.cursor = "default")
        }
        ,
        e.prototype.onContextMenu = function() {
            var t = this;
            if (this.factory.SiteModelEditorService.isDrawingMode())
                return [{
                    name: this.factory.gettextCatalog.getString("Remove last placed point"),
                    icon: "delete",
                    callback: function() {
                        t.factory.SiteModelEditorService.removeLastPointFromCurrentEntity()
                    }
                }, {
                    name: this.factory.gettextCatalog.getString("Quit drawing mode"),
                    icon: "quit",
                    callback: function() {
                        t.factory.SiteModelEditorService.cancelDrawingMode()
                    }
                }];
            var e = [];
            return this.entity.polygon.holes.indexOf(this.points) >= 0 && e.push({
                name: this.factory.gettextCatalog.getString("Remove this hole"),
                icon: "delete",
                callback: function() {
                    o.showDeleteConfirmationModal("#delete-confirmation-layer-modal", (function() {
                        t.points.length = 0,
                        t.factory.SiteModelEditorService.markAsChanged(t.entity),
                        t.factory.SiteModelEditorService.redrawSiteModel.emit()
                    }
                    ), t.factory.gettextCatalog.getString("This hole will be deleted."))
                }
            }),
            this.point.virtual_ || e.push({
                name: this.factory.gettextCatalog.getString("Remove this point"),
                icon: "delete",
                callback: function() {
                    o.showDeleteConfirmationModal("#delete-confirmation-layer-modal", (function() {
                        t.factory.SiteModelEditorService.selectPoint(t.points, t.point),
                        t.factory.SiteModelEditorService.removeSelectedPoint()
                    }
                    ), t.factory.gettextCatalog.getString("This point will be deleted."))
                }
            }),
            e
        }
        ,
        e
    }(a.Mesh);
    e.SiteModelHandleMesh = c
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t(t, e, n, i, r, o, a) {
            this.factory = t,
            this.view = e,
            this.raycaster = n,
            this.rectLineGroup = i,
            this.snappingLineGroup = r,
            this.bottomLineMeshName = o,
            this.rectLineMeshName = a
        }
        return t.prototype.getLocation = function(e, n) {
            var i;
            if (!this.factory.SiteModelEditorService.snappingEnabled && !this.factory.SiteModelEditorService.rectangleSnapping) {
                var r = this.view.getPositionOnGroundPlane(e.x, e.y, void 0, n);
                return this.isLocationValid(r) ? r : void 0
            }
            var o = n.normalizeCoordinates(e.x, e.y, 0);
            this.raycaster.setFromCamera(o, n.camera);
            var a = n.camera;
            this.raycaster.params.Line.threshold = (a.right - a.left) * t.SNAPPING_DISTANCE / n.screenWidth;
            var s = [];
            this.factory.SiteModelEditorService.rectangleSnapping && (s = s.concat(this.rectLineGroup.children)),
            this.factory.SiteModelEditorService.snappingEnabled && (s = s.concat(this.snappingLineGroup.children));
            var c = this.raycaster.intersectObjects(s, !0, void 0, !1);
            if (c.length > 1 && c[0].object === c[1].object)
                i = this.findClosestVertex(c);
            else if (c.length > 1 && c[0].object !== c[1].object && c[0].object.name === this.rectLineMeshName && c[1].object.name === this.rectLineMeshName)
                i = this.findCloseIntersection(c);
            else if (c.length > 0)
                i = this.findClosestPoint(c);
            else if (i = this.view.getPositionOnGroundPlane(e.x, e.y, void 0, n),
            !this.isLocationValid(i))
                return;
            return i
        }
        ,
        t.prototype.findClosestVertex = function(t) {
            for (var e, n = 1 / 0, i = 0, r = t[0].object.geometry.vertices; i < r.length; i++) {
                var o = r[i];
                o.distanceTo(t[0].point) < n && this.isLocationValid(o) && (e = o,
                n = o.distanceTo(t[0].point))
            }
            return e
        }
        ,
        t.prototype.findCloseIntersection = function(t) {
            var e = t[0].object.geometry.vertices[0]
              , n = t[0].object.geometry.vertices[1].clone().sub(t[0].object.geometry.vertices[0]).normalize()
              , i = t[1].object.geometry.vertices[1].clone().sub(t[1].object.geometry.vertices[0]).normalize()
              , r = n.dot(i)
              , o = [];
            return Math.abs(r) < 1 - 1e-10 && (this.raycaster.set(e, n),
            o = this.raycaster.intersectObjects([t[1].object], !0, void 0, !1)),
            o.length && o[0].point.distanceTo(t[0].point) < this.raycaster.params.Line.threshold ? o[0].point : t[0].point
        }
        ,
        t.prototype.findClosestPoint = function(t) {
            var e = this
              , n = t.find((function(t) {
                return t.object.name === e.bottomLineMeshName
            }
            ))
              , i = n ? n.point : t[0].point;
            if (n || this.isLocationValid(i))
                return i
        }
        ,
        t.prototype.isLocationValid = function(t) {
            return !(this.factory.SiteModelEditorService.lastSelectedEntity.parent && !this.factory.SiteModelService.pointInEntity(t, this.factory.SiteModelEditorService.lastSelectedEntity.parent)) && !(this.factory.SiteModelEditorService.isCuttingMode() && !this.factory.SiteModelService.pointInEntity(t, this.factory.SiteModelEditorService.lastSelectedEntity))
        }
        ,
        t.SNAPPING_DISTANCE = 10,
        t
    }();
    e.SiteModelSnapper = i
}
, function(t, e, n) {
    t.exports = n.p + "14e42f83c89495bc6eb91ae0af686e41.gridmap.png"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    ), o = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
    , a = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var s = n(80)
      , c = n(4)
      , l = n(16)
      , u = n(8)
      , d = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e, n, i) || this;
            return o.params = i,
            o.factory = r,
            o.loadingInProgress = 0,
            o.loadComplete = new l.Signal,
            o.maps = [],
            o.frustum = new c.Frustum,
            o.frustumMatrix = new c.Matrix4,
            o.tileColor = i && i.tileColor ? i.tileColor : new c.Color(16777215),
            o.sceneGroup.name = "MapLayer",
            o.factory.GeoTransformationService.offsetChanged.connect((function() {
                return o.updateProjection()
            }
            )),
            o
        }
        return r(e, t),
        e.prototype.visibilityChanged = function() {
            if (!this.visible)
                for (var t = 0, e = this.maps; t < e.length; t++) {
                    e[t].removeFromSceneGroup(this.sceneGroup)
                }
        }
        ,
        e.prototype.onAfterRenderViewport = function(e) {
            var n = this;
            t.prototype.onAfterRenderViewport.call(this, e),
            this.isVisibleInViewport(e) && (this.updateTimer || this.loadingInProgress || (this.updateTimer = window.setTimeout((function() {
                n.update(e).then((function(t) {
                    t && n.loadComplete.emit(!0)
                }
                )).catch(u.handleWarning)
            }
            ), 100)))
        }
        ,
        e.prototype.addMap = function(t) {
            t.updateObjectGroup(),
            this.maps.push(t),
            this.view.invalidateScene()
        }
        ,
        e.prototype.removeMap = function(t) {
            var e = this.maps.indexOf(t);
            e >= 0 && (t.removeFromSceneGroup(this.sceneGroup),
            this.maps.splice(e, 1),
            this.view.invalidateScene())
        }
        ,
        e.prototype.update = function(t) {
            return o(this, void 0, void 0, (function() {
                var e, n, i, r, o, s;
                return a(this, (function(a) {
                    for (this.updateTimer = void 0,
                    e = t.camera,
                    n = e.projectionMatrix.clone(),
                    1.5,
                    n.elements[0] /= 1.5,
                    n.elements[5] /= 1.5,
                    this.frustumMatrix.multiplyMatrices(n, e.matrixWorldInverse),
                    this.frustum.setFromProjectionMatrix(this.frustumMatrix),
                    this.frustum.planes[4].setComponents(0, 0, 0, 0),
                    this.frustum.planes[5].setComponents(0, 0, 0, 0),
                    i = !0,
                    r = 0,
                    o = this.maps; r < o.length; r++)
                        s = o[r],
                        i = s.update(t, this.frustum, this.sceneGroup) && i;
                    return [2, i]
                }
                ))
            }
            ))
        }
        ,
        e.prototype.getAttributions = function() {
            for (var t = {}, e = 0, n = this.maps; e < n.length; e++) {
                n[e].fillAttributions(t)
            }
            return t
        }
        ,
        e.prototype.updateProjection = function() {
            for (var t = 0, e = this.maps; t < e.length; t++) {
                var n = e[t];
                n.clearProjection(),
                n.updateObjectGroup()
            }
        }
        ,
        e
    }(s.SceneLayer);
    e.MapLayerBase = d
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(547)
      , a = n(4)
      , s = function(t) {
        function e(e, n, i, r, o, s) {
            var c = t.call(this, e, r, o) || this;
            return c.baseUrl = n,
            c.attribution = s,
            c.tileSizePx = 256,
            c.mapSizeM = 40075017,
            c.maxDepth = i,
            c.projection = e.getReferenceSystem("EPSG:3857"),
            c.bias = .5,
            c.textureLoader = new a.TextureLoader,
            c.textureLoader.crossOrigin = "anonymous",
            c
        }
        return r(e, t),
        e.prototype.getTileUrl = function(t, e, n) {
            return this.baseUrl.replace(/\${z}/, t.toString(10)).replace(/\${x}/, e.toString(10)).replace(/\${y}/, n.toString(10))
        }
        ,
        e.prototype.fillAttributions = function(t) {
            t[this.attribution] = {
                score: 50
            }
        }
        ,
        e
    }(o.TiledMapBase);
    e.TiledMapOpenStreetMap = s
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(1129)
      , r = n(4)
      , o = n(157)
      , a = function() {
        function t(t, e, n) {
            this.mapLayer = t,
            this.objectGroup = e,
            this.tileColor = n,
            this.meshAdded = !1,
            this.textureLoaded = !1,
            this.children = []
        }
        return t.prototype.update = function(e, n, i, r, o, a, s) {
            return !!t.doesNotContainTilesToBeDisplayed(e) || (0 === i ? this.updateTile(e, r, o, a) : this.updateSubTiles(e, n, i, r, o, a, s))
        }
        ,
        t.doesNotContainTilesToBeDisplayed = function(t) {
            return t.tilePresenceMap && t.tilePresenceMap.empty
        }
        ,
        t.prototype.updateTile = function(t, e, n, i) {
            return this.mesh || this.createTileObject(t, e, n, i),
            this.meshAdded || (this.objectGroup.add(this.mesh),
            this.meshAdded = !0),
            this.textureLoaded && this.removeChildren(),
            this.textureLoaded
        }
        ,
        t.prototype.updateSubTiles = function(e, n, r, o, a, s, c) {
            for (var l = !0, u = [-.25 * o, .25 * o, -.25 * o, .25 * o], d = [.25 * o, .25 * o, -.25 * o, -.25 * o], p = 0; p < 4; ++p) {
                var h = c + p.toString(10);
                if (!e.tilePresenceMap || e.tilePresenceMap[h]) {
                    var f = a + u[p]
                      , m = s + d[p];
                    i.sharedData.tempVector.set(f, m, 0),
                    e.isTileVisible(i.sharedData.tempVector, .5 * o, n) ? (this.children[p] || (this.children[p] = new t(this.mapLayer,this.objectGroup,this.tileColor)),
                    l = this.children[p].update(e, n, r - 1, .5 * o, f, m, h) && l) : this.children[p] && (this.children[p].remove(),
                    delete this.children[p])
                }
            }
            return l && this.removeObject3D(),
            l
        }
        ,
        t.prototype.createTileObject = function(t, e, n, a) {
            var s = this;
            this.mesh = this.createMesh(t.transformMapToLocal, e, n, a),
            this.textureLoaded = !1;
            var c = t.mapSizeM / e
              , l = Math.log(c) / Math.log(2)
              , u = n / e + .5 * (c - 1)
              , d = -a / e + .5 * (c - 1)
              , p = t.getTileUrl(Math.round(l), Math.round(u), Math.round(d));
            this.mesh.renderOrder = -(1e6 - l - 100 * (t.zIndex || 0));
            var h = this.mesh.material;
            h.map = t.textureLoader.load(p, (function(t) {
                s.mesh ? (s.textureLoaded = !0,
                s.mesh.material.opacity = 1,
                s.mapLayer.view.invalidateScene()) : t.dispose(),
                s.mapLayer.loadingInProgress--
            }
            ), void 0, (function() {
                s.textureLoaded = !0,
                s.mesh && (o.disposeMeshMaterial(s.mesh),
                s.mesh.material = i.sharedData.errorMaterial,
                s.mapLayer.view.invalidateScene()),
                s.mapLayer.loadingInProgress--
            }
            )),
            h.map.anisotropy = 0,
            h.map.generateMipmaps = !1,
            h.map.minFilter = r.LinearFilter,
            h.map.magFilter = r.LinearFilter,
            this.mapLayer.loadingInProgress++
        }
        ,
        t.prototype.createMesh = function(t, e, n, o) {
            var a = new r.Geometry;
            return i.sharedData.tempVector.set(n - e / 2, o - e / 2, 0),
            a.vertices.push(t.transform(i.sharedData.tempVector).clone()),
            i.sharedData.tempVector.set(n + e / 2, o - e / 2, 0),
            a.vertices.push(t.transform(i.sharedData.tempVector).clone()),
            i.sharedData.tempVector.set(n + e / 2, o + e / 2, 0),
            a.vertices.push(t.transform(i.sharedData.tempVector).clone()),
            i.sharedData.tempVector.set(n - e / 2, o + e / 2, 0),
            a.vertices.push(t.transform(i.sharedData.tempVector).clone()),
            a.faces.push(i.sharedData.face1),
            a.faces.push(i.sharedData.face2),
            a.faceVertexUvs[0].push(i.sharedData.face1UV),
            a.faceVertexUvs[0].push(i.sharedData.face2UV),
            new r.Mesh(a,this.createMaterial())
        }
        ,
        t.prototype.createMaterial = function() {
            var t = new r.MeshBasicMaterial({
                transparent: !0,
                depthWrite: !1,
                depthTest: !0,
                opacity: 0,
                side: r.DoubleSide
            });
            return t.color = this.tileColor ? this.tileColor : new r.Color(16777215),
            t
        }
        ,
        t.prototype.remove = function() {
            this.removeObject3D(),
            this.removeChildren()
        }
        ,
        t.prototype.removeObject3D = function() {
            if (this.mesh) {
                if (this.objectGroup.remove(this.mesh),
                this.textureLoaded) {
                    var t = this.mesh.material.map;
                    t && t.dispose()
                }
                o.disposeMeshMaterial(this.mesh),
                this.mesh.geometry.dispose(),
                this.mesh = void 0
            }
            this.meshAdded = !1,
            this.textureLoaded = !1
        }
        ,
        t.prototype.removeChildren = function() {
            for (var t = 0, e = this.children; t < e.length; t++) {
                var n = e[t];
                n && (n.removeObject3D(),
                n.removeChildren())
            }
            this.children.length = 0
        }
        ,
        t
    }();
    e.MapTile = a
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(4)
      , r = function() {
        function t() {
            this.tempVector = new i.Vector3,
            this.face1 = new i.Face3(0,1,2),
            this.face2 = new i.Face3(2,3,0),
            this.errorMaterial = this.createErrorMaterial(),
            this.uv00 = new i.Vector2(0,0),
            this.uv01 = new i.Vector2(0,1),
            this.uv10 = new i.Vector2(1,0),
            this.uv11 = new i.Vector2(1,1),
            this.face1UV = [this.uv00, this.uv10, this.uv11],
            this.face2UV = [this.uv11, this.uv01, this.uv00]
        }
        return t.prototype.createErrorMaterial = function() {
            var t = new i.MeshBasicMaterial({
                transparent: !0,
                depthWrite: !1,
                depthTest: !0,
                opacity: 1,
                side: i.DoubleSide
            });
            return t.color = new i.Color(3355443),
            t
        }
        ,
        t
    }();
    e.sharedData = new r
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(547)
      , a = n(101)
      , s = function(t) {
        function e(n, i, r, o, s) {
            var c = t.call(this, n, r, o) || this;
            return c.tiledMapEntity = i,
            c.RestService = s,
            c.tileSizePx = i.tileSizePx,
            c.mapSizeM = i.mapSizeM,
            c.maxDepth = i.maxDepth,
            c.projection = n.crsLocal,
            c.zIndex = 0,
            c.textureLoader = a.getTextureLoader(),
            c._tilePresenceMap = e.decodeBitStream(c.tiledMapEntity.quadtree),
            c
        }
        return r(e, t),
        e.prototype.getTileUrl = function(t, e, n) {
            var i = (this.tiledMapEntity.filePath + "/" + this.tiledMapEntity.fileName).replace(/\$DEPTH/g, t.toString(10)).replace(/\$X/g, e.toString(10)).replace(/\$Y/g, n.toString(10));
            return this.RestService.addAuthorizationQueryParameter(i)
        }
        ,
        e.prototype.fillAttributions = function(t) {
            t.NavVis = {
                score: 100
            }
        }
        ,
        Object.defineProperty(e.prototype, "tilePresenceMap", {
            get: function() {
                return this._tilePresenceMap
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "position", {
            get: function() {
                return this.tiledMapEntity.location
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "quaternion", {
            get: function() {
                return this.tiledMapEntity.orientation
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.updateProjection = function() {
            this.projection = this.TransformService.crsLocal,
            t.prototype.updateProjection.call(this)
        }
        ,
        e.decodeBitStream = function(t) {
            if (!t)
                return {
                    empty: !0
                };
            for (var e = {}, n = [e], i = 0; i < t.length; i++) {
                var r = n.shift()
                  , o = parseInt(t.substr(i, 1), 16);
                if (1 & o) {
                    var a = {};
                    r[0] = a,
                    n.push(a)
                }
                if (2 & o) {
                    a = {};
                    r[1] = a,
                    n.push(a)
                }
                if (4 & o) {
                    a = {};
                    r[2] = a,
                    n.push(a)
                }
                if (8 & o) {
                    a = {};
                    r[3] = a,
                    n.push(a)
                }
            }
            var s = {
                empty: !0
            };
            return this.computeHashes(s, e, ""),
            s
        }
        ,
        e.computeHashes = function(t, e, n) {
            for (var i = 0; i < 4; i++)
                e[i] && (t[n + i.toString(10)] = !0,
                t.empty = !1,
                this.computeHashes(t, e[i], n + i.toString(10)))
        }
        ,
        e
    }(o.TiledMapBase);
    e.TiledMapFromEntity = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(7)
      , a = n(101)
      , s = n(108)
      , c = n(102)
      , l = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.meshes = [],
            e.alphaMasks = [],
            e.alphaMaskTextures = [],
            e.meshGeometries = [],
            e
        }
        return r(e, t),
        e.prototype.copy = function(e, n) {
            return void 0 === n && (n = !1),
            t.prototype.fill.call(this, e),
            this.identifier = e.identifier,
            this.name = e.name,
            this.meshes = o.clone(e.meshes),
            this.alphaMasks = o.clone(e.alphaMasks),
            this.fnFormat = e.fnFormat,
            this.depthFnFormat = e.depthFnFormat,
            this.blending = e.blending,
            this.tiles = e.tiles,
            this.resolutions = e.resolutions,
            this.depthResolutions = e.depthResolutions,
            n || (this.alphaMaskTextures = e.alphaMaskTextures,
            this.meshGeometries = e.meshGeometries),
            this
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.identifier = e.identifier,
            this.name = e.name,
            this.meshes = o.clone(e.meshes),
            this.alphaMasks = e.alpha_masks ? o.clone(e.alpha_masks) : [],
            this.fnFormat = e.fn_format,
            this.depthFnFormat = e.depth_fn_format,
            this.blending = e.blending,
            this.tiles = e.tiles,
            this.resolutions = e.resolutions,
            this.depthResolutions = e.depth_resolutions
        }
        ,
        e.prototype.toData = function() {
            throw new s.IVFrontendException("4dkankan cannot create or modify existing camera heads.")
        }
        ,
        e.prototype.fetchHeadData = function(t) {
            if (!this.loading) {
                var e = this.loadMeshes();
                this.loadAlphaMasks(t),
                this.loading = Promise.all(e)
            }
            return this.loading
        }
        ,
        e.prototype.loadMeshes = function() {
            var t = this
              , e = [];
            return this.meshes.forEach((function(n, i) {
                e.push(t.loadMesh(i, n))
            }
            )),
            e
        }
        ,
        e.prototype.loadMesh = function(t, e) {
            var n = this;
            return a.getObjLoader().load("camera_head/" + e).then((function(e) {
                var i = e.children[0].geometry;
                i.computeBoundingBox(),
                n.meshGeometries[t] = i
            }
            ))
        }
        ,
        e.prototype.loadAlphaMasks = function(t) {
            var e = this;
            this.alphaMasks.forEach((function(n, i) {
                e.loadAlphaMask(i, n, t)
            }
            ))
        }
        ,
        e.prototype.loadAlphaMask = function(t, e, n) {
            this.alphaMaskTextures[t] = a.getTextureLoader().load("camera_head/" + e, (function(t) {
                n()
            }
            ))
        }
        ,
        e.prototype.getAlphaMaskTextures = function() {
            return this.alphaMaskTextures
        }
        ,
        e.prototype.getMeshGeometries = function() {
            return this.meshGeometries
        }
        ,
        e
    }(c.RepositoryObject);
    e.CameraHeadEntity = l
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.copy = function(e, n) {
            return void 0 === n && (n = !1),
            t.prototype.fill.call(this, e),
            this.cameraHead = e.cameraHead,
            this.cameraHeadId = e.cameraHeadId,
            this.filePath = e.filePath,
            this.fileId = e.fileId,
            this.hidden = e.hidden,
            this.siteModelEntity = e.siteModelEntity,
            this.siteModelEntityId = e.siteModelEntityId,
            this
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.cameraHeadId = e.camera_head_id,
            this.filePath = ossPrefix+sceneNum+'/'+e.file_path,
            this.fileId = e.file_id,
            this.hidden = e.hidden,
            this.siteModelEntityId = e.site_model_entity_id
        }
        ,
        e.prototype.toData = function() {
            var e = {};
            return t.prototype.fillDto.call(this, e),
            e.camera_head_id = this.cameraHead.id,
            e.file_path = this.filePath,
            e.file_id = this.fileId,
            e.hidden = this.hidden,
            e.site_model_entity_id = this.siteModelEntity ? this.siteModelEntity.id : void 0,
            e
        }
        ,
        e
    }(n(376).LocationEntity);
    e.ImageEntity = o
}
, function(t, e, n) {
    var i, r, o;
    r = [n(19)],
    void 0 === (o = "function" == typeof (i = function(t) {
        "use strict";
        var e;
        t.support.htmlMenuitem = "HTMLMenuItemElement"in window,
        t.support.htmlCommand = "HTMLCommandElement"in window,
        t.support.eventSelectstart = "onselectstart"in document.documentElement,
        t.ui && t.widget || (t.cleanData = (e = t.cleanData,
        function(n) {
            var i, r, o;
            for (o = 0; null != n[o]; o++) {
                r = n[o];
                try {
                    (i = t._data(r, "events")) && i.remove && t(r).triggerHandler("remove")
                } catch (t) {}
            }
            e(n)
        }
        ));
        var n = null
          , i = !1
          , r = t(window)
          , o = 0
          , a = {}
          , s = {}
          , c = {}
          , l = {
            selector: null,
            appendTo: null,
            trigger: "right",
            autoHide: !1,
            delay: 200,
            reposition: !0,
            hideOnSecondTrigger: !1,
            selectableSubMenu: !1,
            classNames: {
                hover: "context-menu-hover",
                disabled: "context-menu-disabled",
                visible: "context-menu-visible",
                notSelectable: "context-menu-not-selectable",
                icon: "context-menu-icon",
                iconEdit: "context-menu-icon-edit",
                iconCut: "context-menu-icon-cut",
                iconCopy: "context-menu-icon-copy",
                iconPaste: "context-menu-icon-paste",
                iconDelete: "context-menu-icon-delete",
                iconAdd: "context-menu-icon-add",
                iconQuit: "context-menu-icon-quit",
                iconLoadingClass: "context-menu-icon-loading"
            },
            determinePosition: function(e) {
                if (t.ui && t.ui.position)
                    e.css("display", "block").position({
                        my: "center top",
                        at: "center bottom",
                        of: this,
                        offset: "0 5",
                        collision: "fit"
                    }).css("display", "none");
                else {
                    var n = this.offset();
                    n.top += this.outerHeight(),
                    n.left += this.outerWidth() / 2 - e.outerWidth() / 2,
                    e.css(n)
                }
            },
            position: function(t, e, n) {
                var i;
                if (e || n) {
                    if ("maintain" === e && "maintain" === n)
                        i = t.$menu.position();
                    else {
                        var o = t.$menu.offsetParent().offset();
                        i = {
                            top: n - o.top,
                            left: e - o.left
                        }
                    }
                    var a = r.scrollTop() + r.height()
                      , s = r.scrollLeft() + r.width()
                      , c = t.$menu.outerHeight()
                      , l = t.$menu.outerWidth();
                    i.top + c > a && (i.top -= c),
                    i.top < 0 && (i.top = 0),
                    i.left + l > s && (i.left -= l),
                    i.left < 0 && (i.left = 0),
                    t.$menu.css(i)
                } else
                    t.determinePosition.call(this, t.$menu)
            },
            positionSubmenu: function(e) {
                if (void 0 !== e)
                    if (t.ui && t.ui.position)
                        e.css("display", "block").position({
                            my: "left top-5",
                            at: "right top",
                            of: this,
                            collision: "flipfit fit"
                        }).css("display", "");
                    else {
                        var n = {
                            top: -9,
                            left: this.outerWidth() - 5
                        };
                        e.css(n)
                    }
            },
            zIndex: 1,
            animation: {
                duration: 50,
                show: "slideDown",
                hide: "slideUp"
            },
            events: {
                preShow: t.noop,
                show: t.noop,
                hide: t.noop,
                activated: t.noop
            },
            callback: null,
            items: {}
        }
          , u = {
            timer: null,
            pageX: null,
            pageY: null
        }
          , d = {
            abortevent: function(t) {
                t.preventDefault(),
                t.stopImmediatePropagation()
            },
            contextmenu: function(e) {
                var i = t(this);
                if (!1 !== e.data.events.preShow(i, e) && ("right" === e.data.trigger && (e.preventDefault(),
                e.stopImmediatePropagation()),
                !("right" !== e.data.trigger && "demand" !== e.data.trigger && e.originalEvent || !(void 0 === e.mouseButton || !e.data || "left" === e.data.trigger && 0 === e.mouseButton || "right" === e.data.trigger && 2 === e.mouseButton) || i.hasClass("context-menu-active") || i.hasClass("context-menu-disabled")))) {
                    if (n = i,
                    e.data.build) {
                        var r = e.data.build(n, e);
                        if (!1 === r)
                            return;
                        if (e.data = t.extend(!0, {}, l, e.data, r || {}),
                        !e.data.items || t.isEmptyObject(e.data.items))
                            throw window.console && (console.error || console.log).call(console, "No items specified to show in contextMenu"),
                            new Error("No Items specified");
                        e.data.$trigger = n,
                        p.create(e.data)
                    }
                    p.show.call(i, e.data, e.pageX, e.pageY)
                }
            },
            click: function(e) {
                e.preventDefault(),
                e.stopImmediatePropagation(),
                t(this).trigger(t.Event("contextmenu", {
                    data: e.data,
                    pageX: e.pageX,
                    pageY: e.pageY
                }))
            },
            mousedown: function(e) {
                var i = t(this);
                n && n.length && !n.is(i) && n.data("contextMenu").$menu.trigger("contextmenu:hide"),
                2 === e.button && (n = i.data("contextMenuActive", !0))
            },
            mouseup: function(e) {
                var i = t(this);
                i.data("contextMenuActive") && n && n.length && n.is(i) && !i.hasClass("context-menu-disabled") && (e.preventDefault(),
                e.stopImmediatePropagation(),
                n = i,
                i.trigger(t.Event("contextmenu", {
                    data: e.data,
                    pageX: e.pageX,
                    pageY: e.pageY
                }))),
                i.removeData("contextMenuActive")
            },
            mouseenter: function(e) {
                var i = t(this)
                  , r = t(e.relatedTarget)
                  , o = t(document);
                r.is(".context-menu-list") || r.closest(".context-menu-list").length || n && n.length || (u.pageX = e.pageX,
                u.pageY = e.pageY,
                u.data = e.data,
                o.on("mousemove.contextMenuShow", d.mousemove),
                u.timer = setTimeout((function() {
                    u.timer = null,
                    o.off("mousemove.contextMenuShow"),
                    n = i,
                    i.trigger(t.Event("contextmenu", {
                        data: u.data,
                        pageX: u.pageX,
                        pageY: u.pageY
                    }))
                }
                ), e.data.delay))
            },
            mousemove: function(t) {
                u.pageX = t.pageX,
                u.pageY = t.pageY
            },
            mouseleave: function(e) {
                var n = t(e.relatedTarget);
                if (!n.is(".context-menu-list") && !n.closest(".context-menu-list").length) {
                    try {
                        clearTimeout(u.timer)
                    } catch (e) {}
                    u.timer = null
                }
            },
            layerClick: function(e) {
                var n, i, o = t(this).data("contextMenuRoot"), a = e.button, s = e.pageX, c = e.pageY, l = void 0 === s;
                e.preventDefault(),
                setTimeout((function() {
                    if (l)
                        null != o && null !== o.$menu && void 0 !== o.$menu && o.$menu.trigger("contextmenu:hide");
                    else {
                        var u, d = "left" === o.trigger && 0 === a || "right" === o.trigger && 2 === a;
                        if (document.elementFromPoint && o.$layer) {
                            if (o.$layer.hide(),
                            (n = document.elementFromPoint(s - r.scrollLeft(), c - r.scrollTop())).isContentEditable) {
                                var p = document.createRange()
                                  , h = window.getSelection();
                                p.selectNode(n),
                                p.collapse(!0),
                                h.removeAllRanges(),
                                h.addRange(p)
                            }
                            t(n).trigger(e),
                            o.$layer.show()
                        }
                        if (o.hideOnSecondTrigger && d && null !== o.$menu && void 0 !== o.$menu)
                            o.$menu.trigger("contextmenu:hide");
                        else {
                            if (o.reposition && d)
                                if (document.elementFromPoint) {
                                    if (o.$trigger.is(n))
                                        return void o.position.call(o.$trigger, o, s, c)
                                } else if (i = o.$trigger.offset(),
                                u = t(window),
                                i.top += u.scrollTop(),
                                i.top <= e.pageY && (i.left += u.scrollLeft(),
                                i.left <= e.pageX && (i.bottom = i.top + o.$trigger.outerHeight(),
                                i.bottom >= e.pageY && (i.right = i.left + o.$trigger.outerWidth(),
                                i.right >= e.pageX))))
                                    return void o.position.call(o.$trigger, o, s, c);
                            n && d && o.$trigger.one("contextmenu:hidden", (function() {
                                t(n).contextMenu({
                                    x: s,
                                    y: c,
                                    button: a
                                })
                            }
                            )),
                            null != o && null !== o.$menu && void 0 !== o.$menu && o.$menu.trigger("contextmenu:hide")
                        }
                    }
                }
                ), 50)
            },
            keyStop: function(t, e) {
                e.isInput || t.preventDefault(),
                t.stopPropagation()
            },
            key: function(t) {
                var e = {};
                n && (e = n.data("contextMenu") || {}),
                void 0 === e.zIndex && (e.zIndex = 0);
                var i = 0
                  , r = function(t) {
                    "" !== t.style.zIndex ? i = t.style.zIndex : null !== t.offsetParent && void 0 !== t.offsetParent ? r(t.offsetParent) : null !== t.parentElement && void 0 !== t.parentElement && r(t.parentElement)
                };
                if (r(t.target),
                !(e.$menu && parseInt(i, 10) > parseInt(e.$menu.css("zIndex"), 10))) {
                    switch (t.keyCode) {
                    case 9:
                    case 38:
                        if (d.keyStop(t, e),
                        e.isInput) {
                            if (9 === t.keyCode && t.shiftKey)
                                return t.preventDefault(),
                                e.$selected && e.$selected.find("input, textarea, select").blur(),
                                void (null !== e.$menu && void 0 !== e.$menu && e.$menu.trigger("prevcommand"));
                            if (38 === t.keyCode && "checkbox" === e.$selected.find("input, textarea, select").prop("type"))
                                return void t.preventDefault()
                        } else if (9 !== t.keyCode || t.shiftKey)
                            return void (null !== e.$menu && void 0 !== e.$menu && e.$menu.trigger("prevcommand"));
                        break;
                    case 40:
                        if (d.keyStop(t, e),
                        !e.isInput)
                            return void (null !== e.$menu && void 0 !== e.$menu && e.$menu.trigger("nextcommand"));
                        if (9 === t.keyCode)
                            return t.preventDefault(),
                            e.$selected && e.$selected.find("input, textarea, select").blur(),
                            void (null !== e.$menu && void 0 !== e.$menu && e.$menu.trigger("nextcommand"));
                        if (40 === t.keyCode && "checkbox" === e.$selected.find("input, textarea, select").prop("type"))
                            return void t.preventDefault();
                        break;
                    case 37:
                        if (d.keyStop(t, e),
                        e.isInput || !e.$selected || !e.$selected.length)
                            break;
                        if (!e.$selected.parent().hasClass("context-menu-root")) {
                            var o = e.$selected.parent().parent();
                            return e.$selected.trigger("contextmenu:blur"),
                            void (e.$selected = o)
                        }
                        break;
                    case 39:
                        if (d.keyStop(t, e),
                        e.isInput || !e.$selected || !e.$selected.length)
                            break;
                        var a = e.$selected.data("contextMenu") || {};
                        if (a.$menu && e.$selected.hasClass("context-menu-submenu"))
                            return e.$selected = null,
                            a.$selected = null,
                            void a.$menu.trigger("nextcommand");
                        break;
                    case 35:
                    case 36:
                        return e.$selected && e.$selected.find("input, textarea, select").length ? void 0 : ((e.$selected && e.$selected.parent() || e.$menu).children(":not(." + e.classNames.disabled + ", ." + e.classNames.notSelectable + ")")[36 === t.keyCode ? "first" : "last"]().trigger("contextmenu:focus"),
                        void t.preventDefault());
                    case 13:
                        if (d.keyStop(t, e),
                        e.isInput) {
                            if (e.$selected && !e.$selected.is("textarea, select"))
                                return void t.preventDefault();
                            break
                        }
                        return void (void 0 !== e.$selected && null !== e.$selected && e.$selected.trigger("mouseup"));
                    case 32:
                    case 33:
                    case 34:
                        return void d.keyStop(t, e);
                    case 27:
                        return d.keyStop(t, e),
                        void (null !== e.$menu && void 0 !== e.$menu && e.$menu.trigger("contextmenu:hide"));
                    default:
                        var s = String.fromCharCode(t.keyCode).toUpperCase();
                        if (e.accesskeys && e.accesskeys[s])
                            return void e.accesskeys[s].$node.trigger(e.accesskeys[s].$menu ? "contextmenu:focus" : "mouseup")
                    }
                    t.stopPropagation(),
                    void 0 !== e.$selected && null !== e.$selected && e.$selected.trigger(t)
                }
            },
            prevItem: function(e) {
                e.stopPropagation();
                var n = t(this).data("contextMenu") || {}
                  , i = t(this).data("contextMenuRoot") || {};
                if (n.$selected) {
                    var r = n.$selected;
                    (n = n.$selected.parent().data("contextMenu") || {}).$selected = r
                }
                for (var o = n.$menu.children(), a = n.$selected && n.$selected.prev().length ? n.$selected.prev() : o.last(), s = a; a.hasClass(i.classNames.disabled) || a.hasClass(i.classNames.notSelectable) || a.is(":hidden"); )
                    if ((a = a.prev().length ? a.prev() : o.last()).is(s))
                        return;
                n.$selected && d.itemMouseleave.call(n.$selected.get(0), e),
                d.itemMouseenter.call(a.get(0), e);
                var c = a.find("input, textarea, select");
                c.length && c.focus()
            },
            nextItem: function(e) {
                e.stopPropagation();
                var n = t(this).data("contextMenu") || {}
                  , i = t(this).data("contextMenuRoot") || {};
                if (n.$selected) {
                    var r = n.$selected;
                    (n = n.$selected.parent().data("contextMenu") || {}).$selected = r
                }
                for (var o = n.$menu.children(), a = n.$selected && n.$selected.next().length ? n.$selected.next() : o.first(), s = a; a.hasClass(i.classNames.disabled) || a.hasClass(i.classNames.notSelectable) || a.is(":hidden"); )
                    if ((a = a.next().length ? a.next() : o.first()).is(s))
                        return;
                n.$selected && d.itemMouseleave.call(n.$selected.get(0), e),
                d.itemMouseenter.call(a.get(0), e);
                var c = a.find("input, textarea, select");
                c.length && c.focus()
            },
            focusInput: function() {
                var e = t(this).closest(".context-menu-item")
                  , n = e.data()
                  , i = n.contextMenu
                  , r = n.contextMenuRoot;
                r.$selected = i.$selected = e,
                r.isInput = i.isInput = !0
            },
            blurInput: function() {
                var e = t(this).closest(".context-menu-item").data()
                  , n = e.contextMenu;
                e.contextMenuRoot.isInput = n.isInput = !1
            },
            menuMouseenter: function() {
                t(this).data().contextMenuRoot.hovering = !0
            },
            menuMouseleave: function(e) {
                var n = t(this).data().contextMenuRoot;
                n.$layer && n.$layer.is(e.relatedTarget) && (n.hovering = !1)
            },
            itemMouseenter: function(e) {
                var n = t(this)
                  , i = n.data()
                  , r = i.contextMenu
                  , o = i.contextMenuRoot;
                o.hovering = !0,
                e && o.$layer && o.$layer.is(e.relatedTarget) && (e.preventDefault(),
                e.stopImmediatePropagation()),
                (r.$menu ? r : o).$menu.children("." + o.classNames.hover).trigger("contextmenu:blur").children(".hover").trigger("contextmenu:blur"),
                n.hasClass(o.classNames.disabled) || n.hasClass(o.classNames.notSelectable) ? r.$selected = null : n.trigger("contextmenu:focus")
            },
            itemMouseleave: function(e) {
                var n = t(this)
                  , i = n.data()
                  , r = i.contextMenu
                  , o = i.contextMenuRoot;
                if (o !== r && o.$layer && o.$layer.is(e.relatedTarget))
                    return void 0 !== o.$selected && null !== o.$selected && o.$selected.trigger("contextmenu:blur"),
                    e.preventDefault(),
                    e.stopImmediatePropagation(),
                    void (o.$selected = r.$selected = r.$node);
                r && r.$menu && r.$menu.hasClass("context-menu-visible") || n.trigger("contextmenu:blur")
            },
            itemClick: function(e) {
                var n, i = t(this), r = i.data(), o = r.contextMenu, a = r.contextMenuRoot, s = r.contextMenuKey;
                if (!(!o.items[s] || i.is("." + a.classNames.disabled + ", .context-menu-separator, ." + a.classNames.notSelectable) || i.is(".context-menu-submenu") && !1 === a.selectableSubMenu)) {
                    if (e.preventDefault(),
                    e.stopImmediatePropagation(),
                    t.isFunction(o.callbacks[s]) && Object.prototype.hasOwnProperty.call(o.callbacks, s))
                        n = o.callbacks[s];
                    else {
                        if (!t.isFunction(a.callback))
                            return;
                        n = a.callback
                    }
                    !1 !== n.call(a.$trigger, s, a, e) ? a.$menu.trigger("contextmenu:hide") : a.$menu.parent().length && p.update.call(a.$trigger, a)
                }
            },
            inputClick: function(t) {
                t.stopImmediatePropagation()
            },
            hideMenu: function(e, n) {
                var i = t(this).data("contextMenuRoot");
                p.hide.call(i.$trigger, i, n && n.force)
            },
            focusItem: function(e) {
                e.stopPropagation();
                var n = t(this)
                  , i = n.data()
                  , r = i.contextMenu
                  , o = i.contextMenuRoot;
                n.hasClass(o.classNames.disabled) || n.hasClass(o.classNames.notSelectable) || (n.addClass([o.classNames.hover, o.classNames.visible].join(" ")).parent().find(".context-menu-item").not(n).removeClass(o.classNames.visible).filter("." + o.classNames.hover).trigger("contextmenu:blur"),
                r.$selected = o.$selected = n,
                r && r.$node && r.$node.hasClass("context-menu-submenu") && r.$node.addClass(o.classNames.hover),
                r.$node && o.positionSubmenu.call(r.$node, r.$menu))
            },
            blurItem: function(e) {
                e.stopPropagation();
                var n = t(this)
                  , i = n.data()
                  , r = i.contextMenu
                  , o = i.contextMenuRoot;
                r.autoHide && n.removeClass(o.classNames.visible),
                n.removeClass(o.classNames.hover),
                r.$selected = null
            }
        }
          , p = {
            show: function(e, i, r) {
                var o = t(this)
                  , a = {};
                if (t("#context-menu-layer").trigger("mousedown"),
                e.$trigger = o,
                !1 !== e.events.show.call(o, e))
                    if (!1 !== p.update.call(o, e)) {
                        if (e.position.call(o, e, i, r),
                        e.zIndex) {
                            var s = e.zIndex;
                            "function" == typeof e.zIndex && (s = e.zIndex.call(o, e)),
                            a.zIndex = function(t) {
                                for (var e = 0, n = t; e = Math.max(e, parseInt(n.css("z-index"), 10) || 0),
                                (n = n.parent()) && n.length && !("html body".indexOf(n.prop("nodeName").toLowerCase()) > -1); )
                                    ;
                                return e
                            }(o) + s
                        }
                        p.layer.call(e.$menu, e, a.zIndex),
                        e.$menu.find("ul").css("zIndex", a.zIndex + 1),
                        e.$menu.css(a)[e.animation.show](e.animation.duration, (function() {
                            o.trigger("contextmenu:visible"),
                            p.activated(e),
                            e.events.activated(e)
                        }
                        )),
                        o.data("contextMenu", e).addClass("context-menu-active"),
                        t(document).off("keydown.contextMenu").on("keydown.contextMenu", d.key),
                        e.autoHide && t(document).on("mousemove.contextMenuAutoHide", (function(t) {
                            var n = o.offset();
                            n.right = n.left + o.outerWidth(),
                            n.bottom = n.top + o.outerHeight(),
                            !e.$layer || e.hovering || t.pageX >= n.left && t.pageX <= n.right && t.pageY >= n.top && t.pageY <= n.bottom || setTimeout((function() {
                                e.hovering || null === e.$menu || void 0 === e.$menu || e.$menu.trigger("contextmenu:hide")
                            }
                            ), 50)
                        }
                        ))
                    } else
                        n = null;
                else
                    n = null
            },
            hide: function(e, i) {
                var r = t(this);
                if (e || (e = r.data("contextMenu") || {}),
                i || !e.events || !1 !== e.events.hide.call(r, e)) {
                    if (r.removeData("contextMenu").removeClass("context-menu-active"),
                    e.$layer) {
                        setTimeout((o = e.$layer,
                        function() {
                            o.remove()
                        }
                        ), 10);
                        try {
                            delete e.$layer
                        } catch (t) {
                            e.$layer = null
                        }
                    }
                    var o;
                    n = null,
                    e.$menu.find("." + e.classNames.hover).trigger("contextmenu:blur"),
                    e.$selected = null,
                    e.$menu.find("." + e.classNames.visible).removeClass(e.classNames.visible),
                    t(document).off(".contextMenuAutoHide").off("keydown.contextMenu"),
                    e.$menu && e.$menu[e.animation.hide](e.animation.duration, (function() {
                        e.build && (e.$menu.remove(),
                        t.each(e, (function(t) {
                            switch (t) {
                            case "ns":
                            case "selector":
                            case "build":
                            case "trigger":
                                return !0;
                            default:
                                e[t] = void 0;
                                try {
                                    delete e[t]
                                } catch (t) {}
                                return !0
                            }
                        }
                        ))),
                        setTimeout((function() {
                            r.trigger("contextmenu:hidden")
                        }
                        ), 10)
                    }
                    ))
                }
            },
            create: function(e, n) {
                function i(e) {
                    var n = t("<span></span>");
                    if (e._accesskey)
                        e._beforeAccesskey && n.append(document.createTextNode(e._beforeAccesskey)),
                        t("<span></span>").addClass("context-menu-accesskey").text(e._accesskey).appendTo(n),
                        e._afterAccesskey && n.append(document.createTextNode(e._afterAccesskey));
                    else if (e.isHtmlName) {
                        if (void 0 !== e.accesskey)
                            throw new Error("accesskeys are not compatible with HTML names and cannot be used together in the same item");
                        n.html(e.name)
                    } else
                        n.text(e.name);
                    return n
                }
                void 0 === n && (n = e),
                e.$menu = t('<ul class="context-menu-list"></ul>').addClass(e.className || "").data({
                    contextMenu: e,
                    contextMenuRoot: n
                }),
                e.dataAttr && t.each(e.dataAttr, (function(t, n) {
                    e.$menu.attr("data-" + e.key, n)
                }
                )),
                t.each(["callbacks", "commands", "inputs"], (function(t, i) {
                    e[i] = {},
                    n[i] || (n[i] = {})
                }
                )),
                n.accesskeys || (n.accesskeys = {}),
                t.each(e.items, (function(r, o) {
                    var a = t('<li class="context-menu-item"></li>').addClass(o.className || "")
                      , s = null
                      , l = null;
                    if (a.on("click", t.noop),
                    "string" != typeof o && "cm_separator" !== o.type || (o = {
                        type: "cm_seperator"
                    }),
                    o.$node = a.data({
                        contextMenu: e,
                        contextMenuRoot: n,
                        contextMenuKey: r
                    }),
                    void 0 !== o.accesskey)
                        for (var u, h = function(t) {
                            for (var e, n = t.split(/\s+/), i = [], r = 0; e = n[r]; r++)
                                e = e.charAt(0).toUpperCase(),
                                i.push(e);
                            return i
                        }(o.accesskey), f = 0; u = h[f]; f++)
                            if (!n.accesskeys[u]) {
                                n.accesskeys[u] = o;
                                var m = o.name.match(new RegExp("^(.*?)(" + u + ")(.*)$","i"));
                                m && (o._beforeAccesskey = m[1],
                                o._accesskey = m[2],
                                o._afterAccesskey = m[3]);
                                break
                            }
                    if (o.type && c[o.type])
                        c[o.type].call(a, o, e, n),
                        t.each([e, n], (function(n, i) {
                            i.commands[r] = o,
                            !t.isFunction(o.callback) || void 0 !== i.callbacks[r] && void 0 !== e.type || (i.callbacks[r] = o.callback)
                        }
                        ));
                    else {
                        switch ("cm_seperator" === o.type ? a.addClass("context-menu-separator " + n.classNames.notSelectable) : "html" === o.type ? a.addClass("context-menu-html " + n.classNames.notSelectable) : "sub" !== o.type && o.type ? (s = t("<label></label>").appendTo(a),
                        i(o).appendTo(s),
                        a.addClass("context-menu-input"),
                        e.hasTypes = !0,
                        t.each([e, n], (function(t, e) {
                            e.commands[r] = o,
                            e.inputs[r] = o
                        }
                        ))) : o.items && (o.type = "sub"),
                        o.type) {
                        case "cm_seperator":
                            break;
                        case "text":
                            l = t('<input type="text" value="1" name="" />').attr("name", "context-menu-input-" + r).val(o.value || "").appendTo(s);
                            break;
                        case "textarea":
                            l = t('<textarea name=""></textarea>').attr("name", "context-menu-input-" + r).val(o.value || "").appendTo(s),
                            o.height && l.height(o.height);
                            break;
                        case "checkbox":
                            l = t('<input type="checkbox" value="1" name="" />').attr("name", "context-menu-input-" + r).val(o.value || "").prop("checked", !!o.selected).prependTo(s);
                            break;
                        case "radio":
                            l = t('<input type="radio" value="1" name="" />').attr("name", "context-menu-input-" + o.radio).val(o.value || "").prop("checked", !!o.selected).prependTo(s);
                            break;
                        case "select":
                            l = t('<select name=""></select>').attr("name", "context-menu-input-" + r).appendTo(s),
                            o.options && (t.each(o.options, (function(e, n) {
                                t("<option></option>").val(e).text(n).appendTo(l)
                            }
                            )),
                            l.val(o.selected));
                            break;
                        case "sub":
                            i(o).appendTo(a),
                            o.appendTo = o.$node,
                            a.data("contextMenu", o).addClass("context-menu-submenu"),
                            o.callback = null,
                            "function" == typeof o.items.then ? p.processPromises(o, n, o.items) : p.create(o, n);
                            break;
                        case "html":
                            t(o.html).appendTo(a);
                            break;
                        default:
                            t.each([e, n], (function(n, i) {
                                i.commands[r] = o,
                                !t.isFunction(o.callback) || void 0 !== i.callbacks[r] && void 0 !== e.type || (i.callbacks[r] = o.callback)
                            }
                            )),
                            i(o).appendTo(a)
                        }
                        o.type && "sub" !== o.type && "html" !== o.type && "cm_seperator" !== o.type && (l.on("focus", d.focusInput).on("blur", d.blurInput),
                        o.events && l.on(o.events, e)),
                        o.icon && (t.isFunction(o.icon) ? o._icon = o.icon.call(this, this, a, r, o) : "string" != typeof o.icon || "fab " !== o.icon.substring(0, 4) && "fas " !== o.icon.substring(0, 4) && "fad " !== o.icon.substring(0, 4) && "far " !== o.icon.substring(0, 4) && "fal " !== o.icon.substring(0, 4) ? "string" == typeof o.icon && "fa-" === o.icon.substring(0, 3) ? o._icon = n.classNames.icon + " " + n.classNames.icon + "--fa fa " + o.icon : o._icon = n.classNames.icon + " " + n.classNames.icon + "-" + o.icon : (a.addClass(n.classNames.icon + " " + n.classNames.icon + "--fa5"),
                        o._icon = t('<i class="' + o.icon + '"></i>')),
                        "string" == typeof o._icon ? a.addClass(o._icon) : a.prepend(o._icon))
                    }
                    o.$input = l,
                    o.$label = s,
                    a.appendTo(e.$menu),
                    !e.hasTypes && t.support.eventSelectstart && a.on("selectstart.disableTextSelect", d.abortevent)
                }
                )),
                e.$node || e.$menu.css("display", "none").addClass("context-menu-root"),
                e.$menu.appendTo(e.appendTo || document.body)
            },
            resize: function(e, n) {
                var i;
                e.css({
                    position: "absolute",
                    display: "block"
                }),
                e.data("width", (i = e.get(0)).getBoundingClientRect ? Math.ceil(i.getBoundingClientRect().width) : e.outerWidth() + 1),
                e.css({
                    position: "static",
                    minWidth: "0px",
                    maxWidth: "100000px"
                }),
                e.find("> li > ul").each((function() {
                    p.resize(t(this), !0)
                }
                )),
                n || e.find("ul").addBack().css({
                    position: "",
                    display: "",
                    minWidth: "",
                    maxWidth: ""
                }).outerWidth((function() {
                    return t(this).data("width")
                }
                ))
            },
            update: function(e, n) {
                var i = this;
                void 0 === n && (n = e,
                p.resize(e.$menu));
                var r = !1;
                return e.$menu.children().each((function() {
                    var o, a = t(this), s = a.data("contextMenuKey"), c = e.items[s], l = t.isFunction(c.disabled) && c.disabled.call(i, s, n) || !0 === c.disabled;
                    if ((o = t.isFunction(c.visible) ? c.visible.call(i, s, n) : void 0 === c.visible || !0 === c.visible) && (r = !0),
                    a[o ? "show" : "hide"](),
                    a[l ? "addClass" : "removeClass"](n.classNames.disabled),
                    t.isFunction(c.icon)) {
                        a.removeClass(c._icon);
                        var u = c.icon.call(this, i, a, s, c);
                        "string" == typeof u ? a.addClass(u) : a.prepend(u)
                    }
                    if (c.type)
                        switch (a.find("input, select, textarea").prop("disabled", l),
                        c.type) {
                        case "text":
                        case "textarea":
                            c.$input.val(c.value || "");
                            break;
                        case "checkbox":
                        case "radio":
                            c.$input.val(c.value || "").prop("checked", !!c.selected);
                            break;
                        case "select":
                            c.$input.val((0 === c.selected ? "0" : c.selected) || "")
                        }
                    c.$menu && p.update.call(i, c, n) && (r = !0)
                }
                )),
                r
            },
            layer: function(e, n) {
                var i = e.$layer = t('<div id="context-menu-layer"></div>').css({
                    height: r.height(),
                    width: r.width(),
                    display: "block",
                    position: "fixed",
                    "z-index": n,
                    top: 0,
                    left: 0,
                    opacity: 0,
                    filter: "alpha(opacity=0)",
                    "background-color": "#000"
                }).data("contextMenuRoot", e).insertBefore(this).on("contextmenu", d.abortevent).on("mousedown", d.layerClick);
                return void 0 === document.body.style.maxWidth && i.css({
                    position: "absolute",
                    height: t(document).height()
                }),
                i
            },
            processPromises: function(t, e, n) {
                function i(t, e, n) {
                    void 0 === n ? (n = {
                        error: {
                            name: "No items and no error item",
                            icon: "context-menu-icon context-menu-icon-quit"
                        }
                    },
                    window.console && (console.error || console.log).call(console, 'When you reject a promise, provide an "items" object, equal to normal sub-menu items')) : "string" == typeof n && (n = {
                        error: {
                            name: n
                        }
                    }),
                    r(t, e, n)
                }
                function r(t, e, n) {
                    void 0 !== e.$menu && e.$menu.is(":visible") && (t.$node.removeClass(e.classNames.iconLoadingClass),
                    t.items = n,
                    p.create(t, e, !0),
                    p.update(t, e),
                    e.positionSubmenu.call(t.$node, t.$menu))
                }
                t.$node.addClass(e.classNames.iconLoadingClass),
                n.then(function(t, e, n) {
                    void 0 === n && i(void 0),
                    r(t, e, n)
                }
                .bind(this, t, e), i.bind(this, t, e))
            },
            activated: function(e) {
                var n = e.$menu
                  , i = n.offset()
                  , r = t(window).height()
                  , o = t(window).scrollTop()
                  , a = n.height();
                a > r ? n.css({
                    height: r + "px",
                    "overflow-x": "hidden",
                    "overflow-y": "auto",
                    top: o + "px"
                }) : (i.top < o || i.top + a > o + r) && n.css({
                    top: o + "px"
                })
            }
        };
        function h(e) {
            return e.id && t('label[for="' + e.id + '"]').val() || e.name
        }
        t.fn.contextMenu = function(e) {
            var n = this
              , i = e;
            if (this.length > 0)
                if (void 0 === e)
                    this.first().trigger("contextmenu");
                else if (void 0 !== e.x && void 0 !== e.y)
                    this.first().trigger(t.Event("contextmenu", {
                        pageX: e.x,
                        pageY: e.y,
                        mouseButton: e.button
                    }));
                else if ("hide" === e) {
                    var r = this.first().data("contextMenu") ? this.first().data("contextMenu").$menu : null;
                    r && r.trigger("contextmenu:hide")
                } else
                    "destroy" === e ? t.contextMenu("destroy", {
                        context: this
                    }) : t.isPlainObject(e) ? (e.context = this,
                    t.contextMenu("create", e)) : e ? this.removeClass("context-menu-disabled") : e || this.addClass("context-menu-disabled");
            else
                t.each(s, (function() {
                    this.selector === n.selector && (i.data = this,
                    t.extend(i.data, {
                        trigger: "demand"
                    }))
                }
                )),
                d.contextmenu.call(i.target, i);
            return this
        }
        ,
        t.contextMenu = function(e, n) {
            "string" != typeof e && (n = e,
            e = "create"),
            "string" == typeof n ? n = {
                selector: n
            } : void 0 === n && (n = {});
            var r = t.extend(!0, {}, l, n || {})
              , c = t(document)
              , u = c
              , h = !1;
            switch (r.context && r.context.length ? (u = t(r.context).first(),
            r.context = u.get(0),
            h = !t(r.context).is(document)) : r.context = document,
            e) {
            case "update":
                if (h)
                    p.update(u);
                else
                    for (var f in s)
                        s.hasOwnProperty(f) && p.update(s[f]);
                break;
            case "create":
                if (!r.selector)
                    throw new Error("No selector specified");
                if (r.selector.match(/.context-menu-(list|item|input)($|\s)/))
                    throw new Error('Cannot bind to selector "' + r.selector + '" as it contains a reserved className');
                if (!r.build && (!r.items || t.isEmptyObject(r.items)))
                    throw new Error("No Items specified");
                if (o++,
                r.ns = ".contextMenu" + o,
                h || (a[r.selector] = r.ns),
                s[r.ns] = r,
                r.trigger || (r.trigger = "right"),
                !i) {
                    var m = "click" === r.itemClickEvent ? "click.contextMenu" : "mouseup.contextMenu"
                      , g = {
                        "contextmenu:focus.contextMenu": d.focusItem,
                        "contextmenu:blur.contextMenu": d.blurItem,
                        "contextmenu.contextMenu": d.abortevent,
                        "mouseenter.contextMenu": d.itemMouseenter,
                        "mouseleave.contextMenu": d.itemMouseleave
                    };
                    g[m] = d.itemClick,
                    c.on({
                        "contextmenu:hide.contextMenu": d.hideMenu,
                        "prevcommand.contextMenu": d.prevItem,
                        "nextcommand.contextMenu": d.nextItem,
                        "contextmenu.contextMenu": d.abortevent,
                        "mouseenter.contextMenu": d.menuMouseenter,
                        "mouseleave.contextMenu": d.menuMouseleave
                    }, ".context-menu-list").on("mouseup.contextMenu", ".context-menu-input", d.inputClick).on(g, ".context-menu-item"),
                    i = !0
                }
                switch (u.on("contextmenu" + r.ns, r.selector, r, d.contextmenu),
                h && u.on("remove" + r.ns, (function() {
                    t(this).contextMenu("destroy")
                }
                )),
                r.trigger) {
                case "hover":
                    u.on("mouseenter" + r.ns, r.selector, r, d.mouseenter).on("mouseleave" + r.ns, r.selector, r, d.mouseleave);
                    break;
                case "left":
                    u.on("click" + r.ns, r.selector, r, d.click);
                    break;
                case "touchstart":
                    u.on("touchstart" + r.ns, r.selector, r, d.click)
                }
                r.build || p.create(r);
                break;
            case "destroy":
                var v;
                if (h) {
                    var y = r.context;
                    t.each(s, (function(e, n) {
                        if (!n)
                            return !0;
                        if (!t(y).is(n.selector))
                            return !0;
                        (v = t(".context-menu-list").filter(":visible")).length && v.data().contextMenuRoot.$trigger.is(t(n.context).find(n.selector)) && v.trigger("contextmenu:hide", {
                            force: !0
                        });
                        try {
                            s[n.ns].$menu && s[n.ns].$menu.remove(),
                            delete s[n.ns]
                        } catch (t) {
                            s[n.ns] = null
                        }
                        return t(n.context).off(n.ns),
                        !0
                    }
                    ))
                } else if (r.selector) {
                    if (a[r.selector]) {
                        (v = t(".context-menu-list").filter(":visible")).length && v.data().contextMenuRoot.$trigger.is(r.selector) && v.trigger("contextmenu:hide", {
                            force: !0
                        });
                        try {
                            s[a[r.selector]].$menu && s[a[r.selector]].$menu.remove(),
                            delete s[a[r.selector]]
                        } catch (t) {
                            s[a[r.selector]] = null
                        }
                        c.off(a[r.selector])
                    }
                } else
                    c.off(".contextMenu .contextMenuAutoHide"),
                    t.each(s, (function(e, n) {
                        t(n.context).off(n.ns)
                    }
                    )),
                    a = {},
                    s = {},
                    o = 0,
                    i = !1,
                    t("#context-menu-layer, .context-menu-list").remove();
                break;
            case "html5":
                (!t.support.htmlCommand && !t.support.htmlMenuitem || "boolean" == typeof n && n) && t('menu[type="context"]').each((function() {
                    this.id && t.contextMenu({
                        selector: "[contextmenu=" + this.id + "]",
                        items: t.contextMenu.fromMenu(this)
                    })
                }
                )).css("display", "none");
                break;
            default:
                throw new Error('Unknown operation "' + e + '"')
            }
            return this
        }
        ,
        t.contextMenu.setInputValues = function(e, n) {
            void 0 === n && (n = {}),
            t.each(e.inputs, (function(t, e) {
                switch (e.type) {
                case "text":
                case "textarea":
                    e.value = n[t] || "";
                    break;
                case "checkbox":
                    e.selected = !!n[t];
                    break;
                case "radio":
                    e.selected = (n[e.radio] || "") === e.value;
                    break;
                case "select":
                    e.selected = n[t] || ""
                }
            }
            ))
        }
        ,
        t.contextMenu.getInputValues = function(e, n) {
            return void 0 === n && (n = {}),
            t.each(e.inputs, (function(t, e) {
                switch (e.type) {
                case "text":
                case "textarea":
                case "select":
                    n[t] = e.$input.val();
                    break;
                case "checkbox":
                    n[t] = e.$input.prop("checked");
                    break;
                case "radio":
                    e.$input.prop("checked") && (n[e.radio] = e.value)
                }
            }
            )),
            n
        }
        ,
        t.contextMenu.fromMenu = function(e) {
            var n = {};
            return function e(n, i, r) {
                return r || (r = 0),
                i.each((function() {
                    var i, o, a = t(this), s = this, c = this.nodeName.toLowerCase();
                    switch ("label" === c && a.find("input, textarea, select").length && (i = a.text(),
                    c = (s = (a = a.children().first()).get(0)).nodeName.toLowerCase()),
                    c) {
                    case "menu":
                        o = {
                            name: a.attr("label"),
                            items: {}
                        },
                        r = e(o.items, a.children(), r);
                        break;
                    case "a":
                    case "button":
                        o = {
                            name: a.text(),
                            disabled: !!a.attr("disabled"),
                            callback: function() {
                                a.get(0).click()
                            }
                        };
                        break;
                    case "menuitem":
                    case "command":
                        switch (a.attr("type")) {
                        case void 0:
                        case "command":
                        case "menuitem":
                            o = {
                                name: a.attr("label"),
                                disabled: !!a.attr("disabled"),
                                icon: a.attr("icon"),
                                callback: function() {
                                    a.get(0).click()
                                }
                            };
                            break;
                        case "checkbox":
                            o = {
                                type: "checkbox",
                                disabled: !!a.attr("disabled"),
                                name: a.attr("label"),
                                selected: !!a.attr("checked")
                            };
                            break;
                        case "radio":
                            o = {
                                type: "radio",
                                disabled: !!a.attr("disabled"),
                                name: a.attr("label"),
                                radio: a.attr("radiogroup"),
                                value: a.attr("id"),
                                selected: !!a.attr("checked")
                            };
                            break;
                        default:
                            o = void 0
                        }
                        break;
                    case "hr":
                        o = "-------";
                        break;
                    case "input":
                        switch (a.attr("type")) {
                        case "text":
                            o = {
                                type: "text",
                                name: i || h(s),
                                disabled: !!a.attr("disabled"),
                                value: a.val()
                            };
                            break;
                        case "checkbox":
                            o = {
                                type: "checkbox",
                                name: i || h(s),
                                disabled: !!a.attr("disabled"),
                                selected: !!a.attr("checked")
                            };
                            break;
                        case "radio":
                            o = {
                                type: "radio",
                                name: i || h(s),
                                disabled: !!a.attr("disabled"),
                                radio: !!a.attr("name"),
                                value: a.val(),
                                selected: !!a.attr("checked")
                            };
                            break;
                        default:
                            o = void 0
                        }
                        break;
                    case "select":
                        o = {
                            type: "select",
                            name: i || h(s),
                            disabled: !!a.attr("disabled"),
                            selected: a.val(),
                            options: {}
                        },
                        a.children().each((function() {
                            o.options[this.value] = t(this).text()
                        }
                        ));
                        break;
                    case "textarea":
                        o = {
                            type: "textarea",
                            name: i || h(s),
                            disabled: !!a.attr("disabled"),
                            value: a.val()
                        };
                        break;
                    case "label":
                        break;
                    default:
                        o = {
                            type: "html",
                            html: a.clone(!0)
                        }
                    }
                    o && (r++,
                    n["key" + r] = o)
                }
                )),
                r
            }(n, t(e).children()),
            n
        }
        ,
        t.contextMenu.defaults = l,
        t.contextMenu.types = c,
        t.contextMenu.handle = d,
        t.contextMenu.op = p,
        t.contextMenu.menus = s
    }
    ) ? i.apply(e, r) : i) || (t.exports = o)
}
, function(t, e, n) {
    var i, r, o;
    /*! jQuery UI - v1.11.4 - 2016-05-04
* http://jqueryui.com
* Includes: position.js
* Copyright jQuery Foundation and other contributors; Licensed MIT */
    r = [n(19)],
    void 0 === (o = "function" == typeof (i = function(t) {
        /*!
 * jQuery UI Position 1.11.4
 * http://jqueryui.com
 *
 * Copyright jQuery Foundation and other contributors
 * Released under the MIT license.
 * http://jquery.org/license
 *
 * http://api.jqueryui.com/position/
 */
        !function() {
            t.ui = t.ui || {};
            var e, n, i = Math.max, r = Math.abs, o = Math.round, a = /left|center|right/, s = /top|center|bottom/, c = /[\+\-]\d+(\.[\d]+)?%?/, l = /^\w+/, u = /%$/, d = t.fn.position;
            function p(t, e, n) {
                return [parseFloat(t[0]) * (u.test(t[0]) ? e / 100 : 1), parseFloat(t[1]) * (u.test(t[1]) ? n / 100 : 1)]
            }
            function h(e, n) {
                return parseInt(t.css(e, n), 10) || 0
            }
            function f(e) {
                var n = e[0];
                return 9 === n.nodeType ? {
                    width: e.width(),
                    height: e.height(),
                    offset: {
                        top: 0,
                        left: 0
                    }
                } : t.isWindow(n) ? {
                    width: e.width(),
                    height: e.height(),
                    offset: {
                        top: e.scrollTop(),
                        left: e.scrollLeft()
                    }
                } : n.preventDefault ? {
                    width: 0,
                    height: 0,
                    offset: {
                        top: n.pageY,
                        left: n.pageX
                    }
                } : {
                    width: e.outerWidth(),
                    height: e.outerHeight(),
                    offset: e.offset()
                }
            }
            t.position = {
                scrollbarWidth: function() {
                    if (void 0 !== e)
                        return e;
                    var n, i, r = t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"), o = r.children()[0];
                    return t("body").append(r),
                    n = o.offsetWidth,
                    r.css("overflow", "scroll"),
                    n === (i = o.offsetWidth) && (i = r[0].clientWidth),
                    r.remove(),
                    e = n - i
                },
                getScrollInfo: function(e) {
                    var n = e.isWindow || e.isDocument ? "" : e.element.css("overflow-x")
                      , i = e.isWindow || e.isDocument ? "" : e.element.css("overflow-y")
                      , r = "scroll" === n || "auto" === n && e.width < e.element[0].scrollWidth;
                    return {
                        width: "scroll" === i || "auto" === i && e.height < e.element[0].scrollHeight ? t.position.scrollbarWidth() : 0,
                        height: r ? t.position.scrollbarWidth() : 0
                    }
                },
                getWithinInfo: function(e) {
                    var n = t(e || window)
                      , i = t.isWindow(n[0])
                      , r = !!n[0] && 9 === n[0].nodeType;
                    return {
                        element: n,
                        isWindow: i,
                        isDocument: r,
                        offset: n.offset() || {
                            left: 0,
                            top: 0
                        },
                        scrollLeft: n.scrollLeft(),
                        scrollTop: n.scrollTop(),
                        width: i || r ? n.width() : n.outerWidth(),
                        height: i || r ? n.height() : n.outerHeight()
                    }
                }
            },
            t.fn.position = function(e) {
                if (!e || !e.of)
                    return d.apply(this, arguments);
                e = t.extend({}, e);
                var u, m, g, v, y, b, w = t(e.of), S = t.position.getWithinInfo(e.within), x = t.position.getScrollInfo(S), M = (e.collision || "flip").split(" "), E = {};
                return b = f(w),
                w[0].preventDefault && (e.at = "left top"),
                m = b.width,
                g = b.height,
                v = b.offset,
                y = t.extend({}, v),
                t.each(["my", "at"], (function() {
                    var t, n, i = (e[this] || "").split(" ");
                    1 === i.length && (i = a.test(i[0]) ? i.concat(["center"]) : s.test(i[0]) ? ["center"].concat(i) : ["center", "center"]),
                    i[0] = a.test(i[0]) ? i[0] : "center",
                    i[1] = s.test(i[1]) ? i[1] : "center",
                    t = c.exec(i[0]),
                    n = c.exec(i[1]),
                    E[this] = [t ? t[0] : 0, n ? n[0] : 0],
                    e[this] = [l.exec(i[0])[0], l.exec(i[1])[0]]
                }
                )),
                1 === M.length && (M[1] = M[0]),
                "right" === e.at[0] ? y.left += m : "center" === e.at[0] && (y.left += m / 2),
                "bottom" === e.at[1] ? y.top += g : "center" === e.at[1] && (y.top += g / 2),
                u = p(E.at, m, g),
                y.left += u[0],
                y.top += u[1],
                this.each((function() {
                    var a, s, c = t(this), l = c.outerWidth(), d = c.outerHeight(), f = h(this, "marginLeft"), b = h(this, "marginTop"), C = l + f + h(this, "marginRight") + x.width, A = d + b + h(this, "marginBottom") + x.height, T = t.extend({}, y), O = p(E.my, c.outerWidth(), c.outerHeight());
                    "right" === e.my[0] ? T.left -= l : "center" === e.my[0] && (T.left -= l / 2),
                    "bottom" === e.my[1] ? T.top -= d : "center" === e.my[1] && (T.top -= d / 2),
                    T.left += O[0],
                    T.top += O[1],
                    n || (T.left = o(T.left),
                    T.top = o(T.top)),
                    a = {
                        marginLeft: f,
                        marginTop: b
                    },
                    t.each(["left", "top"], (function(n, i) {
                        t.ui.position[M[n]] && t.ui.position[M[n]][i](T, {
                            targetWidth: m,
                            targetHeight: g,
                            elemWidth: l,
                            elemHeight: d,
                            collisionPosition: a,
                            collisionWidth: C,
                            collisionHeight: A,
                            offset: [u[0] + O[0], u[1] + O[1]],
                            my: e.my,
                            at: e.at,
                            within: S,
                            elem: c
                        })
                    }
                    )),
                    e.using && (s = function(t) {
                        var n = v.left - T.left
                          , o = n + m - l
                          , a = v.top - T.top
                          , s = a + g - d
                          , u = {
                            target: {
                                element: w,
                                left: v.left,
                                top: v.top,
                                width: m,
                                height: g
                            },
                            element: {
                                element: c,
                                left: T.left,
                                top: T.top,
                                width: l,
                                height: d
                            },
                            horizontal: o < 0 ? "left" : n > 0 ? "right" : "center",
                            vertical: s < 0 ? "top" : a > 0 ? "bottom" : "middle"
                        };
                        m < l && r(n + o) < m && (u.horizontal = "center"),
                        g < d && r(a + s) < g && (u.vertical = "middle"),
                        i(r(n), r(o)) > i(r(a), r(s)) ? u.important = "horizontal" : u.important = "vertical",
                        e.using.call(this, t, u)
                    }
                    ),
                    c.offset(t.extend(T, {
                        using: s
                    }))
                }
                ))
            }
            ,
            t.ui.position = {
                fit: {
                    left: function(t, e) {
                        var n, r = e.within, o = r.isWindow ? r.scrollLeft : r.offset.left, a = r.width, s = t.left - e.collisionPosition.marginLeft, c = o - s, l = s + e.collisionWidth - a - o;
                        e.collisionWidth > a ? c > 0 && l <= 0 ? (n = t.left + c + e.collisionWidth - a - o,
                        t.left += c - n) : t.left = l > 0 && c <= 0 ? o : c > l ? o + a - e.collisionWidth : o : c > 0 ? t.left += c : l > 0 ? t.left -= l : t.left = i(t.left - s, t.left)
                    },
                    top: function(t, e) {
                        var n, r = e.within, o = r.isWindow ? r.scrollTop : r.offset.top, a = e.within.height, s = t.top - e.collisionPosition.marginTop, c = o - s, l = s + e.collisionHeight - a - o;
                        e.collisionHeight > a ? c > 0 && l <= 0 ? (n = t.top + c + e.collisionHeight - a - o,
                        t.top += c - n) : t.top = l > 0 && c <= 0 ? o : c > l ? o + a - e.collisionHeight : o : c > 0 ? t.top += c : l > 0 ? t.top -= l : t.top = i(t.top - s, t.top)
                    }
                },
                flip: {
                    left: function(t, e) {
                        var n, i, o = e.within, a = o.offset.left + o.scrollLeft, s = o.width, c = o.isWindow ? o.scrollLeft : o.offset.left, l = t.left - e.collisionPosition.marginLeft, u = l - c, d = l + e.collisionWidth - s - c, p = "left" === e.my[0] ? -e.elemWidth : "right" === e.my[0] ? e.elemWidth : 0, h = "left" === e.at[0] ? e.targetWidth : "right" === e.at[0] ? -e.targetWidth : 0, f = -2 * e.offset[0];
                        u < 0 ? ((n = t.left + p + h + f + e.collisionWidth - s - a) < 0 || n < r(u)) && (t.left += p + h + f) : d > 0 && ((i = t.left - e.collisionPosition.marginLeft + p + h + f - c) > 0 || r(i) < d) && (t.left += p + h + f)
                    },
                    top: function(t, e) {
                        var n, i, o = e.within, a = o.offset.top + o.scrollTop, s = o.height, c = o.isWindow ? o.scrollTop : o.offset.top, l = t.top - e.collisionPosition.marginTop, u = l - c, d = l + e.collisionHeight - s - c, p = "top" === e.my[1] ? -e.elemHeight : "bottom" === e.my[1] ? e.elemHeight : 0, h = "top" === e.at[1] ? e.targetHeight : "bottom" === e.at[1] ? -e.targetHeight : 0, f = -2 * e.offset[1];
                        u < 0 ? ((i = t.top + p + h + f + e.collisionHeight - s - a) < 0 || i < r(u)) && (t.top += p + h + f) : d > 0 && ((n = t.top - e.collisionPosition.marginTop + p + h + f - c) > 0 || r(n) < d) && (t.top += p + h + f)
                    }
                },
                flipfit: {
                    left: function() {
                        t.ui.position.flip.left.apply(this, arguments),
                        t.ui.position.fit.left.apply(this, arguments)
                    },
                    top: function() {
                        t.ui.position.flip.top.apply(this, arguments),
                        t.ui.position.fit.top.apply(this, arguments)
                    }
                }
            },
            function() {
                var e, i, r, o, a, s = document.getElementsByTagName("body")[0], c = document.createElement("div");
                for (a in e = document.createElement(s ? "div" : "body"),
                r = {
                    visibility: "hidden",
                    width: 0,
                    height: 0,
                    border: 0,
                    margin: 0,
                    background: "none"
                },
                s && t.extend(r, {
                    position: "absolute",
                    left: "-1000px",
                    top: "-1000px"
                }),
                r)
                    e.style[a] = r[a];
                e.appendChild(c),
                (i = s || document.documentElement).insertBefore(e, i.firstChild),
                c.style.cssText = "position: absolute; left: 10.7432222px;",
                o = t(c).offset().left,
                n = o > 10 && o < 11,
                e.innerHTML = "",
                i.removeChild(e)
            }()
        }(),
        t.ui.position
    }
    ) ? i.apply(e, r) : i) || (t.exports = o)
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        }),
        e.$ = t
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__spreadArrays || function() {
        for (var t = 0, e = 0, n = arguments.length; e < n; e++)
            t += arguments[e].length;
        var i = Array(t)
          , r = 0;
        for (e = 0; e < n; e++)
            for (var o = arguments[e], a = 0, s = o.length; a < s; a++,
            r++)
                i[r] = o[a];
        return i
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var r = function() {
        function t(t, e, n) {
            void 0 === t && (t = ""),
            void 0 === e && (e = 1e3 / 60),
            void 0 === n && (n = 1e3 / 30),
            this.label = t,
            this.thresholdWarn = e,
            this.thresholdCritical = n,
            this.durations = {},
            this.startTimes = {}
        }
        return t.prototype.clear = function() {
            this.durations = {},
            this.startTimes = {}
        }
        ,
        t.prototype.time = function(t) {
            this.startTimes[t] = performance.now()
        }
        ,
        t.prototype.timeEnd = function(t) {
            var e = performance.now()
              , n = this.durations[t];
            n || (n = [],
            this.durations[t] = n),
            n.push(e - this.startTimes[t])
        }
        ,
        t.prototype.print = function() {
            var t = Object.keys(this.durations);
            if (t.length) {
                for (var e = [], n = "Timings[" + this.label + "]", r = function(t) {
                    var i = o.durations[t]
                      , r = i.reduce((function(t, e) {
                        return t + e
                    }
                    )) / i.length
                      , a = Math.sqrt(i.map((function(t) {
                        return (t - r) * (t - r)
                    }
                    )).reduce((function(t, e) {
                        return t + e
                    }
                    )) / i.length)
                      , s = Math.max.apply(Math, i);
                    n += "\t| " + t + " " + r.toFixed(1) + " ± " + a.toFixed(1) + "%c max " + s.toFixed(1) + "%c ms",
                    e.push(o.getColor(s)),
                    e.push("color: inherit")
                }, o = this, a = 0, s = t; a < s.length; a++) {
                    r(s[a])
                }
                console.log.apply(console, i([n], e))
            }
        }
        ,
        t.prototype.getColor = function(t) {
            return t < this.thresholdWarn ? "" : t < this.thresholdCritical ? "color: orange" : "color: red"
        }
        ,
        t
    }();
    e.SectionTimer = r;
    var o = function() {
        function t() {}
        return t.prototype.clear = function() {}
        ,
        t.prototype.time = function(t) {}
        ,
        t.prototype.timeEnd = function(t) {}
        ,
        t.prototype.print = function() {}
        ,
        t
    }();
    e.NoOpSectionTimer = o;
    var a = function() {
        function t(t, e, n) {
            this.label = t,
            this.enableFn = e,
            this.interval = n,
            this.enabled = !1
        }
        return Object.defineProperty(t.prototype, "enableReport", {
            get: function() {
                if (!this.enabled && this.enableFn) {
                    this.enabled = !0;
                    var t = new r(this.label);
                    this.enableFn(t),
                    setInterval((function() {
                        t.print(),
                        t.clear()
                    }
                    ), this.interval)
                }
                return !0
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.dispose = function() {
            this.enableFn = void 0
        }
        ,
        t
    }();
    e.SectionTimerConsoleControl = a,
    e.sectionTimerConsoleControl = function(t, e, n) {
        void 0 === n && (n = 5e3);
        var i = new a(t,e,n);
        return console.log(t, i),
        i
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t() {
            this.frame = 0,
            this.geometries = 0,
            this.textures = 0,
            this.programs = 0,
            this.calls = 0,
            this.triangles = 0,
            this.points = 0,
            this.lines = 0
        }
        return t.prototype.reset = function() {
            this.frame++,
            this.calls = this.triangles = this.lines = this.points = 0
        }
        ,
        t.prototype.update = function(t) {
            this.geometries = t.info.memory.geometries,
            this.textures = t.info.memory.textures,
            this.programs = t.info.programs.length,
            this.calls += t.info.render.calls,
            this.lines += t.info.render.lines,
            this.points += t.info.render.points,
            this.triangles += t.info.render.triangles
        }
        ,
        t
    }();
    e.RenderStats = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t() {}
        return t.prototype.set = function(t, e, n, i, r, o) {
            this.depthTexture = t,
            this.rgbaTexture = e,
            this.viewportWidth = n,
            this.viewportHeight = i,
            this.viewportHorizontalOffset = r,
            this.viewportVerticalOffset = o
        }
        ,
        t
    }();
    e.OffscreenRenderOutput = i
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return t.call(this, document.createElement("div")) || this
        }
        return r(e, t),
        e.prototype.onResize = function() {
            this.dimensions = {
                width: e.WIDTH,
                height: e.HEIGHT,
                aspectRatio: e.WIDTH / e.HEIGHT
            }
        }
        ,
        e.WIDTH = 800,
        e.HEIGHT = 600,
        e
    }(n(552).HTMLContainer);
    e.ScreenshotCanvasHtmlContainer = o
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t() {
            this.elements = [],
            this.instructions = []
        }
        return Object.defineProperty(t.prototype, "available", {
            get: function() {
                return this.elements.length > 0
            },
            enumerable: !0,
            configurable: !0
        }),
        t
    }();
    e.RouteData = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(554)
      , r = n(4)
      , o = function() {
        function t() {}
        return t.prototype.fillFromData = function(t) {
            this.location = new r.Vector3(t.longitude,t.latitude,t.z),
            this.distance = t.distance,
            this.floorId = t.floor_id,
            this.siteModelEntityId = t.site_model_entity_id,
            t.instruction && (this.instruction = new i.InstructionEntity,
            this.instruction.fillFromData(t.instruction))
        }
        ,
        t
    }();
    e.RouteElementEntity = o
}
, function(t, e, n) {
    t.exports = n.p + "911dbf3b5d56a1cc57ae19a7671c6c85.pano_instruction_bottomMarker.png"
}
, function(t, e, n) {
    t.exports = n.p + "3ffd85dd86a402de1f828170c4c1777c.dot.png"
}
, function(t, e, n) {
    t.exports = n.p + "cefa3b0a823563a3f963806aeee2b100.list_instruction_start_route.png"
}
, function(t, e, n) {
    t.exports = n.p + "bd1e2bece420a7fbb197868a81781f9e.pano_instruction_start_route.png"
}
, function(t, e, n) {
    t.exports = n.p + "1f93ee89d694ee48a92f0fcdd32e1245.map_instruction_start_route.png"
}
, function(t, e, n) {
    t.exports = n.p + "f37f8fa9bda44f7e336cc06047b348da.list_instruction_reach_target.png"
}
, function(t, e, n) {
    t.exports = n.p + "47fcfb41157da93803056c5e50456618.pano_instruction_target_reached.png"
}
, function(t, e, n) {
    t.exports = n.p + "1948d8fcdc35436c8556acf54aee3ec3.map_instruction_target_reached.png"
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(4)
      , r = n(101)
      , o = n(319)
      , a = n(153)
      , s = n(113)
      , c = function() {
        function t(t, e) {
            for (var n, i = [], r = 2; r < arguments.length; r++)
                i[r - 2] = arguments[r];
            this.injectables = t,
            this.floor = e,
            this._stairPositions = [],
            this._nonStairPositions = [],
            this.ICON_SPACING_FACTOR = 2,
            this.views = new Set,
            this.resolveInjectables(),
            (n = this._nonStairPositions).push.apply(n, i);
            var a = this.GeoTransformationService.vectorArrayToLocal(i);
            this._distance = o.computePathLength(a)
        }
        return t.prototype.resolveInjectables = function() {
            this.UoMService = this.injectables.UoMService,
            this.IV = this.injectables.IV,
            this.GeoTransformationService = this.injectables.GeoTransformationService,
            this.FloorChangerService = this.injectables.FloorChangerService,
            this.ImageService = this.injectables.ImageService
        }
        ,
        t.prototype.build = function() {
            this.buildMaterials()
        }
        ,
        t.prototype.render = function(e, n, i, r) {
            this.views.add(e),
            t.iconSize = r;
            var o = [];
            i || o.push.apply(o, this._stairPositions),
            o.push.apply(o, this._nonStairPositions),
            this.interpolateAndRender(e, n, o, i)
        }
        ,
        t.prototype.interpolateAndRender = function(t, e, n, i) {
            for (var r = this.interpolatePositions(n, i), o = this.generateIconsToBeRendered(t, i, r), a = this.getStartIndex(e), s = 0, c = o.slice(a, o.length - 1); s < c.length; s++) {
                var l = c[s];
                e.add(l)
            }
        }
        ,
        t.prototype.interpolatePositions = function(e, n) {
            var i = this.GeoTransformationService.vectorArrayToLocal(e);
            return o.interpolatePoints(i, t.iconSize * this.ICON_SPACING_FACTOR, n)
        }
        ,
        t.prototype.getStartIndex = function(t) {
            if (t.children.length < 1)
                return 0;
            var e = t.children[t.children.length - 1].position
              , n = this.GeoTransformationService.vectorToLocal(this.position);
            return e.x === n.x && e.y === n.y ? 1 : 0
        }
        ,
        t.prototype.moveToInstruction = function() {
            var t = this
              , e = this._nonStairPositions;
            return 0 === this._nonStairPositions.length && (e = this._stairPositions),
            this.ImageService.getClosestImageOnFloorGlobal(e[0]).then((function(n) {
                var i = {
                    lon: Math.atan2(e[0].y - e[1].y, e[0].x - e[1].x),
                    lat: 0
                };
                return t.IV.moveToImage(n, i)
            }
            ))
        }
        ,
        Object.defineProperty(t.prototype, "position", {
            get: function() {
                return this._stairPositions.length > 0 ? this._stairPositions[0] : this._nonStairPositions[0]
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.onBeforeRender = function(t) {}
        ,
        t.prototype.generateIconsToBeRendered = function(t, e, n) {
            for (var i = [], r = 0, a = n; r < a.length; r++) {
                var s = a[r];
                i.push(this.selectCorrectIcon(s, e))
            }
            return e && (i = this.removeDistantIcons(t, i)),
            o.orientIcons(i),
            i
        }
        ,
        t.prototype.removeDistantIcons = function(t, e) {
            for (var n = t.getCamera().position, i = [], r = 0, a = e; r < a.length; r++) {
                var s = a[r];
                !o.isPositionInSight(n, s.position) || this.floor && !this.FloorChangerService.isInCurrentFloors(this.floor) || i.push(s)
            }
            return i
        }
        ,
        t.prototype.selectCorrectIcon = function(e, n) {
            return n ? o.createIcon(this.panoramaRouteIcon, e, t.iconSize) : this.floor ? this.FloorChangerService.isInCurrentFloors(this.floor) ? o.createIcon(this.activeFloorIcon, e, t.iconSize) : o.createIcon(this.inactiveFloorIcon, e, t.iconSize) : o.createIcon(this.fsnaIcon, e, t.iconSize)
        }
        ,
        t.prototype.buildMaterials = function() {
            var t = this
              , e = r.getTextureLoader();
            this.activeFloorIcon = new i.MeshBasicMaterial({
                map: e.load(n(1151), (function() {
                    return t.invalidateScenes()
                }
                )),
                transparent: !0,
                opacity: 1,
                depthWrite: !1,
                side: i.DoubleSide
            }),
            this.fsnaIcon = new i.MeshBasicMaterial({
                map: e.load(n(1152), (function() {
                    return t.invalidateScenes()
                }
                )),
                transparent: !0,
                opacity: 1,
                depthWrite: !1,
                side: i.DoubleSide
            }),
            this.inactiveFloorIcon = new i.MeshBasicMaterial({
                map: e.load(n(1153), (function() {
                    return t.invalidateScenes()
                }
                )),
                transparent: !0,
                opacity: o.INACTIVE_FLOOR_ICON_OPACITY,
                depthWrite: !1,
                side: i.DoubleSide
            });
            var a = e.load(n(1154), (function() {
                return t.invalidateScenes()
            }
            ));
            a.anisotropy = r.ANISOTROPIC_LEVEL,
            this.panoramaRouteIcon = new i.MeshBasicMaterial({
                map: a,
                transparent: !0,
                opacity: 1,
                side: i.DoubleSide,
                depthTest: !1
            })
        }
        ,
        t.prototype.invalidateScenes = function() {
            this.views.forEach((function(t) {
                return t.invalidateScene()
            }
            ))
        }
        ,
        Object.defineProperty(t.prototype, "stairPositions", {
            get: function() {
                return this._stairPositions
            },
            set: function(t) {
                this._stairPositions = t;
                var e = this.GeoTransformationService.vectorArrayToLocal(t);
                this._distance += o.computePathLength(e)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "nonStairPositions", {
            get: function() {
                return this._nonStairPositions
            },
            set: function(t) {
                this._nonStairPositions = t;
                var e = this.GeoTransformationService.vectorArrayToLocal(t);
                this._distance += o.computePathLength(e)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "distance", {
            get: function() {
                return this._distance
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.getFloor = function() {
            return this.floor
        }
        ,
        Object.defineProperty(t.prototype, "text", {
            get: function() {
                return "Walk " + this.UoMService.convert(this._distance, a.MeasurementDomain.DISTANCE, 0)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "type", {
            get: function() {
                return s.InstructionType.EDGE
            },
            enumerable: !0,
            configurable: !0
        }),
        t
    }();
    e.EdgeInstruction = c
}
, function(t, e, n) {
    t.exports = n.p + "61226493556b9325acb06ff86cbb268f.routePoint_map_activeFloor.png"
}
, function(t, e, n) {
    t.exports = n.p + "b8fc7bc95148b00a9db30132f3e3df6d.routePoint_map_fsna.png"
}
, function(t, e, n) {
    t.exports = n.p + "48b777f04664666d50d865f31c9c984b.routePoint_map_inactiveFloor.png"
}
, function(t, e, n) {
    t.exports = n.p + "af15c6d6a2349058d403d4a736224a01.routePoint_panorama.png"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(138)
      , a = n(113)
      , s = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e, n, i) || this;
            return o.siteModelName = r,
            o
        }
        return r(e, t),
        e.prototype.buildText = function() {
            return this.siteModelName ? this.gettextCatalog.getString("Enter building {{name}}", {
                name: this.siteModelName
            }, "navigation instruction") : this.gettextCatalog.getString("Enter building", void 0, "navigation instruction")
        }
        ,
        e.prototype.buildIcons = function() {
            return {
                map: n(1156),
                panorama: n(1157),
                text: n(1158)
            }
        }
        ,
        Object.defineProperty(e.prototype, "type", {
            get: function() {
                return a.InstructionType.ENTER_BUILDING
            },
            enumerable: !0,
            configurable: !0
        }),
        e
    }(o.SpecialInstruction);
    e.EnterBuildingInstruction = s
}
, function(t, e, n) {
    t.exports = n.p + "5331e69636f6fc3bbcfefc4f29b2c8c2.map_instruction_building_enter.png"
}
, function(t, e, n) {
    t.exports = n.p + "3181f3e99ad663d9bb44ee631c2197a9.pano_instruction_building_enter.png"
}
, function(t, e, n) {
    t.exports = n.p + "a3de88be617b08f322aa949cd9cca8fc.list_instruction_enter_building.png"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(138)
      , a = n(113)
      , s = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e, n, i) || this;
            return o.siteModelName = r,
            o
        }
        return r(e, t),
        e.prototype.buildText = function() {
            return this.siteModelName ? this.gettextCatalog.getString("Exit building {{name}}", {
                name: this.siteModelName
            }, "navigation instruction") : this.gettextCatalog.getString("Exit building", void 0, "navigation instruction")
        }
        ,
        e.prototype.buildIcons = function() {
            return {
                panorama: n(1160),
                map: n(1161),
                text: n(1162)
            }
        }
        ,
        Object.defineProperty(e.prototype, "type", {
            get: function() {
                return a.InstructionType.EXIT_BUILDING
            },
            enumerable: !0,
            configurable: !0
        }),
        e
    }(o.SpecialInstruction);
    e.ExitBuildingInstruction = s
}
, function(t, e, n) {
    t.exports = n.p + "438a8ba925b0a32fccc3dee7de83663e.pano_instruction_building_leave.png"
}
, function(t, e, n) {
    t.exports = n.p + "1fe243b452f403e0fba7f1c437a60013.map_instruction_building_leave.png"
}
, function(t, e, n) {
    t.exports = n.p + "f6049bec65b449d4186e6ca3b3426699.list_instruction_exit_building.png"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(138)
      , a = n(113)
      , s = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e, n, i) || this;
            return o.siteModelName = r,
            o
        }
        return r(e, t),
        e.prototype.buildText = function() {
            return this.siteModelName ? this.gettextCatalog.getString("Take stairs to floor {{name}}", {
                name: this.siteModelName
            }, "navigation instruction") : this.gettextCatalog.getString("Take stairs up", void 0, "navigation instruction")
        }
        ,
        e.prototype.buildIcons = function() {
            return {
                map: n(1164),
                panorama: n(1165),
                text: n(1166)
            }
        }
        ,
        Object.defineProperty(e.prototype, "type", {
            get: function() {
                return a.InstructionType.ENTER_STAIRS_UP
            },
            enumerable: !0,
            configurable: !0
        }),
        e
    }(o.SpecialInstruction);
    e.StairsUpInstruction = s
}
, function(t, e, n) {
    t.exports = n.p + "1041b5ac520b2fd1531e7136a51eb2b6.map_instruction_stairs_up.png"
}
, function(t, e, n) {
    t.exports = n.p + "fd0e88041bea27c36aa371f728fdf9df.pano_instruction_stairs_up.png"
}
, function(t, e, n) {
    t.exports = n.p + "024ecb31b5d7cdf0d4e5f5f75c410b79.list_instruction_stairs_up.png"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(138)
      , a = n(113)
      , s = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e, n, i) || this;
            return o.siteModelName = r,
            o
        }
        return r(e, t),
        e.prototype.buildText = function() {
            return this.siteModelName ? this.gettextCatalog.getString("Take stairs to floor {{name}}", {
                name: this.siteModelName
            }, "navigation instruction") : this.gettextCatalog.getString("Take stairs down", void 0, "navigation instruction")
        }
        ,
        e.prototype.buildIcons = function() {
            return {
                map: n(1168),
                panorama: n(1169),
                text: n(1170)
            }
        }
        ,
        Object.defineProperty(e.prototype, "type", {
            get: function() {
                return a.InstructionType.ENTER_STAIRS_DOWN
            },
            enumerable: !0,
            configurable: !0
        }),
        e
    }(o.SpecialInstruction);
    e.StairsDownInstruction = s
}
, function(t, e, n) {
    t.exports = n.p + "16134081448e2f3e82a7dc9d74993dc8.map_instruction_stairs_down.png"
}
, function(t, e, n) {
    t.exports = n.p + "bbcd2a8bd66f3f01dd8bcfc7db266a67.pano_instruction_stairs_down.png"
}
, function(t, e, n) {
    t.exports = n.p + "089d1925d07d5d5917c673d29d747a3a.list_instruction_stairs_down.png"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(138)
      , a = n(113)
      , s = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e, n, i) || this;
            return o.siteModelName = r,
            o
        }
        return r(e, t),
        e.prototype.buildText = function() {
            return this.siteModelName ? this.gettextCatalog.getString("Take elevator to floor {{name}}", {
                name: this.siteModelName
            }, "navigation instruction") : this.gettextCatalog.getString("Take elevator down", void 0, "navigation instruction")
        }
        ,
        e.prototype.buildIcons = function() {
            return {
                map: n(1172),
                panorama: n(1173),
                text: n(1174)
            }
        }
        ,
        Object.defineProperty(e.prototype, "type", {
            get: function() {
                return a.InstructionType.ENTER_ELEVATOR_DOWN
            },
            enumerable: !0,
            configurable: !0
        }),
        e
    }(o.SpecialInstruction);
    e.ElevatorDownInstruction = s
}
, function(t, e, n) {
    t.exports = n.p + "bdff652621abd816819ae7b4cc667d46.map_instruction_elevator_down.png"
}
, function(t, e, n) {
    t.exports = n.p + "3beb0195e182d8950c36a0ab83df0be6.pano_instruction_elevator_down.png"
}
, function(t, e, n) {
    t.exports = n.p + "a655cb6ee3cfbf36218280ba05b8e04b.list_instruction_elevator_down.png"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(138)
      , a = n(113)
      , s = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e, n, i) || this;
            return o.siteModelName = r,
            o
        }
        return r(e, t),
        e.prototype.buildText = function() {
            return this.siteModelName ? this.gettextCatalog.getString("Take elevator to floor {{name}}", {
                name: this.siteModelName
            }, "navigation instruction") : this.gettextCatalog.getString("Take elevator up", void 0, "navigation instruction")
        }
        ,
        e.prototype.buildIcons = function() {
            return {
                map: n(1176),
                panorama: n(1177),
                text: n(1178)
            }
        }
        ,
        Object.defineProperty(e.prototype, "type", {
            get: function() {
                return a.InstructionType.ENTER_ELEVATOR_UP
            },
            enumerable: !0,
            configurable: !0
        }),
        e
    }(o.SpecialInstruction);
    e.ElevatorUpInstruction = s
}
, function(t, e, n) {
    t.exports = n.p + "32308edfcc4781ff1956d221db0c3b4a.map_instruction_elevator_up.png"
}
, function(t, e, n) {
    t.exports = n.p + "5e2b978297e86eae7e0e56e235fb6406.pano_instruction_elevator_up.png"
}
, function(t, e, n) {
    t.exports = n.p + "be2d6c616f4888bb9a649be749450e51.list_instruction_elevator_up.png"
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {};
    e.InstructionsInjectables = i
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(138)
      , a = n(113)
      , s = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e, n, i) || this;
            return o.siteModelName = r,
            o
        }
        return r(e, t),
        e.prototype.buildText = function() {
            return this.siteModelName ? this.gettextCatalog.getString("Change up to floor {{name}}", {
                name: this.siteModelName
            }, "navigation instruction") : this.gettextCatalog.getString("Change floor up", void 0, "navigation instruction")
        }
        ,
        e.prototype.buildIcons = function() {
            return {
                map: n(1181),
                panorama: n(1182),
                text: n(1183)
            }
        }
        ,
        Object.defineProperty(e.prototype, "type", {
            get: function() {
                return a.InstructionType.CHANGE_FLOOR_UP
            },
            enumerable: !0,
            configurable: !0
        }),
        e
    }(o.SpecialInstruction);
    e.GenericFloorUpInstruction = s
}
, function(t, e, n) {
    t.exports = n.p + "301b086a5737a614a867d64160488586.map_instruction_generic_floor_up.png"
}
, function(t, e, n) {
    t.exports = n.p + "1f94a1131aade72eb3d97625c2265682.pano_instruction_generic_floor_up.png"
}
, function(t, e, n) {
    t.exports = n.p + "7d2b299abdf2b228a7397299bfeda9bc.list_instruction_generic_floor_up.png"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(138)
      , a = n(113)
      , s = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e, n, i) || this;
            return o.siteModelName = r,
            o
        }
        return r(e, t),
        e.prototype.buildText = function() {
            return this.siteModelName ? this.gettextCatalog.getString("Change down to floor {{name}}", {
                name: this.siteModelName
            }, "navigation instruction") : this.gettextCatalog.getString("Change floor down", void 0, "navigation instruction")
        }
        ,
        e.prototype.buildIcons = function() {
            return {
                map: n(1185),
                panorama: n(1186),
                text: n(1187)
            }
        }
        ,
        Object.defineProperty(e.prototype, "type", {
            get: function() {
                return a.InstructionType.CHANGE_FLOOR_DOWN
            },
            enumerable: !0,
            configurable: !0
        }),
        e
    }(o.SpecialInstruction);
    e.GenericFloorDownInstruction = s
}
, function(t, e, n) {
    t.exports = n.p + "cbd1ebe9fd46a1da656cf0fcf3477640.map_instruction_generic_floor_down.png"
}
, function(t, e, n) {
    t.exports = n.p + "b6a07d33fcc66614f8bafbe4ec61c63c.pano_instruction_generic_floor_down.png"
}
, function(t, e, n) {
    t.exports = n.p + "324dbe11aa1f9727faf5a4a19e0cb2b3.list_instruction_generic_floor_down.png"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.applies = function(t) {
            switch (this.getExceptionShortName(t)) {
            case "NoNavgraphNearRouteStartException":
                return this.currentErrorMessage = this.gettextCatalog.getString("No route found: Start is outside the routable area.", void 0, "Route status message"),
                !0;
            case "NoNavgraphNearDestinationException":
                return this.currentErrorMessage = this.gettextCatalog.getString("No route found: Destination is outside the routable area.", void 0, "Route status message"),
                !0;
            case "NavgraphCacheException":
                return this.currentErrorMessage = this.gettextCatalog.getString("Route cannot be calculated: Route begins or ends with a node that is not connected to the navigation graph.", void 0, "Route status message"),
                !0;
            default:
                return !1
            }
        }
        ,
        e.prototype.getExceptionMessage = function(e) {
            return t.prototype.getExceptionMessage.call(this, e)
        }
        ,
        e
    }(n(145).ServerExceptionClassDetector);
    e.ServerRoutingExceptionDetector = o
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(7)
      , r = function() {
        function t(t) {
            this.versionString = i.clone(t.version);
            var e = this.versionString.split(".");
            this.major = parseInt(e[0], 10),
            this.minor = parseInt(e[1], 10),
            this.revision = parseInt(e[2], 10)
        }
        return t.prototype.compareTo = function(t, e, n) {
            return this.major !== t ? this.major - t : this.minor !== e ? this.minor - e : this.revision - n
        }
        ,
        t
    }();
    e.VersionInfo = r
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var i = n(1191);
        function r(e, n) {
            return void 0 === n && (n = "utf8"),
            t.isBuffer(e) ? a(e.toString("base64")) : a(t.from(e, n).toString("base64"))
        }
        function o(t) {
            return t = t.toString(),
            i.default(t).replace(/\-/g, "+").replace(/_/g, "/")
        }
        function a(t) {
            return t.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_")
        }
        var s = r;
        s.encode = r,
        s.decode = function(e, n) {
            return void 0 === n && (n = "utf8"),
            t.from(o(e), "base64").toString(n)
        }
        ,
        s.toBase64 = o,
        s.fromBase64 = a,
        s.toBuffer = function(e) {
            return t.from(o(e), "base64")
        }
        ,
        e.default = s
    }
    ).call(this, n(315).Buffer)
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        }),
        e.default = function(e) {
            var n = e.length
              , i = n % 4;
            if (!i)
                return e;
            var r = n
              , o = 4 - i
              , a = n + o
              , s = t.alloc(a);
            for (s.write(e); o--; )
                s.write("=", r++);
            return s.toString()
        }
    }
    ).call(this, n(315).Buffer)
}
, function(t, e, n) {
    t.exports = n.p + "0ae72e353e12716c1d1b33208d4c0ad6.arrow.png"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(4)
      , a = n(157)
      , s = function(t) {
        function e(n, i, r) {
            var a = this
              , s = {
                map: {
                    value: e.defaultTexture
                },
                depthMap: {
                    value: e.defaultDepthTexture
                },
                alphaMap: {
                    value: i
                },
                opacity: {
                    value: 0
                },
                depthOpacity: {
                    value: 0
                },
                depthB: {
                    value: 0
                },
                depthA: {
                    value: 0
                },
                hsv: {
                    value: !1
                },
                inverseProjectionMatrix: {
                    value: new o.Matrix4
                },
                viewport: {
                    value: new o.Vector4
                }
            };
            return (a = t.call(this, {
                uniforms: s,
                vertexShader: e.imageVS,
                fragmentShader: r.depthOpacity > 0 ? e.imageDepthFS : e.imageFS,
                transparent: !0,
                depthTest: e.ENABLE_DEPTH_TEST,
                depthFunc: e.ENABLE_DEPTH_TEST ? o.AlwaysDepth : o.NeverDepth,
                depthWrite: e.ENABLE_DEPTH_TEST,
                wireframe: !1,
                blending: n
            }) || this).setDepthUniforms(r),
            i && (a.defines.USE_ALPHAMAP = void 0),
            e.ENABLE_DEPTH_TEST && (a.extensions.fragDepth = !0),
            a
        }
        return r(e, t),
        e.disposeSharedTextures = function() {
            this.defaultTexture.dispose(),
            this.defaultDepthTexture.dispose()
        }
        ,
        e.prototype.disposeTextures = function() {
            this.disposeTexture(),
            this.disposeDepthTexture()
        }
        ,
        e.prototype.disposeTexture = function() {
            void 0 !== this.map && this.map !== e.defaultTexture && this.map.dispose()
        }
        ,
        e.prototype.disposeDepthTexture = function() {
            void 0 !== this.depthMap && this.depthMap !== e.defaultDepthTexture && this.depthMap.dispose()
        }
        ,
        e.prototype.setDepthUniforms = function(t) {
            var e = t.maxDistance / 2 - .1;
            t.halfDistance = Math.min(t.halfDistance, e);
            var n = Math.pow(t.halfDistance, 2) / (t.maxDistance - 2 * t.halfDistance)
              , i = 1 / Math.log(t.maxDistance / n + 1);
            this.uniforms.depthOpacity.value = t.depthOpacity,
            this.uniforms.depthA.value = n,
            this.uniforms.depthB.value = i,
            this.uniforms.hsv.value = t.hsv
        }
        ,
        Object.defineProperty(e.prototype, "map", {
            get: function() {
                return this.uniforms.map.value
            },
            set: function(t) {
                this.uniforms.map.value = t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "depthMap", {
            get: function() {
                return this.uniforms.depthMap.value
            },
            set: function(t) {
                this.uniforms.depthMap.value = t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "imageOpacity", {
            get: function() {
                return this.uniforms.opacity.value
            },
            set: function(t) {
                this.uniforms.opacity.value = t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "depthOverlay", {
            set: function(t) {
                var n;
                this.setDepthUniforms(t),
                t.depthOpacity > 0 ? n = e.imageDepthFS : (n = e.imageFS,
                this.disposeDepthTexture()),
                n !== this.fragmentShader && (this.dispose(),
                this.fragmentShader = n)
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.updateCustomUniforms = function(t, e) {
            t.getCurrentViewport(this.uniforms.viewport.value),
            this.uniforms.inverseProjectionMatrix.value.getInverse(e.projectionMatrix)
        }
        ,
        e.ENABLE_DEPTH_TEST = !0,
        e.defaultTexture = a.generateDataTexture(1, 1, new o.Color(2105376)),
        e.defaultDepthTexture = a.generateDataTexture(1, 1, new o.Color(0)),
        e.imageVS = n(1194),
        e.imageFS = n(1195),
        e.imageDepthFS = n(1196),
        e
    }(o.ShaderMaterial);
    e.ImageMaterial = s
}
, function(t, e) {
    t.exports = "varying vec2 vUv;\n\nvoid main()\n{\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.);\n\n\t// Forward texture coordinate to fragment shader\n\tvUv = uv;\n}\n"
}
, function(t, e) {
    t.exports = "uniform sampler2D map;\nuniform float opacity;\nvarying vec2 vUv;\n\n#ifdef USE_ALPHAMAP\nuniform sampler2D alphaMap;\n#endif\n\n#ifdef GL_EXT_frag_depth\nuniform sampler2D depthMap;\nuniform mat4 inverseProjectionMatrix;\nuniform mat4 projectionMatrix;\nuniform vec4 viewport;\n#endif\n\nvoid main()\n{\n\tvec4 color = texture2D(map, vUv);\n\tfloat alpha = opacity;\n\n#ifdef USE_ALPHAMAP\n\talpha *= texture2D(alphaMap, vUv).g;\n#endif\n\n\tgl_FragColor = vec4(color.r, color.g, color.b, alpha);\n\n#ifdef GL_EXT_frag_depth\n\n/*\n* Useful resources:\n*\n* https://www.khronos.org/opengl/wiki/Vertex_Post-Processing#Viewport_transform\n*   Clipping, perspective divide viewport transform\n*\n* https://www.khronos.org/opengl/wiki/Compute_eye_space_from_window_space\n*   From window (viewport) space back to eye space in GLSL\n*\n* https://www.khronos.org/opengl/wiki/Vertex_Transformation\n*   Summary of transformations object -> world -> eye (camera, view) -> clip -> NDC -> window\n*\n* http://slideplayer.com/slide/6837153/#\n*   Overview presentation\n*\n* http://www.shaderific.com/glsl-variables/\n*   GLSL built-in variables\n*/\n\n\tvec4 depth = texture2D(depthMap, vUv);\n\tfloat distance = depth.r + 256. * (depth.g + 256. * depth.b);\n\tdistance *= 255. * .001;           // distance is now in meters\n\n\tvec4 ndcPos;\n\tndcPos.xy = ((2.0 * gl_FragCoord.xy) - (2.0 * viewport.xy)) / (viewport.zw) - 1.;\n\tndcPos.z = (2.0 * gl_FragCoord.z - gl_DepthRange.near - gl_DepthRange.far) /\n\t\t(gl_DepthRange.far - gl_DepthRange.near);\n\tndcPos.w = 1.0;\n\n\tvec4 clipPos = ndcPos / gl_FragCoord.w;\n\tvec4 eyePos = inverseProjectionMatrix * clipPos;\n\n\tdistance += .1;          // add a safety margin\n\n\tvec4 eyePos2 = vec4(normalize(eyePos.xyz) * distance, 1.);\n\tvec4 clipPos2 = projectionMatrix * eyePos2;\n\tvec4 ndcPos2 = clipPos2 * 1. / clipPos2.w;\n\n\tgl_FragDepthEXT = 0.5 * ((gl_DepthRange.far - gl_DepthRange.near) * ndcPos2.z\n\t\t\t+ gl_DepthRange.near + gl_DepthRange.far);\n\n#endif\n\n}\n"
}
, function(t, e) {
    t.exports = "uniform sampler2D map;\nuniform float opacity;\nvarying vec2 vUv;\n\nuniform sampler2D depthMap;\nuniform float depthOpacity;\nuniform float depthA;\nuniform float depthB;\nuniform bool hsv;\n\nvec3 hsv2rgb(float h, float s, float v)\n{\n    vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n    vec3 p = abs(fract(h + K.xyz) * 6.0 - K.www);\n    return v * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), s);\n}\n\n/**\n * A fragment shader that blends an RGB image and a depth image\n */\nvoid main()\n{\n\tvec4 color = texture2D(map, vUv);\n\tvec4 depth = texture2D(depthMap, vUv);\n\tfloat distance = depth.r + 256. * (depth.g + 256. * depth.b);\n\tdistance *= 255. * .001;           // distance is now in meters\n\n\tfloat distanceValue = 0.;          // used if no distance is available for this fragment\n\tif (distance > 0.)\n\t{\n\t\t// Map the distance to brightness with a logarithmic curve,\n\t\tdistanceValue = log(distance / depthA + 1.) * depthB;\n\t}\n\n\tvec3 depthColor = hsv\n\t\t// Use HSV color map\n\t\t? hsv2rgb(clamp(distanceValue, 0., 1.), 1., 1.)\n\t\t// Grayscale: subtract from 1 to make distant fragments dark and close ones bright\n\t\t: 1. - vec3(distanceValue);\n\n\tgl_FragColor = vec4(mix(color.rgb, depthColor, depthOpacity), opacity);\n}\n"
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function(t, e, n, i, r, o) {
        this.geometry = t,
        this.location = e,
        this.orientation = n,
        this.datasetOrientation = i,
        this.datasetLocation = r,
        this.datasetId = o
    };
    e.CursorData = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function(t) {
        this.type = "point",
        this.coordinates = t
    };
    e.Point = i
}
, function(t, e, n) {
    t.exports = n.p + "81cf314660ee47ab9c04dc47bc26de4b.cursor_side.png"
}
, function(t, e, n) {
    t.exports = n.p + "42358c64435fd5376879b55e8cd16a0d.cross_hair.png"
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(4)
      , r = n(309)
      , o = n(108)
      , a = n(564)
      , s = function() {
        function t(t, e, n, i) {
            this.minDistance = t,
            this.poiPxSize = e,
            this.pixelsPerMeter = n,
            this.highlightedPois = i,
            this.poiGrid = []
        }
        return t.prototype.addToGrid = function(t, e) {
            var n = t.location
              , i = this.getRow(n)
              , r = this.getColumn(n);
            if (!this.getCell(i, r)) {
                var o = !0
                  , a = this.getPoiCorners(t, e);
                this.checkBlockedCells(a.rowStart, a.rowEnd, a.columnStart, a.columnEnd) ? o = !1 : this.blockCells(a.rowStart, a.rowEnd, a.columnStart, a.columnEnd),
                o && this.setCell(t, i, r)
            }
        }
        ,
        t.prototype.getArray = function() {
            var t = [];
            this.processGrid();
            for (var e = 0, n = this.getRows(); e < n.length; e++)
                for (var i = n[e], o = 0, a = this.getColumns(i); o < a.length; o++) {
                    var s = a[o]
                      , c = this.poiGrid[i][s];
                    c && c instanceof r.PoiEntity && t.push(c)
                }
            return t
        }
        ,
        t.prototype.getRow = function(t) {
            return t instanceof i.Vector3 ? Math.floor(t.y / this.minDistance) : Math.floor(t / this.minDistance)
        }
        ,
        t.prototype.getColumn = function(t) {
            return t instanceof i.Vector3 ? Math.floor(t.x / this.minDistance) : Math.floor(t / this.minDistance)
        }
        ,
        t.prototype.getRows = function() {
            return Object.keys(this.poiGrid).map((function(t) {
                return parseInt(t, 10)
            }
            ))
        }
        ,
        t.prototype.getColumns = function(t) {
            return this.poiGrid[t] ? Object.keys(this.poiGrid[t]).map((function(t) {
                return parseInt(t, 10)
            }
            )) : []
        }
        ,
        t.prototype.getCell = function(t, e) {
            return this.poiGrid[t] || (this.poiGrid[t] = []),
            this.poiGrid[t][e]
        }
        ,
        t.prototype.setCell = function(t, e, n) {
            this.poiGrid[e] || (this.poiGrid[e] = []),
            this.poiGrid[e][n] = t
        }
        ,
        t.prototype.getPoiCorners = function(t, e) {
            var n = this.poiPxSize / this.pixelsPerMeter
              , i = {
                x: t.location.x - n / 2,
                y: t.location.y - n / 2,
                width: e.visibleSize.x / this.pixelsPerMeter,
                height: e.visibleSize.y / this.pixelsPerMeter
            };
            return {
                rowStart: this.getRow(i.y),
                rowEnd: this.getRow(i.y + i.height),
                columnStart: this.getColumn(i.x),
                columnEnd: this.getColumn(i.x + i.width)
            }
        }
        ,
        t.prototype.checkBlockedCells = function(t, e, n, i) {
            if (!(isFinite(t) && isFinite(e) && isFinite(n) && isFinite(i)))
                throw new o.IVFrontendException("Invalid arguments (grid range must be finite)");
            for (var r = t; r <= e; ++r)
                for (var a = n; a <= i; ++a)
                    if (this.poiGrid[r] && void 0 !== this.poiGrid[r][a])
                        return !0;
            return !1
        }
        ,
        t.prototype.blockCells = function(t, e, n, i) {
            for (var r = t; r <= e; ++r)
                for (var o = n; o <= i; ++o)
                    this.poiGrid[r] || (this.poiGrid[r] = []),
                    this.poiGrid[r][o] = !1
        }
        ,
        t.prototype.processGrid = function() {
            for (var t = 0, e = this.getRows(); t < e.length; t++) {
                var n = e[t];
                if (!this.poiGrid[n])
                    return;
                for (var i = 0, r = this.getColumns(n); i < r.length; i++) {
                    var o = r[i];
                    this.comparePOIs(n, o, n - 1, o, this.highlightedPois),
                    this.comparePOIs(n, o, n - 1, o + 1, this.highlightedPois),
                    this.comparePOIs(n, o, n, o + 1, this.highlightedPois),
                    this.comparePOIs(n, o, n + 1, o, this.highlightedPois),
                    this.comparePOIs(n, o, n + 1, o + 1, this.highlightedPois)
                }
            }
        }
        ,
        t.prototype.comparePOIs = function(t, e, n, i, r) {
            if (this.poiGrid[t] && this.poiGrid[t][e] && this.poiGrid[n] && this.poiGrid[n][i]) {
                var o = this.poiGrid[t][e]
                  , s = this.poiGrid[n][i];
                Math.abs(o.location.x - s.location.x) < this.minDistance && Math.abs(o.location.y - s.location.y) < this.minDistance && -1 === a.comparePoiImportance(o, s, r) && delete this.poiGrid[n][i]
            }
        }
        ,
        t
    }();
    e.PoiGridManager = s
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(1203)
      , r = n(1204)
      , o = n(68)
      , a = function() {
        function t() {
            this._adjacencyList = new Map,
            this.localId = -1
        }
        return Object.defineProperty(t.prototype, "adjacencyList", {
            get: function() {
                return this._adjacencyList
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.createLocalId = function() {
            return this.localId--
        }
        ,
        t.prototype.addNode = function(t) {
            this._adjacencyList.has(t.id) ? this._adjacencyList.get(t.id).resource = t : this._adjacencyList.set(t.id, new i.NavGraphEditingAdjacencyListNode(t))
        }
        ,
        t.prototype.addEdges = function(t) {
            for (var e = 0, n = t; e < n.length; e++) {
                var i = n[e];
                this.addEdge(i)
            }
        }
        ,
        t.prototype.addEdge = function(t) {
            this._adjacencyList.has(t.source.id) || this._adjacencyList.set(t.source.id, new i.NavGraphEditingAdjacencyListNode),
            this._adjacencyList.get(t.source.id).edges.set(t.target.id, new r.NavGraphEditingAdjacencyListEdge(t)),
            this._adjacencyList.has(t.target.id) || this._adjacencyList.set(t.target.id, new i.NavGraphEditingAdjacencyListNode),
            this._adjacencyList.get(t.target.id).edges.set(t.source.id, new r.NavGraphEditingAdjacencyListEdge(t,!0))
        }
        ,
        t.prototype.removeNode = function(t) {
            this._adjacencyList.delete(t)
        }
        ,
        t.prototype.removeEdge = function(t, e) {
            this._adjacencyList.has(t) && this._adjacencyList.get(t).edges.delete(e),
            this._adjacencyList.has(e) && this._adjacencyList.get(e).edges.delete(t)
        }
        ,
        t.prototype.doesEdgeExist = function(t, e) {
            return void 0 !== (this._adjacencyList.has(t) ? this._adjacencyList.get(t).edges.get(e) : void 0)
        }
        ,
        t.prototype.getNode = function(t) {
            return this._adjacencyList.has(t) ? this._adjacencyList.get(t).resource : void 0
        }
        ,
        t.prototype.isTerminalNode = function(t) {
            return !!this._adjacencyList.has(t) && 1 === Array.from(this._adjacencyList.get(t).edges.values()).filter((function(t) {
                return t.mesh && t.resource
            }
            )).length
        }
        ,
        t.prototype.getEdgeBetweenNodes = function(t, e) {
            var n = this._adjacencyList.get(t)
              , i = n ? n.edges.get(e) : void 0;
            return i ? i.resource : void 0
        }
        ,
        t.prototype.getEdgesOfNode = function(t) {
            var e = this._adjacencyList.get(t);
            if (!e)
                return [];
            var n = [];
            return e.edges.forEach((function(t) {
                t.mesh && t.resource && n.push(t.resource)
            }
            )),
            n
        }
        ,
        t.prototype.setNodeMesh = function(t) {
            this._adjacencyList.get(t.userData.id).mesh = t
        }
        ,
        t.prototype.setEdgeMesh = function(t) {
            var e = t.userData.source.id
              , n = t.userData.target.id;
            this._adjacencyList.get(e).edges.get(n).mesh = t,
            this._adjacencyList.get(n).edges.get(e).mesh = t
        }
        ,
        t.prototype.updateEdgeVertices = function(t) {
            var e = this._adjacencyList.get(t);
            e.edges.forEach((function(n) {
                if (n.mesh) {
                    var i = n.mesh.userData.source.id === t ? o.NavGraphEditingConstantsSelectedNode.CURRENT : o.NavGraphEditingConstantsSelectedNode.PREVIOUS;
                    n.mesh.geometry.vertices[i].copy(e.mesh.position),
                    n.mesh.geometry.verticesNeedUpdate = !0
                }
            }
            ))
        }
        ,
        t.prototype.getNodeMesh = function(t) {
            return this._adjacencyList.has(t) ? this._adjacencyList.get(t).mesh : void 0
        }
        ,
        t.prototype.getEdgeMeshBetweenNodes = function(t, e) {
            var n = this._adjacencyList.get(t)
              , i = n ? n.edges.get(e) : void 0;
            return i ? i.mesh : void 0
        }
        ,
        t
    }();
    e.NavGraphEditingAdjacencyList = a
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function(t) {
        this.edges = new Map,
        this.resource = t
    };
    e.NavGraphEditingAdjacencyListNode = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function(t, e) {
        void 0 === e && (e = !1),
        this.resource = t,
        this.redundant = e
    };
    e.NavGraphEditingAdjacencyListEdge = i
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(7)
      , a = n(565)
      , s = n(96)
      , c = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.attributes = {},
            e
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "location", {
            get: function() {
                return this._location
            },
            set: function(t) {
                this._location = t,
                this._globalLocation = this.GeoTransformationService.vectorToGlobal(this._location).toArray()
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "globalLocation", {
            get: function() {
                return this._globalLocation
            },
            set: function(t) {
                this._globalLocation = t,
                this._location = this.GeoTransformationService.vectorToLocal(s.VectorFactory.fromArray3(this.globalLocation))
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.resolveInjectables = function() {
            t.prototype.resolveInjectables.call(this),
            this.GeoTransformationService = this.injectables.GeoTransformationService
        }
        ,
        e.prototype.copy = function(e, n) {
            return void 0 === n && (n = !1),
            t.prototype.copy.call(this, e, n),
            this.globalLocation = e.globalLocation,
            this.attributes = o.cloneDeep(e.attributes),
            this.siteModelEntityId = e.siteModelEntityId,
            this.siteModelEntity = e.siteModelEntity,
            this
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.globalLocation = e.geometry,
            this.attributes = o.cloneDeep(e.attributes),
            this.siteModelEntityId = e.site_model_entity_id
        }
        ,
        e.prototype.toData = function() {
            var e = {};
            return t.prototype.fillDto.call(this, e),
            e.geometry = this.globalLocation,
            e.attributes = o.cloneDeep(this.attributes) || {},
            e.site_model_entity_id = this.siteModelEntityId,
            e
        }
        ,
        e.prototype.onReferenceSystemChangedEvent = function() {
            this._location = this.GeoTransformationService.vectorToLocal(s.VectorFactory.fromArray3(this.globalLocation))
        }
        ,
        e
    }(a.AbstractNavGraphEntity);
    e.NodeEntity = c
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(7)
      , a = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.attributes = {},
            e
        }
        return r(e, t),
        e.prototype.resolveInjectables = function() {
            t.prototype.resolveInjectables.call(this),
            this.NodeRepository = this.injectables.NodeRepository
        }
        ,
        e.prototype.copy = function(e, n) {
            return void 0 === n && (n = !1),
            t.prototype.copy.call(this, e, n),
            this.source = e.source,
            this.target = e.target,
            this.attributes = o.cloneDeep(e.attributes),
            this
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.source = this.NodeRepository.dataMap[e.source_node_id],
            this.target = this.NodeRepository.dataMap[e.target_node_id],
            this.source && this.target || console.warn("Source and/or target node could not be found. Please ensure to first fetch the nodes before the edges"),
            this.attributes = o.cloneDeep(e.attributes)
        }
        ,
        e.prototype.toData = function() {
            var e = {};
            return t.prototype.fillDto.call(this, e),
            e.source_node_id = this.source.id,
            e.target_node_id = this.target.id,
            e.attributes = o.cloneDeep(this.attributes) || {},
            e
        }
        ,
        e
    }(n(565).AbstractNavGraphEntity);
    e.EdgeEntity = a
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(4)
      , o = n(68)
      , a = function() {
        function t(t) {
            this.mesh = t,
            this.originalPosition = i.copy(this.mesh.position),
            this.makeCurrentlySelected()
        }
        return t.prototype.select = function() {
            this.setColor(o.NavGraphEditingConstantsNodeColors.RED)
        }
        ,
        t.prototype.makeCurrentlySelected = function() {
            this.setColor(o.NavGraphEditingConstantsNodeColors.DARK_BLUE)
        }
        ,
        t.prototype.makeLastSelected = function() {
            this.setColor(o.NavGraphEditingConstantsNodeColors.LIGHT_BLUE)
        }
        ,
        t.prototype.historyColor = function() {
            this.setColor(o.NavGraphEditingConstantsNodeColors.LIGHT_LIGHT_BLUE)
        }
        ,
        t.prototype.resetColor = function() {
            this.setColor(o.NavGraphEditingConstantsNodeColors.GREEN)
        }
        ,
        t.prototype.reset = function() {
            this.resetColor(),
            this.mesh.position.x = this.originalPosition.x,
            this.mesh.position.y = this.originalPosition.y,
            this.mesh.updateMatrix()
        }
        ,
        t.prototype.setColor = function(t) {
            this.mesh.material = new r.MeshLambertMaterial({
                color: t,
                transparent: !0,
                depthTest: !1
            })
        }
        ,
        t
    }();
    e.NavGraphEditingNode = a
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(183)
      , a = n(68)
      , s = function(t) {
        function e(e, n, i, r, o) {
            var s = t.call(this, a.NavGraphEditingConstantsType.NODE) || this;
            return s.NavGraphService = e,
            s.mesh = i,
            s.position = r,
            s.moveZ = o,
            s.resource = n,
            s
        }
        return r(e, t),
        e.prototype.apply = function() {
            this.startPosition = this.mesh.position.clone(),
            this.movedPosition = this.mesh.position.clone(),
            this.updatePosition(this.position)
        }
        ,
        e.prototype.merge = function(t) {
            return t instanceof e && t.resource === this.resource && (this.updatePosition(t.position),
            !0)
        }
        ,
        e.prototype.commit = function() {
            return this.resource.id < 0 ? Promise.resolve(void 0) : this.NavGraphService.NodeRepository.save(this.createNodeForServer(this.resource)).then((function() {}
            ))
        }
        ,
        e.prototype.undo = function() {
            this.updatePosition(this.startPosition)
        }
        ,
        e.prototype.getDescription = function() {
            return this.NavGraphService.gettextCatalog.getString("Node moved")
        }
        ,
        e.prototype.updatePosition = function(t) {
            void 0 !== t.x && (this.movedPosition.x = t.x,
            this.mesh.position.x = t.x),
            void 0 !== t.y && (this.movedPosition.y = t.y,
            this.mesh.position.y = t.y),
            void 0 !== t.z && this.moveZ && (this.movedPosition.z = t.z,
            this.mesh.position.z = t.z),
            this.mesh.updateMatrix(),
            this.NavGraphService.adjacencyList.setNodeMesh(this.mesh),
            this.NavGraphService.adjacencyList.updateEdgeVertices(this.mesh.userData.id),
            this.NavGraphService.navgraphChanged.emit()
        }
        ,
        e.prototype.createNodeForServer = function(t) {
            var e = this.NavGraphService.NodeRepository.create();
            return e.copy(t),
            e.location = this.movedPosition,
            e
        }
        ,
        e.prototype.updateMeshReference = function(t) {
            this.mesh = t
        }
        ,
        e
    }(o.NavGraphEditingOperation);
    e.NavGraphEditingNodeMoveOperation = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(183)
      , s = n(68)
      , c = function(t) {
        function e(e, n, i) {
            var r = t.call(this, s.NavGraphEditingConstantsType.EDGE) || this;
            return r.NavGraphService = e,
            r.attributesMap = i,
            r.resource = n,
            r
        }
        return r(e, t),
        e.prototype.apply = function() {
            this.resource.attributes = this.attributesMap,
            this.originalAttributesMap = o.copy(this.resource.attributes)
        }
        ,
        e.prototype.commit = function() {
            return this.resource.id < 0 ? Promise.resolve() : this.NavGraphService.EdgeRepository.save(this.createEdgeForServer(this.resource)).then((function() {}
            ))
        }
        ,
        e.prototype.undo = function() {
            this.resource.attributes = this.originalAttributesMap
        }
        ,
        e.prototype.getDescription = function() {
            return this.NavGraphService.gettextCatalog.getString("Edge edited")
        }
        ,
        e.prototype.createEdgeForServer = function(t) {
            var e = this.NavGraphService.EdgeRepository.create();
            return e.copy(t),
            e.attributes = this.resource.attributes,
            e
        }
        ,
        e
    }(a.NavGraphEditingOperation);
    e.NavGraphEditingEdgeEditOperation = c
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(183)
      , s = n(68)
      , c = function(t) {
        function e(e, n, i) {
            var r = t.call(this, s.NavGraphEditingConstantsType.NODE) || this;
            return r.NavGraphService = e,
            r.attributesMap = i,
            r.resource = n,
            r
        }
        return r(e, t),
        e.prototype.apply = function() {
            this.resource.attributes = this.attributesMap,
            this.originalAttributesMap = o.copy(this.attributesMap)
        }
        ,
        e.prototype.commit = function() {
            return this.resource.id < 0 ? Promise.resolve(void 0) : this.NavGraphService.NodeRepository.save(this.createNodeForServer(this.resource)).then((function() {}
            ))
        }
        ,
        e.prototype.undo = function() {
            this.resource.attributes = this.originalAttributesMap
        }
        ,
        e.prototype.getDescription = function() {
            return this.NavGraphService.gettextCatalog.getString("Node edited")
        }
        ,
        e.prototype.createNodeForServer = function(t) {
            var e = this.NavGraphService.NodeRepository.create();
            return e.copy(t),
            e.attributes = this.resource.attributes,
            e
        }
        ,
        e
    }(a.NavGraphEditingOperation);
    e.NavGraphEditingNodeEditOperation = c
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(183)
      , a = n(68)
      , s = function(t) {
        function e(e, n, i) {
            var r = t.call(this, a.NavGraphEditingConstantsType.NODE) || this;
            return r.NavGraphService = e,
            r.mesh = i,
            r.deletedEdges = new Map,
            r.deletedNodes = new Map,
            r.resource = n,
            r
        }
        return r(e, t),
        e.prototype.apply = function() {
            for (var t = 0, e = this.NavGraphService.adjacencyList.getEdgesOfNode(this.mesh.userData.id); t < e.length; t++) {
                var n = e[t]
                  , i = n.source.id === this.resource.id ? n.target.id : n.source.id
                  , r = this.NavGraphService.adjacencyList.isTerminalNode(i);
                if (this.deletedEdges.set(n.id, n),
                this.deleteEdgeLocally(this.NavGraphService.adjacencyList.getEdgeMeshBetweenNodes(n.source.id, n.target.id)),
                r) {
                    var o = this.NavGraphService.adjacencyList.getNode(i)
                      , a = this.NavGraphService.adjacencyList.getNodeMesh(i);
                    this.deletedNodes.set(i, o),
                    this.deleteNodeLocally(a)
                }
            }
            this.deleteNodeLocally(this.mesh)
        }
        ,
        e.prototype.commit = function() {
            var t = this;
            if (this.resource.id < 0)
                return Promise.resolve();
            var e = [];
            return this.deletedNodes.forEach((function(n) {
                n.id >= 0 && e.push(t.NavGraphService.NodeRepository.remove(n))
            }
            )),
            Promise.all(e).then((function() {
                return t.deleteNodeOnServer()
            }
            ))
        }
        ,
        e.prototype.undo = function() {
            var t = this;
            this.NavGraphService.adjacencyList.addNode(this.resource),
            this.NavGraphService.nodeCreated.emit(this.resource),
            this.deletedNodes.forEach((function(e) {
                t.NavGraphService.adjacencyList.addNode(e),
                t.NavGraphService.nodeCreated.emit(e)
            }
            )),
            this.deletedEdges.forEach((function(e) {
                var n = t.NavGraphService.adjacencyList.getNode(e.source.id)
                  , i = t.NavGraphService.adjacencyList.getNode(e.target.id);
                t.NavGraphService.adjacencyList.addEdge(e),
                t.NavGraphService.edgeCreated.emit(n, i)
            }
            )),
            this.deletedEdges = new Map,
            this.deletedNodes = new Map
        }
        ,
        e.prototype.getDescription = function() {
            return this.NavGraphService.gettextCatalog.getString("Node deleted")
        }
        ,
        e.prototype.deleteNodeLocally = function(t) {
            this.NavGraphService.adjacencyList.removeNode(t.userData.id),
            this.NavGraphService.nodeRemoved.emit(t)
        }
        ,
        e.prototype.deleteEdgeLocally = function(t) {
            this.NavGraphService.adjacencyList.removeEdge(t.userData.source.id, t.userData.target.id),
            this.NavGraphService.edgeRemoved.emit(t)
        }
        ,
        e.prototype.deleteNodeOnServer = function() {
            var t = this;
            return this.NavGraphService.NodeRepository.remove(this.resource).then((function() {
                return t.NavGraphService.adjacencyList.removeNode(t.resource.id)
            }
            ))
        }
        ,
        e
    }(o.NavGraphEditingOperation);
    e.NavGraphEditingNodeDeleteOperation = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(183)
      , a = n(68)
      , s = function(t) {
        function e(e, n, i, r, o) {
            var s = t.call(this, a.NavGraphEditingConstantsType.EDGE) || this;
            return s.NavGraphService = e,
            s.sourceNode = n,
            s.targetNode = i,
            s.mesh = o,
            s.resource = r,
            s
        }
        return r(e, t),
        e.prototype.apply = function() {
            this.NavGraphService.adjacencyList.removeEdge(this.mesh.userData.source.id, this.mesh.userData.target.id),
            this.NavGraphService.edgeRemoved.emit(this.mesh)
        }
        ,
        e.prototype.commit = function() {
            var t = this;
            return this.resource.id < 0 ? Promise.resolve() : this.NavGraphService.EdgeRepository.remove(this.resource).then((function() {
                return t.NavGraphService.adjacencyList.removeEdge(t.resource.source.id, t.resource.target.id)
            }
            ))
        }
        ,
        e.prototype.undo = function() {
            this.NavGraphService.adjacencyList.addEdge(this.resource),
            this.NavGraphService.edgeCreated.emit(this.sourceNode, this.targetNode)
        }
        ,
        e.prototype.getDescription = function() {
            return this.NavGraphService.gettextCatalog.getString("Edge deleted")
        }
        ,
        e
    }(o.NavGraphEditingOperation);
    e.NavGraphEditingEdgeDeleteOperation = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(183)
      , a = n(68)
      , s = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, a.NavGraphEditingConstantsType.NODE) || this;
            return o.NavGraphService = e,
            o.mesh = i,
            o.z = r,
            o.resource = n,
            o
        }
        return r(e, t),
        e.prototype.apply = function() {
            this.startPosition = this.mesh.position.clone(),
            this.movedPosition = this.mesh.position.clone(),
            this.updatePosition(this.z)
        }
        ,
        e.prototype.merge = function(t) {
            return t instanceof e && t.resource === this.resource && (this.updatePosition(t.z),
            !0)
        }
        ,
        e.prototype.commit = function() {
            return this.resource.id < 0 ? Promise.resolve(void 0) : this.NavGraphService.NodeRepository.save(this.createNodeForServer(this.resource)).then((function() {}
            ))
        }
        ,
        e.prototype.undo = function() {
            this.updatePosition(this.startPosition.z)
        }
        ,
        e.prototype.getDescription = function() {
            return this.NavGraphService.gettextCatalog.getString("Node moved")
        }
        ,
        e.prototype.updatePosition = function(t) {
            this.movedPosition.z = t,
            this.mesh.position.z = t,
            this.mesh.updateMatrix(),
            this.NavGraphService.adjacencyList.updateEdgeVertices(this.mesh.userData.id),
            this.NavGraphService.navgraphChanged.emit()
        }
        ,
        e.prototype.createNodeForServer = function(t) {
            var e = this.NavGraphService.NodeRepository.create();
            return e.copy(t),
            e.location = this.movedPosition,
            e
        }
        ,
        e.prototype.updateMeshReference = function(t) {
            this.mesh = t
        }
        ,
        e
    }(o.NavGraphEditingOperation);
    e.NavGraphEditingNodeMoveInZOperation = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(68)
      , a = function(t) {
        function e(e, n) {
            var i = t.call(this) || this;
            return i.NavGraphService = e,
            i.bundle = n,
            i.resourceType = o.NavGraphEditingConstantsType.SPLIT,
            i
        }
        return r(e, t),
        e.prototype.getDescription = function() {
            return this.NavGraphService.gettextCatalog.getString("Auto-split edge") + " | " + this.NavGraphService.gettextCatalog.getString("Bundle: {{bundle}}", {
                bundle: this.bundle.displayName
            })
        }
        ,
        e.prototype.apply = function() {}
        ,
        e
    }(n(570).EditingOperationCollection);
    e.NavGraphEditingAutoSplitEdgeOperation = a
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(1216)
      , r = n(68)
      , o = function() {
        function t(t, e, n) {
            this.NavGraphEditingService = t,
            this.NavGraphService = e,
            this.ViewService = n
        }
        return t.prototype.isPathDrawingPossible = function() {
            return this.NavGraphEditingService.navGraphEditingMode === r.NavGraphEditingConstantsModes.PATH_DRAWING && this.NavGraphEditingService.selectedNodes.length > 0 && void 0 !== this.pathDrawOperation
        }
        ,
        t.prototype.startPathDrawing = function() {
            if (!this.pathDrawOperation) {
                this.NavGraphEditingService.navGraphEditingMode = r.NavGraphEditingConstantsModes.PATH_DRAWING;
                var t = this.NavGraphService.getCurrentBundle();
                this.pathDrawOperation = new i.NavGraphEditingPathDrawOperation(this.NavGraphService,t),
                this.updateCursor()
            }
        }
        ,
        t.prototype.removeTemporaryNodesAndEdges = function() {
            if (this.isPathDrawingPossible()) {
                var t = this.NavGraphEditingService.selectedNodes[r.NavGraphEditingConstantsSelectedNode.CURRENT];
                this.anchorNode && t.mesh !== this.anchorNode.mesh && (this.pathDrawOperation.undoLastOperation(),
                this.pathDrawOperation.undoLastOperation())
            }
        }
        ,
        t.prototype.undoLastPathDrawOperation = function() {
            var t = this.NavGraphEditingService.selectedNodes[r.NavGraphEditingConstantsSelectedNode.PREVIOUS];
            this.pathDrawOperation.undoLastOperation(),
            this.pathDrawOperation.undoLastOperation(),
            this.anchorNode = t
        }
        ,
        t.prototype.finishPathDrawing = function() {
            this.normalizeAndApplyPathDrawn(),
            this.NavGraphEditingService.deselectAllNodes(),
            this.updateCursor(),
            this.pathDrawOperation = new i.NavGraphEditingPathDrawOperation(this.NavGraphService,this.NavGraphService.getCurrentBundle())
        }
        ,
        t.prototype.normalizeAndApplyPathDrawn = function() {
            this.pathDrawOperation && !this.pathDrawOperation.isNoOp() && (this.pathDrawOperation.normalizeNodeHeight(),
            this.NavGraphEditingService.editingHistory.apply(this.pathDrawOperation)),
            this.pathDrawOperation = void 0
        }
        ,
        t.prototype.startNodeEditing = function() {
            this.finishPathDrawing(),
            this.NavGraphEditingService.navGraphEditingMode = r.NavGraphEditingConstantsModes.NODE_EDITING,
            this.anchorNode = void 0,
            this.pathDrawOperation = void 0
        }
        ,
        t.prototype.createNodeAndEdgeInPath = function(t) {
            if (t) {
                var e = this.NavGraphEditingService.createNode(t.clone(), !1);
                e.apply();
                var n = this.NavGraphEditingService.createEdge(!1);
                n.apply(),
                this.pathDrawOperation.addOperation(e),
                this.pathDrawOperation.addOperation(n)
            }
        }
        ,
        t.prototype.resetAnchorIfPossible = function() {
            void 0 === this.anchorNode && (this.anchorNode = this.NavGraphEditingService.selectedNodes[r.NavGraphEditingConstantsSelectedNode.CURRENT])
        }
        ,
        t.prototype.drawPathAtPosition = function(t) {
            this.removeTemporaryNodesAndEdges(),
            this.createNodeAndEdgeInPath(t)
        }
        ,
        t.prototype.savePathAtPosition = function(t) {
            this.NavGraphEditingService.selectedNodes[r.NavGraphEditingConstantsSelectedNode.CURRENT] !== this.anchorNode && (this.drawPathAtPosition(t),
            this.anchorNode = this.NavGraphEditingService.selectedNodes[r.NavGraphEditingConstantsSelectedNode.CURRENT])
        }
        ,
        t.prototype.joinPathWithMesh = function(t) {
            this.removeTemporaryNodesAndEdges(),
            this.NavGraphEditingService.selectNode(t);
            var e = this.NavGraphEditingService.createEdge(!1);
            e.apply(),
            this.pathDrawOperation.addOperation(e),
            this.finishPathDrawing()
        }
        ,
        t.prototype.updateCursor = function() {
            var t;
            this.isPathDrawingPossible() ? (t = this.ViewService.mainView.divContainer.container).classList.contains("path-draw-cursor") || t.classList.add("path-draw-cursor") : (t = this.ViewService.mainView.divContainer.container) && t.classList.remove("path-draw-cursor")
        }
        ,
        t.prototype.discardPathDrawn = function() {
            this.pathDrawOperation && this.pathDrawOperation.undo(),
            this.NavGraphEditingService.deselectAllNodes(),
            this.updateCursor(),
            this.pathDrawOperation = void 0
        }
        ,
        t.prototype.getAnchorNode = function() {
            return this.anchorNode
        }
        ,
        t
    }();
    e.NavGraphPathDrawingDelegate = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(68)
      , a = n(570)
      , s = n(568)
      , c = n(567)
      , l = n(4)
      , u = function(t) {
        function e(e, n) {
            var i = t.call(this) || this;
            return i.NavGraphService = e,
            i.bundle = n,
            i.resourceType = o.NavGraphEditingConstantsType.PATH,
            i
        }
        return r(e, t),
        e.prototype.getDescription = function() {
            return this.NavGraphService.gettextCatalog.getString("Path drawn", void 0, "Title of the operation displayed in the NavGraphEditor history") + " | " + this.NavGraphService.gettextCatalog.getString("Bundle: {{bundle}}", {
                bundle: this.bundle.displayName
            })
        }
        ,
        e.prototype.apply = function() {}
        ,
        e.prototype.undoLastOperation = function() {
            var t = this.editingOperations.pop();
            t && t.undo()
        }
        ,
        e.prototype.normalizeNodeHeight = function() {
            var t = this;
            if (!this.isNoOp()) {
                var e = this.editingOperations.filter((function(t) {
                    return t instanceof s.NavGraphEditingEdgeCreateOperation
                }
                ))
                  , n = e[e.length - 1]
                  , i = e[0]
                  , r = this.NavGraphService.adjacencyList.getNodeMesh(i.resource.source.id)
                  , o = this.NavGraphService.adjacencyList.getNodeMesh(n.resource.target.id);
                if (n !== i && r.position.z !== o.position.z) {
                    var a = 0
                      , u = [];
                    e.forEach((function(e) {
                        if (e instanceof s.NavGraphEditingEdgeCreateOperation) {
                            var n = t.NavGraphService.adjacencyList.getNodeMesh(e.resource.source.id)
                              , i = t.NavGraphService.adjacencyList.getNodeMesh(e.resource.target.id)
                              , r = new l.Vector3(n.position.x,n.position.y,0)
                              , o = new l.Vector3(i.position.x,i.position.y,0)
                              , c = r.distanceTo(o);
                            a += c,
                            u.push(c)
                        }
                    }
                    ));
                    var d = o.position.z - r.position.z
                      , p = r.position.z
                      , h = 0;
                    this.editingOperations.forEach((function(e) {
                        if (e instanceof c.NavGraphEditingNodeCreateOperation) {
                            var n = u[h] / a;
                            p += n * d;
                            var i = e.resource.location;
                            e.resource.location = new l.Vector3(i.x,i.y,p);
                            var r = t.NavGraphService.adjacencyList.getNodeMesh(e.resource.id);
                            r.position.z = p,
                            r.updateMatrix(),
                            t.NavGraphService.adjacencyList.updateEdgeVertices(r.userData.id),
                            h += 1
                        }
                    }
                    )),
                    this.NavGraphService.navgraphChanged.emit()
                }
            }
        }
        ,
        e.prototype.isNoOp = function() {
            return 0 === this.editingOperations.length
        }
        ,
        e
    }(a.EditingOperationCollection);
    e.NavGraphEditingPathDrawOperation = u
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(4)
      , a = n(323)
      , s = function(t) {
        function e(e, n, i, r, o, a) {
            void 0 === a && (a = !0);
            var s = t.call(this, e, n, r, o) || this;
            return s.direction = i,
            s.applySnap = a,
            s.MINIMUM_FINAL_SCALE = .1,
            s
        }
        return r(e, t),
        e.prototype.onDragStart = function(t, e) {
            this.applySnap && (this.axisLine = this.findAxisLine(this.direction.clone()),
            this.planeOnTheAxis = this.findPlaneOnTheAxis(e.getCamera().position, this.axisLine)),
            this.startingPosition = this.getPositionInScene(t, e),
            this.startingPosition && (this.boxFrame = this.parent.getObjectByName("box_frame"),
            this.box = this.parent.getObjectByName("box"),
            this.boxFrameStartingScale = this.boxFrame.scale.clone(),
            this.parentInitialPosition = this.parent.position.clone(),
            this.initialCirclePosition = this.position.clone())
        }
        ,
        e.prototype.onDrag = function(t, e) {
            var n = this.getPositionInScene(t, e);
            if (n) {
                var i = this.getDiffInModelCoordinates(n);
                this.scaleBoxFrame(i) && (this.moveParentCubeAccordingly(i),
                this.view.invalidateScene())
            }
        }
        ,
        e.prototype.onDragCancel = function() {
            this.boxFrame.scale.copy(this.boxFrameStartingScale),
            this.box.scale.copy(this.boxFrameStartingScale),
            this.parent.position.copy(this.parentInitialPosition),
            this.position.copy(this.initialCirclePosition),
            this.parent.updateMatrixWorld(!0),
            this.view.invalidateScene()
        }
        ,
        e.prototype.onMouseOver = function() {}
        ,
        e.prototype.onMouseOut = function() {}
        ,
        e.prototype.onDragEnd = function() {}
        ,
        e.prototype.getPositionInScene = function(t, e) {
            return this.applySnap ? this.findPositionOnAxis(t, e).clone() : e.unprojectScreenCoordinates(t.x, t.y)
        }
        ,
        e.prototype.getDiffInModelCoordinates = function(t) {
            var e = (new o.Vector3).subVectors(t, this.startingPosition)
              , n = (new o.Matrix4).getInverse(this.parent.matrixWorld);
            return a.DraggableObject3D.transformDirection(e, n)
        }
        ,
        e.prototype.scaleBoxFrame = function(t) {
            var e = t.clone().multiply(this.direction)
              , n = this.boxFrameStartingScale.clone().add(e);
            return !(n.x < this.MINIMUM_FINAL_SCALE || n.y < this.MINIMUM_FINAL_SCALE || n.z < this.MINIMUM_FINAL_SCALE) && (this.box.scale.copy(n),
            this.boxFrame.scale.copy(n),
            !0)
        }
        ,
        e.prototype.moveParentCubeAccordingly = function(t) {
            var e = a.DraggableObject3D.transformDirection(t, this.matrixWorld).multiplyScalar(.5);
            this.parent.position.copy(this.parentInitialPosition).add(e)
        }
        ,
        e
    }(n(1218).DraggableCircle);
    e.DirectionalDragCircle = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(4)
      , a = n(323)
      , s = n(184)
      , c = function(t) {
        function e(n, i, r, a) {
            var s = t.call(this, n, r, a) || this;
            return s.sphereGeometry = new o.SphereGeometry(.03,e.SPHERE_SEGMENTS,e.SPHERE_SEGMENTS),
            s.sphereOutlineGeometry = new o.SphereGeometry(.035,e.SPHERE_SEGMENTS,e.SPHERE_SEGMENTS),
            s.spherePickGeometry = new o.SphereGeometry(.04,8,6),
            s.createColoredSphere(i),
            s.createSphereOutline(),
            s.createPickSphere(),
            s
        }
        return r(e, t),
        e.prototype.createColoredSphere = function(t) {
            var e = new o.MeshBasicMaterial({
                color: t,
                opacity: s.HighlightableObject3D.NON_HIGHLIGHTED_OPACITY,
                transparent: !0
            });
            this.object = new o.Mesh(this.sphereGeometry,e),
            this.add(this.object)
        }
        ,
        e.prototype.createSphereOutline = function() {
            var t = new o.MeshBasicMaterial({
                color: s.HighlightableObject3D.OUTLINE_COLOR,
                side: o.BackSide,
                opacity: s.HighlightableObject3D.NON_HIGHLIGHTED_OPACITY,
                transparent: !0
            });
            this.objectOutline = new o.Mesh(this.sphereOutlineGeometry,t),
            this.object.add(this.objectOutline)
        }
        ,
        e.prototype.createPickSphere = function() {
            var t = new o.MeshBasicMaterial({
                visible: !1,
                side: o.DoubleSide
            });
            this.pickObject = new o.Mesh(this.spherePickGeometry,t),
            this.pickObject.userData.is2D = !0,
            this.object.add(this.pickObject)
        }
        ,
        e.prototype.changeColor = function(t) {
            this.object.material.color = t
        }
        ,
        e.SPHERE_SEGMENTS = 32,
        e
    }(a.DraggableObject3D);
    e.DraggableCircle = c
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(4)
      , a = n(323)
      , s = n(184)
      , c = function(t) {
        function e(e, n, i, r) {
            var a = t.call(this, e, i, r) || this;
            return a.axisGeometry = new o.BoxGeometry(.015,.015,.71),
            a.axisOutlineGeometry = new o.BoxGeometry(.019,.019,.72),
            a.axisPickGeometry = new o.BoxGeometry(.04,.04,.76),
            a.amountToMove = new o.Vector3,
            a.createColoredAxis(n),
            a.createAxisOutline(),
            a.createPickAxis(),
            a
        }
        return r(e, t),
        e.prototype.createColoredAxis = function(t) {
            var e = new o.MeshBasicMaterial({
                color: t,
                opacity: s.HighlightableObject3D.NON_HIGHLIGHTED_OPACITY,
                transparent: !0
            });
            this.object = new o.Mesh(this.axisGeometry,e),
            this.object.renderOrder = 10,
            this.add(this.object)
        }
        ,
        e.prototype.createAxisOutline = function() {
            var t = new o.MeshBasicMaterial({
                color: s.HighlightableObject3D.OUTLINE_COLOR,
                side: o.BackSide,
                opacity: s.HighlightableObject3D.NON_HIGHLIGHTED_OPACITY,
                transparent: !0
            });
            this.objectOutline = new o.Mesh(this.axisOutlineGeometry,t),
            this.objectOutline.renderOrder = 0,
            this.object.add(this.objectOutline)
        }
        ,
        e.prototype.createPickAxis = function() {
            var t = new o.MeshBasicMaterial({
                visible: !1
            });
            this.pickObject = new o.Mesh(this.axisPickGeometry,t),
            this.object.add(this.pickObject)
        }
        ,
        e.prototype.onDragStart = function(t, e) {
            this.axisLine = this.findAxisLine(new o.Vector3(0,0,1)),
            this.planeOnTheAxis = this.findPlaneOnTheAxis(e.getCamera().position, this.axisLine),
            this.startingPosition = this.findPositionOnAxis(t, e).clone(),
            this.startingPosition && (this.parentInitialPosition = this.parent.position.clone())
        }
        ,
        e.prototype.onDrag = function(t, e) {
            var n = this.findPositionOnAxis(t, e);
            this.moveParentPosition(this.startingPosition, n)
        }
        ,
        e.prototype.onDragCancel = function() {
            this.parent.position.copy(this.parentInitialPosition),
            this.parent.updateMatrixWorld(!0),
            this.view.invalidateScene()
        }
        ,
        e.prototype.moveParentPosition = function(t, e) {
            var n = this.amountToMove.subVectors(e, t);
            this.parent.position.copy(this.parentInitialPosition).add(n),
            this.view.invalidateScene()
        }
        ,
        e.prototype.onMouseOut = function() {}
        ,
        e.prototype.onMouseOver = function() {}
        ,
        e.prototype.onDragEnd = function() {}
        ,
        e
    }(a.DraggableObject3D);
    e.DraggableAxis = c
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(4)
      , a = n(184)
      , s = function(t) {
        function e(n, i, r, a, s, c) {
            var l = t.call(this, n, i, a, s, c) || this;
            return l.mapMode = c,
            l.arcGeometry = new o.TorusGeometry(e.RADIUS,l.mapMode ? .3 : .013,e.RADIAL_SEGMENTS,e.TUBULAR_SEGMENTS,l.mapMode ? 2 * Math.PI : Math.PI / 2),
            l.outlineGeometry = new o.TorusGeometry(e.RADIUS,.015,e.RADIAL_SEGMENTS,e.TUBULAR_SEGMENTS,Math.PI / 2),
            l.pickGeometry = new o.TorusGeometry(e.RADIUS,l.mapMode ? 3 : .025,e.RADIAL_SEGMENTS,e.TUBULAR_SEGMENTS,l.mapMode ? 2 * Math.PI : Math.PI / 2),
            l.createColoredArc(r),
            l.createArcOutline(),
            l.createPickArc(),
            l
        }
        return r(e, t),
        e.prototype.createColoredArc = function(t) {
            var e = new o.MeshBasicMaterial({
                color: t,
                opacity: a.HighlightableObject3D.NON_HIGHLIGHTED_OPACITY,
                transparent: !0,
                visible: !0
            });
            this.object = new o.Mesh(this.arcGeometry,e),
            this.add(this.object)
        }
        ,
        e.prototype.createArcOutline = function() {
            var t = new o.MeshBasicMaterial({
                color: a.HighlightableObject3D.OUTLINE_COLOR,
                side: o.BackSide,
                opacity: a.HighlightableObject3D.NON_HIGHLIGHTED_OPACITY,
                transparent: !0
            });
            this.objectOutline = new o.Mesh(this.outlineGeometry,t),
            this.objectOutline.renderOrder = 0,
            this.objectOutline.visible = !this.mapMode,
            this.object.add(this.objectOutline)
        }
        ,
        e.prototype.createPickArc = function() {
            var t = new o.MeshBasicMaterial({
                visible: !1
            });
            this.pickObject = new o.Mesh(this.pickGeometry,t),
            this.object.add(this.pickObject)
        }
        ,
        e.RADIUS = .5,
        e.RADIAL_SEGMENTS = 8,
        e.TUBULAR_SEGMENTS = 64,
        e
    }(n(572).RotationObject);
    e.DraggableRotationArc = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(4)
      , a = n(184)
      , s = function(t) {
        function e(e, n, i, r, o) {
            var a = t.call(this, n, i) || this;
            return a.view = e,
            a.onDragCallback = r,
            a.onDragEndCallback = o,
            a
        }
        return r(e, t),
        e.prototype.onDragStart = function(t, e) {
            return !a.HighlightableObject3D.isDragging && e.getCamera()instanceof o.OrthographicCamera && (this.initialPosition = this.parent.position.clone(),
            this.lastDragPosition = this.view.getPositionOnGroundPlane(t.x, t.y, void 0, e),
            !0)
        }
        ,
        e.prototype.onDrag = function(t, e) {
            var n = this.view.getPositionOnGroundPlane(t.x, t.y, void 0, e)
              , i = n.clone().sub(this.lastDragPosition);
            this.lastDragPosition = n,
            this.parent.position.x += i.x,
            this.parent.position.y += i.y,
            this.onDragCallback(),
            this.view.invalidateScene()
        }
        ,
        e.prototype.onDragEnd = function() {
            this.onDragEndCallback()
        }
        ,
        e.prototype.onDragCancel = function() {
            this.parent.position.copy(this.initialPosition),
            this.view.invalidateScene()
        }
        ,
        e.prototype.onMouseOver = function() {
            a.HighlightableObject3D.isDragging || (document.body.style.cursor = "move")
        }
        ,
        e.prototype.onMouseOut = function() {
            document.body.style.cursor = "default"
        }
        ,
        e
    }(o.Mesh);
    e.VolumeBox = s
}
, function(t, e, n) {
    t.exports = n.p + "f7f4580762659d45b29743dc1e15c0f4.rotation_circle.png"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(64)
      , a = n(85)
      , s = function(t) {
        function e() {
            return t.call(this, "MeasurementCanceledEvent") || this
        }
        return r(e, t),
        e.prototype.withMagnifyingGlass = function(t) {
            return this.withData("magnifyingGlassEnabled", t),
            this
        }
        ,
        e.prototype.withTool = function(t) {
            return this.withData("tool", a.Tool[t]),
            this
        }
        ,
        e.prototype.numberOfPoints = function(t) {
            return this.withData("numberOfPoints", t),
            this
        }
        ,
        e
    }(o.TrackingEvent);
    e.MeasurementCanceledEvent = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(64)
      , a = n(85)
      , s = function(t) {
        function e() {
            return t.call(this, "MeasurementCompleted") || this
        }
        return r(e, t),
        e.prototype.withMagnifyingGlass = function(t) {
            return this.withData("magnifyingGlassEnabled", t),
            this
        }
        ,
        e.prototype.finalPointEnteredIn = function(t) {
            return this.withData("finalPointEnteredIn", t),
            this
        }
        ,
        e.prototype.withTool = function(t) {
            return this.withData("tool", a.Tool[t]),
            this
        }
        ,
        e.prototype.numberOfPoints = function(t) {
            return this.withData("numberOfPoints", t),
            this
        }
        ,
        e.prototype.withSize = function(t) {
            return this.withData("measurementSize", t),
            this
        }
        ,
        e
    }(o.TrackingEvent);
    e.MeasurementCompletedEvent = s
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(55)
      , r = function() {
        function t(t) {
            this.fillFromSiteModelEntity(t)
        }
        return t.prototype.fillFromSiteModelEntity = function(t) {
            for (var e = t; void 0 !== e; ) {
                var n = e.label;
                switch (e.type) {
                case i.SiteModelType.BUILDING:
                    this.building = n;
                    break;
                case i.SiteModelType.FLOOR:
                    this.floor = n;
                    break;
                case i.SiteModelType.ROOM:
                    this.room = n
                }
                e = e.parent
            }
        }
        ,
        t
    }();
    e.SiteModelReadableLocation = r
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return t.call(this, "SingleMeasurementScreenshotRenderingTime") || this
        }
        return r(e, t),
        e.prototype.splitUI = function() {
            return this.withData("measurementUI", "split"),
            this
        }
        ,
        e.prototype.fullMapUI = function() {
            return this.withData("measurementUI", "full_map"),
            this
        }
        ,
        e.prototype.fromPointCoud = function() {
            return this.withData("ViewMode", "pointcloud"),
            this
        }
        ,
        e.prototype.fromPanorama = function() {
            return this.withData("ViewMode", "panorama"),
            this
        }
        ,
        e
    }(n(577).ScreenshotRenderingEvent);
    e.SingleMeasurementScreenshotRenderingTime = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return t.call(this, "AllMeasurementsScreenshotRenderingTime") || this
        }
        return r(e, t),
        e
    }(n(577).ScreenshotRenderingEvent);
    e.AllMeasurementsScreenshotsRenderingEvent = o
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(85)
      , r = n(168)
      , o = function() {
        function t(t, e) {
            var n = this;
            this.MeasurementToolChanger = t,
            this.MeasurementsLayer = e,
            this.escape = {
                combo: ["esc"],
                description: r.translate("Cancel current measurement"),
                callback: function() {
                    n.MeasurementsLayer.cancelCurrentMeasurement() || n.MeasurementToolChanger.toggleTool(void 0, i.EventSource.KEYBOARD_SHORTCUT)
                }
            },
            this.backspaceDelete = {
                combo: ["backspace", "delete"],
                description: r.translate("Delete last point"),
                callback: function() {
                    n.MeasurementsLayer.removeMostRecentPoint() && n.MeasurementsLayer.cancelCurrentMeasurement()
                }
            },
            this.distance = {
                combo: ["1"],
                description: r.translate("Cycle Distance"),
                callback: function() {
                    return n.MeasurementToolChanger.cycleTool(i.ToolGroup.Distance, i.EventSource.KEYBOARD_SHORTCUT)
                }
            },
            this.polygon = {
                combo: ["2"],
                description: r.translate("Cycle Polygon"),
                callback: function() {
                    return n.MeasurementToolChanger.cycleTool(i.ToolGroup.Area, i.EventSource.KEYBOARD_SHORTCUT)
                }
            },
            this.rectangle = {
                combo: ["3"],
                description: r.translate("Cycle Rectangle"),
                callback: function() {
                    return n.MeasurementToolChanger.cycleTool(i.ToolGroup.Rectangle, i.EventSource.KEYBOARD_SHORTCUT)
                }
            },
            this.horizontalDistance = {
                combo: ["shift+1"],
                description: r.translate("Horizontal Distance"),
                callback: function() {
                    return n.MeasurementToolChanger.toggleTool(i.Tool.DISTANCE_HORIZONTAL_MEASUREMENT, i.EventSource.KEYBOARD_SHORTCUT)
                }
            },
            this.horizontalPolygon = {
                combo: ["shift+2"],
                description: r.translate("Horizontal Polygon"),
                callback: function() {
                    return n.MeasurementToolChanger.toggleTool(i.Tool.AREA_HORIZONTAL_MEASUREMENT, i.EventSource.KEYBOARD_SHORTCUT)
                }
            },
            this.horizontalRectangle = {
                combo: ["shift+3"],
                description: r.translate("Horizontal Rectangle"),
                callback: function() {
                    return n.MeasurementToolChanger.toggleTool(i.Tool.RECTANGLE_HORIZONTAL_MEASUREMENT, i.EventSource.KEYBOARD_SHORTCUT)
                }
            },
            this.verticalDistance = {
                combo: ["alt+1"],
                description: r.translate("Vertical Distance"),
                callback: function() {
                    return n.MeasurementToolChanger.toggleTool(i.Tool.DISTANCE_VERTICAL_MEASUREMENT, i.EventSource.KEYBOARD_SHORTCUT)
                }
            },
            this.verticalPolygon = {
                combo: ["alt+2"],
                description: r.translate("Vertical Polygon"),
                callback: function() {
                    return n.MeasurementToolChanger.toggleTool(i.Tool.AREA_VERTICAL_MEASUREMENT, i.EventSource.KEYBOARD_SHORTCUT)
                }
            },
            this.verticalRectangle = {
                combo: ["alt+3"],
                description: r.translate("Vertical Rectangle"),
                callback: function() {
                    return n.MeasurementToolChanger.toggleTool(i.Tool.RECTANGLE_VERTICAL_MEASUREMENT, i.EventSource.KEYBOARD_SHORTCUT)
                }
            },
            this.complete = {
                combo: ["enter"],
                description: r.translate("Complete Measurement"),
                callback: function() {
                    return n.MeasurementsLayer.completeCurrentAreaMeasurement()
                }
            }
        }
        return Object.defineProperty(t.prototype, "keyBindings", {
            get: function() {
                return [this.distance, this.polygon, this.rectangle, this.horizontalDistance, this.horizontalPolygon, this.horizontalRectangle, this.verticalDistance, this.verticalPolygon, this.verticalRectangle, this.complete, this.backspaceDelete, this.escape]
            },
            enumerable: !0,
            configurable: !0
        }),
        t
    }();
    e.HotKeyConfiguration = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(64)
      , a = n(85)
      , s = function(t) {
        function e() {
            return t.call(this, "MeasurementStarted") || this
        }
        return r(e, t),
        e.prototype.withMagnifyingGlass = function(t) {
            return this.withData("magnifyingGlassEnabled", t),
            this
        }
        ,
        e.prototype.pointEnteredIn = function(t) {
            return this.withData("firstPointEnteredIn", t),
            this
        }
        ,
        e.prototype.withTool = function(t) {
            return this.withData("tool", a.Tool[t]),
            this
        }
        ,
        e
    }(o.TrackingEvent);
    e.MeasurementStartedEvent = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(64)
      , a = n(85)
      , s = function(t) {
        function e() {
            return t.call(this, "PointAddedToMeasurement") || this
        }
        return r(e, t),
        e.prototype.withNumberOfPointInMeasurement = function(t) {
            return this.withData("numberOfPointInsMeasurement", t),
            this
        }
        ,
        e.prototype.withTool = function(t) {
            return this.withData("tool", t),
            this
        }
        ,
        e.prototype.withMagnifyingGlass = function(t) {
            return this.withData("magnifyingGlassEnabled", t),
            this
        }
        ,
        e.prototype.withPointEnteredIn = function(t) {
            return this.withData("pointEnteredIn", t),
            this
        }
        ,
        e
    }(o.TrackingEvent);
    e.PointAddedToMeasurementEvent = s;
    var c = function(t) {
        function e() {
            var e = t.call(this, "PointRemovedFromMeasurementEvent") || this;
            return e.data.eventSource = a.EventSource.KEYBOARD_SHORTCUT,
            e
        }
        return r(e, t),
        e.prototype.withTool = function(t) {
            return this.withData("tool", t),
            this
        }
        ,
        e
    }(o.TrackingEvent);
    e.PointRemovedFromMeasurementEvent = c
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e(e, n) {
            var i = t.call(this, e) || this;
            return i._camera = n,
            i
        }
        return r(e, t),
        Object.defineProperty(e.prototype, "camera", {
            get: function() {
                return this._camera
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.centerOn = function(t, e) {
            throw new Error("Method not Implemented")
        }
        ,
        e.prototype.drag = function(t, e, n) {
            throw new Error("Method not Implemented")
        }
        ,
        e.prototype.updateCamera = function() {
            throw new Error("Method not Implemented")
        }
        ,
        e.prototype.zoomTo = function(t, e, n) {
            throw new Error("Method not Implemented")
        }
        ,
        e
    }(n(317).CameraController);
    e.NoOpCameraController = o
}
, function(t, e, n) {
    t.exports = n.p + "97b12108959387b52a04a35b6db1a1fe.mag_cross_hair.png"
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(580)
      , a = n(7)
      , s = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.vectorEntities = [],
            e.stats = new o.VectorMapStats,
            e.selected = !1,
            e
        }
        return r(e, t),
        e.prototype.copy = function(e, n) {
            return void 0 === n && (n = !1),
            t.prototype.fill.call(this, e),
            this.name = e.name,
            this.visible = e.visible,
            this.drawingOrder = e.drawingOrder,
            this.color = e.color,
            this.vectorEntities = a.clone(e.vectorEntities),
            this.vectorMap = e.vectorMap,
            this.vectorMapId = e.vectorMapId,
            this.zMax = e.zMax,
            this.zMin = e.zMin,
            n || (this.stats.copy(e.stats),
            this.selected = e.selected),
            this
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.name = e.name,
            this.visible = e.visible,
            this.drawingOrder = e.drawing_order,
            this.color = e.color,
            this.vectorMapId = e.vector_map_id,
            this.zMin = e.z_min,
            this.zMax = e.z_max
        }
        ,
        e.prototype.toData = function() {
            var e = {};
            return t.prototype.fillDto.call(this, e),
            e.name = this.name,
            e.visible = this.visible,
            e.drawing_order = this.drawingOrder,
            e.color = this.color,
            e.z_min = this.zMin,
            e.z_max = this.zMax,
            e.vector_map_id = this.vectorMapId,
            e
        }
        ,
        e
    }(n(102).RepositoryObject);
    e.VectorLayerEntity = s
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(7)
      , r = n(4)
      , o = function() {
        function t(t, e) {
            if (this.GeoTransformationService = t,
            this.coordinates = [],
            e)
                for (var n = 0, i = e.coordinates; n < i.length; n++) {
                    var o = i[n];
                    this.coordinates.push(new r.Vector2(o[0],o[1]))
                }
        }
        return t.prototype.toData = function() {
            for (var t = [], e = 0, n = this.coordinates; e < n.length; e++) {
                var i = n[e];
                t.push([i.x, i.y])
            }
            return {
                coordinates: t,
                type: "LineString"
            }
        }
        ,
        t.prototype.toGeometry = function() {
            var t = new r.Geometry;
            return t.vertices = i.map(this.coordinates, (function(t) {
                return new r.Vector3(t.x,t.y,0)
            }
            )),
            t
        }
        ,
        t.prototype.toLocalGeometry = function() {
            var t = new r.Geometry
              , e = this.GeoTransformationService.vectorArrayToLocal(this.coordinates);
            return t.vertices = i.map(e, (function(t) {
                return new r.Vector3(t.x,t.y,0)
            }
            )),
            t
        }
        ,
        t.prototype.copy = function(t) {
            this.coordinates = i.clone(t.coordinates)
        }
        ,
        t.prototype.clone = function() {
            var e = new t(this.GeoTransformationService);
            return e.copy(this),
            e
        }
        ,
        t.prototype.getFirstPoint = function() {
            return this.coordinates[0]
        }
        ,
        t
    }();
    e.LineString = o;
    var a = function() {
        this.type = "LineString"
    };
    e.LineStringRest = a
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e(e, n) {
            var i = t.call(this, e, n) || this;
            return i.rx = 1,
            i.ry = 0,
            i.tx = 0,
            i.ty = 0,
            i.tz = 0,
            i
        }
        return r(e, t),
        e.prototype.copy = function(e, n) {
            return void 0 === n && (n = !1),
            t.prototype.fill.call(this, e),
            this.name = e.name,
            this.parent = e.parent,
            this.parentId = e.parentId,
            this.spatialReference = e.spatialReference,
            this.spatialReferenceString = e.spatialReferenceString,
            this.rx = e.rx,
            this.ry = e.ry,
            this.tx = e.tx,
            this.ty = e.ty,
            this.tz = e.tz,
            n || (this.dirty = e.dirty,
            this.crs = e.crs,
            this.transform = e.transform),
            this
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.name = e.name,
            this.parentId = e.parent_id,
            this.spatialReference = e.spatial_reference,
            this.spatialReferenceString = e.spatial_reference_string,
            this.rx = e.rx,
            this.ry = e.ry,
            this.tx = e.tx,
            this.ty = e.ty,
            this.tz = e.tz
        }
        ,
        e.prototype.toData = function() {
            var t, e = {};
            return this.fillDto(e),
            e.name = this.name,
            e.parent_id = null === (t = this.parent) || void 0 === t ? void 0 : t.id,
            e.spatial_reference = this.spatialReference,
            e.spatial_reference_string = this.spatialReferenceString || void 0,
            e.rx = this.rx,
            e.ry = this.ry,
            e.tx = this.tx,
            e.ty = this.ty,
            e.tz = this.tz,
            e
        }
        ,
        e
    }(n(102).RepositoryObject);
    e.AffineRefSysEntity = o
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.THREE = "three",
        t.TWEEN = "tweenjs",
        t.HAMMER = "hammerjs",
        t.ANGULAR = "angular",
        t.JQUERY = "jquery"
    }(e.ThirdPartyLibraries || (e.ThirdPartyLibraries = {}))
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , r = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    function o(t, e) {
        var n = new Promise((function(e, n) {
            t.onerror = function() {
                n()
            }
            ,
            t.onload = function() {
                e()
            }
        }
        ));
        return e.body.appendChild(t),
        n
    }
    function a(t, e) {
        void 0 === e && (e = document);
        var n = e.createElement("script");
        return n.type = "text/javascript",
        n.src = t,
        n
    }
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    e.loadScriptWithTimeout = function(t, e, n) {
        var s = function(t) {
            return new Promise((function(e) {
                return window.setTimeout(e, t)
            }
            ))
        }(e).then((function() {
            throw new Error("Could not load " + t + " before timeout")
        }
        ))
          , c = function(t, e) {
            return i(this, void 0, void 0, (function() {
                var n, i;
                return r(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        return [4, o(n = document.createElement("iframe"), document)];
                    case 1:
                        r.sent(),
                        e && (n.contentWindow[e] = function() {}
                        ),
                        i = a(t, n.contentDocument),
                        r.label = 2;
                    case 2:
                        return r.trys.push([2, 4, 5, 6]),
                        [4, o(i, n.contentDocument)];
                    case 3:
                        return r.sent(),
                        [3, 6];
                    case 4:
                        throw r.sent(),
                        new Error("Load test in IFrame failed for " + i.src);
                    case 5:
                        return n.remove(),
                        [7];
                    case 6:
                        return [2]
                    }
                }
                ))
            }
            ))
        }(t, n);
        return Promise.race([c, s]).then((function() {
            document.body.appendChild(a(t))
        }
        ))
    }
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.copy = function(e, n) {
            return void 0 === n && (n = !1),
            t.prototype.fill.call(this, e),
            this.lastModified = e.lastModified,
            this.fileId = e.fileId,
            this
        }
        ,
        e.prototype.fillFromData = function(e) {
            t.prototype.fillFromData.call(this, e),
            this.lastModified = e.last_modified,
            this.fileId = e.file_id
        }
        ,
        e.prototype.toData = function() {
            var t = {};
            return this.fillDto(t),
            t.file_id = this.fileId,
            t
        }
        ,
        e
    }(n(376).LocationEntity);
    e.PoseEntity = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return t.call(this, "MeasurementModeExited") || this
        }
        return r(e, t),
        e.prototype.measurementsTaken = function(t) {
            return this.withData("measurementsTaken", t),
            this
        }
        ,
        e.prototype.measurementsDiscarded = function(t) {
            return this.withData("measurementsDiscarded", t),
            this
        }
        ,
        e.prototype.measurementsSaved = function(t) {
            return this.withData("measurementsSaved", t),
            this
        }
        ,
        e
    }(n(64).TrackingEvent);
    e.MeasurementModeExitedEvent = o
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t() {
            this._measurementsSaved = 0,
            this._measurementsDiscarded = 0
        }
        return Object.defineProperty(t.prototype, "measurementsSaved", {
            get: function() {
                return this._measurementsSaved
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "measurementsDiscarded", {
            get: function() {
                return this._measurementsDiscarded
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "total", {
            get: function() {
                return this._measurementsDiscarded + this._measurementsSaved
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.saveMeasurements = function(t) {
            void 0 === t && (t = 1),
            this._measurementsSaved = this._measurementsSaved + t
        }
        ,
        t.prototype.discardMeasurements = function(t) {
            void 0 === t && (t = 1),
            this._measurementsDiscarded = this._measurementsDiscarded + t
        }
        ,
        t
    }();
    e.MeasurementSessionMetrics = i
}
, function(t, e, n) {
    var i = "MenuUI/ToolboxMenuUI/ToolboxMenu.html"
      , r = '<div id="vertical-toolbox-menu" class="vertical-menu float-right"\n     ng-class="{\'hide\': vm.ToolboxMenuService.isMenuHidden,\n                \'sticky-headers-enabled\': vm.displayStickyHeaders}">\n\n\t\x3c!-- Draggable width --\x3e\n\t<div class="resize-handler"\n\t     resize-handler direction="\'left\'" is-collapsed="vm.ToolboxMenuService.isCollapsed"\n\t     collapsed-size="vm.getMenuCollapsedWidth"\n\t     collapse-threshold="vm.getMenuCollapseThreshold"\n\t     min-expanded-size="vm.getMenuDefaultWidth">\n\t</div>\n\n\t\x3c!-- Expand button --\x3e\n\t<span class="expand-wrapper"\n\t      expand-handler direction="\'horizontal\'" collapsed-size="vm.getMenuCollapsedWidth"\n\t      expanded-size="vm.getMenuDefaultWidth">\n\t\t\t<img class="ic_svg expand-handler" ng-src="' + n(583) + '"\n\t\t\t     alt="{{\'Expand\'|translate}}">\n\t</span>\n\n\t<div class="vertical-menu-heading">\n\t\t\x3c!--Heading--\x3e\n\t\t<h3 title="{{vm.ToolboxMenuService.title | translate:\'title\'}}">\n\t\t\t{{vm.ToolboxMenuService.title | translate:"title"}}\n\t\t</h3>\n\n\t\t\x3c!--Close button--\x3e\n\t\t<img class="menu-close-button ic_svg"\n\t\t     ng-click="vm.exit()"\n\t\t\t ng-disabled="vm.ToolboxMenuService.isCloseDisabled()"\n\t\t     ng-src="' + n(1242) + '" alt="{{\'Close\'|translate}}">\n\t</div>\n\n\t\x3c!--Content--\x3e\n\t<div class="vertical-menu-content panel-autoscroll">\n\t\t<div ng-include src="vm.ToolboxMenuService.template"\n\t\t     ng-hide="vm.ToolboxMenuService.isCollapsed && !vm.ToolboxMenuService.hasCollapsedTemplate"></div>\n\t</div>\n</div>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    t.exports = n.p + "963e14ae279259852631cf252e6591ea.ic_close_dark.svg"
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1244);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, ".vertical-menu{position:relative;width:440px;max-width:100%;height:100%;border-radius:0;visibility:visible!important;transition:width .2s,left .2s;background-color:#fff}.vertical-menu.resizing{transition:none}.vertical-menu.fullscreen{width:100%}.vertical-menu>div{height:100%}.vertical-menu .panel-sticky-header>.panel-heading{position:absolute;top:0;left:0;right:0;padding-left:20px;padding-right:20px;height:53px;z-index:1;background-color:hsla(0,0%,100%,.95);min-width:375px}.indoorViewer.vertical-menu-min-width .vertical-menu .panel-sticky-header>.panel-heading{min-width:300px}.vertical-menu .panel-sticky-header>.panel-body{padding-top:53px}.vertical-menu:not(.sticky-headers-enabled) .panel-sticky-header>.panel-heading{position:relative}.vertical-menu:not(.sticky-headers-enabled) .panel-sticky-header>.panel-body{padding-top:0}.vertical-menu .vertical-menu-heading{position:relative;height:62px;background-color:#fff;border-bottom:1px solid #e6e6e6}.vertical-menu .vertical-menu-heading>h3{font-size:20px;color:#4a4a4a;margin:0 60px 0 0;padding:20px 0 20px 60px;overflow-x:hidden;white-space:nowrap;text-overflow:ellipsis}.vertical-menu .vertical-menu-heading .menu-close-button{top:9px;right:9px;z-index:1}.vertical-menu .vertical-menu-content{position:relative;height:calc(100% - 62px)}.vertical-menu .vertical-menu-content>.panel{border-radius:0}.vertical-menu .vertical-menu-content ul{padding-left:0;list-style:none}.vertical-menu .vertical-menu-content,.vertical-menu .vertical-menu-heading{min-width:375px}.indoorViewer.vertical-menu-min-width .vertical-menu .vertical-menu-heading,.vertical-menu .vertical-menu-content{min-width:300px}.vertical-menu .resize-handler{position:absolute;top:0;left:0;width:12px;height:100%;z-index:15;cursor:ew-resize;transition:width .2s,left .2s}.vertical-menu .resize-handler.resizing{left:auto;right:0;width:100vw}.indoorViewer.mobile-small .vertical-menu:not(.hide):not(.collapsed) .resize-handler,.indoorViewer.mobile .vertical-menu:not(.hide):not(.collapsed) .resize-handler{left:-50px;width:50px;background:rgba(0,0,0,.6)}.vertical-menu .expand-wrapper{display:none;background:#fff;position:absolute;bottom:0;height:62px;width:100%;z-index:2;border-top:1px solid #eee}.vertical-menu .expand-handler{position:absolute;padding:12px;bottom:6px;left:6px;font-size:2em;cursor:pointer}.vertical-menu.collapsed .vertical-menu-heading h3{display:none}.vertical-menu.collapsed .vertical-menu-heading .menu-close-button{left:9px}.vertical-menu.collapsed .expand-wrapper{display:block}toolbox-menu>.vertical-menu{box-shadow:0 3px 12px rgba(0,0,0,.23),0 3px 12px rgba(0,0,0,.16);z-index:11;min-width:19px}.indoorViewer.mobile-small toolbox-menu>.vertical-menu,.indoorViewer.mobile toolbox-menu>.vertical-menu{max-width:calc(100vw - 50px);width:60px}toolbox-menu>.vertical-menu.hide{width:0!important;min-width:0}toolbox-menu>.vertical-menu.sticky-headers-enabled .vertical-menu-content{position:static}toolbox-menu>.vertical-menu.sticky-headers-enabled .vertical-menu-content .panel-sticky-header>.panel-heading{top:62px}toolbox-menu>.vertical-menu.sticky-headers-enabled #vector-map-editor .panel-sticky-header>.panel-heading{height:90px}toolbox-menu>.vertical-menu.sticky-headers-enabled #vector-map-editor .panel-sticky-header>.panel-body{padding-top:90px}toolbox-menu>.vertical-menu .vertical-menu-heading{border-bottom:1px solid #eee}toolbox-menu>.vertical-menu .vertical-menu-heading h3{color:#000;padding-left:20px}toolbox-menu>.vertical-menu .vertical-menu-content{padding:15px 20px;max-height:none;overflow-x:hidden}toolbox-menu #nav-graph-toolbox>.panel>.panel-body{padding-left:0;padding-right:0;padding-bottom:0}toolbox-menu #nav-graph-toolbox .undo-button{position:relative;bottom:3px;float:right;padding:3px 5px;border:none;color:#337ab7;background-color:#fff}toolbox-menu #nav-graph-toolbox .undo-button:active,toolbox-menu #nav-graph-toolbox .undo-button:hover{color:#337ab7;background-color:#e6e6e6}toolbox-menu #nav-graph-toolbox .navgraph-history-item{display:block}toolbox-menu #nav-graph-toolbox .navgraph-history-item:hover{background-color:#e6e6e6}toolbox-menu .vertical-menu.collapsed .vertical-menu-content{padding:0}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    n(1246),
    n(1247);
    var i = n(2)
      , r = n(153)
      , o = n(7)
      , a = n(8)
      , s = function() {
        function t(t, e) {
            var n = this;
            this.UnitService = t,
            this.$timeout = e,
            this.UoMSystem = r.UoMSystem,
            this.max = 1 / 0,
            this.min = -1 / 0,
            this.fractionSize = 2,
            this.allowEmpty = !1,
            this.domainChanged(),
            this.UnitService.unitChanged.connect((function() {
                n.currentUnit = r.UnitsOfMeasurement.getDefaultUnitByDomainAndSystem(n.domain, n.UnitService.currentSystem)
            }
            ))
        }
        return t.$inject = ["UnitService", "$timeout"],
        Object.defineProperty(t.prototype, "domain", {
            get: function() {
                return void 0 === this._domain ? r.MeasurementDomain.DISTANCE : this._domain
            },
            set: function(t) {
                this._domain = t,
                this.domainChanged()
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "step", {
            get: function() {
                var t;
                switch (this.currentUnit.name) {
                case r.UnitsOfMeasurement.MILLIMETER[0]:
                    t = 1 / r.UnitsOfMeasurement.DISTANCE.metric.Millimeter.factor;
                    break;
                case r.UnitsOfMeasurement.CENTIMETER[0]:
                    t = 1 / r.UnitsOfMeasurement.DISTANCE.metric.Centimeter.factor;
                    break;
                case r.UnitsOfMeasurement.KILOMETER[0]:
                    t = 1 / r.UnitsOfMeasurement.DISTANCE.metric.Kilometer.factor;
                    break;
                case r.UnitsOfMeasurement.MILE[0]:
                    t = .01;
                    break;
                default:
                    t = 1
                }
                return t / Math.pow(10, this.fractionSize)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "convertedValue", {
            get: function() {
                if (!this.allowEmpty || !this.isEmpty(this.ngModel))
                    return +this.currentUnit.fromBase(this.ngModel).toFixed(this.fractionSize)
            },
            set: function(t) {
                var e = this;
                (this.allowEmpty && this.isEmpty(t) || this.currentUnit.toBase(t) < this.max && this.currentUnit.toBase(t) > this.min) && (this.ngModel = this.allowEmpty && this.isEmpty(t) ? void 0 : this.currentUnit.toBase(t),
                this.change && this.$timeout((function() {
                    return e.change()
                }
                )).catch(a.handleWarning))
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.isEmpty = function(t) {
            return null == t
        }
        ,
        t.prototype.switchUnit = function(t, e) {
            this.UnitService.setUnit(e, !0),
            this.currentUnit = t
        }
        ,
        t.prototype.domainChanged = function() {
            this.currentUnit = r.UnitsOfMeasurement.getDefaultUnitByDomainAndSystem(this.domain, this.UnitService.currentSystem),
            this.metricDomainUnits = o.orderBy(r.UnitsOfMeasurement.getUnitsOfMeasurementByDomain(this.domain)[r.UoMSystem.METRIC], (function(t) {
                return t.factor
            }
            )),
            this.usDomainUnits = o.orderBy(r.UnitsOfMeasurement.getUnitsOfMeasurementByDomain(this.domain)[r.UoMSystem.IMPERIAL], (function(t) {
                return t.factor
            }
            ))
        }
        ,
        t
    }();
    e.UnitAwareInputController = s;
    var c = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "Core/UI/UnitAwareInput.html",
            this.controller = s,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                ngModel: "=",
                domain: "@?",
                change: "&",
                min: "=?",
                max: "=?",
                fractionSize: "@?",
                readOnly: "=",
                allowEmpty: "=?"
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.UnitAwareInputDirective = c,
    i.module("IVWebApp").directive("unitAwareInput", c.factory())
}
, function(t, e) {
    var n = "Core/UI/UnitAwareInput.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="input-group">\n\t<input class="form-control" type="number" step="{{vm.step}}" ng-model="vm.convertedValue"\n\t       ng-readonly="vm.readOnly" placeholder="{{\'N/A\' | translate}}">\n\t<div class="input-group-btn">\n\t\t<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"\n\t\t        aria-haspopup="true" aria-expanded="false">\n\t\t\t<span>{{vm.currentUnit.symbol}}</span>\n\t\t\t<span class="caret"></span>\n\t\t</button>\n\t\t<ul class="dropdown-menu dropdown-menu-right">\n\t\t\t<li ng-repeat="unit in vm.metricDomainUnits" ng-click="vm.switchUnit(unit, vm.UoMSystem.METRIC)">\n\t\t\t\t{{unit.symbol}}\n\t\t\t</li>\n\t\t\t<li role="separator" class="divider"></li>\n\t\t\t<li ng-repeat="unit in vm.usDomainUnits" ng-click="vm.switchUnit(unit, vm.UoMSystem.IMPERIAL)">\n\t\t\t\t{{unit.symbol}}\n\t\t\t</li>\n\t\t</ul>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1248);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "unit-aware-input .caret{visibility:hidden}unit-aware-input:hover .caret{visibility:inherit}unit-aware-input input[readonly]{padding-right:0}unit-aware-input .btn{padding-top:6px;padding-bottom:6px;white-space:nowrap!important}unit-aware-input .dropdown-menu{min-width:0;text-align:right}unit-aware-input .dropdown-menu li{text-align:center}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(7)
      , o = n(108)
      , a = function(t, e) {
        this.cssClasses = t,
        this.defaultText = e
    }
      , s = function() {
        function t(t, e) {
            this.gettext = t,
            this.$compile = e,
            this.restrict = "E",
            this.transclude = !0,
            this.tags = {
                "ok-button": new a("btn-primary ok-button",this.gettext("Okay")),
                "save-button": new a("btn-primary save-button",this.gettext("Save")),
                "abort-button": new a("btn-default abort-button",this.gettext("Abort")),
                "cancel-button": new a("btn-default cancel-button",this.gettext("Cancel")),
                "close-button": new a("btn-default close-button",this.gettext("Close")),
                "discard-button": new a("btn-danger discard-button",this.gettext("Discard")),
                "delete-button": new a("btn-danger delete-button",this.gettext("Delete")),
                "undo-button": new a("btn-default undo-button",this.gettext("Undo")),
                "move-button": new a("btn-default move-button",this.gettext("Move")),
                "input-button": new a("btn-default",""),
                "default-button": new a("btn-default","")
            }
        }
        return t.factory = function() {
            return ["gettext", "$compile", function(e, n) {
                return new t(e,n)
            }
            ]
        }
        ,
        t.prototype.link = function(t, e, a, s, c) {
            var l = this
              , u = e.prop("tagName").toLowerCase()
              , d = this.tags[u];
            if (!d)
                throw new o.IVFrontendException(u + " is an unimplemented button directive type!");
            var p = "input-button" !== u ? i.element("<button></button>") : i.element("<label></label>");
            if (p.append('<span class="spinner spinner-in-btn"><img class="in-btn-group" ng-src="' + n(94) + '"></span>'),
            r.forIn(a, (function(t, e) {
                if (!e.startsWith("$"))
                    if ("buttonTooltip" !== e) {
                        var n = a.$attr[e];
                        p.attr(n, t)
                    } else
                        p.attr("iv-tooltip", t)
            }
            )),
            a.ivTooltip)
                throw new o.IVFrontendException('Using "iv-tooltip" on ' + u + ' directive does not work, use "button-tooltip" instead');
            if (a.translate)
                throw new o.IVFrontendException('Using "translate" on ' + u + " directive is not supported!");
            if (a.ngIf)
                throw new o.IVFrontendException('Using "ng-if on ' + u + " doesn't work, use ng-show instead");
            if (a.type || p.attr("type", "button"),
            a.inProgress) {
                var h = a.inProgress;
                p.attr("ng-disabled", p.attr("ng-disabled") || h),
                p.attr("ng-class", "{'in-progress': " + h + "}")
            }
            p.addClass("btn panel-control-button " + d.cssClasses + " " + a.class),
            e.replaceWith(p),
            c((function(e) {
                r.some(e.toArray(), (function(t) {
                    return !!t.outerHTML
                }
                )) ? (l.$compile(p)(t),
                p.append(e)) : (p.append("<span translate>" + d.defaultText + "</span>"),
                l.$compile(p)(t))
            }
            ))
        }
        ,
        t
    }();
    e.ButtonDirective = s,
    i.module("IVWebApp").directive("okButton", s.factory()).directive("saveButton", s.factory()).directive("abortButton", s.factory()).directive("cancelButton", s.factory()).directive("closeButton", s.factory()).directive("discardButton", s.factory()).directive("deleteButton", s.factory()).directive("undoButton", s.factory()).directive("moveButton", s.factory()).directive("inputButton", s.factory()).directive("defaultButton", s.factory())
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var i = n(2)
          , r = n(20)
          , o = n(212)
          , a = n(8)
          , s = function() {
            function e(t, e) {
                this.$document = t,
                this.$timeout = e,
                this.restrict = "E",
                this.transclude = !0
            }
            return e.factory = function() {
                return e.initCustomModalCloseHandlers(),
                ["$document", "$timeout", function(t, n) {
                    return new e(t,n)
                }
                ]
            }
            ,
            e.initCustomModalCloseHandlers = function() {
                var n = this;
                t(document).on("click", e.customModalSelector, (function(t) {
                    setTimeout((function() {
                        var n = e.getCustomModalElement();
                        t.target.classList.contains("menu-close-button") && !n.length && e.focusModalOnTop()
                    }
                    ))
                }
                )),
                t(document).on("keydown", (function(t) {
                    var i = e.getCustomModalElement()
                      , r = t.keyCode === o.KeyEvent.DOM_VK_ESCAPE && !t.shiftKey && !t.altKey && !t.ctrlKey
                      , a = t.keyCode === o.KeyEvent.DOM_VK_SLASH && t.shiftKey && !t.altKey && !t.ctrlKey
                      , s = i.length > 0 && (r || a)
                      , c = 0 === i.length && a;
                    e.transitionInProgress = c,
                    setTimeout((function() {
                        s ? n.focusModalOnTop() : c && (e.transitionInProgress = !1,
                        e.getCustomModalElement().focus())
                    }
                    ))
                }
                ))
            }
            ,
            e.prototype.link = function(t, n, o, s, c) {
                var l = this;
                c((function(n) {
                    var o = l.$document[0].querySelector("body");
                    i.element(o).append(n),
                    l.$timeout((function() {
                        var i = n.find(".modal").addBack(".modal");
                        t.$on("$destroy", (function() {
                            n.remove(),
                            l.getBackdropElement(i).remove()
                        }
                        )),
                        i.on("focus", (function() {
                            e.getCustomModalElement().length && r.blurActiveElement()
                        }
                        )),
                        i.on("keydown", (function(t) {
                            e.transitionInProgress && t.stopImmediatePropagation()
                        }
                        )),
                        i.bind("show.bs.modal", (function() {
                            e.transitionInProgress = !0,
                            Number.isFinite(l.$document.data("num_open_modals")) || l.$document.data("num_open_modals", 0),
                            i.is("[data-iv-modal-stack]") || l.$timeout((function() {
                                var t = l.$document.data("num_open_modals");
                                l.$document.data("num_open_modals", t + 1),
                                i.attr("data-iv-modal-stack", t),
                                i.css("z-index", 1502 + 10 * l.$document.data("num_open_modals"));
                                var e = l.$document.find(".modal-backdrop:not([data-iv-modal-stack])").first();
                                e.attr("data-iv-modal-stack", t),
                                e.css("z-index", 1501 + 10 * l.$document.data("num_open_modals"))
                            }
                            )).catch(a.handleWarning)
                        }
                        )),
                        i.bind("shown.bs.modal", (function() {
                            return e.transitionInProgress = !1
                        }
                        )),
                        i.bind("hidden.bs.modal", (function() {
                            l.getBackdropElement(i).remove(),
                            i.removeAttr("data-iv-modal-stack");
                            var t = l.$document.data("num_open_modals") - 1;
                            l.$document.data("num_open_modals", t),
                            e.focusModalOnTop()
                        }
                        ))
                    }
                    )).catch(a.handleWarning)
                }
                ))
            }
            ,
            e.focusModalOnTop = function() {
                var e = t(document).data("num_open_modals");
                t(".modal[data-iv-modal-stack='" + (e - 1) + "']").focus()
            }
            ,
            e.prototype.getBackdropElement = function(t) {
                var e = t.attr("data-iv-modal-stack");
                return this.$document.find(".modal-backdrop[data-iv-modal-stack='" + e + "']")
            }
            ,
            e.getCustomModalElement = function() {
                return t(e.customModalSelector)
            }
            ,
            e.customModalSelector = ".custom-modal",
            e.transitionInProgress = !1,
            e
        }();
        e.ModalDirective = s,
        i.module("IVWebApp").directive("modal", s.factory())
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = function() {
        function t(t) {
            this.$document = t,
            this.restrict = "A"
        }
        return t.factory = function() {
            return ["$document", function(e) {
                return new t(e)
            }
            ]
        }
        ,
        t.prototype.link = function(t, e, n, i) {
            var r = this;
            e.bind(n.outsideEvents, (function(t) {
                t.originalEvent && r.eventOn(t.originalEvent, !0)
            }
            )),
            this.$document.bind(n.outsideEvents, (function(e) {
                r.$document[0].querySelector("body").classList.contains("modal-open") || e.originalEvent && r.eventOn(e.originalEvent) || t.$apply(n.eventOutsideThis)
            }
            ))
        }
        ,
        t.prototype.eventOn = function(e, n) {
            return e = e,
            void 0 !== n && (e[t.FIELD] = n),
            e[t.FIELD]
        }
        ,
        t.FIELD = "eventOn",
        t
    }();
    e.EventOutsideDirective = r,
    i.module("IVWebApp").directive("eventOutsideThis", r.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = function() {
        function t() {
            this.require = "ngModel"
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t.prototype.link = function(t, e, n, i) {
            i.$parsers.push(parseFloat),
            i.$formatters.push((function(t) {
                return "" + t
            }
            ))
        }
        ,
        t
    }();
    e.ConvertToNumberDirective = r,
    i.module("IVWebApp").directive("convertToNumber", r.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(40)
      , o = function() {
        function t(t) {
            this.StorageService = t,
            this.restrict = "E";
            if (r.isPlatform(r.Platform.IOS))
                if (r.isMobileBrowser())
                    t.set("mobile_browser", !0);
                else if (!0 === t.get("mobile_browser")) {
                    document.head.querySelector("meta[name=viewport]").setAttribute("content", "width=1024, initial-scale=0.0")
                }
        }
        return t.factory = function() {
            return ["StorageService", function(e) {
                return new t(e)
            }
            ]
        }
        ,
        t
    }();
    e.MobileDesktopSiteDetectorDirective = o,
    i.module("IVWebApp").directive("mobileDesktopSiteDetector", o.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1255);
    var r = function() {
        function t() {
            var e = t.unique++;
            this.deleteConfirmationId = "delete-confirmation-" + e
        }
        return t.unique = 0,
        t
    }();
    e.DeleteConfirmationController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "Core/DeleteConfirmation/DeleteConfirmation.html",
            this.controller = r,
            this.controllerAs = "vm",
            this.transclude = {
                buttonContent: "?buttonContent"
            },
            this.scope = {
                onConfirmCallback: "&",
                inProgress: "=?",
                buttonDisabled: "=?",
                buttonClass: "@?",
                additionalActionCallback: "&?",
                additionalActionName: "@?",
                dismissButtonTitle: "@?",
                deleteButtonTitle: "@?"
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.DeleteConfirmationDirective = o,
    i.module("IVWebApp").directive("deleteConfirmation", o.factory())
}
, function(t, e) {
    var n = "Core/DeleteConfirmation/DeleteConfirmation.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '\x3c!-- Delete Modal --\x3e\n<delete-button data-toggle="modal" data-target="#{{vm.deleteConfirmationId}}"\n               ng-disabled="buttonDisabled" class="{{buttonClass}}"\n               in-progress="inProgress">\n\t<div ng-transclude="buttonContent">\n\t\t<span translate>Delete</span>\n\t</div>\n</delete-button>\n\n<delete-confirmation-modal delete-confirmation-id="{{vm.deleteConfirmationId}}"\n                           on-confirm-callback="onConfirmCallback()"\n                           additional-action-callback="additionalActionCallback()"\n                           additional-action-name="{{additionalActionName}}"\n                           dismiss-button-title="{{dismissButtonTitle}}"\n                           delete-button-title="{{deleteButtonTitle}}">\n\t<div ng-transclude>\n\t\t<span translate>Are you sure you want to delete?</span>\n\t</div>\n</delete-confirmation-modal>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1257);
    var r = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "Core/DeleteConfirmationModal/DeleteConfirmationModal.html",
            this.transclude = !0,
            this.scope = {
                deleteConfirmationId: "@",
                onConfirmCallback: "&",
                additionalActionCallback: "&?",
                additionalActionName: "@?",
                dismissButtonTitle: "@?",
                deleteButtonTitle: "@?"
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.DeleteConfirmationModalDirective = r,
    i.module("IVWebApp").directive("deleteConfirmationModal", r.factory())
}
, function(t, e) {
    var n = "Core/DeleteConfirmationModal/DeleteConfirmationModal.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<modal>\n\t<div class="modal fade" id="{{deleteConfirmationId}}" tabindex="-1" role="dialog"\n\t     aria-labelledby="{{deleteConfirmationId}}" aria-hidden="true">\n\t\t<div class="modal-dialog" role="document">\n\t\t\t<div class="modal-content">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<h4 translate translate-context="title">Confirm</h4>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t<ng-transclude>\n\t\t\t\t\t\t<span translate>Are you sure you want to delete?</span>\n\t\t\t\t\t</ng-transclude>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t<save-button class="pull-left"\n\t\t\t\t\t             ng-show="additionalActionCallback && additionalActionName"\n\t\t\t\t\t             ng-click="additionalActionCallback()">\n\t\t\t\t\t\t<span>{{additionalActionName}}</span>\n\t\t\t\t\t</save-button>\n\n\t\t\t\t\t<cancel-button class="btn btn-secondary" data-dismiss="modal"\n\t\t\t\t\t               ng-show="!dismissButtonTitle">\n\t\t\t\t\t</cancel-button>\n\t\t\t\t\t<delete-button class="btn btn-primary" data-dismiss="modal"\n\t\t\t\t\t               ng-click="onConfirmCallback()" ng-show="!deleteButtonTitle">\n\t\t\t\t\t</delete-button>\n\n\t\t\t\t\t<cancel-button class="btn btn-secondary" data-dismiss="modal"\n\t\t\t\t\t               ng-show="dismissButtonTitle">\n\t\t\t\t\t\t<span>{{dismissButtonTitle}}</span>\n\t\t\t\t\t</cancel-button>\n\t\t\t\t\t<delete-button class="btn btn-primary" data-dismiss="modal"\n\t\t\t\t\t               ng-show="deleteButtonTitle"\n\t\t\t\t\t               ng-click="onConfirmCallback()"><span>{{deleteButtonTitle}}</span>\n\t\t\t\t\t</delete-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        }),
        n(586);
        var i = n(2)
          , r = n(7)
          , o = n(40)
          , a = function() {
            function e(t, e, n, i) {
                this.gettextCatalog = t,
                this.IV = e,
                this.LanguageService = n,
                this.$compile = i,
                this.restrict = "A",
                this.scope = {
                    showTooltip: "=showTooltip",
                    ngDisabled: "=ngDisabled"
                }
            }
            return e.factory = function() {
                return ["gettextCatalog", "IV", "LanguageService", "$compile", function(t, n, i, r) {
                    return new e(t,n,i,r)
                }
                ]
            }
            ,
            e.prototype.link = function(t, n, i) {
                var r = this;
                o.isMobileBrowser() || this.IV.bootstrapped((function() {
                    var o = e.unique++;
                    t.tooltipId = "tooltip-" + o;
                    var a = e.createTooltip(n, t.tooltipId, i);
                    n.wrap(a),
                    r.$compile(a)(t),
                    r.defineCallbacks(n, i, t)
                }
                ))
            }
            ,
            e.createTooltip = function(e, n, i) {
                var r = t(document.createElement("span"));
                return r.addClass("custom-tooltip"),
                r.attr("id", n),
                r.attr("title", i.ivTooltip),
                r.attr("data-toggle", "tooltip"),
                r.attr("data-container", "body"),
                this.moveDataAttributes(e, i, r),
                r
            }
            ,
            e.moveDataAttributes = function(t, e, n) {
                var i = this;
                r.forIn(e, (function(o, a) {
                    var s = e.$attr[a];
                    r.includes(i.tooltipAttributes, s) && (n.attr(s, o),
                    t.removeAttr(s))
                }
                ))
            }
            ,
            e.prototype.defineCallbacks = function(t, n, i) {
                var r = this
                  , o = this.LanguageService.onLanguageChange.connect((function() {
                    return e.updateTranslatedTitle(n.ivTooltip, i.tooltipId)
                }
                ));
                n.$observe("ivTooltip", (function() {
                    return e.updateTranslatedTitle(n.ivTooltip, i.tooltipId)
                }
                )),
                i.$watch("showTooltip", (function(t) {
                    var e = void 0 === t || t;
                    r.toggleTooltip(e, i.tooltipId)
                }
                )),
                i.$watch("ngDisabled", (function(t) {
                    var n = t || !1;
                    e.updateCursorStyle(n, i.tooltipId)
                }
                )),
                i.$on("$destroy", (function() {
                    return o.disconnect()
                }
                )),
                t.on("$destroy", (function() {
                    r.toggleTooltip(!1, i.tooltipId)
                }
                ))
            }
            ,
            e.prototype.toggleTooltip = function(e, n) {
                var i = t("#" + n);
                e ? i.tooltip("enable") : i.tooltip("disable").tooltip("hide")
            }
            ,
            e.updateTranslatedTitle = function(e, n) {
                t("#" + n).attr("title", e).tooltip("fixTitle")
            }
            ,
            e.updateCursorStyle = function(e, n) {
                t("#" + n).attr("style", e ? "cursor:not-allowed" : "")
            }
            ,
            e.tooltipAttributes = ["data-animation", "data-container", "data-delay", "data-html", "data-placement", "data-selector", "data-template", "data-title", "data-trigger", "data-constraints", "data-offset"],
            e.unique = 0,
            e
        }();
        e.IvTooltipDirective = a,
        i.module("IVWebApp").directive("ivTooltip", a.factory())
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, ".custom-tooltip>:disabled{pointer-events:none}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1261),
    n(1262);
    var r = n(1264)
      , o = n(89)
      , a = n(25)
      , s = n(8)
      , c = function() {
        function t(t, e, n, i, a) {
            this.RestService = t,
            this.UrlService = e,
            this.$location = n,
            this.ConfigService = i,
            this.$timeout = a,
            this.feedbackProcessed = void 0,
            this.feedbackModel = new r.FeedbackEntity,
            this.showMessageDuration = 5e3,
            this.promiseWrapper = new o.PromiseProgressWrapper
        }
        return t.$inject = ["RestService", "UrlService", "$location", "ConfigService", "$timeout"],
        t.prototype.isVisible = function() {
            return "" !== this.ConfigService.getString(a.Configs.FEEDBACK_EMAIL_RECIPIENT_EMAIL, "")
        }
        ,
        t.prototype.isDataPrivacyAgreementRequired = function() {
            return this.ConfigService.getBoolean(a.Configs.FEEDBACK_PRIVACY_TEXT_CHECKBOX, !1)
        }
        ,
        t.prototype.getDataPrivacyStatement = function() {
            return this.ConfigService.getString(a.Configs.FEEDBACK_PRIVACY_TEXT_TEXT, "")
        }
        ,
        t.prototype.getDataPrivacyAsHtml = function() {
            return this.ConfigService.getString(a.Configs.FEEDBACK_PRIVACY_HTML, "")
        }
        ,
        t.prototype.sendFeedback = function() {
            var t = this;
            if (!this.isDataPrivacyAgreementRequired() || this.feedbackModel.agreedToDataPrivacy) {
                this.feedbackModel.addressBarUrl = this.$location.absUrl(),
                this.feedbackModel.sceneStateUrl = this.UrlService.generateShareUrl(),
                this.feedbackModel.devicePixelRatio = window.devicePixelRatio,
                this.feedbackModel.screenWidth = window.screen.width,
                this.feedbackModel.screenHeight = window.screen.height,
                this.feedbackModel.colorDepth = window.screen.colorDepth,
                this.feedbackModel.colorDepth = window.screen.colorDepth,
                this.feedbackModel.windowWidth = document.body.clientWidth,
                this.feedbackModel.windowHeight = Math.max(window.innerHeight, document.body.clientHeight);
                var e = this.RestService.postApi("feedbackmail", this.feedbackModel.toData(), void 0, !1).then((function() {
                    return t.feedbackProcessed = !0
                }
                )).catch((function() {
                    return t.feedbackProcessed = !1
                }
                )).then((function() {
                    t.$timeout((function() {
                        return t.feedbackProcessed = void 0
                    }
                    ), t.showMessageDuration).catch(s.handleWarning)
                }
                ));
                this.promiseWrapper.wrap(e).catch(s.handleWarning)
            }
        }
        ,
        t.prototype.isRequestInProgress = function() {
            return this.promiseWrapper.isInProgress
        }
        ,
        t.prototype.hasFeedbackBeenProcessed = function() {
            return void 0 !== this.feedbackProcessed
        }
        ,
        t
    }();
    e.FeedbackController = c;
    var l = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "FeedbackUI/Feedback.html",
            this.controller = c,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.FeedbackDirective = l,
    i.module("IVWebApp").directive("feedback", l.factory())
}
, function(t, e, n) {
    var i = "FeedbackUI/Feedback.html"
      , r = '\x3c!-- Bottom left links --\x3e\n<a ng-if="vm.isVisible()" class="feedback"\n   data-toggle="modal" data-target="#feedbackForm"\n   title="{{\'Feedback\' | translate}}" translate>\n\tFeedback\n</a>\n\n\x3c!-- Modal box for feedback form --\x3e\n<modal>\n\t<div class="modal fade" id="feedbackForm" tabindex="-1" role="dialog"\n\t     aria-labelledby="" aria-hidden="true" data-backdrop="static">\n\t\t<div class="modal-dialog">\n\t\t\t<div class="modal-content">\n\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t     ng-src="' + n(35) + '"\n\t\t\t\t\t     alt="{{\'Close\' | translate}}"\n\t\t\t\t\t     data-dismiss="modal">\n\t\t\t\t\t<h4 translate translate-context="title">\n\t\t\t\t\t\tFeedback Form\n\t\t\t\t\t</h4>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t<form name="feedback" ng-submit="vm.sendFeedback()" novalidate>\n\t\t\t\t\t\t\x3c!-- novalidate prevents HTML5 validation since we will be validating ourselves --\x3e\n\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t<span translate\n\t\t\t\t\t\t\t      translate-context="followed by *-symbol (also translatable)">\n\t\t\t\t\t\t\t\tFields marked with this symbol are required:\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<required></required>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t<label translate>First name</label>\n\t\t\t\t\t\t\t<input type="text" class="form-control" name="first_name"\n\t\t\t\t\t\t\t       ng-model="vm.feedbackModel.firstName">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t<label translate>Last name</label>\n\t\t\t\t\t\t\t<input type="text" class="form-control" name="last_name"\n\t\t\t\t\t\t\t       ng-model="vm.feedbackModel.lastName">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t<label translate>Email address</label>\n\t\t\t\t\t\t\t<required></required>\n\t\t\t\t\t\t\t<input type="email" class="form-control" name="user_email"\n\t\t\t\t\t\t\t       ng-model="vm.feedbackModel.userEmail"\n\t\t\t\t\t\t\t       required>\n\t\t\t\t\t\t\t<p ng-show="feedback.user_email.$invalid && !feedback.user_email.$pristine"\n\t\t\t\t\t\t\t   class="help-block" translate>\n\t\t\t\t\t\t\t\tPlease enter a valid email address\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t<label translate>Feedback type</label>\n\t\t\t\t\t\t\t<select class="form-control" name="feedback_type"\n\t\t\t\t\t\t\t        ng-model="vm.feedbackModel.feedbackType">\n\t\t\t\t\t\t\t\t<option value="{{\'Error\' | translate}}" translate>\n\t\t\t\t\t\t\t\t\tError\n\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t\t<option value="{{\'Suggestion\' | translate}}" translate>\n\t\t\t\t\t\t\t\t\tSuggestion\n\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t<label translate>\n\t\t\t\t\t\t\t\tMessage\n\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t<required></required>\n\t\t\t\t\t\t\t<textarea class="form-control"\n\t\t\t\t\t\t\t          rows="5"\n\t\t\t\t\t\t\t          name="message"\n\t\t\t\t\t\t\t          ng-model="vm.feedbackModel.message"\n\t\t\t\t\t\t\t          required>\n\t\t\t\t\t\t\t</textarea>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div ng-bind-html="vm.getDataPrivacyAsHtml()"></div>\n\n\t\t\t\t\t\t<div class="form-group"\n\t\t\t\t\t\t     ng-if="vm.isDataPrivacyAgreementRequired()">\n\t\t\t\t\t\t\t<label class="radio-inline no-padding-left">\n\t\t\t\t\t\t\t\t<input type="checkbox"\n\t\t\t\t\t\t\t\t       class="form-control-inline"\n\t\t\t\t\t\t\t\t       ng-model="vm.feedbackModel.agreedToDataPrivacy"\n\t\t\t\t\t\t\t\t       required>\n\t\t\t\t\t\t\t\t{{vm.getDataPrivacyStatement()}}\n\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div class="form-group text-right">\n\t\t\t\t\t\t\t<span ng-show="vm.isRequestInProgress()"\n\t\t\t\t\t\t\t      class="spinner next-to-btngroup">\n\t\t\t\t\t\t\t\t<img class="in-btn-group" ng-src="' + n(94) + '">\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<div class="btn-group" role="group" aria-label="...">\n\t\t\t\t\t\t\t\t<button type="button" class="btn btn-default" data-dismiss="modal"\n\t\t\t\t\t\t\t\t        translate>\n\t\t\t\t\t\t\t\t\tClose\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<button type="submit" class="btn btn-primary"\n\t\t\t\t\t\t\t\t        ng-disabled="feedback.$invalid || vm.waitingForResponse"\n\t\t\t\t\t\t\t\t        translate>\n\t\t\t\t\t\t\t\t\tSubmit\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</form>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="modal-footer text-left" ng-if="vm.hasFeedbackBeenProcessed()">\n\t\t\t\t\t<div ng-if="!vm.feedbackProcessed" class="alert alert-danger">\n\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\tError while sending feedback.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div ng-if="vm.feedbackProcessed" class="alert alert-success">\n\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\tYour feedback has been sent successfully.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1263);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "feedback .feedback{font-size:.8em;line-height:2em;text-shadow:1px 1px 0 #fff;padding-left:1em;color:#000;cursor:pointer}feedback textarea{resize:vertical}feedback .next-to-btngroup{margin-right:5px}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t() {}
        return t.prototype.toData = function() {
            var t = {};
            return t.address_bar_url = this.addressBarUrl,
            t.scene_state_url = this.sceneStateUrl,
            t.device_pixel_ratio = this.devicePixelRatio,
            t.screen_width = this.screenWidth,
            t.screen_height = this.screenHeight,
            t.color_depth = this.colorDepth,
            t.window_width = this.windowWidth,
            t.window_height = this.windowHeight,
            t.first_name = this.firstName,
            t.last_name = this.lastName,
            t.user_email = this.userEmail,
            t.feedback_type = this.feedbackType,
            t.message = this.message,
            t.agreed_to_data_privacy = this.agreedToDataPrivacy,
            t
        }
        ,
        t
    }();
    e.FeedbackEntity = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(28),
    n(1266),
    n(1267);
    var r = n(25)
      , o = n(105)
      , a = function() {
        function t(t, e, n, i, r) {
            var o = this;
            this.ConfigService = t,
            this.ModeService = e,
            this.NavGraphEditingService = n,
            this.FloorChangerService = i,
            this.ViewService = r,
            this.floorNames = [],
            t.initialized.then((function() {
                i.onFloorUpdate.connect((function(t) {
                    o.floorNames = t.floorNames
                }
                ))
            }
            )).catch((function() {}
            ))
        }
        return t.$inject = ["ConfigService", "ModeService", "NavGraphEditingService", "FloorChangerService", "ViewService"],
        t.prototype.isVisible = function() {
            return this.ConfigService.getBoolean(r.Configs.UI_FLOORCHANGER_VISIBLE, !0) && this.ModeService.isNormalMode() || this.ModeService.isNavGraphEditorMode() && !this.NavGraphEditingService.isPathDrawingPossible() || this.ModeService.isDownloadPointCloudMode() && this.ViewService.getCurrentMainViewMode() === o.SceneViewMode.Map || this.ModeService.isMeasurementsMode()
        }
        ,
        t.prototype.getFloorClassByName = function(t) {
            var e = "";
            return this.FloorChangerService.getCurrentFloorName() === t && (e = e.concat("active")),
            e
        }
        ,
        t.prototype.changeFloorByName = function(t) {
            this.FloorChangerService.changeFloorByName(t).catch((function() {}
            ))
        }
        ,
        t
    }();
    e.FloorChangerController = a;
    var s = function() {
        function t() {
            this.controller = a,
            this.controllerAs = "vm",
            this.restrict = "EA",
            this.templateUrl = "FloorChanger/FloorChanger.html",
            this.scope = {
                floorNames: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.FloorChangerDirective = s,
    i.module("IVWebApp").directive("floorChanger", s.factory())
}
, function(t, e) {
    var n = "FloorChanger/FloorChanger.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div ng-if="vm.isVisible()" class="btn-group-vertical panel-autoscroll">\n\t<button ng-repeat="floorName in vm.floorNames | reverse"\n\t        type="button"\n\t        class="btn btn-default long-title"\n\t        ng-class="vm.getFloorClassByName(floorName)"\n\t        ng-click="vm.changeFloorByName(floorName)"\n\t        title="{{floorName}}">\n\t\t{{floorName}}\n\t</button>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1268);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "floor-changer .btn-group-vertical{max-height:45vh;max-width:100px}floor-changer .btn-default{border:none}floor-changer .btn-default:focus,floor-changer .btn-default:hover{background-color:#f0f0f0}floor-changer .btn-default.active:focus,floor-changer .btn-default.active:hover,floor-changer .btn-default:active:focus,floor-changer .btn-default:active:hover{color:#3398c7;background-color:#e6e6e6}floor-changer .btn{font-weight:700;padding-left:20px;padding-right:20px}#floorChanger{overflow-x:hidden;background-color:#fff}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(587)
      , s = function(t) {
        function e(e, n) {
            var i = t.call(this) || this;
            return i.$scope = e,
            i.MainViewService = n,
            i
        }
        return r(e, t),
        e.$inject = ["$scope", "MainViewService"],
        e.prototype.create = function(t) {
            var e = this.MainViewService.create(t);
            return this.$scope.$on("$destroy", (function() {
                return e.destroy()
            }
            )),
            e
        }
        ,
        e
    }(a.ViewComponent);
    e.MainViewComponent = s;
    var c = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.controller = s,
            e
        }
        return r(e, t),
        e.factory = function() {
            return function() {
                return new e
            }
        }
        ,
        e
    }(a.ViewDirective);
    e.MainViewDirective = c,
    o.module("IVWebApp").directive("ivMainView", c.factory())
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1271);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, ".iv-view{display:inline-block;-webkit-overflow-scrolling:touch;overflow:hidden}.iv-view:focus{outline:none}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2);
    n(1273),
    n(1274),
    n(1276),
    n(1280);
    var a = n(587)
      , s = function(t) {
        function e(e, n) {
            var i = t.call(this) || this;
            return i.$scope = e,
            i.MapViewService = n,
            i
        }
        return r(e, t),
        e.$inject = ["$scope", "MapViewService"],
        e.prototype.create = function(t) {
            var e = this.MapViewService.create(t);
            return this.$scope.$on("$destroy", (function() {
                return e.destroy()
            }
            )),
            e
        }
        ,
        e
    }(a.ViewComponent);
    e.MapViewComponent = s;
    var c = function(t) {
        function e() {
            var e = null !== t && t.apply(this, arguments) || this;
            return e.templateUrl = "MapView/UI/MapView.html",
            e.controller = s,
            e
        }
        return r(e, t),
        e.factory = function() {
            return function() {
                return new e
            }
        }
        ,
        e
    }(a.ViewDirective);
    e.MapViewDirective = c,
    o.module("IVWebApp").directive("ivMapView", c.factory())
}
, function(t, e) {
    var n = "MapView/UI/MapView.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="map-info">\n\t\x3c!-- Map scale div --\x3e\n\t<map-scale map-view="vm.view"></map-scale>\n\t\x3c!-- Copyrights --\x3e\n\t<map-attribution map-view="vm.view"></map-attribution>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1275);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "iv-map-view .map-info{position:absolute;left:10px;right:10px;bottom:0}#insetPanel iv-map-view .map-info{right:44px}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1277),
    n(1278);
    var r = function() {
        function t() {}
        return Object.defineProperty(t.prototype, "attribution", {
            get: function() {
                var t = this.mapView && this.mapView.getMapLayer()
                  , e = t && t.getAttributions()
                  , n = [];
                for (var i in e)
                    n.push({
                        attribution: i,
                        score: e[i].score
                    });
                return n.sort((function(t, e) {
                    return e.score - t.score
                }
                )),
                n.map((function(t) {
                    return t.attribution
                }
                )).join(", ")
            },
            enumerable: !0,
            configurable: !0
        }),
        t
    }();
    e.MapAttributionController = r;
    var o = function() {
        function t() {
            this.restrict = "EA",
            this.templateUrl = "MapView/UI/MapAttribution.html",
            this.controller = r,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                mapView: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.MapAttributionDirective = o,
    i.module("IVWebApp").directive("mapAttribution", o.factory())
}
, function(t, e) {
    var n = "MapView/UI/MapAttribution.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<span title="{{vm.attribution}}">{{vm.attribution}}</span>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1279);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "map-attribution{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:right;font-size:.8em;line-height:2em;text-shadow:1px 1px 1px #fff;padding-left:1em}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1281),
    n(1282);
    var r = n(20)
      , o = n(4)
      , a = function() {
        function t() {}
        return Object.defineProperty(t.prototype, "mapView", {
            get: function() {
                return this._mapView
            },
            set: function(t) {
                this._mapView = t,
                this.zoomSignalConnection && this.zoomSignalConnection.disconnect(),
                t && (this.zoomSignalConnection = t.onZoom.connect(r.invalidateAngular))
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.scalePixels = function() {
            return this.getMapScale()[1]
        }
        ,
        t.prototype.scaleUnit = function() {
            var t = this.getMapScale()[0];
            return t < 1e3 ? t.toString() + " m" : (t / 1e3).toString() + " km"
        }
        ,
        t.prototype.getMapScale = function() {
            var e = this.mapView && this.mapView.getDefaultViewport()
              , n = e && e.getCamera();
            if (n instanceof o.OrthographicCamera) {
                for (var i = (n.right - n.left) / e.getWidth(), r = 1, a = t.SCALE_SIZES[0], s = a / i; s < t.MIN_SCALE_WIDTH && r < t.SCALE_SIZES.length; )
                    s = (a = t.SCALE_SIZES[r++]) / i;
                return [a, s]
            }
            return [0, 0]
        }
        ,
        t.SCALE_SIZES = [1, 5, 10, 50, 100, 500, 1e3, 5e3, 1e4, 5e4, 1e5, 5e5, 1e6, 5e6],
        t.MIN_SCALE_WIDTH = 30,
        t
    }();
    e.MapScaleController = a;
    var s = function() {
        function t() {
            this.restrict = "EA",
            this.templateUrl = "MapView/UI/MapScale.html",
            this.controller = a,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                mapView: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.MapScaleDirective = s,
    i.module("IVWebApp").directive("mapScale", s.factory())
}
, function(t, e) {
    var n = "MapView/UI/MapScale.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<div ng-style=\"{width: vm.scalePixels() + 'px'}\">\n\t{{vm.scaleUnit()}}\n</div>\n")
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1283);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "map-scale div{height:3px;border:1px solid #000;border-top:none;line-height:2em;text-align:center;width:150px;font-size:.8em;float:left;text-shadow:1px 1px 1px #fff;margin-bottom:1.5em;white-space:nowrap}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1285),
    n(1286),
    n(265);
    var r = n(25)
      , o = n(40)
      , a = function() {
        function t(t, e, n, i) {
            this.AboutService = t,
            this.ConfigService = e,
            this.LicenseService = n,
            this.hotkeys = i,
            this.currentYear = (new Date).getFullYear(),
            this.config = t.config,
            this.version = t.version,
            this.isMobileBrowser = o.isMobileBrowser
        }
        return t.$inject = ["AboutService", "ConfigService", "LicenseService", "hotkeys"],
        t.prototype.fetchLicensesFile = function(t) {
            this.AboutService.getThirdPartyLibraries().then((function() {
                i.element(document.querySelector(t)).modal("show")
            }
            )).catch((function() {}
            ))
        }
        ,
        t.prototype.getPrivacyPolicy = function() {
            return this.ConfigService.getString(r.Configs.INFO_TERMS_PRIVACY)
        }
        ,
        t.prototype.havePrivacyPolicy = function() {
            return void 0 !== this.ConfigService.getString(r.Configs.INFO_TERMS_PRIVACY) && "" !== this.ConfigService.getString(r.Configs.INFO_TERMS_PRIVACY)
        }
        ,
        t.prototype.getExtraCredits = function() {
            return this.ConfigService.getString(r.Configs.INFO_TERMS_EXTRA, void 0)
        }
        ,
        t.prototype.toggleHotkeysCheatSheet = function() {
            this.hotkeys.toggleCheatSheet()
        }
        ,
        t
    }();
    e.AboutController = a;
    var s = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "Menu/About.html",
            this.controller = a,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.AboutDirective = s,
    i.module("IVWebApp").directive("about", s.factory())
}
, function(t, e, n) {
    var i = "Menu/About.html"
      , r = '\x3c!--About Indoor Viewer--\x3e\n<modal>\n\t<div id="about-modal" class="modal fade" tabindex="-1" role="dialog"\n\t     aria-hidden="true">\n\t\t<div class="modal-dialog modal-dialog-wide">\n\t\t\t<div class="modal-content">\n\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t     data-dismiss="modal"\n\t\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}">\n\n\t\t\t\t\t<h4 translate translate-context="title">About 4dkankan</h4>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="modal-body">\n\n\t\t\t\t\t<div class="logo-area">\n\t\t\t\t\t\t<a href="http://www.4dkankan.com" target="_blank">\n\t\t\t\t\t\t\t<img ng-src="' + n(588) + '" alt="4dkankan Logo">\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div style="font-size: 1.5em">\n\t\t\t\t\t\t4dkankan\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="form-group" style="font-size: 1em; font-style: italic;"\n\t\t\t\t\t\t title="Build {{vm.version.build}} {{vm.version.branch}} {{vm.version.commit | limitTo:8}} {{vm.version.commit2 | limitTo:8}}">\n\t\t\t\t\t\t<span translate translate-params-version="vm.version.version"\n\t\t\t\t\t\t\t  translate-context="IV version">\n\t\t\t\t\t\t\tVersion {{version}}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<span translate translate-params-year="vm.currentYear">\n\t\t\t\t\t\t\t\tCopyright © {{year}}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t4dkankan GmbH\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<br>\n\t\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\t\tAll rights reserved\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class="form-group" ng-if="vm.getExtraCredits()">\n\t\t\t\t\t\t<p ng-bind-html="vm.getExtraCredits()"></p>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<span translate\n\t\t\t\t\t\t      translate-context="Powered by many great software products: [...] any many more.">\n\t\t\t\t\t\t\tPowered by many great software products:\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href="http://github.com/mrdoob/three.js" target="_blank" class="blue">\n\t\t\t\t\t\t\t\t\tThree.js WebGL\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<a href="http://angularjs.org" target="_blank">\n\t\t\t\t\t\t\t\t\tAngularJS\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li translate\n\t\t\t\t\t\t\t\ttranslate-context="Powered by many great software products: [...] any many more.">\n\t\t\t\t\t\t\t\tand many more.\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t<div style="position:absolute; bottom:15px; right:15px">\n\t\t\t\t\t\t\t<span ng-click="vm.toggleHotkeysCheatSheet()"\n\t\t\t\t\t\t\t      ng-hide="vm.isMobileBrowser()"\n\t\t\t\t\t\t\t      class="link"\n\t\t\t\t\t\t\t      translate>\n\t\t\t\t\t\t\t\tKeyboard shortcuts\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<br/>\n\t\t\t\t\t\t\t<span ng-click="vm.fetchLicensesFile(\'#licensesOfUsedLibsModal\')"\n\t\t\t\t\t\t\t      id="third-party-licenses-button"\n\t\t\t\t\t\t\t      class="link"\n\t\t\t\t\t\t\t      translate>\n\t\t\t\t\t\t\t\tThird party licenses\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<span data-toggle="modal" data-target="#privacyPolicy"\n\t\t\t\t\t\t      ng-if="vm.havePrivacyPolicy()"\n\t\t\t\t\t\t      click="link"\n\t\t\t\t\t\t      translate>\n\t\t\t\t\t\t\tPrivacy policy\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n\n\x3c!--modal box for licenses--\x3e\n<modal>\n\t<div class="modal fade" id="licensesOfUsedLibsModal" tabindex="-1" role="dialog" aria-labelledby=""\n\t aria-hidden="true">\n\t\t<div class="modal-dialog modal-dialog-licenseText">\n\t\t\t<div class="modal-content">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t     data-dismiss="modal"\n\t\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}">\n\n\t\t\t\t\t<h4 translate translate-context="title">\n\t\t\t\t\t\tLicenses of Third Party Software\n\t\t\t\t\t</h4>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body panel-autoscroll">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<div class="row">\n\t\t\t\t\t\t\t<h4 class="col-sm-3" translate translate-context="title">\n\t\t\t\t\t\t\t\tName\n\t\t\t\t\t\t\t</h4>\n\t\t\t\t\t\t\t<h4 class="col-sm-6" translate translate-context="title">\n\t\t\t\t\t\t\t\tHomepage\n\t\t\t\t\t\t\t</h4>\n\t\t\t\t\t\t\t<h4 class="col-sm-3" translate translate-context="title">\n\t\t\t\t\t\t\t\tLicense\n\t\t\t\t\t\t\t</h4>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div ng-repeat="data in vm.config.openSourceSoftwareUsed">\n\t\t\t\t\t\t\t<div class="row space-from-top-between-rows">\n\t\t\t\t\t\t\t\t<div class="col-sm-3">\n\t\t\t\t\t\t\t\t\t{{data.name}}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="col-sm-6">\n\t\t\t\t\t\t\t\t\t<a ng-href="{{data.websiteUrl}}" target="_blank"\n\t\t\t\t\t\t\t\t\t   class="blue">{{data.websiteUrl}}</a>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="col-sm-3">\n\t\t\t\t\t\t\t\t\t<a ng-click="data.show=!data.show" href>\n\t\t\t\t\t\t\t\t\t\t<span ng-show="!data.show" class="show-license-button" translate>\n\t\t\t\t\t\t\t\t\t\t\tShow license\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t<span ng-show="data.show" class="hide-license-button" translate>\n\t\t\t\t\t\t\t\t\t\t\tHide license\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class="row space-from-top-between-rows"\n\t\t\t\t\t\t\t\t ng-show="data.show && data.sourceCodeUrl!==\'\'">\n\t\t\t\t\t\t\t\t<div class="col-sm-12">\n\t\t\t\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\t\t\t\tDownload source code:\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<a ng-href="{{data.sourceCodeUrl}}" target="_blank"\n\t\t\t\t\t\t\t\t\t   class="blue">{{data.sourceCodeUrl}}</a>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class="row space-from-top-between-rows" ng-show="data.show">\n\t\t\t\t\t\t\t\t<div class="col-sm-12">\n\t\t\t\t\t\t\t\t\t<span ng-repeat="licenseText in data.licenses">\n\t\t\t\t\t\t\t\t\t\t<pre>{{licenseText}}</pre>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n\n\x3c!-- Modal box for data privacy policy--\x3e\n<modal>\n\t<div class="modal fade" id="privacyPolicy" tabindex="-1" role="dialog"\n\t\t aria-labelledby="" aria-hidden="true">\n\t\t<div class="modal-dialog">\n\t\t\t<div class="modal-content">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t     data-dismiss="modal"\n\t\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}">\n\n\t\t\t\t\t<h4 translate translate-context="title">\n\t\t\t\t\t\tData Privacy Policy\n\t\t\t\t\t</h4>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body" ng-bind-html="vm.getPrivacyPolicy()"></div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1287);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "#licensesOfUsedLibsModal .modal-dialog{width:calc(100% - 20px);margin:0 10px}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1289),
    n(1290);
    var r = n(40)
      , o = n(1292)
      , a = n(141);
    n(590);
    var s = n(25)
      , c = n(21)
      , l = function() {
        function t(t, e, n, i, r, o, a, s, c, l, u, d, p) {
            this.SidebarMenuService = t,
            this.UrlService = e,
            this.ConfigService = n,
            this.SearchService = i,
            this.PoiService = r,
            this.ViewMenuService = o,
            this.UserService = a,
            this.ModeService = s,
            this.VectorMapService = c,
            this.IV = l,
            this.gettext = u,
            this.gettextCatalog = d,
            this.TrackingService = p,
            this.navbarItems = [],
            this.initMenuItems()
        }
        return t.$inject = ["SidebarMenuService", "UrlService", "ConfigService", "SearchService", "PoiService", "ViewMenuService", "UserService", "ModeService", "VectorMapService", "IV", "gettext", "gettextCatalog", "TrackingService"],
        t.prototype.toggleItem = function(t) {
            t.onClick && t.onClick(),
            this.activeItem = t !== this.activeItem && t.template ? t : void 0
        }
        ,
        t.prototype.hideActiveItem = function() {
            this.activeItem && this.activeItem.autoHide && this.toggleItem(this.activeItem)
        }
        ,
        t.prototype.getItemTitle = function(t) {
            return this.gettextCatalog.getString(t.title, void 0, "title")
        }
        ,
        t.prototype.initMenuItems = function() {
            var t = this
              , e = new o.NavbarMenuItem(this.gettext("Menu", void 0, "title"),new a.IconInfo("","","" + this.IV.base_url + n(1293)),(function() {
                return t.SidebarMenuService.isAnyItemVisible()
            }
            ),"",(function() {
                return t.ModeService.isNormalMode() && (t.SearchService.isSearchBoxVisible() || t.SearchService.isAnyResultSelected() || t.PoiService.isRouteMode) ? "navbar-menu-item-sidebar" : "navbar-menu-item-sidebar shadow"
            }
            ),(function() {
                t.SidebarMenuService.openMenu(),
                c.TrackingService.trackHamburgerClick()
            }
            ),[],!1)
              , i = new o.NavbarMenuItem(this.gettext("New Window", void 0, "title"),new a.IconInfo("glyphicon glyphicon-fullscreen"),(function() {
                return t.ConfigService.getBoolean(s.Configs.MENU_NEWWINDOW_VISIBLE, !0) && r.isInIframe()
            }
            ),"",(function() {
                return "navbar-menu-item-new-window"
            }
            ),(function() {
                return window.open(t.UrlService.generateShareUrl(), "_blank")
            }
            ),[],!1)
              , l = new o.NavbarMenuItem(this.gettext("User", void 0, "title"),new a.IconInfo("material-icons","person"),(function() {
                return t.ConfigService.getBoolean(s.Configs.MENU_LOGIN_VISIBLE, !0) && t.ModeService.isNormalMode() && !t.VectorMapService.isVectorMapEditorActive && !r.isMobileLayout()
            }
            ),c.TemplateName.LOGIN_MENU,(function() {
                return t.UserService.isUserLoggedIn() ? "navbar-menu-item-user user-logged-in" : "navbar-menu-item-user"
            }
            ));
            this.navbarItems.push(e),
            this.navbarItems.push(i),
            this.navbarItems.push(l)
        }
        ,
        t
    }();
    e.NavbarMenuController = l;
    var u = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "MenuUI/NavbarMenuUI/NavbarMenu.html",
            this.controller = l,
            this.controllerAs = "vm",
            this.scope = {}
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.NavbarMenuDirective = u,
    i.module("IVWebApp").directive("navbarMenu", u.factory())
}
, function(t, e) {
    var n = "MenuUI/NavbarMenuUI/NavbarMenu.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div event-outside-this="vm.hideActiveItem()"\n     outside-events="mousedown touchstart"\n     resize-event="vm.hideActiveItem()">\n\t<div class="navbar navbar-default">\n\t\t<ul class="nav navbar-custom float-right">\n\t\t\t<li ng-repeat="item in vm.navbarItems"\n\t\t\t    ng-show="item.isVisible()"\n\t\t\t    ng-class="item.getClass()"\n\t\t\t    class="navbar-menu-item">\n\t\t\t\t<a ng-click="vm.toggleItem(item)">\n\t\t\t\t\t<icon icon-class="{{item.icon.className}}"\n\t\t\t\t\t      icon-ligature="{{item.icon.ligature}}"\n\t\t\t\t\t      icon-path="{{item.icon.path}}"\n\t\t\t\t\t      iv-tooltip="{{vm.getItemTitle(item)}}"\n\t\t\t\t\t      show-tooltip="item !== vm.activeItem"\n\t\t\t\t\t      data-placement="bottom">\n\t\t\t\t\t</icon>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t</ul>\n\t</div>\n\n\t<div ng-if="vm.activeItem"\n\t     ng-include src="vm.activeItem.template"\n\t     class="navbar-menu-panel panel-autoscroll z-index-4">\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1291);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, '.z-index-1{box-shadow:none;position:relative;z-index:1}.z-index-2,navbar-menu .navbar-default .navbar-custom>li.navbar-menu-item-sidebar.shadow icon{box-shadow:0 1.5px 4px rgba(0,0,0,.24),0 1.5px 6px rgba(0,0,0,.12);position:relative;z-index:5}.z-index-3{box-shadow:0 3px 12px rgba(0,0,0,.23),0 3px 12px rgba(0,0,0,.16);position:relative;z-index:10}.z-index-4{box-shadow:0 6px 12px rgba(0,0,0,.23),0 10px 40px rgba(0,0,0,.19);position:relative;z-index:15}.z-index-5{box-shadow:0 10px 20px rgba(0,0,0,.22),0 14px 56px rgba(0,0,0,.25);position:relative;z-index:20}.front-element{z-index:1031}.full-window{position:fixed;margin:0;padding:0;left:0;right:0;top:0;bottom:0;z-index:1029;border-radius:0}.full-window-scroll{max-height:100vh}.full-window-scroll,.panel-autoscroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.panel-autoscroll{max-height:80vh}.autoscroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.fixed-top-right{position:fixed;top:10px;right:0}.center-vertical{position:absolute;top:50%;transform:translateY(-50%)}.float-left{float:left}.float-right{float:right}.margin-top-small{margin-top:5px!important}.margin-left-small{margin-left:5px!important}.margin-right-small{margin-right:5px!important}.margin-bottom-small{margin-bottom:5px!important}.margin-top{margin-top:15px!important}.margin-left{margin-left:15px!important}.margin-right{margin-right:15px!important}.margin-bottom{margin-bottom:15px!important}.margin-top-big{margin-top:25px!important}.margin-bottom-big{margin-bottom:25px!important}.no-margin{margin:0!important}.no-margin-bottom{margin-bottom:0!important}.padding-horizontal{padding-left:15px!important;padding-right:15px!important}.padding-top,.padding-vertical{padding-top:15px!important}#login-panel login-form,.padding-bottom,.padding-vertical{padding-bottom:15px!important}.no-padding-top{padding-top:0!important}.no-padding-bottom{padding-bottom:0!important}.no-padding-horizontal,.no-padding-left{padding-left:0!important}.no-padding-horizontal,.no-padding-right{padding-right:0!important}.no-padding{padding:0!important}.border{border:1px solid #e6e6e6}.border-top{border-top:1px solid #e6e6e6}.border-bottom{border-bottom:1px solid #e6e6e6}.border-left{border-left:1px solid #e6e6e6}.border-right{border-right:1px solid #e6e6e6}.no-border{border:none;border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.no-border-width{border:none}.border-radius{border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}.border-radius,.border-radius-top{border-top-left-radius:4px!important;border-top-right-radius:4px!important}.border-radius-bottom{border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}.no-border-radius{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.indoorViewer.ios .no-hover-ios:hover{background-color:inherit!important}.no-shadow{box-shadow:none!important}.clear-background{border:0}.clear-background,.no-background{background:none!important}.no-overflow{overflow:hidden}.clickable,.clickable:hover,navbar-menu .navbar-default .navbar-custom>li.navbar-menu-item-sidebar,navbar-menu .navbar-default .navbar-custom>li.navbar-menu-item-sidebar:hover{cursor:pointer}.navbar-menu-item-user.user-logged-in .material-icons,.sidebar-menu-item-user.user-logged-in .material-icons{position:relative}.navbar-menu-item-user.user-logged-in .material-icons:after,.sidebar-menu-item-user.user-logged-in .material-icons:after{content:"";right:8px;bottom:11px;width:7px;height:7px;position:absolute;background-color:#5cb85c;border-radius:50%;box-shadow:0 0 3px #000}#login-panel{text-align:left;cursor:default}#login-panel login-form{display:block}#login-panel #collapse-user-settings{background-color:#f0f0f0}#login-panel button:focus{outline:none}#login-panel button{width:calc(100% - 30px);margin:0 15px}#login-panel button span{margin:0}#login-panel language-switcher>.panel-body{padding:15px!important}#login-panel ul{margin:0}#login-panel unit-switcher>.panel-body{padding:0 15px 15px!important}#login-panel .form-group{padding:0;margin:5px 15px 10px}#login-panel .list-group{margin-bottom:0;border-top:none}#login-panel .list-group .list-group-item{margin:0;border:none;background-color:#f0f0f0}#login-panel .login-button{width:90%;background-color:#fafafa}#login-panel .login-group{padding:15px 0 10px}#login-panel .panel{border:none;box-shadow:none;margin:0}#login-panel .panel>.panel-heading{text-align:left;padding:15px 0 15px 15px;border-radius:unset}#login-panel .panel .clickable:hover,#login-panel .panel navbar-menu .navbar-default .navbar-custom>li.navbar-menu-item-sidebar:hover,navbar-menu .navbar-default #login-panel .panel .navbar-custom>li.navbar-menu-item-sidebar:hover{background-color:#d4d4d4}#login-panel .panel-body{padding:0}#login-panel .panel-group{margin:0}#login-panel .panel-heading{background-color:#fff;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none}#login-panel .panel-heading .material-icons:after{display:none}#login-panel .panel-heading span{display:flex;align-items:center}#login-panel .spinner{display:inline-block;text-align:center;width:100%}#login-panel .spinner>img{margin:10px auto}#login-panel .text-danger{margin-left:0}#login-panel .user-group-header{background-color:#f5f5f5}#login-panel .user-group-item{border-bottom:none}#about-modal .logo-area{float:right}#about-modal .logo-area img{height:75px!important;margin-left:10px;margin-right:-10px}navbar-menu .navbar-default{position:absolute;left:0;right:0;padding-left:50%;background-color:transparent;border:none;margin:10px;text-align:right;z-index:10;pointer-events:none}navbar-menu .navbar-default .navbar-custom{display:flex;max-width:calc(100vw - 440px)}navbar-menu .navbar-default .navbar-custom>li{pointer-events:auto;position:relative;text-align:center;display:inline-block;margin-left:10px}navbar-menu .navbar-default .navbar-custom>li.navbar-menu-item-sidebar{position:absolute;top:0;left:5px;margin-left:0}navbar-menu .navbar-default .navbar-custom>li.navbar-menu-item-sidebar>a{height:42px;padding:5px 0}navbar-menu .navbar-default .navbar-custom>li.navbar-menu-item-sidebar>a icon{display:block;background-color:#fff;border-radius:4px}navbar-menu .navbar-default .navbar-custom>li.navbar-menu-item-sidebar>a icon i{width:40px;height:32px;color:transparent;text-shadow:none}navbar-menu .navbar-default .navbar-custom>li.navbar-menu-item-user{box-shadow:0 3px 12px rgba(0,0,0,.23),0 3px 12px rgba(0,0,0,.16);height:42px;background-color:#3398c7;border-radius:50%}navbar-menu .navbar-default .navbar-custom>li.navbar-menu-item-user:active,navbar-menu .navbar-default .navbar-custom>li.navbar-menu-item-user:hover{background-color:#2e88b3}navbar-menu .navbar-default .navbar-custom>li.navbar-menu-item-user>a i{top:0;text-shadow:none}navbar-menu .navbar-default .navbar-custom>li>a{color:#fff;text-shadow:1px 0 1px #444,-1px 0 1px #444,0 -1px 1px #444,0 1px 1px #444;font-size:1.4em;transition:font-size .2s ease;padding:0;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none}navbar-menu .navbar-default .navbar-custom>li>a:hover{background-color:transparent}navbar-menu .navbar-default .navbar-custom>li>a .custom-tooltip{display:inline-block}navbar-menu .navbar-default .navbar-custom>li>a icon>i{display:table-cell;vertical-align:middle;width:42px;height:42px;cursor:pointer}navbar-menu .navbar-default .navbar-custom>li>a icon>i.material-icons{font-size:26px}navbar-menu .navbar-default>ul{display:inline-block}navbar-menu .navbar-menu-panel{position:absolute;top:62px;right:10px;max-height:calc(100% - 72px);border-radius:4px;overflow-x:hidden}navbar-menu .navbar-menu-panel .panel{margin-bottom:0}navbar-menu .navbar-menu-panel #login-panel{min-width:258px;max-width:300px}', ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e(e, n, i, r, o, a, s, c, l) {
            void 0 === s && (s = []),
            void 0 === c && (c = !0),
            void 0 === l && (l = !0);
            var u = t.call(this, e, n, i, r, o, a, s, l) || this;
            return u.isVisible = i,
            u.items = s,
            u.autoHide = c,
            u
        }
        return r(e, t),
        e
    }(n(589).MenuItem);
    e.NavbarMenuItem = o
}
, function(t, e, n) {
    t.exports = n.p + "68fd36507543b1a24650ae30970b6e2b.ic_menu_hamburger.svg"
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1295),
    n(1296),
    n(38);
    var r = function() {
        function t(t) {
            this.SidebarMenuService = t,
            this.items = this.SidebarMenuService.items
        }
        return t.$inject = ["SidebarMenuService"],
        t.prototype.hasVisibleIcon = function() {
            return this.items.some((function(t) {
                return void 0 !== t.isPreviewIconVisible && t.isPreviewIconVisible()
            }
            ))
        }
        ,
        t
    }();
    e.SidebarPreviewMenuController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "MenuUI/SidebarMenuUI/SidebarPreviewMenu.html",
            this.controller = r,
            this.controllerAs = "vm",
            this.scope = {}
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.SidebarPreviewMenuDirective = o,
    i.module("IVWebApp").directive("sidebarPreviewMenu", o.factory())
}
, function(t, e) {
    var n = "MenuUI/SidebarMenuUI/SidebarPreviewMenu.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="vertical-menu z-index-2 non-mobile" ng-class="{\'disable-events\': !vm.hasVisibleIcon()}">\n\t<div class="vertical-menu-content">\n\t\t<sidebar-menu-items-collection items="vm.items"\n\t\t                               preview-mode="true">\n\t\t</sidebar-menu-items-collection>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1297);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "sidebar-preview-menu.slide-left>.vertical-menu{transform:translateX(-60px)}sidebar-preview-menu>.vertical-menu{position:absolute;top:62px;width:60px;height:auto;transition:all .2s!important;box-shadow:none;background-color:transparent}sidebar-preview-menu>.vertical-menu.disable-events{pointer-events:none}sidebar-preview-menu>.vertical-menu>.vertical-menu-content{min-width:0}sidebar-preview-menu>.vertical-menu sidebar-menu-items-collection,sidebar-preview-menu>.vertical-menu sidebar-menu-items-collection>.panel-autoscroll,sidebar-preview-menu>.vertical-menu sidebar-menu-items-collection>.panel-autoscroll>ul{background-color:transparent}sidebar-preview-menu>.vertical-menu sidebar-menu-items-collection>.panel-autoscroll{height:auto}sidebar-preview-menu>.vertical-menu sidebar-menu-items-collection sidebar-menu-item.active:active>li,sidebar-preview-menu>.vertical-menu sidebar-menu-items-collection sidebar-menu-item.active:hover>li,sidebar-preview-menu>.vertical-menu sidebar-menu-items-collection sidebar-menu-item.active>li,sidebar-preview-menu>.vertical-menu sidebar-menu-items-collection sidebar-menu-item>li,sidebar-preview-menu>.vertical-menu sidebar-menu-items-collection sidebar-menu-item>li.active,sidebar-preview-menu>.vertical-menu sidebar-menu-items-collection sidebar-menu-item>li.active:active,sidebar-preview-menu>.vertical-menu sidebar-menu-items-collection sidebar-menu-item>li.active:hover{background-color:transparent!important}sidebar-preview-menu>.vertical-menu sidebar-menu-items-collection sidebar-menu-item>li{margin-left:4px;transition:transform .2s!important}sidebar-preview-menu>.vertical-menu sidebar-menu-items-collection sidebar-menu-item>li.slide-left{transform:translateX(-60px)}sidebar-preview-menu>.vertical-menu sidebar-menu-items-collection sidebar-menu-item>li:active,sidebar-preview-menu>.vertical-menu sidebar-menu-items-collection sidebar-menu-item>li:hover{background-color:transparent}sidebar-preview-menu>.vertical-menu sidebar-menu-items-collection sidebar-menu-item>li:active icon>i,sidebar-preview-menu>.vertical-menu sidebar-menu-items-collection sidebar-menu-item>li:hover icon>i{color:#e6e6e6}sidebar-preview-menu>.vertical-menu sidebar-menu-items-collection sidebar-menu-item>li icon>i{padding-top:14px;padding-bottom:14px;color:#fff;text-shadow:0 1px 5px rgba(0,0,0,.8)}sidebar-preview-menu>.vertical-menu sidebar-menu-items-collection sidebar-menu-item>li icon>i.material-icons{font-size:22px}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2);
    n(1299),
    n(1301),
    n(38),
    n(1303);
    var a = function(t) {
        function e(e, n) {
            var i = t.call(this, e) || this;
            return i.SidebarMenuService = n,
            i.currentYear = (new Date).getFullYear(),
            i.items = i.SidebarMenuService.items,
            i
        }
        return r(e, t),
        e.$inject = ["$element", "SidebarMenuService"],
        e
    }(n(584).VerticalMenuController);
    e.SidebarMenuController = a;
    var s = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "MenuUI/SidebarMenuUI/SidebarMenu.html",
            this.controller = a,
            this.controllerAs = "vm",
            this.scope = {}
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.SidebarMenuDirective = s,
    o.module("IVWebApp").directive("sidebarMenu", s.factory())
}
, function(t, e, n) {
    var i = "MenuUI/SidebarMenuUI/SidebarMenu.html"
      , r = '<div class="vertical-menu z-index-4"\n     ng-class="{\'hide\': vm.SidebarMenuService.isMenuHidden,\n                \'fullscreen\': vm.SidebarMenuService.getActiveItem().isFullscreen,\n                \'transitioning\': vm.SidebarMenuService.transitionInProgress,\n                \'transitioning-switching-items\': vm.SidebarMenuService.switchingItemsInProgress,\n                \'sticky-headers-enabled\': vm.displayStickyHeaders}">\n\n\t<div class="vertical-menu-heading">\n\t\t\x3c!--Root level heading--\x3e\n\t\t<div class="root-heading" ng-if="!vm.SidebarMenuService.getActiveItem()">\n\t\t\t<img ng-src="' + n(1300) + '" alt="4dkankan Logo">\n\t\t\t<span>4dkankan</span>\n\t\t</div>\n\n\t\t\x3c!--Nested menu heading--\x3e\n\t\t<h3 ng-if="vm.SidebarMenuService.getActiveItem()">\n\t\t\t{{vm.SidebarMenuService.getActiveItem().title | translate:"title"}}\n\t\t</h3>\n\n\t\t\x3c!--Close button--\x3e\n\t\t<img class="menu-close-button ic_svg"\n\t\t     ng-if="vm.SidebarMenuService.navigationStack.length === 0"\n\t\t     ng-click="vm.SidebarMenuService.closeMenu()"\n\t\t     ng-src="' + n(583) + '" alt="{{\'Close\'|translate}}">\n\n\t\t<img class="menu-close-button ic_svg"\n\t\t     ng-if="vm.SidebarMenuService.navigationStack.length > 0"\n\t\t     ng-click="vm.SidebarMenuService.closeMenu()"\n\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}">\n\n\t\t\x3c!--Back button--\x3e\n\t\t<i ng-if="vm.SidebarMenuService.navigationStack.length > 0"\n\t\t   ng-click="vm.SidebarMenuService.navigationStack[vm.SidebarMenuService.navigationStack.length-1].onBack();\n\t\t             vm.SidebarMenuService.goBack()"\n\t\t   class="fa fa-chevron-left back-button clickable">\n\t\t</i>\n\t</div>\n\n\t<div class="vertical-menu-content">\n\t\t\x3c!--Items--\x3e\n\t\t<sidebar-menu-items-collection items="vm.items"\n\t\t                               ng-class="{\'parent\': vm.SidebarMenuService.getActiveItem() !== undefined,\n\t\t                                          \'transitioning\': vm.SidebarMenuService.internalTransitionInProgress}">\n\t\t</sidebar-menu-items-collection>\n\n\t\t\x3c!--Info panel--\x3e\n\t\t<div class="copyright-area"\n\t\t     ng-class="{\'squeeze\': vm.SidebarMenuService.navigationStack.length > 0}">\n\t\t\t\x3c!--Logo--\x3e\n\t\t\t<a class="logo" href="http://www.4dkankan.com" target="_blank">\n\t\t\t\t<img ng-src="' + n(588) + '" alt="4dkankan Logo">\n\t\t\t</a>\n\t\t\t\x3c!--Info--\x3e\n\t\t\t<div class="info">\n\t\t\t\t<span class="copyright-text" translate translate-params-year="vm.currentYear">\n\t\t\t\t\tCopyright © {{year}}\n\t\t\t\t</span>\n\t\t\t\t\t<span class="about-link link clickable" data-toggle="modal"\n\t\t\t\t\t      data-target="#about-modal" translate\n\t\t\t\t\t      translate-context="Link that opens a popup with 4dkankan information">\n\t\t\t\t\tAbout\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    t.exports = n.p + "11f6573cb3a58fc7ac95f100f16abdff.navvis_logo_noPadding.svg"
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1302);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, '.z-index-1{box-shadow:none;position:relative;z-index:1}.z-index-2{box-shadow:0 1.5px 4px rgba(0,0,0,.24),0 1.5px 6px rgba(0,0,0,.12);position:relative;z-index:5}.z-index-3{box-shadow:0 3px 12px rgba(0,0,0,.23),0 3px 12px rgba(0,0,0,.16);position:relative;z-index:10}.z-index-4{box-shadow:0 6px 12px rgba(0,0,0,.23),0 10px 40px rgba(0,0,0,.19);position:relative;z-index:15}.z-index-5{box-shadow:0 10px 20px rgba(0,0,0,.22),0 14px 56px rgba(0,0,0,.25);position:relative;z-index:20}.front-element{z-index:1031}.full-window{position:fixed;margin:0;padding:0;left:0;right:0;top:0;bottom:0;z-index:1029;border-radius:0}.full-window-scroll{max-height:100vh}.full-window-scroll,.panel-autoscroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.panel-autoscroll{max-height:80vh}.autoscroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.fixed-top-right{position:fixed;top:10px;right:0}.center-vertical,sidebar-menu>.vertical-menu>.vertical-menu-heading>.root-heading{position:absolute;top:50%;transform:translateY(-50%)}.float-left{float:left}.float-right{float:right}.margin-top-small{margin-top:5px!important}.margin-left-small{margin-left:5px!important}.margin-right-small{margin-right:5px!important}.margin-bottom-small{margin-bottom:5px!important}.margin-top{margin-top:15px!important}.margin-left{margin-left:15px!important}.margin-right{margin-right:15px!important}.margin-bottom{margin-bottom:15px!important}.margin-top-big{margin-top:25px!important}.margin-bottom-big{margin-bottom:25px!important}.no-margin{margin:0!important}.no-margin-bottom{margin-bottom:0!important}.padding-horizontal{padding-left:15px!important;padding-right:15px!important}.padding-top,.padding-vertical{padding-top:15px!important}#login-panel login-form,.padding-bottom,.padding-vertical{padding-bottom:15px!important}.no-padding-top{padding-top:0!important}.no-padding-bottom{padding-bottom:0!important}.no-padding-horizontal,.no-padding-left{padding-left:0!important}.no-padding-horizontal,.no-padding-right{padding-right:0!important}.no-padding{padding:0!important}.border{border:1px solid #e6e6e6}.border-top{border-top:1px solid #e6e6e6}.border-bottom{border-bottom:1px solid #e6e6e6}.border-left{border-left:1px solid #e6e6e6}.border-right{border-right:1px solid #e6e6e6}.no-border{border:none;border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.no-border-width{border:none}.border-radius{border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}.border-radius,.border-radius-top{border-top-left-radius:4px!important;border-top-right-radius:4px!important}.border-radius-bottom{border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}.no-border-radius{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.indoorViewer.ios .no-hover-ios:hover{background-color:inherit!important}.no-shadow{box-shadow:none!important}.clear-background{border:0}.clear-background,.no-background{background:none!important}.no-overflow{overflow:hidden}.clickable,.clickable:hover{cursor:pointer}.navbar-menu-item-user.user-logged-in .material-icons,.sidebar-menu-item-user.user-logged-in .material-icons{position:relative}.navbar-menu-item-user.user-logged-in .material-icons:after,.sidebar-menu-item-user.user-logged-in .material-icons:after{content:"";right:8px;bottom:11px;width:7px;height:7px;position:absolute;background-color:#5cb85c;border-radius:50%;box-shadow:0 0 3px #000}#login-panel{text-align:left;cursor:default}#login-panel login-form{display:block}#login-panel #collapse-user-settings{background-color:#f0f0f0}#login-panel button:focus{outline:none}#login-panel button{width:calc(100% - 30px);margin:0 15px}#login-panel button span{margin:0}#login-panel language-switcher>.panel-body{padding:15px!important}#login-panel ul{margin:0}#login-panel unit-switcher>.panel-body{padding:0 15px 15px!important}#login-panel .form-group{padding:0;margin:5px 15px 10px}#login-panel .list-group{margin-bottom:0;border-top:none}#login-panel .list-group .list-group-item{margin:0;border:none;background-color:#f0f0f0}#login-panel .login-button{width:90%;background-color:#fafafa}#login-panel .login-group{padding:15px 0 10px}#login-panel .panel{border:none;box-shadow:none;margin:0}#login-panel .panel>.panel-heading{text-align:left;padding:15px 0 15px 15px;border-radius:unset}#login-panel .panel .clickable:hover{background-color:#d4d4d4}#login-panel .panel-body{padding:0}#login-panel .panel-group{margin:0}#login-panel .panel-heading{background-color:#fff;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none}#login-panel .panel-heading .material-icons:after{display:none}#login-panel .panel-heading span{display:flex;align-items:center}#login-panel .spinner{display:inline-block;text-align:center;width:100%}#login-panel .spinner>img{margin:10px auto}#login-panel .text-danger{margin-left:0}#login-panel .user-group-header{background-color:#f5f5f5}#login-panel .user-group-item{border-bottom:none}#about-modal .logo-area{float:right}#about-modal .logo-area img{height:75px!important;margin-left:10px;margin-right:-10px}.vertical-menu{position:relative;width:440px;max-width:100%;height:100%;border-radius:0;visibility:visible!important;transition:width .2s,left .2s;background-color:#fff}.vertical-menu.resizing{transition:none}.vertical-menu.fullscreen{width:100%}.vertical-menu>div{height:100%}.vertical-menu .panel-sticky-header>.panel-heading{position:absolute;top:0;left:0;right:0;padding-left:20px;padding-right:20px;height:53px;z-index:1;background-color:hsla(0,0%,100%,.95);min-width:375px}.indoorViewer.vertical-menu-min-width .vertical-menu .panel-sticky-header>.panel-heading{min-width:300px}.vertical-menu .panel-sticky-header>.panel-body{padding-top:53px}.vertical-menu:not(.sticky-headers-enabled) .panel-sticky-header>.panel-heading{position:relative}.vertical-menu:not(.sticky-headers-enabled) .panel-sticky-header>.panel-body{padding-top:0}.vertical-menu .vertical-menu-heading{position:relative;height:62px;background-color:#fff;border-bottom:1px solid #e6e6e6}.vertical-menu .vertical-menu-heading>h3{font-size:20px;color:#4a4a4a;margin:0 60px 0 0;padding:20px 0 20px 60px;overflow-x:hidden;white-space:nowrap;text-overflow:ellipsis}.vertical-menu .vertical-menu-heading .menu-close-button{top:9px;right:9px;z-index:1}.vertical-menu .vertical-menu-content{position:relative;height:calc(100% - 62px)}.vertical-menu .vertical-menu-content>.panel{border-radius:0}.vertical-menu .vertical-menu-content ul{padding-left:0;list-style:none}.vertical-menu .vertical-menu-content,.vertical-menu .vertical-menu-heading{min-width:375px}.indoorViewer.vertical-menu-min-width .vertical-menu .vertical-menu-heading,.vertical-menu .vertical-menu-content{min-width:300px}.vertical-menu .resize-handler{position:absolute;top:0;left:0;width:12px;height:100%;z-index:15;cursor:ew-resize;transition:width .2s,left .2s}.vertical-menu .resize-handler.resizing{left:auto;right:0;width:100vw}.indoorViewer.mobile-small .vertical-menu:not(.hide):not(.collapsed) .resize-handler,.indoorViewer.mobile .vertical-menu:not(.hide):not(.collapsed) .resize-handler{left:-50px;width:50px;background:rgba(0,0,0,.6)}.vertical-menu .expand-wrapper{display:none;background:#fff;position:absolute;bottom:0;height:62px;width:100%;z-index:2;border-top:1px solid #eee}.vertical-menu .expand-handler{position:absolute;padding:12px;bottom:6px;left:6px;font-size:2em;cursor:pointer}.vertical-menu.collapsed .vertical-menu-heading h3{display:none}.vertical-menu.collapsed .vertical-menu-heading .menu-close-button{left:9px}.vertical-menu.collapsed .expand-wrapper{display:block}sidebar-menu>.vertical-menu{overflow:hidden;position:absolute;left:0}sidebar-menu>.vertical-menu.hide{left:-461px}sidebar-menu>.vertical-menu:not(.hide).transitioning sidebar-menu-items-collection{transition:background-color .2s}sidebar-menu>.vertical-menu:not(.sticky-headers-enabled) sidebar-menu-items-collection>.panel-autoscroll>.sidebar-menu-template,sidebar-menu>.vertical-menu:not(.sticky-headers-enabled) sidebar-menu-items-collection>.panel-autoscroll>ul>*{transform:translateZ(0)}sidebar-menu>.vertical-menu .panel-sticky-header>.panel-heading{min-width:0!important}sidebar-menu>.vertical-menu.transitioning-switching-items sidebar-menu-items-collection,sidebar-menu>.vertical-menu.transitioning-switching-items sidebar-menu-items-collection sidebar-menu-item>li,sidebar-menu>.vertical-menu.transitioning-switching-items sidebar-menu-items-collection sidebar-menu-item>li>h4,sidebar-menu>.vertical-menu.transitioning-switching-items sidebar-menu-items-collection sidebar-menu-item>li icon>i{transition-duration:0s}sidebar-menu>.vertical-menu>.vertical-menu-heading>.root-heading{display:flex;align-items:center;color:#333332;height:24px}sidebar-menu>.vertical-menu>.vertical-menu-heading>.root-heading>img{width:101.2px;margin-left:25px;margin-right:15px}sidebar-menu>.vertical-menu>.vertical-menu-heading>.root-heading>span{font-size:24px}.indoorViewer.mobile-small sidebar-menu>.vertical-menu>.vertical-menu-heading>.root-heading{height:20px}.indoorViewer.mobile-small sidebar-menu>.vertical-menu>.vertical-menu-heading>.root-heading>span{font-size:20px}sidebar-menu>.vertical-menu>.vertical-menu-heading .back-button{position:absolute;top:9px;left:8px;width:44px;height:44px;padding:13px 15px;font-size:17px;color:#4a4a4a}sidebar-menu>.vertical-menu>.vertical-menu-content>sidebar-menu-items-collection>.panel-autoscroll,sidebar-menu>.vertical-menu>.vertical-menu-content sidebar-menu-items-collection.parent>.panel-autoscroll{padding-bottom:50px}sidebar-menu .copyright-area{position:absolute;bottom:0;left:0;right:0;height:50px;overflow:hidden;background-color:hsla(0,0%,100%,.95);transition:right .2s,background-color .2s}sidebar-menu .copyright-area.squeeze{right:calc(100% - 60px);background-color:hsla(0,0%,90.2%,.95)}sidebar-menu .copyright-area.squeeze>.logo img{width:60px}sidebar-menu .copyright-area.squeeze>.info{left:60px}sidebar-menu .copyright-area.squeeze>.info .about-link{transform:translateX(calc(100% + 30px))}sidebar-menu .copyright-area>.logo:active,sidebar-menu .copyright-area>.logo:focus,sidebar-menu .copyright-area>.logo:hover{text-decoration:none}sidebar-menu .copyright-area>.logo img{width:104px;height:100%;transition:width .2s}sidebar-menu .copyright-area>.info{position:absolute;top:0;left:104px;right:0;bottom:0;transition:left .2s}sidebar-menu .copyright-area>.info .copyright-text{position:relative;top:16px;white-space:nowrap}sidebar-menu .copyright-area>.info .about-link{position:absolute;top:16px;right:20px;transition:transform .1s}sidebar-menu #view-menu>.panel-body{padding-left:0;padding-right:0}sidebar-menu #view-menu>.panel-body>.row{padding-left:30px;padding-right:30px}sidebar-menu #view-menu>.panel-body>.checkbox{padding-left:20px;padding-right:20px}sidebar-menu #view-menu>.panel-body .checkbox{height:40px;margin:0}sidebar-menu #view-menu>.panel-body .checkbox.form-group{margin-bottom:15px}sidebar-menu #view-menu>.panel-body .checkbox:active,sidebar-menu #view-menu>.panel-body .checkbox:focus,sidebar-menu #view-menu>.panel-body .checkbox:hover{background-color:#e6e6e6}sidebar-menu #view-menu>.panel-body .checkbox>label{width:100%;height:100%;padding-top:10px}sidebar-menu #view-menu #pointcloud-menu>.checkbox,sidebar-menu #view-menu #pointcloud-menu>div{padding-left:20px;padding-right:20px}sidebar-menu #view-menu #pointcloud-menu #pointcloud-options{padding-left:30px;padding-right:30px}sidebar-menu #view-menu #pointcloud-menu #pointcloud-options>.checkbox{margin-left:-10px;margin-right:-10px;padding-left:10px;padding-right:10px}sidebar-menu #view-menu #pointcloud-menu #pointcloud-options .checkbox{border-top-left-radius:4px!important;border-top-right-radius:4px!important;border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}sidebar-menu #view-menu #pointcloud-menu #pointcloud-options #pointcloud-pane>div>select{width:calc(100% - 44px)}sidebar-menu #view-menu #pointcloud-menu #pointcloud-options #pointcloud-pane>div>button{position:relative;top:-1px;height:34px;max-height:none}sidebar-menu #view-menu #pointcloud-menu #pointcloud-options #pointcloud-pane>div>button>span{top:3px;left:1px}sidebar-menu #view-menu #pointcloud-menu #pointcloud-options #pointcloud-pane>div>.panel-body{padding:10px}sidebar-menu #view-menu #pointcloud-menu #pointcloud-options #pointcloud-pane>.btn-group{white-space:nowrap}sidebar-menu #view-menu #pointcloud-menu #pointcloud-options #pointcloud-pane>.btn-group>.btn{float:none}sidebar-menu #view-menu #pointcloud-menu #pointcloud-options #legacy-pointcloud-pane .checkbox,sidebar-menu #view-menu #pointcloud-menu #pointcloud-options #pointcloud-pane .checkbox{margin:2px -10px;padding:2px 10px}sidebar-menu #view-menu #pointcloud-menu #pointcloud-options #legacy-pointcloud-pane .checkbox>label,sidebar-menu #view-menu #pointcloud-menu #pointcloud-options #pointcloud-pane .checkbox>label{padding-top:8px}.indoorViewer.desktop sidebar-menu #view-menu #pointcloud-menu{min-width:310px}', ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1304),
    n(1305),
    n(1307),
    n(1311);
    var r = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "MenuUI/SidebarMenuUI/SidebarMenuItemsCollection.html",
            this.scope = {
                active: "=",
                items: "=",
                previewMode: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.SidebarMenuItemsCollectionDirective = r,
    i.module("IVWebApp").directive("sidebarMenuItemsCollection", r.factory())
}
, function(t, e) {
    var n = "MenuUI/SidebarMenuUI/SidebarMenuItemsCollection.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="panel-autoscroll">\n\n\t\x3c!--Item\'s template--\x3e\n\t<ng-include class="sidebar-menu-template"\n\t            ng-if="active.active && active.compileTemplate"\n\t            src="active.template">\n\t</ng-include>\n\n\t<static-include class="sidebar-menu-template"\n\t                ng-if="active.active && !active.compileTemplate"\n\t                src="{{active.template}}"\n\t                disable-base-url-prefixing>\n\t</static-include>\n\n\t\x3c!--Child items--\x3e\n\t<ul class="margin-top margin-bottom">\n\t\t<sidebar-menu-item ng-repeat="item in items | orderBy: \'order\'"\n\t\t                   item="item"\n\t\t                   preview-mode="previewMode"\n\t\t                   ng-class="{\'active\': item.active}">\n\t\t</sidebar-menu-item>\n\t</ul>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1306);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "sidebar-menu-items-collection{position:absolute;top:0;right:0;bottom:0;left:0;cursor:default;transition:left .2s,right .2s,background-color .2s;background-color:#fff}sidebar-menu-items-collection>.panel-autoscroll,sidebar-menu-items-collection>.panel-autoscroll>.sidebar-menu-template,sidebar-menu-items-collection>.panel-autoscroll>ul{background-color:#fff;transition:background-color .2s}sidebar-menu-items-collection.parent,sidebar-menu-items-collection.parent>.panel-autoscroll,sidebar-menu-items-collection.parent>.panel-autoscroll>.sidebar-menu-template,sidebar-menu-items-collection.parent>.panel-autoscroll>ul{background-color:#e6e6e6}sidebar-menu-items-collection.child{z-index:2;left:100%;right:-100%}sidebar-menu-items-collection.child:not(.transitioning)>.panel-autoscroll>.sidebar-menu-template,sidebar-menu-items-collection.parent>.panel-autoscroll>.sidebar-menu-template{display:none}sidebar-menu-items-collection.active{left:60px;right:0;z-index:3}sidebar-menu-items-collection>.panel-autoscroll{height:100%;max-height:none;overflow-x:hidden}sidebar-menu-items-collection>.panel-autoscroll>.sidebar-menu-template{color:#000}sidebar-menu-items-collection>.panel-autoscroll>.sidebar-menu-template>.ng-scope>.panel,sidebar-menu-items-collection>.panel-autoscroll>.sidebar-menu-template>.panel{border:none;box-shadow:none}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1308),
    n(1309);
    var r = n(38);
    n(590);
    var o = n(8)
      , a = n(81)
      , s = n(218)
      , c = function() {
        function t(t, e, n) {
            this.SidebarMenuService = t,
            this.gettextCatalog = e,
            this.TrackingService = n,
            this.previewMode = !1
        }
        return t.$inject = ["SidebarMenuService", "gettextCatalog", "TrackingService"],
        t.prototype.goToItem = function(t) {
            t.key === a.SidebarMenuItemsKey.EDITOR_MODES_DOWNLOAD_POINT_CLOUD && this.TrackingService.trackPointCloudDownloadEntered(s.MenuType.SidebarEditor),
            this.previewMode && r.SidebarMenuService.isItemWithContent(t) && this.SidebarMenuService.openMenu(),
            this.SidebarMenuService.goToItem(t).catch(o.handleWarning)
        }
        ,
        t.prototype.isTooltipEnabled = function() {
            return !!this.previewMode || !this.item.active && this.SidebarMenuService.isTabSwitchItem(this.item)
        }
        ,
        t.prototype.getItemTitle = function() {
            return this.gettextCatalog.getString(this.item.title, void 0, "title")
        }
        ,
        t
    }();
    e.SidebarMenuItemController = c;
    var l = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "MenuUI/SidebarMenuUI/SidebarMenuItem.html",
            this.controller = c,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                item: "=",
                previewMode: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.SidebarMenuItemDirective = l,
    i.module("IVWebApp").directive("sidebarMenuItem", l.factory())
}
, function(t, e) {
    var n = "MenuUI/SidebarMenuUI/SidebarMenuItem.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<li ng-show="item.isVisible()"\n    ng-click="vm.goToItem(item)"\n    ng-class="{\'slide-left\': previewMode && !item.isPreviewIconVisible()}"\n    class="{{item.getClass()}} sidebar-menu-item clickable">\n\n\t<icon icon-class="{{item.icon.className}}"\n\t      icon-ligature="{{item.icon.ligature}}"\n\t      icon-path="{{item.icon.path}}"\n\t      iv-tooltip="{{vm.getItemTitle()}}"\n\t      show-tooltip="vm.isTooltipEnabled()"\n\t      data-container="false"\n\t      data-placement="right">\n\t</icon>\n\n\t<h4 ng-if="!previewMode" title="{{item.title | translate:\'title\'}}">\n\t\t{{item.title | translate:"title"}}\n\t</h4>\n\n\t<sidebar-menu-items-collection ng-if="!previewMode"\n\t                               active="item"\n\t                               items="item.items"\n\t                               ng-class="{\'parent\': vm.SidebarMenuService.isParentItemsCollection(item),\n\t                                          \'active\': vm.SidebarMenuService.isActiveItemsCollection(item),\n\t                                          \'child\': vm.SidebarMenuService.isChildItemsCollection(item),\n\t                                          \'transitioning\': vm.SidebarMenuService.internalTransitionInProgress}">\n\t</sidebar-menu-items-collection>\n</li>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1310);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, ".z-index-1{box-shadow:none;position:relative;z-index:1}.z-index-2{box-shadow:0 1.5px 4px rgba(0,0,0,.24),0 1.5px 6px rgba(0,0,0,.12);position:relative;z-index:5}.z-index-3{box-shadow:0 3px 12px rgba(0,0,0,.23),0 3px 12px rgba(0,0,0,.16);position:relative;z-index:10}.z-index-4{box-shadow:0 6px 12px rgba(0,0,0,.23),0 10px 40px rgba(0,0,0,.19);position:relative;z-index:15}.z-index-5{box-shadow:0 10px 20px rgba(0,0,0,.22),0 14px 56px rgba(0,0,0,.25);position:relative;z-index:20}.front-element{z-index:1031}.full-window{position:fixed;margin:0;padding:0;left:0;right:0;top:0;bottom:0;z-index:1029;border-radius:0}.full-window-scroll{max-height:100vh}.full-window-scroll,.panel-autoscroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.panel-autoscroll{max-height:80vh}.autoscroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.fixed-top-right{position:fixed;top:10px;right:0}.center-vertical{position:absolute;top:50%;transform:translateY(-50%)}.float-left{float:left}.float-right{float:right}.margin-top-small{margin-top:5px!important}.margin-left-small{margin-left:5px!important}.margin-right-small{margin-right:5px!important}.margin-bottom-small{margin-bottom:5px!important}.margin-top{margin-top:15px!important}.margin-left{margin-left:15px!important}.margin-right{margin-right:15px!important}.margin-bottom{margin-bottom:15px!important}.margin-top-big{margin-top:25px!important}.margin-bottom-big{margin-bottom:25px!important}.no-margin{margin:0!important}.no-margin-bottom{margin-bottom:0!important}.padding-horizontal{padding-left:15px!important;padding-right:15px!important}.padding-top,.padding-vertical{padding-top:15px!important}.padding-bottom,.padding-vertical{padding-bottom:15px!important}.no-padding-top{padding-top:0!important}.no-padding-bottom{padding-bottom:0!important}.no-padding-horizontal,.no-padding-left{padding-left:0!important}.no-padding-horizontal,.no-padding-right{padding-right:0!important}.no-padding{padding:0!important}.border{border:1px solid #e6e6e6}.border-top{border-top:1px solid #e6e6e6}.border-bottom{border-bottom:1px solid #e6e6e6}.border-left{border-left:1px solid #e6e6e6}.border-right{border-right:1px solid #e6e6e6}.no-border{border:none;border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.no-border-width{border:none}.border-radius{border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}.border-radius,.border-radius-top{border-top-left-radius:4px!important;border-top-right-radius:4px!important}.border-radius-bottom{border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}.no-border-radius{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.indoorViewer.ios .no-hover-ios:hover{background-color:inherit!important}.no-shadow{box-shadow:none!important}.clear-background{border:0}.clear-background,.no-background{background:none!important}.no-overflow{overflow:hidden}.clickable,.clickable:hover{cursor:pointer}sidebar-menu-item>li{display:flex;align-items:center;height:50px;padding-left:10px;color:#000;transition:background-color .1s}sidebar-menu-item>li:active,sidebar-menu-item>li:hover{background-color:#e6e6e6!important}sidebar-menu-item>li icon{display:flex}sidebar-menu-item>li icon>i{display:inline-block;width:40px;padding:10px;text-align:center}sidebar-menu-item>li icon>i.material-icons{font-size:20px}sidebar-menu-item>li>h4{display:inline-block;max-width:calc(100% - 60px);margin:1px 10px 0;padding:10px 0;font-size:1.1em;overflow-x:hidden;white-space:nowrap;text-overflow:ellipsis}sidebar-menu-item>li>h4,sidebar-menu-item>li icon>i{transition:all .1s}sidebar-menu-item.active:active>li,sidebar-menu-item.active:hover>li,sidebar-menu-item.active>li,sidebar-menu-item>li.active,sidebar-menu-item>li.active:active,sidebar-menu-item>li.active:hover{color:#3398c7;background-color:#fff!important;cursor:default}sidebar-menu-items-collection:not(.parent):not(.child)>.panel-autoscroll>ul>sidebar-menu-item>li{transition-duration:0s}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(8)
      , o = function() {
        function t(t, e) {
            this.$http = t,
            this.$templateCache = e,
            this.restrict = "E"
        }
        return t.factory = function() {
            return ["$http", "$templateCache", function(e, n) {
                return new t(e,n)
            }
            ]
        }
        ,
        t.prototype.link = function(t, e, n) {
            if (n.src) {
                var i = {
                    cache: this.$templateCache,
                    disableBaseUrlPrefixing: void 0 !== n.disableBaseUrlPrefixing
                };
                this.$http.get(n.src, i).then((function(t) {
                    e.html(t.data)
                }
                )).catch(r.handleWarning)
            }
        }
        ,
        t
    }();
    e.StaticIncludeDirective = o,
    i.module("IVWebApp").directive("staticInclude", o.factory())
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2);
    n(1313),
    n(61);
    var a = function(t) {
        function e(e, n) {
            var i = t.call(this, n.find(".modal")) || this;
            return i.MessageReportingService = e,
            e.messageReceived.connect((function() {
                return i.showModal()
            }
            )),
            i
        }
        return r(e, t),
        e.$inject = ["MessageReportingService", "$element"],
        e.prototype.getTitle = function() {
            return this.MessageReportingService.message.title
        }
        ,
        e.prototype.getBody = function() {
            return this.MessageReportingService.message.body
        }
        ,
        e.prototype.renderAsPlainText = function() {
            return this.MessageReportingService.renderAsPlainText
        }
        ,
        e
    }(n(326).AbstractModalController);
    e.MessageReportingController = a;
    var s = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "MessageReporting/MessageReporting.html",
            this.controller = a,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.MessageReportingDirective = s,
    o.module("IVWebApp").directive("messageReporting", s.factory())
}
, function(t, e) {
    var n = "MessageReporting/MessageReporting.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="modal fade" tabindex="-1" role="dialog" aria-hidden="true" data-backdrop="static">\n\t<div class="modal-dialog">\n\t\t<div class="modal-content">\n\t\t\t<div class="modal-header"><h4>{{vm.getTitle()}}</h4></div>\n\t\t\t<div class="modal-body" ng-if="!vm.renderAsPlainText()" ng-bind-html="vm.getBody()">\n\t\t\t</div>\n\t\t\t<div class="modal-body" ng-if="vm.renderAsPlainText()">\n\t\t\t\t{{vm.getBody()}}\n\t\t\t</div>\n\t\t\t<div class="modal-footer">\n\t\t\t\t<ok-button data-dismiss="modal"></ok-button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1315),
    n(1316),
    n(106);
    var r = function() {
        function t(t) {
            this.ProgressReportService = t
        }
        return t.$inject = ["ProgressReportService"],
        t.prototype.getTasks = function() {
            return this.ProgressReportService.getTasks()
        }
        ,
        t.prototype.isVisible = function() {
            return this.ProgressReportService.isVisible()
        }
        ,
        t.prototype.isModal = function() {
            return this.ProgressReportService.isModal()
        }
        ,
        t.prototype.isTransparent = function() {
            return this.ProgressReportService.isTransparent()
        }
        ,
        t.prototype.isCompactOnly = function() {
            return this.ProgressReportService.isCompactOnly()
        }
        ,
        t
    }();
    e.ProgressReportController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "ProgressReport/ProgressReport.html",
            this.controller = r,
            this.controllerAs = "vm",
            this.scope = {}
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.ProgressReportDirective = o,
    i.module("IVWebApp").directive("progressReport", o.factory())
}
, function(t, e, n) {
    var i = "ProgressReport/ProgressReport.html"
      , r = '<div id="progress-wrapper">\n\t<div class="progress-report"\n\t     ng-class="{ \'modal-progress\': vm.isModal(),\n\t                 \'fade-out\': !vm.isVisible(),\n\t                 \'compact-progress\': vm.isCompactOnly() }">\n\n\t\t<div class="progress-report-container"\n\t\t     ng-if="!vm.isCompactOnly()">\n\t\t\t<div class="task"\n\t\t\t     ng-repeat="task in vm.getTasks()"\n\t\t\t     ng-class="task.hideProgress ? \'no-progress\' : null"\n\t\t\t     ng-if="!task.compact">\n\t\t\t\t<span class="spinner">\n\t\t\t\t\t<img ng-src="' + n(94) + '">\n\t\t\t\t</span>\n\n\t\t\t\t\x3c!-- task.name is translated in service before creation of task --\x3e\n\t\t\t\t{{task.name}}\n\t\t\t\t<div class="progress">\n\t\t\t\t\t<div class="progress-bar progress-bar-striped active" role="progressbar"\n\t\t\t\t\t     ng-attr-aria-valuenow="{{task.percentage > 1 ? task.percentage : 1}}"\n\t\t\t\t\t     aria-valuemin="0" aria-valuemax="100"\n\t\t\t\t\t     ng-style="{width: (task.percentage > 1 ? task.percentage : 1) + \'%\'}">\n\t\t\t\t\t\t<span class="sr-only" translate\n\t\t\t\t\t\t      translate-params-percent="task.percentage">\n\t\t\t\t\t\t\t{{percent}}% complete\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class="compact-progress-container"\n\t\t     ng-if="vm.isCompactOnly()"\n\t\t     ng-repeat="task in vm.getTasks()">\n\t\t\t<progress-arc ng-if="task.percentage > 0 && task.percentage < 100"\n\t\t\t              title="{{task.name}}"\n\t\t\t              size="32"\n\t\t\t              stroke-width="7"\n\t\t\t              complete="task.percentage / 100"></progress-arc>\n\t\t</div>\n\t</div>\n\n\t<div\n\t\t\tclass="modal-progress-bg"\n\t\t\tng-class="{\n\t\t\t\t\'fade-out\': !vm.isVisible() || !vm.isModal(),\n\t\t\t\t\'translucent\': vm.isModal() && vm.isTransparent()\n\t\t\t}">\n\t</div>\n</div>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1317);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, 'progress-report .progress-report{max-width:100%;padding:10px 20px;transition-property:all;transition:.2s linear;background-color:#fff}progress-report .progress-report.modal-progress{position:absolute;z-index:2000;top:0;bottom:0;left:0;right:0;height:100%!important;width:auto!important;text-align:center;background:none;color:#fff}progress-report .progress-report.modal-progress:before{content:"";display:inline-block;height:100%;vertical-align:middle}progress-report .progress-report-container{display:inline-block;vertical-align:middle;width:600px;max-width:100%}progress-report .task.no-progress{box-sizing:border-box}progress-report .task:not(.no-progress){padding:5px 0}progress-report .task.no-progress .progress{display:none}progress-report .task:not(.no-progress) .progress{margin-top:.2em;margin-bottom:0}progress-report .task:not(.no-progress) span.spinner{display:none}progress-report .progress-report.modal-progress img{width:4em;margin:1.5em}progress-report .progress-report:not(.modal-progress) img{width:2em;margin:.5em}progress-report .progress-report:not(.modal-progress){position:absolute;bottom:0;margin-left:auto;margin-right:auto}progress-report .progress-report:not(.modal-progress):not(.compact-progress){opacity:.8;border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;-webkit-border-radius:0 4px 0 0;-webkit-box-shadow:2px 2px 2px 0 rgba(0,0,0,.5);-moz-box-shadow:2px 2px 2px 0 rgba(0,0,0,.5);box-shadow:2px 2px 2px 0 rgba(0,0,0,.5)}progress-report .compact-progress{background-color:transparent}progress-report .compact-progress-container{display:inline-block}progress-report .compact-progress-container svg circle{stroke:#3399c8;fill:#222;fill-opacity:.3}progress-report .translucent{opacity:.75}.modal-progress-bg{background-color:#111;position:absolute;top:0;left:0;height:100%;width:100%;z-index:1000}', ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2);
    n(1319),
    n(425);
    var a = n(25)
      , s = n(8)
      , c = n(326)
      , l = n(81)
      , u = function(t) {
        function e(e, n, i, r, o, a, c) {
            var l = t.call(this, c.find(".modal")) || this;
            return l.StatusCheckService = e,
            l.ConfigService = n,
            l.AuthenticationService = i,
            l.UrlService = r,
            l.InstanceInformationService = o,
            l.SidebarMenuService = a,
            l.serverStatus = l.StatusCheckService.serverStatus,
            l.editorLink = '<a class="clickable" ng-click="vm.goToNavgraphEditor()" translate translate-context="editor name">navigation graph editor</a>',
            l.reported = !1,
            l.isUrlServiceInitialized = !1,
            l.AuthenticationService.onAuthenticationChanged.connect((function(t) {
                return l.checkStatus(t)
            }
            )),
            l.AuthenticationService.initialized.then((function(t) {
                return l.checkStatus(t)
            }
            )).catch(s.handleWarning),
            l.UrlService.initialized.then((function() {
                return l.isUrlServiceInitialized = !0
            }
            )).catch(s.handleWarning),
            l.InstanceInformationService.getInformation().then((function(t) {
                return l.isCloud = t.isCloudInstance
            }
            )).catch(s.handleWarning),
            l
        }
        return r(e, t),
        e.$inject = ["StatusCheckService", "ConfigService", "AuthenticationService", "UrlService", "InstanceInformationService", "SidebarMenuService", "$element"],
        e.prototype.getDocsLink = function(t) {
            return this.isUrlServiceInitialized ? this.UrlService.getDocumentationLink(t) : ""
        }
        ,
        e.prototype.goToNavgraphEditor = function() {
            this.hideModal(),
            this.SidebarMenuService.isMenuHidden = !1,
            this.SidebarMenuService.goToItem(this.SidebarMenuService.getItem(l.SidebarMenuItemsKey.EDITOR_MODES_NAV_GRAPH)).catch(s.handleWarning)
        }
        ,
        e.prototype.checkStatus = function(t) {
            var e = this;
            t.isAdmin() && !this.reported && this.ConfigService.initialized.then((function() {
                e.ConfigService.getBoolean(a.Configs.UI_STATUSCHECK_VISIBLE, !0) && e.StatusCheckService.check().then((function() {
                    return e.reportStatus()
                }
                )).catch(s.handleWarning)
            }
            )).catch((function() {}
            ))
        }
        ,
        e.prototype.reportStatus = function() {
            "UP" !== this.StatusCheckService.getGlobalStatus() && (this.reported = !0,
            this.showModal())
        }
        ,
        e
    }(c.AbstractModalController);
    e.StatusCheckController = u;
    var d = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "StatusCheck/StatusCheck.html",
            this.controller = u,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.StatusCheckDirective = d,
    o.module("IVWebApp").directive("statusCheck", d.factory())
}
, function(t, e) {
    var n = "StatusCheck/StatusCheck.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div id="status-check-modal" class="modal fade" role="dialog" data-backdrop="static" tabindex="-1">\n\t<div class="modal-dialog">\n\t\t<div class="modal-content">\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 translate translate-context="title">\n\t\t\t\t\tThe 4dkankan Server Is Not Configured Correctly\n\t\t\t\t</h4>\n\t\t\t</div>\n\t\t\t<div ng-if="vm.modalContentShown" class="modal-body">\n\t\t\t\t<p translate>The following issues have been found:</p>\n\t\t\t\t<ul>\n\t\t\t\t\t\x3c!-- required --\x3e\n\t\t\t\t\t<li ng-if="vm.serverStatus.health.components.db.status === \'DOWN\'">\n\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\tThe server database is not available.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<a ng-if="!vm.isCloud"\n\t\t\t\t\t\t   ng-href="{{vm.getDocsLink(\'troubleshooting.html#db-unavailable\')}}"\n\t\t\t\t\t\t   target="_blank" translate>\n\t\t\t\t\t\t\tDocumentation\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li ng-if="vm.serverStatus.health.components.dataDir.details.readable === false">\n\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\t4dkankan cannot read the resources directory.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<a ng-if="!vm.isCloud"\n\t\t\t\t\t\t   ng-href="{{vm.getDocsLink(\'troubleshooting.html#resources-dir-unreadable\')}}"\n\t\t\t\t\t\t   target="_blank" translate>\n\t\t\t\t\t\t\tDocumentation\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li ng-if="vm.serverStatus.health.components.dataDir.details.writable === false">\n\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\t4dkankan cannot write to the resources directory.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<a ng-if="!vm.isCloud"\n\t\t\t\t\t\t   ng-href="{{vm.getDocsLink(\'troubleshooting.html#resources-dir-unwritable\')}}"\n\t\t\t\t\t\t   target="_blank" translate>\n\t\t\t\t\t\t\tDocumentation\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li ng-if="vm.serverStatus.health.components.uploadDir.details.writable === false">\n\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\t4dkankan cannot write into the upload directory.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<a ng-if="!vm.isCloud"\n\t\t\t\t\t\t   ng-href="{{vm.getDocsLink(\'troubleshooting.html#no-datasets\')}}"\n\t\t\t\t\t\t   target="_blank" translate>\n\t\t\t\t\t\t\tDocumentation\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li ng-if="vm.serverStatus.health.components.tmpDir.details.writable === false">\n\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\tCannot write to the temporary directory.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li ng-if="vm.serverStatus.health.components.flyway.details.cause === \'pending\'">\n\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\tThe database version is outdated.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li ng-if="vm.serverStatus.health.components.flyway.details.cause === \'failed\'">\n\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\tDatabase migration has failed.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li ng-if="vm.serverStatus.health.components.indoorLocationServer.status === \'DOWN\'">\n\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\tIndoor Location Server is not available.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</li>\n\t\t\t\t\t\x3c!-- check if siteModel is not present--\x3e\n\t\t\t\t\t<li ng-if="vm.serverStatus.health.components.siteModel.status === \'DOWN\'">\n\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\tNo site model has been created.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<a ng-href="{{vm.getDocsLink(\'setup/site_model.html\')}}"\n\t\t\t\t\t\t\t   target="_blank" translate>\n\t\t\t\t\t\t\t\tDocumentation\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\x3c!-- check if there is a free space navigation area --\x3e\n\t\t\t\t\t\t<li ng-if="vm.serverStatus.health.components.fsna.status === \'DOWN\'">\n\t\t\t\t\t\t\t<strong translate>Free space navigation areas are no longer supported.</strong>\n\t\t\t\t\t\t\t<span translate>A free space navigation area has been detected in the site model.</span>\n\t\t\t\t\t\t\t<span translate\n\t\t\t\t\t\t\ttranslate-html-params-editor-link="vm.editorLink">\n\t\t\t\t\t\t\t\tTo route through this area, use the new path tool in the {{editorLink}} to draw a navigation graph through the space, then remove the free space area from the site model.\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<a ng-href="{{vm.getDocsLink(\'setup/navgraph_maps.html\')}}"\n\t\t\t\t\t\t   target="_blank" translate>\n\t\t\t\t\t\t\tDocumentation\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t\t<span ng-if="vm.isCloud" translate>\n\t\t\t\t\tPlease contact your service provider.\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t\t<div class="modal-footer" style="text-align:right">\n\t\t\t\t<ok-button data-dismiss="modal"></ok-button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1321),
    n(1322);
    var r = function() {
        function t(t) {
            this.UnitService = t,
            this.currentSystem = this.UnitService.currentSystem,
            this.unitSystems = this.UnitService.unitSystems
        }
        return t.$inject = ["UnitService"],
        t.prototype.changeSystem = function() {
            this.UnitService.setUnit(this.currentSystem, !0)
        }
        ,
        t
    }();
    e.UnitSwitcherController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "UnitSwitcher/UnitSwitcher.html",
            this.controller = r,
            this.controllerAs = "unitSwitcherController"
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.UnitSwitcherDirective = o,
    i.module("IVWebApp").directive("unitSwitcher", o.factory())
}
, function(t, e) {
    var n = "UnitSwitcher/UnitSwitcher.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="panel-body no-padding-top no-padding-bottom">\n\t<label translate>\n\t\tUnit system\n\t</label>\n\t<div class="row">\n\t\t<select class="form-control"\n\t\t        title="{{\'Unit system\' | translate}}"\n\t\t        ng-model="unitSwitcherController.currentSystem"\n\t\t        ng-options="unit as unit | translate:\'measurement system\' for unit in unitSwitcherController.unitSystems"\n\t\t\t\tng-change="unitSwitcherController.changeSystem()">\n\t\t</select>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1323);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "unit-switcher .panel-heading{background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom:1px solid #ddd;border-radius:0}unit-switcher .form-control{margin-left:15px;float:left;width:calc(100% - 30px)}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1325),
    n(1326),
    n(597),
    n(1347),
    n(1356),
    n(1360),
    n(1365),
    n(1372),
    n(1374);
    var r = n(25)
      , o = n(40)
      , a = n(21)
      , s = function() {
        function t(t, e, n, i, r, o, s) {
            this.PoiService = t,
            this.ModeService = e,
            this.SearchService = n,
            this.ConfigService = i,
            this.LicenseService = r,
            this.SiteModelService = o,
            this.ViewService = s,
            this.TemplateName = a.TemplateName
        }
        return t.$inject = ["PoiService", "ModeService", "SearchService", "ConfigService", "LicenseService", "SiteModelService", "ViewService"],
        Object.defineProperty(t.prototype, "resultsList", {
            get: function() {
                return this.SearchService.resultsList
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.isPoiExtensionsBoxVisible = function() {
            return this.ConfigService.getBoolean(r.Configs.UI_POI_PANEL_VISIBLE, !0)
        }
        ,
        t.prototype.isFullscreenEnabled = function() {
            return this.PoiService.enableFeatures.fullScreen && !this.isMobilePanoramaView()
        }
        ,
        t.prototype.isMobilePanoramaView = function() {
            return o.isMobileLayout() && this.ViewService.isPanoPrimaryView()
        }
        ,
        t
    }();
    e.LeftPanelController = s;
    var c = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "LeftPanel/LeftPanel.html",
            this.controller = s,
            this.controllerAs = "vm",
            this.scope = {}
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.LeftPanelDirective = c,
    i.module("IVWebApp").directive("leftPanel", c.factory())
}
, function(t, e) {
    var n = "LeftPanel/LeftPanel.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div>\n\t<results-list></results-list>\n\n\t<div class="threeD-overlay" ng-show="vm.ModeService.isNormalMode()">\n\t\t<typeahead-templates></typeahead-templates>\n\n\t\t<div id="left-panel-pois" class="border-radius"\n\t\t     ng-class="{\'z-index-2\': !vm.isFullscreenEnabled() || !vm.SearchService.isAnyResultSelected(),\n\t\t                \'z-index-3\': vm.isFullscreenEnabled() && vm.SearchService.isAnyResultSelected()}">\n\n\t\t\t<search-input ng-if="vm.SearchService.isSearchBoxVisible()"\n\t\t\t              ng-hide="vm.PoiService.isRouteMode">\n\t\t\t</search-input>\n\n\t\t\t<route-inputs ng-if="vm.PoiService.isRouteMode">\n\t\t\t</route-inputs>\n\n\t\t\t<div ng-show="vm.isPoiExtensionsBoxVisible()"\n\t\t\t     class="poi-extensions-box border-radius-bottom element-on-screen-trigger-wrapper"\n\t\t\t     ng-class="{\'autoscroll\': !vm.isFullscreenEnabled() || !vm.SearchService.isAnyResultSelected()}">\n\n\t\t\t\t<div class="route-instructions-box">\n\t\t\t\t\t<route-instructions></route-instructions>\n\t\t\t\t</div>\n\n\t\t\t\t<site-model-details model="vm.SiteModelService.selectedModel"></site-model-details>\n\n\t\t\t\t<poi-details class="poi-details-box" model="vm.PoiService.openedPoi">\n\t\t\t\t</poi-details>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<invalid-license-warning></invalid-license-warning>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1327),
    n(1329),
    n(1331);
    var r = n(40)
      , o = n(180)
      , a = n(20)
      , s = n(392)
      , c = n(8)
      , l = n(260)
      , u = n(57)
      , d = function() {
        function t(t, e, n, i, o, a, s, c, l, u, d, p) {
            this.PoiService = t,
            this.ViewMenuService = e,
            this.SearchService = n,
            this.SiteModelService = i,
            this.LicenseService = o,
            this.TrackingService = a,
            this.SiteModelRepository = s,
            this.CursorService = c,
            this.PoiRepository = l,
            this.ViewService = u,
            this.UserService = d,
            this.PoiTypeService = p,
            this.poiDescriptionExpandedOnMobile = !1,
            this.isMobileLayout = r.isMobileLayout,
            this.initEventHandlers()
        }
        return t.$inject = ["PoiService", "ViewMenuService", "SearchService", "SiteModelService", "LicenseService", "TrackingService", "SiteModelRepository", "CursorService", "PoiRepository", "ViewService", "UserService", "PoiTypeService"],
        Object.defineProperty(t.prototype, "resultsList", {
            get: function() {
                return this.SearchService.resultsList
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "enableFeatures", {
            get: function() {
                return this.PoiService.enableFeatures
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "movingPoi", {
            get: function() {
                return this.PoiService.movingPoi
            },
            set: function(t) {
                this.PoiService.movingPoi = t
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.initEventHandlers = function() {
            var t = this;
            this.PoiService.onPoiClick.connect((function(e) {
                return t.PoiService.isRoutePickingPhase() ? t.PoiService.openPoi(e) : t.PoiService.openHighlightAndGoToPoi(e).catch(c.handleWarning),
                !1
            }
            ), 999),
            this.PoiService.onPoiOpen.connect((function(e) {
                t.PoiService.isRoutePickingPhase() ? t.makeRouteWithPoi(e) : (t.poiDescriptionExpandedOnMobile = !1,
                a.invalidateAngular())
            }
            )),
            this.PoiService.onPoiClose.connect((function(t) {
                return a.invalidateAngular()
            }
            )),
            this.SiteModelService.onSelect.connect((function() {
                return t.PoiService.closeAndUnhighlightPoi()
            }
            )),
            this.PoiService.openEditor.connect((function(e) {
                return t.openEditor(e)
            }
            ))
        }
        ,
        t.prototype.isFullscreenEnabled = function() {
            return this.PoiService.enableFeatures.fullScreen && !this.isMobilePanoramaView()
        }
        ,
        t.prototype.isMobilePanoramaView = function() {
            return r.isMobileLayout() && !this.ViewService.isMapPrimaryView()
        }
        ,
        t.prototype.isTopFloatingPanel = function() {
            return !this.isFullscreenEnabled() && !this.PoiService.isRouteMode && !this.SearchService.isSearchBoxVisible()
        }
        ,
        t.prototype.isPoiOpenedFromResultList = function() {
            return this.PoiService.openedPoi.id && this.resultsList.selectedResult && this.resultsList.selectedResult instanceof l.PoiSearchEntity && this.resultsList.selectedResult.id === this.PoiService.openedPoi.id
        }
        ,
        t.prototype.isPoiDetailsClosable = function() {
            return this.PoiService.isRouteMode || this.isFullscreenEnabled() || !this.SearchService.isSearchBoxVisible()
        }
        ,
        t.prototype.isViewSwappable = function() {
            return r.isMobileLayout() && this.ViewService.canSwapViews()
        }
        ,
        t.prototype.isDescriptionCollapsible = function() {
            return r.isMobileLayout() && this.PoiService.openedPoi.description && !this.isFullscreenEnabled()
        }
        ,
        t.prototype.closeResult = function() {
            this.SearchService.closeResult(!0, o.SearchResultType.POI)
        }
        ,
        t.prototype.returnToResultsList = function() {
            this.SearchService.closeResult(!1, o.SearchResultType.POI),
            this.SearchService.updatePoisToDisplay()
        }
        ,
        t.prototype.returnToSiteModel = function() {
            this.SiteModelService.selectPreviousModel()
        }
        ,
        t.prototype.goToPoi = function(t) {
            return this.PoiService.goToPoi(t)
        }
        ,
        t.prototype.swapViews = function() {
            this.ViewService.swapViews()
        }
        ,
        t.prototype.selectedPoiIsEditable = function() {
            return !(!this.PoiService.openedPoi || !this.LicenseService.isLicenseValid) && (!this.PoiService.openedPoi.readOnly && this.PoiService.openedPoi.security.canWrite)
        }
        ,
        t.prototype.startRouteMenu = function() {
            this.PoiService.enterRouteMode();
            var t = this.PoiService.openedPoi;
            this.makeRouteWithPoi(t),
            this.PoiService.closePoi(),
            this.TrackingService.trackRouteInitiation(this.PoiService.routeEnd)
        }
        ,
        t.prototype.makeRouteWithPoi = function(t) {
            this.PoiService.routeEnd && this.PoiService.routeStart ? this.PoiService.routeEnd = t : this.PoiService.routeEnd ? this.PoiService.routeStart || (this.PoiService.routeStart = t) : this.PoiService.routeEnd = t,
            this.SearchService.startRoute(),
            a.invalidateAngular()
        }
        ,
        t.prototype.toggleExpandedDescription = function() {
            this.poiDescriptionExpandedOnMobile = !this.poiDescriptionExpandedOnMobile
        }
        ,
        t.prototype.isPoiDescriptionExpanded = function() {
            return !!this.isFullscreenEnabled() || !(!this.PoiService.openedPoi || !this.PoiService.openedPoi.description) && (!r.isMobileLayout() || this.poiDescriptionExpandedOnMobile)
        }
        ,
        t.prototype.finishMovePoi = function(t, e) {
            void 0 === e && (e = !0),
            this.movingPoi && (t && (this.model = this.movingPoi),
            this.movingPoi = void 0,
            this.PoiService.openedPoi.location = this.model.location,
            this.PoiService.poisChanged.emit()),
            e && i.element("#editPoi").modal("show")
        }
        ,
        t.prototype.openEditor = function(t, e) {
            if (t) {
                var n = this.PoiRepository.create();
                e ? n.copyPose(e) : this.CursorService.copyCursorPose(n),
                this.model = n
            } else
                this.model = this.PoiRepository.create().copy(this.PoiService.openedPoi);
            window.setTimeout((function() {
                i.element("#editPoi").modal("show"),
                a.invalidateAngular()
            }
            ))
        }
        ,
        t.prototype.startMovePoi = function() {
            this.PoiService.movingPoi = this.PoiRepository.create().copy(this.model)
        }
        ,
        t.prototype.getPoiShareType = function() {
            return this.PoiService.openedPoi && this.PoiService.openedPoi.isLocationAsPoi ? s.ShareType.CUSTOM_LOCATION : s.ShareType.POI
        }
        ,
        t.prototype.isCustomLocation = function() {
            return this.PoiService.openedPoi && this.PoiService.openedPoi.isLocationAsPoi
        }
        ,
        t.prototype.isCreateButtonVisible = function() {
            return this.PoiService.openedPoi.isLocationAsPoi && this.PoiService.openedPoi.orientation && this.UserService.userInfo.checkAttribute(u.GroupAttributes.CAN_CREATE_POIS) && this.PoiTypeService.isAnyVisible() && this.LicenseService.isLicenseValid
        }
        ,
        t.prototype.createPoi = function() {
            this.openEditor(!0, this.PoiService.openedPoi)
        }
        ,
        t
    }();
    e.PoiDetailsController = d;
    var p = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "PoiDetails/PoiDetails.html",
            this.controller = d,
            this.controllerAs = "vm",
            this.scope = {
                model: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.PoiDetailsDirective = p,
    i.module("IVWebApp").directive("poiDetails", p.factory())
}
, function(t, e, n) {
    var i = "PoiDetails/PoiDetails.html"
      , r = '\x3c!--  POI details --\x3e\n<div ng-if="vm.PoiService.openedPoi"\n     id="poi-details-panel"\n     class="panel panel-default"\n     ng-class="{\'full-window full-window-scroll\': vm.isFullscreenEnabled(),\n                \'border-radius-top padding-left-menu-icon\': vm.isTopFloatingPanel()}">\n\t<div class="return-label padding-horizontal">\n\t\t<a ng-click="vm.returnToResultsList()"\n\t\t   ng-show="vm.isPoiOpenedFromResultList()"\n\t\t   class="clickable">\n\t\t\t<i class="fa fa-chevron-left" aria-hidden="true"></i>\n\t\t\t<span translate>Return to results</span>\n\t\t</a>\n\t\t<a ng-click="vm.returnToSiteModel()"\n\t\t   ng-show="!!vm.SiteModelService.previouslySelectedModel"\n\t\t   class="return-to-sme clickable">\n\t\t\t<i class="fa fa-chevron-left" aria-hidden="true"></i>\n\t\t\t<span class="long-title"\n\t\t\t      ng-if="vm.SiteModelService.previouslySelectedModel.type !== \'CUSTOM\'"\n\t\t\t      translate\n\t\t\t      translate-params-type="vm.SiteModelService.previouslySelectedModel.getTypeDisplayName() | translate"\n\t\t\t      translate-params-name="vm.SiteModelService.previouslySelectedModel.name">\n\t\t\t\tReturn to {{type}} {{name}}\n\t\t\t</span>\n\t\t\t<span class="long-title"\n\t\t\t      ng-if="vm.SiteModelService.previouslySelectedModel.type === \'CUSTOM\'"\n\t\t\t      translate\n\t\t\t      translate-params-name="vm.SiteModelService.previouslySelectedModel.name">\n\t\t\t\tReturn to {{name}}\n\t\t\t</span>\n\t\t</a>\n\t</div>\n\n\t\x3c!--Close POI details panel--\x3e\n\t<img class="menu-close-button ic_svg"\n\t     ng-if="vm.isPoiDetailsClosable()"\n\t     ng-click="vm.hideNavGraph(); vm.closeResult()"\n\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}">\n\n\t\x3c!-- Heading --\x3e\n\t<div class="panel-heading clear-background">\n\t\t<div class="row">\n\t\t\t<div class="col-xs-12 clickable" ng-click="vm.goToPoi()">\n\t\t\t\t\x3c!-- Icon --\x3e\n\t\t\t\t<div class="vcenter">\n\t\t\t\t\t<img ng-src="{{vm.PoiService.openedPoi.icon}}" class="poiIcon">\n\t\t\t\t</div>\n\t\t\t\t<div class="vcenter padding-horizontal">\n\t\t\t\t\t\x3c!-- Title --\x3e\n\t\t\t\t\t<h3 class="panel-title long-title no-margin"\n\t\t\t\t\t    title="{{vm.PoiService.openedPoi.title}}">\n\t\t\t\t\t\t{{vm.PoiService.openedPoi.title}}\n\t\t\t\t\t</h3>\n\t\t\t\t\t\x3c!--Site Model Information--\x3e\n\t\t\t\t\t<site-data entity="vm.PoiService.openedPoi.siteModelEntity"\n\t\t\t\t\t           clickable="true">\n\t\t\t\t\t</site-data>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\n\t\x3c!-- Button controls --\x3e\n\t<div class="btn-toolbar poi-btn-toolbar" role="toolbar">\n\t\t<div class="btn-group">\n\t\t\t\x3c!-- Share --\x3e\n\t\t\t<button ng-if="vm.enableFeatures.share"\n\t\t\t        ng-click="vm.goToPoi()"\n\t\t\t        class="btn btn-default no-overflow" type="button" data-toggle="modal"\n\t\t\t        data-target="#poi-url">\n\t\t\t\t<img class="ic_svg" ng-src="' + n(591) + '"><br>\n\t\t\t\t<span class="btn-description-mobile uppercase" translate>Share</span>\n\t\t\t</button>\n\n\t\t\t\x3c!-- Jump to panorama / point cloud mode --\x3e\n\t\t\t<button ng-if="vm.isViewSwappable() && vm.ViewService.isMapPrimaryView()"\n\t\t\t        class="btn btn-default no-overflow" type="button"\n\t\t\t        ng-click="vm.goToPoi(); vm.ViewService.swapViews()">\n\t\t\t\t<div ng-if="vm.ViewMenuService.config.showPanoramas === true">\n\t\t\t\t\t<img class="ic_svg" ng-src="' + n(426) + '"><br>\n\t\t\t\t\t<span class="btn-description-mobile uppercase" translate>Panorama</span>\n\t\t\t\t</div>\n\t\t\t\t<div ng-if="vm.ViewMenuService.config.showPanoramas === false">\n\t\t\t\t\t<img class="ic_svg" ng-src="' + n(592) + '"><br>\n\t\t\t\t\t<span class="btn-description-mobile uppercase" translate>Point cloud</span>\n\t\t\t\t</div>\n\t\t\t</button>\n\t\t\t\x3c!-- ...or jump to map mode --\x3e\n\t\t\t<button ng-if="vm.isViewSwappable() && vm.ViewService.isPanoPrimaryView()"\n\t\t\t        class="btn btn-default no-overflow" type="button"\n\t\t\t        ng-click="vm.goToPoi(); vm.swapViews()">\n\t\t\t\t<div>\n\t\t\t\t\t<img class="ic_svg" ng-src="' + n(427) + '"><br>\n\t\t\t\t\t<span class="btn-description-mobile uppercase" translate>Map</span>\n\t\t\t\t</div>\n\t\t\t</button>\n\n\t\t\t\x3c!-- Edit --\x3e\n\t\t\t<button ng-if="vm.selectedPoiIsEditable()"\n\t\t\t        class="btn btn-default no-overflow" type="button"\n\t\t\t        ng-click="vm.openEditor()">\n\t\t\t\t<img class="ic_svg" ng-src="' + n(593) + '"><br>\n\t\t\t\t<span class="btn-description-mobile uppercase" translate>Edit</span>\n\t\t\t</button>\n\n\t\t\t\x3c!-- Create --\x3e\n\t\t\t<button ng-if="vm.isCreateButtonVisible()"\n\t\t\t        class="btn btn-default no-overflow" type="button"\n\t\t\t        ng-click="vm.createPoi()">\n\t\t\t\t<img class="ic_svg" ng-src="' + n(1328) + '"><br>\n\t\t\t\t<span class="btn-description-mobile uppercase" translate>Create POI</span>\n\t\t\t</button>\n\n\t\t\t\x3c!-- Route --\x3e\n\t\t\t<button ng-if="vm.enableFeatures.routing"\n\t\t\t        class="btn btn-default dropdown-toggle no-overflow" type="button"\n\t\t\t        data-toggle="dropdown"\n\t\t\t        ng-click="vm.startRouteMenu()">\n\t\t\t\t<img class="ic_svg" ng-src="' + n(594) + '"><br>\n\t\t\t\t<span class="btn-description-mobile uppercase" translate>Route</span>\n\t\t\t</button>\n\t\t</div>\n\t</div>\n\n\t\x3c!-- Expand / collapse description --\x3e\n\t<button type="button"\n\t        ng-click="vm.toggleExpandedDescription()"\n\t        ng-show="vm.isDescriptionCollapsible()"\n\t        class="btn btn-default btn-showhide-poi-details no-hover-ios">\n\t\t<div ng-if="!vm.isPoiDescriptionExpanded()"\n\t\t     class="show-hide-text uppercase" translate>\n\t\t\tShow details\n\t\t</div>\n\t\t<div ng-if="vm.isPoiDescriptionExpanded()"\n\t\t     class="show-hide-text uppercase" translate>\n\t\t\tHide details\n\t\t</div>\n\t\t<span class="fa"\n\t\t      ng-class="vm.isPoiDescriptionExpanded() ? \'fa-angle-up\' : \'fa-angle-down\'"></span>\n\t</button>\n\n\t<div class="panel-body border-top"\n\t     ng-show="vm.isPoiDescriptionExpanded()">\n\n\t\t<div ng-bind-html="vm.PoiService.openedPoi.description"\n\t\t     id="poi-description"\n\t\t     class="collapse-content poi-description"></div>\n\t</div>\n\n\t\x3c!-- Extra panels below POI description --\x3e\n\t<ul class="list-group">\n\t\t\x3c!-- buttons for saving when POI is being moved --\x3e\n\t\t<li ng-if="vm.movingPoi" class="list-group-item">\n\t\t\t\x3c!-- Cancel --\x3e\n\t\t\t<cancel-button ng-click="vm.finishMovePoi(false)"></cancel-button>\n\t\t\t\x3c!-- Save --\x3e\n\t\t\t<button class="btn btn-default" type="button"\n\t\t\t        ng-click="vm.finishMovePoi(true)"\n\t\t\t        style="margin-left:5px">\n\t\t\t\t<span class="glyphicon glyphicon-save"></span>\n\t\t\t\t<span translate>\n\t\t\t\t\tSave position\n\t\t\t\t</span>\n\t\t\t</button>\n\t\t</li>\n\n\t</ul>\n</div>\n\n\x3c!-- POI editor dialog --\x3e\n<modal>\n\t<poi-editor modal-id="editPoi" model="vm.model" on-start-move="vm.startMovePoi()"></poi-editor>\n</modal>\n\n\x3c!-- Dialog for sharing URL --\x3e\n\x3c!--When escape key is pressed we hide the modal and re-enable the cursor with setCursorVisiblity method--\x3e\n<modal>\n\t<div class="modal fade" id="poi-url" tabindex="-1" role="dialog"\n\t     aria-labelledby="poi-url" aria-hidden="true" data-dismiss="modal" x-trigger-cursor-viz>\n\t\t<div class="modal-dialog">\n\t\t\t<div class="modal-content">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}"\n\t\t\t\t\t     data-dismiss="modal">\n\t\t\t\t\t<h4 ng-if="!vm.isCustomLocation()" translate translate-context="title">\n\t\t\t\t\t\tShare POI\n\t\t\t\t\t</h4>\n\t\t\t\t\t<h4 ng-if="vm.isCustomLocation()" translate translate-context="title">\n\t\t\t\t\t\tShare Location\n\t\t\t\t\t</h4>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t<share-menu share-type="{{vm.getPoiShareType();}}"></share-menu>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    t.exports = n.p + "622af2284dbbc3b489362b4ee0fe303d.ic_location_blue.svg"
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1330);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "poi-details .return-to-sme{width:100%}poi-details .return-to-sme .long-title{vertical-align:middle;width:calc(100% - 15px)}poi-details .vcenter{display:inline-block}poi-details .vcenter.padding-horizontal{line-height:1;width:calc(100% - 37px)}poi-details .vcenter.padding-horizontal .long-title{line-height:1.3em;width:calc(100% + 15px)}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        var i, r = this && this.__extends || (i = function(t, e) {
            return (i = Object.setPrototypeOf || {
                __proto__: []
            }instanceof Array && function(t, e) {
                t.__proto__ = e
            }
            || function(t, e) {
                for (var n in e)
                    e.hasOwnProperty(n) && (t[n] = e[n])
            }
            )(t, e)
        }
        ,
        function(t, e) {
            function n() {
                this.constructor = t
            }
            i(t, e),
            t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
            new n)
        }
        );
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var o = n(2);
        n(1332),
        n(1333);
        var a = n(185);
        n(103),
        n(1335),
        n(123);
        var s = n(7)
          , c = n(67);
        n(1337);
        var l = n(40)
          , u = n(197)
          , d = n(89)
          , p = n(1339)
          , h = n(252)
          , f = n(253)
          , m = function(e) {
            function n(t, n, i, r, o, a, s, c, u, h, f, m, g, v, y) {
                var b = e.call(this, t, r, a, o) || this;
                return b.PoiService = s,
                b.UploadService = c,
                b.LanguageService = u,
                b.ProgressReportService = h,
                b.TrackingService = f,
                b.GeoTransformationService = m,
                b.IV = g,
                b.ContentService = v,
                b.StorageService = y,
                b.isFullscreen = !1,
                b.isMobileLayout = l.isMobileLayout,
                b.localize = b.LanguageService.localize,
                b.showViewConfOptions = !1,
                b.poiValid = {
                    type: !0,
                    fileUpload: !0
                },
                b._viewConfiguration = p.PoiViewConfiguration.CURRENT,
                b.viewConfigStorageKey = "poiViewConfig",
                b.mediaUploadProgress = new d.PromiseProgressWrapper,
                b.iconUploadProgress = new d.PromiseProgressWrapper,
                b.preservePoiDescriptions = !1,
                b.movingPoiInProcess = !1,
                i.initialized.then((function() {
                    return b.poiTypes = n.data
                }
                )).catch((function() {}
                )),
                b
            }
            return r(n, e),
            n.$inject = ["PoiRepository", "PoiTypeRepository", "PoiTypeService", "gettextCatalog", "ErrorService", "$element", "PoiService", "UploadService", "LanguageService", "ProgressReportService", "TrackingService", "GeoTransformationService", "IV", "ContentService", "StorageService"],
            Object.defineProperty(n.prototype, "viewConfiguration", {
                get: function() {
                    return this._viewConfiguration
                },
                set: function(t) {
                    this._viewConfiguration = t,
                    t !== p.PoiViewConfiguration.SAVED && this.StorageService.set(this.viewConfigStorageKey, t)
                },
                enumerable: !0,
                configurable: !0
            }),
            Object.defineProperty(n.prototype, "poiDescriptions", {
                get: function() {
                    return this.model ? this.model.descriptions : {}
                },
                enumerable: !0,
                configurable: !0
            }),
            n.prototype.isPreservePovOptionVisible = function() {
                return !this.movingPoiInProcess && void 0 !== this.model.id
            }
            ,
            n.prototype.isMediaUploadInProgress = function() {
                return this.mediaUploadProgress.isInProgress
            }
            ,
            n.prototype.isIconUploadInProgress = function() {
                return this.iconUploadProgress.isInProgress
            }
            ,
            n.prototype.changeViewConfig = function() {
                this.showViewConfOptions = !0,
                this.PoiService.recalculateTextEditorSize()
            }
            ,
            n.prototype.save = function() {
                var t = this
                  , n = void 0 === this.model.id
                  , i = this.IV.getMainView();
                switch (this._viewConfiguration) {
                case p.PoiViewConfiguration.CURRENT:
                    this.model.pov = new f.PointOfView(this.GeoTransformationService.vectorToGlobal(i.getCamera().position),h.QuaternionFactory.fromLonLat(i.getViewDir()),i.getFov(),i.getImage() && i.getImage().isAtPosition(i.getCamera().position) ? i.getImage().id : void 0);
                    break;
                case p.PoiViewConfiguration.CLOSEST_IMAGE:
                    this.model.pov = void 0;
                    break;
                case p.PoiViewConfiguration.SAVED:
                }
                return this.model.poiType ? (this.movingPoiInProcess = !1,
                s.forEach(this.model.descriptions, (function(e, n) {
                    e = t.ContentService.collapseSelfHostedUrls(e),
                    t.model.descriptions[n] = e
                }
                )),
                e.prototype.save.call(this, this.filterInlineData(this.model.descriptions)).then((function(e) {
                    return t.setOpenedPoi(e),
                    t.PoiService.onPoiSave.emit(e, n),
                    e
                }
                ))) : (this.poiValid.type = !1,
                Promise.reject("No PoiType provided."))
            }
            ,
            n.prototype.cancel = function() {
                void 0 !== this.model.id && this.setOpenedPoi(this.repository.dataMap[this.model.id]),
                e.prototype.cancel.call(this),
                this.movingPoiInProcess = !1
            }
            ,
            n.prototype.remove = function() {
                return this.TrackingService.trackPoiDeleted(),
                e.prototype.remove.call(this)
            }
            ,
            n.prototype.setOpenedPoi = function(t) {
                void 0 !== t.id && this.PoiService.openHighlightAndGoToPoi(t).catch((function() {}
                ))
            }
            ,
            n.prototype.onShow = function() {
                var t = this
                  , e = o.element("#" + this.modalId + " #poi-editor-tab-home");
                e.on("shown.bs.tab", (function() {
                    t.PoiService.recalculateTextEditorSize()
                }
                )),
                this.showViewConfOptions = this.movingPoiInProcess || !this.model.id,
                this.model.id ? this._viewConfiguration = this.movingPoiInProcess ? p.PoiViewConfiguration.CURRENT : p.PoiViewConfiguration.SAVED : this._viewConfiguration = this.getDefaultViewConfiguration(),
                e.tab("show"),
                o.element("#" + this.modalId + " #poi_editor_advanced").removeClass("active"),
                o.element("#" + this.modalId + " #poi_editor_home").addClass("active")
            }
            ,
            n.prototype.onHide = function() {
                e.prototype.onHide.call(this),
                this.poiValid.type = !0,
                this.poiValid.fileUpload = !0,
                this.preservePoiDescriptions || (this.model.descriptions = {
                    reset: "true"
                }),
                this.preservePoiDescriptions = !1
            }
            ,
            n.prototype.isUploadAvailable = function() {
                return this.UploadService.isProtectedUploadAvailable()
            }
            ,
            n.prototype.uploadFile = function(e) {
                for (var i = this, r = function(e) {
                    o.reportErrorInModal(o.mediaUploadProgress.wrap(o.UploadService.upload(n.UPLOAD_URL, e).then((function(r) {
                        var o = n.UPLOAD_URL + "/" + r.url;
                        i.poiValid.fileUpload = !0;
                        var a = ""
                          , s = i.poiDescriptions[i.selectedLanguage.key];
                        if (e.type.indexOf("image") > -1) {
                            var c = t('<img id="dynamic">');
                            c.attr("src", o),
                            c.css("width", "inherit"),
                            a = c[0].outerHTML
                        } else if (e.type.indexOf("pdf") > -1) {
                            var l = document.createElement("IFRAME");
                            l.setAttribute("src", o),
                            l.setAttribute("frameborder", "0"),
                            l.setAttribute("width", "100%"),
                            l.setAttribute("height", "480px"),
                            l.setAttribute("frameborder", "0"),
                            a = l.outerHTML
                        } else
                            e.type.indexOf("audio/") > -1 && (a = '<audio controls><source src="' + o + '"></audio>');
                        i.poiDescriptions[i.selectedLanguage.key] = s ? s + a : a
                    }
                    )).catch((function(t) {
                        throw 415 === t.status && (i.poiValid.fileUpload = !1,
                        i.PoiService.recalculateTextEditorSize()),
                        t
                    }
                    )))).catch((function() {}
                    ))
                }, o = this, a = 0, s = e; a < s.length; a++) {
                    r(s[a])
                }
            }
            ,
            n.prototype.isMoveAvailable = function() {
                return this.model && this.model.id && void 0 !== this.onStartMove
            }
            ,
            n.prototype.onMove = function() {
                this.preservePoiDescriptions = !0,
                this.movingPoiInProcess = !0,
                this.exitEditor(),
                this.onStartMove()
            }
            ,
            n.prototype.filterInlineData = function(t) {
                var e = this;
                if (!this.isUploadAvailable())
                    return Promise.resolve();
                var i = /(<.*src=["'])(data:\w+\/\w+;base64,(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=))(?:["'])(?:.*>)/g
                  , r = {};
                if (s.forEach(t, (function(t, e) {
                    for (var n = i.exec(t); n; n = i.exec(t)) {
                        var o = n[1].length + n.index
                          , a = n[2]
                          , s = r[a];
                        if (s)
                            s.languageIndex[e] ? s.languageIndex[e].push(o) : s.languageIndex[e] = [o];
                        else {
                            var l = {};
                            l[e] = [o],
                            r[a] = {
                                file: u.blobToFile(c.dataURItoBlob(a)),
                                languageIndex: l
                            }
                        }
                    }
                }
                )),
                0 === s.size(r))
                    return Promise.resolve();
                var o = []
                  , a = this.ProgressReportService.addTask(this.gettextCatalog.getString("Uploading images..."), s.size(r));
                return s.forEach(r, (function(t) {
                    o.push(e.UploadService.upload(n.UPLOAD_URL, t.file).then((function(e) {
                        t.url = n.UPLOAD_URL + "/" + e.url,
                        a.itemDone()
                    }
                    )).catch((function() {
                        a.itemDone()
                    }
                    )))
                }
                )),
                this.reportErrorInModal(Promise.all(o).then((function() {
                    s.forEach(r, (function(e, n) {
                        e.url ? s.forEach(e.languageIndex, (function(i, r) {
                            for (var o = 0, a = 0, s = i; a < s.length; a++) {
                                var c = s[a]
                                  , l = t[r];
                                o -= l.length - (l = l.substr(0, c + o) + e.url + l.substr(c + n.length + o)).length,
                                t[r] = l
                            }
                        }
                        )) : console.warn("Upload for file type", e.file.type, "failed, not replacing.")
                    }
                    ))
                }
                )))
            }
            ,
            n.prototype.getDefaultViewConfiguration = function() {
                return this.StorageService.get(this.viewConfigStorageKey) ? this.StorageService.get(this.viewConfigStorageKey) : p.PoiViewConfiguration.CURRENT
            }
            ,
            n.UPLOAD_URL = "poi/image",
            n
        }(a.EntityEditorController);
        e.PoiEditorController = m;
        var g = function() {
            function t() {
                this.restrict = "E",
                this.templateUrl = "PoiUI/PoiEditor.html",
                this.controller = m,
                this.controllerAs = "vm",
                this.scope = !0,
                this.bindToController = {
                    modalId: "@",
                    model: "=",
                    onStartMove: "&?"
                }
            }
            return t.factory = function() {
                return function() {
                    return new t
                }
            }
            ,
            t
        }();
        e.PoiEditorDirective = g,
        o.module("IVWebApp").directive("poiEditor", g.factory())
    }
    ).call(this, n(19))
}
, function(t, e) {
    var n = "PoiUI/PoiEditor.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div id="{{vm.modalId}}" class="modal" role="dialog" aria-labelledby="{{vm.modalId}}"\n     aria-hidden="false" data-backdrop="static">\n\t<div class="modal-dialog modal-poi-editor"\n\t     ng-class="{\'full-window full-window-scroll\' : vm.isMobileLayout() || vm.isFullscreen}"\n\t     role="document">\n\t\t<div class="modal-content">\n\t\t\t<div class="modal-header" style="border-bottom: 0px">\n\t\t\t\t<button type="button" class="close glyphicon"\n\t\t\t\t        ng-class="\'glyphicon-resize-\' + (vm.isFullscreen ? \'small\' : \'full\')"\n\t\t\t\t        ng-click="vm.isFullscreen = !vm.isFullscreen"\n\t\t\t\t        ng-hide="vm.isMobileLayout()">\n\t\t\t\t</button>\n\t\t\t\t<ul class="nav nav-tabs" role="tablist">\n\t\t\t\t\t<li id="poi-editor-tab-home" class="active" role="presentation">\n\t\t\t\t\t\t<a href="#poi_editor_home" aria-controls="poi_editor_home" role="tab"\n\t\t\t\t\t\t   data-toggle="tab" translate>\n\t\t\t\t\t\t\tEdit POI\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</li>\n\t\t\t\t\t<li id="poi-editor-tab-advanced" role="presentation">\n\t\t\t\t\t\t<a href="#poi_editor_advanced" aria-controls="poi_editor_advanced"\n\t\t\t\t\t\t   role="tab" data-toggle="tab" translate>\n\t\t\t\t\t\t\tAdvanced\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class="modal-body">\n\t\t\t\t<div class="tab-content">\n\t\t\t\t\t<div role="tabpanel" class="tab-pane active" id="poi_editor_home">\n\t\t\t\t\t\t<form class="poiModalForm form-horizontal" role="form">\n\n\t\t\t\t\t\t\t\x3c!--POI language--\x3e\n\t\t\t\t\t\t\t<poi-translation-editor titles="vm.model.titles"\n\t\t\t\t\t\t\t                        selected-language="vm.selectedLanguage"\n\t\t\t\t\t\t\t                        descriptions="vm.model.descriptions"\n\t\t\t\t\t\t\t                        col-span="3">\n\t\t\t\t\t\t\t</poi-translation-editor>\n\n\t\t\t\t\t\t\t\x3c!--POI name--\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="col-sm-3 control-label" translate>\n\t\t\t\t\t\t\t\t\tName\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t<div class="col-sm-9">\n\t\t\t\t\t\t\t\t\t<input type="text" class="form-control"\n\t\t\t\t\t\t\t\t\t       placeholder="{{\'Enter name of POI\'|translate}}"\n\t\t\t\t\t\t\t\t\t       ng-model="vm.model.titles[vm.selectedLanguage.key]"\n\t\t\t\t\t\t\t\t\t       init-focus>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\x3c!--POI type--\x3e\n\t\t\t\t\t\t\t<div class="form-group" ng-class="{\'has-error\': !vm.poiValid.type}">\n\t\t\t\t\t\t\t\t<label class="col-sm-3 control-label" translate>\n\t\t\t\t\t\t\t\t\tCategory\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t<div class="col-sm-9">\n\t\t\t\t\t\t\t\t\t<select class="form-control" ng-model="vm.model.poiType"\n\t\t\t\t\t\t\t\t\t        ng-options="type as vm.localize(type.name) group by vm.localize(type.poiTypeGroup.name) for type in vm.poiTypes">\n\t\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\x3c!--View configuration--\x3e\n\t\t\t\t\t\t\t<div class="form-group" >\n\t\t\t\t\t\t\t\t<label class="col-sm-3 control-label" translate translate-context="POI view configuration">\n\t\t\t\t\t\t\t\t\tView configuration\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t<div class="col-sm-9">\n\t\t\t\t\t\t\t\t\t<div ng-if="!vm.showViewConfOptions" class="form-text">\n\t\t\t\t\t\t\t\t\t\t<span ng-if="vm.model.pov === undefined" translate translate-context="POI view configuration">\n\t\t\t\t\t\t\t\t\t\t\tuse closest panoramic image\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t<span ng-if="vm.model.pov !== undefined" translate translate-context="POI view configuration">\n\t\t\t\t\t\t\t\t\t\t\tuse previously specified view\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t<a class="clickable" ng-click="vm.changeViewConfig()" translate translate-context="POI view configuration">Change</a>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div ng-if="vm.showViewConfOptions">\n\t\t\t\t\t\t\t\t\t\t<div class="radio">\n\t\t\t\t\t\t\t\t\t\t\t<label>\n\t\t\t\t\t\t\t\t\t\t\t\t<input type="radio" ng-model="vm.viewConfiguration" value="current">\n\t\t\t\t\t\t\t\t\t\t\t\t<span translate translate-context="POI view configuration">use current view</span>\n\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="radio">\n\t\t\t\t\t\t\t\t\t\t\t<label>\n\t\t\t\t\t\t\t\t\t\t\t\t<input type="radio" ng-model="vm.viewConfiguration" value="closest">\n\t\t\t\t\t\t\t\t\t\t\t\t<span translate translate-context="POI view configuration">use closest panoramic image</span>\n\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div class="radio" ng-if="vm.isPreservePovOptionVisible()">\n\t\t\t\t\t\t\t\t\t\t\t<label>\n\t\t\t\t\t\t\t\t\t\t\t\t<input type="radio" ng-model="vm.viewConfiguration" value="saved">\n\t\t\t\t\t\t\t\t\t\t\t\t<span translate translate-context="POI view configuration">use previously specified view</span>\n\t\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\x3c!--Permissions Editor --\x3e\n\t\t\t\t\t\t\t<permission-editor model="vm.model"\n\t\t\t\t\t\t\t                   model-type="\'poi\'"\n\t\t\t\t\t\t\t                   col-span="3">\n\t\t\t\t\t\t\t</permission-editor>\n\t\t\t\t\t\t</form>\n\n\t\t\t\t\t\t<cke-wrapper-lazy ng-if="!!vm.model" ng-model="vm.poiDescriptions[vm.selectedLanguage.key]"></cke-wrapper-lazy>\n\n\t\t\t\t\t\t<div id="upload_panel" class="panel panel-default"\n\t\t\t\t\t\t     ng-if="vm.isUploadAvailable()">\n\t\t\t\t\t\t\t<input-button class="btn-block btn-file panel-control-button"\n\t\t\t\t\t\t\t              in-progress="vm.isMediaUploadInProgress()">\n\t\t\t\t\t\t\t\t<i class="fa fa-upload"></i>\n\t\t\t\t\t\t\t\t<span translate>Add media (images, PDF, or audio)</span>\n\t\t\t\t\t\t\t\t\x3c!--accept needs to stay in sync with the MIME types allowed in the\n\t\t\t\t\t\t\t\t    server\'s PoiImageController endpoint--\x3e\n\t\t\t\t\t\t\t\t<input type="file"\n\t\t\t\t\t\t\t\t       accept=".mp3, .avi,\n\t\t\t\t\t\t\t\t               application/pdf,\n\t\t\t\t\t\t\t\t               image/jpeg, image/gif, image/png,\n\t\t\t\t\t\t\t\t               audio/mpeg, audio/ogg,\n\t\t\t\t\t\t\t\t               video/mp4, video/ogg, video/webm,\n\t\t\t\t\t\t\t\t               application/ogg"\n\t\t\t\t\t\t\t\t       ngf-select="vm.uploadFile($files)"\n\t\t\t\t\t\t\t\t       ng-disabled="vm.isMediaUploadInProgress()">\n\t\t\t\t\t\t\t</input-button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\x3c!-- Advanced options --\x3e\n\t\t\t\t\t<div role="tabpanel" class="tab-pane" id="poi_editor_advanced">\n\t\t\t\t\t\t<poi-editor-advanced poi="vm.model"\n\t\t\t\t\t\t                     upload-progress="vm.iconUploadProgress">\n\t\t\t\t\t\t</poi-editor-advanced>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="status-messages">\n\t\t\t\t\t\x3c!-- Unsupported media type --\x3e\n\t\t\t\t\t<span class="text-danger" ng-show="!vm.poiValid.fileUpload">\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<span translate>Unsupported media type</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t\x3c!-- No POI category --\x3e\n\t\t\t\t\t<span id="no_type_warning" class="text-danger"\n\t\t\t\t\t      ng-show="!vm.poiValid.type">\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<span translate>Please select a POI category</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t\x3c!-- Server response status --\x3e\n\t\t\t\t\t<span class="text-danger" ng-show="!!vm.error">\n\t\t\t\t\t\t<br>\n\t\t\t\t\t\t<span translate translate-params-status="vm.error.statusText">\n\t\t\t\t\t\t\tStatus: {{status}}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="modal-footer">\n\t\t\t\t\x3c!-- Delete --\x3e\n\t\t\t\t<delete-confirmation class="float-left" ng-show="vm.model.id"\n\t\t\t\t                button-disabled="vm.isSavingInProgress()"\n\t\t\t\t                on-confirm-callback="vm.remove()">\n\t\t\t\t</delete-confirmation>\n\n\t\t\t\t\x3c!-- Move --\x3e\n\t\t\t\t<move-button ng-show="vm.isMoveAvailable()" class="non-mobile"\n\t\t\t\t             ng-click="vm.onMove()"\n\t\t\t\t             ng-disabled="vm.isSavingInProgress()">\n\t\t\t\t</move-button>\n\n\t\t\t\t\x3c!-- Cancel --\x3e\n\t\t\t\t<cancel-button data-dismiss="modal" ng-click="vm.cancel()"></cancel-button>\n\n\t\t\t\t\x3c!-- Save --\x3e\n\t\t\t\t<save-button ng-disabled="vm.isMediaUploadInProgress() || vm.isIconUploadInProgress()"\n\t\t\t\t             ng-click="vm.save()"\n\t\t\t\t             in-progress="vm.isSavingInProgress()"></save-button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1334);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "poi-editor .modal-poi-editor{width:700px}poi-editor .modal-poi-editor .full-window{overflow-y:auto;-webkit-overflow-scrolling:touch}poi-editor .modal-poi-editor .full-window>.modal-content{height:auto;min-height:100%}poi-editor .modal-poi-editor .modal-header{padding-right:15px}poi-editor .modal-poi-editor .modal-body{padding:15px}poi-editor .modal-poi-editor .form-group{margin-bottom:10px}poi-editor .modal .modal-body img{color:inherit;cursor:pointer;border-top-left-radius:4px!important;border-top-right-radius:4px!important;border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}poi-editor .modal .modal-body img:hover{background-color:#e6e6e6}poi-editor .form-text{padding-top:7px}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1336);
    var r = n(25)
      , o = function() {
        function t(t, e, n, i, r) {
            this.ConfigService = t,
            this.PoiService = e,
            this.UploadService = n,
            this.errorWrapper = r.createDefaultWrapper()
        }
        return t.$inject = ["ConfigService", "PoiService", "UploadService", "gettextCatalog", "ErrorService"],
        t.prototype.visibilityCheckEnabled = function() {
            return this.ConfigService.getBoolean(r.Configs.POI_VISIBILITYCHECK_ENABLED, !0)
        }
        ,
        t.prototype.isUploadAvailable = function() {
            return this.UploadService.isProtectedUploadAvailable()
        }
        ,
        t.prototype.isUploadInProgress = function() {
            return this.uploadProgress.isInProgress
        }
        ,
        t.prototype.uploadIcon = function(e, n) {
            for (var i = this, r = 0, o = e; r < o.length; r++) {
                var a = o[r];
                this.errorWrapper.wrap(this.uploadProgress.wrap(this.UploadService.upload(t.ICON_UPLOAD_URL, a).then((function(e) {
                    var n = t.UPLOAD_URL + "/" + e.url;
                    i.poi.icon = n,
                    i.PoiService.uploadedCustomIcon(n)
                }
                )).catch((function(t) {
                    throw n.target.value = "",
                    t
                }
                )))).catch((function() {}
                ))
            }
        }
        ,
        t.prototype.getUploadedIcons = function() {
            return this.PoiService.getUploadedIcons()
        }
        ,
        t.UPLOAD_URL = "poi/image",
        t.ICON_UPLOAD_URL = "poi/icon",
        t
    }();
    e.PoiEditorAdvancedController = o;
    var a = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "PoiUI/PoiEditorAdvanced.html",
            this.controller = o,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                poi: "=",
                uploadProgress: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.PoiEditorAdvancedDirective = a,
    i.module("IVWebApp").directive("poiEditorAdvanced", a.factory())
}
, function(t, e, n) {
    var i = "PoiUI/PoiEditorAdvanced.html"
      , r = '<div>\n\t<form class="poiModalForm form-horizontal" role="form">\n\t\t\x3c!--poi importance--\x3e\n\t\t<div class="form-group">\n\t\t\t<label class="col-sm-3 control-label" translate>\n\t\t\t\tImportance\n\t\t\t</label>\n\t\t\t<div class="col-sm-9">\n\t\t\t\t<select class="form-control"\n\t\t\t\t        ng-model="vm.poi.importance" convert-to-number>\n\t\t\t\t\t<option value="0" translate\n\t\t\t\t\t        translate-context="Levels of importance">\n\t\t\t\t\t\tLow\n\t\t\t\t\t</option>\n\t\t\t\t\t<option value="0.5" translate\n\t\t\t\t\t        translate-context="Levels of importance">\n\t\t\t\t\t\tMedium\n\t\t\t\t\t</option>\n\t\t\t\t\t<option value="1" translate\n\t\t\t\t\t        translate-context="Levels of importance">\n\t\t\t\t\t\tHigh\n\t\t\t\t\t</option>\n\t\t\t\t</select>\n\t\t\t</div>\n\t\t</div>\n\n\t\t\x3c!--poi custom icon - uploading section--\x3e\n\t\t<div class="form-group">\n\t\t\t<label class="col-sm-3 control-label"\n\t\t\t       title="{{\'By default, POIs are displayed using the category icon. Upload a custom image to override the category icon.\'|translate}}"\n\t\t\t       translate>\n\t\t\t\tIcon\n\t\t\t</label>\n\t\t\t<div class="col-sm-9">\n\t\t\t\t<button type="button" class="btn btn-default"\n\t\t\t\t        title="{{\'By default, POIs are displayed using the category icon. Upload a custom image to override the category icon.\'|translate}}"\n\t\t\t\t        data-toggle="modal" data-target="#custom_icons_list"\n\t\t\t\t        style="display:inline-block; margin-right:5px">\n\t\t\t\t\t<i class="fa fa-list"></i>\n\t\t\t\t</button>\n\t\t\t\t<input-button ng-show="vm.isUploadAvailable()"\n\t\t\t\t              class="btn-file panel-control-button"\n\t\t\t\t              in-progress="vm.isUploadInProgress()">\n\t\t\t\t\t<i class="fa fa-upload"></i>\n\t\t\t\t\t<span translate>Upload icon</span>\n\t\t\t\t\t<input type="file"\n\t\t\t\t\t       accept="image/jpeg, image/gif, image/png"\n\t\t\t\t\t       ngf-select="vm.uploadIcon($files, $event)"\n\t\t\t\t\t       ng-disabled="vm.isUploadInProgress()">\n\t\t\t\t</input-button>\n\t\t\t</div>\n\t\t</div>\n\n\t\t\x3c!--poi custom icon- display and remove/revert to type section--\x3e\n\t\t<div ng-if="vm.poi.hasCustomIcon()" class="form-group">\n\t\t\t<label class="col-sm-3 control-label" translate>\n\t\t\t\tCustom icon\n\t\t\t</label>\n\n\t\t\t<div class="col-sm-9">\n\t\t\t\t<img ng-src={{vm.poi.icon}} class="poiIcon">\n\t\t\t\t<button class="btn btn-default " type="button" ng-click="vm.poi.icon = undefined">\n\t\t\t\t\t<span class="glyphicon glyphicon-remove"></span>\n\t\t\t\t\t<span translate>\n\t\t\t\t\t\tRemove icon\n\t\t\t\t\t</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\n\t\t\x3c!--poi position--\x3e\n\t\t<div class="form-group">\n\t\t\t<label class="col-sm-3 control-label" translate>\n\t\t\t\tPosition\n\t\t\t</label>\n\n\t\t\t<div class="col-sm-9">\n\t\t\t\t<p class="form-control-static" style="display:inline-block; margin-right:8px">\n\t\t\t\t\t<span translate\n\t\t\t\t\t      translate-params-lat="vm.poi.globalLocation.y | number:5"\n\t\t\t\t\t      translate-params-lon="vm.poi.globalLocation.x | number:5"\n\t\t\t\t\t      translate-params-height="vm.poi.globalLocation.z | uom : \'DISTANCE\' : 2">\n\t\t\t\t\t\t{{lat}} N {{lon}} E, Height: {{height}}\n\t\t\t\t\t</span>\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div>\n\n\t\t\x3c!--poi custom data--\x3e\n\t\t<div class="form-group">\n\t\t\t<label class="col-sm-3 control-label" translate>\n\t\t\t\tCustom data\n\t\t\t</label>\n\t\t\t<div class="col-sm-9">\n\t\t\t\t<input type="text" class="form-control" ng-model="vm.poi.customData">\n\t\t\t</div>\n\t\t</div>\n\n\t\t\x3c!--check and adjust poi visibility, only shown when feature is enabled in settings --\x3e\n\t\t<div class="form-group" ng-if="vm.visibilityCheckEnabled()">\n\t\t\t<label class="col-sm-3 control-label" translate>\n\t\t\t\tCheck visibility\n\t\t\t</label>\n\t\t\t<div class="col-sm-9 poi-group">\n\t\t\t\t<input type="checkbox" ng-model="vm.poi.visibilityCheck">\n\t\t\t</div>\n\t\t</div>\n\t</form>\n</div>\n\n\x3c!--Presents user with a list of already uploaded custom icons he can choose from \t\t--\x3e\n<modal>\n\t<div class="modal fade" id="custom_icons_list" tabindex="-1" role="dialog" aria-labelledby=""\n\t     aria-hidden="true">\n\t\t<div class="modal-dialog">\n\t\t\t<div class="modal-content">\n\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}"\n\t\t\t\t\t     data-dismiss="modal">\n\t\t\t\t\t<h4 translate translate-context="title">Recently Uploaded Icons</h4>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t<div class="row">\n\t\t\t\t\t\t<div class="col-sm-1" ng-repeat="(icon, unused) in vm.getUploadedIcons()"\n\t\t\t\t\t\t     data-dismiss="modal">\n\t\t\t\t\t\t\t<img ng-src="{{icon}}" ng-click="vm.poi.icon=icon" class="poiIcon">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="modal-footer">\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(7);
    n(595),
    n(596);
    var s = function(t) {
        function e(e) {
            var n = t.call(this, e) || this;
            return n.titlesLoaded = !1,
            n.descriptionsLoaded = !1,
            n
        }
        return r(e, t),
        e.$inject = ["LanguageService"],
        Object.defineProperty(e.prototype, "titles", {
            get: function() {
                return this.controllerTitles
            },
            set: function(t) {
                this.controllerTitles = t,
                this.titlesLoaded = !0,
                this.mergeTranslations(),
                this.modelChanged()
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "descriptions", {
            get: function() {
                return this.controllerDescriptions
            },
            set: function(t) {
                this.controllerDescriptions = t,
                t && t.reset || (this.descriptionsLoaded = !0,
                this.mergeTranslations(),
                this.modelChanged())
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.create = function(e) {
            t.prototype.create.call(this, e),
            this.descriptions[e.key] = ""
        }
        ,
        e.prototype.remove = function() {
            var e = this.selectedLanguage;
            e && (delete this.titles[e.key],
            delete this.descriptions[e.key]),
            t.prototype.remove.call(this)
        }
        ,
        e.prototype.getUsedLanguages = function() {
            var e = this
              , n = t.prototype.getUsedLanguages.call(this)
              , i = a.keys(this.descriptions).map((function(t) {
                return e.LanguageService.getLanguage(t)
            }
            ));
            return a.union(n, i)
        }
        ,
        e.prototype.mergeTranslations = function() {
            if (this.titlesLoaded && this.descriptionsLoaded) {
                var t = a.clone(this.controllerTitles);
                a.extend(t, this.controllerDescriptions),
                this.translations = t,
                this.titlesLoaded = !1,
                this.descriptionsLoaded = !1
            }
        }
        ,
        e
    }(n(273).TranslationEditorController);
    e.PoiTranslationEditorController = s;
    var c = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "I18N/TranslationEditor.html",
            this.controller = s,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                titles: "=",
                descriptions: "=",
                colSpan: "@?",
                selectedLanguage: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.PoiTranslationEditorDirective = c,
    o.module("IVWebApp").directive("poiTranslationEditor", c.factory())
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, ".nav-pills-used-langs{padding-left:15px}.nav-pills-used-langs li>a{padding:7px 10px}.nav-pills-lang-controls{margin-top:1px;text-align:right}.nav-pills-lang-controls button{padding:6px 10px}.nav-pills-lang-controls .dropdown-menu{width:220px;left:auto;right:15px}.nav-pills-lang-controls div.dropdown-menu{position:absolute;top:38px;width:210px;height:52px;padding:4px 5px;border-bottom-left-radius:0;border-bottom-right-radius:0}.nav-pills-lang-controls input.dropdown-menu{top:38px;height:34px;width:180px;margin-top:10px;margin-right:10px;padding:0 10px}.nav-pills-lang-controls ul.dropdown-menu{top:90px;max-height:50vw;border-top-left-radius:0;border-top-right-radius:0;border-top-width:0}.nav-pills-lang-controls ul.dropdown-menu a:hover{background-color:inherit}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    function(t) {
        t.CLOSEST_IMAGE = "closest",
        t.CURRENT = "current",
        t.SAVED = "saved"
    }(e.PoiViewConfiguration || (e.PoiViewConfiguration = {}))
}
, function(t, e, n) {
    var i = "SiteModelUI/SiteModelDetails.html"
      , r = '<div ng-if="vm.model"\n     class="panel panel-default no-margin-bottom"\n     ng-class="{\'full-window full-window-scroll element-on-screen-trigger-wrapper\': vm.isFullscreenEnabled(),\n                \'border-radius-top padding-left-menu-icon\': vm.isTopFloatingPanel()}">\n\t<div ng-show="vm.isEntityOpenedFromResultList()"\n\t     class="return-label padding-horizontal">\n\t\t<a ng-click="vm.closeResult()" class="clickable">\n\t\t\t<i class="fa fa-chevron-left" aria-hidden="true"></i>\n\t\t\t<span translate>Return to results</span>\n\t\t</a>\n\t</div>\n\n\t\x3c!--Close Site Model details panel--\x3e\n\t<img class="menu-close-button ic_svg"\n\t     ng-if="vm.PoiService.isRouteMode || vm.isFullscreenEnabled() || !vm.SearchService.isSearchBoxVisible()"\n\t     ng-click="vm.closeResult()"\n\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}">\n\n\t\x3c!-- Heading --\x3e\n\t<div class="panel-heading clear-background">\n\t\t<div class="row">\n\t\t\t<div class="col-xs-12 clickable" ng-click="vm.goToEntity(vm.model)">\n\t\t\t\t\x3c!-- Icon --\x3e\n\t\t\t\t<div class="vcenter">\n\t\t\t\t\t<img ng-src="{{vm.model.getTypeIconWithBg()}}" class="siteModelIcon">\n\t\t\t\t</div>\n\t\t\t\t<div class="vcenter padding-horizontal">\n\t\t\t\t\t\x3c!-- Title --\x3e\n\t\t\t\t\t<h3 class="panel-title long-title no-margin"\n\t\t\t\t\t    title="{{vm.model.name}}">\n\t\t\t\t\t\t<span ng-if="vm.model.type !== \'CUSTOM\'">\n\t\t\t\t\t\t\t{{vm.model.getTypeDisplayName() | translate}}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t{{vm.model.name}}\n\t\t\t\t\t</h3>\n\t\t\t\t\t<site-data entity="vm.model" clickable="true" skip-entity="true"></site-data>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\n\t\x3c!-- Button controls --\x3e\n\t<div class="btn-toolbar poi-btn-toolbar" role="toolbar">\n\t\t<div class="btn-group">\n\t\t\t\x3c!-- Share --\x3e\n\t\t\t<button ng-if="vm.isSharingEnabled()"\n\t\t\t        ng-click="vm.goToEntity(vm.model)"\n\t\t\t        class="btn btn-default no-overflow" type="button" data-toggle="modal"\n\t\t\t        data-target="#site-model-share">\n\t\t\t\t<img class="ic_svg" ng-src="' + n(591) + '"><br>\n\t\t\t\t<span class="btn-description-mobile uppercase" translate>Share</span>\n\t\t\t</button>\n\n\t\t\t\x3c!-- Jump to panorama mode --\x3e\n\t\t\t<button ng-if="vm.canJumpToMainView()"\n\t\t\t        class="btn btn-default no-overflow" type="button"\n\t\t\t        ng-click="vm.goToEntity(vm.model); vm.swapViews()">\n\t\t\t\t<div ng-if="vm.arePanoramasEnabled()">\n\t\t\t\t\t<img class="ic_svg"\n\t\t\t\t\t     ng-src="' + n(426) + '"><br>\n\t\t\t\t\t<span class="btn-description-mobile uppercase" translate>Panorama</span>\n\t\t\t\t</div>\n\t\t\t\t<div ng-if="!vm.arePanoramasEnabled()">\n\t\t\t\t\t<img class="ic_svg" ng-src="' + n(592) + '"><br>\n\t\t\t\t\t<span class="btn-description-mobile uppercase" translate>Point cloud</span>\n\t\t\t\t</div>\n\t\t\t</button>\n\t\t\t\x3c!-- ...or jump to map mode --\x3e\n\t\t\t<button ng-if="vm.canJumpToMapView()"\n\t\t\t        class="btn btn-default no-overflow" type="button"\n\t\t\t        ng-click="vm.goToEntity(vm.model); vm.swapViews()">\n\t\t\t\t<div>\n\t\t\t\t\t<img class="ic_svg" ng-src="' + n(427) + '"><br>\n\t\t\t\t\t<span class="btn-description-mobile uppercase" translate>Map</span>\n\t\t\t\t</div>\n\t\t\t</button>\n\n\t\t\t\x3c!-- Edit --\x3e\n\t\t\t<button ng-if="vm.isEntityEditable()"\n\t\t\t        class="btn btn-default no-overflow" type="button"\n\t\t\t        ng-click="vm.editEntity()">\n\t\t\t\t<img class="ic_svg" ng-src="' + n(593) + '"><br>\n\t\t\t\t<span class="btn-description-mobile uppercase" translate>Edit</span>\n\t\t\t</button>\n\n\t\t\t\x3c!-- Route --\x3e\n\t\t\t<button ng-if="vm.isRoutingEnabled()"\n\t\t\t        class="btn btn-default no-overflow" type="button"\n\t\t\t        ng-click="vm.routeToEntity(vm.model)">\n\t\t\t\t<img class="ic_svg" ng-src="' + n(594) + '"><br>\n\t\t\t\t<span class="btn-description-mobile uppercase" translate>Route</span>\n\t\t\t</button>\n\t\t</div>\n\t</div>\n\n\t<button type="button"\n\t        ng-click="vm.toggleExpandedContent(vm.model)"\n\t        ng-show="vm.canToggleContentExpansion(vm.model)"\n\t        class="btn btn-default btn-showhide-poi-details left-panel-element no-hover-ios">\n\t\t<div ng-if="!vm.isContentExpanded(vm.model)"\n\t\t      class="show-hide-text uppercase" translate>\n\t\t\tShow details\n\t\t</div>\n\t\t<div ng-if="vm.isContentExpanded(vm.model)"\n\t\t      class="show-hide-text uppercase" translate>\n\t\t\tHide details\n\t\t</div>\n\t\t<span class="fa"\n\t\t      ng-class="vm.isContentExpanded(vm.model) ? \'fa-angle-up\' : \'fa-angle-down\'"></span>\n\t</button>\n\n\t<div class="panel-body no-padding"\n\t     ng-show="vm.isContentExpanded(vm.model)">\n\t\t<hr class="no-margin">\n\t\t\x3c!--Dimensions--\x3e\n\t\t<div class="container-fluid no-padding" ng-if="vm.hasDimensions(vm.model)">\n\t\t\t<div class="details-header padding-horizontal">\n\t\t\t\t<strong translate translate-context="title">Dimensions</strong>\n\t\t\t</div>\n\t\t\t<div class="sme-dimensions">\n\t\t\t\t<div class="sme-dimension" ng-if="vm.model.height">\n\t\t\t\t\t<span>{{vm.model.height | uom : vm.MeasurementDomain.DISTANCE : 2 : vm.currentUoMSystem : 0.01}}</span>\n\t\t\t\t\t<p translate>Height</p>\n\t\t\t\t</div>\n\t\t\t\t<div class="sme-dimension" ng-if="vm.model.area">\n\t\t\t\t\t<span>{{vm.model.area | uom : vm.MeasurementDomain.AREA : 0 : vm.currentUoMSystem : 0}}</span>\n\t\t\t\t\t<p translate>Area</p>\n\t\t\t\t</div>\n\t\t\t\t<div class="sme-dimension" ng-if="vm.model.volume">\n\t\t\t\t\t<span>{{vm.model.volume | uom : vm.MeasurementDomain.VOLUME : 0 : vm.currentUoMSystem : 0}}</span>\n\t\t\t\t\t<p translate translate-context="as in the amount of space">Volume</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!--Attributes--\x3e\n\t\t<div class="container-fluid no-padding" ng-if="vm.hasAttributes(vm.model)">\n\t\t\t<div class="details-header padding-horizontal">\n\t\t\t\t<strong translate translate-context="title">Attributes</strong>\n\t\t\t</div>\n\t\t\t<div class="sme-attributes padding-horizontal">\n\t\t\t\t<table class="table">\n\t\t\t\t\t<tbody>\n\t\t\t\t\t\t<tr ng-repeat="(key, value) in vm.model.attributes">\n\t\t\t\t\t\t\t<td class="key-column long-title" title="{{key}}">{{key}}:</td>\n\t\t\t\t\t\t\t<td class="value-column long-title" title="{{value}}">{{value}}</td>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</tbody>\n\t\t\t\t</table>\n\t\t\t</div>\n\t\t</div>\n\t\t\x3c!--POIs--\x3e\n\t\t<div class="container-fluid no-padding" ng-if="vm.pois.length">\n\t\t\t<div class="details-header padding-horizontal">\n\t\t\t\t<strong translate translate-context="title">Points of Interest</strong>\n\t\t\t</div>\n\t\t\t<paging fetch-pages-controller="vm" no-scroll="true">\n\t\t\t\t<div class="sme-pois">\n\t\t\t\t\t<div ng-repeat="poi in vm.pois"\n\t\t\t\t\t     ng-click="vm.goToPoi(poi)"\n\t\t\t\t\t     class="sme-poi col-xs-12 clickable">\n\t\t\t\t\t\t<img ng-src="{{poi.icon}}" class="poiIcon">\n\t\t\t\t\t\t<span class="long-title" title="{{poi.title}}">{{poi.title}}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</paging>\n\t\t</div>\n\t</div>\n\n</div>\n\n<modal>\n\t<site-model-entity-editor model="vm.model" parent-controller="vm" modal-id="editEntityFromDetails"></site-model-entity-editor>\n</modal>\n\n<modal>\n\t<div class="modal fade" id="site-model-share" tabindex="-1" role="dialog"\n\t     aria-labelledby="site-model-share" aria-hidden="true" data-dismiss="modal" x-trigger-cursor-viz>\n\t\t<div class="modal-dialog" ng-if="vm.model">\n\t\t\t<div class="modal-content">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}"\n\t\t\t\t\t     data-dismiss="modal">\n\t\t\t\t\t<h4 translate translate-context="title">Share Location</h4>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t<share-menu share-type="sme"></share-menu>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1342);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, ".z-index-1{box-shadow:none;position:relative;z-index:1}.z-index-2{box-shadow:0 1.5px 4px rgba(0,0,0,.24),0 1.5px 6px rgba(0,0,0,.12);position:relative;z-index:5}.z-index-3{box-shadow:0 3px 12px rgba(0,0,0,.23),0 3px 12px rgba(0,0,0,.16);position:relative;z-index:10}.z-index-4{box-shadow:0 6px 12px rgba(0,0,0,.23),0 10px 40px rgba(0,0,0,.19);position:relative;z-index:15}.z-index-5{box-shadow:0 10px 20px rgba(0,0,0,.22),0 14px 56px rgba(0,0,0,.25);position:relative;z-index:20}.front-element{z-index:1031}.full-window{position:fixed;margin:0;padding:0;left:0;right:0;top:0;bottom:0;z-index:1029;border-radius:0}.full-window-scroll{max-height:100vh}.full-window-scroll,.panel-autoscroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.panel-autoscroll{max-height:80vh}.autoscroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.fixed-top-right{position:fixed;top:10px;right:0}.center-vertical{position:absolute;top:50%;transform:translateY(-50%)}.float-left{float:left}.float-right{float:right}.margin-top-small{margin-top:5px!important}.margin-left-small{margin-left:5px!important}.margin-right-small{margin-right:5px!important}.margin-bottom-small{margin-bottom:5px!important}.margin-top,site-model-details .panel .return-label>*{margin-top:15px!important}.margin-left{margin-left:15px!important}.margin-right{margin-right:15px!important}.margin-bottom{margin-bottom:15px!important}.margin-top-big{margin-top:25px!important}.margin-bottom-big{margin-bottom:25px!important}.no-margin{margin:0!important}.no-margin-bottom{margin-bottom:0!important}.padding-horizontal{padding-left:15px!important;padding-right:15px!important}.padding-top,.padding-vertical{padding-top:15px!important}.padding-bottom,.padding-vertical{padding-bottom:15px!important}.no-padding-top{padding-top:0!important}.no-padding-bottom{padding-bottom:0!important}.no-padding-horizontal,.no-padding-left{padding-left:0!important}.no-padding-horizontal,.no-padding-right{padding-right:0!important}.no-padding{padding:0!important}.border{border:1px solid #e6e6e6}.border-top{border-top:1px solid #e6e6e6}.border-bottom{border-bottom:1px solid #e6e6e6}.border-left{border-left:1px solid #e6e6e6}.border-right{border-right:1px solid #e6e6e6}.no-border{border:none;border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.no-border-width{border:none}.border-radius{border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}.border-radius,.border-radius-top{border-top-left-radius:4px!important;border-top-right-radius:4px!important}.border-radius-bottom{border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}.no-border-radius{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.indoorViewer.ios .no-hover-ios:hover{background-color:inherit!important}.no-shadow{box-shadow:none!important}.clear-background{border:0}.clear-background,.no-background{background:none!important}.no-overflow{overflow:hidden}.clickable,.clickable:hover{cursor:pointer}site-model-details .menu-close-button{z-index:1}site-model-details .details-header{padding-top:10px;padding-bottom:10px;background-color:#f0f0f0;color:#919191;font-size:.9em}site-model-details .panel{border-right:none;border-bottom:none;border-left:none}site-model-details .panel:not(.full-window){position:relative}site-model-details .panel.padding-left-menu-icon .panel-heading,site-model-details .panel.padding-left-menu-icon .return-label{padding-left:50px}site-model-details .panel .return-label>*{display:inline-block}site-model-details .panel .panel-body{padding-left:0;padding-right:0}site-model-details .vcenter{display:inline-block}site-model-details .vcenter.padding-horizontal{line-height:1;width:calc(100% - 37px)}site-model-details .vcenter.padding-horizontal .long-title{line-height:1.3em;width:calc(100% + 15px)}site-model-details .sme-dimensions{padding-top:20px;text-align:center}site-model-details .sme-dimensions .sme-dimension:first-child:last-child,site-model-details .sme-dimensions .sme-dimension:first-child:last-child~.sme-dimension{width:100%}site-model-details .sme-dimensions .sme-dimension:first-child:nth-last-child(2),site-model-details .sme-dimensions .sme-dimension:first-child:nth-last-child(2)~.sme-dimension{width:50%}site-model-details .sme-dimensions .sme-dimension:first-child:nth-last-child(3),site-model-details .sme-dimensions .sme-dimension:first-child:nth-last-child(3)~.sme-dimension{width:33.33333%}site-model-details .sme-dimensions .sme-dimension{float:left}site-model-details .sme-dimensions .sme-dimension p{margin-bottom:20px;text-transform:uppercase;color:#919191;font-size:.8em}site-model-details .sme-attributes{padding-top:10px}site-model-details .sme-attributes table{margin-bottom:10px}site-model-details .sme-attributes table,site-model-details .sme-attributes table>tbody,site-model-details .sme-attributes table>tbody>tr{display:block}site-model-details .sme-attributes td{padding:4px}site-model-details .sme-attributes .key-column{width:33%}site-model-details .sme-attributes .value-column{width:66%}site-model-details .sme-pois>:first-child{margin-top:10px}site-model-details .sme-pois>:last-child{margin-bottom:10px}site-model-details .sme-pois .sme-poi{padding-top:5px;padding-bottom:5px}site-model-details .sme-pois .sme-poi:hover{background-color:#e6e6e6}site-model-details .sme-pois .sme-poi img{display:inline-block;margin-right:5px;min-height:32px}site-model-details .sme-pois .sme-poi .long-title{vertical-align:middle;width:calc(100% - 42px)}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = function() {
        function t() {}
        return t.filter = ["NaturalSortService", function(t) {
            return function(e, n, i) {
                return t.naturalSort(e, n, i)
            }
        }
        ],
        t
    }();
    i.module("IVWebApp").filter("naturalSort", r.filter)
}
, function(t, e) {
    var n = "SiteModelUI/SiteData.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div>\n\t<div ng-show="vm.showEntity(vm.siteData.building)"\n\t     class="long-title">\n\n\t\t<span ng-click="vm.selectModel(vm.siteData.building)"\n\t\t      ng-class="{\'decorateOnHover\': vm.clickable}"\n\t\t      translate translate-params-name="vm.siteData.building.name"\n\t\t      title="{{vm.siteData.building.name}}">\n\t\t\tBuilding: {{name}}\n\t\t</span>\n\t</div>\n\n\t<div ng-show="vm.showEntity(vm.siteData.floor)"\n\t     class="long-title">\n\n\t\t<span ng-show="vm.showEntity(vm.siteData.building)"\n\t\t      class="site-model-separator">\n\t\t\t|\n\t\t</span>\n\t\t<span ng-click="vm.selectModel(vm.siteData.floor)"\n\t\t      ng-class="{\'decorateOnHover\': vm.clickable}"\n\t\t      translate translate-params-name="vm.siteData.floor.name"\n\t\t      title="{{vm.siteData.floor.name}}">\n\t\t\tFloor: {{name}}\n\t\t</span>\n\t</div>\n\n\t<div ng-show="vm.showEntity(vm.siteData.room)"\n\t     class="long-title">\n\n\t\t<span ng-show="vm.showEntity(vm.siteData.building) || vm.showEntity(vm.siteData.floor)"\n\t\t      class="site-model-separator">\n\t\t\t|\n\t\t</span>\n\t\t<span ng-click="vm.selectModel(vm.siteData.room)"\n\t\t      ng-class="{\'decorateOnHover\': vm.clickable}"\n\t\t      translate translate-params-name="vm.siteData.room.name"\n\t\t      title="{{vm.siteData.room.name}}">\n\t\t\tRoom: {{name}}\n\t\t</span>\n\t</div>\n\n\n\t<div ng-show="vm.showEntity(vm.siteData.custom)"\n\t     class="long-title">\n\n\t\t<span ng-show="vm.showEntity(vm.siteData.building) || vm.showEntity(vm.siteData.floor) || vm.showEntity(vm.siteData.room)"\n\t\t      class="site-model-separator">\n\t\t\t|\n\t\t</span>\n\t\t<span ng-click="vm.selectModel(vm.siteData.custom)"\n\t\t      ng-class="{\'decorateOnHover\': vm.clickable}"\n\t\t      title="{{vm.siteData.custom.name}}">\n\t\t\t{{vm.siteData.custom.name}}\n\t\t</span>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1346);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "site-data{font-size:.8em;max-height:1.4em;overflow:hidden}site-data>div{display:flex;margin:2px 0}site-data>div>*{min-width:50px}site-data .decorateOnHover:hover{text-decoration:underline}site-data .long-title{width:auto!important}site-data .long-title .site-model-separator{margin-left:3px}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2);
    n(1348),
    n(1349),
    n(599),
    n(1351);
    var a = function(t) {
        function e(e, n, i, r, o, a, s, c, l, u, d, p, h, f, m) {
            var g = t.call(this, e, n, i, r, o, a, s, c, l, u, d, p, h, f) || this;
            return g.$element = m,
            g.SearchService.resultsList.hideResultsListCallback = function() {
                g.$element.find(".panel-autoscroll").scrollTop(0)
            }
            ,
            g
        }
        return r(e, t),
        e.$inject = ["PoiService", "SiteModelService", "$timeout", "FloorChangerService", "SiteModelSearchRepository", "IV", "UrlService", "SearchService", "GeoTransformationService", "ConfigService", "SidebarMenuService", "SiteModelRepository", "ViewService", "TrackingService", "$element"],
        e.prototype.canDisplayResultsList = function() {
            return this.SearchService.canDisplayResultsList()
        }
        ,
        e.prototype.isResultsListNotEmpty = function() {
            return this.resultsList.results && this.resultsList.results.length > 0
        }
        ,
        e.prototype.isLoadingInProgress = function() {
            return this.resultsList.query && !this.resultsList.results
        }
        ,
        e.prototype.hasFoundResults = function() {
            return this.resultsList.query && this.isResultsListNotEmpty()
        }
        ,
        e.prototype.hasNotFoundResults = function() {
            return this.resultsList.query && this.resultsList.results && 0 === this.resultsList.results.length
        }
        ,
        e.prototype.isRouteMode = function() {
            return this.PoiService.isRouteMode
        }
        ,
        e
    }(n(429).AbstractSearchInputController);
    e.ResultsListController = a;
    var s = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "SearchUI/ResultsList.html",
            this.controller = a,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.ResultsListDirective = s,
    o.module("IVWebApp").directive("resultsList", s.factory())
}
, function(t, e, n) {
    var i = "SearchUI/ResultsList.html"
      , r = '<div id="results-list"\n     class="vertical-menu z-index-2"\n     ng-class="{\'show\': vm.canDisplayResultsList(),\n                \'route-mode\': vm.isRouteMode()}">\n\n\t<div class="vertical-menu-content">\n\t\t\x3c!--Loading in progress spinner--\x3e\n\t\t<div ng-show="vm.isLoadingInProgress()"\n\t\t\t class="spinner">\n\t\t\t<img ng-src="' + n(94) + '">\n\t\t</div>\n\n\t\t\x3c!--Results heading--\x3e\n\t\t<div class="results-heading border-bottom"\n\t\t     ng-show="vm.hasFoundResults()"\n\t\t     translate translate-params-query="vm.resultsList.query">\n\t\t\tResults for \'{{query}}\'\n\t\t</div>\n\n\t\t\x3c!--No results found--\x3e\n\t\t<div class="no-results"\n\t\t\t ng-show="vm.hasNotFoundResults()"\n\t\t     translate translate-params-query="vm.resultsList.query">\n\t\t\tNo results found for \'{{query}}\'\n\t\t</div>\n\n\t\t\x3c!--Results list--\x3e\n\t\t<paging fetch-pages-controller="vm"\n\t\t        ng-if="vm.hasFoundResults()">\n\t\t\t<ul class="list-group">\n\n\t\t\t\t<li ng-repeat="result in vm.resultsList.results"\n\t\t\t\t    class="list-group-item"\n\t\t\t\t    ng-class="{\'clickable\': vm.resultsList.onSelect}"\n\t\t\t\t    ng-click="vm.resultsList.onSelect(result)"\n\t\t\t\t    ng-mouseenter="vm.goToHighlightedResult(result)"\n\t\t\t\t    ng-mouseleave="vm.goToHighlightedResult(undefined)">\n\n\t\t\t\t\t<results-element result="result"></results-element>\n\n\t\t\t\t</li>\n\n\t\t\t</ul>\n\t\t</paging>\n\t</div>\n</div>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1350);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "#results-list{position:absolute;top:0;left:0;background-color:#e6e6e6;opacity:0;transition:transform .2s,top .2s,opacity 0s linear .2s;padding-top:62px}.indoorViewer.desktop #results-list{width:440px;transform:translateX(-100%)}.indoorViewer.desktop #results-list.show{transform:none}.indoorViewer.mobile-small #results-list{width:100%;transform:translateY(100%)}.indoorViewer.mobile-small #results-list.show{transform:none}.indoorViewer.mobile-small #results-list .vertical-menu-content,.indoorViewer.mobile-small #results-list .vertical-menu-heading{min-width:0}.indoorViewer.mobile #results-list{width:100%;transform:translateY(100%)}.indoorViewer.mobile #results-list.show{transform:none}.indoorViewer.mobile #results-list .vertical-menu-content,.indoorViewer.mobile #results-list .vertical-menu-heading{min-width:0}#results-list.show{opacity:1;transition:transform .2s,top .2s,opacity 0s}#results-list.route-mode{padding-top:105px}#results-list.route-mode .vertical-menu-content{height:calc(100% - 105px)}#results-list .panel-autoscroll{height:calc(100% - 53px);max-height:none}#results-list .vertical-menu-content{position:absolute;left:0;right:0;height:calc(100% - 62px);background-color:#fff}#results-list .results-heading{font-size:1.2em;padding:15px;background-color:#fff}#results-list .no-results,#results-list .spinner{margin:15px;text-align:center;overflow-x:hidden}#results-list .results-footer{padding:20px;text-align:center}#results-list .list-group{max-height:none;background-color:#fff;border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}#results-list .list-group .list-group-item{height:68px;padding:0 0 0 15px;border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important;border:none}#results-list .list-group .list-group-item:hover{background-color:#f0f0f0}#results-list .list-group .list-group-item:active{background-color:#e6e6e6}#results-list .list-group .list-group-item .poiIcon,#results-list .list-group .list-group-item .siteModelIcon{margin:15px 15px 15px 0;vertical-align:super}#results-list .list-group .list-group-item .result-info-wrapper{margin:0;height:67px;border-bottom:1px solid #e6e6e6}#results-list .list-group .search-result-header{padding:10px 15px;color:#919191}#results-list .list-group .search-result-header:hover{background:#fff;cursor:default}#results-list .list-group .search-result-header:not(:first-child){position:relative;top:-1px}#results-list .list-group .search-result-header:not(:first-of-type){border-top:1px solid #e6e6e6}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1352),
    n(1353),
    n(1355);
    var r = function() {
        function t() {
            this.noScroll = !1,
            this.currentPage = 0
        }
        return t.prototype.fetchNextPage = function() {
            this.fetchPagesController.areAllPagesFetched() || (this.currentPage += 1,
            this.fetchPagesController.fetchPage(this.currentPage))
        }
        ,
        t.prototype.clear = function() {
            this.currentPage = 0
        }
        ,
        t
    }();
    e.PagingController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "Core/UI/Paging/Paging.html",
            this.controller = r,
            this.controllerAs = "vm",
            this.transclude = {},
            this.scope = !0,
            this.bindToController = {
                fetchPagesController: "=",
                noScroll: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t.prototype.link = function(t, e, n, i) {
            i.fetchPagesController.clearPaging.connect((function() {
                return i.clear()
            }
            ))
        }
        ,
        t
    }();
    e.PagingDirective = o,
    i.module("IVWebApp").directive("paging", o.factory())
}
, function(t, e, n) {
    var i = "Core/UI/Paging/Paging.html"
      , r = '<div ng-class="{\'panel-autoscroll\': !vm.noScroll}"\n     class="element-on-screen-trigger-wrapper">\n\t<div ng-transclude></div>\n\n\t\x3c!--Loading next page spinner--\x3e\n\t<div class="paging-footer"\n\t     ng-if="!vm.fetchPagesController.areAllPagesFetched()"\n\t     element-on-screen-trigger="vm.fetchNextPage()">\n\t\t<img ng-src="' + n(94) + '">\n\t</div>\n</div>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1354);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "paging .paging-footer{display:inline-block;text-align:center;width:100%;height:50px}paging .paging-footer>img{margin-left:auto;margin-right:auto}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(215)
      , o = n(8)
      , a = function() {
        function t(t) {
            this.$timeout = t,
            this.restrict = "A",
            this.lastVisibility = !1
        }
        return t.factory = function() {
            return ["$timeout", function(e) {
                return new t(e)
            }
            ]
        }
        ,
        t.prototype.link = function(e, n, i) {
            var a = this
              , s = n.parents(".element-on-screen-trigger-wrapper")
              , c = n[0]
              , l = function() {
                var n = t.isVisibleOnScreen(c);
                n && n !== a.lastVisibility && e.$eval(i.elementOnScreenTrigger),
                a.lastVisibility = n
            };
            s.bind("scroll", l),
            this.$timeout((function() {
                return r.addResizeEventListener(s[0], l)
            }
            )).catch(o.handleWarning)
        }
        ,
        t.isVisibleOnScreen = function(t) {
            var e = t.getBoundingClientRect();
            if (0 === e.width && 0 === e.height)
                return !1;
            var n = Math.max(document.documentElement.clientHeight, window.innerHeight);
            return !(e.bottom < 0 || e.top - n >= 0)
        }
        ,
        t
    }();
    e.ElementOnScreenTriggerDirective = a,
    i.module("IVWebApp").directive("elementOnScreenTrigger", a.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1357),
    n(1358);
    var r = n(180)
      , o = n(55)
      , a = function() {
        function t() {}
        return t.prototype.isPoi = function() {
            return this.result.resultType === r.SearchResultType.POI
        }
        ,
        t.prototype.isSme = function() {
            return this.result.resultType === r.SearchResultType.SITE_MODEL
        }
        ,
        t.prototype.isCustomSme = function() {
            return this.result.entity.type === o.SiteModelType.CUSTOM
        }
        ,
        t
    }();
    e.ResultsElementController = a;
    var s = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "SearchUI/ResultsElement.html",
            this.controller = a,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                result: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.ResultsElementDirective = s,
    i.module("IVWebApp").directive("resultsElement", s.factory())
}
, function(t, e) {
    var n = "SearchUI/ResultsElement.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '\x3c!-- Result is a POI --\x3e\n<div ng-if="vm.isPoi()">\n\n\t<img ng-src="{{vm.result.icon}}" class="poiIcon">\n\n\t<div class="result-info-wrapper">\n\t\t<div class="result-info">\n\t\t\t\x3c!-- Name --\x3e\n\t\t\t<div ng-bind-html="vm.result.matchingTitle"\n\t\t\t     class="result-search-name long-title"></div>\n\t\t\t\x3c!-- Description --\x3e\n\t\t\t<div class="result-search-description" ng-if="vm.result.matchingDescription">\n\t\t\t\t<span class="long-title"\n\t\t\t\t      ng-bind-html="vm.result.matchingDescription"></span>\n\t\t\t</div>\n\t\t\t\x3c!-- Site model information --\x3e\n\t\t\t<site-data entity="vm.result.fakePoi.siteModelEntity"></site-data>\n\t\t</div>\n\t</div>\n\n</div>\n\n\x3c!-- Result is a SME --\x3e\n<div ng-if="vm.isSme()">\n\n\t<img ng-src="{{vm.result.entity.getTypeIconWithBg()}}" class="siteModelIcon">\n\n\t<div class="result-info-wrapper">\n\t\t<div class="result-info">\n\t\t\t<span class="long-title">\n\t\t\t\t<span ng-if="!vm.isCustomSme()"\n\t\t\t\t      ng-bind-html="vm.result.entity.getTypeDisplayName() | translate"\n\t\t\t\t      class="result-search-name"></span>\n\t\t\t\t\x3c!--Name--\x3e\n\t\t\t\t<span ng-bind-html="vm.result.matchingTitle"\n\t\t\t\t      class="result-search-name"></span>\n\t\t\t\t</span>\n\t\t\t\t\x3c!-- Site model information --\x3e\n\t\t\t\t<div class="result-search-description long-title"\n\t\t\t\t     ng-if="vm.result.matchingDescription">\n\t\t\t\t<span ng-bind-html="vm.result.matchingDescription"></span>\n\t\t\t</div>\n\t\t\t<site-data entity="vm.result.entity" skip-entity="true"></site-data>\n\t\t</div>\n\t</div>\n\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1359);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "results-element .result-info-wrapper{display:inline-block;position:relative;width:calc(100% - 51px);height:60px;margin-top:5px}results-element .result-info-wrapper .result-info{position:absolute;top:50%;transform:translateY(-50%);padding-right:10px;width:100%}results-element .result-info-wrapper .result-info>.long-title{display:block}results-element .result-info-wrapper .result-info .result-search-name{font-size:1.1em;max-height:1.5em;overflow:hidden}results-element .result-info-wrapper .result-info .result-search-description{font-size:.8em;max-height:1.4em;overflow:hidden}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2);
    n(1361),
    n(1362),
    n(603);
    var a = function(t) {
        function e(e, n, i, r, o, a, s, c, l, u, d, p, h, f) {
            return t.call(this, e, n, i, r, o, a, s, c, l, u, d, p, h, f) || this
        }
        return r(e, t),
        e.$inject = ["PoiService", "SiteModelService", "$timeout", "FloorChangerService", "SiteModelSearchRepository", "IV", "UrlService", "SearchService", "GeoTransformationService", "ConfigService", "SidebarMenuService", "SiteModelRepository", "ViewService", "TrackingService"],
        e.prototype.queryChanged = function(e) {
            t.prototype.queryChanged.call(this, e),
            !this.SearchService.selectedResult && e && this.SearchService.closeResult(!1)
        }
        ,
        e
    }(n(429).AbstractSearchInputController);
    e.SearchInputController = a;
    var s = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "SearchUI/SearchInput.html",
            this.controller = a,
            this.controllerAs = "vm"
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.SearchInputDirective = s,
    o.module("IVWebApp").directive("searchInput", s.factory())
}
, function(t, e, n) {
    var i = "SearchUI/SearchInput.html"
      , r = '<div class="search-box border-radius" >\n\t<div class="form">\n\t\t<form name="searchForm">\n\t\t\t<div class="input-group">\n\t\t\t\t<div class="menu-icon-area border-right non-desktop"></div>\n\t\t\t\t\x3c!--Search input--\x3e\n\t\t\t\t<input type="search" class="form-control no-border"\n\t\t\t\t       name="searchInput"\n\t\t\t\t       id="searchInput"\n\t\t\t\t       typeahead-min-length="0"\n\t\t\t\t       ng-model="vm.SearchService.selectedResult"\n\t\t\t\t       typeahead="result as result.title for result in vm.search($viewValue)"\n\t\t\t\t       typeahead-popup-template-url="template/typeahead/result-popup.html"\n\t\t\t\t       typeahead-editable="false"\n\t\t\t\t       typeahead-wait-ms="300"\n\t\t\t\t       placeholder="{{\'Search\'|translate}}"\n\t\t\t\t       typeahead-on-select="vm.manuallySelectResult($item, false, searchForm.searchInput.$viewValue, vm.resultsList.results.length)"\n\t\t\t\t       typeahead-focus-first="false"\n\t\t\t\t       ng-class="{\'padding-left-menu-icon\': vm.SidebarMenuService.isAnyItemVisible(),\n\t\t\t\t                  \'search-box-radius-poi-selected\': vm.SearchService.canDisplayResultDetails()}"\n\t\t\t\t       ng-blur="vm.leaveSearchBox(searchForm.searchInput.$viewValue)"\n\t\t\t\t       clear-button="vm.clearSearchBox(searchForm.searchInput.$viewValue);\n\t\t\t\t                     searchForm.searchInput.$setViewValue(undefined)"\n\t\t\t\t       clear-button-visible="!vm.SearchService.isAnyResultSelected()"\n\t\t\t\t       press-key=\'{ "enter" : "vm.showResultsListByKey(searchForm.searchInput.$viewValue);"\n\t\t\t\t\t\t  , "left": "vm.searchKeyPress(\\"Left\\")"\n\t\t\t\t\t\t  , "up": "vm.searchKeyPress(\\"Up\\")"\n\t\t\t\t\t\t  , "right": "vm.searchKeyPress(\\"Right\\")"\n\t\t\t\t\t\t  , "down": "vm.searchKeyPress(\\"Down\\")"\n\t\t\t\t\t\t  , "esc": "vm.searchKeyPress(\\"esc\\")"\n\t\t\t\t\t\t}\'\n\t\t\t\t       on-change="vm.queryChanged(searchForm.searchInput.$viewValue)"\n\t\t\t\t       on-change-watched="{{searchForm.searchInput.$viewValue}}"\n\t\t\t\t       ng-focus="vm.inputFocused(\'search\')"\n\t\t\t\t       autocomplete="off"\n\t\t\t\t       aria-autocomplete="none"\n\t\t\t\t       loading-indicator="vm.isSearchInProgress()"\n\t\t\t\t       loading-indicator-delay="300">\n\t\t\t\t<span class="input-group-addon"\n\t\t\t\t      ng-class="{\'search-box-radius-poi-selected\': vm.SearchService.canDisplayResultDetails()}">\n\t\t\t\t\t\x3c!--Show results list--\x3e\n\t\t\t\t\t<img class="ic_svg clickable border-left" ng-src="' + n(602) + '" alt="{{\'Search\'|translate}}"\n\t\t\t\t\t     ng-show="!vm.SearchService.canDisplayResultsList() && !vm.SearchService.isAnyResultSelected()"\n\t\t\t\t\t     ng-click="vm.showResultsListByClick(searchForm.searchInput.$viewValue)"\n\t\t\t\t\t     style="padding: 7px 15px"/>\n\t\t\t\t\t\x3c!--Hide results list / Close POI details panel--\x3e\n\t\t\t\t\t<img class="ic_svg clickable"\n\t\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}"\n\t\t\t\t\t     ng-class="vm.enableFeatures.fullScreen && !vm.resultsList.canDisplay() ? \'fixed-top-right front-element\' : \'border-left\'"\n\t\t\t\t\t     ng-show="vm.SearchService.canDisplayResultsList() || vm.SearchService.isAnyResultSelected()"\n\t\t\t\t\t     ng-click="searchForm.searchInput.$setViewValue(\'\'); vm.clickHideResultsButton()"\n\t\t\t\t\t     style="padding: 4px 12px"/>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</form>\n\t</div>\n</div>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1363);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, ".search-box input~.clear-button{visibility:hidden}.search-box input:active~.clear-button,.search-box input:focus~.clear-button{visibility:visible}.search-box{margin:0;background:#fff}.search-box #searchInput{height:42px;padding-bottom:7px;font-size:1.2em;border-top-left-radius:4px!important}.search-box #searchInput.padding-left-menu-icon{padding-left:60px}.search-box #searchInput:not(.search-box-radius-poi-selected){border-bottom-left-radius:4px!important}.search-box #searchInput.loading-indicator-shown{padding-right:67px}.search-box .dropdown-menu{width:100%;transform:translateY(-2px)}.search-box .search-result-header{padding:5px .8em!important;color:#919191;border-bottom:none}.search-box .search-result-header:hover{background:#fff;cursor:default}.search-box i{display:inline-block;margin-left:10px;margin-right:15px;vertical-align:25px}.search-box .input-group{z-index:1}.search-box .input-group>.input-group-addon{padding:0;background-color:#fff;border:none;border-top-right-radius:4px!important}.search-box .input-group>.input-group-addon:not(.search-box-radius-poi-selected){border-bottom-right-radius:4px!important}.search-box .clear-button{right:49px;margin:0 10px}.search-box .loading-indicator{height:22px;position:absolute;top:50%;transform:translateY(-50%);right:84px;z-index:5}.search-box-radius-poi-selected{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.route-box input:focus,.search-box input:focus{outline:none;box-shadow:inherit}.dropdown-menu.dropdown-menu-search-results.dropdown-margin-bottom-extended li.show-results-area{border-bottom:1px solid #e6e6e6}.dropdown-menu.dropdown-menu-search-results li.show-results-area{display:block;padding:15px 20px}.dropdown-menu.dropdown-menu-search-results li.show-results-area img{margin-right:10px}.dropdown-menu.dropdown-menu-search-results li:not(.show-results-area){padding-top:0;padding-bottom:0}.dropdown-menu.dropdown-menu-search-results li:not(.show-results-area) img{margin-right:5px;vertical-align:sub;top:50%;transform:translateY(-50%)}", ""]),
    t.exports = e
}
, function(t, e, n) {
    var i = "SearchUI/TypeaheadTemplates.html"
      , r = '\x3c!--Typeahead popup definition --\x3e\n<script type="text/ng-template" id="template/typeahead/result-popup.html">\n\t<ul class="dropdown-menu dropdown-menu-item-separators dropdown-menu-search-results"\n\t    ng-show="isOpen() && !moveInProgress"\n\t    ng-class="{\'dropdown-margin-bottom-extended\': $parent.vm.dropdownMarginBottomExtended}"\n\t    ng-style="{top: position().top + \'px\', left: position().left + \'px\'}"\n\t    style="display: block;"\n\t    role="listbox"\n\t    aria-hidden="{{!isOpen()}}"\n\t    on-change="$parent.vm.goToHighlightedResult(matches[active].model)"\n\t    on-change-watched="{{active}}">\n\n\t\t<li ng-repeat="match in matches track by $index"\n\t\t    ng-class="{active: isActive($index) }"\n\t\t    class="no-hover-ios"\n\t\t    ng-mouseenter="selectActive($index)"\n\t\t    ng-click="selectMatch($index)"\n\t\t    role="option"\n\t\t    id="{{::match.id}}">\n\n\t\t\t<div typeahead-match\n\t\t\t     index="$index"\n\t\t\t     match="match"\n\t\t\t     query="query"\n\t\t\t     template-url="\'template/typeahead/result.html\'"></div>\n\n\t\t</li>\n\n\t\t\x3c!--Show results area--\x3e\n\t\t<li class="show-results-area long-title"\n\t\t    ng-show="$parent.vm.resultsList"\n\t\t    ng-click=\'$parent.vm.showResultsListByMoreClick(query)\'>\n\n\t\t\t<img class="ic_svg clickable"\n\t\t\t     ng-src="' + n(602) + '"\n\t\t\t     alt="{{\'Search\' | translate}}">\n\n\t\t\t<span translate translate-params-query="query">\n\t\t\t\tMore results for: {{query}}\n\t\t\t</span>\n\t\t</li>\n\t</ul>\n<\/script>\n\n\x3c!-- Typeahead result --\x3e\n<script type="text/ng-template" id="template/typeahead/result.html">\n\t<a tabindex="-1">\n\t\t<results-element result="match.model"></results-element>\n\t</a>\n<\/script>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2);
    n(1366),
    n(1370),
    n(603);
    var a = n(429);
    n(600),
    n(83),
    n(28);
    var s = n(40);
    n(181);
    var c = n(309)
      , l = n(316)
      , u = n(260)
      , d = n(428);
    n(601);
    var p = n(107)
      , h = n(8)
      , f = function(t) {
        function e(e, n, i, r, o, a, c, u, d, p, h, f, m, g, v, y) {
            var b, w = t.call(this, e, n, i, r, o, a, c, u, d, p, h, f, m, g) || this;
            return w.gettextCatalog = v,
            w.RouteService = y,
            w.RoutePoint = l.RoutePoint,
            w.routePoints = ((b = {})[l.RoutePoint.START] = {
                searchText: "",
                searchPromisesInProgress: new Set
            },
            b[l.RoutePoint.END] = {
                searchText: "",
                searchPromisesInProgress: new Set
            },
            b),
            w.isMobileLayout = s.isMobileLayout,
            w
        }
        return r(e, t),
        e.$inject = ["PoiService", "SiteModelService", "$timeout", "FloorChangerService", "SiteModelSearchRepository", "IV", "UrlService", "SearchService", "GeoTransformationService", "ConfigService", "SidebarMenuService", "SiteModelRepository", "ViewService", "TrackingService", "gettextCatalog", "RouteService"],
        Object.defineProperty(e.prototype, "routePointStart", {
            get: function() {
                return this.PoiService.routeStart
            },
            set: function(t) {
                var e = this;
                this.setRoutePoint(t, l.RoutePoint.START).then((function() {
                    return e.selectRoutePOIFromTypeahead(e.routePoints[l.RoutePoint.START].searchText, e.resultsList.results ? e.resultsList.results.length : void 0, l.RoutePoint.START)
                }
                )).catch(h.handleWarning)
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "routePointEnd", {
            get: function() {
                return this.PoiService.routeEnd
            },
            set: function(t) {
                var e = this;
                this.setRoutePoint(t, l.RoutePoint.END).then((function() {
                    return e.selectRoutePOIFromTypeahead(e.routePoints[l.RoutePoint.END].searchText, e.resultsList.results ? e.resultsList.results.length : void 0, l.RoutePoint.END)
                }
                )).catch(h.handleWarning)
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.search = function(e, n, i) {
            var r = this.routePoints[i]
              , o = p.promiseFinally(t.prototype.search.call(this, e, n, i), (function() {
                r && r.searchPromisesInProgress.delete(o)
            }
            ));
            return r && r.searchPromisesInProgress.add(o),
            o
        }
        ,
        e.prototype.inputFocused = function(t) {
            var e = this;
            this.resultsList.onSelect = function(n) {
                e.setRoutePoint(n, t).then((function() {
                    e.selectRoutePOIFromTypeahead(e.resultsList.query, e.resultsList.results.length, l.RoutePoint.START),
                    e.SearchService.hideSearchResultsList()
                }
                )).catch(h.handleWarning)
            }
        }
        ,
        e.prototype.selectRoutePOIFromTypeahead = function(t, e, n) {
            this.SearchService.startRoute(),
            this.TrackingService.trackRoutePointSelection(t, e, n)
        }
        ,
        e.prototype.routeClearSearchBox = function(t, e) {
            this.clearRoutePoint(t),
            this.dismissTypeaheadDropdown(),
            this.TrackingService.trackRouteInputClear(e, t)
        }
        ,
        e.prototype.clearRoutePoint = function(t) {
            var e = this;
            this.routePoints[t].searchPromisesInProgress.clear(),
            this.setRoutePoint(void 0, t).then((function() {
                e.UrlService.resetRouteParameters(),
                e.RouteService.clearStoredRoute(),
                e.SearchService.clearSearchResults()
            }
            )).catch(h.handleWarning)
        }
        ,
        e.prototype.reverseRoute = function() {
            var t = this.PoiService.routeEnd;
            this.PoiService.routeEnd = this.PoiService.routeStart,
            this.PoiService.routeStart = t,
            this.SearchService.startRoute(),
            this.TrackingService.trackRouteReversal(this.PoiService.routeStart, this.PoiService.routeEnd)
        }
        ,
        e.prototype.exitRouteMenu = function() {
            this.RouteService.clear(),
            this.SearchService.selectedResult = void 0,
            this.SearchService.clearSearchResults(),
            this.TrackingService.trackRouteClose()
        }
        ,
        e.prototype.showLastPositionRouteOption = function() {
            return this.RouteService.hasStoredView() && this.RouteService.getStoredImage() !== this.ViewService.mainView.currentImage && !this.PoiService.routeStart && this.PoiService.routeEnd && !e.isCustomPoi(this.PoiService.routeEnd)
        }
        ,
        e.prototype.showCurrentPositionRouteOption = function() {
            return void 0 !== this.ViewService.mainView.currentImage && !this.PoiService.routeStart && e.isCustomPoi(this.PoiService.routeEnd)
        }
        ,
        e.prototype.routeFromLastPosition = function() {
            var t = this.PoiService.getLocationAsPoi(this.RouteService.getStoredImage().globalFloorLocation, !0);
            this.PoiService.routeStart = t,
            this.IV.moveToPoi(t, !0, this.RouteService.getStoredViewDir()).catch(h.handleWarning),
            this.SearchService.startRoute()
        }
        ,
        e.prototype.routeFromCurrentPosition = function() {
            this.PoiService.routeStart = this.PoiService.getLocationAsPoi(this.ViewService.mainView.currentImage.globalFloorLocation, !0),
            this.SearchService.startRoute()
        }
        ,
        e.prototype.isRouteSearchInProgress = function(t) {
            return this.routePoints[t].searchPromisesInProgress.size > 0
        }
        ,
        e.prototype.setRoutePoint = function(t, e) {
            var n = this;
            if (t instanceof c.PoiEntity)
                this.setRoutePois(e, t);
            else {
                if (t instanceof u.PoiSearchEntity)
                    return this.PoiService.getPoiFromSearchResultAsPoi(t.fakePoi).then((function(t) {
                        return n.setRoutePois(e, t)
                    }
                    ));
                t instanceof d.SiteModelSearchEntity ? this.SiteModelService.routeToEntity(t.entity, e) : this.setRoutePois(e, void 0)
            }
            return Promise.resolve()
        }
        ,
        e.prototype.setRoutePois = function(t, e) {
            t === l.RoutePoint.START ? this.PoiService.routeStart = e : t === l.RoutePoint.END && (this.PoiService.routeEnd = e)
        }
        ,
        e.isCustomPoi = function(t) {
            return t && t.isLocationAsPoi && !t.isSiteModelAsPoi
        }
        ,
        e
    }(a.AbstractSearchInputController);
    e.RouteInputsController = f;
    var m = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "SearchUI/RouteInputs.html",
            this.controller = f,
            this.controllerAs = "vm"
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.RouteInputsDirective = m,
    o.module("IVWebApp").directive("routeInputs", m.factory())
}
, function(t, e, n) {
    var i = "SearchUI/RouteInputs.html"
      , r = '<div class="route-box padding-left-menu-icon border-radius">\n\t<div class="form">\n\t\t<div class="col-xs-1 start-end-icons">\n\t\t\t<div class="route-label">\n\t\t\t\t<img class="ic_svg route-point-icon" ng-src="' + n(1367) + '">\n\t\t\t</div>\n\t\t\t<div class="route-label">\n\t\t\t\t<img class="ic_svg route-point-icon" ng-src="' + n(1368) + '">\n\t\t\t</div>\n\t\t</div>\n\t\t<form name="routeForm">\n\t\t\t<div class="input-group col-sm-9 col-xs-8 border-bottom">\n\t\t\t\t\x3c!-- Start route --\x3e\n\t\t\t\t<input type="search" class="form-control route-input route-input-start no-border"\n\t\t\t\t       name="routeStartInput"\n\t\t\t\t       ng-model="vm.routePointStart"\n\t\t\t\t       typeahead="result as result.title for result in vm.search($viewValue, [vm.PoiService.routeEnd.id], vm.RoutePoint.START)"\n\t\t\t\t       typeahead-popup-template-url="template/typeahead/result-popup.html"\n\t\t\t\t       typeahead-editable="false"\n\t\t\t\t       typeahead-wait-ms="300"\n\t\t\t\t       placeholder="{{\'Search or select\'|translate}}"\n\t\t\t\t       typeahead-on-select=\'vm.routePoints[vm.RoutePoint.START].searchText = routeForm.routeStartInput.$viewValue\'\n\t\t\t\t       typeahead-focus-first="false"\n\t\t\t\t       ng-blur="vm.clearSearchResults(true); vm.dismissTypeaheadDropdown(true)"\n\t\t\t\t       clear-button="vm.routeClearSearchBox(vm.RoutePoint.START, routeForm.routeStartInput.$viewValue);\n\t\t\t\t                     routeForm.routeStartInput.$setViewValue(undefined)"\n\t\t\t\t       press-key=\'{ "enter" : "vm.showResultsListByKey(routeForm.routeStartInput.$viewValue)"\n\t\t\t\t\t\t  , "left": "vm.searchKeyPress(\\"Left\\", \\"RoutingStart\\")"\n\t\t\t\t\t\t  , "up": "vm.searchKeyPress(\\"Up\\", \\"RoutingStart\\")"\n\t\t\t\t\t\t  , "right": "vm.searchKeyPress(\\"Right\\", \\"RoutingStart\\")"\n\t\t\t\t\t\t  , "down": "vm.searchKeyPress(\\"Down\\", \\"RoutingStart\\")"\n\t\t\t\t\t\t  , "esc": "vm.searchKeyPress(\\"esc\\", \\"RoutingStart\\")"\n\t\t\t\t\t\t}\'\n\t\t\t\t       on-change="vm.queryChanged(routeForm.routeStartInput.$viewValue)"\n\t\t\t\t       on-change-watched="{{routeForm.routeStartInput.$viewValue}}"\n\t\t\t\t       ng-focus="vm.inputFocused(vm.RoutePoint.START)"\n\t\t\t\t       init-focus\n\t\t\t\t       autocomplete="off"\n\t\t\t\t       aria-autocomplete="none"\n\t\t\t\t       loading-indicator="vm.isRouteSearchInProgress(vm.RoutePoint.START)"\n\t\t\t\t       loading-indicator-delay="300">\n\t\t\t</div>\n\t\t\t<div class="input-group col-sm-9 col-xs-8">\n\t\t\t\t\x3c!-- End route --\x3e\n\t\t\t\t<input type="search" class="form-control route-input route-input-end no-border"\n\t\t\t\t       name="routeEndInput"\n\t\t\t\t       ng-model="vm.routePointEnd"\n\t\t\t\t       typeahead="result as result.title for result in vm.search($viewValue, [vm.PoiService.routeStart.id], vm.RoutePoint.END)"\n\t\t\t\t       typeahead-popup-template-url="template/typeahead/result-popup.html"\n\t\t\t\t       typeahead-editable="false"\n\t\t\t\t       typeahead-wait-ms="300"\n\t\t\t\t       placeholder="{{\'Search or select\'|translate}}"\n\t\t\t\t       typeahead-on-select=\'vm.routePoints[vm.RoutePoint.END].searchText = routeForm.routeEndInput.$viewValue\'\n\t\t\t\t       typeahead-focus-first="false"\n\t\t\t\t       ng-blur="vm.clearSearchResults(true); vm.dismissTypeaheadDropdown(true)"\n\t\t\t\t       clear-button="vm.routeClearSearchBox(vm.RoutePoint.END, routeForm.routeEndInput.$viewValue);\n\t\t\t\t                     routeForm.routeEndInput.$setViewValue(undefined)"\n\t\t\t\t       press-key=\'{ "enter" : "vm.showResultsListByKey(routeForm.routeEndInput.$viewValue)"\n\t\t\t\t\t\t  , "left": "vm.searchKeyPress(\\"Left\\", \\"RoutingEnd\\")"\n\t\t\t\t\t\t  , "up": "vm.searchKeyPress(\\"Up\\", \\"RoutingEnd\\")"\n\t\t\t\t\t\t  , "right": "vm.searchKeyPress(\\"Right\\", \\"RoutingEnd\\")"\n\t\t\t\t\t\t  , "down": "vm.searchKeyPress(\\"Down\\", \\"RoutingEnd\\")"\n\t\t\t\t\t\t  , "esc": "vm.searchKeyPress(\\"esc\\", \\"RoutingEnd\\")"\n\t\t\t\t\t\t}\'\n\t\t\t\t       on-change="vm.queryChanged(routeForm.routeEndInput.$viewValue)"\n\t\t\t\t       on-change-watched="{{routeForm.routeEndInput.$viewValue}}"\n\t\t\t\t       ng-focus="vm.inputFocused(vm.RoutePoint.END)"\n\t\t\t\t       autocomplete="off"\n\t\t\t\t       aria-autocomplete="none"\n\t\t\t\t       loading-indicator="vm.isRouteSearchInProgress(vm.RoutePoint.END)"\n\t\t\t\t       loading-indicator-delay="300">\n\t\t\t</div>\n\t\t</form>\n\n\t\t\x3c!-- Reverse route --\x3e\n\t\t<button title="{{\'Reverse route\'|translate}}" class="btn btn-default btn-reverse-route no-border border-left no-hover-ios"\n\t\t        type="button"\n\t\t        ng-click="vm.reverseRoute()">\n\t\t\t<img class="ic_svg" ng-src="' + n(1369) + '" alt="{{\'Reverse route\'|translate}}"><br>\n\t\t</button>\n\t</div>\n\n\t\x3c!-- Close Route Menu and end route --\x3e\n\t<button title="{{\'Close\'|translate}}" class="btn btn-default btn-close no-border border-left" type="button"\n\t        ng-click="vm.exitRouteMenu()">\n\t\t<img class="ic_svg" ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}" ><br>\n\t</button>\n\n\t<div ng-if="vm.showLastPositionRouteOption() && (!routeForm.routeStartInput.$viewValue || !routeForm.routeEndInput.$viewValue)"\n\t     ng-click="vm.routeFromLastPosition()"\n\t     class="clickable padding-bottom route-last-position">\n\t\t<hr>\n\t\t<img class="ic_svg" ng-src="' + n(604) + '">\n\t\t<span translate class="padding-horizontal">Route from last position</span>\n\t</div>\n\n\t<div ng-if="vm.showCurrentPositionRouteOption() && (!routeForm.routeStartInput.$viewValue || !routeForm.routeEndInput.$viewValue)"\n\t     ng-click="vm.routeFromCurrentPosition()"\n\t     class="clickable padding-bottom route-last-position">\n\t\t<hr>\n\t\t<img class="ic_svg" ng-src="' + n(604) + '">\n\t\t<span translate class="padding-horizontal">Route from current position</span>\n\t</div>\n</div>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    t.exports = n.p + "c92fe8d9c097b56fe0806cf817994474.ic_route_start.svg"
}
, function(t, e, n) {
    t.exports = n.p + "f167ee26571eca6e112bd482b490a856.ic_route_end.svg"
}
, function(t, e, n) {
    t.exports = n.p + "46619d5209db0bf45a4fe212b66b5520.ic_swap_targets_grey.svg"
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1371);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, ".route-box{background:#fff;width:100%;margin:0;padding-left:10px}.route-box.padding-left-menu-icon{padding-left:50px}.route-box input{box-shadow:none;background:transparent;border-radius:0}.route-box input.loading-indicator-shown{padding-right:87px}.route-box .form{position:relative}.route-box .form .start-end-icons{width:30px}.route-box .dropdown-menu{left:-80px!important;width:420px;max-width:calc(100vw - 20px);margin-top:-2px}.route-box .search-result-header{padding:5px .8em!important;color:#919191;border-bottom:none}.route-box .search-result-header:hover{background:#fff;cursor:default}.route-box i{display:inline-block;margin-left:10px;margin-right:15px;vertical-align:25px}.route-box .route-point-icon{width:15px;max-height:20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);top:53%}.route-box .route-input{height:42px}.route-box .route-input-start+.dropdown-menu{top:200%!important}.route-box .clear-button{right:20px;margin:0 10px}.route-box .clear-button-padding{padding-right:45px}.route-box .loading-indicator{height:22px;position:absolute;top:50%;transform:translateY(-50%);right:55px;z-index:5}.route-box .btn-close{padding-left:12px;padding-right:12px;z-index:4;background-color:transparent;border:none;border-top-right-radius:4px!important;border-bottom-left-radius:4px!important}.route-box .btn-close:active,.route-box .btn-close:hover{background-color:#e6e6e6}.route-box .btn-reverse-route{position:absolute;right:40px;bottom:28px;padding:4px 10px;max-height:none;background-color:#fff;z-index:3;border:none;border-top-left-radius:4px!important;border-top-right-radius:4px!important;border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}.route-box .btn-reverse-route:active,.route-box .btn-reverse-route:hover{background-color:#e6e6e6}.route-box .route-last-position{margin-left:-50px;border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}.route-box .route-last-position hr{margin-top:0}.route-box .route-last-position img{padding-left:14px}.route-box .route-last-position:active,.route-box .route-last-position:hover{background-color:#e6e6e6}.route-label{height:3em;position:relative;width:100%}.route-label>span{position:absolute;top:50%;transform:translateY(-50%);color:#9b9b9b}", ""]),
    t.exports = e
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1373);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, ".z-index-1{box-shadow:none;position:relative;z-index:1}.z-index-2{box-shadow:0 1.5px 4px rgba(0,0,0,.24),0 1.5px 6px rgba(0,0,0,.12);position:relative;z-index:5}.z-index-3{box-shadow:0 3px 12px rgba(0,0,0,.23),0 3px 12px rgba(0,0,0,.16);position:relative;z-index:10}.z-index-4{box-shadow:0 6px 12px rgba(0,0,0,.23),0 10px 40px rgba(0,0,0,.19);position:relative;z-index:15}.z-index-5{box-shadow:0 10px 20px rgba(0,0,0,.22),0 14px 56px rgba(0,0,0,.25);position:relative;z-index:20}.front-element{z-index:1031}.full-window{position:fixed;margin:0;padding:0;left:0;right:0;top:0;bottom:0;z-index:1029;border-radius:0}.full-window-scroll{max-height:100vh}.full-window-scroll,.panel-autoscroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.panel-autoscroll{max-height:80vh}.autoscroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.fixed-top-right{position:fixed;top:10px;right:0}.center-vertical{position:absolute;top:50%;transform:translateY(-50%)}.float-left{float:left}.float-right{float:right}.margin-top-small{margin-top:5px!important}.margin-left-small{margin-left:5px!important}.margin-right-small{margin-right:5px!important}.margin-bottom-small{margin-bottom:5px!important}.margin-top,left-panel .poi-details-box #poi-details-panel .return-label>*{margin-top:15px!important}.margin-left{margin-left:15px!important}.margin-right{margin-right:15px!important}.margin-bottom{margin-bottom:15px!important}.margin-top-big{margin-top:25px!important}.margin-bottom-big{margin-bottom:25px!important}.no-margin{margin:0!important}.no-margin-bottom{margin-bottom:0!important}.padding-horizontal{padding-left:15px!important;padding-right:15px!important}.padding-top,.padding-vertical{padding-top:15px!important}.padding-bottom,.padding-vertical{padding-bottom:15px!important}.no-padding-top{padding-top:0!important}.no-padding-bottom{padding-bottom:0!important}.no-padding-horizontal,.no-padding-left{padding-left:0!important}.no-padding-horizontal,.no-padding-right{padding-right:0!important}.no-padding{padding:0!important}.border{border:1px solid #e6e6e6}.border-top,left-panel .poi-extensions-box>*>*{border-top:1px solid #e6e6e6}.border-bottom{border-bottom:1px solid #e6e6e6}.border-left{border-left:1px solid #e6e6e6}.border-right{border-right:1px solid #e6e6e6}.no-border{border:none;border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.no-border-width{border:none}.border-radius{border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}.border-radius,.border-radius-top{border-top-left-radius:4px!important;border-top-right-radius:4px!important}.border-radius-bottom{border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}.no-border-radius,left-panel .poi-extensions-box>*>*{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.indoorViewer.ios .no-hover-ios:hover{background-color:inherit!important}.no-shadow{box-shadow:none!important}.clear-background{border:0}.clear-background,.no-background{background:none!important}.no-overflow{overflow:hidden}.clickable,.clickable:hover{cursor:pointer}left-panel .threeD-overlay{width:calc(100% - 20px);max-width:420px;position:absolute;margin:10px}left-panel .poi-extensions-box{max-height:calc(100vh - 62px)}.indoorViewer.mobile-small left-panel .poi-extensions-box,.indoorViewer.mobile left-panel .poi-extensions-box{max-height:calc(80vh - 62px)}left-panel .poi-extensions-box>*>*{border-right:none;border-bottom:none;border-left:none}left-panel .poi-details-box #poi-details-panel{position:relative;margin-bottom:0}left-panel .poi-details-box #poi-details-panel.padding-left-menu-icon .panel-heading,left-panel .poi-details-box #poi-details-panel.padding-left-menu-icon .return-label{padding-left:50px!important}left-panel .poi-details-box #poi-details-panel.full-window{position:fixed}left-panel .poi-details-box #poi-details-panel .menu-close-button{z-index:1}left-panel .poi-details-box #poi-details-panel .return-label>*{display:inline-block}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1375);
    var r = n(40)
      , o = function() {
        function t(t, e, n, i) {
            this.LicenseService = t,
            this.ModeService = e,
            this.SearchService = n,
            this.ViewService = i
        }
        return t.$inject = ["LicenseService", "ModeService", "SearchService", "ViewService"],
        t.prototype.isLicenseInvalid = function() {
            return this.LicenseService.licenseFetched && !this.LicenseService.isLicenseValid
        }
        ,
        t.prototype.isTopFloatingLicensePanel = function() {
            return !this.SearchService.isSearchBoxVisible() && !this.SearchService.canDisplayResultDetails() && !this.isMobilePanoramaView()
        }
        ,
        t.prototype.isMobilePanoramaView = function() {
            return r.isMobileLayout() && this.ViewService.isPanoPrimaryView()
        }
        ,
        t
    }();
    e.InvalidLicenseWarningController = o;
    var a = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "LicenseWarning/InvalidLicenseWarning.html",
            this.controller = o,
            this.controllerAs = "vm",
            this.scope = {}
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.InvalidLicenseDirective = a,
    i.module("IVWebApp").directive("invalidLicenseWarning", a.factory())
}
, function(t, e) {
    var n = "LicenseWarning/InvalidLicenseWarning.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div ng-show="vm.isLicenseInvalid() && vm.ModeService.isNormalMode()"\n     class="alert alert-danger iv-panel-warning z-index-3"\n     ng-class="vm.isTopFloatingLicensePanel() ? \'margin-top-no-search-box\' : \'margin-top\'">\n\t<span class="fa fa-exclamation-triangle" aria-hidden="true"></span>\n\t<div>\n\t\t<strong translate>\n\t\t\tInvalid instance key!\n\t\t</strong>\n\t\t<span translate ng-if="vm.LicenseService.isLicenseExpired()">\n\t\t\tThe existing instance key is either not yet valid or has expired.\n\t\t</span>\n\t\t<span translate ng-if="vm.LicenseService.isLicenseAreaExceeded()">\n\t\t\tThe licensed area is smaller than the hosted area.\n\t\t</span>\n\t\t<span translate ng-if="vm.LicenseService.isLicenseSignatureInvalid()">\n\t\t\tThe license signature is invalid.\n\t\t</span>\n\t\t<span translate ng-if="vm.LicenseService.isLicenseRegisteredUsersExceeded()">\n\t\t\tThere are more registered users than the instance key allows.\n\t\t</span>\n\t\t<span translate>\n\t\t\tPlease contact your service provider to get a valid instance key.\n\t\t</span>\n\t</div>\n</div>')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = function() {
        function t(e, n, i, r) {
            if (!t.setFunctionPatched) {
                t.setFunctionPatched = !0;
                var o = r.__proto__.$set;
                r.__proto__.$set = function(t, n, i, r) {
                    return "src" !== t || (n = e.expandUploadedContentUrl(n)),
                    o.apply(this, [t, n, i, r])
                }
            }
        }
        return t.$inject = ["ContentService", "$scope", "$element", "$attrs"],
        t.setFunctionPatched = !1,
        t
    }();
    e.ImageController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.priority = 99,
            this.controller = r
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.ImageDirective = o,
    i.module("IVWebApp").directive("img", o.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(8)
      , o = function() {
        function t(t, e, n) {
            e.$watch((function() {
                return n.onChangeWatched
            }
            ), (function(i, o) {
                i !== o && t((function() {
                    return e.$eval(n.onChange)
                }
                )).catch(r.handleWarning)
            }
            ))
        }
        return t.$inject = ["$timeout", "$scope", "$attrs"],
        t
    }();
    e.OnChangeController = o;
    var a = function() {
        function t() {
            this.restrict = "A",
            this.controller = o
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.OnChangeDirective = a,
    i.module("IVWebApp").directive("onChange", a.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = function() {
        function t() {}
        return t.filter = function() {
            return function(t) {
                return t.slice().reverse()
            }
        }
        ,
        t
    }();
    i.module("IVWebApp").filter("reverse", r.filter)
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(7)
      , o = n(8)
      , a = function() {
        function t(t, e, n, i, r) {
            var o = this;
            this.$timeout = t,
            this.$scope = e,
            this.$element = n;
            var a = i.optionsDisabled.match(/^\s*(.+)\s+for\s+(.+)\s+in\s+(.+)?\s*/)
              , s = a[3]
              , c = r(a[1]);
            e.$watch(s, (function(t) {
                t && o.disableOptions(a[2], t, c)
            }
            ), !0),
            e.$watch(i.ngModel, (function(t) {
                var n = r(s)(e);
                t && o.disableOptions(a[2], n, c)
            }
            ))
        }
        return t.$inject = ["$timeout", "$scope", "$element", "$attrs", "$parse"],
        t.prototype.disableOptions = function(t, e, n) {
            var a = this;
            e && this.$timeout((function() {
                var o = 0;
                r.forEach(a.$element.find("option"), (function(r) {
                    var s = i.element(r);
                    if ("" !== s.val() && "?" !== s.val()) {
                        var c = {};
                        c[t] = e[o],
                        s.attr("disabled", n(a.$scope, c)),
                        ++o
                    }
                }
                ))
            }
            )).catch(o.handleWarning)
        }
        ,
        t
    }();
    e.OptionsDisabledController = a;
    var s = function() {
        function t() {
            this.priority = 0,
            this.require = "ngModel",
            this.controller = a
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.OptionsDisabledDirective = s,
    i.module("IVWebApp").directive("optionsDisabled", s.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(215)
      , o = n(8)
      , a = function() {
        function t(t, e, n, i) {
            var a = this;
            this.$scope = t,
            this.$timeout = e,
            this.$attrs = n,
            this.delay = this.$attrs.delay || 0,
            e((function() {
                return r.addResizeEventListener(i[0], (function() {
                    return a.resizeFn()
                }
                ))
            }
            )).catch(o.handleWarning)
        }
        return t.$inject = ["$scope", "$timeout", "$attrs", "$element"],
        t.prototype.resizeFn = function() {
            var t = this;
            this.$timeout((function() {
                t.$scope.$apply((function() {
                    t.$scope.$eval(t.$attrs.resizeEvent)
                }
                ))
            }
            ), this.delay).catch(o.handleWarning)
        }
        ,
        t
    }();
    e.ResizeEventController = a;
    var s = function() {
        function t() {
            this.restrict = "A",
            this.controller = a
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.ResizeEventDirective = s,
    i.module("IVWebApp").directive("resizeEvent", s.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i, r = n(2), o = n(215), a = n(347);
    !function(t) {
        t.LEFT = "left",
        t.RIGHT = "right",
        t.TOP = "top",
        t.BOTTOM = "bottom"
    }(i || (i = {}));
    var s = function() {
        function t(t, e, n) {
            var i = this;
            this.$element = t,
            this.$document = e,
            this.TrackingService = n,
            this.RESIZING_CLASS = "resizing",
            this.COLLAPSED_CLASS = "collapsed",
            this.WIDTH_PROPERTY = "width",
            this.HEIGHT_PROPERTY = "height",
            this.isResizing = !1,
            this.$element.on("mousedown", (function() {
                return i.onMouseDown()
            }
            )),
            this.$element.on("touchstart", (function() {
                return i.collapse()
            }
            )),
            this.$document.on("mousemove", (function(t) {
                return i.onMouseMove(t)
            }
            )).on("mouseup", (function() {
                return i.onMouseUp()
            }
            )),
            o.addResizeEventListener(this.$element.parent()[0], (function() {
                return i.defineCollapsedClass()
            }
            )),
            window.addEventListener("resize", (function() {
                return i.expandOrCollapse()
            }
            ), !1)
        }
        return t.$inject = ["$element", "$document", "TrackingService"],
        t.prototype.onMouseDown = function() {
            this.isResizing = !0,
            this.$element.addClass(this.RESIZING_CLASS),
            this.$element.parent().addClass(this.RESIZING_CLASS)
        }
        ,
        t.prototype.onMouseMove = function(t) {
            if (this.isResizing) {
                var e = this.$element.parent()[0].getBoundingClientRect();
                this.isHorizontal() ? this.resizeHorizontally(t.clientX, e) : this.resizeVertically(t.clientY, e)
            }
        }
        ,
        t.prototype.onMouseUp = function() {
            this.isResizing && (this.isResizing = !1,
            this.$element.removeClass(this.RESIZING_CLASS),
            this.$element.parent().removeClass(this.RESIZING_CLASS),
            void 0 !== this.collapsedSize() && void 0 !== this.minExpandedSize && this.expandOrCollapse())
        }
        ,
        t.prototype.resizeHorizontally = function(t, e) {
            var n = this.direction === i.LEFT ? e.right - t : t - e.left;
            this.$element.parent().css(this.WIDTH_PROPERTY, n + "px")
        }
        ,
        t.prototype.resizeVertically = function(t, e) {
            var n = this.direction === i.TOP ? e.bottom - t : t - e.top;
            this.$element.parent().css(this.HEIGHT_PROPERTY, n + "px")
        }
        ,
        t.prototype.expandOrCollapse = function() {
            var t = this.isHorizontal() ? this.$element.parent().width() : this.$element.parent().height()
              , e = t <= this.collapseThreshold() ? this.collapsedSize() : Math.max(t, this.minExpandedSize());
            this.TrackingService.trackPreDefinedEvent((new a.ToolbarVisibilityChangedEvent).visible(e > this.collapsedSize()).withNewWidth(e)),
            this.$element.parent().css(this.getSizeAttribute(), e + "px")
        }
        ,
        t.prototype.collapse = function() {
            this.$element.parent().css(this.getSizeAttribute(), this.collapsedSize() + "px")
        }
        ,
        t.prototype.defineCollapsedClass = function() {
            (this.isHorizontal() ? this.$element.parent().width() : this.$element.parent().height()) <= this.collapseThreshold() ? (this.$element.parent().addClass(this.COLLAPSED_CLASS),
            this.isCollapsed = !0) : (this.$element.parent().removeClass(this.COLLAPSED_CLASS),
            this.isCollapsed = !1)
        }
        ,
        t.prototype.isHorizontal = function() {
            return this.direction === i.LEFT || this.direction === i.RIGHT
        }
        ,
        t.prototype.getSizeAttribute = function() {
            return this.isHorizontal() ? this.WIDTH_PROPERTY : this.HEIGHT_PROPERTY
        }
        ,
        t
    }();
    e.ResizeHandlerController = s;
    var c = function() {
        function t() {
            this.restrict = "A",
            this.controller = s,
            this.bindToController = {
                isCollapsed: "=",
                direction: "=",
                collapseThreshold: "=",
                collapsedSize: "=",
                minExpandedSize: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.ResizeHandlerDirective = c,
    r.module("IVWebApp").directive("resizeHandler", c.factory())
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var i = n(2)
          , r = n(128)
          , o = n(8)
          , a = function() {
            function e(e, i, o, a, s) {
                var c = this;
                this.$timeout = e,
                this.$scope = i,
                this.$element = o,
                this.$attrs = a,
                this.clearButtonClasses = "ic_svg clear-button",
                this.clearButtonSrc = n(1383),
                this.callback = this.$attrs.clearButton || "",
                this.HIDE_CLASS = "hide";
                var l = a.clearButtonVisible || !0
                  , u = t('<img class="' + this.clearButtonClasses + '" ng-src="' + this.clearButtonSrc + '" ng-show="' + l + '">');
                this.clearButton = s(u)(i),
                o.parent().append(this.clearButton),
                o.addClass("clear-button-padding"),
                i.$watch((function() {
                    return o.val()
                }
                ), (function(t) {
                    t ? c.clearButton.removeClass(c.HIDE_CLASS) : c.clearButton.addClass(c.HIDE_CLASS)
                }
                )),
                r(this.clearButton[0]).on("tap", (function() {
                    return c.onTap()
                }
                ))
            }
            return e.$inject = ["$timeout", "$scope", "$element", "$attrs", "$compile"],
            e.prototype.onTap = function() {
                var t = this;
                this.$element.val(""),
                this.clearButton.addClass(this.HIDE_CLASS),
                this.$timeout((function() {
                    t.$scope.$eval(t.callback),
                    t.$element.focus()
                }
                )).catch(o.handleWarning)
            }
            ,
            e
        }();
        e.ClearButtonController = a;
        var s = function() {
            function t() {
                this.restrict = "A",
                this.controller = a
            }
            return t.factory = function() {
                return function() {
                    return new t
                }
            }
            ,
            t
        }();
        e.ClearButtonDirective = s,
        i.module("IVWebApp").directive("clearButton", s.factory())
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    t.exports = n.p + "28893daf75fa13ecd3eca1e669de82ea.icn_clear_input_grey.svg"
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = function() {
        function t(t, e, n) {
            var i = this;
            this.keys = {
                Enter: "enter",
                Escape: "esc",
                ArrowLeft: "left",
                ArrowUp: "up",
                ArrowRight: "right",
                ArrowDown: "down"
            },
            t.bind("keydown keypress", (function(t) {
                var r = i.keys[t.key];
                if (r && !t.shiftKey && !t.ctrlKey && !t.metaKey) {
                    var o = JSON.parse(e.pressKey);
                    n.$apply((function() {
                        n.$eval(o[r] + "(" + o.data + ")")
                    }
                    )),
                    "left" !== r && "right" !== r && t.preventDefault()
                }
            }
            ))
        }
        return t.$inject = ["$element", "$attrs", "$scope"],
        t
    }();
    e.PressKeyController = r;
    var o = function() {
        function t() {
            this.controller = r
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.PressKeyDirective = o,
    i.module("IVWebApp").directive("pressKey", o.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(347)
      , o = function() {
        function t(t, e) {
            var n = this;
            this.$element = t,
            this.TrackingService = e,
            t.on("click", (function() {
                return n.onClick()
            }
            )),
            window.addEventListener("resize", (function() {
                return n.$onInit()
            }
            ), !1)
        }
        return t.$inject = ["$element", "TrackingService"],
        t.prototype.$onInit = function() {
            this.previousSize = this.expandedSize()
        }
        ,
        t.prototype.onClick = function() {
            var t = "horizontal" === this.direction ? this.toggleHorizontally() : this.toggleVertically();
            this.defineCollapsedClass(t),
            this.TrackingService.trackPreDefinedEvent((new r.ToolbarVisibilityChangedEvent).visible(t > this.collapsedSize()).withNewWidth(t))
        }
        ,
        t.prototype.toggleHorizontally = function() {
            var t = this.computeSize(this.$element.parent().width());
            return this.$element.parent().css("width", t + "px"),
            t
        }
        ,
        t.prototype.toggleVertically = function() {
            var t = this.computeSize(this.$element.parent().height());
            return this.$element.parent().css("height", t + "px"),
            t
        }
        ,
        t.prototype.computeSize = function(t) {
            var e = t <= this.collapsedSize() ? this.previousSize : this.collapsedSize();
            return e === this.collapsedSize() && (this.previousSize = Math.max(t, this.expandedSize())),
            e
        }
        ,
        t.prototype.defineCollapsedClass = function(t) {
            t <= this.collapsedSize() ? this.$element.parent().addClass("collapsed") : this.$element.parent().removeClass("collapsed")
        }
        ,
        t
    }();
    e.ExpandHandlerController = o;
    var a = function() {
        function t() {
            this.restrict = "A",
            this.controller = o,
            this.bindToController = {
                direction: "=",
                collapsedSize: "=",
                expandedSize: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.ExpandHandlerDirective = a,
    i.module("IVWebApp").directive("expandHandler", a.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(8)
      , o = function() {
        function t(t, e, n, i) {
            e.controller("ngModel").$parsers.unshift((function(t) {
                return i((function() {
                    return e[0].focus()
                }
                )).catch(r.handleWarning),
                t
            }
            ))
        }
        return t.$inject = ["$scope", "$element", "$attrs", "$timeout"],
        t
    }();
    e.KeepFocusController = o;
    var a = function() {
        function t() {
            this.restrict = "A",
            this.require = "ngModel",
            this.controller = o
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.KeepFocusDirective = a,
    i.module("IVWebApp").directive("keepFocus", a.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(40)
      , o = n(8)
      , a = function() {
        function t(t, e, n) {
            this.$timeout = t,
            this.$element = e;
            var i = n.initFocus;
            if (!r.isMobileBrowser() || i) {
                var o = e.parents(".modal");
                o.length ? this.initFocusOnElementInModal(o) : this.initFocusOnElement()
            }
        }
        return t.$inject = ["$timeout", "$element", "$attrs"],
        t.prototype.initFocusOnElementInModal = function(t) {
            var e = this;
            t.bind("shown.bs.modal", (function() {
                return e.focusElement()
            }
            ))
        }
        ,
        t.prototype.initFocusOnElement = function() {
            var t = this;
            this.$timeout((function() {
                return t.focusElement()
            }
            )).catch(o.handleWarning)
        }
        ,
        t.prototype.focusElement = function() {
            var t = this.$element[0];
            t.readOnly || t.disabled || this.$element[0].focus()
        }
        ,
        t
    }();
    e.InitFocusController = a;
    var s = function() {
        function t() {
            this.controller = a
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.InitFocusDirective = s,
    i.module("IVWebApp").directive("initFocus", s.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(54),
    n(1389),
    n(1390),
    n(1400);
    var r = n(25)
      , o = n(8)
      , a = n(40)
      , s = function() {
        function t(t, e, n, i, r, o, a, s, c, l, u, d, p, h, f, m, g, v, y, b, w, S, x) {
            this.ViewService = t,
            this.SidebarMenuService = e,
            this.ConfigService = n,
            this.ModeService = i,
            this.GeoTransformationService = r,
            this.FloorChangerService = o,
            this.PointCloudMenuService = a,
            this.TrackingService = s,
            this.$location = c,
            this.SearchService = l,
            this.PoiService = u,
            this.LicenseService = d,
            this.IV = p,
            this.UserModule = h,
            this.DatasetsModule = f,
            this.ViewModule = m,
            this.PoiTypesModule = g,
            this.MeasurementsModule = v,
            this.EditorModesModule = y,
            this.ShareModule = b,
            this.SettingsModule = w,
            this.CloudProcessingModule = S,
            this.DeveloperModule = x,
            this.mainViewDeferred = this.ViewService.mainViewDeferred,
            this.mapViewDeferred = this.ViewService.mapViewDeferred,
            this.mapZoomFactor = 2,
            this.mapZoomDuration = 200
        }
        return t.$inject = ["ViewService", "SidebarMenuService", "ConfigService", "ModeService", "GeoTransformationService", "FloorChangerService", "PointCloudMenuService", "TrackingService", "$location", "SearchService", "PoiService", "LicenseService", "IV", "UserModule", "DatasetsModule", "ViewModule", "PoiTypesModule", "MeasurementsModule", "EditorModesModule", "ShareModule", "SettingsModule", "CloudProcessingModule", "DeveloperModule"],
        t.prototype.zoomMapView = function(t) {
            this.ViewService.mapView.zoomMap(t ? 1 / this.mapZoomFactor : this.mapZoomFactor, this.mapZoomDuration),
            this.TrackingService.trackMapZoom(t)
        }
        ,
        t.prototype.swapScenes = function() {
            this.ViewService.swapViews()
        }
        ,
        t.prototype.resizeViewHandler = function() {
            var t = this;
            this.ConfigService.initialized.then((function() {
                a.isMobileLayout() || t.SidebarMenuService.itemsVisibilityUpdated.emit(),
                a.isMobileLayout() && !t.$location.search().image && t.ModeService.isNormalMode() && t.ViewService.getPrimaryView() !== t.ConfigService.getString(r.Configs.CORE_INIT_VIEW_MOBILE) && t.ViewService.swapViews()
            }
            )).catch(o.handleWarning)
        }
        ,
        t.prototype.fixCursor = function() {
            "pointer" === document.body.style.cursor && (document.body.style.cursor = "default")
        }
        ,
        t.prototype.isPreviewMenuVisible = function() {
            var t = this.SearchService.canDisplayResultDetails() || this.PoiService.isRouteMode && this.ConfigService.getBoolean(r.Configs.UI_POI_PANEL_VISIBLE, !0);
            return this.ModeService.isNormalMode() && !t && (!this.LicenseService.licenseFetched || this.LicenseService.isLicenseValid)
        }
        ,
        t.prototype.isMapPrimaryView = function() {
            return this.ViewService.isMapPrimaryView()
        }
        ,
        t.prototype.isPanoPrimaryView = function() {
            return this.ViewService.isPanoPrimaryView()
        }
        ,
        t.prototype.isViewSwapAllowed = function() {
            return this.ViewService.viewSwapAllowed
        }
        ,
        t.prototype.isGeoRegistrationMode = function() {
            return this.ModeService.isGeoRegistrationMode()
        }
        ,
        t.prototype.showMapZoomControls = function() {
            return this.ViewService.isMapPrimaryView() && this.ModeService.isNormalMode()
        }
        ,
        t.prototype.doSlideDown = function() {
            return !this.ViewService.canSwapViews() || this.ViewService.isMapPrimaryView() && !this.hasPanoramaOnMapCenter()
        }
        ,
        t.prototype.isSecondaryViewHovered = function() {
            return this.ViewService.secondaryViewHovered
        }
        ,
        t.prototype.useLongerTransition = function() {
            return a.isMobileBrowser() && this.ViewService.isPanoPrimaryView()
        }
        ,
        t.prototype.showSecondaryView = function() {
            return this.ViewService.showSecondaryView
        }
        ,
        t.prototype.reinitIV = function() {
            this.IV.reinit()
        }
        ,
        t.prototype.setStartupView = function() {
            if (this.ViewService.mainView.getImage() && !this.PointCloudMenuService.isCloudVisible())
                this.ConfigService.saveConfig(r.Configs.CORE_INIT_IMAGE, this.ViewService.mainView.getImage().id).catch(o.handleWarning),
                this.ConfigService.saveConfig(r.Configs.CORE_INIT_LOCATION_LON, void 0).catch(o.handleWarning),
                this.ConfigService.saveConfig(r.Configs.CORE_INIT_LOCATION_LAT, void 0).catch(o.handleWarning),
                this.ConfigService.saveConfig(r.Configs.CORE_INIT_LOCATION_Z, void 0).catch(o.handleWarning);
            else {
                var t = this.GeoTransformationService.vectorToGlobal(this.ViewService.mainView.getCamera().position);
                this.ConfigService.saveConfig(r.Configs.CORE_INIT_LOCATION_LON, t.x).catch(o.handleWarning),
                this.ConfigService.saveConfig(r.Configs.CORE_INIT_LOCATION_LAT, t.y).catch(o.handleWarning),
                this.ConfigService.saveConfig(r.Configs.CORE_INIT_LOCATION_Z, t.z).catch(o.handleWarning),
                this.ConfigService.saveConfig(r.Configs.CORE_INIT_IMAGE, void 0).catch(o.handleWarning)
            }
            this.ConfigService.saveConfig(r.Configs.CORE_INIT_LON, this.ViewService.mainView.getViewDir().lon).catch(o.handleWarning),
            this.ConfigService.saveConfig(r.Configs.CORE_INIT_LAT, this.ViewService.mainView.getViewDir().lat).catch(o.handleWarning);
            var e = this.ViewService.mapView.getCamera()
              , n = this.GeoTransformationService.vectorToGlobal(e.position)
              , i = Math.min(Math.abs(e.right - e.left), Math.abs(e.top - e.bottom));
            this.ConfigService.saveConfig(r.Configs.CORE_INIT_MAP_LON, n.x).catch(o.handleWarning),
            this.ConfigService.saveConfig(r.Configs.CORE_INIT_MAP_LAT, n.y).catch(o.handleWarning),
            this.ConfigService.saveConfig(r.Configs.CORE_INIT_MAP_FOV, i).catch(o.handleWarning),
            this.FloorChangerService.getCurrentFloorName() && this.ConfigService.saveConfig(r.Configs.CORE_INIT_MAP_FLOOR, this.FloorChangerService.getCurrentFloorName()).catch(o.handleWarning)
        }
        ,
        t.prototype.resetStartupView = function() {
            this.ConfigService.saveConfig(r.Configs.CORE_INIT_IMAGE, void 0).catch(o.handleWarning),
            this.ConfigService.saveConfig(r.Configs.CORE_INIT_LOCATION_LON, void 0).catch(o.handleWarning),
            this.ConfigService.saveConfig(r.Configs.CORE_INIT_LOCATION_LAT, void 0).catch(o.handleWarning),
            this.ConfigService.saveConfig(r.Configs.CORE_INIT_LOCATION_Z, void 0).catch(o.handleWarning),
            this.ConfigService.saveConfig(r.Configs.CORE_INIT_LON, void 0).catch(o.handleWarning),
            this.ConfigService.saveConfig(r.Configs.CORE_INIT_LAT, void 0).catch(o.handleWarning),
            this.ConfigService.saveConfig(r.Configs.CORE_INIT_MAP_LON, void 0).catch(o.handleWarning),
            this.ConfigService.saveConfig(r.Configs.CORE_INIT_MAP_LAT, void 0).catch(o.handleWarning),
            this.ConfigService.saveConfig(r.Configs.CORE_INIT_MAP_FOV, void 0).catch(o.handleWarning),
            this.ConfigService.saveConfig(r.Configs.CORE_INIT_MAP_FLOOR, void 0).catch(o.handleWarning)
        }
        ,
        t.prototype.hasPanoramaOnMapCenter = function() {
            return void 0 !== this.ViewService.mapView.imageOnCenter
        }
        ,
        t
    }();
    e.IvBodyController = s;
    var c = function() {
        function t() {
            this.templateUrl = "BodyUI/IvBody.html",
            this.restrict = "E",
            this.controller = s,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.IvBodyDirective = c,
    i.module("IVWebApp").directive("ivBody", c.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(215)
      , o = n(40)
      , a = n(8)
      , s = function() {
        function t(t) {
            this.$timeout = t,
            this.restrict = "A",
            this.smallMobileMaxWidth = 374,
            this.mobileMaxWidth = 767,
            this.verticalMenuMinWidth = 375
        }
        return t.factory = function() {
            return ["$timeout", function(e) {
                return new t(e)
            }
            ]
        }
        ,
        t.prototype.link = function(t, e) {
            var n = this
              , i = e.attr("class") ? e.attr("class") : ""
              , o = this.getPlatformClass();
            this.$timeout((function() {
                r.addResizeEventListener(e[0], (function() {
                    var t, r = e.width();
                    t = r <= n.smallMobileMaxWidth ? "mobile-small" : r <= n.mobileMaxWidth ? "mobile" : "desktop";
                    var a = [];
                    r <= n.verticalMenuMinWidth && a.push("vertical-menu-min-width"),
                    e.attr("class", i + " " + o + " " + t + " " + a.join(" "))
                }
                ))
            }
            )).catch(a.handleWarning)
        }
        ,
        t.prototype.getPlatformClass = function() {
            return o.isPlatform(o.Platform.IOS) ? "ios" : ""
        }
        ,
        t
    }();
    e.LayoutDetectorDirective = s,
    i.module("IVWebApp").directive("layoutDetector", s.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    n(1391);
    var i = n(2);
    n(1392),
    n(1396);
    var r = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "WelcomeScreenUI/EntryScreen.html"
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.EntryScreenDirective = r,
    i.module("IVWebApp").directive("entryScreen", r.factory())
}
, function(t, e) {
    var n = "WelcomeScreenUI/EntryScreen.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, "<modal>\n\t<welcome-screen></welcome-screen>\n\t<welcome-screen-selector></welcome-screen-selector>\n\t<login-screen></login-screen>\n</modal>\n")
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    ), o = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
    , a = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var s = n(2);
    n(1393),
    n(1394);
    var c = n(81)
      , l = n(8)
      , u = n(326)
      , d = n(232)
      , p = function(t) {
        function e(e, n, i, r, o, a, s, c) {
            var u = t.call(this, s.find(".modal")) || this;
            return u.UserService = e,
            u.SidebarMenuService = n,
            u.StorageService = i,
            u.InstanceInformationService = r,
            u.AuthenticationService = o,
            u.FeatureFlagsService = a,
            u.settingsLink = '<a class="clickable" ng-click="vm.goToSettings()" translate translate-context="title">Settings</a>',
            u.managementLink = '<a class="clickable" ng-click="vm.goToDatasetManagement()" translate translate-context="title">Dataset Management</a>',
            u.doNotShowKey = "welcome_screen_hide",
            c.initialized.then((function() {
                return u.docsUrl = c.getDocumentationLink("setup/datasets.html")
            }
            )).catch(l.handleWarning),
            u.AuthenticationService.onAuthenticationChanged.connect((function() {
                return u.update()
            }
            )),
            u.update().catch(l.handleWarning),
            u
        }
        return r(e, t),
        e.$inject = ["UserService", "SidebarMenuService", "StorageService", "InstanceInformationService", "AuthenticationService", "FeatureFlagsService", "$element", "UrlService"],
        Object.defineProperty(e.prototype, "doNotShow", {
            get: function() {
                return this.StorageService.get(this.doNotShowKey)
            },
            set: function(t) {
                this.StorageService.set(this.doNotShowKey, t)
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.goToSettings = function() {
            this.hideModal(),
            this.SidebarMenuService.isMenuHidden = !1,
            this.SidebarMenuService.goToItem(this.SidebarMenuService.getItem(c.SidebarMenuItemsKey.SETTINGS)).catch(l.handleWarning)
        }
        ,
        e.prototype.goToDatasetManagement = function() {
            this.hideModal(),
            this.SidebarMenuService.isMenuHidden = !1,
            this.SidebarMenuService.goToItem(this.SidebarMenuService.getItem(c.SidebarMenuItemsKey.SETTINGS)).catch(l.handleWarning),
            this.SidebarMenuService.goToItem(this.SidebarMenuService.getItem(c.SidebarMenuItemsKey.SETTINGS_DATASET_MANAGEMENT)).catch(l.handleWarning)
        }
        ,
        e.prototype.isUserLoggedIn = function() {
            return this.UserService.isUserLoggedIn()
        }
        ,
        e.prototype.isAdmin = function() {
            return this.UserService.isAdmin()
        }
        ,
        e.prototype.getUsername = function() {
            return this.isUserLoggedIn() ? this.UserService.userInfo.getDisplayName() : ""
        }
        ,
        e.prototype.update = function() {
            return o(this, void 0, void 0, (function() {
                var t, e;
                return a(this, (function(n) {
                    switch (n.label) {
                    case 0:
                        return [4, this.showWelcome()];
                    case 1:
                        return t = n.sent(),
                        [4, this.isPaas()];
                    case 2:
                        return e = n.sent(),
                        t && !e ? this.showModal() : this.hideModal(),
                        [2]
                    }
                }
                ))
            }
            ))
        }
        ,
        e.prototype.showWelcome = function() {
            return o(this, void 0, void 0, (function() {
                var t, e;
                return a(this, (function(n) {
                    switch (n.label) {
                    case 0:
                        return [4, this.InstanceInformationService.getInformation()];
                    case 1:
                        return (t = n.sent()).isEmpty ? this.doNotShow ? [2, !1] : !(e = this.AuthenticationService.currentUser) || e.isGuest() || e.isAdmin() ? t.isPrivate && !this.UserService.isUserLoggedIn() ? [2, !1] : [2, !0] : [2, !1] : [2, !1]
                    }
                }
                ))
            }
            ))
        }
        ,
        e.prototype.isPaas = function() {
            return o(this, void 0, void 0, (function() {
                return a(this, (function(t) {
                    return [2, this.FeatureFlagsService.isEnabled(d.FeatureFlag.CLOUD_PROCESSING).then((function(t) {
                        return !0
                    }
                    )).catch((function(t) {
                        return !1
                    }
                    ))]
                }
                ))
            }
            ))
        }
        ,
        e
    }(u.AbstractModalController);
    e.WelcomeScreenController = p;
    var h = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "WelcomeScreenUI/WelcomeScreen.html",
            this.controller = p,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {}
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.WelcomeScreenDirective = h,
    s.module("IVWebApp").directive("welcomeScreen", h.factory())
}
, function(t, e, n) {
    var i = "WelcomeScreenUI/WelcomeScreen.html"
      , r = '<div id="welcome-screen" class="modal fade" tabindex="-1" role="dialog" data-backdrop="static">\n\t<div class="modal-dialog">\n\t\t<div class="modal-content">\n\t\t\t<div class="modal-header no-border text-center">\n\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t     data-dismiss="modal"\n\t\t\t\t     ng-src="' + n(35) + '"\n\t\t\t\t     alt="{{\'Close\'|translate}}">\n\t\t\t\t<h3>\n\t\t\t\t\t<span translate\n\t\t\t\t\t      translate-context="title"\n\t\t\t\t\t      translate-params-username="vm.getUsername()">\n\t\t\t\t\t\tWelcome {{username}}\n\t\t\t\t\t</span>\n\t\t\t\t</h3>\n\t\t\t</div>\n\t\t\t<div ng-if="vm.modalContentShown" class="modal-body container-fluid">\n\t\t\t\t<div>\n\t\t\t\t\t<div ng-if="!vm.isAdmin()" class="form-group" translate>\n\t\t\t\t\t\tTo set up your instance, please sign in as admin:\n\t\t\t\t\t</div>\n\t\t\t\t\t<login-form></login-form>\n\t\t\t\t</div>\n\t\t\t\t<div ng-if="vm.isAdmin()">\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<ok-button ng-click="vm.goToDatasetManagement()">\n\t\t\t\t\t\t\t<span translate>Upload your data now</span>\n\t\t\t\t\t\t</ok-button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<span translate translate-html-params-settings-link="vm.settingsLink"\n\t\t\t\t\t\t      translate-html-params-management-link="vm.managementLink">\n\t\t\t\t\t\t\tAlternatively, manage your instance any time in {{settingsLink}} under {{managementLink}}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div ng-if="vm.isAdmin()" class="modal-footer">\n\t\t\t\t<a ng-if="vm.isAdmin()" class="float-left" href="{{vm.docsUrl}}" target="_blank"\n\t\t\t\t   translate>\n\t\t\t\t\tLearn more\n\t\t\t\t</a>\n\t\t\t\t<div class="checkbox float-right no-margin">\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<input type="checkbox" ng-model="vm.doNotShow">\n\t\t\t\t\t\t<span translate>Do not show again</span>\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1395);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "welcome-screen .modal .modal-header{padding:15px 60px}welcome-screen .modal .modal-header h3{margin-top:0}welcome-screen .modal .modal-body{text-align:center}welcome-screen .modal login-form{display:block;max-width:300px;margin:0 auto}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        var i, r = this && this.__extends || (i = function(t, e) {
            return (i = Object.setPrototypeOf || {
                __proto__: []
            }instanceof Array && function(t, e) {
                t.__proto__ = e
            }
            || function(t, e) {
                for (var n in e)
                    e.hasOwnProperty(n) && (t[n] = e[n])
            }
            )(t, e)
        }
        ,
        function(t, e) {
            function n() {
                this.constructor = t
            }
            i(t, e),
            t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
            new n)
        }
        ), o = this && this.__awaiter || function(t, e, n, i) {
            return new (n || (n = Promise))((function(r, o) {
                function a(t) {
                    try {
                        c(i.next(t))
                    } catch (t) {
                        o(t)
                    }
                }
                function s(t) {
                    try {
                        c(i.throw(t))
                    } catch (t) {
                        o(t)
                    }
                }
                function c(t) {
                    var e;
                    t.done ? r(t.value) : (e = t.value,
                    e instanceof n ? e : new n((function(t) {
                        t(e)
                    }
                    ))).then(a, s)
                }
                c((i = i.apply(t, e || [])).next())
            }
            ))
        }
        , a = this && this.__generator || function(t, e) {
            var n, i, r, o, a = {
                label: 0,
                sent: function() {
                    if (1 & r[0])
                        throw r[1];
                    return r[1]
                },
                trys: [],
                ops: []
            };
            return o = {
                next: s(0),
                throw: s(1),
                return: s(2)
            },
            "function" == typeof Symbol && (o[Symbol.iterator] = function() {
                return this
            }
            ),
            o;
            function s(o) {
                return function(s) {
                    return function(o) {
                        if (n)
                            throw new TypeError("Generator is already executing.");
                        for (; a; )
                            try {
                                if (n = 1,
                                i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                                0) : i.next) && !(r = r.call(i, o[1])).done)
                                    return r;
                                switch (i = 0,
                                r && (o = [2 & o[0], r.value]),
                                o[0]) {
                                case 0:
                                case 1:
                                    r = o;
                                    break;
                                case 4:
                                    return a.label++,
                                    {
                                        value: o[1],
                                        done: !1
                                    };
                                case 5:
                                    a.label++,
                                    i = o[1],
                                    o = [0];
                                    continue;
                                case 7:
                                    o = a.ops.pop(),
                                    a.trys.pop();
                                    continue;
                                default:
                                    if (!(r = a.trys,
                                    (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                        a = 0;
                                        continue
                                    }
                                    if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                        a.label = o[1];
                                        break
                                    }
                                    if (6 === o[0] && a.label < r[1]) {
                                        a.label = r[1],
                                        r = o;
                                        break
                                    }
                                    if (r && a.label < r[2]) {
                                        a.label = r[2],
                                        a.ops.push(o);
                                        break
                                    }
                                    r[2] && a.ops.pop(),
                                    a.trys.pop();
                                    continue
                                }
                                o = e.call(t, a)
                            } catch (t) {
                                o = [6, t],
                                i = 0
                            } finally {
                                n = r = 0
                            }
                        if (5 & o[0])
                            throw o[1];
                        return {
                            value: o[0] ? o[1] : void 0,
                            done: !0
                        }
                    }([o, s])
                }
            }
        }
        ;
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var s = n(2);
        n(1397),
        n(1398);
        var c = n(326)
          , l = n(8)
          , u = function(e) {
            function n(n, i, r, o) {
                var a = e.call(this, o.find(".modal")) || this;
                a.InstanceInformationService = n,
                a.UserService = i,
                a.AuthenticationService = r;
                return a.modalElement.on("shown.bs.modal", (function() {
                    return t(".modal-backdrop").css({
                        opacity: 1
                    })
                }
                )),
                a.modalElement.on("hidden.bs.modal", (function() {
                    return t(".modal-backdrop").css({
                        opacity: ""
                    })
                }
                )),
                r.onAuthenticationChanged.connect((function() {
                    return a.update()
                }
                )),
                r.showLoginScreenModal.connect((function() {
                    return a.showModal()
                }
                )),
                a.update().catch(l.handleWarning),
                a
            }
            return r(n, e),
            n.$inject = ["InstanceInformationService", "UserService", "AuthenticationService", "$element"],
            n.prototype.update = function() {
                return o(this, void 0, void 0, (function() {
                    return a(this, (function(t) {
                        switch (t.label) {
                        case 0:
                            return [4, this.AuthenticationService.initialized];
                        case 1:
                            return t.sent(),
                            this.UserService.isUserLoggedIn() ? (this.hideModal(),
                            [2]) : [4, this.InstanceInformationService.getInformation()];
                        case 2:
                            return t.sent().isPrivate ? (this.showModal(),
                            [2]) : [2]
                        }
                    }
                    ))
                }
                ))
            }
            ,
            n
        }(c.AbstractModalController);
        e.LoginScreenController = u;
        var d = function() {
            function t() {
                this.restrict = "E",
                this.templateUrl = "WelcomeScreenUI/LoginScreen.html",
                this.controller = u,
                this.controllerAs = "vm",
                this.scope = !0,
                this.bindToController = {}
            }
            return t.factory = function() {
                return function() {
                    return new t
                }
            }
            ,
            t
        }();
        e.LoginScreenDirective = d,
        s.module("IVWebApp").directive("loginScreen", d.factory())
    }
    ).call(this, n(19))
}
, function(t, e) {
    var n = "WelcomeScreenUI/LoginScreen.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div id="login-screen" class="modal fade" tabindex="-1" role="dialog" data-backdrop="static"\n     data-keyboard="false">\n\t<div class="modal-dialog">\n\t\t<div class="modal-content">\n\t\t\t<div class="modal-header no-border text-center">\n\t\t\t\t<h3>\n\t\t\t\t\t<span translate translate-context="title">\n\t\t\t\t\t\tWelcome\n\t\t\t\t\t</span>\n\t\t\t\t</h3>\n\t\t\t</div>\n\t\t\t<div ng-if="vm.modalContentShown" class="modal-body container-fluid">\n\t\t\t\t<login-form></login-form>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1399);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "login-screen .modal .modal-header{padding:15px 60px}login-screen .modal .modal-header h3{margin-top:0}login-screen .modal .modal-body{text-align:center}login-screen .modal login-form{display:block;max-width:300px;margin:0 auto}", ""]),
    t.exports = e
}
, function(t, e, n) {
    var i = "BodyUI/IvBody.html"
      , r = '<div class="indoorViewer" layout-detector>\n\t<entry-screen></entry-screen>\n\n\t\x3c!--Sidebar preview menu--\x3e\n\t<sidebar-preview-menu ng-class="{\'slide-left\': !vm.isPreviewMenuVisible()}">\n\t</sidebar-preview-menu>\n\n\t\x3c!--Sidebar menu--\x3e\n\t<sidebar-menu></sidebar-menu>\n\n\t\x3c!--Right toolbox menu--\x3e\n\t<toolbox-menu></toolbox-menu>\n\n\t<div class="indoorViewer-scene" resize-event="vm.resizeViewHandler()">\n\t\t<button type="button" id="swap-scenes-mobile"\n\t\t        class="btn btn-default non-desktop no-border-width"\n\t\t        ng-if="vm.isViewSwapAllowed()"\n\t\t        ng-class="{\'map\': vm.isMapPrimaryView(),\n\t\t                   \'panorama\': vm.isPanoPrimaryView(),\n\t\t                   \'slide-down\': vm.doSlideDown()}"\n\t\t        ng-click="vm.swapScenes()">\n\t\t\t\x3c!--Swap to panorama--\x3e\n\t\t\t<img class="ic_svg" ng-if="vm.isMapPrimaryView()"\n\t\t\t     ng-src="' + n(426) + '">\n\t\t\t\x3c!--Swap to map--\x3e\n\t\t\t<img class="ic_svg" ng-if="vm.isPanoPrimaryView()"\n\t\t\t     ng-src="' + n(427) + '">\n\t\t\t<br>\n\t\t</button>\n\n\t\t\x3c!--Main Panel (shrunken when the right toolbox menu is expanded)--\x3e\n\t\t<div>\n\t\t\t\x3c!--Navigation bar menu--\x3e\n\t\t\t<navbar-menu></navbar-menu>\n\n\t\t\t\x3c!--Main scene webGL container--\x3e\n\t\t\t<iv-main-view class="main-view"\n\t\t\t              tabindex="0" ng-show="!vm.isGeoRegistrationMode()"\n\t\t\t              deferred="vm.mainViewDeferred"></iv-main-view>\n\n\t\t\t\x3c!-- Geo registration open layers map --\x3e\n\t\t\t<geo-registration-map\n\t\t\t\t\tng-if="vm.isGeoRegistrationMode()"></geo-registration-map>\n\t\t</div>\n\n\t\t\x3c!-- Dataset alignment viewport name labels and controller --\x3e\n\t\t<point-cloud-viewport></point-cloud-viewport>\n\n\t\t\x3c!--Inset Panel - border, webGL scene, UI buttons --\x3e\n\t\t<div id="insetPanel" class="z-index-2 border-radius"\n\t\t     ng-show="vm.showSecondaryView()"\n\t\t     ng-class="{ \'hover\': vm.isSecondaryViewHovered(),\n\t\t                 \'transition-hover-longer-delay\': vm.useLongerTransition(),\n\t\t                 \'margin-bottom-big\': vm.isMapPrimaryView() }"\n\t\t     ng-mouseleave="vm.fixCursor()">\n\n\t\t\t<iv-map-view class="map-view" tabindex="1"\n\t\t\t             deferred="vm.mapViewDeferred"></iv-map-view>\n\n\t\t\t<div class="swap-views-button">\n\t\t\t\t<span ng-click="vm.swapScenes()"\n\t\t\t\t      class="glyphicon glyphicon-resize-full"\n\t\t\t\t      ng-if="vm.isViewSwapAllowed()"></span>\n\t\t\t</div>\n\t\t</div>\n\n\t\t\x3c!--POI, routing--\x3e\n\t\t<left-panel></left-panel>\n\n\t\t<div id="rightControls">\n\t\t\t\x3c!-- FIXME move out into own directive --\x3e\n\t\t\t\x3c!-- Floor changer --\x3e\n\t\t\t<div id="floorChanger" class="z-index-2 border-radius">\n\t\t\t\t<div ng-include src="\'templates/FloorChanger.html\'"></div>\n\t\t\t</div>\n\t\t\t\x3c!-- Map View zoom controls --\x3e\n\t\t\t<div id="mapZoomControls" class="z-index-2 non-mobile" ng-if="vm.showMapZoomControls()">\n\t\t\t\t<zoom-control (zoom-in)="vm.zoomMapView(true)" (zoom-out)="vm.zoomMapView(false)">\n\t\t\t\t</zoom-control>\n\t\t\t</div>\n\t\t</div>\n\n\t\t\x3c!--bottom left links--\x3e\n\t\t<div id="BLLinks" ng-class="{\'above-map-info\' : vm.isMapPrimaryView()}">\n\t\t\t<feedback></feedback>\n\t\t</div>\n\n\t\t<div>\n\t\t\t\x3c!-- FIXME move out into own directive --\x3e\n\t\t\t\x3c!--Modals from menus needed to be moved outside, since inside fullscreen menu pages their z-index is overriden  --\x3e\n\t\t\t\x3c!--by the fullscreen menu\'s z-index--\x3e\n\t\t\t<div ng-include src="\'templates/menu/ModalsInMenus.html\'"></div>\n\n\t\t\t<vector-map-upload></vector-map-upload>\n\n\t\t\t<modal>\n\t\t\t\t<affine-ref-sys-list></affine-ref-sys-list>\n\t\t\t</modal>\n\t\t</div>\n\n\t\t\x3c!--Display a simple message to user in a modal box e.g. when image/poi in URL dont exist --\x3e\n\t\t<modal>\n\t\t\t<message-reporting></message-reporting>\n\t\t</modal>\n\n\t\t\x3c!-- FIXME move out into own directive --\x3e\n\t\t\x3c!--WebGL missing error message--\x3e\n\t\t<div id="webGlMissing" class="webGlMissing" style="display: none;">\n\t\t\t<div ng-include src="\'templates/WebGLMissing.html\'"></div>\n\t\t</div>\n\n\t\t\x3c!-- Cover the page until we have finished loading everything to avoid displaying a sketchy UI --\x3e\n\t\t<div id="modal-cover" class="modal-progress-bg"></div>\n\n\t\t\x3c!-- Server status check div --\x3e\n\t\t<modal>\n\t\t\t<status-check></status-check>\n\t\t</modal>\n\n\t\t\x3c!--About modal--\x3e\n\t\t<about></about>\n\n\t\t\x3c!-- This modal is used whenever a delete confirmation is needed from a Layer.\n\t\t\t Remember to redeclare the onConfirmCallback() on the scope from the Layer,\n\t\t\t see POILayer.addPoiHoverEventHandlers for an example--\x3e\n\t\t<delete-confirmation-modal delete-confirmation-id="delete-confirmation-layer-modal"\n\t\t                           on-confirm-callback="onConfirmCallback()">\n\t\t</delete-confirmation-modal>\n\t</div>\n\n\t\x3c!-- Progress reporting div --\x3e\n\t<progress-report></progress-report>\n</div>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(141)
      , o = n(25)
      , a = n(40);
    n(27);
    n(27);
    n(15),
    n(38);
    var s = n(147);
    n(1402),
    n(1412);
    var c = n(148)
      , l = n(21)
      , u = n(81)
      , d = (n(24),
    n(202),
    n(6))
      , p = n(0)
      , h = n(0)
      , f = n(27)
      , m = n(38)
      , g = n(15)
      , v = n(24)
      , y = n(202)
      , b = function() {
        function t(t, e, n, i, r, o) {
            this.UserService = t,
            this.SidebarMenuService = e,
            this.ConfigService = n,
            this.ModeService = i,
            this.VectorMapService = r,
            this.gettext = o,
            this.initSideMenuItem()
        }
        return t.prototype.initSideMenuItem = function() {
            var t = this
              , e = (new c.SidebarMenuItemBuilder).setKey(u.SidebarMenuItemsKey.USER).setTitle(this.gettext("User", void 0, "title")).setIcon(new r.IconInfo("material-icons","person")).setIsVisible((function() {
                return t.ConfigService.getBoolean(o.Configs.MENU_LOGIN_VISIBLE, !0) && t.ModeService.isNormalMode() && !t.VectorMapService.isVectorMapEditorActive && a.isMobileLayout()
            }
            )).setTemplate(l.TemplateName.LOGIN_MENU).setClassCallback((function() {
                return t.UserService.isUserLoggedIn() ? "sidebar-menu-item-user user-logged-in" : "sidebar-menu-item-user"
            }
            )).setOrder(s.SidebarMenuItemsOrder.USER).build();
            this.SidebarMenuService.addItem(e)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(h.ɵɵinject(f.UserService),h.ɵɵinject(m.SidebarMenuService),h.ɵɵinject(g.ConfigService),h.ɵɵinject(v.ModeService),h.ɵɵinject(y.VectorMapService),h.ɵɵinject("gettext"))
        }
        ,
        t.ɵprov = h.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.UserModule = b,
    h.ɵsetClassMetadata(b, [{
        type: p.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: f.UserService
        }, {
            type: m.SidebarMenuService
        }, {
            type: g.ConfigService
        }, {
            type: v.ModeService
        }, {
            type: y.VectorMapService
        }, {
            type: void 0,
            decorators: [{
                type: p.Inject,
                args: ["gettext"]
            }]
        }]
    }
    ), null),
    i.module("IVWebApp").service("UserModule", d.downgradeInjectable(b))
}
, function(t, e, n) {
    "use strict";
    n.r(e),
    function(t) {
        var e = n(2)
          , i = n(118)
          , r = n(89)
          , o = (n(1403),
        n(178),
        n(92))
          , a = (n(1408),
        n(72))
          , s = (n(606),
        n(8))
          , c = n(16)
          , l = n(114);
        function u(n, u, d, p, h, f, m, g, v, y, b, w, S, x, M, E, C) {
            var A;
            n.UserService = p,
            n.GroupService = h,
            n.LicenseService = M,
            n.loginInProgress = !1,
            n.logoutInProgress = !1,
            n.wrongUserCredentials = !1,
            n.passwordExpired = !1,
            n.error = void 0,
            n.selectedUsers = [],
            n.edited = {},
            n.adding = {},
            n.docsUrl = "",
            n.permissionsData = n.permissionsData || {},
            n.groupsTree = (A = {
                showChecks: !0,
                selectable: !1,
                showAttributes: !1,
                excludeGroupId: l.GroupService.publicGroupId
            },
            new i.GroupsTree(h,A)),
            n.groupsData = [],
            n.warningDialogConfig = {
                TITLE: x("Unsaved Changes", void 0, "title"),
                TEXT: x("Your changes are not saved and will be lost if you proceed. Are you sure you want to leave?")
            },
            n.current_page = "USERS",
            n.isUserLoggedIn = p.isUserLoggedIn,
            n.showDocumentation = function() {
                return P || p.isUserLoggedIn()
            }
            ,
            n.logout = function() {
                function t() {
                    n.logoutInProgress = !1
                }
                n.logoutInProgress = !0,
                p.logout().then(R).then(t).catch(t)
            }
            ,
            n.isLogoutDisabled = function() {
                return g.loggedInWithToken
            }
            ,
            n.getNrOfUserAttributes = function(t) {
                var e = p.userInfo.attributes;
                return t ? Object.keys(e).filter((function(t) {
                    return e[t]
                }
                )).length : Object.keys(e).length
            }
            ,
            n.removeUsers = function(t) {
                Object(e.forEach)(t, (function(t) {
                    p.removeUser(t).then((function() {
                        _.remove(T, {
                            id: t
                        }),
                        M.initialize(!0).catch(s.handleWarning)
                    }
                    )).catch((function() {
                        var e = n.getUserById(t, n.permissionsData.users);
                        f.showMessage(d.getString("Error While Removing the User {{username}}", {
                            username: e.username
                        }, "title"), d.getString("The user has not been removed."))
                    }
                    ))
                }
                ))
            }
            ,
            n.isUserVisibleInList = L,
            n.isUserEnabledInList = N,
            n.selectAllUsers = function() {
                n.selectedUsers = n.permissionsData.users.map((function(t) {
                    return L(t) && N(t) ? t.id : void 0
                }
                )).filter(Boolean),
                n.updateGroupsForSelectedUsers()
            }
            ,
            n.deselectAllUsers = function() {
                n.selectedUsers = [],
                n.updateGroupsForSelectedUsers()
            }
            ,
            n.refreshUsersList = function() {
                n.permissionsData.users = void 0,
                v.findAll(!0)
            }
            ,
            n.getUserById = function(t, e) {
                return _.find(e, {
                    id: t
                })
            }
            ,
            n.updateGroupsForSelectedUsers = function() {
                var t = F();
                n.groupsTree.checkGroups(t, i.CheckState.UNCHECKED),
                n.groupsTree.expandGroups(t, !1),
                n.groupsTree.enableGroups(t, n.selectedUsers.length > 0);
                var r = {};
                Object(e.forEach)(n.selectedUsers, (function(t) {
                    var i = n.getUserById(t, n.permissionsData.users);
                    Object(e.forEach)(U(i.primaryGroups), (function(t) {
                        r[t] = r[t] || {},
                        r[t].count = r[t].count ? r[t].count + 1 : 1
                    }
                    ))
                }
                )),
                Object(e.forEach)(r, (function(e, r) {
                    var o = n.groupsTree.getGroupById(r, t);
                    e.has_ancestor ? (n.groupsTree.checkGroup(o, i.CheckState.CHECKED),
                    n.groupsTree.enableGroup(o, !1)) : e.count === n.selectedUsers.length ? n.groupsTree.checkGroup(o, i.CheckState.CHECKED) : e.count > 0 && n.groupsTree.checkGroup(o, i.CheckState.SEMI_CHECKED),
                    n.groupsTree.revealGroup(o, t)
                }
                ))
            }
            ,
            n.updateSelectedUsersAfterGroupCheck = function(t) {
                var i = F()
                  , r = h.publicGroupId
                  , o = i.filter((function(t) {
                    return n.groupsTree.isGroupChecked(t) && t.id !== r
                }
                ))
                  , a = i.filter((function(t) {
                    return n.groupsTree.isGroupSemiChecked(t) && t.id !== r
                }
                ))
                  , s = n.groupsTree.getGroupsIds(o)
                  , c = n.groupsTree.getGroupsIds(a);
                Object(e.forEach)(n.selectedUsers, (function(t) {
                    var i = n.getUserById(t, n.permissionsData.users)
                      , o = Object(e.copy)(s);
                    o.push(r),
                    Object(e.forEach)(c, (function(t) {
                        i.primaryGroups.indexOf(t) > -1 && o.push(t)
                    }
                    ));
                    var a = n.getUserById(t, v.data);
                    n.groupsTree.sameGroupsIds(o, a.primaryGroups) ? delete T[i.id] : (i.primaryGroups = o,
                    T[i.id] = i)
                }
                ))
            }
            ,
            n.toggleGroupChecked = function(t) {
                if (!n.groupsTree.isGroupEnabled(t))
                    return;
                n.groupsTree.isGroupChecked(t) || n.groupsTree.isGroupSemiChecked(t) ? function(t) {
                    n.groupsTree.checkGroup(t, i.CheckState.UNCHECKED),
                    n.updateSelectedUsersAfterGroupCheck(t)
                }(t) : function(t) {
                    n.groupsTree.checkGroup(t, i.CheckState.CHECKED),
                    n.groupsTree.checkGroups(n.groupsTree.getGroupAncestors(t, F()), i.CheckState.UNCHECKED),
                    n.groupsTree.checkGroups(n.groupsTree.getGroupDescendants(t), i.CheckState.UNCHECKED),
                    n.updateSelectedUsersAfterGroupCheck(t)
                }(t)
            }
            ,
            n.toggleGroupExpanded = function(t) {
                n.groupsTree.toggleGroupExpanded(t)
            }
            ,
            n.resetUserGroups = j,
            n.saveUserGroups = function() {
                Object.keys(T).length && function() {
                    var t = [];
                    function n() {
                        v.findAll(),
                        M.initialize(!0).catch(s.handleWarning),
                        T = {}
                    }
                    Object(e.forEach)(T, (function(e) {
                        var n = p.updateUserPrimaryGroups(e.id, U(e.primaryGroups));
                        t.push(n)
                    }
                    )),
                    O.wrapPromises(t).then(n).catch((function() {
                        f.showMessage(d.getString("Error While Updating Users", void 0, "title"), d.getString("The users have not been updated")),
                        j(),
                        n()
                    }
                    ))
                }()
            }
            ,
            n.isDataChanged = V,
            n.getAllGroups = F,
            n.discardPublicGroup = U,
            n.editProfile = function(e) {
                e || (e = p.userInfo);
                n.edited = v.create().copy(e),
                t("#edit-profile-modal").modal()
            }
            ,
            n.addUser = function() {
                n.adding = v.create(),
                n.adding.provider = a.UserProvider.LOCAL,
                t("#save-user-modal").modal()
            }
            ,
            n.canAddUser = function() {
                return B() && M.isFeatureEnabled(o.LicenseFeatureType.USER_MANAGEMENT)
            }
            ,
            n.userProviderIsPreauth = function() {
                return p.userInfo && p.userInfo.provider === a.UserProvider.PREAUTH
            }
            ,
            n.warningContinueHandler = function() {
                j(),
                S.continueHoldAction(),
                Object(e.element)(document.getElementById("users-unsaved-changes-modal")).modal("hide")
            }
            ,
            n.isSavingInProgress = function() {
                return O.isInProgress
            }
            ,
            n.getFriendlyName = function(t) {
                return t.firstName && t.lastName ? "".concat(t.firstName, " ").concat(t.lastName, " (").concat(t.username, ") (").concat(t.provider, ")") : "".concat(t.username, " (").concat(t.provider, ")")
            }
            ;
            var T = {}
              , O = new r.PromiseProgressWrapper
              , P = !1;
            function I() {
                return !!V() && (Object(e.element)(document.getElementById("users-unsaved-changes-modal")).modal("show"),
                !0)
            }
            function k() {
                n.permissionsData.users = D(v.data),
                n.permissionsData.isDataChanged = V
            }
            function D(t) {
                return p.userInfo ? Object(e.copy)(t).sort((function(t, e) {
                    return t.id === p.userInfo.id ? -1 : e.id === p.userInfo.id ? 1 : t.username.localeCompare(e.username)
                }
                )) : []
            }
            function R() {
                return (B() ? v.findAll().then(k) : (v.resetCache(),
                k(),
                Promise.resolve())).then((function() {
                    return function() {
                        h.clearGroups();
                        var t = p.userInfo
                          , i = t ? t.primaryGroups : [0];
                        return h.getGroupsAsTree(i).then((function(t) {
                            n.permissionsData.groups = Object(e.copy)(t),
                            n.groupsTree.setGroups(n.permissionsData.groups),
                            B() && n.updateGroupsForSelectedUsers(),
                            n.groupsData = h.createGroupsArray(n.permissionsData.groups)
                        }
                        ))
                    }()
                }
                ))
            }
            function L(t) {
                return t.id >= 0
            }
            function N(t) {
                return t.id !== p.userInfo.id
            }
            function j() {
                T = {},
                n.permissionsData.users = D(v.data),
                n.updateGroupsForSelectedUsers()
            }
            function V() {
                return Object.keys(T).length > 0
            }
            function F() {
                return n.permissionsData ? h.createGroupsArray(n.permissionsData.groups) : []
            }
            function U(t) {
                return n.groupsTree.discardPublicGroup(t)
            }
            function B() {
                return p.isAdmin()
            }
            !function() {
                var t = S.getActiveItem();
                t && (t.onExit = I);
                var e = new c.SignalConnections;
                e.add(v.entityCreated.connect((function() {
                    return k()
                }
                ))),
                e.add(v.entityRemoved.connect((function() {
                    return k()
                }
                ))),
                g.initialized.then((function() {
                    return R().catch(s.handleWarning)
                }
                )),
                e.add(g.onAuthenticationChanged.connect((function() {
                    return R().catch(s.handleWarning)
                }
                ))),
                E.initialized.then((function() {
                    return n.docsUrl = E.getDocumentationLink()
                }
                )).catch(s.handleWarning),
                C.getInformation().then((function(t) {
                    return P = t.isCloudInstance
                }
                )).catch(s.handleWarning),
                n.$on("$destroy", (function() {
                    return e.disconnectAll()
                }
                ))
            }()
        }
        u.$inject = ["$scope", "$window", "gettextCatalog", "UserService", "GroupService", "MessageReportingService", "IV", "AuthenticationService", "UserRepository", "RestService", "JWTTokenService", "ConfigService", "SidebarMenuService", "gettext", "LicenseService", "UrlService", "InstanceInformationService"],
        Object(e.module)("IVWebApp").controller("UserController", u)
    }
    .call(this, n(19))
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var i = n(2);
        n(1404),
        n(1405),
        n(178);
        var r = n(72);
        n(606);
        var o = n(21)
          , a = function() {
            function e(t, e, n, i, r, o) {
                var a = this;
                this.UserService = t,
                this.MessageReportingService = e,
                this.gettextCatalog = n,
                this.UserRepository = i,
                this.LicenseService = r,
                this.TrackingService = o,
                this.usernameRequiredLength = {
                    min: 3,
                    max: 254
                },
                this.validationResults = {
                    usernameUnique: !0,
                    emailFormat: !0,
                    currentPassword: !0
                },
                this.isCurrentUser = function() {
                    return a.UserService.userInfo && a.UserService.userInfo.id === a.user.id
                }
                ,
                this.isUserInfoValid = function() {
                    return !!a.user && (void 0 === a.user.id ? a.isUsernameFormatValid() && a.isPasswordValid() && a.isPasswordRepeatValid() : a.isUsernameFormatValid() && a.passwordsMatch(a.passwordNew, a.passwordNewRepeat))
                }
            }
            return e.$inject = ["UserService", "MessageReportingService", "gettextCatalog", "UserRepository", "LicenseService", "TrackingService"],
            Object.defineProperty(e.prototype, "user", {
                get: function() {
                    return this.controllerUser
                },
                set: function(t) {
                    this.controllerUser = t,
                    this.clearPasswords()
                },
                enumerable: !0,
                configurable: !0
            }),
            e.prototype.isUsernameEditable = function() {
                return this.user && void 0 === this.user.id
            }
            ,
            e.prototype.isUsernameFormatValid = function() {
                if (!this.user)
                    return !1;
                var t = this.user.username;
                return t && t.length >= this.usernameRequiredLength.min && t.length <= this.usernameRequiredLength.max && /^[a-zA-Z0-9-_@.]*$/.test(t)
            }
            ,
            e.prototype.isPasswordValid = function() {
                return this.isPasswordFormatValid(this.password)
            }
            ,
            e.prototype.isPasswordRepeatValid = function() {
                return this.isPasswordFormatValid(this.passwordRepeat) && this.passwordsMatch(this.password, this.passwordRepeat)
            }
            ,
            e.prototype.isCurrentPasswordNeeded = function() {
                return !this.UserService.isAdmin() || this.isCurrentUser()
            }
            ,
            e.prototype.saveProfile = function() {
                var t = this;
                (void 0 === this.user.id ? this.addUser() : this.updateUserProfile()).then((function() {
                    return t.closeModal()
                }
                )).catch((function(e) {
                    if (e.data && e.data.msg) {
                        var n = !1;
                        if (-1 !== e.data.msg.toLowerCase().indexOf("user exists in the database") && (t.validationResults.usernameUnique = !1,
                        n = !0),
                        -1 !== e.data.msg.toLowerCase().indexOf("not a well-formed email address") && (t.validationResults.emailFormat = !1,
                        n = !0),
                        -1 !== e.data.msg.toLowerCase().indexOf("invalid current password") && (t.validationResults.currentPassword = !1,
                        n = !0),
                        n)
                            return void t.clearError()
                    }
                    t.reportError(e)
                }
                ))
            }
            ,
            e.prototype.closeModal = function() {
                this.clearPasswords(),
                this.clearError(),
                t("#" + this.modalId).modal("hide")
            }
            ,
            e.prototype.passwordsMatch = function(t, e) {
                return !t || t === e
            }
            ,
            e.prototype.isUserLocal = function() {
                return this.user && this.user.provider === r.UserProvider.LOCAL
            }
            ,
            e.prototype.clearPasswords = function() {
                this.password = void 0,
                this.passwordRepeat = void 0,
                this.passwordNew = void 0,
                this.passwordNewRepeat = void 0
            }
            ,
            e.prototype.isPasswordFormatValid = function(t) {
                return !!t
            }
            ,
            e.prototype.addUser = function() {
                return this.user.password = this.password,
                o.TrackingService.trackUserAdded(),
                this.UserRepository.saveUser(this.user)
            }
            ,
            e.prototype.updateUserProfile = function() {
                var t = this;
                return this.UserService.updateUserProfile(this.user).then((function() {
                    return t.passwordNew ? t.UserService.changePassword(t.user.id, t.user.username, t.password, t.passwordNew).then((function() {
                        return t.user
                    }
                    )) : t.user
                }
                ))
            }
            ,
            e.prototype.reportError = function(t) {
                this.error = {
                    text: this.gettextCatalog.getString("Error while saving the user {{name}}", {
                        name: this.user.username
                    }),
                    status: t.status,
                    statusText: t.statusText && t.statusText.length ? t.statusText : this.gettextCatalog.getString("Network error"),
                    details: t.data ? t.data.msg : ""
                }
            }
            ,
            e.prototype.clearError = function() {
                this.error = void 0
            }
            ,
            e
        }();
        e.UserEditorController = a;
        var s = function() {
            function t() {
                this.restrict = "E",
                this.templateUrl = "User/UserEditor.html",
                this.controller = a,
                this.controllerAs = "vm",
                this.scope = !0,
                this.bindToController = {
                    modalId: "@",
                    user: "="
                }
            }
            return t.factory = function() {
                return function() {
                    return new t
                }
            }
            ,
            t
        }();
        e.UserEditorDirective = s,
        i.module("IVWebApp").directive("userEditor", s.factory())
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    var i = "User/UserEditor.html"
      , r = '<modal>\n\t<div class="modal fade" id="{{vm.modalId}}" tabindex="-1" role="dialog" data-backdrop="static"\n\t     aria-hidden="true">\n\t\t<div class="modal-dialog">\n\t\t\t<div class="modal-content panel-autoscroll">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<h4>\n\t\t\t\t\t\t<span ng-if="vm.user.id === undefined" translate translate-context="title">Add User</span>\n\t\t\t\t\t\t<span ng-if="vm.user.id !== undefined && !vm.isCurrentUser()" translate translate-context="title">Edit User</span>\n\t\t\t\t\t\t<span ng-if="vm.user.id !== undefined && vm.isCurrentUser()" translate translate-context="title">Edit Profile</span>\n\t\t\t\t\t</h4>\n\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t     data-dismiss="modal"\n\t\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}">\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t\x3c!-- Required fields --\x3e\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<span translate translate-context="followed by *-symbol (also translatable)">\n\t\t\t\t\t\t\tFields marked with this symbol are required:\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<required></required>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\x3c!-- Username --\x3e\n\t\t\t\t\t<div class="form-group"\n\t\t\t\t\t     ng-class="{\'has-success\' : vm.isUsernameEditable() && vm.isUsernameFormatValid() && vm.validationResults.usernameUnique,\n\t\t\t\t\t\t            \'has-error\'   : vm.isUsernameEditable() && (!vm.isUsernameFormatValid() || !vm.validationResults.usernameUnique)}">\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<span translate>Username</span>\n\t\t\t\t\t\t\t<required></required>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<input class="form-control form-group"\n\t\t\t\t\t\t       maxlength="{{vm.usernameRequiredLength.max}}"\n\t\t\t\t\t\t       ng-model="vm.user.username" ng-disabled="!vm.isUsernameEditable()"\n\t\t\t\t\t\t       ng-change="vm.validationResults.usernameUnique = true" init-focus>\n\t\t\t\t\t\t<p ng-show="!vm.validationResults.usernameUnique" class="text-danger" translate>\n\t\t\t\t\t\t\tUsername is already being used\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<div ng-show="!vm.isUsernameFormatValid() && vm.isUserLocal()">\n\t\t\t\t\t\t\t<p class="text-danger" style="margin-bottom:0"\n\t\t\t\t\t\t\t   translate-params-min="vm.usernameRequiredLength.min"\n\t\t\t\t\t\t\t   translate-params-max="vm.usernameRequiredLength.max" translate>\n\t\t\t\t\t\t\t\tRequired length: between {{min}} and {{max}}</p>\n\t\t\t\t\t\t\t<p class="text-danger" translate-params-symbols="\'(. _ - @)\'" translate>\n\t\t\t\t\t\t\t\tAllowed characters: alphanumeric with symbols {{symbols}}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\x3c!-- Password --\x3e\n\t\t\t\t\t<div ng-if="vm.user.id === undefined" class="form-group"\n\t\t\t\t\t     ng-class="{\'has-success\': vm.isPasswordValid(),\n\t\t\t\t\t                \'has-error\': !vm.isPasswordValid()}">\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<span translate>Password</span>\n\t\t\t\t\t\t\t<required></required>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<input class="form-control" type="password" ng-model="vm.password" autocomplete="new-password">\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\x3c!-- Password (repeated - must match) --\x3e\n\t\t\t\t\t<div ng-if="vm.user.id === undefined" class="form-group"\n\t\t\t\t\t     ng-class="{\'has-success\': vm.isPasswordRepeatValid(),\n\t\t\t\t\t                \'has-error\': !vm.isPasswordRepeatValid()}">\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<span translate>Repeat password</span>\n\t\t\t\t\t\t\t<required></required>\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<input class="form-control" type="password" ng-model="vm.passwordRepeat" autocomplete="new-password">\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<p ng-show="!vm.passwordsMatch(vm.password, vm.passwordRepeat)"\n\t\t\t\t\t   ng-if="vm.user.id === undefined"\n\t\t\t\t\t   class="text-danger" translate>\n\t\t\t\t\t\tPasswords do not match\n\t\t\t\t\t</p>\n\n\t\t\t\t\t\x3c!-- Optional fields --\x3e\n\n\t\t\t\t\t\x3c!-- First name --\x3e\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<p translate>First name</p>\n\t\t\t\t\t\t<input class="form-control" ng-model="vm.user.firstName"\n\t\t\t\t\t\t       ng-disabled="!vm.isUserLocal()">\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- Last name --\x3e\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<p translate>Last name</p>\n\t\t\t\t\t\t<input class="form-control" ng-model="vm.user.lastName"\n\t\t\t\t\t\t       ng-disabled="!vm.isUserLocal()">\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- Email --\x3e\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<p translate>Email address</p>\n\t\t\t\t\t\t<input class="form-control" ng-model="vm.user.email"\n\t\t\t\t\t\t       ng-change="vm.validationResults.emailFormat = true"\n\t\t\t\t\t\t       ng-class="{\'has-error\' : !vm.validationResults.emailFormat }"\n\t\t\t\t\t\t       ng-disabled="!vm.isUserLocal()">\n\t\t\t\t\t</div>\n\t\t\t\t\t<p ng-show="!vm.validationResults.emailFormat" class="text-danger" translate>\n\t\t\t\t\t\tWrong email format\n\t\t\t\t\t</p>\n\n\t\t\t\t\t\x3c!-- Change password - for existing user / user profile --\x3e\n\t\t\t\t\t<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"\n\t\t\t\t\t     ng-if="vm.user.id !== undefined && vm.isUserLocal()">\n\t\t\t\t\t\t<div class="panel panel-default">\n\t\t\t\t\t\t\t<div class="panel-heading" role="tab" id="headingOne">\n\t\t\t\t\t\t\t\t<h4 class="panel-title">\n\t\t\t\t\t\t\t\t\t<a role="button" data-toggle="collapse" data-parent="#accordion"\n\t\t\t\t\t\t\t\t\t   href="#collapse-change-password" class="collapsed"\n\t\t\t\t\t\t\t\t\t   aria-controls="collapse-change-password" translate\n\t\t\t\t\t\t\t\t\t   translate-context="title">\n\t\t\t\t\t\t\t\t\t\tChange Password\n\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t</h4>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div id="collapse-change-password" class="panel-collapse collapse"\n\t\t\t\t\t\t\t     role="tabpanel" aria-labelledby="headingOne">\n\t\t\t\t\t\t\t\t<div class="panel-body">\n\t\t\t\t\t\t\t\t\t\x3c!-- Password --\x3e\n\t\t\t\t\t\t\t\t\t<div class="form-group" ng-if="vm.isCurrentPasswordNeeded()">\n\t\t\t\t\t\t\t\t\t\t<p translate>Current password</p>\n\t\t\t\t\t\t\t\t\t\t<input class="form-control" type="password"\n\t\t\t\t\t\t\t\t\t\t       ng-model="vm.password">\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<p ng-show="!vm.validationResults.currentPassword"\n\t\t\t\t\t\t\t\t\t   class="text-danger" translate>\n\t\t\t\t\t\t\t\t\t\tInvalid current password\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\x3c!-- New Password --\x3e\n\t\t\t\t\t\t\t\t\t<div class="form-group" ng-if="vm.user.id !== undefined">\n\t\t\t\t\t\t\t\t\t\t<p translate>New password</p>\n\t\t\t\t\t\t\t\t\t\t<input class="form-control" type="password"\n\t\t\t\t\t\t\t\t\t\t       ng-model="vm.passwordNew" autocomplete="new-password">\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div class="form-group" ng-if="vm.user.id !== undefined">\n\t\t\t\t\t\t\t\t\t\t<p translate>Repeat new password</p>\n\t\t\t\t\t\t\t\t\t\t<input class="form-control" type="password"\n\t\t\t\t\t\t\t\t\t\t       ng-model="vm.passwordNewRepeat" autocomplete="new-password">\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<p ng-show="!vm.passwordsMatch(vm.passwordNew, vm.passwordNewRepeat)"\n\t\t\t\t\t\t\t\t\t   ng-if="vm.user.id !== undefined"\n\t\t\t\t\t\t\t\t\t   class="text-danger" translate>\n\t\t\t\t\t\t\t\t\t\tPasswords do not match\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- general error reporting --\x3e\n\t\t\t\t\t<span class="text-danger" ng-show="!!vm.error">\n\t\t\t\t\t\t{{vm.error.text}}: {{vm.error.statusText}} ({{vm.error.status}})\n\t\t\t\t\t</span>\n\t\t\t\t\t<div ng-show="!!vm.error.details">\n\t\t\t\t\t\t{{vm.error.details}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t<close-button ng-click="vm.closeModal()"></close-button>\n\t\t\t\t\t<save-button ng-disabled="!vm.isUserInfoValid()"\n\t\t\t\t\t             ng-click="vm.saveProfile()"></save-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1406);
    var r = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "Core/Misc/Required.html"
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.RequiredDirective = r,
    i.module("IVWebApp").directive("required", r.factory())
}
, function(t, e) {
    var n = "Core/Misc/Required.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<span translate translate-context="Marker used for marking required fields in forms.">*</span>\n')
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "LicenseWarning/LicenseUserLimitWarning.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '\x3c!-- Approaching registered user limit --\x3e\n<div class="alert alert-warning license-user-limit-warning iv-panel-warning"\n     ng-if="vm.isUserLimitMinusOneReached()">\n\t<span class="fa fa-exclamation-triangle" aria-hidden="true"></span>\n\t<div>\n\t\t<p translate\n\t\t   translate-context="The parameters \'limit\' and \'link\' will be replaced with the appropriate value."\n\t\t   translate-params-limit="vm.maxUsersWithgroups"\n\t\t   translate-html-params-link="vm.LINK">\n\t\t\tYou can still assign 1 more user to a group, and then reach your subscription limit of {{limit}} users assigned to a group. If you would like to assign more users to a group in the future, you can always {{link}}.\n\t\t</p>\n\t</div>\n</div>\n\n\x3c!-- Reached registered user limit --\x3e\n<div class="alert alert-warning license-user-limit-warning iv-panel-warning"\n     ng-if="vm.isUserLimitReached()">\n\t<span class="fa fa-exclamation-triangle" aria-hidden="true"></span>\n\t<div>\n\t\t<p translate\n\t\t   translate-context="The parameters \'limit\' and \'link\' will be replaced with the appropriate value."\n\t\t   translate-params-limit="vm.maxUsersWithgroups"\n\t\t   translate-html-params-link="vm.LINK">\n\t\t\tYou have assigned all users allowed by your subscription to a group - {{limit}} users assigned to a group. If you would like to assign more users to a group, you need to {{link}} or unset the group from one of the existing users.\n\t\t</p>\n\t\t<p translate>\n\t\t\tPlease contact your service provider.\n\t\t</p>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1409),
    n(1410);
    var r = n(8)
      , o = function() {
        function t(t, e, n) {
            var i = this;
            this.$window = t,
            this.UserService = e,
            this.login = "",
            this.password = "",
            this.wrongUserCredentials = !1,
            this.loginInProgress = !1,
            this.passwordExpired = !1,
            this.passwordChangeFailed = !1,
            n.getInformation().then((function(t) {
                i.oauthLoginUrl = t.oauthLoginUrl
            }
            )).catch(r.handleWarning)
        }
        return t.$inject = ["$window", "UserService", "InstanceInformationService"],
        t.prototype.isUserLoggedIn = function() {
            return this.UserService.isUserLoggedIn()
        }
        ,
        t.prototype.localLogin = function() {
            var t = this;
            this.loginInProgress = !0,
            this.UserService.localLogin(this.login, this.password).then((function() {
                t.login = "",
                t.wrongUserCredentials = !1,
                t.onLoginFinally()
            }
            )).catch((function(e) {
                e.data && "User credentials have expired" === e.data.msg ? (t.wrongUserCredentials = !1,
                t.passwordExpiredResponse = e,
                t.credentialsExpiredError()) : t.wrongUserCredentials = !0,
                t.onLoginFinally()
            }
            ))
        }
        ,
        t.prototype.onLoginFinally = function() {
            this.passwordExpired || (this.password = ""),
            this.loginInProgress = !1
        }
        ,
        t.prototype.credentialsExpiredError = function() {
            this.passwordExpired = !0
        }
        ,
        t.prototype.changeExpiredPassword = function() {
            var t = this;
            this.loginInProgress = !0,
            this.passwordChangeFailed = !1,
            this.UserService.changePassword(this.passwordExpiredResponse.data.user_id, this.login, this.password, this.newPassword).then((function() {
                return t.changePasswordSuccess()
            }
            )).catch((function() {
                return t.changePasswordError()
            }
            ))
        }
        ,
        t.prototype.changePasswordSuccess = function() {
            this.password = this.newPassword,
            this.newPassword = void 0,
            this.repeatNewPassword = void 0,
            this.passwordExpired = !1,
            this.localLogin(),
            this.loginInProgress = !1
        }
        ,
        t.prototype.changePasswordError = function() {
            this.passwordChangeFailed = !0,
            this.loginInProgress = !1
        }
        ,
        t.prototype.isOidcLoginAvailable = function() {
            return !!this.oauthLoginUrl
        }
        ,
        t.prototype.startOidcLogin = function() {
            this.$window.location.href = this.oauthLoginUrl + "?redirect_uri=" + encodeURIComponent(this.$window.location.href)
        }
        ,
        t
    }();
    e.LoginFormController = o;
    var a = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "Login/LoginForm.html",
            this.controller = o,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {}
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.LoginFormDirective = a,
    i.module("IVWebApp").directive("loginForm", a.factory())
}
, function(t, e, n) {
    var i = "Login/LoginForm.html"
      , r = '\x3c!-- Login spinner --\x3e\n<div ng-if="!vm.isUserLoggedIn() && vm.loginInProgress">\n\t<span class="spinner">\n\t\t<img class="in-btn-group" ng-src="' + n(94) + '">\n\t</span>\n</div>\n\n\x3c!-- Login form --\x3e\n<div ng-if="!vm.isUserLoggedIn() && !vm.loginInProgress && !vm.passwordExpired">\n\t<form class="form-horizontal" ng-submit="vm.localLogin()">\n\t\t<div class="form-group login-group">\n\t\t\t\x3c!-- Username input --\x3e\n\t\t\t<input class="login-username form-control"\n\t\t\t       ng-model="vm.login"\n\t\t\t       placeholder="{{\'Username\' | translate}}"\n\t\t\t       init-focus>\n\t\t\t\x3c!-- Password input --\x3e\n\t\t\t<input type="password"\n\t\t\t       class="login-password form-control margin-top-small"\n\t\t\t       ng-model="vm.password"\n\t\t\t       placeholder="{{\'Password\' | translate}}">\n\t\t</div>\n\n\t\t\x3c!-- Wrong credentials error --\x3e\n\t\t<div class="form-group" ng-if="vm.wrongUserCredentials">\n\t\t\t<span class="text-danger" translate>Wrong username or password</span>\n\t\t</div>\n\n\t\t\x3c!-- Login button --\x3e\n\t\t<ok-button type="submit"\n\t\t           ng-show="!vm.isUserLoggedIn()"\n\t\t           ng-disabled="!vm.login">\n\t\t\t<span translate>Sign in</span>\n\t\t</ok-button>\n\n\t\t\x3c!-- OAuth Login button --\x3e\n\t\t<ok-button ng-click="vm.startOidcLogin()"\n\t\t           ng-show="!vm.isUserLoggedIn() && vm.isOidcLoginAvailable()"\n\t\t           class="margin-top-small">\n\t\t\t<span translate>Sign in with OAuth</span>\n\t\t</ok-button>\n\t</form>\n</div>\n\n\x3c!-- Change expired password form --\x3e\n<div ng-if="!vm.isUserLoggedIn() && !vm.loginInProgress && vm.passwordExpired">\n\t<form class="form-horizontal" ng-submit="vm.changeExpiredPassword()">\n\t\t\x3c!-- Password expired form --\x3e\n\t\t<div class="form-group">\n\t\t\t<div class="form-group">\n\t\t\t\t<span class="text-danger" ng-if="!passwordChangeFailed" translate>\n\t\t\t\t\tThis is the first sign in. For security reasons, please change your password.\n\t\t\t\t</span>\n\t\t\t\t<span class="text-danger" ng-if="passwordChangeFailed" translate>Password change has failed</span>\n\t\t\t</div>\n\n\t\t\t\x3c!-- Password input --\x3e\n\t\t\t<div class="form-group margin-bottom-small">\n\t\t\t\t<input type="password" autocomplete="new-password"\n\t\t\t\t       class="form-control"\n\t\t\t\t       ng-model="vm.newPassword"\n\t\t\t\t       placeholder="{{\'New password\' | translate}}"\n\t\t\t\t       init-focus>\n\t\t\t</div>\n\n\t\t\t\x3c!-- Repeat password input --\x3e\n\t\t\t<div class="form-group">\n\t\t\t\t<input type="password" autocomplete="new-password"\n\t\t\t\t       class="form-control"\n\t\t\t\t       ng-model="vm.repeatNewPassword"\n\t\t\t\t       placeholder="{{\'Repeat new password\' | translate}}">\n\t\t\t</div>\n\n\t\t\t\x3c!-- Change password button --\x3e\n\t\t\t<ok-button type="submit"\n\t\t\t           ng-disabled="vm.repeatNewPassword !== vm.newPassword">\n\t\t\t\t<span translate>Change password</span>\n\t\t\t</ok-button>\n\t\t</div>\n\t</form>\n</div>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1411);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "login-form .form-horizontal .form-group{margin-left:0;margin-right:0}login-form button{width:100%}login-form .spinner{display:inline-block;text-align:center;width:100%}login-form .spinner>img{margin:10px auto}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1413),
    n(1414),
    n(50);
    var r = function() {
        function t(t, e) {
            this.LanguageService = t,
            this.PoiService = e,
            this.language = this.LanguageService.getLanguage(this.LanguageService.getCurrentLanguage()),
            this.languages = this.LanguageService.getRegisteredLanguages()
        }
        return t.$inject = ["LanguageService", "PoiService"],
        t.prototype.getCurrentLanguage = function() {
            return this.LanguageService.getCurrentLanguage()
        }
        ,
        t.prototype.getBrowserLocale = function() {
            return this.LanguageService.getBrowserLocale()
        }
        ,
        t.prototype.changeLanguage = function() {
            var t = this.language.key;
            this.LanguageService.setLanguage(t).catch((function() {}
            )),
            this.PoiService.poisChanged.emit()
        }
        ,
        t.prototype.resetToBrowserLanguage = function() {
            this.language = this.LanguageService.resetLanguage()
        }
        ,
        t
    }();
    e.LanguageSwitcherController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "I18N/LanguageSwitcher.html",
            this.controller = r,
            this.controllerAs = "vm"
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.LanguageSwitcherDirective = o,
    i.module("IVWebApp").directive("languageSwitcher", o.factory())
}
, function(t, e) {
    var n = "I18N/LanguageSwitcher.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="panel-body no-padding-top no-padding-bottom">\n\t<label translate>\n\t\tLanguage\n\t</label>\n\t<div class="row">\n\t\t<select class="form-control"\n\t\t        ng-class="(vm.getCurrentLanguage() !== vm.getBrowserLocale()) ? \'less-width\' : \'full-width\'"\n\t\t        title="{{\'Language\' | translate}}"\n\t\t        ng-model="vm.language"\n\t\t        ng-options="language as language.nativeName for language in vm.languages | orderBy:\'nativeName\'"\n\t\t        ng-change="vm.changeLanguage()">\n\t\t</select>\n\t\t<button id="resetLanguageButton" ng-if="vm.getCurrentLanguage() !== vm.getBrowserLocale()"\n\t\t        type="button" class="btn btn-primary" title="{{\'Reset to browser default language\'|translate}}"\n\t\t        ng-click="vm.resetToBrowserLanguage()">\n\t\t\t<i class="fa fa-repeat fa-flip-horizontal"></i>\n\t\t</button>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1415);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "language-switcher .panel-heading{background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom:1px solid #ddd;border-radius:0}language-switcher .form-control{margin-left:15px;float:left}language-switcher .form-control.full-width{width:calc(100% - 30px)}language-switcher .form-control.less-width{width:calc(100% - 70px)}language-switcher #resetLanguageButton{margin-right:10px;margin-top:1px;margin-left:2px;width:37px!important}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e(e, n, i, r, o, a, s, c, l, u, d, p, h) {
            void 0 === s && (s = 1 / 0),
            void 0 === d && (d = []),
            void 0 === p && (p = !1),
            void 0 === h && (h = !0);
            var f = t.call(this, n, i, r, o, a, l, d, h) || this;
            return f.key = e,
            f.isVisible = r,
            f.order = s,
            f.onExit = c,
            f.isPreviewIconVisible = u,
            f.items = d,
            f.isFullscreen = p,
            f.active = !1,
            f
        }
        return r(e, t),
        e
    }(n(589).MenuItem);
    e.SidebarMenuItem = o
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(141)
      , o = n(25)
      , a = (n(15),
    n(38),
    n(24),
    n(147));
    n(1418),
    n(1422),
    n(1426),
    n(1430),
    n(1435),
    n(394),
    n(1440),
    n(1444),
    n(1448),
    n(597);
    var s = n(148)
      , c = (n(31),
    n(21))
      , l = n(81)
      , u = n(6)
      , d = n(0)
      , p = n(0)
      , h = n(38)
      , f = n(15)
      , m = n(24)
      , g = n(31)
      , v = function() {
        function t(t, e, n, i, r) {
            this.SidebarMenuService = t,
            this.ConfigService = e,
            this.ModeService = n,
            this.DatasetRepository = i,
            this.gettext = r,
            this.initSideMenuItem()
        }
        return t.prototype.initSideMenuItem = function() {
            var t = this
              , e = (new s.SidebarMenuItemBuilder).setKey(l.SidebarMenuItemsKey.DATASETS).setTitle(this.gettext("Datasets", void 0, "title")).setIcon(new r.IconInfo("material-icons","dashboard")).setIsVisible((function() {
                return t.ConfigService.getBoolean(o.Configs.MENU_DATASETS_VISIBLE, !0) && (t.ModeService.isNormalMode() || t.ModeService.isNavGraphEditorMode() || t.ModeService.isMeasurementsMode()) && t.DatasetRepository.data.length > 0
            }
            )).setTemplate(c.TemplateName.DATASETS_MENU).setClassCallback((function() {
                return "sidebar-menu-item-datasets"
            }
            )).setOrder(a.SidebarMenuItemsOrder.DATASETS).build();
            this.SidebarMenuService.addItem(e)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(p.ɵɵinject(h.SidebarMenuService),p.ɵɵinject(f.ConfigService),p.ɵɵinject(m.ModeService),p.ɵɵinject(g.DatasetRepository),p.ɵɵinject("gettext"))
        }
        ,
        t.ɵprov = p.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.DatasetsModule = v,
    p.ɵsetClassMetadata(v, [{
        type: d.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: h.SidebarMenuService
        }, {
            type: f.ConfigService
        }, {
            type: m.ModeService
        }, {
            type: g.DatasetRepository
        }, {
            type: void 0,
            decorators: [{
                type: d.Inject,
                args: ["gettext"]
            }]
        }]
    }
    ), null),
    i.module("IVWebApp").service("DatasetsModule", u.downgradeInjectable(v))
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var i = n(2);
        n(1419),
        n(1420);
        var r = n(55)
          , o = function() {
            function e(t, e) {
                this.ModeService = t,
                this.SiteModelService = e
            }
            return e.$inject = ["ModeService", "SiteModelService"],
            e.prototype.toggleDatasetSelection = function() {
                this.areNoDatasetsSelected() ? this.selectDatasets() : this.deselectDatasets()
            }
            ,
            e.prototype.selectDatasets = function() {
                this.parentController.selectDatasets(this.datasets)
            }
            ,
            e.prototype.deselectDatasets = function() {
                this.parentController.deselectDatasets(this.datasets)
            }
            ,
            e.prototype.areAllDatasetsSelected = function() {
                return this.parentController.areAllDatasetsSelected(this.datasets)
            }
            ,
            e.prototype.areNoDatasetsSelected = function() {
                return this.parentController.areNoDatasetsSelected(this.datasets)
            }
            ,
            e.prototype.showAlertItemInfo = function() {
                return this.datasets && this.datasets.length && this.datasets.every((function(t) {
                    return !t.canWrite
                }
                )) && this.treeConfig.showDatasetLockButtons
            }
            ,
            e.prototype.zoomToDatasets = function() {
                this.parentController.zoomToDatasets(this.datasets)
            }
            ,
            e.prototype.toggleLockDatasets = function() {
                this.areAllDatasetsLocked() ? this.unlockDatasets() : this.lockDatasets()
            }
            ,
            e.prototype.lockDatasets = function() {
                var t = this.getDatasetsWithWritePermission();
                this.parentController.lockDatasets(t)
            }
            ,
            e.prototype.unlockDatasets = function() {
                var t = this.getDatasetsWithWritePermission();
                this.parentController.unlockDatasets(t)
            }
            ,
            e.prototype.getDatasetsWithWritePermission = function() {
                return this.datasets.filter((function(t) {
                    return t.canWrite
                }
                ))
            }
            ,
            e.prototype.areAllDatasetsLocked = function() {
                return !!this.parentController.areAllDatasetsLocked && this.parentController.areAllDatasetsLocked(this.datasets)
            }
            ,
            e.prototype.jumpToSiteModelEntity = function(t) {
                this.SiteModelService.selectModel(t, !0)
            }
            ,
            e.prototype.showSimpleAddButton = function(t) {
                return this.ModeService.isSiteModelEditorMode() && t && t.type !== r.SiteModelType.FREE_SPACE_NAVIGATION && (t.type !== r.SiteModelType.BUILDING || !t.children.length)
            }
            ,
            e.prototype.showExtendedAddButton = function(t) {
                return this.ModeService.isSiteModelEditorMode() && t && t.type === r.SiteModelType.BUILDING && t.children.length > 0
            }
            ,
            e.prototype.dropdownToggle = function(e) {
                t(e.currentTarget).parent().toggleClass("open")
            }
            ,
            e
        }();
        e.DatasetGroupToolbarController = o;
        var a = function() {
            function t() {
                this.restrict = "E",
                this.templateUrl = "DatasetUI/DatasetGroupToolbar.html",
                this.controller = o,
                this.controllerAs = "vm",
                this.scope = !0,
                this.bindToController = {
                    datasets: "=",
                    parentController: "=",
                    siteModelEntity: "=",
                    treeConfig: "="
                }
            }
            return t.factory = function() {
                return function() {
                    return new t
                }
            }
            ,
            t
        }();
        e.DatasetGroupToolbarDirective = a,
        i.module("IVWebApp").directive("datasetGroupToolbar", a.factory())
    }
    ).call(this, n(19))
}
, function(t, e) {
    var n = "DatasetUI/DatasetGroupToolbar.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="dataset-grp-toolbar" ng-click="$event.stopPropagation()">\n\t<button class="btn btn-default btn-borderless"\n\t        title="{{\'Select all\'|translate}}"\n\t        ng-if="vm.treeConfig.showDatasetSelectButtons && vm.treeConfig.showDatasets && vm.datasets.length"\n\t        ng-click="vm.toggleDatasetSelection(vm.datasets)">\n\t\t<i class="fa"\n\t\t   ng-class="vm.areAllDatasetsSelected(vm.datasets) ? \'fa-check-square-o\' : \'fa-square-o\'"></i>\n\t</button>\n\t<button class="btn btn-default btn-borderless"\n\t        ng-click="vm.jumpToSiteModelEntity(vm.siteModelEntity)"\n\t        ng-if="vm.treeConfig.showSiteModelJumpButtons && vm.siteModelEntity && vm.siteModelEntity.globalCenter"\n\t        title="{{\'Show site model entity details\'|translate}}">\n\t\t<i class="glyphicon glyphicon-info-sign"></i>\n\t</button>\n\t<button class="btn btn-default btn-borderless"\n\t        ng-if="vm.treeConfig.showDatasetZoomButtons && vm.datasets.length"\n\t        ng-click="vm.zoomToDatasets()"\n\t        title="{{\'Zoom map to dataset\'|translate}}">\n\t\t<i class="fa fa-crosshairs"></i>\n\t</button>\n\t<button class="btn btn-default btn-borderless"\n\t        ng-if="vm.treeConfig.showDatasetLockButtons && vm.treeConfig.showDatasets && !vm.showAlertItemInfo()"\n\t        title="{{\'Lock transformation\'|translate}}"\n\t        ng-click="vm.toggleLockDatasets()">\n\t\t<i class="fa" ng-class="vm.areAllDatasetsLocked() ? \'fa-lock\' : \'fa-unlock-alt\'"></i>\n\t</button>\n\t\x3c!-- \'no write permission to edit any dataset in this group\' alert --\x3e\n\t<div class="alert-item-info"\n\t     ng-if="vm.showAlertItemInfo()"\n\t     title="{{\'You do not have permission to edit these datasets\' | translate}}">\n\t\t<span class="fa fa-exclamation-triangle"></span>\n\t</div>\n\t<button class="btn btn-default btn-borderless"\n\t        ng-if="vm.treeConfig.showSiteModelEditButtons && vm.showSimpleAddButton(vm.siteModelEntity) && !vm.parentController.isCuttingMode()"\n\t        title="{{\'Add sub-entity\'|translate}}"\n\t        ng-disabled="vm.parentController.isDrawingMode()"\n\t        ng-click="vm.parentController.addEntity(undefined, vm.siteModelEntity, false)">\n\t\t<i class="fa fa-plus"></i>\n\t</button>\n\t<div class="btn-group dropdown" ng-if="vm.treeConfig.showSiteModelEditButtons && vm.showExtendedAddButton(vm.siteModelEntity) && !vm.parentController.isCuttingMode()">\n\t\t<button class="btn btn-default btn-borderless dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" ng-click="vm.dropdownToggle($event)"\n\t\t        ng-disabled="vm.parentController.isDrawingMode()"\n\t\t        title="{{\'Add floor\'|translate}}">\n\t\t\t<i class="fa fa-plus"></i>\n\t\t\t<span class="caret"></span>\n\t\t</button>\n\t\t<ul class="dropdown-menu dropdown-center" ng-click="vm.dropdownToggle($event)">\n\t\t\t<li ng-click="vm.parentController.addEntity(undefined, vm.siteModelEntity, false)" class="text-center">\n\t\t\t\t<i class="fa fa-plus"></i>\n\t\t\t\t<span translate>Add floor on top</span>\n\t\t\t</li>\n\t\t\t<li ng-click="vm.parentController.addEntity(undefined, vm.siteModelEntity, true)" class="text-center">\n\t\t\t\t<i class="fa fa-plus"></i>\n\t\t\t\t<span translate>Add floor on bottom</span>\n\t\t\t</li>\n\t\t</ul>\n\t</div>\n\t<button class="btn btn-default btn-borderless"\n\t        ng-if="vm.treeConfig.showSiteModelEditButtons && !vm.parentController.isCuttingMode() && vm.siteModelEntity"\n\t        ng-disabled="vm.parentController.isDrawingMode()"\n\t        title="{{\'Edit entity\'|translate}}"\n\t        ng-click="vm.parentController.editEntity(vm.siteModelEntity);$event.stopPropagation()">\n\t\t<i class="fa fa-pencil"></i>\n\t</button>\n\t<button class="btn btn-default btn-borderless"\n\t        ng-if="vm.treeConfig.showSiteModelEditButtons && vm.parentController.isCuttingMode() && vm.siteModelEntity && !vm.siteModelEntity.drawing"\n\t        title="{{\'Use this entity\\\'s outline as hole\'|translate}}"\n\t        ng-click="vm.parentController.useOutlineAsHole(vm.siteModelEntity);$event.stopPropagation()">\n\t\t<i class="fa fa-dot-circle-o"></i>\n\t</button>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1421);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, ".dataset-grp-toolbar{position:absolute;top:0;right:10px;display:inline-block;vertical-align:middle;margin-left:1em;background:#fff}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1423),
    n(1424);
    var r = function() {
        function t(t) {
            this.AlignmentService = t
        }
        return t.$inject = ["AlignmentService"],
        t.prototype.showAlertItemInfo = function() {
            return this.treeConfig.checkForMapData ? !this.dataset.canWrite && this.AlignmentService.mapDataPresent[this.dataset.id] : !this.dataset.canWrite && this.treeConfig.showDatasetLockButtons
        }
        ,
        t.prototype.zoomToDataset = function() {
            this.AlignmentService.zoomToDatasets([this.dataset])
        }
        ,
        t.prototype.isNotSelected = function() {
            return !this.AlignmentService.isDatasetSelected(this.dataset)
        }
        ,
        t.prototype.hasMapData = function() {
            return this.AlignmentService.mapDataPresent[this.dataset.id]
        }
        ,
        t.prototype.isPrimaryDataset = function() {
            return this.AlignmentService.primary === this.dataset
        }
        ,
        t.prototype.toggleSelection = function() {
            this.parentController.toggleSelection(this.dataset)
        }
        ,
        t.prototype.isDatasetSelected = function() {
            return this.parentController.isDatasetSelected(this.dataset)
        }
        ,
        t.prototype.setAsPrimary = function() {
            this.parentController.setAsPrimary(this.dataset)
        }
        ,
        t.prototype.toggleLock = function() {
            this.parentController.toggleLock(this.dataset)
        }
        ,
        t.prototype.setResourceToEdit = function() {
            this.parentController.setResourceToEdit(this.dataset)
        }
        ,
        t.prototype.jumpToDataset = function() {
            this.parentController.jumpToDataset(this.dataset, this.siteModelEntity)
        }
        ,
        t.prototype.colorChanged = function() {
            this.AlignmentService.stateDirty = !0
        }
        ,
        t
    }();
    e.DatasetController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DatasetUI/Dataset.html",
            this.controller = r,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                dataset: "=",
                siteModelEntity: "=?",
                parentController: "=",
                treeConfig: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.DatasetDirective = o,
    i.module("IVWebApp").directive("dataset", o.factory())
}
, function(t, e) {
    var n = "DatasetUI/Dataset.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="list-group-item"\n     ng-click="(vm.treeConfig.checkForMapData ? vm.hasMapData() : true) ? vm.toggleSelection() : \'\'"\n     ng-class="{\n\t\t\t    \'active\': vm.isDatasetSelected(),\n\t\t\t    \'disabled\': vm.treeConfig.checkForMapData && !vm.hasMapData(),\n\t\t\t\t\'first\': $first ,\n\t\t\t\t\'middle\': $middle,\n\t\t\t\t\'last\': $last\n\t }">\n\t<div class="data-set-controls">\n\t\t<div ng-if="vm.treeConfig.checkForMapData ? vm.hasMapData() : true"\n\t\t     ng-click="$event.stopPropagation()">\n\t\t\t\x3c!-- set as primary dataset --\x3e\n\t\t\t<button class="btn btn-default btn-borderless"\n\t\t\t        ng-disabled="vm.isNotSelected()"\n\t\t\t        ng-click="vm.setAsPrimary()"\n\t\t\t        ng-if="vm.treeConfig.showDatasetReferenceMarkerButtons"\n\t\t\t        title="{{\'Select as reference dataset\' | translate}}">\n\t\t\t\t<i ng-class="vm.isPrimaryDataset() ? \'fa fa-star\' : \'fa fa-star-o\'"></i>\n\t\t\t</button>\n\t\t\t\x3c!-- zoom to dataset --\x3e\n\t\t\t<button class="btn btn-default btn-borderless"\n\t\t\t        ng-click="vm.zoomToDataset()"\n\t\t\t        ng-if="vm.treeConfig.showDatasetZoomButtons"\n\t\t\t        title="{{\'Zoom map to dataset\' | translate}}">\n\t\t\t\t<i class="fa fa-crosshairs"></i>\n\t\t\t</button>\n\t\t\t\x3c!-- lock/unlock dataset --\x3e\n\t\t\t<button class="btn btn-default btn-borderless"\n\t\t\t        ng-disabled="vm.isNotSelected()"\n\t\t\t        ng-click="vm.toggleLock()"\n\t\t\t        ng-if="vm.treeConfig.showDatasetLockButtons && !vm.showAlertItemInfo()"\n\t\t\t        title="{{\'Lock transformation\' | translate}}">\n\t\t\t\t<span ng-class="vm.dataset.locked ? \'fa fa-lock\' : \'fa fa-unlock-alt\'"></span>\n\t\t\t</button>\n\t\t\t\x3c!-- \'no write permission to edit this dataset\' alert --\x3e\n\t\t\t<div class="alert-item-info"F\n\t\t\t     ng-if="vm.showAlertItemInfo()"\n\t\t\t     title="{{\'You do not have permission to edit this dataset\' | translate}}">\n\t\t\t\t<span class="fa fa-exclamation-triangle"></span>\n\t\t\t</div>\n\t\t\t\x3c!-- edit dataset modal --\x3e\n\t\t\t<button class="btn btn-default btn-borderless"\n\t\t\t        ng-click="vm.setResourceToEdit()"\n\t\t\t        ng-if="vm.treeConfig.showDatasetEditButtons && vm.dataset.canWrite"\n\t\t\t        title="{{\'Edit dataset\' | translate}}">\n\t\t\t\t<span class="fa fa-pencil"></span>\n\t\t\t</button>\n\t\t\t\x3c!-- jump to dataset --\x3e\n\t\t\t<button class="btn btn-default btn-borderless"\n\t\t\t        ng-click="vm.jumpToDataset()"\n\t\t\t        ng-if="vm.treeConfig.showDatasetJumpButtons"\n\t\t\t        title="{{\'Jump to dataset\' | translate}}">\n\t\t\t\t<i class="glyphicon glyphicon-share-alt"></i>\n\t\t\t</button>\n\t\t</div>\n\n\t\t\x3c!-- \'no map data for this dataset\' alert --\x3e\n\t\t<div class="alert-item-info"\n\t\t     ng-if="vm.treeConfig.checkForMapData && !vm.hasMapData()">\n\t\t\t<span class="fa fa-exclamation-triangle"></span>\n\t\t\t<span translate>No map data</span>\n\t\t</div>\n\n\t</div>\n\t<div class="data-set-info">\n\t\t\x3c!-- dataset icon --\x3e\n\t\t<div class="data-set-icon color-pickable" colorpicker="hex"\n\t\t     ng-if="vm.treeConfig.showColorpicker"\n\t\t     ng-init="vm.dataset.color"\n\t\t     ng-model="vm.dataset.color"\n\t\t     ng-change="vm.colorChanged()"\n\t\t     ng-click="$event.stopPropagation();"\n\t\t     ng-style="{\'background-color\': vm.dataset.color}"></div>\n\t\t<div class="data-set-icon"\n\t\t     ng-if="!vm.treeConfig.showColorpicker"\n\t\t     ng-style="{\'background-color\': vm.dataset.color}"></div>\n\n\t\t\x3c!-- dataset title --\x3e\n\t\t<div class="dataset-title-container">\n\t\t\t<div class="dataset-title">{{vm.dataset.title || "&nbsp;"}}</div>\n\t\t\t<div class="dataset-mgmt-name">{{vm.dataset.name}}</div>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1425);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "dataset .list-group-item{margin-bottom:-1px;width:100%;overflow:hidden;border:none}dataset .list-group-item.first{border-top-right-radius:4px!important;border-top-left-radius:4px!important}dataset .list-group-item.middle{border-radius:0}dataset .list-group-item.last{border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important;margin-bottom:0}dataset .list-group-item:first-child,dataset .list-group-item:last-child{border-radius:0}dataset .list-group-item:hover{cursor:default}dataset .list-group-item.active{z-index:0}dataset .list-group-item.active .dataset-mgmt-name,dataset .list-group-item.active .fa{color:#fff}dataset .list-group-item.active .fa.fa-unlock-alt{opacity:.3}dataset .list-group-item.active .glyphicon{color:#fff}dataset .dataset-grp{width:100%}dataset .dataset-title-container{display:inline-block;width:calc(100% - 2.2em);white-space:nowrap}dataset .dataset-title{overflow:hidden;text-overflow:ellipsis;width:100%}dataset .data-set-icon{margin-top:-1.6em;border:1px solid #adadad}dataset .data-set-icon.color-pickable{cursor:pointer}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(7);
    n(1427),
    n(1428);
    var o = function() {
        function t(t, e, n) {
            var i = this;
            this.datasets = t.data,
            this.siteModel = e.data,
            this.updateUnassignedDatasets();
            var r = [t.entityCreated.connect((function() {
                return i.updateUnassignedDatasets()
            }
            )), t.entityRemoved.connect((function() {
                return i.updateUnassignedDatasets()
            }
            )), e.entityCreated.connect((function() {
                return i.updateUnassignedDatasets()
            }
            )), e.entityRemoved.connect((function() {
                return i.updateUnassignedDatasets()
            }
            ))];
            n.$on("$destroy", (function() {
                return r.forEach((function(t) {
                    return t.disconnect()
                }
                ))
            }
            ))
        }
        return t.$inject = ["DatasetRepository", "SiteModelRepository", "$scope"],
        Object.defineProperty(t.prototype, "datasets", {
            get: function() {
                return this._datasets
            },
            set: function(t) {
                this._datasets = t,
                this.updateUnassignedDatasets()
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.updateUnassignedDatasets = function() {
            this.unassignedDatasets = r.filter(this.datasets, (function(t) {
                return 0 === t.siteModelEntities.length
            }
            ))
        }
        ,
        t
    }();
    e.DatasetTreeController = o;
    var a = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DatasetUI/DatasetTree.html",
            this.controller = o,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                parentController: "=",
                siteModelEditor: "=",
                datasets: "=?",
                treeConfig: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.DatasetTreeDirective = a,
    i.module("IVWebApp").directive("datasetTree", a.factory())
}
, function(t, e) {
    var n = "DatasetUI/DatasetTree.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="multiple-dataset-selector">\n\t<h4>\n\t\t<span>{{vm.treeConfig.title | translate:"title"}}</span>\n\t\t<toggle-switch class="float-right"\n\t\t               title="{{\'Show/hide datasets\' | translate}}"\n\t\t               ng-model="vm.treeConfig.showDatasets"\n\t\t               ng-if="vm.treeConfig.showDatasetVisibilitySwitcher && !vm.unassignedDatasets.length"></toggle-switch>\n\t</h4>\n\t<div class="tree-wrapper">\n\t\t<site-model-collection sites="vm.siteModel"\n\t\t                       parent-controller="vm.parentController"\n\t\t                       site-model-editor="vm.siteModelEditor"\n\t\t                       datasets="vm.datasets"\n\t\t                       tree-config="vm.treeConfig">\n\t\t</site-model-collection>\n\n\t\t<div ng-if="vm.unassignedDatasets.length > 0"\n\t\t     class="unassigned-datasets margin-bottom-small">\n\t\t\t<div data-toggle="collapse" data-target="#unassigned-datasets" role="button">\n\t\t\t\t<i class="collapse-expand-chevron"></i>\n\t\t\t\t<span>\n\t\t\t\t\t<strong translate translate-context="title">Unassigned Datasets</strong>\n\t\t\t\t</span>\n\t\t\t\t<dataset-group-toolbar datasets="vm.unassignedDatasets"\n\t\t\t\t                       show-datasets="true"\n\t\t\t\t                       parent-controller="vm.parentController"\n\t\t\t\t                       tree-config="vm.treeConfig"></dataset-group-toolbar>\n\t\t\t</div>\n\t\t\t<div class="list-group dataset-grp collapse in" id="unassigned-datasets">\n\t\t\t\t<dataset ng-repeat="dataset in vm.unassignedDatasets | orderBy: \'title\'"\n\t\t\t\t         dataset="dataset"\n\t\t\t\t         parent-controller="vm.parentController"\n\t\t\t\t         tree-config="vm.treeConfig">\n\t\t\t\t</dataset>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1429);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "dataset-tree .list-group{padding-left:20px;margin-bottom:0}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var i = n(2)
          , r = n(7);
        n(1431),
        n(1432),
        n(430);
        var o = n(220)
          , a = n(8)
          , s = function() {
            function e(t, e, n, i, r, a, s, c, l, u) {
                this.GeoTransformationService = t,
                this.ImageService = e,
                this.IV = n,
                this.PointCloudMenuService = i,
                this.ViewMenuService = r,
                this.GroupService = a,
                this.ModeService = s,
                this.SiteModelRepository = c,
                this.DatasetRepository = l,
                this.gettext = u,
                this.siteModel = this.SiteModelRepository.data,
                this.datasetEditorModel = this.DatasetRepository.create(),
                this.treeConfig = o.DatasetTreeConfigurationFactory.createDatasetMenuConfig(this.gettext("Datasets", void 0, "title"))
            }
            return e.$inject = ["GeoTransformationService", "ImageService", "IV", "PointCloudMenuService", "ViewMenuService", "GroupService", "ModeService", "SiteModelRepository", "DatasetRepository", "gettext"],
            e.prototype.areAllDatasetsSelected = function(t) {
                return r.every(t, (function(t) {
                    return t.pointCloudVisible
                }
                ))
            }
            ,
            e.prototype.areNoDatasetsSelected = function(t) {
                return r.every(t, (function(t) {
                    return !t.pointCloudVisible
                }
                ))
            }
            ,
            e.prototype.selectDatasets = function(t) {
                for (var e = 0, n = t; e < n.length; e++) {
                    n[e].pointCloudVisible = !0
                }
            }
            ,
            e.prototype.deselectDatasets = function(t) {
                for (var e = 0, n = t; e < n.length; e++) {
                    n[e].pointCloudVisible = !1
                }
            }
            ,
            e.prototype.toggleSelection = function(t) {
                t.pointCloudVisible = !t.pointCloudVisible
            }
            ,
            e.prototype.isDatasetSelected = function(t) {
                return t.pointCloudVisible
            }
            ,
            e.prototype.jumpToDataset = function(t, e) {
                var n = this;
                this.ImageService.getFirstImageInDataset(t, e).then((function(e) {
                    return n.GeoTransformationService.checkAndFixOffset(t),
                    e ? n.IV.moveToImage(e) : (t.pointCloudVisible = !0,
                    n.PointCloudMenuService.showPointClouds(!0),
                    n.ViewMenuService.showPanoramas(!1),
                    n.IV.moveToGeoLocation(t.getCenter(), !0, void 0, void 0, void 0, void 0, !0))
                }
                )).catch(a.handleWarning)
            }
            ,
            e.prototype.setResourceToEdit = function(e) {
                var n = e.pcObj_;
                e.pcObj_ = void 0,
                this.datasetEditorModel.copy(e),
                e.pcObj_ = n,
                t("#editDataset").modal()
            }
            ,
            e
        }();
        e.DatasetMenuController = s;
        var c = function() {
            function t() {
                this.restrict = "E",
                this.templateUrl = "DatasetUI/DatasetMenu.html",
                this.controller = s,
                this.controllerAs = "vm"
            }
            return t.factory = function() {
                return function() {
                    return new t
                }
            }
            ,
            t
        }();
        e.DatasetMenuDirective = c,
        i.module("IVWebApp").directive("datasetMenu", c.factory())
    }
    ).call(this, n(19))
}
, function(t, e) {
    var n = "DatasetUI/DatasetMenu.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="panel no-border no-shadow">\n\t<div class="panel-body">\n\t\t<dataset-tree parent-controller="vm" tree-config="vm.treeConfig"></dataset-tree>\n\t</div>\n</div>\n\n\x3c!--modal for editing dataset--\x3e\n<modal>\n\t<dataset-editor model="vm.datasetEditorModel"></dataset-editor>\n</modal>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1433);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "", ""]),
    t.exports = e
}
, function(t, e, n) {
    var i = "Core/Misc/WarningDialog.html"
      , r = '<modal>\n\t<div class="modal fade" id="{{modalId}}" tabindex="-1" role="dialog" aria-hidden="false"\n\t     data-backdrop="static">\n\t\t<div class="modal-dialog">\n\t\t\t<div class="modal-content">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t\x3c!-- Close button --\x3e\n\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t     ng-click="parentController.warningCancelHandler()"\n\t\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}"\n\t\t\t\t\t     data-dismiss="modal">\n\t\t\t\t\t\x3c!-- Title --\x3e\n\t\t\t\t\t<h4>\n\t\t\t\t\t\t{{parentController.warningDialogConfig.TITLE | translate:"title"}}\n\t\t\t\t\t</h4>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t\x3c!-- Body --\x3e\n\t\t\t\t\t<p style="margin: 14px 0">\n\t\t\t\t\t\t{{parentController.warningDialogConfig.TEXT | translate}}\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-footer" style="margin-top: 0">\n\t\t\t\t\t\x3c!-- Control buttons --\x3e\n\t\t\t\t\t<cancel-button ng-click="parentController.warningCancelHandler()" data-dismiss="modal"></cancel-button>\n\t\t\t\t\t<ok-button ng-click="parentController.warningContinueHandler()">\n\t\t\t\t\t\t<span translate>Continue</span>\n\t\t\t\t\t</ok-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2);
    n(1436),
    n(431);
    var a = function(t) {
        function e(e, n, i, r) {
            return t.call(this, e, n, i, r) || this
        }
        return r(e, t),
        e.$inject = ["DatasetRepository", "gettextCatalog", "$element", "ErrorService"],
        e
    }(n(185).EntityEditorController);
    e.DatasetEditorController = a;
    var s = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DatasetUI/DatasetEditor.html",
            this.controller = a,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                model: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.DatasetEditorDirective = s,
    o.module("IVWebApp").directive("datasetEditor", s.factory())
}
, function(t, e, n) {
    var i = "DatasetUI/DatasetEditor.html"
      , r = '<div class="modal fade" id="editDataset" tabindex="-1" role="dialog" aria-labelledby="editDataset"\n     aria-hidden="true" data-backdrop="static">\n\t<div class="modal-dialog">\n\t\t<div class="modal-content">\n\n\t\t\t<div class="modal-header">\n\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}"\n\t\t\t\t     data-dismiss="modal">\n\t\t\t\t<h4 translate translate-context="title">\n\t\t\t\t\tEdit Dataset\n\t\t\t\t</h4>\n\t\t\t</div>\n\n\t\t\t<div class="modal-body">\n\t\t\t\t<div class="form-horizontal">\n\t\t\t\t\t\x3c!-- Title --\x3e\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<label class="col-sm-3 control-label" for="datasetTitleEdit" translate>Title</label>\n\t\t\t\t\t\t<div class="col-sm-9">\n\t\t\t\t\t\t\t<input class="form-control" id="datasetTitleEdit" type="text" ng-model="vm.model.title" init-focus>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- Permissions Editor --\x3e\n\t\t\t\t\t<permission-editor\n\t\t\t\t\t\t\tmodel="vm.model"\n\t\t\t\t\t\t\tmodel-type="\'dataset\'"\n\t\t\t\t\t\t\tcol-span="3">\n\t\t\t\t\t</permission-editor>\n\t\t\t\t</div>\n\n\t\t\t\t<span class="text-danger" ng-show="vm.error">\n\t\t\t\t\t{{vm.error.text}}: {{vm.error.statusText}} ({{vm.error.status}})\n\t\t\t\t</span>\n\t\t\t\t<div ng-show="!!vm.error.details">\n\t\t\t\t\t{{vm.error.details}}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="modal-footer">\n\t\t\t\t<cancel-button data-dismiss="modal">\n\t\t\t\t</cancel-button>\n\t\t\t\t<ok-button ng-click="vm.save()">\n\t\t\t\t</ok-button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e) {
    var n = "Core/Misc/PermissionEditor.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '\x3c!-- Permissions warning dialog --\x3e\n<warning-dialog modal-id="modelType + \'-\' + model.id + \'-\' + vm.warningDialogConfig.POSTFIX" parent-controller="vm"></warning-dialog>\n\n<div ng-show="vm.UserService.isUserLoggedIn() && model.security.canWrite !== false" class="form-group">\n\t<div class="{{colSpan ? \'\' : \'form-group col-sm-6 no-padding-left\'}}">\n\t\t<label translate translate-context="noun"\n\t\t       class="text-overflow-ellipsis control-label {{colSpan ? \'col-sm-\' + colSpan : \'col-sm-12 no-padding-left no-padding-right\'}}">\n\t\t\tView\n\t\t</label>\n\t\t<div class="{{colSpan ? \'margin-bottom-small col-sm-\' + (6 - colSpan) : \'\'}}">\n\t\t\t<select id="permissionsViewSettings" class="form-control"\n\t\t\t        ng-model="model.security.groupRead"\n\t\t\t        ng-options="group.id as (vm.getGroupIndent(group, \'-\') + \' \' + group.name) for group in vm.GroupService.getGroupsAsArray()"\n\t\t\t        options-disabled="!vm.isGroupSelectable(group) for group in vm.GroupService.getGroupsAsArray()"\n\t\t\t        ng-change="vm.groupChanged(model, modelType, \'groupRead\', {{model.security.groupRead}})">\n\t\t\t</select>\n\t\t</div>\n\t</div>\n\n\t<div class="{{colSpan ? \'\' : \'form-group col-sm-6 no-padding-left\'}}">\n\t\t<label translate class="text-overflow-ellipsis control-label {{colSpan ? \'col-sm-\' + colSpan : \'col-sm-12 no-padding-left no-padding-right\'}}">\n\t\t\tEdit\n\t\t</label>\n\t\t<div class="{{colSpan ? \'margin-bottom-small col-sm-\' + (6 - colSpan) : \'\'}}">\n\t\t\t<select id="permissionsEditSettings" class="form-control"\n\t\t\t        ng-model="model.security.groupWrite"\n\t\t\t        ng-options="group.id as (vm.getGroupIndent(group, \'-\') + \' \' + group.name) for group in vm.GroupService.getGroupsAsArray()"\n\t\t\t        options-disabled="!vm.isGroupSelectable(group) for group in vm.GroupService.getGroupsAsArray()"\n\t\t\t        ng-change="vm.groupChanged(model, modelType, \'groupWrite\', {{model.security.groupWrite}})">\n\t\t\t</select>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1439);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "permission-editor .text-overflow-ellipsis{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1441),
    n(1442);
    var r = n(7)
      , o = n(20)
      , a = n(8);
    n(629);
    var s = function() {
        function t(e, n, i, r) {
            var o = this;
            this.SiteModelEditorService = e,
            this.SiteModelToDatasetsService = n;
            var a = this.SiteModelToDatasetsService.mappingUpdated.connect((function() {
                return o.updateDatasets()
            }
            ));
            this.childListId = "child-list-" + t.UNIQUE++;
            var s = i.onSelect.connect((function(t, e, n) {
                t.id === o.siteModelEntity.id && e && o.collapseEntity(n)
            }
            ));
            r.$on("$destroy", (function() {
                a.disconnect(),
                s.disconnect()
            }
            ))
        }
        return t.$inject = ["SiteModelEditorService", "SiteModelToDatasetsService", "SiteModelService", "$scope"],
        Object.defineProperty(t.prototype, "siteModelEntity", {
            get: function() {
                return this._siteModelEntity
            },
            set: function(t) {
                this._siteModelEntity = t,
                this.updateDatasets()
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "datasets", {
            get: function() {
                return this._datasets
            },
            set: function(e) {
                this._datasets = e,
                this.updateDatasets(),
                this.datasetsOpened = e.length < t.START_OPEN_THRESHOLD
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.updateDatasets = function() {
            if (this.siteModelEntity && this.siteModelEntity.id) {
                var t = this.SiteModelToDatasetsService.getDatasetsWhereMostSpecificIs(this._siteModelEntity)
                  , e = this.SiteModelToDatasetsService.getDatasetsFromChildren(this._siteModelEntity);
                e.push.apply(e, t),
                this.filteredDescendantDatasets = r.intersection(e, this._datasets),
                this.siteModelDatasets = r.intersection(t, this._datasets)
            }
        }
        ,
        t.prototype.selectEntity = function(t, e) {
            t.stopImmediatePropagation(),
            this.SiteModelEditorService.selectEntity(e)
        }
        ,
        t.prototype.collapseEntity = function(t) {
            var e = i.element(document.getElementById("" + this.childListId));
            if (!(e.hasClass("in") && t || e.hasClass("collapsing"))) {
                var n = e.prev(".site-model-button");
                n && n.toggleClass("collapsed"),
                e.collapse("toggle")
            }
        }
        ,
        t.UNIQUE = 0,
        t.START_OPEN_THRESHOLD = 20,
        t
    }();
    e.SiteModelController = s;
    var c = function() {
        function t(t, e) {
            var n = this;
            this.$compile = t,
            this.$timeout = e,
            this.controller = s,
            this.controllerAs = "vm",
            this.restrict = "E",
            this.templateUrl = "SiteModelUI/SiteModel.html",
            this.scope = !0,
            this.bindToController = {
                datasets: "=",
                siteModelEntity: "=",
                siteModelEditor: "=",
                parentController: "=",
                treeConfig: "="
            },
            this.link = {
                pre: function(t, e, i, r) {
                    return n.preLink(t, e, i, r)
                }
            }
        }
        return t.factory = function() {
            return ["$compile", "$timeout", function(e, n) {
                return new t(e,n)
            }
            ]
        }
        ,
        t.prototype.preLink = function(t, e, n, r) {
            var s = this
              , c = e.find("children");
            i.isArray(t.site.children) && c.append('<site-model-collection sites="site.children" tree-config="treeConfig" site-model-editor="siteModelEditor" parent-controller="parentController" datasets="datasets"></site-model-collection>'),
            this.$timeout((function() {
                s.$compile(c.contents())(t),
                i.element(e[0].querySelector("#" + r.childListId)).on("show.bs.collapse", (function() {
                    r.datasetsOpened = !0,
                    o.invalidateAngular()
                }
                ))
            }
            )).catch(a.handleWarning)
        }
        ,
        t
    }();
    e.SiteModelDirective = c,
    i.module("IVWebApp").directive("siteModel", c.factory())
}
, function(t, e) {
    var n = "SiteModelUI/SiteModel.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="site-model-tree-entity"\n     ng-hide="!vm.treeConfig.showEmptySiteModelEntities && vm.filteredDescendantDatasets.length === 0">\n\t<div data-toggle="collapse"\n\t     data-target="#{{vm.childListId}}"\n\t     role="button" class="site-model-button"\n\t     ng-click="vm.siteModelEditor && vm.selectEntity($event, vm.siteModelEntity)"\n\t     ng-class="{\'collapsed\': !vm.datasetsOpened, \'selected\': vm.siteModelEntity.selected}"\n\t     ng-style="{\'padding-right\': vm.treeConfig.siteModelTitlePadding + \'px\'}">\n\t\t<i ng-class="(vm.treeConfig.showDatasets && vm.siteModelDatasets.length > 0) || vm.siteModelEntity.children.length > 0 ? \'collapse-expand-chevron\' : \'not-collapsible\'"></i>\n\t\t<img ng-src="{{vm.siteModelEntity.getTypeIcon()}}" class="siteModelIcon">\n\t\t<div class="long-title" title="{{vm.siteModelEntity.name}}">\n\t\t\t<strong class="uppercase">{{vm.siteModelEntity.getTypeDisplayName() | translate}}</strong> {{vm.siteModelEntity.name}}\n\t\t</div>\n\t\t<dataset-group-toolbar\n\t\t\t\tdatasets="vm.filteredDescendantDatasets"\n\t\t\t\tparent-controller="vm.parentController"\n\t\t\t\tsite-model-entity="vm.siteModelEntity"\n\t\t\t\ttree-config="vm.treeConfig">\n\t\t</dataset-group-toolbar>\n\t</div>\n\t<div id="{{vm.childListId}}"\n\t     class="dataset-grp collapse"\n\t     ng-class="{\'in\': vm.datasetsOpened, \'site-model-grp\' : vm.siteModelEditor}">\n\t\t<div ng-if="vm.treeConfig.showDatasets === true && vm.siteModelDatasets.length > 0 && vm.datasetsOpened"\n\t\t     class="list-group">\n\t\t\t<dataset ng-repeat="dataset in vm.siteModelDatasets | orderBy: \'title\'"\n\t\t\t         dataset="dataset"\n\t\t\t         site-model-entity="vm.siteModelEntity"\n\t\t\t         parent-controller="vm.parentController"\n\t\t\t         tree-config="vm.treeConfig">\n\t\t\t</dataset>\n\t\t</div>\n\t\t<children></children>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1443);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, ".multiple-dataset-selector>div>site-model-collection>.site-model-collection{margin-left:-20px}.site-model-tree-entity{padding:.2em 0 .2em 20px}.site-model-tree-entity img{display:inline}.site-model-tree-entity span{white-space:nowrap}.site-model-tree-entity>[role=button]{position:relative}.site-model-tree-entity>.list-group{margin-left:20px;margin-bottom:0}.site-model-tree-entity .long-title{width:calc(100% - 60px);vertical-align:middle}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1445),
    n(1446);
    var r = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "SiteModelUI/SiteModelCollection.html",
            this.scope = {
                sites: "=",
                datasets: "=",
                siteModelEditor: "=",
                parentController: "=",
                treeConfig: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.SiteModelCollectionDirective = r,
    i.module("IVWebApp").directive("siteModelCollection", r.factory())
}
, function(t, e) {
    var n = "SiteModelUI/SiteModelCollection.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="site-model-collection">\n\t<site-model ng-repeat="site in sites | orderSites"\n\t            datasets="datasets"\n\t            site-model-entity="site"\n\t            site-model-editor="siteModelEditor"\n\t            parent-controller="parentController"\n\t            tree-config="treeConfig">\n\t</site-model>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1447);
    var r = n(55)
      , o = function() {
        function t() {}
        return t.filter = ["NaturalSortService", function(t) {
            return function(e) {
                if (!e || e.length < 2)
                    return e;
                var n = !1
                  , i = "name";
                return e[0].type === r.SiteModelType.FLOOR && (n = !0,
                i = "zMin"),
                t.naturalSort(e, i, n)
            }
        }
        ],
        t
    }();
    i.module("IVWebApp").filter("orderSites", o.filter)
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(7)
      , o = n(6)
      , a = n(0)
      , s = n(0)
      , c = function() {
        function t() {
            this.naturalSort = function(t, e, n) {
                void 0 === n && (n = !1);
                var i = n ? "desc" : "asc"
                  , o = r.filter(t, (function(t) {
                    return isFinite(t[e])
                }
                ))
                  , a = r.difference(t, o);
                return o = r.orderBy(o, (function(t) {
                    return Number.parseFloat(t[e])
                }
                ), i),
                a = r.orderBy(a, e, i),
                o.concat(a)
            }
        }
        return t.ɵfac = function(e) {
            return new (e || t)
        }
        ,
        t.ɵprov = s.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.NaturalSortService = c,
    s.ɵsetClassMetadata(c, [{
        type: a.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], null, null),
    i.module("IVWebApp").service("NaturalSortService", o.downgradeInjectable(c))
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        var i, r = this && this.__extends || (i = function(t, e) {
            return (i = Object.setPrototypeOf || {
                __proto__: []
            }instanceof Array && function(t, e) {
                t.__proto__ = e
            }
            || function(t, e) {
                for (var n in e)
                    e.hasOwnProperty(n) && (t[n] = e[n])
            }
            )(t, e)
        }
        ,
        function(t, e) {
            function n() {
                this.constructor = t
            }
            i(t, e),
            t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
            new n)
        }
        );
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var o = n(2);
        n(1449),
        n(1450),
        n(1452);
        var a = n(528);
        n(1456),
        n(1458);
        var s = n(197);
        n(607);
        var c = n(89)
          , l = n(220)
          , u = n(55)
          , d = (function(t) {
            function e() {
                return null !== t && t.apply(this, arguments) || this
            }
            r(e, t)
        }(a.SiteModelEntity),
        function() {
            function e(t, e, n, i, r, o, a, s, d, p, h, f, m, g) {
                var v = this;
                this.SiteModelService = t,
                this.SiteModelEditorService = e,
                this.hotkeys = n,
                this.gettext = i,
                this.ViewService = r,
                this.PointCloudMenuService = o,
                this.DatasetAlignmentService = a,
                this.ModeService = s,
                this.SiteModelRepository = d,
                this.MessageReportingService = p,
                this.TiledMapRepository = h,
                this.gettextCatalog = f,
                this.$scope = m,
                this.AlignmentService = g,
                this.siteModel = this.SiteModelRepository.data,
                this.SiteModelType = u.SiteModelType,
                this.generatePromiseWrapper = new c.PromiseProgressWrapper,
                this.addEntity = function(t, e, n) {
                    return v.SiteModelEditorService.addEntity(t, e, n)
                }
                ,
                this.unlockEntityToggle = function(t) {
                    return v.SiteModelEditorService.unlockEntityToggle(t)
                }
                ,
                this.enableCuttingMode = function(t) {
                    return v.SiteModelEditorService.enableCuttingMode(t)
                }
                ,
                this.isCuttingMode = function() {
                    return v.SiteModelEditorService.isCuttingMode()
                }
                ,
                this.isDrawingMode = function() {
                    return v.SiteModelEditorService.isDrawingMode()
                }
                ,
                this.useOutlineAsHole = function(t) {
                    return v.SiteModelEditorService.useOutlineAsHole(t)
                }
                ,
                this.updateHeight = function(t, e) {
                    return v.SiteModelEditorService.updateHeight(t, e)
                }
                ,
                this.updateTop = function(t, e) {
                    return v.SiteModelEditorService.updateTop(t, e)
                }
                ,
                this.checkMinHeight = function(t) {
                    return v.SiteModelEditorService.checkMinHeight(t)
                }
                ,
                this.checkMaxHeight = function(t, e) {
                    return v.SiteModelEditorService.checkMaxHeight(t, e)
                }
                ,
                this.zoomToDatasets = function(t) {
                    return v.AlignmentService.zoomToDatasets(t)
                }
                ,
                this.deselectDatasets = function(t) {
                    return v.AlignmentService.deselectAll(t)
                }
                ,
                this.toggleSelection = function(t) {
                    return v.AlignmentService.toggleSelection(t)
                }
                ,
                this.SiteModelService.onSelect.connect((function(t, e, n) {
                    e && v.collapseEntity(t, n)
                }
                )),
                1 === this.siteModel.length && this.SiteModelEditorService.selectEntity(this.siteModel[0]),
                this.activateHotkeys(),
                this.treeConfig = l.DatasetTreeConfigurationFactory.createSiteModelEditorConfig(i("Datasets", void 0, "title"))
            }
            return e.$inject = ["SiteModelService", "SiteModelEditorService", "hotkeys", "gettext", "ViewService", "PointCloudMenuService", "DatasetAlignmentService", "ModeService", "SiteModelRepository", "MessageReportingService", "TiledMapRepository", "gettextCatalog", "$scope", "AlignmentService"],
            Object.defineProperty(e.prototype, "modalDeferred", {
                get: function() {
                    return this.SiteModelEditorService.modalDeferred
                },
                enumerable: !0,
                configurable: !0
            }),
            e.prototype.activateHotkeys = function() {
                var t = this;
                this.hotkeys.bindTo(this.$scope).add({
                    combo: "backspace",
                    description: this.gettext("Remove last placed or selected point"),
                    callback: function() {
                        t.SiteModelEditorService.isDrawingMode() ? t.SiteModelEditorService.removeLastPointFromCurrentEntity() : t.SiteModelEditorService.removeSelectedPoint()
                    }
                }).add({
                    combo: "esc",
                    callback: function() {
                        t.SiteModelEditorService.isDrawingMode() && t.SiteModelEditorService.cancelDrawingMode()
                    }
                }).add({
                    combo: "shift",
                    action: "keyup",
                    callback: function() {
                        t.SiteModelEditorService.snappingEnabled = !t.SiteModelEditorService.snappingEnabled
                    }
                }).add({
                    combo: "shift",
                    description: this.gettext("Toggle snapping to lines and vertices"),
                    action: "keydown",
                    callback: function() {
                        t.SiteModelEditorService.snappingEnabled = !t.SiteModelEditorService.snappingEnabled
                    }
                }).add({
                    combo: ["L", "l"],
                    action: "keyup",
                    callback: function() {
                        t.keyDown = !1,
                        t.SiteModelEditorService.rectangleSnapping = !t.SiteModelEditorService.rectangleSnapping
                    }
                }).add({
                    combo: ["L", "l"],
                    description: this.gettext("Toggle snapping to 90° angle"),
                    action: "keydown",
                    callback: function() {
                        t.keyDown || (t.keyDown = !0,
                        t.SiteModelEditorService.rectangleSnapping = !t.SiteModelEditorService.rectangleSnapping)
                    }
                }).add({
                    combo: ["G", "g"],
                    description: this.gettext("Show hovered scene in fullscreen"),
                    callback: function() {
                        var e = t.ViewService.mainView.getLastMousePosition()
                          , n = t.ViewService.mainView.getViewport(e.x, e.y);
                        n && t.ViewService.mainView.toggleViewportFullscreen(n)
                    }
                })
            }
            ,
            e.prototype.collapseEntity = function(e, n) {
                var i = "#site-model-" + e.hashKey
                  , r = t(i);
                if (!(r.hasClass("in") && n || r.hasClass("collapsing"))) {
                    var o = r.prev(".site-model-button");
                    o && o.toggleClass("collapsed"),
                    r.collapse("toggle")
                }
            }
            ,
            e.prototype.validateAndSaveSiteModel = function() {
                var t = this;
                return this.SiteModelEditorService.isDrawingMode() && this.SiteModelEditorService.cancelDrawingMode(),
                this.SiteModelEditorService.savePromiseWrapper.wrap(this.SiteModelRepository.getSiteModelValidityReport(this.siteModel).then((function(e) {
                    return 0 !== e.siteModelErrors.length ? (t.displaySiteModelErrorModal(e),
                    Promise.reject("The provided site model is invalid")) : Promise.resolve()
                }
                )).then((function() {
                    return t.SiteModelRepository.isAnyFloorChanging(t.siteModel)
                }
                )).then((function(e) {
                    return e.are_maps_invalidated ? (t.askForConfirmation(e.total_floor_changing),
                    Promise.reject("")) : t.saveSiteModel()
                }
                )))
            }
            ,
            e.prototype.askForConfirmation = function(e) {
                this.totalMapToRegenerate = e,
                t("#confirmSiteModelChange.modal").modal("show")
            }
            ,
            e.prototype.saveSiteModel = function() {
                var t = this;
                return this.SiteModelEditorService.savePromiseWrapper.wrap(this.SiteModelRepository.save(this.siteModel).then((function() {
                    return t.removeOldSiteModelMaps()
                }
                ))).then((function() {
                    return t.SiteModelEditorService.resetChangeTracking()
                }
                ))
            }
            ,
            e.prototype.discardChanges = function() {
                return this.SiteModelEditorService.discardChanges()
            }
            ,
            e.prototype.displaySiteModelErrorModal = function(t) {
                this.SiteModelEditorService.showSiteModelErrorsModal.emit(t)
            }
            ,
            e.prototype.removeOldSiteModelMaps = function() {
                this.TiledMapRepository.resetCache(),
                this.SiteModelEditorService.redrawSiteModel.emit(!0)
            }
            ,
            e.prototype.exportSiteModel = function(t, e) {
                this.SiteModelRepository.exportSiteModel(t, e)
            }
            ,
            e.prototype.importSiteModelToEditorEntity = function(t) {
                var e = this;
                this.importingSiteModel = !0,
                s.processJsonFile(t[0]).then((function(t) {
                    e.isJsonArrayStructured(t) ? e.SiteModelRepository.importSiteModel(t, e.siteModelEditorModel.id).then((function() {
                        e.importingSiteModel = !1,
                        e.SiteModelEditorService.redrawSiteModel.emit(!0)
                    }
                    )).catch((function() {
                        e.importingSiteModel = !1
                    }
                    )) : e.importingSiteModel = !1
                }
                )).catch((function(t) {
                    e.importingSiteModel = !1,
                    e.checkParsingError(t)
                }
                ))
            }
            ,
            e.prototype.importSiteModel = function(t) {
                var e = this;
                this.importingSiteModel = !0,
                s.processJsonFile(t[0]).then((function(t) {
                    e.isJsonArrayStructured(t) && e.areEntitiesTopLevel(t) ? e.SiteModelRepository.importSiteModel(t).then((function() {
                        e.importingSiteModel = !1,
                        e.SiteModelEditorService.redrawSiteModel.emit(!0)
                    }
                    )).catch((function() {
                        e.importingSiteModel = !1
                    }
                    )) : e.importingSiteModel = !1
                }
                )).catch((function(t) {
                    e.importingSiteModel = !1,
                    e.checkParsingError(t)
                }
                ))
            }
            ,
            e.prototype.generateSiteModel = function() {
                t("#confirmSiteModelGeneration.modal").modal("show")
            }
            ,
            e.prototype.confirmSiteModelGeneration = function() {
                var t = this;
                this.generatePromiseWrapper.wrap(this.SiteModelRepository.generate()).then((function() {
                    t.SiteModelEditorService.redrawSiteModel.emit(!0),
                    t.TiledMapRepository.resetCache()
                }
                )).catch((function() {}
                ))
            }
            ,
            e.prototype.isGenerateInProgress = function() {
                return this.generatePromiseWrapper.isInProgress
            }
            ,
            e.prototype.prepareEntityToDelete = function(t) {
                var e = this;
                this.SiteModelEditorService.deleteConfirmedCallback = function() {
                    e.SiteModelEditorService.deleteEntity(t)
                }
            }
            ,
            e.prototype.deleteConfirmed = function() {
                this.SiteModelEditorService.deleteConfirmedCallback && (this.SiteModelEditorService.deleteConfirmedCallback(),
                t("#editEntityFromEditor").modal("hide"))
            }
            ,
            e.prototype.areAllDatasetsSelected = function(t) {
                return this.AlignmentService.areAllDatasetsSelected(t)
            }
            ,
            e.prototype.areNoDatasetsSelected = function(t) {
                return this.AlignmentService.areNoDatasetsSelected(t)
            }
            ,
            e.prototype.selectDatasets = function(t) {
                this.AlignmentService.selectAll(t)
            }
            ,
            e.prototype.isDatasetSelected = function(t) {
                return this.AlignmentService.isDatasetSelected(t)
            }
            ,
            e.prototype.editEntity = function(e) {
                this.SiteModelEditorService.selectEntity(e, !0),
                this.siteModelEditorModel = e,
                t("#editEntityFromEditor").modal()
            }
            ,
            e.prototype.setHasChanges = function() {
                this.SiteModelEditorService.stateDirty = !0
            }
            ,
            e.prototype.isJsonArrayStructured = function(t) {
                return t instanceof Array || (this.MessageReportingService.showMessage(this.gettextCatalog.getString("Unable to Import Site Model", void 0, "title"), this.gettextCatalog.getString("The file format is invalid. It does not contain an array of site model entities.")),
                !1)
            }
            ,
            e.prototype.areEntitiesTopLevel = function(t) {
                return !t.some((function(t) {
                    return t.polygon_inherited
                }
                )) || (this.MessageReportingService.showMessage(this.gettextCatalog.getString("Unable to Import Site Model", void 0, "title"), this.gettextCatalog.getString("The file contains entities that inherited their polygon but do not have a parent. Please import them into an existing entity.")),
                !1)
            }
            ,
            e.prototype.checkParsingError = function(t) {
                t && this.MessageReportingService.showMessage(this.gettextCatalog.getString("Unable to Import Site Model", void 0, "title"), this.gettextCatalog.getString("Error while parsing the JSON file: ").concat(t))
            }
            ,
            e
        }());
        e.SiteModelEditorController = d;
        var p = function() {
            function t() {
                this.controller = d,
                this.controllerAs = "vm",
                this.restrict = "E",
                this.templateUrl = "SiteModelUI/SiteModelEditor.html",
                this.scope = !0
            }
            return t.factory = function() {
                return function() {
                    return new t
                }
            }
            ,
            t
        }();
        e.SiteModelEditorDirective = p,
        o.module("IVWebApp").directive("siteModelEditor", p.factory())
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    var i = "SiteModelUI/SiteModelEditor.html"
      , r = '<form role="form">\n\t<dataset-tree parent-controller="vm" site-model-editor="true" tree-config="vm.treeConfig"></dataset-tree>\n\n\t<div class="form-group text-right mt-10">\n\t\t<save-button ng-click="vm.validateAndSaveSiteModel()"\n\t\t             in-progress="vm.SiteModelEditorService.isSaveInProgress()">\n\t\t</save-button>\n\t</div>\n\n\t<div class="panel panel-default">\n\t\t<div class="panel-heading" data-toggle="collapse" data-target="#siteModelEditorOptions">\n\t\t\t<i class="collapse-expand-chevron"></i>\n\t\t\t<span class="panel-title" translate translate-context="editor is site model editor; title">\n\t\t\t\tEditor Options\n\t\t\t</span>\n\t\t</div>\n\t\t<div id="siteModelEditorOptions" class="panel-collapse collapse in">\n\t\t\t<div class="panel-body">\n\t\t\t\t<default-button class="btn-block add-building" ng-click="vm.addEntity(vm.SiteModelType.BUILDING)">\n\t\t\t\t\t<i class="fa fa-plus"></i>\n\t\t\t\t\t<span translate>Building</span>\n\t\t\t\t</default-button>\n\t\t\t\t<default-button class="btn-block btn-default" ng-show="vm.siteModel.length"\n\t\t\t\t                ng-click="vm.exportSiteModel()">\n\t\t\t\t\t<i class="fa fa-download"></i>\n\t\t\t\t\t<span translate>Export site model</span>\n\t\t\t\t</default-button>\n\t\t\t\t<input-button class="btn-block btn-file panel-control-button"\n\t\t\t\t              in-progress="vm.importingSiteModel">\n\t\t\t\t\t<i class="fa fa-upload"></i>\n\t\t\t\t\t<span translate>Import site model</span>\n\t\t\t\t\t<input type="file" accept=".json,application/json" hidden\n\t\t\t\t\t       ng-disabled="vm.importingSiteModel"\n\t\t\t\t\t       ngf-select="vm.importSiteModel($files)">\n\t\t\t\t</input-button>\n\t\t\t\t<default-button class="btn-block btn-default"\n\t\t\t\t                ng-click="vm.generateSiteModel()"\n\t\t\t\t                in-progress="vm.isGenerateInProgress()">\n\t\t\t\t\t<i class="fa fa-magic"></i>\n\t\t\t\t\t<span translate>Auto-generate</span>\n\t\t\t\t</default-button>\n\t\t\t\t<hr>\n\t\t\t\t<div class="checkbox">\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<input type="checkbox" ng-model="vm.SiteModelEditorService.snappingEnabled">\n\t\t\t\t\t\t<span translate>Snap to lines and vertices</span>\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\t\t\t\t<div class="checkbox">\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<input type="checkbox" ng-model="vm.SiteModelEditorService.rectangleSnapping">\n\t\t\t\t\t\t<span translate>Snap to 90° angle</span>\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<vector-map-selection></vector-map-selection>\n\t<alignment-helper></alignment-helper>\n\n\t<modal>\n\t\t<div class="modal fade" id="confirmSiteModelGeneration" tabindex="-1" role="dialog"\n\t\t     aria-labelledby="confirmSiteModelGeneration" aria-hidden="true" data-backdrop="static">\n\t\t\t<div class="modal-dialog">\n\t\t\t\t<div class="modal-content">\n\t\t\t\t\t<div class="modal-header">\n\t\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}"\n\t\t\t\t\t\t     data-dismiss="modal">\n\t\t\t\t\t\t<h4 translate translate-context="title">\n\t\t\t\t\t\t\tConfirm\n\t\t\t\t\t\t</h4>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="modal-body">\n\t\t\t\t\t\t<span translate>Please confirm the automatic generation of the site model. This action will overwrite the existing site model and remove all maps that may have been added.</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t\t<close-button data-dismiss="modal"></close-button>\n\t\t\t\t\t\t<ok-button data-dismiss="modal"\n\t\t\t\t\t\t           ng-click="vm.confirmSiteModelGeneration()">\n\t\t\t\t\t\t</ok-button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</modal>\n\n\t<modal>\n\t\t<div class="modal fade" id="confirmSiteModelChange" tabindex="-1" role="dialog"\n\t\t     aria-labelledby="confirmSiteModelChange" aria-hidden="true" data-backdrop="static">\n\t\t\t<div class="modal-dialog">\n\t\t\t\t<div class="modal-content">\n\t\t\t\t\t<div class="modal-header">\n\t\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}"\n\t\t\t\t\t\t     data-dismiss="modal">\n\t\t\t\t\t\t<h4 translate translate-context="title">\n\t\t\t\t\t\t\tConfirm\n\t\t\t\t\t\t</h4>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="modal-body">\n\t\t\t\t\t\t<span translate\n\t\t\t\t\t\t      translate-params-count="vm.totalMapToRegenerate"\n\t\t\t\t\t\t      translate-n="vm.totalMapToRegenerate"\n\t\t\t\t\t\t      translate-plural="{{count}} maps will be removed. This action will require you to regenerate your maps.">\n\t\t\t\t\t\t\t1 map will be removed. This action will require you to regenerate your maps.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t\t<cancel-button data-dismiss="modal"></cancel-button>\n\t\t\t\t\t\t<ok-button data-dismiss="modal"\n\t\t\t\t\t\t           ng-click="vm.saveSiteModel()">\n\t\t\t\t\t\t</ok-button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</modal>\n\n\t<site-model-errors></site-model-errors>\n</form>\n\n<modal>\n\t<site-model-entity-editor model="vm.siteModelEditorModel" parent-controller="vm"\n\t                          full-editor="true" modal-id="editEntityFromEditor">\n\t</site-model-entity-editor>\n</modal>\n\n<save-discard-confirmation\n\t\tmodal-id="confirmUnsavedSiteModel"\n\t\ton-save-callback="vm.validateAndSaveSiteModel()"\n\t\ton-discard-callback="vm.discardChanges()"\n\t\tdeferred-promise="vm.modalDeferred"\n\t\tsubject= "{{\'Site Model\' | translate:\'title\'}}">\n</save-discard-confirmation>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1451);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "site-model-editor .site-model-tree-entity>[role=button].selected,site-model-editor .site-model-tree-entity>[role=button].selected>dataset-group-toolbar .dataset-grp-toolbar button{color:#3398c7}site-model-editor .site-model-tree-entity>[role=button].selected>dataset-group-toolbar .dataset-grp-toolbar button:hover{border-color:#3398c7}site-model-editor .add-building{background-color:rgba(12,103,122,.8)}site-model-editor .add-building:focus,site-model-editor .add-building:hover{background-color:#15b5d7}site-model-editor .add-navigation{background-color:#00953e}site-model-editor .add-navigation:focus,site-model-editor .add-navigation:hover{background-color:#00c853}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var i = n(2);
        n(1453),
        n(1454);
        var r = n(20)
          , o = n(179)
          , a = function() {
            function e(t, e) {
                var n = this;
                this.SiteModelEditorService = t,
                this.gettextCatalog = e,
                this.ViolationType = o.ViolationType,
                this.SiteModelEditorService.showSiteModelErrorsModal.connect((function(t) {
                    return n.showErrorList(t)
                }
                ))
            }
            return e.$inject = ["SiteModelEditorService", "gettextCatalog"],
            e.prototype.isBlank = function(t) {
                return r.isBlank(t)
            }
            ,
            e.prototype.getFullName = function(t) {
                var e = r.isBlank(t.label) ? "" : t.label;
                return r.isBlank(t.name) ? e + " <i translate>unnamed</i>" : e
            }
            ,
            e.prototype.showErrorList = function(e) {
                this.siteModelErrors = e.siteModelErrors,
                this.numberOfErrors = this.getTotalNumberOfViolations(),
                t("#site-model-errors.modal").modal("show")
            }
            ,
            e.prototype.getTotalNumberOfViolations = function() {
                for (var t = 0, e = 0, n = this.siteModelErrors; e < n.length; e++) {
                    t += n[e].violations.length
                }
                return t
            }
            ,
            e
        }();
        e.SiteModelErrorsController = a;
        var s = function() {
            function t() {
                this.controller = a,
                this.controllerAs = "vm",
                this.restrict = "E",
                this.templateUrl = "SiteModelUI/SiteModelErrors/SiteModelErrors.html",
                this.scope = !0
            }
            return t.factory = function() {
                return function() {
                    return new t
                }
            }
            ,
            t
        }();
        e.SiteModelErrorsDirective = s,
        i.module("IVWebApp").directive("siteModelErrors", s.factory())
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    var i = "SiteModelUI/SiteModelErrors/SiteModelErrors.html"
      , r = '<modal>\n\t<div class="modal fade" id="site-model-errors" tabindex="-1" role="dialog"\n\t     data-backdrop="static" aria-labelledby="site-model-errors" aria-hidden="true">\n\t\t<div class="modal-dialog">\n\t\t\t<div class="modal-content">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}"\n\t\t\t\t\t     data-dismiss="modal">\n\t\t\t\t\t<h4 translate translate-context="title">\n\t\t\t\t\t\tCannot Save Site Model\n\t\t\t\t\t</h4>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t<div  class="modal-title"\n\t\t\t\t\t      translate\n\t\t\t\t\t      translate-params-count="vm.numberOfErrors"\n\t\t\t\t\t      translate-n="vm.numberOfErrors"\n\t\t\t\t\t      translate-plural="We found {{count}} errors in your site model. Please fix the following entities:">\n\t\t\t\t\t\tWe found 1 error in your site model. Please fix the following entity:\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="site-model-error" ng-repeat="siteModelError in vm.siteModelErrors">\n\t\t\t\t\t\t\x3c!-- Site model entity icon --\x3e\n\t\t\t\t\t\t<img class="entity-icon"\n\t\t\t\t\t\t     ng-src="{{siteModelError.affectedEntity.getTypeIcon()}}">\n\n\t\t\t\t\t\t<div class="entity-with-errors">\n\n\t\t\t\t\t\t\t\x3c!-- Names of the entity\'s hierarchy, or \'unnamed\' if no name --\x3e\n\t\t\t\t\t\t\t<span class="text-light-gray" ng-repeat="name in siteModelError.hierarchyNames">\n\t\t\t\t\t\t\t\t<i ng-if="vm.isBlank(name)" translate>unnamed ></i>\n\t\t\t\t\t\t\t\t<span ng-if="!vm.isBlank(name)">{{name}} ></span>\n\t\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t\t\x3c!-- Name of the entity that contains errors --\x3e\n\t\t\t\t\t\t\t<strong ng-bind-html="vm.getFullName(siteModelError.affectedEntity)">\n\t\t\t\t\t\t\t</strong>\n\n\t\t\t\t\t\t\t\x3c!--List of errors for this site model entity --\x3e\n\t\t\t\t\t\t\t<div ng-repeat="violation in siteModelError.violations">\n\t\t\t\t\t\t\t\t<div ng-if="violation.type === vm.ViolationType.INVALID_GEOMETRY"\n\t\t\t\t\t\t\t\t     translate>\n\t\t\t\t\t\t\t\t\tMake sure all geometries are closed, do not self-intersect and holes do not touch other holes or the outer boundary\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div ng-if="violation.type === vm.ViolationType.OVERLAPPING_VOLUMES">\n\t\t\t\t\t\t\t\t\t<span translate\n\t\t\t\t\t\t\t\t\t      translate-params-full-name="vm.getFullName(violation.overlappingEntity)"\n\t\t\t\t\t\t\t\t\t      translate-context="The name of the entity which is\n\t\t\t\t\t\t\t\t\t      overlapped will be added at the end of this phrase">\n\t\t\t\t\t\t\t\t\t\tRemove any overlaps with nearby {{fullName}}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div ng-if="violation.type === vm.ViolationType.INCORRECT_HIERARCHY_TYPE">\n\t\t\t\t\t\t\t\t\t<span translate\n\t\t\t\t\t\t\t\t\t      translate-context="A list of accepted types will follow.">\n\t\t\t\t\t\t\t\t\t\tThe type of this entity is incompatible with its parent type. Allowed types are:\n\t\t\t\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t\t\t\t\x3c!-- List of all accepted types --\x3e\n\t\t\t\t\t\t\t\t\t<span ng-repeat="acceptedType in violation.acceptedTypes">\n\t\t\t\t\t\t\t\t\t\t{{acceptedType}},\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div ng-if="violation.type === vm.ViolationType.FREE_SPACE_NAVIGATION_AREA_WITH_CHILDREN"\n\t\t\t\t\t\t\t\t     translate>\n\t\t\t\t\t\t\t\t\tFree space navigation areas can\'t have children.\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div ng-if="violation.type === vm.ViolationType.CHILD_NOT_CONTAINED_IN_PARENT_ENTITY"\n\t\t\t\t\t\t\t\t     translate>\n\t\t\t\t\t\t\t\t\tMake sure this entity is completely contained in the parent entity.\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div ng-if="violation.type === vm.ViolationType.HEIGHT_NOT_CONTAINED_IN_PARENT"\n\t\t\t\t\t\t\t\t     translate>\n\t\t\t\t\t\t\t\t\tMake sure the height of this entity is fully contained in the parent entity\'s height.\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t<ok-button data-dismiss="modal"></ok-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1455);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "#site-model-errors .site-model-error{margin-left:15px;padding:9px 0;border-bottom:1px solid #d3d3d3}#site-model-errors .site-model-error:last-child{border-bottom:none}#site-model-errors .modal-title{padding-bottom:10px}#site-model-errors .modal-body{padding:15px 15px 0}#site-model-errors .entity-icon{width:50px;height:50px;vertical-align:top}#site-model-errors .entity-with-errors{display:inline-block;max-width:499px}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2);
    n(1457);
    var a = n(185)
      , s = n(199)
      , c = function(t) {
        function e(e, n, i, r, o, a, c) {
            var l = t.call(this, a, c, r, o) || this;
            return l.UserService = e,
            l.SiteModelService = n,
            l.SiteModelTypeService = i,
            l.MIN_FLOOR_HEIGHT = s.SiteModelEditorService.MIN_FLOOR_HEIGHT,
            l
        }
        return r(e, t),
        e.$inject = ["UserService", "SiteModelService", "SiteModelTypeService", "$element", "ErrorService", "SiteModelRepository", "gettextCatalog"],
        e.prototype.canEditName = function() {
            return this.UserService.isAdmin()
        }
        ,
        e
    }(a.EntityEditorController);
    e.SiteModelEntityEditorController = c;
    var l = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "SiteModelUI/SiteModelEntityEditor.html",
            this.controller = c,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                model: "=",
                parentController: "=",
                modalId: "@",
                fullEditor: "@?"
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.SiteModelEntityEditorDirective = l,
    o.module("IVWebApp").directive("siteModelEntityEditor", l.factory())
}
, function(t, e, n) {
    var i = "SiteModelUI/SiteModelEntityEditor.html"
      , r = '<div class="modal fade" id="{{vm.modalId}}" tabindex="-1" role="dialog"\n     aria-labelledby="{{vm.modalId}}"\n     aria-hidden="true"\n     data-backdrop="static">\n\t<div class="modal-dialog modal-dialog-wide">\n\t\t<div class="modal-content">\n\n\t\t\t<div class="modal-header">\n\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t     data-dismiss="modal"\n\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}">\n\t\t\t\t<h4 translate translate-context="title">\n\t\t\t\t\tEdit Site Model Entity\n\t\t\t\t</h4>\n\t\t\t</div>\n\n\t\t\t<div class="modal-body">\n\t\t\t\t<div class="form-horizontal">\n\t\t\t\t\t<div class="form-group no-margin">\n\t\t\t\t\t\t\x3c!--Name--\x3e\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<label class="col-sm-3 control-label no-padding-left" for="siteModelNameEdit"\n\t\t\t\t\t\t\t       translate>Name</label>\n\t\t\t\t\t\t\t<div class="col-sm-3 no-padding-horizontal margin-bottom">\n\t\t\t\t\t\t\t\t<input class="form-control" id="siteModelNameEdit" type="text"\n\t\t\t\t\t\t\t\t       ng-model="vm.model.name" ng-change="vm.parentController.setHasChanges()" init-focus ng-readonly="!vm.canEditName()">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\x3c!--Type--\x3e\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<label class="col-sm-3 control-label no-padding-left" for="siteModelTypeEdit"\n\t\t\t\t\t\t\t       translate>Type</label>\n\t\t\t\t\t\t\t<div class="col-sm-3 no-padding-horizontal margin-bottom" ng-if="vm.model.getTypeIsChangeable()">\n\t\t\t\t\t\t\t\t<select class="form-control uppercase" id="siteModelTypeEdit"\n\t\t\t\t\t\t\t\t        ng-model="vm.model.type"\n\t\t\t\t\t\t\t\t        ng-options="attr.type as attr.displayName | translate for attr in vm.SiteModelTypeService.getChangeableTypes()" ng-change="vm.parentController.setHasChanges()">\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="col-sm-3 no-padding-horizontal margin-bottom" ng-if="!vm.model.getTypeIsChangeable()">\n\t\t\t\t\t\t\t\t<input class="form-control uppercase" type="text" readonly\n\t\t\t\t\t\t\t\t       value="{{vm.model.getTypeDisplayName() | translate}}">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="form-group no-margin">\n\t\t\t\t\t\t\x3c!--Area--\x3e\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<label class="col-sm-3 control-label no-padding-left">\n\t\t\t\t\t\t\t\t<span translate>Area</span>\n\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t<div class="col-sm-3 no-padding-horizontal margin-bottom">\n\t\t\t\t\t\t\t\t<unit-aware-input ng-model="vm.model.area" domain="AREA"\n\t\t\t\t\t\t\t\t                  fraction-size="0" read-only="true">\n\t\t\t\t\t\t\t\t</unit-aware-input>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\x3c!--Volume--\x3e\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<label class="col-sm-3 control-label no-padding-left">\n\t\t\t\t\t\t\t\t<span translate translate-context="as in the amount of space">Volume</span>\n\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t<div class="col-sm-3 no-padding-horizontal margin-bottom">\n\t\t\t\t\t\t\t\t<unit-aware-input ng-model="vm.model.volume" domain="VOLUME"\n\t\t\t\t\t\t\t\t                  fraction-size="0" read-only="true">\n\t\t\t\t\t\t\t\t</unit-aware-input>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- Base level for buildings --\x3e\n\t\t\t\t\t<div class="form-group no-margin"\n\t\t\t\t\t     ng-if="vm.model.type === \'BUILDING\' && vm.model.children.length">\n\t\t\t\t\t\t<label class="col-sm-3 control-label no-padding-left"\n\t\t\t\t\t\t       translate>Base level</label>\n\t\t\t\t\t\t<div class="col-sm-3 no-padding-horizontal margin-bottom">\n\t\t\t\t\t\t\t<unit-aware-input ng-model="vm.model.children[0].zMin" fraction-size="2"\n\t\t\t\t\t\t\t                  read-only="!vm.fullEditor"\n\t\t\t\t\t\t\t                  max="vm.parentController.checkMinHeight(vm.model.children[0])"\n\t\t\t\t\t\t\t                  change="vm.parentController.updateHeight(vm.model.children[0], true)">\n\t\t\t\t\t\t\t</unit-aware-input>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- Height for floors and other sub-entities --\x3e\n\t\t\t\t\t<div class="form-group no-margin"\n\t\t\t\t\t     ng-if="vm.model.type === \'FLOOR\' || vm.model.type === \'ROOM\' || vm.model.type === \'CUSTOM\'">\n\t\t\t\t\t\t<label class="col-sm-3 control-label no-padding-left"\n\t\t\t\t\t\t       translate>Height</label>\n\t\t\t\t\t\t<div class="col-sm-3 no-padding-horizontal margin-bottom">\n\t\t\t\t\t\t\t<unit-aware-input ng-model="vm.model.height" fraction-size="2"\n\t\t\t\t\t\t\t                  read-only="!vm.fullEditor"\n\t\t\t\t\t\t\t                  min="vm.MIN_FLOOR_HEIGHT"\n\t\t\t\t\t\t\t                  max="vm.parentController.checkMaxHeight(vm.model)"\n\t\t\t\t\t\t\t                  allow-empty="true"\n\t\t\t\t\t\t\t                  change="vm.parentController.updateTop(vm.model, true)">\n\t\t\t\t\t\t\t</unit-aware-input>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- add/edit custom attributes --\x3e\n\t\t\t\t\t<attributes-editor model="vm.model"\n\t\t\t\t\t                   key-suggestions="[\'external_entity_id\']"\n\t\t\t\t\t                   value-suggestions="[\'true\', \'false\']"\n\t\t\t\t\t                   on-change="vm.parentController.setHasChanges()">\n\t\t\t\t\t</attributes-editor>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="modal-footer">\n\t\t\t\t<div class="text-left" ng-if="vm.fullEditor">\n\t\t\t\t\t<button class="btn btn-default" ng-if="vm.model.parent && vm.model.inherited"\n\t\t\t\t\t        title="{{\'Unlock this entity\\\'s outline from its parent\'|translate}}"\n\t\t\t\t\t        ng-click="vm.parentController.unlockEntityToggle(vm.model)">\n\t\t\t\t\t\t<i class="fa fa-chain-broken"></i>\n\t\t\t\t\t\t<span translate>Unlock outline</span>\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<button class="btn btn-default" ng-if="vm.model.parent && !vm.model.inherited"\n\t\t\t\t\t        title="{{\'Reset this entity\\\'s outline to its parent\'|translate}}"\n\t\t\t\t\t        data-toggle="modal"\n\t\t\t\t\t        data-target="#{{vm.modalId}}-resetConfirmation">\n\t\t\t\t\t\t<i class="fa fa-link"></i>\n\t\t\t\t\t\t<span translate>Reset outline</span>\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<default-button\n\t\t\t\t\t\t\ttitle="{{\'Cut a hole in this entity\'|translate}}"\n\t\t\t\t\t\t\tdata-dismiss="modal"\n\t\t\t\t\t\t\tng-click="vm.parentController.enableCuttingMode(vm.model)">\n\t\t\t\t\t\t<i class="fa fa-scissors"></i>\n\t\t\t\t\t\t<span translate>Cut a hole</span>\n\t\t\t\t\t</default-button>\n\n\t\t\t\t\t<button class="btn btn-default"\n\t\t\t\t\t        ng-if="vm.model.type !== \'FREE_SPACE_NAVIGATION\' && (vm.model.type !== \'BUILDING\' || !vm.model.children.length)"\n\t\t\t\t\t        title="{{\'Add sub-entity\'|translate}}"\n\t\t\t\t\t        ng-click="vm.parentController.addEntity(undefined, vm.model, false)">\n\t\t\t\t\t\t<i class="fa fa-plus"></i>\n\t\t\t\t\t\t<span translate>Add sub-entity</span>\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<div class="btn-group dropdown"\n\t\t\t\t\t     ng-if="vm.model.type === \'BUILDING\' && vm.model.children.length > 0">\n\t\t\t\t\t\t<default-button class="dropdown-toggle btn-default" data-toggle="dropdown"\n\t\t\t\t\t\t                aria-haspopup="true" aria-expanded="false"\n\t\t\t\t\t\t                title="{{\'Add floor\'|translate}}">\n\t\t\t\t\t\t\t<i class="fa fa-plus"></i>\n\t\t\t\t\t\t\t<span translate>Add floor</span>\n\t\t\t\t\t\t\t<span class="caret"></span>\n\t\t\t\t\t\t</default-button>\n\t\t\t\t\t\t<ul class="dropdown-menu dropdown-center">\n\t\t\t\t\t\t\t<li ng-click="vm.parentController.addEntity(undefined, vm.model, false)"\n\t\t\t\t\t\t\t    class="text-center">\n\t\t\t\t\t\t\t\t<i class="fa fa-plus"></i>\n\t\t\t\t\t\t\t\t<span translate>Add floor on top</span>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li ng-click="vm.parentController.addEntity(undefined, vm.model, true)"\n\t\t\t\t\t\t\t    class="text-center">\n\t\t\t\t\t\t\t\t<i class="fa fa-plus"></i>\n\t\t\t\t\t\t\t\t<span translate>Add floor on bottom</span>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="mt-10">\n\t\t\t\t\t<button class="btn btn-default pull-left"\n\t\t\t\t\t        title="{{\'Export entity\'|translate}}"\n\t\t\t\t\t        ng-if="vm.model.id !== undefined"\n\t\t\t\t\t        ng-click="vm.parentController.exportSiteModel([vm.model.id], vm.model.name ? vm.model.name : \'site_model_entity\')">\n\t\t\t\t\t\t<i class="fa fa-download"></i>\n\t\t\t\t\t\t<span translate>Export entity</span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<input-button class="btn-file panel-control-button pull-left"\n\t\t\t\t\t       in-progress="vm.parentController.importingSiteModel"\n\t\t\t\t\t       ng-show="vm.model.id !== undefined && vm.fullEditor">\n\t\t\t\t\t\t<i class="fa fa-upload"></i>\n\t\t\t\t\t\t<span translate>Import to entity</span>\n\t\t\t\t\t\t<input type="file" accept=".json,application/json" hidden\n\t\t\t\t\t\t       ng-disabled="vm.parentController.importingSiteModel"\n\t\t\t\t\t\t       ngf-select="vm.parentController.importSiteModelToEditorEntity($files)">\n\t\t\t\t\t</input-button>\n\n\t\t\t\t\t<delete-confirmation\n\t\t\t\t\t\t\tng-click="vm.parentController.prepareEntityToDelete(vm.model)"\n\t\t\t\t\t\t\ton-confirm-callback="vm.parentController.deleteConfirmed()"\n\t\t\t\t\t\t\tng-show="vm.fullEditor">\n\t\t\t\t\t\t<span translate>This entity and all its sub-entities will be deleted.</span>\n\t\t\t\t\t</delete-confirmation>\n\n\t\t\t\t\t<save-button ng-show="!vm.fullEditor"\n\t\t\t\t\t\t\tdata-dismiss="modal"\n\t\t\t\t\t\t\tng-click="vm.parentController.saveSitemodel()">\n\t\t\t\t\t</save-button>\n\n\t\t\t\t\t<ok-button ng-show="vm.fullEditor"\n\t\t\t\t\t           data-dismiss="modal">\n\t\t\t\t\t</ok-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n\n\x3c!-- Confirm a reset of the outline --\x3e\n<modal>\n\t<div class="modal fade" id="{{vm.modalId}}-resetConfirmation" tabindex="-1" role="dialog"\n\t     aria-labelledby="{{vm.modalId}}-resetConfirmation" aria-hidden="true">\n\t\t<div class="modal-dialog">\n\t\t\t<div class="modal-content">\n\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<h4 translate translate-context="title">Confirm</h4>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t<span translate>\n\t\t\t\t\t\tThe outline of this entity will be reset to its parent.\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t<cancel-button data-dismiss="modal"></cancel-button>\n\t\t\t\t\t<discard-button data-dismiss="modal" ng-click="vm.parentController.unlockEntityToggle(vm.model)">\n\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\tReset\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</discard-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1459);
    var r = function() {
        function t() {}
        return Object.defineProperty(t.prototype, "model", {
            get: function() {
                return this._model
            },
            set: function(t) {
                this._model = t,
                this.resetInputs()
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.addNewAttribute = function() {
            void 0 !== this.newKey && void 0 !== this.newValue && (this.model.attributes[this.newKey] = this.newValue,
            this.onChange && this.onChange(),
            this.resetInputs())
        }
        ,
        t.prototype.removeAttribute = function(t) {
            delete this.model.attributes[t]
        }
        ,
        t.prototype.resetInputs = function() {
            this.newKey = void 0,
            this.newValue = void 0
        }
        ,
        t
    }();
    e.AttributesEditorController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "Core/Misc/AttributesEditor.html",
            this.controller = r,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                model: "=",
                keySuggestions: "=?",
                valueSuggestions: "=?",
                onChange: "&?"
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.AttributesEditorDirective = o,
    i.module("IVWebApp").directive("attributesEditor", o.factory())
}
, function(t, e) {
    var n = "Core/Misc/AttributesEditor.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="form-group no-margin">\n\t<div class="col-sm-12 margin-top margin-bottom no-padding-left">\n\t\t<strong translate translate-context="title">Custom Attributes</strong>\n\t</div>\n\t<label class="col-sm-2 col-sm-offset-1 control-label no-padding-left" for="attributeKeyEdit"\n\t       translate translate-context="key as in key-value pair">Key</label>\n\t<div class="col-sm-3 no-padding-horizontal margin-bottom">\n\t\t<input class="form-control" id="attributeKeyEdit" type="text" list="key-suggestions"\n\t\t       ng-model="vm.newKey">\n\t</div>\n\t<label class="col-sm-2 control-label no-padding-left" for="attributeValueEdit"\n\t       translate>Value</label>\n\t<div class="col-sm-3 no-padding-horizontal margin-bottom">\n\t\t<input class="form-control" id="attributeValueEdit" type="text" list="value-suggestions"\n\t\t       ng-model="vm.newValue">\n\t</div>\n\t<div class="col-sm-1 text-right no-padding-horizontal margin-bottom">\n\t\t<button class="btn btn-primary" ng-click="vm.addNewAttribute()" title="{{\'Add attribute\'|translate}}">\n\t\t\t<i class="fa fa-plus"></i>\n\t\t</button>\n\t</div>\n\t<datalist id="key-suggestions">\n\t\t<option ng-repeat="suggestion in keySuggestions" value="{{suggestion}}"></option>\n\t</datalist>\n\t<datalist id="value-suggestions">\n\t\t<option ng-repeat="suggestion in valueSuggestions" value="{{suggestion}}"></option>\n\t</datalist>\n</div>\n\n<div class="form-group no-margin" ng-repeat="(key, value) in vm.model.attributes">\n\t<div>\n\t\t<div class="col-sm-offset-3 col-sm-3 no-padding-horizontal margin-bottom">\n\t\t\t<input class="form-control" type="text" readonly\n\t\t\t       ng-model="key">\n\t\t</div>\n\t\t<div class="col-sm-offset-2 col-sm-3 no-padding-horizontal margin-bottom">\n\t\t\t<input class="form-control" type="text" readonly\n\t\t\t       ng-model="value">\n\t\t</div>\n\t\t<div class="col-sm-1 text-right no-padding-horizontal margin-bottom">\n\t\t\t<button class="btn btn-default" ng-click="vm.removeAttribute(key)" title="{{\'Remove attribute\'|translate}}">\n\t\t\t\t<i class="fa fa-trash-o"></i>\n\t\t\t</button>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "Alignment/AlignmentHelper.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="panel panel-default">\n\t<div class="panel-heading" data-toggle="collapse" data-target="#viewConfiguration">\n\t\t<i class="collapse-expand-chevron"></i>\n\t\t<span class="panel-title" translate translate-context="title">\n\t\t\tView Configuration\n\t\t</span>\n\t</div>\n\t<div id="viewConfiguration" class="panel-collapse collapse in">\n\t\t<div class="panel-body">\n\t\t\t<div class="checkbox">\n\t\t\t\t<label>\n\t\t\t\t\t<input type="checkbox"\n\t\t\t\t\t       ng-model="vmAlignmentHelper.helperTV.visible"\n\t\t\t\t\t       ng-change="vmAlignmentHelper.alignmentHelperChanged()">\n\t\t\t\t\t<div class="data-set-icon"\n\t\t\t\t\t     ng-style="{background: vmAlignmentHelper.helperTV.viewport.info.getColorCSS()}"></div>\n\t\t\t\t\t{{vmAlignmentHelper.helperTV.viewport.info.caption | translate}}\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t\t<div class="checkbox">\n\t\t\t\t<label>\n\t\t\t\t\t<input type="checkbox"\n\t\t\t\t\t       ng-model="vmAlignmentHelper.helperSV2.visible"\n\t\t\t\t\t       ng-change="vmAlignmentHelper.alignmentHelperChanged()">\n\t\t\t\t\t<div class="data-set-icon"\n\t\t\t\t\t     ng-style="{background: vmAlignmentHelper.helperSV2.viewport.info.getColorCSS()}"></div>\n\t\t\t\t\t{{vmAlignmentHelper.helperSV2.viewport.info.caption | translate}}\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t\t<div class="checkbox">\n\t\t\t\t<label>\n\t\t\t\t\t<input type="checkbox"\n\t\t\t\t\t       ng-model="vmAlignmentHelper.helperSV1.visible"\n\t\t\t\t\t       ng-change="vmAlignmentHelper.alignmentHelperChanged()">\n\t\t\t\t\t<div class="data-set-icon"\n\t\t\t\t\t     ng-style="{background: vmAlignmentHelper.helperSV1.viewport.info.getColorCSS()}"></div>\n\t\t\t\t\t{{vmAlignmentHelper.helperSV1.viewport.info.caption | translate}}\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t\t<div class="checkbox">\n\t\t\t\t<label>\n\t\t\t\t\t<input type="checkbox"\n\t\t\t\t\t       ng-model="vmAlignmentHelper.helperDefault.visible"\n\t\t\t\t\t       ng-change="vmAlignmentHelper.alignmentHelperChanged()">\n\t\t\t\t\t<div class="data-set-icon"\n\t\t\t\t\t     ng-style="{background: vmAlignmentHelper.helperDefault.viewport.info.getColorCSS()}"></div>\n\t\t\t\t\t{{vmAlignmentHelper.helperDefault.viewport.info.caption | translate}}\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t\t<hr>\n\t\t\t<div class="checkbox">\n\t\t\t\t<label>\n\t\t\t\t\t<input type="checkbox"\n\t\t\t\t\t       ng-model="vmAlignmentHelper.pointCloudConfig.showPanosInPerspective"\n\t\t\t\t\t       ng-change="vmAlignmentHelper.settingShowPanosInPerspectiveChangedCallback()">\n\t\t\t\t\t<span translate>\n\t\t\t\t\tShow panoramas in perspective view\n\t\t\t\t</span>\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1462);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "alignment-helper .data-set-icon{margin-top:-4px}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(141)
      , o = n(25)
      , a = (n(15),
    n(38),
    n(147));
    n(65),
    n(1464),
    n(646),
    n(1465),
    n(1466);
    var s = n(148)
      , c = n(21)
      , l = n(81)
      , u = n(6)
      , d = n(0)
      , p = n(0)
      , h = n(38)
      , f = n(15)
      , m = function() {
        function t(t, e, n) {
            this.SidebarMenuService = t,
            this.ConfigService = e,
            this.gettext = n,
            this.initSideMenuItem()
        }
        return t.prototype.initSideMenuItem = function() {
            var t = this
              , e = (new s.SidebarMenuItemBuilder).setKey(l.SidebarMenuItemsKey.VIEW).setTitle(this.gettext("View", void 0, "title")).setIcon(new r.IconInfo("material-icons","remove_red_eye")).setIsVisible((function() {
                return t.ConfigService.getBoolean(o.Configs.MENU_VIEW_VISIBLE, !0)
            }
            )).setTemplate(c.TemplateName.VIEW_MENU).setClassCallback((function() {
                return "sidebar-menu-item-view"
            }
            )).setOrder(a.SidebarMenuItemsOrder.VIEW).build();
            this.SidebarMenuService.addItem(e)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(p.ɵɵinject(h.SidebarMenuService),p.ɵɵinject(f.ConfigService),p.ɵɵinject("gettext"))
        }
        ,
        t.ɵprov = p.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.ViewModule = m,
    p.ɵsetClassMetadata(m, [{
        type: d.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: h.SidebarMenuService
        }, {
            type: f.ConfigService
        }, {
            type: void 0,
            decorators: [{
                type: d.Inject,
                args: ["gettext"]
            }]
        }]
    }
    ), null),
    i.module("IVWebApp").service("ViewModule", u.downgradeInjectable(m))
}
, function(t, e, n) {
    "use strict";
    n.r(e);
    var i = n(2);
    !function() {
        function t(t, e, n, i, r) {
            t.config = e.config,
            t.ViewService = i,
            this.togglePanoramas = function() {
                e.showPanoramas(!e.config.showPanoramas)
            }
            ,
            this.toggleMeshes = function() {
                e.showMeshes(!e.config.showMeshes)
            }
            ,
            this.showMeshMenu = function() {
                return e.config.showMeshes
            }
            ,
            this.toggleLocationMarkers = function() {
                e.showLocationMarkers(!e.config.showLocationMarkers)
            }
            ,
            this.isMeshesOptionFeatureEnabled = function() {
                return r.featureFlags.meshesEnabled
            }
            ,
            this.showMeshesOptionEnabled = function() {
                return e.config.showMeshesOptionEnabled
            }
            ,
            this.showPanoramasOptionEnabled = function() {
                return e.config.showPanoramasOptionEnabled
            }
            ,
            this.showSecondaryViewOptionEnabled = function() {
                return e.config.showSecondaryViewOptionEnabled
            }
            ,
            this.showLocationMarkersOptionEnabled = function() {
                return e.config.showLocationMarkersOptionEnabled
            }
        }
        t.$inject = ["$scope", "ViewMenuService", "IV", "ViewService", "FeatureFlagsService"],
        Object(i.module)("IVWebApp").controller("ViewMenuController", t)
    }()
}
, function(t, e, n) {
    "use strict";
    n.r(e);
    var i = n(2)
      , r = n(254)
      , o = n(7)
      , a = n(143)
      , s = n(222);
    IndoorViewerWebApp.controller("PointCloudMenuController", ["$scope", "gettextCatalog", "PointCloudMenuService", "ModeService", "DatasetRepository", "ViewMenuService", "TrackingService", function(t, e, n, c, l, u, d) {
        function p(n) {
            1 == n.material.useEDL ? (t.tooltips[n.name].inactiveFromShading = e.getString("Inactive: Shading is enabled"),
            1 == n.material.opacity ? t.tooltips[n.name].inactiveFromShadingOpacity = e.getString("Inactive: Shading is enabled and opacity is 1") : t.tooltips[n.name].inactiveFromShadingOpacity = e.getString("Inactive: Shading is enabled")) : 1 == n.material.opacity ? (t.tooltips[n.name].inactiveFromShading = "",
            t.tooltips[n.name].inactiveFromShadingOpacity = e.getString("Inactive: Opacity is 1")) : (t.tooltips[n.name].inactiveFromShading = "",
            t.tooltips[n.name].inactiveFromShadingOpacity = "")
        }
        t.config = n.config,
        t.dropdownMenus = n.dropdownMenus,
        t.settingsPanes = n.settingsPanes,
        t.mode = c.currentMode,
        t.tooltips = {},
        t.settingAutoActivationChangedCallback = function() {
            n.configAutoActivationChanged.emit(t.config[a.PointCloudConfig.AUTO_ACTIVATION])
        }
        ,
        t.settingBrightnessChangedCallback = function() {
            n.configBrightnessChanged.emit(t.config[a.PointCloudConfig.BRIGHTNESS])
        }
        ,
        t.settingColorHueOffsetChangedCallback = function() {
            n.configColorHueOffsetChanged.emit(t.config[a.PointCloudConfig.HUE_OFFSET])
        }
        ,
        t.settingColorHueScaleChangedCallback = function() {
            n.configColorHueScaleChanged.emit(t.config[a.PointCloudConfig.HUE_SCALE])
        }
        ,
        t.settingDepthCullingChangedCallback = function() {
            n.configDepthCullingChanged.emit(t.config[a.PointCloudConfig.MAX_DIST])
        }
        ,
        t.settingOpacityChangedCallback = function() {
            n.configOpacityChanged.emit(t.config[a.PointCloudConfig.OPACITY])
        }
        ,
        t.settingPcResolutionChangedCallback = function() {
            n.configPcResolutionChanged.emit(t.config[a.PointCloudConfig.MAX_DEPTH])
        }
        ,
        t.settingShowPointCloudChangedCallback = function() {
            var e = t.config[a.PointCloudConfig.SHOW_POINT_CLOUD];
            n.configShowPointCloudChanged.emit(e),
            d.trackRenderingModeChanged(s.RenderingMode.PointCloud, e),
            u.showPanoramas(!e, !1)
        }
        ,
        t.settingZBufferingChangedCallback = function() {
            n.configZBufferingChanged.emit(t.config[a.PointCloudConfig.Z_BUFFERING])
        }
        ,
        t.advancedSettingChangedCallback = function(t) {
            n.advancedSettingChangedCallback(t),
            p(t)
        }
        ,
        t.applyPreset = function(t, e, i) {
            n.applyPreset(t, e, i),
            p(i)
        }
        ,
        t.showLegacyOptions = function() {
            return Object(o.some)(l.data, (function(t) {
                return t.pointCloudVisible && t.getPointCloudType() === r.PointCloudType.OCTREE
            }
            ))
        }
        ,
        t.showPotreeOptions = function() {
            return Object(o.some)(l.data, (function(t) {
                return t.pointCloudVisible && t.getPointCloudType() === r.PointCloudType.POTREE
            }
            ))
        }
        ,
        t.showPointCloudOptionEnabled = function() {
            return u.config.showPointCloudOptionEnabled
        }
        ,
        t.showPointCloudAutomaticActivationOptionEnabled = function() {
            return u.config.showPointCloudAutomaticActivationOptionEnabled
        }
        ,
        Object(i.forEach)(n.settingsPanes, (function(e) {
            e.collapsed = !0,
            t.tooltips[e.name] = {},
            p(e)
        }
        )),
        n.findBoundingBox()
    }
    ])
}
, function(t, e, n) {
    "use strict";
    n.r(e);
    var i = n(2)
      , r = n(20)
      , o = n(40)
      , a = n(25)
      , s = n(16)
      , c = n(342)
      , l = n(105);
    function u(t, e) {
        var n;
        if ("undefined" == typeof Symbol || null == t[Symbol.iterator]) {
            if (Array.isArray(t) || (n = function(t, e) {
                if (!t)
                    return;
                if ("string" == typeof t)
                    return d(t, e);
                var n = Object.prototype.toString.call(t).slice(8, -1);
                "Object" === n && t.constructor && (n = t.constructor.name);
                if ("Map" === n || "Set" === n)
                    return Array.from(t);
                if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                    return d(t, e)
            }(t)) || e && t && "number" == typeof t.length) {
                n && (t = n);
                var i = 0
                  , r = function() {};
                return {
                    s: r,
                    n: function() {
                        return i >= t.length ? {
                            done: !0
                        } : {
                            done: !1,
                            value: t[i++]
                        }
                    },
                    e: function(t) {
                        throw t
                    },
                    f: r
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var o, a = !0, s = !1;
        return {
            s: function() {
                n = t[Symbol.iterator]()
            },
            n: function() {
                var t = n.next();
                return a = t.done,
                t
            },
            e: function(t) {
                s = !0,
                o = t
            },
            f: function() {
                try {
                    a || null == n.return || n.return()
                } finally {
                    if (s)
                        throw o
                }
            }
        }
    }
    function d(t, e) {
        (null == e || e > t.length) && (e = t.length);
        for (var n = 0, i = new Array(e); n < e; n++)
            i[n] = t[n];
        return i
    }
    IndoorViewerWebApp.service("PointCloudMenuService", ["ConfigService", "DatasetRepository", "gettext", "ModeService", "ViewService", "TransformService", function(t, e, n, d, p, h) {
        var f = this
          , m = this;
        this.showPointClouds = function(t) {
            m.config.showPointCloud !== t && (m.config.showPointCloud = t,
            m.configShowPointCloudChanged.emit(t))
        }
        ,
        this.isCloudVisible = function() {
            return m.config.showPointCloud
        }
        ,
        this.findBoundingBox = function() {
            e.findAll().then((function(t) {
                var e, n = !1, i = u(t);
                try {
                    for (i.s(); !(e = i.n()).done; ) {
                        var r = e.value;
                        "POTREE" === r.getPointCloudType() && (w(r),
                        n = !0)
                    }
                } catch (t) {
                    i.e(t)
                } finally {
                    i.f()
                }
                n && (m.config.perspectiveMaterial.z[0] = m.config.orthoMaterial.z[0] = m.config.zMin,
                m.config.perspectiveMaterial.z[1] = m.config.orthoMaterial.z[1] = m.config.zMax)
            }
            ))
        }
        ;
        var g = {
            id: c.PointSizeType.FIXED,
            name: n("Fixed"),
            minSize: .01,
            maxSize: 10,
            stepSize: .01
        }
          , v = {
            id: c.PointSizeType.ATTENUATED,
            name: n("Attenuated"),
            minSize: .01,
            maxSize: 1,
            stepSize: .01
        }
          , y = {
            id: c.PointSizeType.ADAPTIVE,
            name: n("Adaptive"),
            minSize: .01,
            maxSize: 1,
            stepSize: .01
        }
          , b = v;
        function w(t) {
            var e = t.dataset2local(t.getBoundingBoxMin().clone())
              , n = t.dataset2local(t.getBoundingBoxMax().clone());
            void 0 === m.config.zMin ? (m.config.zMin = Math.floor(10 * e.z) / 10,
            m.config.zMax = Math.ceil(10 * n.z) / 10) : (m.config.zMin = Math.min(Math.floor(10 * e.z) / 10, m.config.zMin),
            m.config.zMax = Math.max(Math.ceil(10 * n.z) / 10, m.config.zMax))
        }
        this.config = {
            showPointCloud: !1,
            showPanosInPerspective: !1,
            autoActivation: !0,
            opacity: .1,
            brightness: 1e3,
            maxDist: 300,
            maxDepth: 6,
            hueOffset: 0,
            hueScale: -.2,
            zBuffering: !1,
            distance_to_depth: [[8, 8], [12, 7], [25, 6], [1 / 0, 5]],
            same_res: !1,
            zMin: void 0,
            zMax: void 0,
            pointCountTarget: 4,
            minNodeSize: 50,
            perspectiveMaterial: {
                opacity: .4,
                brightness: 1e3,
                z: [9.8, 15.6],
                useEDL: !1,
                EDLStrength: 1,
                pointSize: .7,
                pointSizeSelectedOption: v,
                colorStyleSelectedOption: {
                    id: "0",
                    name: n("Full color")
                },
                pointShapeSelectedOption: {
                    id: "1",
                    name: n("Circle")
                },
                normalsFiltering: !1
            },
            orthoMaterial: {
                opacity: .1,
                brightness: 1e3,
                z: [9.8, 15.6],
                pointSize: .7,
                colorStyleSelectedOption: {
                    id: "0",
                    name: n("Full color")
                },
                pointShapeSelectedOption: {
                    id: "1",
                    name: n("Circle")
                },
                pointSizeSelectedOption: g,
                normalsFiltering: !0
            }
        },
        this.dropdownMenus = {
            pointSizeOptions: [g, v, y],
            colorStyleOptions: [{
                id: "1",
                name: n("Single color")
            }, {
                id: "0",
                name: n("Full color")
            }, {
                id: "3",
                name: n("Elevation")
            }, {
                id: "11",
                name: n("Normals")
            }, {
                id: "4",
                name: n("Intensity")
            }, {
                id: "5",
                name: n("Intensity Gradient")
            }],
            pointShapeOptions: [{
                id: "0",
                name: n("Square", void 0, "Geometric Shape")
            }, {
                id: "1",
                name: n("Circle", void 0, "Geometric Shape")
            }]
        },
        this.presets = {
            colored: {
                name: "colored",
                caption: n("Colored"),
                settings: {
                    pointSize: .4,
                    opacity: 1,
                    useEDL: !1
                },
                generalSettings: {},
                dropdowns: {
                    pointSizeSelectedOption: b,
                    colorStyleSelectedOption: {
                        id: "0",
                        name: n("Full color")
                    },
                    pointShapeSelectedOption: {
                        id: "0",
                        name: n("Square")
                    }
                }
            },
            ortho_colored: {
                name: "ortho_colored",
                caption: n("Colored"),
                settings: {
                    pointSize: .4,
                    opacity: 1
                },
                generalSettings: {},
                dropdowns: {
                    pointSizeSelectedOption: g,
                    colorStyleSelectedOption: {
                        id: "0",
                        name: n("Full color")
                    },
                    pointShapeSelectedOption: {
                        id: "0",
                        name: n("Square")
                    }
                }
            },
            shaded: {
                name: "shaded",
                caption: n("Shaded"),
                settings: {
                    pointSize: .2,
                    useEDL: !0
                },
                generalSettings: {},
                dropdowns: {
                    pointSizeSelectedOption: b,
                    colorStyleSelectedOption: {
                        id: "0",
                        name: n("Full color")
                    },
                    pointShapeSelectedOption: {
                        id: "0",
                        name: n("Square")
                    }
                }
            },
            singleColorHighTransparency: {
                name: "singleColorHighTransparency",
                caption: n("Transparent color"),
                settings: {
                    pointSize: .4,
                    opacity: .25,
                    brightness: 1e3,
                    useEDL: !1
                },
                generalSettings: {},
                dropdowns: {
                    pointSizeSelectedOption: b,
                    colorStyleSelectedOption: {
                        id: "1",
                        name: n("Single color")
                    },
                    pointShapeSelectedOption: {
                        id: "0",
                        name: n("Square")
                    }
                }
            },
            singleColor: {
                name: "singleColor",
                caption: n("Single color"),
                settings: {
                    pointSize: .2,
                    opacity: .3
                },
                generalSettings: {},
                dropdowns: {
                    colorStyleSelectedOption: {
                        id: "1",
                        name: n("Single color")
                    },
                    pointShapeSelectedOption: {
                        id: "0",
                        name: n("Square")
                    }
                }
            },
            elevation: {
                name: "elevation",
                caption: n("Elevation"),
                settings: {
                    pointSize: .2,
                    opacity: .3
                },
                generalSettings: {},
                dropdowns: {
                    colorStyleSelectedOption: {
                        id: "3",
                        name: n("Elevation")
                    },
                    pointShapeSelectedOption: {
                        id: "0",
                        name: n("Square")
                    }
                }
            },
            highPerformance: {
                name: "highPerformance",
                caption: n("High performance"),
                settings: {},
                generalSettings: {
                    maxDist: 50,
                    pointCountTarget: 1,
                    maxDepth: 4,
                    minNodeSize: 50
                },
                dropdowns: {}
            },
            balanced: {
                name: "balanced",
                caption: n("Balanced"),
                settings: {},
                generalSettings: {
                    maxDist: 150,
                    maxDepth: 5,
                    pointCountTarget: 4,
                    minNodeSize: 50
                },
                dropdowns: {}
            },
            highQuality: {
                name: "highQuality",
                caption: n("High quality"),
                settings: {},
                generalSettings: {
                    maxDist: 300,
                    maxDepth: 8,
                    pointCountTarget: 8,
                    minNodeSize: 50
                },
                dropdowns: {}
            }
        },
        this.settingsPanes = [{
            name: "quality",
            caption: n("Quality", void 0, "title"),
            presets: [this.presets.highPerformance, this.presets.balanced, this.presets.highQuality],
            material: {},
            visibleSettings: {
                maxDist: !0,
                maxDepth: !0,
                pointCountTarget: !0,
                minNodeSize: !0
            },
            visible: function() {
                return m.config.showPointCloud
            },
            currentPreset: void 0,
            collapsed: !0
        }, {
            name: "perspective",
            caption: n("Perspective Appearance", void 0, "title"),
            presets: [this.presets.colored, this.presets.elevation, this.presets.singleColorHighTransparency],
            material: this.config.perspectiveMaterial,
            visibleSettings: {
                opacity: !0,
                brightness: !0,
                colorStyle: !0,
                pointSizeMode: !0,
                pointSize: !0,
                pointShape: !0,
                edl: !0,
                edlSupport: !0
            },
            visible: function() {
                return m.config.showPointCloud && (!d.isDownloadPointCloudMode() || p.getCurrentMainViewMode() === l.SceneViewMode.Perspective)
            },
            currentPreset: void 0,
            collapsed: !0
        }, {
            name: "ortho",
            caption: n("Orthographic Appearance", void 0, "title"),
            presets: [this.presets.ortho_colored, this.presets.singleColor, this.presets.elevation],
            material: this.config.orthoMaterial,
            visibleSettings: {
                opacity: !0,
                colorStyle: !0,
                pointSize: !0,
                pointShape: !0,
                normalsFiltering: !0
            },
            visible: function() {
                return m.config.showPointCloud && (d.isDatasetAlignmentMode() || d.isSiteModelEditorMode() || d.isMeasurementsMode() || m.isDownloadPointCloudMapMode())
            },
            currentPreset: void 0,
            collapsed: !0
        }],
        this.pointCloudChanged = new s.Signal,
        this.pointCloudsClearEvent = new s.Signal,
        this.configAutoActivationChanged = new s.Signal,
        this.configBrightnessChanged = new s.Signal,
        this.configColorHueOffsetChanged = new s.Signal,
        this.configColorHueScaleChanged = new s.Signal,
        this.configDepthCullingChanged = new s.Signal,
        this.configOpacityChanged = new s.Signal,
        this.configPcResolutionChanged = new s.Signal,
        this.configShowPanosInPerspectiveChanged = new s.Signal,
        this.configShowPointCloudChanged = new s.Signal,
        this.configZBufferingChanged = new s.Signal,
        this.isDownloadPointCloudMapMode = function() {
            return d.isDownloadPointCloudMode() && p.getCurrentMainViewMode() === l.SceneViewMode.Map
        }
        ,
        this.applyPreset = function(t, e, n) {
            if (null != t) {
                for (var r in n.currentPreset = t,
                m.presets[t].settings)
                    e[r] = m.presets[t].settings[r];
                for (var r in m.presets[t].dropdowns)
                    e[r] && (e[r] = {},
                    Object(i.copy)(m.presets[t].dropdowns[r], e[r]));
                for (var r in m.presets[t].generalSettings)
                    this.config[r] = m.presets[t].generalSettings[r];
                this.pointCloudChanged.emit()
            }
        }
        ,
        this.advancedSettingChangedCallback = function(t) {
            t.currentPreset = void 0,
            this.pointCloudChanged.emit()
        }
        ,
        this.applyPreset(Object(o.isMobileBrowser)() ? "highPerformance" : "balanced", null, this.settingsPanes[0]),
        this.applyPreset("colored", this.config.perspectiveMaterial, this.settingsPanes[1]),
        this.applyPreset("singleColor", this.config.orthoMaterial, this.settingsPanes[2]),
        t.initialized.then((function() {
            m.showPointClouds(t.getBoolean(a.Configs.LAYERS_POINTCLOUD_VISIBLE, m.config.showPointCloud)),
            m.config.same_res = t.getBoolean(a.Configs.LAYERS_POINTCLOUD_SAME_RES, !1),
            m.config.same_res && console.log("Warning: loading all point cloud tiles at same resolution"),
            Object(r.invalidateAngular)()
        }
        )),
        h.onAfterLocalReferenceSystemChange.connect((function() {
            f.pointCloudsClearEvent.emit()
        }
        ))
    }
    ])
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(141)
      , o = n(25)
      , a = (n(15),
    n(38),
    n(147));
    n(1468),
    n(267),
    n(39),
    n(391),
    n(1476),
    n(1482),
    n(204);
    var s = n(148)
      , c = n(21)
      , l = n(81)
      , u = n(6)
      , d = n(0)
      , p = n(0)
      , h = n(38)
      , f = n(15)
      , m = function() {
        function t(t, e, n) {
            this.SidebarMenuService = t,
            this.ConfigService = e,
            this.gettext = n,
            this.initSideMenuItem()
        }
        return t.prototype.initSideMenuItem = function() {
            var t = this
              , e = (new s.SidebarMenuItemBuilder).setKey(l.SidebarMenuItemsKey.POI_TYPES).setTitle(this.gettext("POI Types", void 0, "title")).setIcon(new r.IconInfo("material-icons","location_on")).setIsVisible((function() {
                return t.ConfigService.getBoolean(o.Configs.MENU_POI_VISIBLE, !0)
            }
            )).setTemplate(c.TemplateName.POITYPES_MENU).setClassCallback((function() {
                return "sidebar-menu-item-poi-types"
            }
            )).setOrder(a.SidebarMenuItemsOrder.POI_TYPES).build();
            this.SidebarMenuService.addItem(e)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(p.ɵɵinject(h.SidebarMenuService),p.ɵɵinject(f.ConfigService),p.ɵɵinject("gettext"))
        }
        ,
        t.ɵprov = p.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.PoiTypesModule = m,
    p.ɵsetClassMetadata(m, [{
        type: d.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: h.SidebarMenuService
        }, {
            type: f.ConfigService
        }, {
            type: void 0,
            decorators: [{
                type: d.Inject,
                args: ["gettext"]
            }]
        }]
    }
    ), null),
    i.module("IVWebApp").service("PoiTypesModule", u.downgradeInjectable(m))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    n(1469),
    n(1471),
    n(1472),
    n(609),
    n(1474);
    var i = n(2)
      , r = n(40)
      , o = n(57)
      , a = function() {
        function t(t, e, n) {
            var i = this;
            this.PoiTypeService = t,
            this.LanguageService = e,
            this.UserService = n,
            this.localize = this.LanguageService.localize,
            this.getPoiTypeGroupName = function(t) {
                return i.localize(t.name)
            }
            ,
            this.typeGroupEditorModel = this.PoiTypeService.createPoiTypeGroup(),
            this.typeEditorModel = this.PoiTypeService.createPoiType()
        }
        return t.$inject = ["PoiTypeService", "LanguageService", "UserService"],
        t.prototype.isPlatformIos = function() {
            return r.isPlatform(r.Platform.IOS)
        }
        ,
        t.prototype.showAll = function() {
            this.PoiTypeService.types.forEach((function(t) {
                return t.selected = !0
            }
            ))
        }
        ,
        t.prototype.hideAll = function() {
            this.PoiTypeService.types.forEach((function(t) {
                return t.selected = !1
            }
            ))
        }
        ,
        t.prototype.edit = function(t) {
            t || (t = this.PoiTypeService.createPoiTypeGroup()),
            this.typeGroupEditorModel.copy(t)
        }
        ,
        Object.defineProperty(t.prototype, "typeGroups", {
            get: function() {
                return this.PoiTypeService.typeGroups
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "canCreateGroups", {
            get: function() {
                return void 0 !== this.UserService.userInfo && this.UserService.userInfo.checkAttribute(o.GroupAttributes.CAN_CREATE_POI_GROUPS)
            },
            enumerable: !0,
            configurable: !0
        }),
        t
    }();
    e.PoiTypeGroupListController = a;
    var s = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "PoiTypeUI/PoiTypeGroupList.html",
            this.controller = a,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.PoiTypeGroupListDirective = s,
    i.module("IVWebApp").directive("poiTypeGroupList", s.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1470),
    n(608);
    var r = n(57)
      , o = function() {
        function t(t, e, n) {
            var i = this;
            this.PoiTypeService = t,
            this.LanguageService = e,
            this.UserService = n,
            this.localize = this.LanguageService.localize,
            this.getPoiTypeName = function(t) {
                return i.localize(t.name)
            }
        }
        return t.$inject = ["PoiTypeService", "LanguageService", "UserService"],
        t.prototype.edit = function(t) {
            t || ((t = this.PoiTypeService.createPoiType()).poiTypeGroup = this.group),
            this.editorModel.copy(t)
        }
        ,
        t.prototype.canCreate = function() {
            return !!this.group.canWrite && (0 !== this.group.security.groupRead || this.UserService.userInfo && this.UserService.userInfo.checkAttribute(r.GroupAttributes.CAN_MAKE_PUBLIC))
        }
        ,
        t
    }();
    e.PoiTypeListController = o;
    var a = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "PoiTypeUI/PoiTypeList.html",
            this.controller = o,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                group: "=",
                editorModel: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.PoiTypeListDirective = a,
    i.module("IVWebApp").directive("poiTypeList", a.factory())
}
, function(t, e) {
    var n = "PoiTypeUI/PoiTypeList.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '\x3c!--editing types and groups and selecting which to render in 3d scene --\x3e\n<div class="checkbox" ng-repeat="type in group.types | orderBy: vm.getPoiTypeName">\n\n\t\x3c!--click to setup and open a modal for editing an existing type--\x3e\n\t<div ng-if="type.poiTypeGroup.canWrite" title="{{\'Edit category\'|translate}}"\n\t     ng-click="vm.edit(type)"\n\t     data-toggle="modal" data-target="#PoiTypeEditor"\n\t     class="poi-type-edit-btn fa fa-pencil" aria-hidden="true"></div>\n\n\t<label>\n\t\t\x3c!--show this types POIs in the 3d scene--\x3e\n\t\t<input type="checkbox" ng-model="type.selected">\n\n\t\t\x3c!--type icon--\x3e\n\t\t<img ng-src="{{type.icon}}" class="poiIcon">\n\n\t\t\x3c!--type name--\x3e\n\t\t<span class="long-title poi-type-title" title="{{type.id + \'. \' + vm.localize(type.name)}}">\n\t\t\t{{vm.localize(type.name)}}\n\t\t</span>\n\t</label>\n</div>\n\n\x3c!-- Add a new POI Type --\x3e\n<div class="checkbox"\n     ng-if="vm.canCreate()">\n\t<span title="{{\'Add a new category\'|translate}}" ng-click="vm.edit()"\n\t      data-toggle="modal" data-target="#PoiTypeEditor" class="poi-type-add-btn fa fa-plus"\n\t      aria-hidden="true">\n\t</span>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2);
    n(608),
    n(273);
    var a = n(185)
      , s = n(273)
      , c = n(7)
      , l = n(136)
      , u = n(8)
      , d = n(89)
      , p = function(t) {
        function e(e, n, i, r, o, a, s, c, l, u) {
            var p = t.call(this, s, c, u, l) || this;
            return p.PoiTypeService = e,
            p.PoiService = n,
            p.LanguageService = i,
            p.UploadService = r,
            p.ViewService = o,
            p.PoiRepository = a,
            p.localize = p.LanguageService.localize,
            p.isEmpty = !1,
            p.countPoisProgress = new d.PromiseProgressWrapper,
            p.uploadProgress = new d.PromiseProgressWrapper,
            p
        }
        return r(e, t),
        e.$inject = ["PoiTypeService", "PoiService", "LanguageService", "UploadService", "ViewService", "PoiRepository", "PoiTypeRepository", "gettextCatalog", "ErrorService", "$element"],
        e.prototype.isCountInProgress = function() {
            return this.countPoisProgress.isInProgress
        }
        ,
        e.prototype.isUploadInProgress = function() {
            return this.uploadProgress.isInProgress
        }
        ,
        e.prototype.save = function() {
            return s.TranslationEditorController.removeEmptyTranslations(this.model.name),
            this.isEmpty = s.TranslationEditorController.areTranslationsEmpty(this.model.name),
            this.isEmpty ? Promise.reject(void 0) : t.prototype.save.call(this)
        }
        ,
        e.prototype.onHide = function() {
            t.prototype.onHide.call(this),
            this.isEmpty = !1
        }
        ,
        Object.defineProperty(e.prototype, "zoomLevel", {
            get: function() {
                var t = this.ViewService.mapView.getDefaultViewport()
                  , e = this.ViewService.mapView.getCamera()
                  , n = t.getWidth() / (e.right - e.left);
                return Number(n.toFixed(4))
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(e.prototype, "writablePoiTypeGroups", {
            get: function() {
                return c.filter(this.PoiTypeService.typeGroups, (function(t) {
                    return t.security.canWrite
                }
                ))
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.isUploadAvailable = function() {
            return this.UploadService.isProtectedUploadAvailable()
        }
        ,
        e.prototype.uploadIcon = function(t, n) {
            for (var i = this, r = 0, o = t; r < o.length; r++) {
                var a = o[r];
                this.reportErrorInModal(this.uploadProgress.wrap(this.UploadService.upload(e.ICON_UPLOAD_URL, a).then((function(t) {
                    i.model.icon = e.UPLOAD_URL + "/" + t.url
                }
                )).catch((function(t) {
                    throw n.target.value = "",
                    t
                }
                )))).catch((function() {}
                ))
            }
        }
        ,
        e.prototype.countAssociatedPois = function() {
            var t = this;
            this.countPoisProgress.wrap(this.PoiRepository.count((new l.PoiRestFilterBuilder).poiType([this.model]).build())).then((function(e) {
                return t.associatedPoisCount = e
            }
            )).catch(u.handleWarning)
        }
        ,
        e.UPLOAD_URL = "poi/image",
        e.ICON_UPLOAD_URL = "poi/icon",
        e
    }(a.EntityEditorController);
    e.PoiTypeEditorController = p;
    var h = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "PoiTypeUI/PoiTypeEditor.html",
            this.controller = p,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                model: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.PoiTypeEditorDirective = h,
    o.module("IVWebApp").directive("poiTypeEditor", h.factory())
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2);
    n(1473),
    n(273),
    n(431),
    n(430);
    var a = n(185)
      , s = n(273)
      , c = n(136)
      , l = n(8)
      , u = n(89)
      , d = function(t) {
        function e(e, n, i, r, o, a, s, c, l) {
            var d = t.call(this, o, a, c, l) || this;
            return d.PoiTypeService = e,
            d.PoiService = n,
            d.LanguageService = i,
            d.PoiRepository = r,
            d.GroupService = s,
            d.localize = d.LanguageService.localize,
            d.isEmpty = !1,
            d.countPoisProgress = new u.PromiseProgressWrapper,
            d
        }
        return r(e, t),
        e.$inject = ["PoiTypeService", "PoiService", "LanguageService", "PoiRepository", "PoiTypeGroupRepository", "gettextCatalog", "GroupService", "$element", "ErrorService"],
        e.prototype.isCountInProgress = function() {
            return this.countPoisProgress.isInProgress
        }
        ,
        e.prototype.save = function() {
            return s.TranslationEditorController.removeEmptyTranslations(this.model.name),
            this.isEmpty = s.TranslationEditorController.areTranslationsEmpty(this.model.name),
            this.isEmpty ? Promise.reject(void 0) : t.prototype.save.call(this)
        }
        ,
        e.prototype.onHide = function() {
            t.prototype.onHide.call(this),
            this.isEmpty = !1
        }
        ,
        e.prototype.countAssociatedPois = function() {
            var t = this;
            this.countPoisProgress.wrap(this.PoiRepository.count((new c.PoiRestFilterBuilder).poiTypeGroup([this.model]).build())).then((function(e) {
                return t.associatedPoisCount = e
            }
            )).catch(l.handleWarning)
        }
        ,
        e
    }(a.EntityEditorController);
    e.PoiTypeGroupEditorController = d;
    var p = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "PoiTypeUI/PoiTypeGroupEditor.html",
            this.controller = d,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                model: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.PoiTypeGroupEditorDirective = p,
    o.module("IVWebApp").directive("poiTypeGroupEditor", p.factory())
}
, function(t, e, n) {
    var i = "PoiTypeUI/PoiTypeGroupEditor.html"
      , r = '\x3c!-- POI Type Group Editor --\x3e\n<div class="modal fade" id="PoiTypeGroupEditor" tabindex="-1" role="dialog"\n     aria-labelledby="PoiTypeGroupEditor" aria-hidden="true" data-backdrop="static">\n\t<div class="modal-dialog">\n\t\t<div class="modal-content">\n\n\t\t\t<div class="modal-header">\n\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}"\n\t\t\t\t     data-dismiss="modal">\n\n\t\t\t\t<h4 ng-if="!vm.model.id" translate translate-context="title">\n\t\t\t\t\tAdd a New Category Group\n\t\t\t\t</h4>\n\t\t\t\t<h4 ng-if="vm.model.id" translate translate-context="title">\n\t\t\t\t\tEdit Category Group\n\t\t\t\t</h4>\n\t\t\t</div>\n\n\t\t\t<div class="modal-body">\n\t\t\t\t<div class="form-horizontal">\n\t\t\t\t\t\x3c!-- Language --\x3e\n\t\t\t\t\t<translation-editor translations="vm.model.name"\n\t\t\t\t\t                    col-span="3"\n\t\t\t\t\t                    selected-language="selectedLanguage">\n\t\t\t\t\t</translation-editor>\n\n\t\t\t\t\t\x3c!-- Type group name --\x3e\n\t\t\t\t\t<div class="form-group" ng-class="{\'has-error\': vm.isEmpty}">\n\t\t\t\t\t\t<label class="col-sm-3 control-label" translate>\n\t\t\t\t\t\t\tName\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<div class="col-sm-9">\n\t\t\t\t\t\t\t<input type="text" class="form-control"\n\t\t\t\t\t\t\t       ng-model="vm.model.name[selectedLanguage.key]"\n\t\t\t\t\t\t\t       ng-disabled="!selectedLanguage.key"\n\t\t\t\t\t\t\t       init-focus>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!--<div class="form-group"--\x3e\n\t\t\t\t\t     \x3c!--ng-include src="\'templates/PermissionsEditor.html\'"--\x3e\n\t\t\t\t\t     \x3c!--style="margin-top: 20px"></div>--\x3e\n\n\t\t\t\t\t<div class="form-group" ng-if="vm.model.id">\n\t\t\t\t\t\t<label class="col-sm-3 control-label" translate>\n\t\t\t\t\t\t\tId\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<div class="col-sm-9 radio">\x3c!-- radio to get Bootstrap\'s top padding --\x3e\n\t\t\t\t\t\t\t{{vm.model.id}}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\x3c!--Permissions Editor --\x3e\n\t\t\t\t\t<permission-editor model="vm.model"\n\t\t\t\t\t                   model-type="\'poi_type_group\'"\n\t\t\t\t\t                   col-span="3">\n\t\t\t\t\t</permission-editor>\n\n\t\t\t\t</div>\n\n\t\t\t\t<span class="text-danger" ng-show="vm.isEmpty" translate>\n\t\t\t\t\tName cannot be empty\n\t\t\t\t</span>\n\t\t\t\t<span class="text-danger" ng-show="vm.error">\n\t\t\t\t\t{{vm.error.text}}: {{vm.error.statusText}} ({{vm.error.status}})\n\t\t\t\t</span>\n\t\t\t\t<div ng-show="!!vm.error.details">\n\t\t\t\t\t{{vm.error.details}}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="modal-footer">\n\t\t\t\t<delete-confirmation class="float-left" ng-show="vm.model.id"\n\t\t\t\t                     ng-click="vm.countAssociatedPois()"\n\t\t\t\t                     on-confirm-callback="vm.remove()">\n\t\t\t\t\t<span translate>Are you sure you want to delete this group?</span>\n\t\t\t\t\t<span ng-if="vm.isCountInProgress()" translate\n\t\t\t\t\t      translate-context="As in: counting the number of items">\n\t\t\t\t\t\tCounting...\n\t\t\t\t\t</span>\n\t\t\t\t\t<span ng-if="!vm.isCountInProgress()">\n\t\t\t\t\t\t<span translate translate-n="vm.associatedPoisCount"\n\t\t\t\t\t\t      translate-plural="All categories will be deleted as well as {{$count}} associated POIs.">\n\t\t\t\t\t\t\tAll categories will be deleted as well as 1 associated POI.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span translate>\n\t\t\t\t\t\tAll categories in this group will also be deleted.\n\t\t\t\t\t</span>\n\t\t\t\t</delete-confirmation>\n\n\t\t\t\t<cancel-button data-dismiss="modal" ng-click="vm.cancel()"></cancel-button>\n\t\t\t\t<ok-button ng-click="vm.save()"></ok-button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1475);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "poi-type-group-list .panel{padding-left:0;padding-right:0}poi-type-group-list .panel-ios{height:100%}poi-type-group-list .panel-ios .panel-body{padding:0 0 100px;height:inherit;overflow-y:auto}poi-type-group-list .long-title{vertical-align:middle}poi-type-group-list .long-title.poi-type-group-title{width:calc(100% - 25px)}poi-type-group-list .long-title.poi-type-title{width:calc(100% - 36px)}poi-type-group-list .poi-group input[type=checkbox]{display:inline-block;margin-top:8px}poi-type-group-list .poi-group .poi-group-edit-btn{cursor:pointer}poi-type-group-list .poi-group-add-btn{padding-top:9px;padding-bottom:9px;cursor:pointer}poi-type-group-list .poi-group-edit-btn{display:inline-block;margin-right:.6em}poi-type-list label{width:calc(100% - 30px)}poi-type-list .poi-type-add-btn,poi-type-list .poi-type-edit-btn{cursor:pointer;margin-left:.4em}poi-type-list .poi-type-edit-btn,poi-type-list .poiIcon{display:inline-block}poi-type-list .poi-type-edit-btn{margin-right:.6em}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(7)
      , r = n(2);
    n(1477),
    n(1478),
    n(609);
    var o = n(384)
      , a = n(89)
      , s = n(197)
      , c = n(8)
      , l = n(1480)
      , u = n(630)
      , d = n(610);
    n(647);
    var p = n(1481)
      , h = function() {
        function t(t, e, n, i, r, o, s, c, h, f) {
            var m = this;
            this.PoiRepository = t,
            this.MessageReportingService = e,
            this.gettextCatalog = n,
            this.UserService = i,
            this.PoiTypeService = r,
            this.PoiService = o,
            this.LanguageService = s,
            this.ProgressReportService = c,
            this.ErrorService = h,
            this.commaSeparator = u.CsvSeparators.COMMA,
            this.tabSeparator = u.CsvSeparators.TAB,
            this.semiColonSeparator = u.CsvSeparators.SEMICOLON,
            this.CSV_FORMAT = ".csv",
            this.JSON_FORMAT = ".json",
            this.exportFormat = this.CSV_FORMAT,
            this.visibleLanguageFormats = [],
            this.exportCsvModal = "export-csv-modal",
            this.importCsvModal = "import-csv-modal",
            this.importJsonModal = "import-json-modal",
            this.totalPois = 0,
            this.importedPois = 0,
            this.updatedPois = 0,
            this.importedTypes = 0,
            this.importedGroups = 0,
            this.allPoisCount = 0,
            this.model = new l.DummyRepositoryObject({}),
            this.importMode = d.PoiImportMode.PRESERVE,
            this.countPoisProgress = new a.PromiseProgressWrapper,
            this.importPromiseWrapper = new a.PromiseProgressWrapper,
            this.clearPromiseWrapper = new a.PromiseProgressWrapper,
            this.conflictWrapper = this.ErrorService.newWrapper().detector(new p.PoiImportConflictDetector(n)).report().exceptions().network().build(),
            this.visibleLanguageFormats = this.LanguageService.getUniqueLanguageNumberFormats(),
            this.setFormats(),
            s.onLanguageChange.connect((function() {
                return m.setFormats()
            }
            )),
            f.initialized.then((function() {
                m.model.security.groupRead = f.currentUser.defaultGroupRead,
                m.model.security.groupWrite = f.currentUser.defaultGroupWrite
            }
            )).catch((function() {
                m.model.security.groupRead = 0,
                m.model.security.groupWrite = 1
            }
            ))
        }
        return t.$inject = ["PoiRepository", "MessageReportingService", "gettextCatalog", "UserService", "PoiTypeService", "PoiService", "LanguageService", "ProgressReportService", "ErrorService", "AuthenticationService"],
        t.prototype.setFormats = function() {
            this.languageFormat = this.LanguageService.getCurrentLanguageNumberFormat(this.visibleLanguageFormats);
            var t = this.LanguageService.getLanguage(this.languageFormat.key).decimalSeparator;
            this.csvSeparator = t === o.DecimalSeparators.COMMA ? u.CsvSeparators.SEMICOLON : u.CsvSeparators.COMMA
        }
        ,
        t.prototype.isImportInProgress = function() {
            return this.importPromiseWrapper.isInProgress
        }
        ,
        t.prototype.isClearInProgress = function() {
            return this.clearPromiseWrapper.isInProgress
        }
        ,
        t.prototype.isCountInProgress = function() {
            return this.countPoisProgress.isInProgress
        }
        ,
        t.prototype.clear = function() {
            var t = this
              , e = i.clone(this.PoiRepository.data);
            this.clearPromiseWrapper.wrap(this.PoiRepository.removeAll()).then((function() {
                t.PoiService.poisChanged.emit();
                for (var n = 0, i = e; n < i.length; n++) {
                    var r = i[n];
                    t.PoiService.onPoiDelete.emit(r)
                }
            }
            )).catch((function() {}
            ))
        }
        ,
        t.prototype.isAvailable = function() {
            return this.UserService.isAdmin()
        }
        ,
        t.prototype.checkExportFormat = function() {
            this.exportFormat === this.CSV_FORMAT ? r.element("#" + this.exportCsvModal).modal("show") : this.exportJson()
        }
        ,
        t.prototype.checkImportFormat = function(t) {
            t.length && (this.file = t[0],
            this.file.name.endsWith(this.CSV_FORMAT) ? r.element("#" + this.importCsvModal).modal("show") : this.file.name.endsWith(this.JSON_FORMAT) ? r.element("#" + this.importJsonModal).modal("show") : this.displayError(this.gettextCatalog.getString("Incorrect File Type", void 0, "title"), this.gettextCatalog.getString("Please select a file with a valid file ending of either {{csvFormat}} or {{jsonFormat}}.", {
                csvFormat: this.CSV_FORMAT,
                jsonFormat: this.JSON_FORMAT
            })))
        }
        ,
        t.prototype.exportJson = function() {
            this.PoiRepository.exportJson()
        }
        ,
        t.prototype.exportCsv = function() {
            var t = "t" === this.csvSeparator ? "\t" : this.csvSeparator;
            this.PoiRepository.exportCsv(t, this.languageFormat.key),
            r.element("#" + this.exportCsvModal).modal("hide")
        }
        ,
        t.prototype.importJson = function(t) {
            var e = this;
            t && (this.importData(s.processJsonFile(t).catch((function(t) {
                return e.displayParsingError(t)
            }
            )).then((function() {
                return e.PoiRepository.importJson(t, e.model.security.groupRead, e.model.security.groupWrite, e.importMode)
            }
            )), this.importPromiseWrapper),
            r.element("#" + this.importJsonModal).modal("hide"))
        }
        ,
        t.prototype.importCsv = function(t) {
            if (t) {
                var e = "t" === this.csvSeparator ? "\t" : this.csvSeparator;
                this.importData(this.PoiRepository.importCsv(t, e, this.languageFormat.key, this.model.security.groupRead, this.model.security.groupWrite, this.importMode), this.importPromiseWrapper),
                r.element("#" + this.importCsvModal).modal("hide")
            }
        }
        ,
        t.prototype.countAllPois = function() {
            var t = this;
            this.countPoisProgress.wrap(this.PoiRepository.count()).then((function(e) {
                return t.allPoisCount = e
            }
            )).catch(c.handleWarning)
        }
        ,
        t.prototype.importData = function(t, e) {
            var n = this
              , i = this.ProgressReportService.addTask(this.gettextCatalog.getString("Importing POIs..."), 1, !0, !0);
            this.conflictWrapper.wrap(e.wrap(t)).then((function(t) {
                i.itemDone(),
                n.showPoiImportSummaryModal(t.total_poi_count, t.poi_count, t.updated_count, t.type_count, t.group_count)
            }
            )).then((function() {
                return n.PoiRepository.resetCache()
            }
            )).then((function() {
                return n.PoiTypeService.fetchAndMapData(!0)
            }
            )).then((function() {
                return n.PoiService.poisChanged.emit()
            }
            )).catch((function() {
                return i.itemDone()
            }
            ))
        }
        ,
        t.prototype.showPoiImportSummaryModal = function(t, e, n, i, o) {
            var a = r.element("#poi-import-summary");
            this.totalPois = t,
            this.importedPois = e,
            this.updatedPois = n,
            this.importedTypes = i,
            this.importedGroups = o,
            a.modal("show")
        }
        ,
        t.prototype.displayParsingError = function(t) {
            throw this.displayError(this.gettextCatalog.getString("Unable to Import POIs", void 0, "title"), this.gettextCatalog.getString("Error while parsing the JSON file: {{error}}", {
                error: t.toString()
            })),
            new Error("parsing failed")
        }
        ,
        t.prototype.displayError = function(t, e) {
            this.MessageReportingService.showMessage(t, e)
        }
        ,
        t
    }();
    e.PoiExportImportController = h;
    var f = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "Poi/ExportImport/PoiExportImport.html",
            this.controller = h,
            this.controllerAs = "vm",
            this.scope = {}
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.PoiExportImportDirective = f,
    r.module("IVWebApp").directive("poiExportImport", f.factory())
}
, function(t, e, n) {
    var i = "Poi/ExportImport/PoiExportImport.html"
      , r = '\x3c!-- POI Export Import --\x3e\n<div class="panel-heading no-background margin-top margin-bottom"\n     ng-if="vm.isAvailable()">\n\t<div class="collapse-style">\n\t\t<default-button class="btn-block btn-borderless collapsed"\n\t\t                data-toggle="collapse"\n\t\t                data-target="#collapseExportImport">\n\t\t\t<h3 translate translate-context="title">Import/Export POIs</h3>\n\t\t</default-button>\n\t\t<div class="collapse modal-export-import" id="collapseExportImport">\n\t\t\t<input-button\n\t\t\t\t\tclass="btn-block btn-primary margin-top margin-bottom btn-file"\n\t\t\t\t\tin-progress="vm.isImportInProgress()">\n\t\t\t\t<div role="group">\n\t\t\t\t\t<span translate>Import</span>\n\t\t\t\t\t<input type="file"\n\t\t\t\t\t       ng-disabled="vm.isImportInProgress()"\n\t\t\t\t\t       accept=".csv, .json, text/csv, application/json"\n\t\t\t\t\t       ngf-select="vm.checkImportFormat($files)">\n\t\t\t\t</div>\n\t\t\t</input-button>\n\t\t\t<div class="btn-group btn-group-justified" role="group">\n\t\t\t\t<div class="btn-group" role="group">\n\t\t\t\t\t<default-button class="btn-primary btn-group-first"\n\t\t\t\t\t                ng-click="vm.checkExportFormat()">\n\t\t\t\t\t\t<span translate>Export</span>\n\t\t\t\t\t</default-button>\n\t\t\t\t</div>\n\t\t\t\t<div class="btn-group" role="group">\n\t\t\t\t\t<default-button class="dropdown-toggle"\n\t\t\t\t\t                id="btn-csv-json"\n\t\t\t\t\t                data-toggle="dropdown">\n\t\t\t\t\t\t{{vm.exportFormat}}\n\t\t\t\t\t\t<span class="caret"></span>\n\t\t\t\t\t</default-button>\n\t\t\t\t\t<ul class="dropdown-menu btn-block btn-csv-json">\n\t\t\t\t\t\t<li class="menu-submenu" ng-click="vm.exportFormat=vm.CSV_FORMAT"><a>{{vm.CSV_FORMAT}}</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li class="menu-submenu" ng-click="vm.exportFormat=vm.JSON_FORMAT"><a>{{vm.JSON_FORMAT}}</a>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<delete-confirmation\n\t\t\t\t\tng-click="vm.countAllPois()"\n\t\t\t\t\ton-confirm-callback="vm.clear()"\n\t\t\t\t\tbutton-disabled="vm.isClearInProgress()"\n\t\t\t\t\tbutton-class="btn-block margin-top margin-bottom btn-delete"\n\t\t\t\t\tadditional-action-callback="vm.exportJson()"\n\t\t\t\t\tadditional-action-name="{{\'Export\'|translate}}">\n\t\t\t\t<button-content>\n\t\t\t\t\t<span translate>Delete all POIs</span>\n\t\t\t\t</button-content>\n\t\t\t\t<div>\n\t\t\t\t\t<span ng-if="vm.isCountInProgress()" translate\n\t\t\t\t\t      translate-context="As in: counting the number of items">\n\t\t\t\t\t\tCounting...\n\t\t\t\t\t</span>\n\t\t\t\t\t<span ng-if="!vm.isCountInProgress()">\n\t\t\t\t\t\t<span translate translate-n="vm.allPoisCount"\n\t\t\t\t\t\t      translate-plural="{{$count}} POIs will be deleted.">\n\t\t\t\t\t\t\t1 POI will be deleted.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span translate>\n\t\t\t\t\t\tTo save a backup, first export POIs.\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</delete-confirmation>\n\t\t</div>\n\t</div>\n</div>\n\n<modal>\n\t<div class="modal fade" id="{{vm.exportCsvModal}}" tabindex="-1" role="dialog">\n\t\t<div class="modal-dialog">\n\t\t\t<div class="modal-content">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}"\n\t\t\t\t\t     data-dismiss="modal">\n\t\t\t\t\t<h4 translate translate-context="title">Export POIs to CSV File</h4>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t<div class="form-horizontal">\n\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t<label class="col-sm-3 control-label" translate>Delimiter</label>\n\t\t\t\t\t\t\t<form class="col-sm-9">\n\t\t\t\t\t\t\t\t<label class="radio-inline">\n\t\t\t\t\t\t\t\t\t<input ng-model="vm.csvSeparator" type="radio" name="delim"\n\t\t\t\t\t\t\t\t\t       value="{{vm.tabSeparator}}">\n\t\t\t\t\t\t\t\t\t<span translate translate-context="CSV separator option">\n\t\t\t\t\t\t\t\t\t\tTab\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t<label class="radio-inline">\n\t\t\t\t\t\t\t\t\t<input ng-model="vm.csvSeparator" type="radio" name="delim"\n\t\t\t\t\t\t\t\t\t       value="{{vm.commaSeparator}}" checked>\n\t\t\t\t\t\t\t\t\t<span translate translate-context="CSV separator option">\n\t\t\t\t\t\t\t\t\t\tComma ( , )\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t<label class="radio-inline">\n\t\t\t\t\t\t\t\t\t<input ng-model="vm.csvSeparator" type="radio" name="delim"\n\t\t\t\t\t\t\t\t\t       value="{{vm.semiColonSeparator}}">\n\t\t\t\t\t\t\t\t\t<span translate translate-context="CSV separator option">\n\t\t\t\t\t\t\t\t\t\tSemicolon ( ; )\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t<label class="col-sm-3 control-label" translate>\n\t\t\t\t\t\t\t\tNumber Format\n\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t<div class="col-sm-9">\n\t\t\t\t\t\t\t\t<select class="form-control"\n\t\t\t\t\t\t\t\t        ng-model="vm.languageFormat"\n\t\t\t\t\t\t\t\t        ng-options="format.numberFormat for format in vm.visibleLanguageFormats">\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t<cancel-button data-dismiss="modal"></cancel-button>\n\n\t\t\t\t\t<default-button ng-click="vm.exportCsv()"\n\t\t\t\t\t                class="btn-file btn-primary">\n\t\t\t\t\t\t<span translate>Export POIs</span>\n\t\t\t\t\t</default-button>\n\t\t\t\t\t<div align="left">\n\t\t\t\t\t\t<h6 translate>\n\t\t\t\t\t\t\tWarning: you may not be able to import this file in a future version of the 4dkankan. Backward data compatibility is only available for JSON.\n\t\t\t\t\t\t</h6>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n\n<modal>\n\t<div class="modal fade" id="{{vm.importJsonModal}}" tabindex="-1" role="dialog">\n\t\t<div class="modal-dialog">\n\t\t\t<div class="modal-content">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}"\n\t\t\t\t\t     data-dismiss="modal">\n\t\t\t\t\t<h4 translate translate-context="title">Import POIs from JSON File</h4>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t<div class="form-horizontal">\n\t\t\t\t\t\t\x3c!-- ID radio buttons --\x3e\n\t\t\t\t\t\t<poi-import-mode (on-import-mode-change)="vm.importMode=$event" [selected-mode]="vm.importMode"></poi-import-mode>\n\t\t\t\t\t\t\x3c!--Permissions Editor --\x3e\n\t\t\t\t\t\t<permission-editor model="vm.model"\n\t\t\t\t\t\t                   model-type="\'poiImport\'"\n\t\t\t\t\t\t                   col-span="3">\n\t\t\t\t\t\t</permission-editor>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="permissions-group-info" translate>\n\t\t\t\t\t\tGroup permissions will not be impacted\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t<cancel-button data-dismiss="modal"></cancel-button>\n\t\t\t\t\t<ok-button ng-click="vm.importJson(vm.file)"\n\t\t\t\t\t           class="btn-file"\n\t\t\t\t\t           in-progress="vm.isImportInProgress()">\n\t\t\t\t\t\t<span translate>Import POIs</span>\n\t\t\t\t\t</ok-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n\n<modal>\n\t<div class="modal fade" id="{{vm.importCsvModal}}" tabindex="-1" role="dialog">\n\t\t<div class="modal-dialog">\n\t\t\t<div class="modal-content">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}"\n\t\t\t\t\t     data-dismiss="modal">\n\t\t\t\t\t<h4 translate translate-context="title">Import POIs from CSV File</h4>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t<div class="form-horizontal">\n\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t<label class="col-sm-3 control-label" translate>Delimiter</label>\n\t\t\t\t\t\t\t<form class="col-sm-9">\n\t\t\t\t\t\t\t\t<label class="radio-inline">\n\t\t\t\t\t\t\t\t\t<input ng-model="vm.csvSeparator" type="radio" name="delim"\n\t\t\t\t\t\t\t\t\t       value="{{vm.tabSeparator}}" translate\n\t\t\t\t\t\t\t\t\t       translate-context="CSV separator option">Tab\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t<label class="radio-inline">\n\t\t\t\t\t\t\t\t\t<input ng-model="vm.csvSeparator" type="radio" name="delim"\n\t\t\t\t\t\t\t\t\t       value="{{vm.commaSeparator}}" translate\n\t\t\t\t\t\t\t\t\t       translate-context="CSV separator option" checked>Comma ( , )\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t<label class="radio-inline">\n\t\t\t\t\t\t\t\t\t<input ng-model="vm.csvSeparator" type="radio" name="delim"\n\t\t\t\t\t\t\t\t\t       value="{{vm.semiColonSeparator}}" translate\n\t\t\t\t\t\t\t\t\t       translate-context="CSV separator option">Semicolon ( ; )\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</form>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t<label class="col-sm-3 control-label" translate>\n\t\t\t\t\t\t\t\tNumber Format\n\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t<div class="col-sm-9">\n\t\t\t\t\t\t\t\t<select class="form-control"\n\t\t\t\t\t\t\t\t        ng-model="vm.languageFormat"\n\t\t\t\t\t\t\t\t        ng-options="format.numberFormat for format in vm.visibleLanguageFormats">\n\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\x3c!-- ID radio buttons --\x3e\n\t\t\t\t\t\t<poi-import-mode (on-import-mode-change)="vm.importMode=$event" [selected-mode]="vm.importMode"></poi-import-mode>\n\t\t\t\t\t\t\x3c!--Permissions Editor --\x3e\n\t\t\t\t\t\t<permission-editor model="vm.model"\n\t\t\t\t\t\t                   model-type="\'poiImport\'"\n\t\t\t\t\t\t                   col-span="3">\n\t\t\t\t\t\t</permission-editor>\n\t\t\t\t\t\t<div class="permissions-group-info" translate>\n\t\t\t\t\t\t\tGroup permissions will not be impacted\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t<cancel-button data-dismiss="modal"></cancel-button>\n\t\t\t\t\t<ok-button ng-click="vm.importCsv(vm.file)"\n\t\t\t\t\t           class="btn-file"\n\t\t\t\t\t           in-progress="vm.isImportInProgress()">\n\t\t\t\t\t\t<span translate>Import POIs</span>\n\t\t\t\t\t</ok-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n\n\x3c!-- Poi import summary modal --\x3e\n<modal>\n\t<div class="modal fade" id="poi-import-summary" tabindex="-1" role="dialog"\n\t     aria-labelledby="poiImportSummary" aria-hidden="true">\n\t\t<div class="modal-dialog" role="document">\n\t\t\t<div class="modal-content">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<h4 translate-context="A message stating the import was successful; title"\n\t\t\t\t\t    translate>\n\t\t\t\t\t\tImport Successful\n\t\t\t\t\t</h4>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t<span translate translate-params-total="vm.totalPois">\n\t\t\t\t\t\tThe total number of POIs is now {{total}}.\n\t\t\t\t\t</span>\n\t\t\t\t\t<ul class="mt-10">\n\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t<span translate-context="A message stating how many POIs have been imported"\n\t\t\t\t\t\t\t      translate-n="vm.importedPois"\n\t\t\t\t\t\t\t      translate-plural="{{$count}} POIs have been imported."\n\t\t\t\t\t\t\t      ng-if="vm.importedPois > 0"\n\t\t\t\t\t\t\t      translate>\n\t\t\t\t\t\t\t\t1 POI has been imported.\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span ng-if="vm.importedPois === 0" translate>\n\t\t\t\t\t\t\t\tNo new POIs imported.\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li ng-if="vm.updatedPois > 0">\n\t\t\t\t\t\t\t<span translate-context="A message stating how many POIs have been updated"\n\t\t\t\t\t\t\t\t  translate-n="vm.updatedPois"\n\t\t\t\t\t\t\t\t  translate-plural="{{$count}} POIs have been updated."\n\t\t\t\t\t\t\t\t  translate>\n\t\t\t\t\t\t\t\t1 POI has been updated.\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li ng-if="vm.importedTypes > 0">\n\t\t\t\t\t\t\t<span translate-context="A message stating how many POI types have been imported"\n\t\t\t\t\t\t\t      translate-n="vm.importedTypes"\n\t\t\t\t\t\t\t      translate-plural="{{$count}} new POI types have been imported."\n\t\t\t\t\t\t\t      translate>\n\t\t\t\t\t\t\t\t1 new POI type has been imported.\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li ng-if="vm.importedGroups > 0">\n\t\t\t\t\t\t\t<span translate-context="A message stating how many POI type groups have been imported"\n\t\t\t\t\t\t\t      translate-n="vm.importedGroups"\n\t\t\t\t\t\t\t      translate-plural="{{$count}} new POI type groups have been imported."\n\t\t\t\t\t\t\t      translate>\n\t\t\t\t\t\t\t1 new POI type group has been imported.\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t<ok-button class="btn btn-primary" data-dismiss="modal"></ok-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1479);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, '.z-index-1{box-shadow:none;position:relative;z-index:1}.z-index-2{box-shadow:0 1.5px 4px rgba(0,0,0,.24),0 1.5px 6px rgba(0,0,0,.12);position:relative;z-index:5}.z-index-3{box-shadow:0 3px 12px rgba(0,0,0,.23),0 3px 12px rgba(0,0,0,.16);position:relative;z-index:10}.z-index-4{box-shadow:0 6px 12px rgba(0,0,0,.23),0 10px 40px rgba(0,0,0,.19);position:relative;z-index:15}.z-index-5{box-shadow:0 10px 20px rgba(0,0,0,.22),0 14px 56px rgba(0,0,0,.25);position:relative;z-index:20}.front-element{z-index:1031}.full-window{position:fixed;margin:0;padding:0;left:0;right:0;top:0;bottom:0;z-index:1029;border-radius:0}.full-window-scroll{max-height:100vh}.full-window-scroll,.panel-autoscroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.panel-autoscroll{max-height:80vh}.autoscroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.fixed-top-right{position:fixed;top:10px;right:0}.center-vertical{position:absolute;top:50%;transform:translateY(-50%)}.float-left{float:left}.float-right{float:right}.margin-top-small{margin-top:5px!important}.margin-left-small{margin-left:5px!important}.margin-right-small{margin-right:5px!important}.margin-bottom-small{margin-bottom:5px!important}.margin-top{margin-top:15px!important}.margin-left{margin-left:15px!important}.margin-right{margin-right:15px!important}.margin-bottom{margin-bottom:15px!important}.margin-top-big{margin-top:25px!important}.margin-bottom-big{margin-bottom:25px!important}.no-margin,poi-export-import #btn-csv-json,poi-export-import .open>.dropdown-menu{margin:0!important}.no-margin-bottom{margin-bottom:0!important}.padding-horizontal{padding-left:15px!important;padding-right:15px!important}.padding-top,.padding-vertical{padding-top:15px!important}.padding-bottom,.padding-vertical{padding-bottom:15px!important}.no-padding-top{padding-top:0!important}.no-padding-bottom{padding-bottom:0!important}.no-padding-horizontal,.no-padding-left{padding-left:0!important}.no-padding-horizontal,.no-padding-right{padding-right:0!important}.no-padding{padding:0!important}.border{border:1px solid #e6e6e6}.border-top{border-top:1px solid #e6e6e6}.border-bottom{border-bottom:1px solid #e6e6e6}.border-left{border-left:1px solid #e6e6e6}.border-right{border-right:1px solid #e6e6e6}.no-border,poi-export-import .menu-submenu a:active,poi-export-import .menu-submenu a:focus,poi-export-import .menu-submenu a:hover{border:none;border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.no-border-width{border:none}.border-radius{border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}.border-radius,.border-radius-top{border-top-left-radius:4px!important;border-top-right-radius:4px!important}.border-radius-bottom{border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}.no-border-radius{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.indoorViewer.ios .no-hover-ios:hover{background-color:inherit!important}.no-shadow{box-shadow:none!important}.clear-background,poi-export-import .btn-borderless{background:none!important;border:0}.no-background{background:none!important}.no-overflow{overflow:hidden}.clickable,.clickable:hover{cursor:pointer}poi-export-import .collapse-style{background-color:#fff;position:absolute;bottom:0;left:0;right:0;padding-left:20px;padding-right:20px;box-shadow:0 0 6px rgba(0,0,0,.24)}poi-export-import .collapse-style>button>h3{text-overflow:ellipsis;width:100%;overflow:hidden}poi-export-import .panel-heading [data-toggle=collapse].collapsed:before,poi-export-import .panel-heading [data-toggle=collapse]:before{content:none}poi-export-import .panel-heading [data-toggle=collapse]:after{font-family:FontAwesome;content:"\\f0d7";color:#000;position:absolute;right:0;top:10px}poi-export-import .panel-heading [data-toggle=collapse].collapsed:after{content:"\\f0d8"}poi-export-import .dropdown-menu{background-color:#4f93ce;min-width:0;text-align:right;border:none}poi-export-import .dropdown-menu li{text-align:center;padding:0}poi-export-import .open>.dropdown-menu{display:block!important;left:0;text-align:left;background-color:#4f93ce;border:none}poi-export-import .menu-submenu{text-align:right}poi-export-import .menu-submenu a{color:#fff!important;background-color:#4f93ce}poi-export-import .menu-submenu a:active,poi-export-import .menu-submenu a:focus,poi-export-import .menu-submenu a:hover{background-color:#3b87c8!important}poi-export-import .btn-borderless{max-height:inherit}poi-export-import .btn-borderless:active,poi-export-import .btn-borderless:focus,poi-export-import .btn-borderless:hover{box-shadow:none}poi-export-import .btn-delete{color:#d9534f!important;background-color:transparent!important;border:none}poi-export-import .btn-delete:active,poi-export-import .btn-delete:focus,poi-export-import .btn-delete:hover{color:#d9534f!important;border-color:#f0f0f0!important;background-color:#f0f0f0!important}poi-export-import .btn-group.open .dropdown-toggle{border-bottom-right-radius:0}poi-export-import .btn-group-justified>.btn-group:nth-of-type(2n){width:.45%}poi-export-import #btn-csv-json{left:0;background-color:#4f93ce;color:#fff;border:none}poi-export-import #btn-csv-json:active,poi-export-import #btn-csv-json:focus,poi-export-import #btn-csv-json:hover{background-color:#3b87c8;color:#fff;border-color:transparent}.permissions-group-info{font-size:.8em;color:#999;text-align:right}.modal-export-import .btn-primary,.modal-export-import .btn-primary:active,.modal-export-import .btn-primary:focus,.modal-export-import .btn-primary:hover{border:none}', ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.copy = function(t, e) {}
        ,
        e.prototype.toData = function() {}
        ,
        e
    }(n(198).SecureRepositoryObject);
    e.DummyRepositoryObject = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return null !== t && t.apply(this, arguments) || this
        }
        return r(e, t),
        e.prototype.networkApplies = function(t, e, n) {
            return 409 === t
        }
        ,
        e.prototype.report = function() {
            return this.gettextCatalog.getString("The import was aborted because one or more POIs already exist.")
        }
        ,
        e
    }(n(308).NetworkIssueDetector);
    e.PoiImportConflictDetector = o
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1483),
    n(1484),
    n(1486),
    n(1490);
    var r = n(7)
      , o = n(138)
      , a = function() {
        function t(t, e, n) {
            var i = this;
            this.RouteService = t,
            this.PoiService = e,
            this.LanguageService = n,
            n.onLanguageChange.connect((function() {
                return i.RouteService.refreshLastRoute()
            }
            )),
            t.onRouteChanged.connect((function(t) {
                i.route = t,
                i.calculateTimeEstimate()
            }
            ))
        }
        return t.$inject = ["RouteService", "PoiService", "LanguageService"],
        t.prototype.routeInstructionMouseOver = function(t) {
            this.RouteService.onRouteInstructionMouseOver.emit(this.route.instructions[t], t)
        }
        ,
        t.prototype.routeInstructionMouseLeave = function(t) {
            this.RouteService.onRouteInstructionMouseOut.emit(this.route.instructions[t], t)
        }
        ,
        t.prototype.routeInstructionClick = function(t) {
            this.route.instructions[t]instanceof o.SpecialInstruction && (this.activeSpecialInstruction = this.route.instructions[t]),
            this.RouteService.onRouteInstructionClick.emit(this.route.instructions[t], t)
        }
        ,
        t.prototype.isRouteInstructionVisible = function() {
            return !!this.PoiService.routeStart && !!this.PoiService.routeEnd
        }
        ,
        t.prototype.calculateTimeEstimate = function() {
            this.route && this.route.available ? this.timeEstimate = r.ceil(this.route.routeLength / t.WALK_SPEED) : this.timeEstimate = 0
        }
        ,
        t.WALK_SPEED = 84,
        t
    }();
    e.RouteInstructionsController = a;
    var s = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "RouteUI/RouteInstructions.html",
            this.controller = a,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.RouteInstructionsDirective = s,
    i.module("IVWebApp").directive("routeInstructions", s.factory())
}
, function(t, e, n) {
    var i = "RouteUI/RouteInstructions.html"
      , r = '\x3c!--  Routing --\x3e\n<div ng-if="vm.isRouteInstructionVisible()"\n     class="panel panel-default left-panel-element-flexible-height no-border no-shadow">\n\t\x3c!-- Spinner --\x3e\n\t<div class="panel-body" ng-if="!vm.route">\n\t\t<div class="spinner">\n\t\t\t<img ng-src="' + n(94) + '">\n\t\t</div>\n\t</div>\n\n\t\x3c!-- Results --\x3e\n\t<div class="panel-body" ng-if="vm.route">\n\t\t\x3c!-- Route message --\x3e\n\t\t<div ng-if="vm.route.message" class="text-warning">\n\t\t\t{{vm.route.message}}\n\t\t</div>\n\n\t\t\x3c!-- Route instructions --\x3e\n\t\t<div ng-if="vm.route.available" class="non-mobile">\n\t\t\t\x3c!--Overview--\x3e\n\t\t\t<div class="overview">\n\t\t\t\t<strong translate translate-context="navigation instruction"\n\t\t\t\t        translate-params-time="vm.timeEstimate | number:0">\n\t\t\t\t\t{{time}} min\n\t\t\t\t</strong>\n\t\t\t\t<span class="route-distance">({{vm.route.routeLength | uom:"distance":0}})</span>\n\t\t\t</div>\n\t\t\t\x3c!--Instructions--\x3e\n\t\t\t<div class="instructions-list">\n\t\t\t\t<div class="row" ng-repeat="instruction in vm.route.instructions track by $index">\n\t\t\t\t\t<div ng-if="instruction.distance">\n\t\t\t\t\t\t<div class="col-xs-2"></div>\n\t\t\t\t\t\t<div class="col-xs-10"\n\t\t\t\t\t\t     ng-click="vm.routeInstructionClick($index)"\n\t\t\t\t\t\t     ng-mouseover="vm.routeInstructionMouseOver($index)"\n\t\t\t\t\t\t     ng-mouseleave="vm.routeInstructionMouseLeave($index)">\n\t\t\t\t\t\t\t<walk-instruction instruction="instruction"></walk-instruction>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div ng-if="!instruction.distance"\n\t\t\t\t\t     ng-click="vm.routeInstructionClick($index)"\n\t\t\t\t\t     ng-mouseover="vm.routeInstructionMouseOver($index)"\n\t\t\t\t\t     ng-mouseleave="vm.routeInstructionMouseLeave($index)"\n\t\t\t\t\t     ng-class="{\'active\': vm.activeSpecialInstruction === instruction}"\n\t\t\t\t\t     class="col-xs-12">\n\t\t\t\t\t\t<special-instruction instruction="instruction"></special-instruction>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1485);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, ".z-index-1{box-shadow:none;position:relative;z-index:1}.z-index-2{box-shadow:0 1.5px 4px rgba(0,0,0,.24),0 1.5px 6px rgba(0,0,0,.12);position:relative;z-index:5}.z-index-3{box-shadow:0 3px 12px rgba(0,0,0,.23),0 3px 12px rgba(0,0,0,.16);position:relative;z-index:10}.z-index-4{box-shadow:0 6px 12px rgba(0,0,0,.23),0 10px 40px rgba(0,0,0,.19);position:relative;z-index:15}.z-index-5{box-shadow:0 10px 20px rgba(0,0,0,.22),0 14px 56px rgba(0,0,0,.25);position:relative;z-index:20}.front-element{z-index:1031}.full-window{position:fixed;margin:0;padding:0;left:0;right:0;top:0;bottom:0;z-index:1029;border-radius:0}.full-window-scroll{max-height:100vh}.full-window-scroll,.panel-autoscroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.panel-autoscroll{max-height:80vh}.autoscroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.fixed-top-right{position:fixed;top:10px;right:0}.center-vertical{position:absolute;top:50%;transform:translateY(-50%)}.float-left{float:left}.float-right{float:right}.margin-top-small{margin-top:5px!important}.margin-left-small{margin-left:5px!important}.margin-right-small{margin-right:5px!important}.margin-bottom-small{margin-bottom:5px!important}.margin-top{margin-top:15px!important}.margin-left{margin-left:15px!important}.margin-right{margin-right:15px!important}.margin-bottom{margin-bottom:15px!important}.margin-top-big{margin-top:25px!important}.margin-bottom-big{margin-bottom:25px!important}.no-margin{margin:0!important}.no-margin-bottom{margin-bottom:0!important}.padding-horizontal,route-instructions .panel .panel-body>*{padding-left:15px!important;padding-right:15px!important}.padding-top,.padding-vertical{padding-top:15px!important}.padding-bottom,.padding-vertical{padding-bottom:15px!important}.no-padding-top{padding-top:0!important}.no-padding-bottom{padding-bottom:0!important}.no-padding-horizontal,.no-padding-left{padding-left:0!important}.no-padding-horizontal,.no-padding-right{padding-right:0!important}.no-padding{padding:0!important}.border{border:1px solid #e6e6e6}.border-top{border-top:1px solid #e6e6e6}.border-bottom{border-bottom:1px solid #e6e6e6}.border-left{border-left:1px solid #e6e6e6}.border-right{border-right:1px solid #e6e6e6}.no-border{border:none;border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.no-border-width{border:none}.border-radius{border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}.border-radius,.border-radius-top{border-top-left-radius:4px!important;border-top-right-radius:4px!important}.border-radius-bottom{border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}.no-border-radius{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.indoorViewer.ios .no-hover-ios:hover{background-color:inherit!important}.no-shadow{box-shadow:none!important}.clear-background{border:0}.clear-background,.no-background{background:none!important}.no-overflow{overflow:hidden}.clickable,.clickable:hover{cursor:pointer}route-instructions .panel{max-height:calc(100vh - 105px);margin-bottom:0}route-instructions .panel .panel-body{padding:0}route-instructions .panel .panel-body>:first-child{border-top:1px solid #e6e6e6}route-instructions .panel .panel-body .text-warning{font-style:italic;color:initial;padding:20px 0}route-instructions .panel .panel-body .overview{margin:20px .1em;font-size:large}route-instructions .panel .panel-body .overview .route-distance{color:rgba(0,0,0,.54)}route-instructions .panel .panel-body .spinner{padding:20px 0;text-align:center}route-instructions .panel .panel-body .spinner>img{display:inline-block;max-height:28px}route-instructions .panel .panel-body .instructions-list{margin-top:15px;border-top:1px solid #e6e6e6}route-instructions .panel .panel-body .instructions-list>div:first-child,route-instructions .panel .panel-body .instructions-list>div:last-child{font-size:1.1em;font-weight:700}route-instructions .panel .panel-body .instructions-list>.row>div{margin-top:-1px;border-left:4px solid transparent}route-instructions .panel .panel-body .instructions-list>.row>div.active{border-left-color:#3398c7}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1487),
    n(1488);
    var r = function() {};
    e.WalkInstructionController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "RouteUI/WalkInstruction.html",
            this.controller = r,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                instruction: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.WalkInstructionDirective = o,
    i.module("IVWebApp").directive("walkInstruction", o.factory())
}
, function(t, e) {
    var n = "RouteUI/WalkInstruction.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div>\n\t<small class="text">\n\t\t{{vm.instruction.distance | uom:"distance":0}}\n\t</small>\n\t<hr class="divider">\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1489);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "walk-instruction div{display:flex;flex-direction:row;align-items:center;margin-top:-14px;margin-bottom:-12px}walk-instruction div .text{flex:initial;white-space:nowrap;margin:.5em .5em .5em 0}walk-instruction div hr.divider{height:2px;margin:.7em 0 .4em;border-top-color:#f0f0f0}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1491),
    n(1492);
    var r = n(555)
      , o = n(556)
      , a = function() {
        function t() {}
        return t.prototype.isStartOrEnd = function() {
            return this.instruction instanceof r.StartInstruction || this.instruction instanceof o.EndInstruction
        }
        ,
        t
    }();
    e.SpecialInstructionController = a;
    var s = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "RouteUI/SpecialInstruction.html",
            this.controller = a,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                instruction: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.SpecialInstructionDirective = s,
    i.module("IVWebApp").directive("specialInstruction", s.factory())
}
, function(t, e) {
    var n = "RouteUI/SpecialInstruction.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="row clickable"\n     ng-click="vm.instruction.moveToInstruction()">\n\t<div class="col-xs-2 icon">\n\t\t<div>\n\t\t\t<img ng-src="{{vm.instruction.icons.text}}">\n\t\t</div>\n\t</div>\n\t<div class="col-xs-10">\n\t\t<div class="text">\n\t\t\t<div>\n\t\t\t\t{{vm.instruction.text | translate}}\n\t\t\t</div>\n\t\t\t<div ng-if="vm.isStartOrEnd()">\n\t\t\t\t<site-data entity="vm.instruction.getFloor()"\n\t\t\t\t           clickable="false"\n\t\t\t\t           class="site-model-info"></site-data>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1493);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "special-instruction .row{padding:15px 0;display:flex}special-instruction .row>[class*=col-]{display:flex;justify-content:flex-start;align-items:center}special-instruction .row .text{padding:.6em 0}special-instruction .row .text>div>.site-model-info{font-size:.8em;font-weight:400}special-instruction .row .icon>div{width:100%}special-instruction .row .icon>div>img{height:auto}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(141)
      , o = n(25);
    n(27);
    n(27);
    n(15),
    n(38);
    var a = n(24)
      , s = (n(203),
    n(147));
    n(1495),
    n(203),
    n(154),
    n(1513),
    n(1525),
    n(272),
    n(1529),
    n(1531),
    n(155),
    n(1535),
    n(1541),
    n(406),
    n(1547),
    n(269),
    n(1557),
    n(1558),
    n(1573),
    n(1575),
    n(204);
    var c = n(148)
      , l = (n(31),
    n(131),
    n(21))
      , u = n(8)
      , d = n(81)
      , p = (n(75),
    n(202),
    n(6))
      , h = n(0)
      , f = (n(120),
    n(65),
    n(0))
      , m = n(27)
      , g = n(38)
      , v = n(15)
      , y = n(203)
      , b = n(24)
      , w = n(120)
      , S = n(65)
      , x = n(31)
      , M = n(131)
      , E = n(202)
      , C = n(75)
      , A = function() {
        function t(t, e, n, i, r, o, a, s, c, l, d, p) {
            var h = this;
            this.UserService = t,
            this.SidebarMenuService = e,
            this.ConfigService = n,
            this.ModeSwitchService = i,
            this.ModeService = r,
            this.FeatureFlagsService = o,
            this.ViewMenuService = a,
            this.DatasetRepository = s,
            this.ToolboxMenuService = c,
            this.VectorMapService = l,
            this.BundleRepository = d,
            this.gettext = p,
            this.FeatureFlagsService.initialized.then((function() {
                return h.initSideMenuItem()
            }
            )).catch(u.handleWarning)
        }
        return t.prototype.initSideMenuItem = function() {
            var t = this
              , e = (new c.SidebarMenuItemBuilder).setKey(d.SidebarMenuItemsKey.EDITOR_MODES_GEO_REG).setTitle(this.gettext("Geo-Registration", void 0, "title")).setIcon(new r.IconInfo("material-icons","public")).setIsVisible((function() {
                return t.canWriteAnyDataset()
            }
            )).setClassCallback(this.getClassForMode((function() {
                return t.ModeService.isGeoRegistrationMode()
            }
            ), "sidebar-menu-item-mode-geo-reg")).setOrder(s.SidebarMenuItemsOrder.EDITOR_MODES_GEO_REG).setOnClick((function() {
                t.switchToMode(a.ModeState.GEO_REGISTRATION)
            }
            )).build()
              , n = (new c.SidebarMenuItemBuilder).setKey(d.SidebarMenuItemsKey.EDITOR_MODES_ALIGNMENT).setTitle(this.gettext("Dataset Alignment", void 0, "title")).setIcon(new r.IconInfo("material-icons","view_quilt")).setIsVisible((function() {
                return t.canWriteAnyDataset()
            }
            )).setClassCallback(this.getClassForMode((function() {
                return t.ModeService.isDatasetAlignmentMode()
            }
            ), "sidebar-menu-item-mode-alignment")).setOrder(s.SidebarMenuItemsOrder.EDITOR_MODES_ALIGNMENT).setOnClick((function() {
                t.switchToMode(a.ModeState.DATASET_ALIGNMENT)
            }
            )).build()
              , i = (new c.SidebarMenuItemBuilder).setKey(d.SidebarMenuItemsKey.EDITOR_MODES_SITE_MODEL).setTitle(this.gettext("Site Model", void 0, "title")).setIcon(new r.IconInfo("material-icons","domain")).setIsVisible((function() {
                return t.isAdmin()
            }
            )).setClassCallback(this.getClassForMode((function() {
                return t.ModeService.isSiteModelEditorMode()
            }
            ), "sidebar-menu-item-mode-site-model")).setOrder(s.SidebarMenuItemsOrder.EDITOR_MODES_SITE_MODEL).setOnClick((function() {
                t.switchToMode(a.ModeState.SITE_MODEL_EDITOR)
            }
            )).build()
              , p = (new c.SidebarMenuItemBuilder).setKey(d.SidebarMenuItemsKey.EDITOR_MODES_EXPLORE).setTitle(this.gettext("Explore", void 0, "title")).setIcon(new r.IconInfo("material-icons","explore")).setIsVisible((function() {
                return e.isVisible() || n.isVisible() || i.isVisible()
            }
            )).setClassCallback(this.getClassForMode((function() {
                return t.isNormalModeHighlighted()
            }
            ), "sidebar-menu-item-mode-normal")).setOrder(s.SidebarMenuItemsOrder.EDITOR_MODES_EXPLORE).setOnClick((function() {
                t.SidebarMenuService.closeMenu(),
                t.switchToNormalMode().catch(u.handleWarning)
            }
            )).build()
              , h = (new c.SidebarMenuItemBuilder).setKey(d.SidebarMenuItemsKey.EDITOR_MODES_NAV_GRAPH).setTitle(this.gettext("Navigation Graph Editor", void 0, "title")).setIcon(new r.IconInfo("material-icons","linear_scale")).setIsVisible((function() {
                return t.canWriteAnyBundle()
            }
            )).setClassCallback(this.getClassForMode((function() {
                return t.ModeService.isNavGraphEditorMode()
            }
            ), "sidebar-menu-item-mode-nav-graph")).setOrder(s.SidebarMenuItemsOrder.EDITOR_MODES_NAV_GRAPH).setOnClick((function() {
                t.switchToMode(a.ModeState.NAV_GRAPH_EDITOR)
            }
            )).build()
              , f = (new c.SidebarMenuItemBuilder).setKey(d.SidebarMenuItemsKey.EDITOR_MODES_VECTOR_MAP).setTitle(this.gettext("Vector Map Editor", void 0, "title")).setIcon(new r.IconInfo("material-icons","border_style")).setIsVisible((function() {
                return t.isAdmin()
            }
            )).setClassCallback(this.getClassForMode((function() {
                return t.VectorMapService.isVectorMapEditorActive
            }
            ), "sidebar-menu-item-mode-vector-map")).setOrder(s.SidebarMenuItemsOrder.EDITOR_MODES_VECTOR_MAP).setOnClick((function() {
                t.SidebarMenuService.closeMenu(),
                t.switchToNormalMode().then((function() {
                    t.VectorMapService.isVectorMapEditorActive = !0,
                    t.ToolboxMenuService.openMenu(t.gettext("Vector Map Editor", void 0, "title"), l.TemplateName.VECTORMAP_MODE, {
                        afterClose: function() {
                            return t.VectorMapService.isVectorMapEditorActive = !1
                        }
                    })
                }
                )).catch(u.handleWarning)
            }
            )).build()
              , m = (new c.SidebarMenuItemBuilder).setKey(d.SidebarMenuItemsKey.EDITOR_MODES_DOWNLOAD_POINT_CLOUD).setTitle(this.gettext("Crop and Download Point Cloud", void 0, "title")).setIcon(new r.IconInfo("material-icons","file_download")).setIsVisible((function() {
                return t.canCropAndDownloadPointCloud()
            }
            )).setClassCallback(this.getClassForMode((function() {
                return t.ModeService.isDownloadPointCloudMode()
            }
            ), "sidebar-menu-item-mode-download-pc")).setOrder(s.SidebarMenuItemsOrder.EDITOR_MODES_DOWNLOAD_POINT_CLOUD).setOnClick((function() {
                return t.switchToMode(a.ModeState.DOWNLOAD_POINT_CLOUD)
            }
            )).build()
              , g = [p, e, n, i, h, f, m]
              , v = (new c.SidebarMenuItemBuilder).setKey(d.SidebarMenuItemsKey.EDITOR_MODES).setTitle(this.gettext("Editor Modes", void 0, "title")).setIcon(new r.IconInfo("material-icons","mode_edit")).setIsVisible((function() {
                return t.ConfigService.getBoolean(o.Configs.MENU_MODE_VISIBLE, !0)
            }
            )).setClassCallback((function() {
                return "sidebar-menu-item-mode"
            }
            )).setOrder(s.SidebarMenuItemsOrder.EDITOR_MODES).setItems(g).build();
            this.SidebarMenuService.addItem(v),
            this.ToolboxMenuService.switchToNormal.connect((function() {
                t.ModeSwitchService.switchToMode(a.ModeState.NORMAL).catch(u.handleWarning)
            }
            ))
        }
        ,
        t.prototype.isNormalModeHighlighted = function() {
            return this.ModeService.isNormalMode() && !this.ViewMenuService.config.showNavGraph && !this.VectorMapService.isVectorMapEditorActive
        }
        ,
        t.prototype.isAdmin = function() {
            return this.UserService.isAdmin()
        }
        ,
        t.prototype.canCropAndDownloadPointCloud = function() {
            return this.UserService.canCropAndDownloadPointCloud()
        }
        ,
        t.prototype.canWriteAnyDataset = function() {
            return this.DatasetRepository.data.some((function(t) {
                return t.security.canWrite
            }
            ))
        }
        ,
        t.prototype.canWriteAnyBundle = function() {
            return this.BundleRepository.data.some((function(t) {
                return t.security.canWrite
            }
            ))
        }
        ,
        t.prototype.switchToNormalMode = function() {
            var t = this;
            return this.ToolboxMenuService.closeMenu(!1).then((function() {
                return t.ModeSwitchService.switchToMode(a.ModeState.NORMAL)
            }
            ))
        }
        ,
        t.prototype.switchToMode = function(t, e) {
            var n = this;
            (this.SidebarMenuService.closeMenu(),
            this.ModeService.currentMode !== t) && this.ToolboxMenuService.closeMenu(!1).then((function() {
                return n.ModeSwitchService.switchToMode(t, e)
            }
            )).catch(u.handleWarning)
        }
        ,
        t.prototype.getClassForMode = function(t, e) {
            return function() {
                return t() ? e + " active" : e
            }
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(f.ɵɵinject(m.UserService),f.ɵɵinject(g.SidebarMenuService),f.ɵɵinject(v.ConfigService),f.ɵɵinject(y.ModeSwitchService),f.ɵɵinject(b.ModeService),f.ɵɵinject(w.FeatureFlagsService),f.ɵɵinject(S.ViewMenuService),f.ɵɵinject(x.DatasetRepository),f.ɵɵinject(M.ToolboxMenuService),f.ɵɵinject(E.VectorMapService),f.ɵɵinject(C.BundleRepository),f.ɵɵinject("gettext"))
        }
        ,
        t.ɵprov = f.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.EditorModesModule = A,
    f.ɵsetClassMetadata(A, [{
        type: h.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: m.UserService
        }, {
            type: g.SidebarMenuService
        }, {
            type: v.ConfigService
        }, {
            type: y.ModeSwitchService
        }, {
            type: b.ModeService
        }, {
            type: w.FeatureFlagsService
        }, {
            type: S.ViewMenuService
        }, {
            type: x.DatasetRepository
        }, {
            type: M.ToolboxMenuService
        }, {
            type: E.VectorMapService
        }, {
            type: C.BundleRepository
        }, {
            type: void 0,
            decorators: [{
                type: h.Inject,
                args: ["gettext"]
            }]
        }]
    }
    ), null),
    i.module("IVWebApp").service("EditorModesModule", p.downgradeInjectable(A))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1496),
    n(1500),
    n(1501),
    n(1503),
    n(1505),
    n(1509);
    var r = function() {
        function t() {
            var t = this;
            this.referenceDatasetSelectedCallback = function(e) {
                return t.selectedReferenceDataset = e
            }
            ,
            this.selectedDatasetsCallback = function(e) {
                return t.selectedDatasetsUpdated(e)
            }
        }
        return t.prototype.selectedDatasetsUpdated = function(t) {
            this.selectedDatasets = t
        }
        ,
        t
    }();
    e.DownloadPointCloudController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DownloadPointcloud/DownloadPointCloud.html",
            this.controller = r,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.DownloadPointCloudDirective = o,
    i.module("IVWebApp").directive("downloadPointCloud", o.factory())
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , r = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2)
      , a = n(8);
    n(1497),
    n(1498);
    var s = function() {
        function t(t, e, n) {
            var i = this;
            this.ViewService = t,
            this.DownloadPointCloudService = e,
            this.DatasetRepository = n,
            this.MAX_DATASET_DISTANCE = 1e4,
            this.selectedReferenceDataset = this.DownloadPointCloudService.selectedReferenceDataset,
            this.volumeChangedSignalConnection = this.DownloadPointCloudService.onVolumeChangeEnd.connect((function() {
                i.initializeReferenceDatasetAndSelectionList().catch(a.handleWarning)
            }
            ))
        }
        return t.$inject = ["ViewService", "DownloadPointCloudService", "DatasetRepository"],
        t.prototype.updateSelectedReferenceDataset = function(t) {
            this.selectedReferenceDataset = t,
            this.DownloadPointCloudService.selectedReferenceDataset = t,
            this.onReferenceDatasetSelected(t)
        }
        ,
        t.prototype.$onDestroy = function() {
            this.volumeChangedSignalConnection.disconnect()
        }
        ,
        t.prototype.getDatasetsWithinRadius = function() {
            return i(this, void 0, void 0, (function() {
                var t, e, n = this;
                return r(this, (function(i) {
                    switch (i.label) {
                    case 0:
                        return t = this.ViewService.mainView.getVolumeClippingLayer().getBoxFrame(),
                        e = t.position,
                        [4, this.DatasetRepository.findAll()];
                    case 1:
                        return [2, i.sent().filter((function(t) {
                            return t.getCenter().distanceTo(e) <= n.MAX_DATASET_DISTANCE
                        }
                        )).sort((function(t, e) {
                            var n = t.title ? t.title : t.name
                              , i = e.title ? e.title : e.name;
                            return n.localeCompare(i)
                        }
                        ))]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.initializeReferenceDatasetAndSelectionList = function() {
            return i(this, void 0, void 0, (function() {
                var t;
                return r(this, (function(e) {
                    switch (e.label) {
                    case 0:
                        return t = this,
                        [4, this.getDatasetsWithinRadius()];
                    case 1:
                        return t.availableReferenceDatasets = e.sent(),
                        !this.selectedReferenceDataset && this.availableReferenceDatasets.length > 0 && this.updateSelectedReferenceDataset(this.availableReferenceDatasets[0]),
                        this.addReferenceDatasetToAvailableDatasets(),
                        [2]
                    }
                }
                ))
            }
            ))
        }
        ,
        t.prototype.addReferenceDatasetToAvailableDatasets = function() {
            this.selectedReferenceDataset && -1 === this.availableReferenceDatasets.indexOf(this.selectedReferenceDataset) && this.availableReferenceDatasets.push(this.selectedReferenceDataset)
        }
        ,
        t
    }();
    e.ReferenceDatasetSelectionController = s;
    var c = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DownloadPointcloud/ReferenceDatasetSelection/ReferenceDatasetSelection.html",
            this.controller = s,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                onReferenceDatasetSelected: "<"
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.ReferenceDatasetSelectionDirective = c,
    o.module("IVWebApp").directive("referenceDatasetSelection", c.factory())
}
, function(t, e) {
    var n = "DownloadPointcloud/ReferenceDatasetSelection/ReferenceDatasetSelection.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="dataset-selection">\n\t<label translate class="text-overflow-ellipsis control-label">\n\t\tChoose the reference dataset\n\t</label>\n\t<select id="referenceDatasetSelectionSetting" class="form-control"\n\t        ng-model="vm.selectedReferenceDataset"\n\t        ng-change="vm.updateSelectedReferenceDataset(vm.selectedReferenceDataset)"\n\t        ng-options="(dataset.title ? dataset.title: dataset.name) for dataset in vm.availableReferenceDatasets">\n\t</select>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1499);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "reference-dataset-selection .dataset-selection{margin-bottom:110px}", ""]),
    t.exports = e
}
, function(t, e) {
    var n = "DownloadPointcloud/DownloadPointCloud.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="padding-top">\n\t<bounding-box-filtered-dataset-tree selection-changed="vm.selectedDatasetsCallback">\n\t</bounding-box-filtered-dataset-tree>\n</div>\n\n<div class="padding-top">\n\t<reference-dataset-selection\n\t\t\ton-reference-dataset-selected="vm.referenceDatasetSelectedCallback">\n\t</reference-dataset-selection>\n</div>\n\n<download-button\n\t\tselected-datasets="vm.selectedDatasets"\n\t\tselected-reference-dataset="vm.selectedReferenceDataset">\n</download-button>\n\n<download-point-cloud-usage-video></download-point-cloud-usage-video>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1502);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "download-point-cloud .icon-in-btn{margin-right:8px}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , r = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
      , o = this && this.__spreadArrays || function() {
        for (var t = 0, e = 0, n = arguments.length; e < n; e++)
            t += arguments[e].length;
        var i = Array(t)
          , r = 0;
        for (e = 0; e < n; e++)
            for (var o = arguments[e], a = 0, s = o.length; a < s; a++,
            r++)
                i[r] = o[a];
        return i
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var a = n(2)
      , s = n(220);
    n(1504);
    var c = n(7)
      , l = n(4)
      , u = n(8)
      , d = n(254)
      , p = n(322)
      , h = function() {
        function t(t, e, n) {
            var i = this;
            this.gettextCatalog = t,
            this.DatasetRepository = e,
            this.DownloadPointCloudService = n,
            this.datasetTreeConfig = s.DatasetTreeConfigurationFactory.createSelectDatasetConfig(this.gettextCatalog.getString("Datasets", void 0, "title")),
            this.availableDatasets = [],
            this.filteredDatasets = [],
            this.onVolumeChangeConnection = this.DownloadPointCloudService.onVolumeChangeEnd.connect((function(t) {
                return i.volumeChanged(t).catch(u.handleWarning)
            }
            ))
        }
        return t.$inject = ["gettextCatalog", "DatasetRepository", "DownloadPointCloudService"],
        t.prototype.$onDestroy = function() {
            this.onVolumeChangeConnection.disconnect()
        }
        ,
        t.prototype.areAllDatasetsSelected = function(t) {
            var e = this;
            return t.every((function(t) {
                return e.isDatasetSelected(t)
            }
            ))
        }
        ,
        t.prototype.areNoDatasetsSelected = function(t) {
            var e = this;
            return t.every((function(t) {
                return !e.isDatasetSelected(t)
            }
            ))
        }
        ,
        t.prototype.isDatasetSelected = function(t) {
            return this.filteredDatasets.indexOf(t) >= 0
        }
        ,
        t.prototype.toggleSelection = function(t) {
            this.isDatasetSelected(t) ? this.deselectDatasets([t]) : this.selectDatasets([t])
        }
        ,
        t.prototype.deselectDatasets = function(t) {
            for (var e = 0, n = t; e < n.length; e++) {
                n[e].pointCloudVisible = !1
            }
            this.filteredDatasets = c.without.apply(void 0, o([this.filteredDatasets], t)),
            this.selectionChanged(this.filteredDatasets)
        }
        ,
        t.prototype.selectDatasets = function(t) {
            for (var e = 0, n = t; e < n.length; e++) {
                n[e].pointCloudVisible = !0
            }
            this.filteredDatasets = c.union(this.filteredDatasets, t),
            this.selectionChanged(this.filteredDatasets)
        }
        ,
        t.prototype.volumeChanged = function(t) {
            return i(this, void 0, void 0, (function() {
                var e, n, i, a, s, u;
                return r(this, (function(r) {
                    switch (r.label) {
                    case 0:
                        return (e = t.getObjectByName(p.ClipVolume.BOX_FRAME_NAME)).geometry.boundingBox || e.geometry.computeBoundingBox(),
                        n = (new l.Box3).setFromObject(e),
                        [4, this.DatasetRepository.findAll()];
                    case 1:
                        return i = r.sent(),
                        a = i.filter((function(t) {
                            return t.getPointCloudType() === d.PointCloudType.POTREE && t.getLocalBoundingBox().intersectsBox(n)
                        }
                        )),
                        s = c.without.apply(void 0, o([a], this.availableDatasets)),
                        u = c.without.apply(void 0, o([this.availableDatasets], a)),
                        this.availableDatasets = a,
                        this.selectDatasets(s),
                        this.deselectDatasets(u),
                        [2]
                    }
                }
                ))
            }
            ))
        }
        ,
        t
    }();
    e.BoundingBoxFilteredDatasetTreeController = h;
    var f = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DownloadPointcloud/BoundingBoxFilteredDatasetTree/BoundingBoxFilteredDatasetTree.html",
            this.controller = h,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                selectionChanged: "<"
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.BoundingBoxFilteredDatasetTreeDirective = f,
    a.module("IVWebApp").directive("boundingBoxFilteredDatasetTree", f.factory())
}
, function(t, e) {
    var n = "DownloadPointcloud/BoundingBoxFilteredDatasetTree/BoundingBoxFilteredDatasetTree.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div>\n\t<dataset-tree parent-controller="vm"\n\t              tree-config="vm.datasetTreeConfig"\n\t              datasets="vm.availableDatasets">\n\t</dataset-tree>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1506),
    n(1507);
    var r = n(8)
      , o = function() {
        function t(t, e) {
            this.StorageService = t,
            this.$timeout = e,
            this.doNotShowKey = "download_point_cloud_usage_video"
        }
        return t.$inject = ["StorageService", "$timeout"],
        Object.defineProperty(t.prototype, "doNotShow", {
            get: function() {
                return this.StorageService.get(this.doNotShowKey)
            },
            set: function(t) {
                this.StorageService.set(this.doNotShowKey, t)
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.$onInit = function() {
            var t = this;
            this.$timeout((function() {
                return t.showModalIfNeeded()
            }
            )).catch(r.handleWarning)
        }
        ,
        t.prototype.showModalIfNeeded = function() {
            this.doNotShow || i.element(document.getElementById("first-usage-video")).modal("show")
        }
        ,
        t
    }();
    e.DownloadPointCloudUsageVideoController = o;
    var a = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DownloadPointcloud/DownloadPointCloudUsageVideo/DownloadPointCloudUsageVideo.html",
            this.controller = o,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.DownloadPointCloudUsageVideoDirective = a,
    i.module("IVWebApp").directive("downloadPointCloudUsageVideo", a.factory())
}
, function(t, e, n) {
    var i = "DownloadPointcloud/DownloadPointCloudUsageVideo/DownloadPointCloudUsageVideo.html"
      , r = '<modal>\n\t<div class="modal fade" id="first-usage-video" tabindex="-1" role="dialog" data-backdrop="static">\n\t\t<div class="modal-dialog" role="document">\n\t\t\t<div class="modal-content">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t     data-dismiss="modal"\n\t\t\t\t\t     ng-src="' + n(35) + '"\n\t\t\t\t\t     alt="{{\'Close\' | translate}}">\n\t\t\t\t\t<h4 class="modal-title" translate translate-context="title">\n\t\t\t\t\t\tCrop and Download Point Cloud\n\t\t\t\t\t</h4>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t\x3c!-- 16:9 aspect ratio --\x3e\n\t\t\t\t\t<div class="embed-responsive embed-responsive-16by9">\n\t\t\t\t\t\t<video controls disablePictureInPicture controlsList="nodownload">\n\t\t\t\t\t\t\t<source src="">\n\t\t\t\t\t\t</video>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t<div class="checkbox float-right no-margin">\n\t\t\t\t\t\t<label>\n\t\t\t\t\t\t\t<input type="checkbox" ng-model="vm.doNotShow">\n\t\t\t\t\t\t\t<span translate>Do not show again</span>\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1508);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "@media (min-width:800px){#first-usage-video .modal-dialog{width:800px}}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1510),
    n(1511);
    var r = n(283)
      , o = n(4)
      , a = n(41)
      , s = function() {
        function t(t, e, n, i, r, o, a, s) {
            this.JobListService = t,
            this.JobService = e,
            this.RestService = n,
            this.ViewService = i,
            this.MessageReportingService = r,
            this.ProgressReportService = o,
            this.TrackingService = a,
            this.gettextCatalog = s,
            this.downloadButtonClicked = !1,
            this.DEFAULT_FORMAT = ".e57",
            this.LAS_FORMAT = ".las",
            this.LAS_WARNING_MESSAGE = this.gettextCatalog.getString("LAS format does not support normals."),
            this.FILE_FORMATS = [".e57", ".las", ".ply"],
            this.selectedExtension = this.DEFAULT_FORMAT,
            this.POINT_CLOUD_CROP_JOB_ENDPOINT = "pointcloud/crop",
            this.DEFAULT_FILENAME = "pointcloud"
        }
        return t.$inject = ["JobListService", "JobService", "RestService", "ViewService", "MessageReportingService", "ProgressReportService", "TrackingService", "gettextCatalog"],
        t.prototype.isPointCloudCroppingJobOngoing = function() {
            return this.downloadButtonClicked || this.JobListService.jobs.some((function(t) {
                return t.busy && t.name === r.JobName.POINT_CLOUD_CROP_JOB
            }
            ))
        }
        ,
        t.prototype.needToDisplayWarning = function() {
            return this.selectedExtension === this.LAS_FORMAT
        }
        ,
        t.prototype.downloadPointCloud = function() {
            var t = this;
            if (!this.downloadButtonClicked) {
                if (this.downloadButtonClicked = !0,
                this.TrackingService.trackPointCloudDownloadButtonClicked(this.ViewService.getCurrentMainViewMode()),
                0 === this.selectedDatasets.length)
                    return this.MessageReportingService.showMessage(this.gettextCatalog.getString("No Visible Datasets"), this.gettextCatalog.getString("No dataset is selected. Please select at least one dataset.")),
                    void (this.downloadButtonClicked = !1);
                var e = this.callPointCloudCroppingJob();
                this.JobService.makeJobPromise(e).then((function(e) {
                    return t.triggerPointCloudDownload(e)
                }
                )).catch((function() {
                    return t.removeProgressBarAndEnableDownloadButton()
                }
                ))
            }
        }
        ,
        t.prototype.callPointCloudCroppingJob = function() {
            var t = this;
            this.cropPointCloudJobProgress = this.ProgressReportService.addTask(this.gettextCatalog.getString("Crop Point Cloud"), 1, !1, !0, !1);
            var e = this.createCroppingJobDto();
            return this.RestService.postApi(this.POINT_CLOUD_CROP_JOB_ENDPOINT, e).then((function(e) {
                return t.trackJobStatus(e)
            }
            ))
        }
        ,
        t.prototype.trackJobStatus = function(t) {
            return this.JobListService.refreshJobDetails(t.job_id),
            t
        }
        ,
        t.prototype.createCroppingJobDto = function() {
            var t = this.selectedReferenceDataset ? this.selectedReferenceDataset : this.selectedDatasets[0]
              , e = this.getTransformationMatrix(t);
            return {
                datasets_ids: this.selectedDatasets.map((function(t) {
                    return t.id
                }
                )),
                transformation_matrix: e.elements,
                reference_dataset_id: t.id,
                file_extension: this.selectedExtension
            }
        }
        ,
        t.prototype.getTransformationMatrix = function(t) {
            var e = this.ViewService.mainView.getVolumeClippingLayer().getBoxFrame()
              , n = (new o.Matrix4).getInverse(e.matrixWorld)
              , i = t.m2w_;
            return (new o.Matrix4).multiplyMatrices(n, i).transpose()
        }
        ,
        t.prototype.removeProgressBarAndEnableDownloadButton = function() {
            this.cropPointCloudJobProgress.itemDone(),
            this.downloadButtonClicked = !1
        }
        ,
        t.prototype.triggerPointCloudDownload = function(t) {
            if (this.removeProgressBarAndEnableDownloadButton(),
            t.success) {
                var e = this.getDownloadedFileName();
                this.TrackingService.trackPointCloudDownload(),
                this.RestService.directDownload(t.outputFile, {}, e, !1)
            } else {
                var n = a.ErrorService.getAllJobFailureDetectors(this.gettextCatalog).find((function(e) {
                    return e.applies(t)
                }
                ))
                  , i = n ? n.currentErrorMessage : this.gettextCatalog.getString("Task has failed. Please check the Task Manager for more information.");
                this.MessageReportingService.showMessage(this.gettextCatalog.getString("Cropping Point Cloud Failed"), i)
            }
        }
        ,
        t.prototype.getDownloadedFileName = function() {
            var t = this.fileName ? this.fileName.replace(/\.[^/.]+$/, "") : "";
            return 0 === t.length ? this.DEFAULT_FILENAME + this.selectedExtension : t + this.selectedExtension
        }
        ,
        t
    }();
    e.DownloadPointCloudButtonController = s;
    var c = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DownloadPointcloud/DownloadPointCloudButtonComponent/DownloadPointCloudButton.html",
            this.controller = s,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                selectedDatasets: "=",
                selectedReferenceDataset: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.DownloadButtonDirective = c,
    i.module("IVWebApp").directive("downloadButton", c.factory())
}
, function(t, e) {
    var n = "DownloadPointcloud/DownloadPointCloudButtonComponent/DownloadPointCloudButton.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="margin-top-big collapse-style"\n     ng-class="vm.needToDisplayWarning() ? \'with-warning-message\' : \'\'">\n\t<div class="input-group">\n\t\t\x3c!-- Filename text input --\x3e\n\t\t<input type="text" class="form-control" placeholder="pointcloud"\n\t\t       ng-disabled="vm.isPointCloudCroppingJobOngoing()"\n\t\t       ng-model="vm.fileName">\n\n\t\t\x3c!-- Dropup selectbox for the desired pointcloud file extension --\x3e\n\t\t<div class="dropup input-group-addon">\n\t\t\t<button class="dropdown-toggle" data-toggle="dropdown"\n\t\t\t        ng-disabled="vm.isPointCloudCroppingJobOngoing()">\n\t\t\t\t{{vm.selectedExtension}}\n\t\t\t\t<span class="caret"></span>\n\t\t\t</button>\n\n\t\t\t<ul class="dropdown-menu">\n\t\t\t\t<li ng-repeat="extension in vm.FILE_FORMATS"\n\t\t\t\t\tng-class="vm.selectedExtension === extension ? \'selected\' : \'\'"\n\t\t\t\t    ng-click="vm.selectedExtension = extension">\n\t\t\t\t\t{{extension}}\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\n\t\t\x3c!-- Download button --\x3e\n\t\t<div class="input-group-btn">\n\t\t\t<save-button\n\t\t\t\t\tng-disabled="vm.isPointCloudCroppingJobOngoing()"\n\t\t\t\t\tin-progress="vm.isPointCloudCroppingJobOngoing()"\n\t\t\t\t\tng-click="vm.downloadPointCloud()">\n\t\t\t\t<span translate>Download</span>\n\t\t\t</save-button>\n\t\t</div>\n\t</div>\n\n\t\x3c!-- Warning message for LAS format --\x3e\n\t<div ng-if="vm.needToDisplayWarning()" class="warning-message">\n\t\t{{vm.LAS_WARNING_MESSAGE}}\n\t</div>\n</div>\n\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1512);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "download-button .collapse-style{position:absolute;bottom:0;left:0;right:0;padding:25px 20px 46px;background-color:#fff;box-shadow:0 0 6px rgba(0,0,0,.24)}download-button .collapse-style .input-group-addon{border-left:0}download-button .collapse-style .btn-primary{max-height:34px;min-width:150px;height:34px}download-button .collapse-style.with-warning-message{padding:25px 20px 0}download-button .warning-message{padding:8px 0 18px 13px;color:#999}download-button .selected{background-color:#eee}download-button .dropup{padding:0}download-button .dropdown-toggle{min-width:65px;min-height:32px;cursor:pointer;line-height:32px;padding:0;border:0}download-button .dropdown-toggle:disabled{cursor:not-allowed;background-color:#eee}download-button .dropdown-menu{min-width:65px;border-bottom-right-radius:0;border-bottom-left-radius:0}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1514),
    n(1515),
    n(1517),
    n(1521);
    var r = function() {
        function t(t) {
            this.AlignmentService = t
        }
        return t.$inject = ["AlignmentService"],
        t.prototype.isNonWritableDatasetSelected = function() {
            return this.AlignmentService.isNonWritableDatasetSelected()
        }
        ,
        t
    }();
    e.TransformPanelController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DatasetTransformUI/TransformPanel.html",
            this.controller = r,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                managerService: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.TransformPanelDirective = o,
    i.module("IVWebApp").directive("transformPanel", o.factory())
}
, function(t, e) {
    var n = "DatasetTransformUI/TransformPanel.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="panel panel-default">\n\t<div class="panel-heading" data-toggle="collapse" data-target="#transform-panel">\n\t\t<i class="collapse-expand-chevron"></i>\n\t\t<span class="panel-title" translate translate-context="title">\n\t\t\t\tTransform\n\t\t\t</span>\n\t</div>\n\t<div id="transform-panel" class="panel-collapse collapse in">\n\t\t<div class="panel-body">\n\t\t\t<div class="non-writable-dataset"\n\t\t\t     ng-if="vm.isNonWritableDatasetSelected()">\n\t\t\t\t<span class="fa fa-exclamation-triangle"></span>\n\t\t\t\t<span class="text-justify" translate>\n\t\t\t\t\tYou do not have permission to edit selected datasets\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t\t<rotate-panel manager-service="vm.managerService"></rotate-panel>\n\t\t\t<translate-panel manager-service="vm.managerService"></translate-panel>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1516);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "transform-panel .non-writable-dataset{margin:10px 0}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1518),
    n(1519);
    var r = function() {
        function t(t, e) {
            this.AlignmentService = t,
            this.$interval = e
        }
        return t.$inject = ["AlignmentService", "$interval"],
        t.prototype.isDisabled = function() {
            return !this.AlignmentService.anythingSelected() || this.AlignmentService.isNonWritableDatasetSelected()
        }
        ,
        t.prototype.rotate = function(e) {
            var n = this;
            this.managerService.rotate(e),
            this.timerRotate || (this.timerRotate = this.$interval((function() {
                return n.managerService.rotate(e)
            }
            ), t.DELAY))
        }
        ,
        t.prototype.stopRotating = function() {
            this.timerRotate && (this.$interval.cancel(this.timerRotate),
            this.timerRotate = void 0)
        }
        ,
        t.DELAY = 200,
        t
    }();
    e.RotatePanelController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DatasetTransformUI/RotatePanel.html",
            this.controller = r,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                managerService: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.RotatePanelDirective = o,
    i.module("IVWebApp").directive("rotatePanel", o.factory())
}
, function(t, e) {
    var n = "DatasetTransformUI/RotatePanel.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="form-group">\n\t<div class="btn-toolbar">\n\t\t<div class="btn-group">\n\t\t\t<button type="button" class="btn btn-default"\n\t\t\t        ng-disabled="vm.isDisabled()"\n\t\t\t        ng-mousedown="vm.rotate(0.174532925)"\n\t\t\t        ng-mouseleave="vm.stopRotating()"\n\t\t\t        ng-mouseup="vm.stopRotating()">\n\t\t\t\t10°\n\t\t\t\t<i class="fa fa-undo rotate-icon"></i>\n\t\t\t</button>\n\t\t\t<button type="button" class="btn btn-default"\n\t\t\t        ng-disabled="vm.isDisabled()"\n\t\t\t        ng-mousedown="vm.rotate(0.0174532925)"\n\t\t\t        ng-mouseleave="vm.stopRotating()"\n\t\t\t        ng-mouseup="vm.stopRotating()">\n\t\t\t\t1°\n\t\t\t\t<i class="fa fa-undo rotate-icon"></i>\n\t\t\t</button>\n\t\t\t<button type="button" class="btn btn-default"\n\t\t\t        ng-disabled="vm.isDisabled()"\n\t\t\t        ng-mousedown="vm.rotate(0.00174532925)"\n\t\t\t        ng-mouseleave="vm.stopRotating()"\n\t\t\t        ng-mouseup="vm.stopRotating()">\n\t\t\t\t0.1°\n\t\t\t\t<i class="fa fa-undo rotate-icon"></i>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class="btn-group">\n\t\t\t<button type="button" class="btn btn-default"\n\t\t\t        ng-disabled="vm.isDisabled()"\n\t\t\t        ng-mousedown="vm.rotate(-0.00174532925)"\n\t\t\t        ng-mouseleave="vm.stopRotating()"\n\t\t\t        ng-mouseup="vm.stopRotating()">\n\t\t\t\t0.1°\n\t\t\t\t<i class="fa fa-repeat rotate-icon"></i>\n\t\t\t</button>\n\t\t\t<button type="button" class="btn btn-default"\n\t\t\t        ng-disabled="vm.isDisabled()"\n\t\t\t        ng-mousedown="vm.rotate(-0.0174532925)"\n\t\t\t        ng-mouseleave="vm.stopRotating()"\n\t\t\t        ng-mouseup="vm.stopRotating()">\n\t\t\t\t1°\n\t\t\t\t<i class="fa fa-repeat rotate-icon"></i>\n\t\t\t</button>\n\t\t\t<button type="button" class="btn btn-default"\n\t\t\t        ng-disabled="vm.isDisabled()"\n\t\t\t        ng-mousedown="vm.rotate(-0.174532925)"\n\t\t\t        ng-mouseleave="vm.stopRotating()"\n\t\t\t        ng-mouseup="vm.stopRotating()">\n\t\t\t\t10°\n\t\t\t\t<i class="fa fa-repeat rotate-icon"></i>\n\t\t\t</button>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1520);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "rotate-panel{float:none}rotate-panel .btn-toolbar>.btn-group>button{padding-left:6px;padding-right:6px}rotate-panel .rotate-icon{color:#2e88b3}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1522),
    n(1523);
    var r = n(4)
      , o = function() {
        function t(t, e) {
            this.AlignmentService = t,
            this.$interval = e
        }
        return t.$inject = ["AlignmentService", "$interval"],
        t.prototype.isDisabled = function() {
            return !this.AlignmentService.anythingSelected() || this.AlignmentService.isNonWritableDatasetSelected()
        }
        ,
        t.prototype.translate = function(e, n, i) {
            var o = this;
            this.managerService.translate(new r.Vector3(e,n,i)),
            this.timerTranslate || (this.timerTranslate = this.$interval((function() {
                return o.managerService.translate(new r.Vector3(e,n,i))
            }
            ), t.DELAY))
        }
        ,
        t.prototype.stopTranslating = function() {
            this.timerTranslate && (this.$interval.cancel(this.timerTranslate),
            this.timerTranslate = void 0)
        }
        ,
        t.DELAY = 200,
        t
    }();
    e.TranslatePanelController = o;
    var a = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DatasetTransformUI/TranslatePanel.html",
            this.controller = o,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                managerService: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.TranslatePanelDirective = a,
    i.module("IVWebApp").directive("translatePanel", a.factory())
}
, function(t, e) {
    var n = "DatasetTransformUI/TranslatePanel.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="form-group">\n\t<div class="btn-toolbar">\n\t\t<div class="btn-group">\n\t\t\t<button type="button" class="btn btn-default"\n\t\t\t        ng-disabled="vm.isDisabled()"\n\t\t\t        ng-mousedown="vm.translate(-0.02, 0, 0)"\n\t\t\t        ng-mouseleave="vm.stopTranslating()"\n\t\t\t        ng-mouseup="vm.stopTranslating()">\n\t\t\t\t-x\n\t\t\t\t<i class="fa fa-arrow-left translate-icon"></i>\n\t\t\t</button>\n\n\t\t\t<button type="button" class="btn btn-default"\n\t\t\t        ng-disabled="vm.isDisabled()"\n\t\t\t        ng-mousedown="vm.translate(0.02, 0, 0)"\n\t\t\t        ng-mouseleave="vm.stopTranslating()"\n\t\t\t        ng-mouseup="vm.stopTranslating()">\n\t\t\t\t+x\n\t\t\t\t<i class="fa fa-arrow-right translate-icon"></i>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class="btn-group">\n\t\t\t<button type="button" class="btn btn-default"\n\t\t\t        ng-disabled="vm.isDisabled()"\n\t\t\t        ng-mousedown="vm.translate(0, -0.02, 0)"\n\t\t\t        ng-mouseleave="vm.stopTranslating()"\n\t\t\t        ng-mouseup="vm.stopTranslating()">\n\t\t\t\t-y\n\t\t\t\t<i class="fa fa-arrow-down translate-icon"></i>\n\t\t\t</button>\n\n\t\t\t<button type="button" class="btn btn-default"\n\t\t\t        ng-disabled="vm.isDisabled()"\n\t\t\t        ng-mousedown="vm.translate(0, 0.02, 0)"\n\t\t\t        ng-mouseleave="vm.stopTranslating()"\n\t\t\t        ng-mouseup="vm.stopTranslating()">\n\t\t\t\t+y\n\t\t\t\t<i class="fa fa-arrow-up translate-icon"></i>\n\t\t\t</button>\n\t\t</div>\n\t\t<div class="btn-group">\n\t\t\t<button type="button" class="btn btn-default"\n\t\t\t        ng-disabled="vm.isDisabled()"\n\t\t\t        ng-mousedown="vm.translate(0, 0, -0.02)"\n\t\t\t        ng-mouseleave="vm.stopTranslating()"\n\t\t\t        ng-mouseup="vm.stopTranslating()">\n\t\t\t\t-z\n\t\t\t\t<i class="fa fa-arrow-down translate-icon"></i>\n\n\t\t\t</button>\n\n\t\t\t<button type="button" class="btn btn-default"\n\t\t\t        ng-disabled="vm.isDisabled()"\n\t\t\t        ng-mousedown="vm.translate(0, 0, 0.02)"\n\t\t\t        ng-mouseleave="vm.stopTranslating()"\n\t\t\t        ng-mouseup="vm.stopTranslating()">\n\t\t\t\t+z\n\t\t\t\t<i class="fa fa-arrow-up translate-icon"></i>\n\t\t\t</button>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1524);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "translate-panel{float:none}translate-panel .btn-toolbar>.btn-group>button{padding-left:7px;padding-right:7px}translate-panel .translate-icon{color:#2e88b3}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1526);
    var r = n(197)
      , o = n(1527)
      , a = n(7)
      , s = function() {
        function t(t) {
            this.AlignmentService = t,
            this.fileName = ""
        }
        return t.$inject = ["AlignmentService"],
        t.prototype.getSelectedDatasets = function() {
            return a.values(this.AlignmentService.selectedDatasets)
        }
        ,
        t.prototype.anythingSelected = function() {
            return a.size(this.AlignmentService.selectedDatasets) > 0
        }
        ,
        t.prototype.downloadXml = function() {
            var t = o.DatasetAlignmentXmlGenerator.generateXML(this.referenceDataset, this.AlignmentService.selectedDatasets);
            r.downloadFile(t, this.fileName, "xml", "text/xml", !0)
        }
        ,
        t
    }();
    e.GenerateAndSaveBundleXmlController = s;
    var c = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "Alignment/GenerateAndSaveBundleXml.html",
            this.controller = s,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.GenerateAndSaveBundleXmlDirective = c,
    i.module("IVWebApp").directive("generateAndSaveBundleXml", c.factory())
}
, function(t, e) {
    var n = "Alignment/GenerateAndSaveBundleXml.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="panel panel-default">\n\t<div class="panel-heading" data-toggle="collapse" data-target="#xmlExport">\n\t\t<i class="collapse-expand-chevron"></i>\n\t\t<span class="panel-title" translate translate-context="title">\n\t\t\tXML-Export\n\t\t</span>\n\t</div>\n\t<div id="xmlExport" class="panel-collapse collapse in">\n\t\t<div class="panel-body">\n\t\t\t\x3c!--reference dataset dropdown--\x3e\n\t\t\t<div class="form-group">\n\t\t\t\t<strong class="control-label" translate>\n\t\t\t\t\tReference dataset\n\t\t\t\t</strong>\n\t\t\t\t<select class="form-control"\n\t\t\t\t        title="{{\'Reference dataset\'|translate}}"\n\t\t\t\t        ng-model="vm.referenceDataset"\n\t\t\t\t        ng-options="dataset.title for dataset in vm.getSelectedDatasets() | orderBy:\'title\'">\n\t\t\t\t</select>\n\t\t\t</div>\n\n\t\t\t<div class="row">\n\t\t\t\t<div class="col-sm-6">\n\t\t\t\t\t<input class="form-control"\n\t\t\t\t\t       type="text"\n\t\t\t\t\t       ng-model="vm.fileName"\n\t\t\t\t\t       placeholder="{{\'Site name (optional)\'|translate}}"\n\t\t\t\t\t       title="{{\'Downloaded file name will be (Site name)_(date:yyyy_mm_dd).xml\'|translate}}">\n\t\t\t\t</div>\n\t\t\t\t<div class="col-sm-6">\n\t\t\t\t\t\x3c!--xml download button--\x3e\n\t\t\t\t\t<button class="form-control"\n\t\t\t\t\t        type="button"\n\t\t\t\t\t        ng-click="vm.downloadXml()"\n\t\t\t\t\t        ng-disabled="!vm.referenceDataset || !vm.anythingSelected()"\n\t\t\t\t\t        translate>\n\t\t\t\t\t\tDownload\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(4)
      , r = n(1528)
      , o = n(7)
      , a = function() {
        function t() {}
        return t.generateXML = function(e, n) {
            var a = e && n[e.id] && t.getLatLonZAngle(e);
            if (a) {
                var s = new r("UTF-8");
                return s.formatting = "indented",
                s.indentChar = " ",
                s.indentation = 2,
                s.writeStartDocument(),
                s.writeStartElement("bundle"),
                s.writeElementString("serial", t.generateGUID()),
                s.writeStartElement("georeference"),
                s.writeElementString("proj", "+proj=tmerc +ellps=WGS84 +lon_0=" + a.lon + " +lat_0=" + a.lat),
                s.writeElementString("angle", "" + a.angle),
                s.writeElementString("z", "" + a.z),
                s.writeElementString("comment", ""),
                s.writeEndElement(),
                o.forEach(n, (function(n) {
                    var r = new i.Matrix4;
                    r.multiplyMatrices(e.m2wInv_, n.m2w_);
                    var o = new i.Vector3
                      , a = new i.Quaternion
                      , c = new i.Vector3;
                    r.decompose(o, a, c),
                    t.createXMLNodeForADataset(s, n.name, n.title, n.level, o, a)
                }
                )),
                s.writeEndElement(),
                s.writeEndDocument(),
                s.flush()
            }
        }
        ,
        t.getLatLonZAngle = function(t) {
            if (t) {
                var e = t.getGlobalState();
                return {
                    lon: e.pos[0],
                    lat: e.pos[1],
                    z: e.pos[2],
                    angle: e.orientation
                }
            }
        }
        ,
        t.generateGUID = function() {
            return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (function(t) {
                var e = 16 * Math.random() | 0;
                return ("x" === t ? e : 3 & e | 8).toString(16)
            }
            ))
        }
        ,
        t.createXMLNodeForADataset = function(e, n, i, r, o, a) {
            e.writeStartElement("dataset"),
            e.writeElementString("name", n),
            e.writeElementString("title", t.escapeXMLTagContent(i)),
            e.writeElementString("level", r),
            e.writeElementString("pointcloud", "datasets_proc/" + n + "/pointcloud.ply"),
            e.writeElementString("path", "datasets_web/" + n),
            e.writeStartElement("Pose"),
            e.writeStartElement("position"),
            e.writeElementString("x", "" + o.x),
            e.writeElementString("y", "" + o.y),
            e.writeElementString("z", "" + o.z),
            e.writeEndElement(),
            e.writeStartElement("orientation"),
            e.writeElementString("w", "" + a.w),
            e.writeElementString("x", "" + a.x),
            e.writeElementString("y", "" + a.y),
            e.writeElementString("z", "" + a.z),
            e.writeEndElement(),
            e.writeEndElement(),
            e.writeEndElement()
        }
        ,
        t.escapeXMLTagContent = function(t) {
            return t.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/"/g, "&apos;")
        }
        ,
        t
    }();
    e.DatasetAlignmentXmlGenerator = a
}
, function(t, e) {
    function n(t, e) {
        t && (this.encoding = t),
        e && (this.version = e)
    }
    !function() {
        var t = n.prototype = {
            encoding: "UTF-8",
            version: "1.0",
            formatting: "indented",
            indentChar: "\t",
            indentation: 1,
            newLine: "\n",
            writeStartDocument: function(t) {
                this.close(),
                this.stack = [],
                this.standalone = t
            },
            writeEndDocument: function() {
                this.active = this.root,
                this.stack = []
            },
            writeDocType: function(t) {
                this.doctype = t
            },
            writeStartElement: function(t, e) {
                e && (t = e + ":" + t);
                var n = {
                    n: t,
                    a: {},
                    c: []
                };
                this.active ? (this.active.c.push(n),
                this.stack.push(this.active)) : this.root = n,
                this.active = n
            },
            writeEndElement: function() {
                this.active = this.stack.pop() || this.root
            },
            writeAttributeString: function(t, e) {
                this.active && (this.active.a[t] = e)
            },
            writeString: function(t) {
                this.active && this.active.c.push(t)
            },
            writeXML: function(t) {
                this.active && this.active.c.push(t)
            },
            writeElementString: function(t, e, n) {
                this.writeStartElement(t, n).writeString(e).writeEndElement()
            },
            writeCDATA: function(t) {
                t = t.replace(/>>]/g, "]]><![CDATA[>"),
                this.writeString("<![CDATA[" + t + "]]>")
            },
            writeComment: function(t) {
                this.writeString("\x3c!-- " + t + " --\x3e")
            },
            flush: function() {
                this.writeEndDocument();
                var t = ""
                  , e = this.indentation
                  , n = "indented" == this.formatting.toLowerCase()
                  , i = ['<?xml version="' + this.version + '" encoding="' + this.encoding + '"'];
                if (void 0 !== this.standalone && (i[0] += ' standalone="' + !!this.standalone + '"'),
                i[0] += " ?>",
                this.doctype && this.root && i.push("<!DOCTYPE " + this.root.n + " " + this.doctype + ">"),
                n)
                    for (; e--; )
                        t += this.indentChar;
                return this.root && function t(e, n, i, r) {
                    var o, a, s = n + "<" + e.n, c = e.c.length, l = 0;
                    for (o in e.a)
                        s += " " + o + '="' + e.a[o] + '"';
                    if (s += c ? ">" : " />",
                    r.push(s),
                    c) {
                        do {
                            if ("string" == typeof (a = e.c[l++])) {
                                if (1 == c)
                                    return r.push(r.pop() + a + "</" + e.n + ">");
                                r.push(n + i + a)
                            } else
                                "object" == typeof a && t(a, n + i, i, r)
                        } while (l < c);
                        r.push(n + "</" + e.n + ">")
                    }
                }(this.root, "", t, i),
                i.join(n ? this.newLine : "")
            },
            close: function() {
                this.root && function t(e) {
                    var n = e.c.length;
                    for (; n--; )
                        "object" == typeof e.c[n] && t(e.c[n]);
                    e.n = e.a = e.c = null
                }(this.root),
                this.active = this.root = this.stack = null
            },
            getDocument: window.ActiveXObject ? function() {
                var t = new ActiveXObject("Microsoft.XMLDOM");
                return t.async = !1,
                t.loadXML(this.flush()),
                t
            }
            : function() {
                return (new DOMParser).parseFromString(this.flush(), "text/xml")
            }
        };
        for (var e in t)
            if ("function" == typeof t[e] && !/flush|getDocument/.test(e)) {
                var i = t[e];
                t[e] = function() {
                    return arguments.callee._o_.apply(this, arguments),
                    this
                }
                ,
                t[e]._o_ = i
            }
    }(),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1530);
    var r = n(20)
      , o = n(611)
      , a = n(8)
      , s = n(16)
      , c = function() {
        function t(t, e, n, i, r, o, a) {
            var c = this;
            this.GeoRegistrationService = t,
            this.AlignmentService = e,
            this.ConfigService = n,
            this.DatasetRepository = i,
            this.RestService = r,
            this.TransformService = o;
            var l = new s.SignalConnections;
            l.add(e.zoomedToDatasets.connect((function(t) {
                return c.zoomToDatasets(t)
            }
            ))),
            l.add(e.primaryDatasetSwitched.connect((function() {
                return c.primaryDatasetSelected()
            }
            ))),
            l.add(e.baseLayerSwitched.connect((function() {
                c.olMap && c.olMap.switchBaseLayer()
            }
            ))),
            l.add(e.selectedDatasetsChanged.connect((function() {
                return c.datasetsSelected()
            }
            ))),
            l.add(e.transparencySwitched.connect((function() {
                c.olMap && c.olMap.makeMapsTransparent(e.transparent)
            }
            ))),
            l.add(t.datasetTranslationChanged.connect((function(t) {
                c.olMap && c.olMap.translateMapsAndTheirMarkers(t)
            }
            ))),
            l.add(t.datasetOrientationChanged.connect((function() {
                c.olMap && c.olMap.updateLocationsFromService(t.datasetLocations)
            }
            ))),
            a.$on("$destroy", (function() {
                return l.disconnectAll()
            }
            )),
            this.initialize()
        }
        return t.$inject = ["GeoRegistrationService", "AlignmentService", "ConfigService", "DatasetRepository", "RestService", "TransformService", "$scope"],
        t.prototype.datasetsSelected = function() {
            var t = this;
            this.olMap && this.DatasetRepository.findAll().then((function(e) {
                for (var n = 0, i = e; n < i.length; n++) {
                    var r = i[n];
                    t.AlignmentService.selectedDatasets[r.id] ? t.olMap.showMap(r.id) : t.olMap.hideMap(r.id)
                }
            }
            )).catch(a.handleWarning)
        }
        ,
        t.prototype.primaryDatasetSelected = function() {
            this.olMap && this.AlignmentService.primary && (this.olMap.showMap(this.AlignmentService.primary.id),
            this.olMap.moveDragControlTo("" + this.AlignmentService.primary.id),
            this.olMap.makeMapsTransparent(this.AlignmentService.transparent))
        }
        ,
        t.prototype.zoomToDatasets = function(t) {
            this.olMap && this.olMap.zoomMapToDatasets(t)
        }
        ,
        t.prototype.initialize = function() {
            var t = this;
            this.olMap ? (this.reinitOLM(),
            this.DatasetRepository.findAll().then((function(e) {
                for (var n = 0, i = e; n < i.length; n++) {
                    var r = i[n];
                    t.GeoRegistrationService.cacheGlobalState(r)
                }
            }
            )).catch(a.handleWarning),
            this.olMap.updateLocationsFromService(this.GeoRegistrationService.datasetLocations)) : this.GeoRegistrationService.initialized.then((function() {
                return t.initOLM()
            }
            )).catch(a.handleWarning)
        }
        ,
        t.prototype.initOLM = function() {
            var t = this;
            o.loadOpenLayersMap().then((function(e) {
                t.olMap = new e("geo-reg-open-layers-map",t.GeoRegistrationService,t.ConfigService,t.RestService,t.AlignmentService),
                t.initDatasetMaps(),
                r.invalidateAngular()
            }
            )).catch(a.handleWarning)
        }
        ,
        t.prototype.reinitOLM = function() {
            this.olMap && (this.olMap.removeDeletedMaps(this.DatasetRepository.dataMap),
            this.initDatasetMaps())
        }
        ,
        t.prototype.initDatasetMaps = function() {
            var t = this;
            this.DatasetRepository.findAll().then((function(e) {
                for (var n = 0, i = e; n < i.length; n++) {
                    var r = i[n];
                    t.GeoRegistrationService.cacheGlobalState(r),
                    t.olMap.addMap(r, t.GeoRegistrationService.datasetLocations[r.id])
                }
                t.datasetsSelected(),
                t.primaryDatasetSelected()
            }
            )).catch(a.handleWarning)
        }
        ,
        t
    }();
    e.GeoRegistrationMapController = c;
    var l = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "GeoRegistration/GeoRegistrationMap.html",
            this.controller = c,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.GeoRegistrationMapDirective = l,
    i.module("IVWebApp").directive("geoRegistrationMap", l.factory())
}
, function(t, e) {
    var n = "GeoRegistration/GeoRegistrationMap.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '\x3c!--inline style necessary to overcome an OpenLayersMap bug (https://github.com/openlayers/ol2/issues/669)--\x3e\n<div id="geo-reg-open-layers-map"\n     class="open-layers-map geo-reg-map"\n     resize-event="vm.olMap.updateMapSize()" delay="100"\n     style="width:100%; height:100%"></div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2);
    n(1532);
    var a = n(612)
      , s = n(220);
    n(1533);
    var c = n(7)
      , l = function(t) {
        function e(e, n, i, r, o, a, c, l, u) {
            var d = t.call(this, e, r, i, o, a, c, l, n, u) || this;
            return d.GeoRegistrationService = e,
            d.gettext = n,
            d.treeConfig = s.DatasetTreeConfigurationFactory.createGeoRegistrationConfig(d.gettext("Datasets", void 0, "title")),
            d
        }
        return r(e, t),
        e.$inject = ["GeoRegistrationService", "gettext", "AlignmentService", "$scope", "DatasetRepository", "ModeService", "ViewService", "gettextCatalog", "hotkeys"],
        Object.defineProperty(e.prototype, "modalDeferred", {
            get: function() {
                return this.GeoRegistrationService.modalDeferred
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.selectDatasets = function(e) {
            var n = this;
            e = c.filter(e, (function(t) {
                return n.AlignmentService.mapDataPresent[t.id]
            }
            )),
            t.prototype.selectDatasets.call(this, e)
        }
        ,
        e.prototype.discardChanges = function() {
            return this.GeoRegistrationService.discardChanges()
        }
        ,
        e
    }(a.AlignmentController);
    e.GeoRegistrationPanelController = l;
    var u = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "GeoRegistration/GeoRegistrationPanel.html",
            this.controller = l,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.GeoRegistrationPanelDirective = u,
    o.module("IVWebApp").directive("geoRegistrationPanel", u.factory())
}
, function(t, e) {
    var n = "GeoRegistration/GeoRegistrationPanel.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<form role="form">\n\t<dataset-tree parent-controller="vm" tree-config="vm.treeConfig"></dataset-tree>\n\n\t<map-toolbar></map-toolbar>\n\n\t\x3c!-- Save button --\x3e\n\t<div class="form-group text-right mt-10">\n\t\t<save-button ng-click="vm.save()"\n\t\t             in-progress="vm.isSavingInProgress()"></save-button>\n\t</div>\n\n\t<transform-panel manager-service="vm.GeoRegistrationService"></transform-panel>\n\n\t<generate-and-save-bundle-xml></generate-and-save-bundle-xml>\n\t<save-discard-confirmation\n\t\t\tmodal-id="confirmUnsavedGeoregistration"\n\t\t\ton-save-callback="vm.save()"\n\t\t\ton-discard-callback="vm.discardChanges()"\n\t\t\tdeferred-promise="vm.modalDeferred"\n\t\t\tsubject="{{\'Geo-Registration\' | translate:\'title\'}}">\n\t</save-discard-confirmation>\n</form>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1534);
    var r = function() {
        function t(t) {
            this.AlignmentService = t
        }
        return t.$inject = ["AlignmentService"],
        t.prototype.toggleBaseLayer = function() {
            this.AlignmentService.toggleBaseLayer()
        }
        ,
        t.prototype.toggleTransparency = function() {
            this.AlignmentService.toggleTransparency()
        }
        ,
        t.prototype.isTransparent = function() {
            return this.AlignmentService.transparent
        }
        ,
        t
    }();
    e.MapToolbarController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "GeoRegistration/MapToolbar.html",
            this.controller = r,
            this.controllerAs = "vm",
            this.scope = {
                parentController: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.MapToolbarDirective = o,
    i.module("IVWebApp").directive("mapToolbar", o.factory())
}
, function(t, e) {
    var n = "GeoRegistration/MapToolbar.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="btn-toolbar">\n\t<div class="btn-group pull-right">\n\t\t<button type="button"\n\t\t        ng-click=\'vm.toggleTransparency()\'\n\t\t        title="{{\'Make all datasets except the reference dataset transparent\' | translate}}"\n\t\t        ng-class="vm.isTransparent() ? \'btn btn-default active\' : \'btn btn-default\' ">\n\t\t\t<i class="fa fa-picture-o"></i>\n\t\t</button>\n\n\t\t<button type="button"\n\t\t        ng-click=\'vm.toggleBaseLayer()\'\n\t\t        title="{{\'Toggle map type\' | translate}}"\n\t\t        class="btn btn-default">\n\t\t\t<i class="fa fa-map-o"></i>\n\t\t</button>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2);
    n(1536),
    n(607),
    n(1537);
    var a = n(220)
      , s = n(612);
    n(1539);
    var c = function(t) {
        function e(e, n, i, r, o, s, c, l, u) {
            var d = t.call(this, e, r, i, o, s, c, l, n, u) || this;
            return d.DatasetAlignmentService = e,
            d.gettext = n,
            d.treeConfig = a.DatasetTreeConfigurationFactory.createDatasetAlignmentConfig(d.gettext("Datasets", void 0, "title")),
            d
        }
        return r(e, t),
        e.$inject = ["DatasetAlignmentService", "gettext", "AlignmentService", "$scope", "DatasetRepository", "ModeService", "ViewService", "gettextCatalog", "hotkeys"],
        Object.defineProperty(e.prototype, "modalDeferred", {
            get: function() {
                return this.DatasetAlignmentService.modalDeferred
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.discardChanges = function() {
            return this.DatasetAlignmentService.discardChanges()
        }
        ,
        e
    }(s.AlignmentController);
    e.DatasetAlignmentPanelController = c;
    var l = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DatasetAlignment/DatasetAlignmentPanel.html",
            this.controller = c,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.DatasetAlignmentPanelDirective = l,
    o.module("IVWebApp").directive("datasetAlignmentPanel", l.factory())
}
, function(t, e) {
    var n = "DatasetAlignment/DatasetAlignmentPanel.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<form role="form">\n\t<dataset-tree parent-controller="vm" tree-config="vm.treeConfig"></dataset-tree>\n\n\t\x3c!--save button--\x3e\n\t<div class="form-group text-right mt-10">\n\t\t<save-button ng-click="vm.save()"\n\t\t             in-progress="vm.isSavingInProgress()"></save-button>\n\t</div>\n\n\t<transform-panel manager-service="vm.DatasetAlignmentService"></transform-panel>\n\n\t<vector-map-selection></vector-map-selection>\n\n\t<alignment-helper></alignment-helper>\n\n\t<automatic-alignment></automatic-alignment>\n\n\t<generate-and-save-bundle-xml></generate-and-save-bundle-xml>\n\n\t<save-discard-confirmation\n\t\t\tmodal-id="confirmUnsavedDatasetAlignment"\n\t\t\ton-save-callback="vm.save()"\n\t\t\ton-discard-callback="vm.discardChanges()"\n\t\t\tdeferred-promise="vm.modalDeferred"\n\t\t\tsubject="{{\'Dataset Alignment\' | translate:\'title\'}}">\n\t</save-discard-confirmation>\n\n</form>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(7)
      , r = n(2);
    n(1538),
    n(613);
    var o = n(613)
      , a = n(327)
      , s = function() {
        function t(t, e, n, i) {
            this.AutomaticAlignmentService = t,
            this.MessageReportingService = e,
            this.gettextCatalog = n,
            this.AlignmentService = i,
            this.data = new o.AutomaticAlignmentState
        }
        return t.$inject = ["AutomaticAlignmentService", "MessageReportingService", "gettextCatalog", "AlignmentService"],
        t.prototype.fetch = function() {
            var t = this;
            this.data.target = this.AlignmentService.primary,
            this.data.source ? this.AutomaticAlignmentService.fetch(this.data).catch((function(e) {
                if (e instanceof a.Job) {
                    var n, i = ("" + e.lastOutput).trim();
                    n = e.success ? t.gettextCatalog.getString("Alignment succeeded but the server response cannot be parsed: {{response}}", {
                        response: i
                    }) : t.gettextCatalog.getString("Alignment failed: {{reason}}", {
                        reason: i
                    }),
                    t.MessageReportingService.showMessage(t.gettextCatalog.getString("Automatic Alignment Failed", void 0, "title"), n)
                }
            }
            )) : this.MessageReportingService.showMessage(this.gettextCatalog.getString("Select Source Dataset", void 0, "title"), this.gettextCatalog.getString("Please select the source dataset from the drop down menu. The reference dataset is automatically selected as the target dataset."))
        }
        ,
        t.prototype.apply = function() {
            this.AutomaticAlignmentService.apply(this.data)
        }
        ,
        t.prototype.undo = function() {
            this.AutomaticAlignmentService.undo(this.data)
        }
        ,
        t.prototype.getDatasets = function() {
            var t = this
              , e = i.values(this.AlignmentService.selectedDatasets);
            return i.filter(e, (function(e) {
                return e.id !== t.AlignmentService.primary.id && e.canWrite && !e.locked
            }
            ))
        }
        ,
        t.prototype.getSelectedDatasetsWithoutNormals = function() {
            return [this.data.source, this.AlignmentService.primary].filter((function(t) {
                return null != t && !t.hasNormals
            }
            )).map((function(t) {
                return t.name
            }
            )).join(", ")
        }
        ,
        t.prototype.canAutoAlign = function() {
            return void 0 !== this.data.source && void 0 !== this.AlignmentService.primary && (this.data.source.hasNormals && this.AlignmentService.primary.hasNormals)
        }
        ,
        t
    }();
    e.AutomaticAlignmentController = s;
    var c = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DatasetAlignment/AutomaticAlignment/AutomaticAlignment.html",
            this.controller = s,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.AutomaticAlignmentDirective = c,
    r.module("IVWebApp").directive("automaticAlignment", c.factory())
}
, function(t, e) {
    var n = "DatasetAlignment/AutomaticAlignment/AutomaticAlignment.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="panel panel-default">\n\t<div class="panel-heading" data-toggle="collapse" data-target="#collapseAutoAlignment">\n\t\t<i class="collapse-expand-chevron"></i>\n\t\t<span class="panel-title" translate translate-context="title">\n\t\t\tAutomatic Alignment\n\t\t</span>\n\t</div>\n\t<div id="collapseAutoAlignment" class="panel-collapse collapse in">\n\t\t<div class="panel-body">\n\t\t\t<div class="margin-bottom-small">\n\t\t\t\t<span translate\n\t\t\t\t      translate-html-params-icon="\'<i class=\' + \'\\\'glyphicon glyphicon-star\\\'\' + \'></i>\'">\n\t\t\t\t\tAutomatic fine-alignment transforms the dataset selected below in order to bring it into alignment with the reference dataset ({{icon}}). The datasets have to be coarsely aligned by hand and the dataset to align has to be unlocked.\n\t\t\t\t</span>\n\t\t\t</div>\n\n\t\t\t<div class="form">\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<label class="control-label" for="autoAlignDataset" translate>\n\t\t\t\t\t\tDataset\n\t\t\t\t\t</label>\n\t\t\t\t\t<select id="autoAlignDataset"\n\t\t\t\t\t        class="form-control"\n\t\t\t\t\t        title="{{\'Dataset to be aligned\'|translate}}"\n\t\t\t\t\t        ng-disabled="vm.data.inProgress"\n\t\t\t\t\t        ng-model="vm.data.source"\n\t\t\t\t\t        ng-options="dataset as dataset.title for dataset in vm.getDatasets() | orderBy: \'title\'"\n\t\t\t\t\t        ng-change="vm.data.result = undefined;">\n\t\t\t\t\t</select>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="alert alert-warning" ng-if="vm.getSelectedDatasetsWithoutNormals().length !== 0">\n\t\t\t\t\t<span translate translate-params-datasets="vm.getSelectedDatasetsWithoutNormals()">\n\t\t\t\t\t\tAutomatic alignment cannot be performed because the following datasets do not have normals: {{datasets}}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t\t<div class="checkbox">\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<input type="checkbox" ng-model="vm.data.verticalAlignment"\n\t\t\t\t\t\t       ng-disabled="vm.data.inProgress">\n\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\tAlign vertically\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="form-group" ng-if="vm.data.result">\n\t\t\t\t\t<label translate>\n\t\t\t\t\t\tResult\n\t\t\t\t\t</label>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<span ng-if="!vm.data.inProgress">\n\t\t\t\t\t\t\t<strong ng-if="vm.data.result.converged" translate>\n\t\t\t\t\t\t\t\tThe automatic alignment has completed successfully.\n\t\t\t\t\t\t\t</strong>\n\t\t\t\t\t\t\t<span ng-if="!vm.data.result.converged" translate>\n\t\t\t\t\t\t\t\tThe automatic alignment has failed, please make sure there is sufficient overlap.\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<br>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span translate\n\t\t\t\t\t\t      translate-params-inliers="vm.data.result.inliers"\n\t\t\t\t\t\t      translate-params-iterations="vm.data.result.iterations"\n\t\t\t\t\t\t      translate-params-error="(vm.data.result.inliers>0 ? vm.data.result.sad*1000/vm.data.result.inliers : 0)|number:0">\n\t\t\t\t\t\t\t{{inliers}} points used, mean error {{error}} mm after {{iterations}} iterations.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div>\n\t\t\t\t\t<div class="text-right">\n\t\t\t\t\t\t<default-button\n\t\t\t\t\t\t\t\tng-click="vm.fetch()"\n\t\t\t\t\t\t\t\tng-disabled="vm.data.inProgress || !vm.canAutoAlign()"\n\t\t\t\t\t\t\t\tin-progress="vm.data.inProgress">\n\t\t\t\t\t\t\t<span translate>Align</span>\n\t\t\t\t\t\t</default-button>\n\n\t\t\t\t\t\t<default-button ng-show="vm.data.result && !vm.data.applied"\n\t\t\t\t\t\t                ng-click="vm.apply()"\n\t\t\t\t\t\t                in-progress="vm.data.inProgress">\n\t\t\t\t\t\t\t<span translate>Apply</span>\n\t\t\t\t\t\t</default-button>\n\n\t\t\t\t\t\t<default-button ng-show="vm.data.result && vm.data.applied"\n\t\t\t\t\t\t                ng-disabled="vm.data.inProgress"\n\t\t\t\t\t\t                ng-click="vm.undo()">\n\t\t\t\t\t\t\t<span translate>Undo</span>\n\t\t\t\t\t\t</default-button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var i = n(2);
        n(1540);
        var r = n(8)
          , o = n(107)
          , a = function() {
            function e() {}
            return e.prototype.saveChanges = function() {
                var t = this;
                this.isSaveInProgress = !0,
                this.setBackgroundDismiss(!1),
                this.onSaveCallback().then((function() {
                    t.isSaveInProgress = !1,
                    t.resolvePromiseAndHideDialog()
                }
                )).catch((function(e) {
                    t.isSaveInProgress = !1,
                    t.rejectPromiseAndHideDialog(e)
                }
                ))
            }
            ,
            e.prototype.discardChanges = function() {
                var t = this;
                this.isDiscardInProgress = !0,
                this.setBackgroundDismiss(!1),
                o.promiseFinally(this.onDiscardCallback(), (function() {
                    t.isDiscardInProgress = !1,
                    t.resolvePromiseAndHideDialog()
                }
                )).catch(r.handleWarning)
            }
            ,
            e.prototype.rejectPromiseAndHideDialog = function(t) {
                void 0 === t && (t = ""),
                this.deferredPromise.reject(t),
                this.hideDialog()
            }
            ,
            e.prototype.resolvePromiseAndHideDialog = function() {
                this.deferredPromise.resolve(),
                this.hideDialog()
            }
            ,
            e.prototype.hideDialog = function() {
                this.isDiscardInProgress || this.isSaveInProgress || (this.setBackgroundDismiss(!0),
                t("#" + this.modalId).modal("hide"))
            }
            ,
            e.prototype.setBackgroundDismiss = function(e) {
                var n = t("#" + this.modalId);
                n.data("bs.modal").options.keyboard = e,
                n.data("bs.modal").options.backdrop = !!e || "static",
                e ? n.data("bs.modal").escape() : n.off("keydown.dismiss.bs.modal")
            }
            ,
            e
        }();
        e.SaveDiscardConfirmationController = a;
        var s = function() {
            function t() {
                this.restrict = "E",
                this.templateUrl = "Core/SaveDiscardConfirmation/SaveDiscardConfirmation.html",
                this.controller = a,
                this.controllerAs = "vm",
                this.scope = !0,
                this.bindToController = {
                    modalId: "@",
                    onSaveCallback: "&",
                    onDiscardCallback: "&",
                    subject: "@",
                    deferredPromise: "="
                }
            }
            return t.factory = function() {
                return function() {
                    return new t
                }
            }
            ,
            t
        }();
        e.SaveDiscardConfirmationDirective = s,
        i.module("IVWebApp").directive("saveDiscardConfirmation", s.factory())
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    var i = "Core/SaveDiscardConfirmation/SaveDiscardConfirmation.html"
      , r = '<modal>\n\t<div class="modal fade" id="{{vm.modalId}}" tabindex="-1" role="dialog"\n\t     aria-labelledby="{{vm.modalId}}" aria-hidden="true">\n\t\t<div class="modal-dialog" role="document">\n\t\t\t<div class="modal-content">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}"\n\t\t\t\t\t     ng-click = "vm.hideDialog()">\n\t\t\t\t\t</img>\n\t\t\t\t\t<h4 translate translate-context="title">Save Changes Before Leaving</h4>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<span translate translate-params-subject="vm.subject" translate-context="Message displayed when leaving any mode with unsaved changes">You have unsaved changes to the {{subject}}.</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t<cancel-button class="pull-left"\n\t\t\t\t\t               data-dismiss="modal"\n\t\t\t\t\t               ng-disabled="vm.isDiscardInProgress || vm.isSaveInProgress"></cancel-button>\n\t\t\t\t\t<discard-button ng-click="vm.discardChanges()"\n\t\t\t\t\t                in-progress="vm.isDiscardInProgress"\n\t\t\t\t\t                ng-disabled="vm.isDiscardInProgress || vm.isSaveInProgress">\n\t\t\t\t\t</discard-button>\n\n\t\t\t\t\t<save-button ng-click="vm.saveChanges()"\n\t\t\t\t\t             in-progress="vm.isSaveInProgress"\n\t\t\t\t\t             ng-disabled="vm.isDiscardInProgress || vm.isSaveInProgress">\n\t\t\t\t\t</save-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1542),
    n(1543);
    var r = n(4)
      , o = n(344)
      , a = n(8)
      , s = n(52)
      , c = n(105)
      , l = n(68);
    n(1545),
    n(648);
    var u = function() {
        function t(t, e, n, i, r, o, s, l) {
            var u = this;
            this.ModeService = t,
            this.SiteModelEditorService = e,
            this.DatasetRepository = n,
            this.NavGraphEditingService = i,
            this.DownloadPointCloudService = r,
            this.GeoTransformationService = o,
            this.ViewService = s,
            this.AlignmentService = l,
            this.switchDownloadPointCloudToMap = function() {
                u.isDownloadPointCloudMode() && u.DownloadPointCloudService.switchToMap()
            }
            ,
            this.switchDownloadPointCloudToPerspective = function() {
                u.isDownloadPointCloudMode() && u.DownloadPointCloudService.switchToPerspective()
            }
            ,
            this.switchToMapView = function() {
                u.ViewService.mainView.getCursorLayer().setVisibility(!1),
                u.ViewService.showSecondaryView = !1,
                u.ViewService.mainView.switchViewMode(c.SceneViewMode.Map).catch(a.handleWarning)
            }
            ,
            this.switchToPerspectiveView = function() {
                u.ViewService.mainView.getCursorLayer().setVisibility(!0),
                u.ViewService.showSecondaryView = !0,
                u.ViewService.mainView.switchViewMode(c.SceneViewMode.Perspective).catch(a.handleWarning)
            }
            ,
            l.selectedDatasetsChanged.connect((function() {
                return u.selectedDatasetsChanged()
            }
            )),
            l.zoomedToDatasets.connect((function(t, e) {
                return u.zoomToDatasets(t, e)
            }
            )),
            this.DatasetRepository.entityCreated.connect((function(t) {
                return u.updateDatasetsPointCloudVisibility.apply(u, t)
            }
            )),
            this.DatasetRepository.entityChanged.connect((function(t) {
                return u.updateDatasetsPointCloudVisibility(t)
            }
            )),
            this.pathDrawingDelegate = this.NavGraphEditingService.navGraphPathDrawingDelegate
        }
        return t.$inject = ["ModeService", "SiteModelEditorService", "DatasetRepository", "NavGraphEditingService", "DownloadPointCloudService", "GeoTransformationService", "ViewService", "AlignmentService"],
        t.prototype.isDatasetAlignmentOrSiteModelEditorMode = function() {
            return this.ModeService.isDatasetAlignmentMode() || this.ModeService.isSiteModelEditorMode()
        }
        ,
        t.prototype.isNavGraphEditorMode = function() {
            return this.ModeService.isNavGraphEditorMode()
        }
        ,
        t.prototype.isPathDrawingModeActive = function() {
            return this.NavGraphEditingService.navGraphEditingMode === l.NavGraphEditingConstantsModes.PATH_DRAWING
        }
        ,
        t.prototype.isPathDrawingPossible = function() {
            return this.pathDrawingDelegate.isPathDrawingPossible()
        }
        ,
        t.prototype.startPathDrawing = function() {
            this.pathDrawingDelegate.startPathDrawing()
        }
        ,
        t.prototype.finishPathDrawing = function() {
            this.pathDrawingDelegate.removeTemporaryNodesAndEdges(),
            this.pathDrawingDelegate.finishPathDrawing()
        }
        ,
        t.prototype.startNodeEditing = function() {
            this.pathDrawingDelegate.removeTemporaryNodesAndEdges(),
            this.pathDrawingDelegate.startNodeEditing()
        }
        ,
        t.prototype.isDownloadPointCloudMode = function() {
            return this.ModeService.isDownloadPointCloudMode()
        }
        ,
        t.prototype.isMeasurementsMode = function() {
            return this.ModeService.isMeasurementsMode()
        }
        ,
        t.prototype.isSwitchDownloadPointCloudToMapDisabled = function() {
            return this.DownloadPointCloudService.isViewModeSwitchDisabled()
        }
        ,
        t.prototype.isMapViewActive = function() {
            return this.ViewService.getCurrentMainViewMode() === c.SceneViewMode.Map
        }
        ,
        t.prototype.isPerspectiveViewActive = function() {
            return this.ViewService.getCurrentMainViewMode() === c.SceneViewMode.Perspective
        }
        ,
        t.prototype.areMultipleViewportsActive = function() {
            return this.ViewService.mainView.areMultipleViewportsActive()
        }
        ,
        t.prototype.isInFourViewportMode = function() {
            return this.ViewService.mainView.isInFourViewportMode()
        }
        ,
        t.prototype.isObfuscatorVisible = function() {
            return this.ViewService.mainView.areMultipleViewportsActive() && this.ModeService.isSiteModelEditorMode() && (this.SiteModelEditorService.isDrawingMode() || this.SiteModelEditorService.isCuttingMode())
        }
        ,
        t.prototype.getTopViewport = function() {
            return this.getViewportByName(s.SplitViewportName.TOP_VIEW)
        }
        ,
        t.prototype.toggleTopViewport = function() {
            this.toggleViewportByName(s.SplitViewportName.TOP_VIEW)
        }
        ,
        t.prototype.getSideViewportTwo = function() {
            return this.getViewportByName(s.SplitViewportName.NORTH_SOUTH_VIEW)
        }
        ,
        t.prototype.toggleSideViewportTwo = function() {
            this.toggleViewportByName(s.SplitViewportName.NORTH_SOUTH_VIEW)
        }
        ,
        t.prototype.getSideViewportOne = function() {
            return this.getViewportByName(s.SplitViewportName.EAST_WEST_VIEW)
        }
        ,
        t.prototype.toggleSideViewportOne = function() {
            this.toggleViewportByName(s.SplitViewportName.EAST_WEST_VIEW)
        }
        ,
        t.prototype.getViewportByName = function(t) {
            return this.ViewService.mainView.getViewportByName(t)
        }
        ,
        t.prototype.toggleViewportByName = function(t) {
            this.ViewService.mainView.toggleViewportFullscreen(this.getViewportByName(t))
        }
        ,
        t.prototype.updateDatasetsPointCloudVisibility = function() {
            for (var t = [], e = 0; e < arguments.length; e++)
                t[e] = arguments[e];
            for (var n = 0, i = t; n < i.length; n++) {
                var r = i[n];
                r.pcColorDefinition_ = r.pointCloudVisible ? o.ColorUtilities.getColor(r.color) : void 0
            }
        }
        ,
        t.prototype.zoomToDatasets = function(t, e) {
            if (0 !== t.length) {
                for (var n = new r.Vector3, i = new r.Box3, o = 0, a = t; o < a.length; o++) {
                    var s = a[o];
                    this.AlignmentService.checkDatasetAndSelection(s),
                    n.add(s.getCenter()),
                    i.union(s.getLocalBoundingBox())
                }
                n.divideScalar(t.length);
                var c = new r.Sphere;
                this.ViewService.mainView.centerOn(n, e ? 2 * i.getBoundingSphere(c).radius : void 0)
            }
        }
        ,
        t.prototype.selectedDatasetsChanged = function() {
            var t = this;
            (this.ModeService.isDatasetAlignmentMode() || this.ModeService.isSiteModelEditorMode()) && this.DatasetRepository.findAll().then((function(e) {
                return t.updateDatasetsPointCloudVisibility.apply(t, e)
            }
            )).catch(a.handleWarning)
        }
        ,
        t
    }();
    e.PointCloudViewportController = u;
    var d = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "PointCloud/PointCloudViewport.html",
            this.controller = u,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.PointCloudViewportDirective = d,
    i.module("IVWebApp").directive("pointCloudViewport", d.factory())
}
, function(t, e) {
    var n = "PointCloud/PointCloudViewport.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div ng-if="vm.isDatasetAlignmentOrSiteModelEditorMode()">\n\t<div class="viewport-label viewport-label-top-left clickable"\n\t     ng-if="vm.getTopViewport().active"\n\t     ng-click="vm.toggleTopViewport()"\n\t     ng-style="{\'background-color\': vm.getTopViewport().info.getColorCSS()}">\n\t\t<span class="fa fa-camera"></span> {{vm.getTopViewport().info.caption | translate}}\n\t</div>\n\t<div class="viewport-label viewport-label-bottom-left clickable"\n\t     ng-if="vm.getSideViewportTwo().active"\n\t     ng-click="vm.toggleSideViewportTwo()"\n\t     ng-style="{\'background-color\': vm.getSideViewportTwo().info.getColorCSS()}">\n\t\t<span class="fa fa-camera"></span> {{vm.getSideViewportTwo().info.caption | translate}}\n\t</div>\n\t<div class="viewport-label viewport-label-bottom-right clickable"\n\t     ng-if="vm.getSideViewportOne().active"\n\t     ng-click="vm.toggleSideViewportOne()"\n\t     ng-style="{\'background-color\': vm.getSideViewportOne().info.getColorCSS()}">\n\t\t<span class="fa fa-camera"></span> {{vm.getSideViewportOne().info.caption | translate}}\n\t</div>\n\n\t<div ng-if="vm.isObfuscatorVisible()">\n\t\t<div class="viewport-obfuscator bottom-viewports-obfuscator"></div>\n\t\t<div class="viewport-obfuscator top-right-viewport-obfuscator"></div>\n\t</div>\n\n\t<div ng-if="vm.areMultipleViewportsActive() && vm.isInFourViewportMode()">\n\t\t<div class="viewport-separator horizontal-viewport-separator">\n\t\t</div>\n\t\t<div class="viewport-separator vertical-viewport-separator">\n\t\t</div>\n\n\t</div>\n</div>\n<div ng-if="vm.isMeasurementsMode()">\n\t<viewport-resizer-component>\n\n\t</viewport-resizer-component>\n</div>\n\n<div class="view-switcher__holder" ng-if="vm.isNavGraphEditorMode()">\n\t<div class="btn-group padding-left" ng-if="vm.isPathDrawingPossible()">\n\t\t<save-button class="view-switcher__btn"\n\t\t             ng-click="vm.finishPathDrawing()"\n\t\t             title="{{\'Complete the Path\' | translate}}">\n\t\t\t<span translate>Done</span>\n\t\t</save-button>\n\t</div>\n\n\t<div class="btn-group padding-left">\n\t\t<default-button\n\t\t\t\tclass="view-switcher__btn"\n\t\t\t\tng-class="{\'active\': !vm.isPathDrawingModeActive()}"\n\t\t\t\tng-click="vm.startNodeEditing()"\n\t\t\t\ttitle="{{\'Node Editing Tool\' | translate}}">\n\t\t\t<i class="fa fa-mouse-pointer mode-icon"></i>\n\t\t</default-button>\n\n\t\t<default-button\n\t\t\t\tclass="view-switcher__btn"\n\t\t\t\tng-class="{\'active\': vm.isPathDrawingModeActive()}"\n\t\t\t\tng-click="vm.startPathDrawing()"\n\t\t\t\tng-disabled="vm.isPerspectiveViewActive()"\n\t\t\t\ttitle="{{\'Path Drawing Tool\' | translate}}">\n\t\t\t\x3c!------TODO:Remove after upgrade to font awesome v5 (IV-2643)----\x3e\n\t\t\t<div class="pen-icon">\n\t\t\t<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="pen-nib"\n\t\t\t     class="mode-icon svg-inline--fa fa-pen-nib fa-w-16" role="img"\n\t\t\t     xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">\n\t\t\t\t<path fill="currentColor"\n\t\t\t\t      d="M136.6 138.79a64.003 64.003 0 0 0-43.31 41.35L0 460l14.69 14.69L164.8 324.58c-2.99-6.26-4.8-13.18-4.8-20.58 0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-7.4 0-14.32-1.81-20.58-4.8L37.31 497.31 52 512l279.86-93.29a64.003 64.003 0 0 0 41.35-43.31L416 224 288 96l-151.4 42.79zm361.34-64.62l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91z">\n\t\t\t\t</path>\n\t\t\t</svg>\n\t\t\t</div>\n\t\t</default-button>\n\t</div>\n\t<view-mode-toggle\n\t\tswitch-to-map="vm.switchToMapView"\n\t\tswitch-to-perspective="vm.switchToPerspectiveView"\n\t\tswitch-to-perspective-disabled="vm.isPathDrawingModeActive()">\n\t</view-mode-toggle>\n</div>\n\n<div class="view-switcher__holder" ng-if="vm.isDownloadPointCloudMode()">\n\t<view-mode-toggle\n\t\t\tswitch-to-map="vm.switchDownloadPointCloudToMap"\n\t\t\tswitch-to-perspective="vm.switchDownloadPointCloudToPerspective"\n\t\t\tswitch-to-map-disabled="vm.isSwitchDownloadPointCloudToMapDisabled()">\n\t</view-mode-toggle>\n</div>\n\n<div class="view-switcher__holder" ng-if="vm.isMeasurementsMode()">\n\t<magnification-toggle>\n\t</magnification-toggle>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1544);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "point-cloud-viewport .viewport-label{height:25px;position:absolute;opacity:.6;padding:2px 5px}point-cloud-viewport .viewport-label-top-left{top:18px;left:65px}point-cloud-viewport .viewport-label-bottom-left{bottom:10px;left:10px}point-cloud-viewport .viewport-label-bottom-right{bottom:10px;right:10px}point-cloud-viewport .viewport-separator{background-color:#a9a9a9;position:absolute}point-cloud-viewport .horizontal-viewport-separator{top:50%;width:100%;height:3px}point-cloud-viewport .vertical-viewport-separator{left:calc(50% - 3px);width:3px;height:100%}point-cloud-viewport .viewport-obfuscator{background-color:rgba(0,0,0,.5);position:absolute}point-cloud-viewport .bottom-viewports-obfuscator{top:50%;width:100%;height:50%}point-cloud-viewport .top-right-viewport-obfuscator{left:calc(50% - 1px);width:50%;height:50%}point-cloud-viewport .view-switcher__holder{position:absolute;top:15px;right:10px}point-cloud-viewport .view-switcher__btn{border-color:#adadad}point-cloud-viewport .view-switcher__btn:active,point-cloud-viewport .view-switcher__btn:focus{background-color:#fff}point-cloud-viewport .warning-button{position:absolute;bottom:24px;right:24px}point-cloud-viewport .mode-icon{width:20px;height:20px}point-cloud-viewport .pen-icon{transform:rotate(90deg);display:flex}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(105);
    n(1546);
    var o = function() {
        function t(t) {
            this.ViewService = t
        }
        return t.$inject = ["ViewService"],
        t.prototype.isSwitchToMapDisabled = function() {
            return void 0 !== this.switchToMapDisabled && this.switchToMapDisabled
        }
        ,
        t.prototype.isSwitchToPerspectiveDisabled = function() {
            return void 0 !== this.switchToPerspectiveDisabled && this.switchToPerspectiveDisabled
        }
        ,
        t.prototype.isMapViewActive = function() {
            return this.ViewService.mainView.viewMode === r.SceneViewMode.Map
        }
        ,
        t.prototype.isPerspectiveViewActive = function() {
            return this.ViewService.mainView.viewMode === r.SceneViewMode.Perspective
        }
        ,
        t
    }();
    e.ViewModeToggleController = o;
    var a = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "PointCloud/ViewModeToggle/ViewModeToggle.html",
            this.controller = o,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                switchToMap: "<",
                switchToPerspective: "<",
                switchToMapDisabled: "<?",
                switchToPerspectiveDisabled: "<?"
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.ViewModeToggleDirective = a,
    i.module("IVWebApp").directive("viewModeToggle", a.factory())
}
, function(t, e) {
    var n = "PointCloud/ViewModeToggle/ViewModeToggle.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="btn-group padding-left">\n\t<default-button\n\t\t\tclass="view-switcher__btn"\n\t\t\tng-class="{\'active\': vm.isMapViewActive()}"\n\t\t\tng-click="vm.switchToMap()"\n\t\t\tng-disabled="vm.isSwitchToMapDisabled()"\n\t\t\ttitle="{{\'Switch to 2D View\' | translate}}">\n\t\t<span translate>2D</span>\n\t</default-button>\n\t<default-button\n\t\t\tclass="view-switcher__btn"\n\t\t\tng-class="{\'active\': vm.isPerspectiveViewActive()}"\n\t\t\tng-click="vm.switchToPerspective()"\n\t\t\tng-disabled="vm.isSwitchToPerspectiveDisabled()"\n\t\t\ttitle="{{\'Switch to 3D View\' | translate}}">\n\t\t<span translate>3D</span>\n\t</default-button>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1548),
    n(1549),
    n(1551),
    n(1555),
    n(431),
    n(430),
    n(182);
    var r = n(68)
      , o = n(4)
      , a = n(105)
      , s = n(8)
      , c = function() {
        function t(t, e, n, i, r, o, a, s) {
            var c = this;
            this.ViewService = t,
            this.NavGraphService = e,
            this.NavGraphEditingService = n,
            this.ToolboxMenuService = i,
            this.TransformService = r,
            this.$scope = o,
            this.hotkeys = a,
            this.gettext = s,
            this.DONE_BUTTON = this.gettext("Done", void 0, "The DONE button"),
            this.ESC_KEY = this.gettext("ESC", void 0, "The ESC keyboard key"),
            this.bindHotkeys(),
            this.NavGraphEditingService.navGraphEditorOpened.connect((function() {
                return c.bindHotkeys()
            }
            )),
            this.NavGraphEditingService.navGraphEditorClosed.connect((function() {
                return c.unbindHotkeys()
            }
            ))
        }
        return t.$inject = ["ViewService", "NavGraphService", "NavGraphEditingService", "ToolboxMenuService", "TransformService", "$scope", "hotkeys", "gettext"],
        Object.defineProperty(t.prototype, "bundles", {
            get: function() {
                return this.NavGraphService.bundles
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "currentBundleId", {
            get: function() {
                return this.NavGraphService.currentBundleId
            },
            set: function(t) {
                this.NavGraphService.currentBundleId = t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "straightenXNodes", {
            get: function() {
                return this.NavGraphEditingService.straightenXNodes
            },
            set: function(t) {
                this.NavGraphEditingService.straightenXNodes = t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "error", {
            get: function() {
                return this.NavGraphEditingService.error
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "modalDeferred", {
            get: function() {
                return this.NavGraphEditingService.modalDeferred
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.bindHotkeys = function() {
            var t = this
              , e = this.NavGraphEditingService.navGraphPathDrawingDelegate;
            this.hotkeys.bindTo(this.$scope).add({
                combo: ["G", "g"],
                description: this.gettext("Create/delete edge between selected nodes"),
                callback: function() {
                    t.NavGraphEditingService.toggleEdge()
                }
            }).add({
                combo: ["backspace", "del"],
                description: this.gettext("Delete selected node"),
                callback: function() {
                    e.isPathDrawingPossible() ? (e.removeTemporaryNodesAndEdges(),
                    e.undoLastPathDrawOperation()) : t.NavGraphEditingService.deleteNode(r.NavGraphEditingConstantsSelectedNode.CURRENT)
                }
            }).add({
                combo: "esc",
                description: this.gettext("Finish current path"),
                callback: function() {
                    e.isPathDrawingPossible() && (e.removeTemporaryNodesAndEdges(),
                    e.finishPathDrawing())
                }
            }).add({
                combo: ["T", "t"],
                description: this.gettext("Toggle between path drawing mode and node editing mode"),
                callback: function() {
                    t.ViewService.getCurrentMainViewMode() !== a.SceneViewMode.Perspective && (t.NavGraphEditingService.navGraphEditingMode === r.NavGraphEditingConstantsModes.NODE_EDITING ? e.startPathDrawing() : (e.removeTemporaryNodesAndEdges(),
                    e.startNodeEditing()))
                }
            }).add({
                combo: ["M", "m"],
                description: this.gettext("Switch view modes"),
                callback: function() {
                    if (t.NavGraphEditingService.navGraphEditingMode === r.NavGraphEditingConstantsModes.NODE_EDITING) {
                        var e = t.ViewService.getCurrentMainViewMode() === a.SceneViewMode.Map;
                        t.ViewService.mainView.getCursorLayer().setVisibility(e),
                        t.ViewService.showSecondaryView = e,
                        t.ViewService.mainView.switchViewMode(e ? a.SceneViewMode.Perspective : a.SceneViewMode.Map).catch(s.handleWarning)
                    }
                }
            })
        }
        ,
        t.prototype.unbindHotkeys = function() {
            this.hotkeys.del(["G", "g", "backspace", "del", "esc", "t", "T", "m", "M"])
        }
        ,
        t.prototype.openEdgeAttributeEditor = function() {
            this.openAttributeEditor(!1, r.NavGraphEditingConstantsSelectedNode.CURRENT, r.NavGraphEditingConstantsSelectedNode.PREVIOUS)
        }
        ,
        t.prototype.openCurrentNodeAttributeEditor = function() {
            this.openAttributeEditor(!0, r.NavGraphEditingConstantsSelectedNode.CURRENT)
        }
        ,
        t.prototype.openAttributeEditor = function(t, e, n) {
            this.NavGraphEditingService.initAttributeEditor(t, e, n),
            i.element(document.querySelector("#editAttributes")).modal("show")
        }
        ,
        t.prototype.isEdgeExisting = function() {
            return this.NavGraphEditingService.doesEdgeExist() === r.NavGraphEditingConstantsEdgeExists.YES
        }
        ,
        t.prototype.isEdgeNotExisting = function() {
            return this.NavGraphEditingService.doesEdgeExist() === r.NavGraphEditingConstantsEdgeExists.NO
        }
        ,
        t.prototype.deleteCurrentNode = function() {
            this.NavGraphEditingService.deleteNode(r.NavGraphEditingConstantsSelectedNode.CURRENT)
        }
        ,
        t.prototype.createEdge = function() {
            this.NavGraphEditingService.createEdge()
        }
        ,
        t.prototype.deleteEdge = function() {
            this.NavGraphEditingService.deleteEdge()
        }
        ,
        Object.defineProperty(t.prototype, "currentNodeZ", {
            get: function() {
                var t = this.NavGraphEditingService.selectedNodes[r.NavGraphEditingConstantsSelectedNode.CURRENT].mesh.position.z;
                return this.TransformService.localToGlobal.transform(new o.Vector3(0,0,t)).z
            },
            set: function(t) {
                this.NavGraphEditingService.setSelectedNodeZ(r.NavGraphEditingConstantsSelectedNode.CURRENT, this.TransformService.globalToLocal.transform(new o.Vector3(0,0,t)).z)
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.addMultipleEdges = function() {
            this.NavGraphEditingService.addMultipleEdges()
        }
        ,
        t.prototype.straightenNodes = function() {
            this.NavGraphEditingService.straightenNodes()
        }
        ,
        t.prototype.isHistoryEmpty = function() {
            return 0 === this.getHistoryOperations().length
        }
        ,
        t.prototype.getHistoryOperations = function() {
            return this.NavGraphEditingService.editingHistory.history
        }
        ,
        t.prototype.selectEditingOperationResource = function(t) {
            this.NavGraphEditingService.selectEditingOperationResource(t)
        }
        ,
        t.prototype.undo = function() {
            this.NavGraphEditingService.undo()
        }
        ,
        t.prototype.saveAndStopEditingNavGraph = function() {
            return this.NavGraphEditingService.saveAndStopEditingNavGraph()
        }
        ,
        t.prototype.isSavingInProgress = function() {
            return this.NavGraphEditingService.isSavingInProgress()
        }
        ,
        t.prototype.discardChanges = function() {
            return this.NavGraphEditingService.discardChanges()
        }
        ,
        t.prototype.saveChanges = function() {
            return this.saveAndStopEditingNavGraph()
        }
        ,
        t.prototype.isAnyBundleVisible = function() {
            return this.NavGraphService.isAnyBundle()
        }
        ,
        t.prototype.isNavGraphPresent = function() {
            return this.NavGraphService.isNavGraphPresent()
        }
        ,
        t.prototype.isNavGraphDataUnavailable = function() {
            return this.NavGraphService.isAnyBundle() && !this.isNavGraphPresent() && this.isHistoryEmpty()
        }
        ,
        t.prototype.isNavGraphEditable = function() {
            return this.NavGraphService.getCurrentBundle() && this.NavGraphService.getCurrentBundle().canWrite
        }
        ,
        t.prototype.isNavGraphNotEditable = function() {
            var t = this.NavGraphService.getCurrentBundle();
            return this.NavGraphService.isAnyBundle() && t && !t.canWrite
        }
        ,
        t.prototype.isNavGraphEditingEnabled = function() {
            var t = this.NavGraphService.getCurrentBundle();
            return t && t.canWrite && (this.NavGraphService.isNavGraphPresent() || !this.isHistoryEmpty())
        }
        ,
        t.prototype.hasSelectedNodesToEdit = function() {
            return this.NavGraphEditingService.selectedNodes.length > 0
        }
        ,
        t.prototype.hasMaxOneSelectedNodeToEdit = function() {
            return this.NavGraphEditingService.selectedNodes.length <= 1
        }
        ,
        t.prototype.isPathDrawingMode = function() {
            return this.NavGraphEditingService.navGraphEditingMode === r.NavGraphEditingConstantsModes.PATH_DRAWING
        }
        ,
        t.prototype.isNodeEditingMode = function() {
            return this.NavGraphEditingService.navGraphEditingMode === r.NavGraphEditingConstantsModes.NODE_EDITING
        }
        ,
        t.prototype.isPathDrawingPossible = function() {
            return this.NavGraphEditingService.isPathDrawingPossible()
        }
        ,
        t.prototype.is2DMapView = function() {
            return this.ViewService.getCurrentMainViewMode() === a.SceneViewMode.Map
        }
        ,
        t
    }();
    e.NavGraphEditorController = c;
    var l = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "NavGraphUI/NavGraphEditor.html",
            this.controller = c,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.NavGraphEditorDirective = l,
    i.module("IVWebApp").directive("navGraphEditor", l.factory())
}
, function(t, e) {
    var n = "NavGraphUI/NavGraphEditor.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div id="nav-graph-toolbox">\n\n\t<modal>\n\t\t<nav-graph-attributes-editor></nav-graph-attributes-editor>\n\t</modal>\n\n\t<div class="panel panel-default panel-sticky-header no-border no-shadow">\n\n\t\t<div class="panel-heading" ng-if="vm.isNavGraphEditable()">\n\t\t\t<div class="btn-toolbar float-right">\n\t\t\t\t<save-button ng-click="vm.saveAndStopEditingNavGraph()"\n\t\t\t\t             in-progress="vm.isSavingInProgress()"\n\t\t\t\t             ng-disabled="vm.isPathDrawingPossible()"\n\t\t\t\t             title="{{\'Save all operations\' | translate}}">\n\t\t\t\t</save-button>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class="panel-body">\n\t\t\t<label translate>\n\t\t\t\tDataset bundle\n\t\t\t</label>\n\n\t\t\t\x3c!--No bundle visible to the user--\x3e\n\t\t\t<div ng-if="!vm.isAnyBundleVisible()" translate>\n\t\t\t\tNo dataset bundle available\n\t\t\t</div>\n\n\t\t\t\x3c!-- Which bundle do we want to add the changes in this session to --\x3e\n\t\t\t<div class="form-group" ng-if="vm.isAnyBundleVisible()">\n\t\t\t\t<select ng-options="bundle.id as bundle.displayName for bundle in vm.bundles"\n\t\t\t\t        ng-model="vm.currentBundleId"></select>\n\t\t\t</div>\n\n\t\t\t\x3c!-- No editing permission for navgraph --\x3e\n\t\t\t<div ng-if="vm.isNavGraphNotEditable()" translate>\n\t\t\t\tNo permission to edit this navigation graph\n\t\t\t</div>\n\n\t\t\t\x3c!-- Navgraph data unavailable --\x3e\n\t\t\t<div class="row" ng-if="vm.isNavGraphDataUnavailable()">\n\t\t\t\t<hr>\n\t\t\t\t<div class="col-xs-12" translate>\n\t\t\t\t\tNo navigation graph\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\x3c!--Navgraph editing--\x3e\n\t\t\t<div class="form" ng-if="vm.isNavGraphEditingEnabled()">\n\t\t\t\t<hr>\n\t\t\t\t\t<div class="collapsed"\n\t\t\t\t\t     data-toggle="collapse"\n\t\t\t\t\t     data-target="#pathDrawToolHelp"\n\t\t\t\t\t     ng-if="vm.isPathDrawingMode()">\n\t\t\t\t\t\t<i class="collapse-expand-chevron"></i>\n\t\t\t\t\t\t<strong translate>\n\t\t\t\t\t\t\tPath Tool Help\n\t\t\t\t\t\t</strong>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div id="pathDrawToolHelp" class="panel-collapse collapse in" ng-if="vm.isPathDrawingMode()">\n\t\t\t\t\t\t<div class="panel-body">\n\t\t\t\t\t\t\t<p translate translate-context="path draw tool help">\n\t\t\t\t\t\t\t\tUse this tool to draw a multi-node path, or to connect buildings and outside POIs.</p>\n\n\t\t\t\t\t\t\t<p translate translate-context="path draw tool help">\n\t\t\t\t\t\t\t\tStart a path by selecting a node, then click to create new nodes connected by straight edges. Press backspace to delete the last node.</p>\n\n\t\t\t\t\t\t\t<p translate translate-context="path draw tool help" translate-params-done="vm.DONE_BUTTON | translate" translate-params-esc="vm.ESC_KEY | translate">\n\t\t\t\t\t\t\t\tFinish the path by connecting it to an existing node, clicking "{{done}}", or pressing {{esc}}.</p>\n\n\t\t\t\t\t\t\t<p translate translate-context="path draw tool help">\n\t\t\t\t\t\t\t\tTo edit the path, switch to the Node Editing tool.</p>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div ng-if="vm.hasSelectedNodesToEdit() && vm.isNodeEditingMode()">\n\n\t\t\t\t\t<label translate>\n\t\t\t\t\t\tEdit nodes and edges\n\t\t\t\t\t</label>\n\n\t\t\t\t\t\x3c!-- Buttons for deleting, creating edges between nodes and deleting nodes --\x3e\n\t\t\t\t\t<div class="form-group btn-toolbar">\n\t\t\t\t\t\t<div class="btn-group btn-group-margin-bottom">\n\n\t\t\t\t\t\t\t\x3c!-- Button for deleting the recent selected node attributes --\x3e\n\t\t\t\t\t\t\t<button type="button" class="btn btn-default"\n\t\t\t\t\t\t\t        ng-click="vm.deleteCurrentNode()">\n\t\t\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\t\t\tDelete\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<i class="fa fa-stop icon-blue"></i>\n\t\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t\t\x3c!-- Button for editing the recent selected node attributes --\x3e\n\t\t\t\t\t\t\t<button type="button"\n\t\t\t\t\t\t\t        class="btn btn-default"\n\t\t\t\t\t\t\t        ng-click="vm.openCurrentNodeAttributeEditor()">\n\t\t\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\t\t\tEdit\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<i class="fa fa-stop icon-blue"></i>\n\t\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="btn-group btn-group-margin-bottom">\n\n\t\t\t\t\t\t\t\x3c!-- Create edge --\x3e\n\t\t\t\t\t\t\t<button ng-if="vm.isEdgeNotExisting()"\n\t\t\t\t\t\t\t        type="button" class="btn btn-default"\n\t\t\t\t\t\t\t        ng-click="vm.createEdge()"\n\t\t\t\t\t\t\t        translate>\n\t\t\t\t\t\t\t\tCreate edge\n\t\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t\t\x3c!-- Edit edge --\x3e\n\t\t\t\t\t\t\t<button ng-if="vm.isEdgeExisting()"\n\t\t\t\t\t\t\t        type="button" class="btn btn-default"\n\t\t\t\t\t\t\t        ng-click="vm.deleteEdge()" translate>\n\t\t\t\t\t\t\t\tDelete edge\n\t\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t\t\x3c!-- Delete edge --\x3e\n\t\t\t\t\t\t\t<button ng-if="vm.isEdgeExisting()"\n\t\t\t\t\t\t\t        type="button" class="btn btn-default"\n\t\t\t\t\t\t\t        ng-click="vm.openEdgeAttributeEditor()"\n\t\t\t\t\t\t\t        translate>\n\t\t\t\t\t\t\t\tEdit edge\n\t\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<label translate>\n\t\t\t\t\t\tChange node z-level\n\t\t\t\t\t</label>\n\t\t\t\t\t\x3c!-- Buttons for changing the altitude of nodes, note: we can only control the x\n\t\t\t\t\t     and y of a node by dragging --\x3e\n\t\t\t\t\t<div class="z-axis-controls__holder">\n\n\t\t\t\t\t\t\x3c!-- the recent selected node --\x3e\n\t\t\t\t\t\t<unit-aware-input\n\t\t\t\t\t\t\t\tclass="z-axis-controls__el"\n\t\t\t\t\t\t\t\tng-model="vm.currentNodeZ"\n\t\t\t\t\t\t\t\tfraction-size="2">\n\t\t\t\t\t\t</unit-aware-input>\n\n\t\t\t\t\t</div>\n\t\t\t\t\t<hr>\n\t\t\t\t</div>\n\n\t\t\t\t<div>\n\t\t\t\t\t\x3c!-- Advanced features --\x3e\n\t\t\t\t\t<div class="collapsed"\n\t\t\t\t\t     data-toggle="collapse"\n\t\t\t\t\t     data-target="#navGraphEditorAdvance"\n\t\t\t\t\t\t  ng-if="vm.isNodeEditingMode()">\n\t\t\t\t\t\t<i class="collapse-expand-chevron"></i>\n\t\t\t\t\t\t<strong translate>\n\t\t\t\t\t\t\tAdvanced\n\t\t\t\t\t\t</strong>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div id="navGraphEditorAdvance" class="panel-collapse collapse" ng-if="vm.isNodeEditingMode()">\n\t\t\t\t\t\t<div class="panel-body">\n\t\t\t\t\t\t\t<div class="row"\n\t\t\t\t\t\t\t     ng-class="{\'form-group\': !vm.isHistoryEmpty() || vm.error}">\n\t\t\t\t\t\t\t\t<div class="row input-group">\n\t\t\t\t\t\t\t\t\t<div class="col-md-7">\n\t\t\t\t\t\t\t\t\t\t<small translate>\n\t\t\t\t\t\t\t\t\t\t\tFor use with the Navigation SDK, the graph should have edges of approximately 1 meter length.\n\t\t\t\t\t\t\t\t\t\t</small>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div class="col-md-4">\n\t\t\t\t\t\t\t\t\t\t<button class="btn btn-default" type="button"\n\t\t\t\t\t\t\t\t\t\t        ng-click="vm.addMultipleEdges()"\n\t\t\t\t\t\t\t\t\t\t        title="{{\'Select two nodes to add approx. 1 meter edges between them.\' | translate}}"\n\t\t\t\t\t\t\t\t\t\t        ng-disabled="vm.hasMaxOneSelectedNodeToEdit()">\n\t\t\t\t\t\t\t\t\t\t<span translate translate-context="title">\n\t\t\t\t\t\t\t\t\t\t\tAuto-Split Edge\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="row input-group mt-20">\n\t\t\t\t\t\t\t\t\t<div class="col-md-7">\n\t\t\t\t\t\t\t\t\t\t<small translate>\n\t\t\t\t\t\t\t\t\t\t\tStraighten the last n edges.\n\t\t\t\t\t\t\t\t\t\t</small>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div class="col-md-4">\n\t\t\t\t\t\t\t\t\t\t<div class="row">\n\t\t\t\t\t\t\t\t\t\t\t<div class="col-md-4">\n\n\t\t\t\t\t\t\t\t\t\t\t\t<button class="btn btn-default" type="button"\n\t\t\t\t\t\t\t\t\t\t\t\t        ng-click="vm.straightenNodes()"\n\t\t\t\t\t\t\t\t\t\t\t\t        title="{{\'Straighten the last n edges\' | translate}}"\n\t\t\t\t\t\t\t\t\t\t\t\t        ng-disabled="vm.hasMaxOneSelectedNodeToEdit()">\n\t\t\t\t\t\t\t\t\t\t\t\t\t----\n\t\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<div class="col-md-8">\n\t\t\t\t\t\t\t\t\t\t\t\t<input type="number"\n\t\t\t\t\t\t\t\t\t\t\t\t       class="form-control input-advanced"\n\t\t\t\t\t\t\t\t\t\t\t\t       ng-model="vm.straightenXNodes"\n\t\t\t\t\t\t\t\t\t\t\t\t       ng-disabled="vm.hasMaxOneSelectedNodeToEdit()">\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!--Errors--\x3e\n\t\t\t\t\t<div ng-show="vm.error"\n\t\t\t\t\t     ng-class="{\'form-group\': !vm.isHistoryEmpty()}">\n\t\t\t\t\t\t<span class="text-danger">\n\t\t\t\t\t\t\t{{vm.error.text}}: {{vm.error.statusText}} ({{vm.error.status}})\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<div ng-show="!!vm.error.details">\n\t\t\t\t\t\t\t{{vm.error.details}}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\x3c!-- History --\x3e\n\t\t\t\t\t<div ng-hide="vm.isHistoryEmpty()">\n\t\t\t\t\t\t<hr>\n\t\t\t\t\t\t<label translate>\n\t\t\t\t\t\t\tHistory\n\t\t\t\t\t\t</label>\n\n\t\t\t\t\t\t<undo-button ng-click="vm.undo()"\n\t\t\t\t\t\t             ng-disabled="vm.isHistoryEmpty() || vm.isSavingInProgress() || vm.isPathDrawingPossible()"\n\t\t\t\t\t\t             title="{{\'Undo last operation\' | translate}}"></undo-button>\n\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\x3c!-- Show the nodes in a reverse order, latest operation on top by\n\t\t\t\t\t\t\t     reversing the list --\x3e\n\t\t\t\t\t\t\t<div class="list-group-item navgraph-history-item clickable long-title"\n\t\t\t\t\t\t\t     ng-repeat="editingOperation in vm.getHistoryOperations() | reverse"\n\t\t\t\t\t\t\t     ng-click="vm.selectEditingOperationResource(editingOperation)"\n\t\t\t\t\t\t\t     title="{{editingOperation.getTitle()}}">\n\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\x3c!-- note: already translated in controller --\x3e\n\t\t\t\t\t\t\t\t\t{{editingOperation.getDescription()}}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\x3c!--Appearance--\x3e\n\t\t\t<div ng-if="vm.isNavGraphPresent() && !vm.is2DMapView()">\n\t\t\t\t<hr>\n\t\t\t\t<nav-graph-editor-appearance></nav-graph-editor-appearance>\n\t\t\t</div>\n\t\t\t<hr>\n\t\t</div>\n\t</div>\n\n\t<save-discard-confirmation\n\t\t\tmodal-id="confirmUnsavedNavGraph"\n\t\t\ton-discard-callback="vm.discardChanges()"\n\t\t\ton-save-callback="vm.saveChanges()"\n\t\t\tdeferred-promise="vm.modalDeferred"\n\t\t\tsubject="{{\'Navigation Graph\' | translate:\'title\'}}">\n\t</save-discard-confirmation>\n\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1550);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "nav-graph-editor .btn-group-margin-bottom{margin-bottom:4px}nav-graph-editor .input-advanced{max-height:32px}nav-graph-editor .icon-blue{color:#00f}nav-graph-editor .icon-violet{color:#8080ff}nav-graph-editor .z-axis-controls__holder{display:flex;justify-content:space-between;margin-bottom:15px}nav-graph-editor .z-axis-controls__el{flex:0 1 38%}nav-graph-editor .advanced-controls__holder{display:flex;margin-bottom:5px}nav-graph-editor .advanced-controls__el{flex:0 1 38%;margin-right:1em}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1552),
    n(1553);
    var r = n(68)
      , o = n(20)
      , a = function() {
        function t(t, e) {
            this.NavGraphService = t,
            this.NavGraphEditingService = e
        }
        return t.$inject = ["NavGraphService", "NavGraphEditingService"],
        Object.defineProperty(t.prototype, "selectedKey", {
            get: function() {
                return this.NavGraphEditingService.selectedElement.selectedKey
            },
            set: function(t) {
                this.NavGraphEditingService.selectedElement.selectedKey = t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "selectedValue", {
            get: function() {
                return this.NavGraphEditingService.selectedElement.selectedValue
            },
            set: function(t) {
                this.NavGraphEditingService.selectedElement.selectedValue = t
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "attributesMap", {
            get: function() {
                return this.NavGraphEditingService.selectedElement.attributesMap
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.isEditingNode = function() {
            return this.NavGraphEditingService.selectedElement.type === r.NavGraphEditingConstantsType.NODE
        }
        ,
        t.prototype.isEditingEdge = function() {
            return this.NavGraphEditingService.selectedElement.type === r.NavGraphEditingConstantsType.EDGE
        }
        ,
        t.prototype.addAttribute = function() {
            o.isBlank(this.selectedKey) || o.isBlank(this.selectedValue) || (this.NavGraphEditingService.selectedElement.attributesMap[this.selectedKey] = this.selectedValue,
            this.clearAttributeFields())
        }
        ,
        t.prototype.deleteAttribute = function(t) {
            delete this.NavGraphEditingService.selectedElement.attributesMap[t]
        }
        ,
        t.prototype.clearAttributeFields = function() {
            this.selectedKey = void 0,
            this.selectedValue = void 0
        }
        ,
        t.prototype.getAttributesCount = function() {
            return Object.keys(this.NavGraphEditingService.selectedElement.attributesMap).length
        }
        ,
        t.prototype.exitAttributesEditor = function() {
            this.NavGraphEditingService.clearSelectedElement()
        }
        ,
        t.prototype.saveAndExitAttributesEditor = function() {
            this.NavGraphEditingService.saveAttributes(),
            this.exitAttributesEditor()
        }
        ,
        t
    }();
    e.NavGraphAttributesEditorController = a;
    var s = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "NavGraphUI/NavGraphAttributesEditor.html",
            this.controller = a,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.NavGraphAttributesEditorDirective = s,
    i.module("IVWebApp").directive("navGraphAttributesEditor", s.factory())
}
, function(t, e) {
    var n = "NavGraphUI/NavGraphAttributesEditor.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="modal fade" id="editAttributes"\n     tabindex="-1" role="dialog" data-backdrop="static"\n     aria-labelledby="editAttributes" aria-hidden="false">\n\n\t<div id="attributeEditor" class="modal-dialog">\n\t\t<div class="modal-content">\n\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 id="editAttributesLabel">\n\t\t\t\t\t<span ng-if="vm.isEditingNode()" translate>\n\t\t\t\t\t\tEdit node attributes\n\t\t\t\t\t</span>\n\t\t\t\t\t<span ng-if="vm.isEditingEdge()" translate>\n\t\t\t\t\t\tEdit edge attributes\n\t\t\t\t\t</span>\n\t\t\t\t</h4>\n\t\t\t</div>\n\n\t\t\t<div class="modal-body">\n\t\t\t\t<form id="attributeModalForm" class="form-horizontal" role="form">\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<label class="col-sm-3 control-label" translate\n\t\t\t\t\t\t       translate-context="key as in key-value pair">\n\t\t\t\t\t\t\tKey\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<div class="col-sm-9">\n\t\t\t\t\t\t\t<input type="text" class="form-control"\n\t\t\t\t\t\t\t       ng-model="vm.selectedKey">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<label class="col-sm-3 control-label" translate>\n\t\t\t\t\t\t\tValue\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<div class="col-sm-9">\n\t\t\t\t\t\t\t<input type="text" class="form-control"\n\t\t\t\t\t\t\t       ng-model="vm.selectedValue">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t<div class="col-sm-12">\n\t\t\t\t\t\t\t<button type="button" class="btn btn-default"\n\t\t\t\t\t\t\t        ng-click="vm.clearAttributeFields()"\n\t\t\t\t\t\t\t        translate translate-context="verb">\n\t\t\t\t\t\t\t\tClear\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<button type="button" class="btn btn-primary"\n\t\t\t\t\t\t\t        ng-click="vm.addAttribute()"\n\t\t\t\t\t\t\t        translate>\n\t\t\t\t\t\t\t\tAdd\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</form>\n\n\t\t\t\t<table class="table"\n\t\t\t\t       ng-if="vm.getAttributesCount()">\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td class="bold-title" translate\n\t\t\t\t\t\t    translate-context="key as in key-value pair">\n\t\t\t\t\t\t\tKey\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td class="bold-title" translate>\n\t\t\t\t\t\t\tValue\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td class="bold-title" translate>\n\t\t\t\t\t\t\tDelete\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr ng-repeat="(key, value) in vm.attributesMap">\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t{{key}}\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t{{value}}\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t<span class="glyphicon glyphicon-trash clickable"\n\t\t\t\t\t\t\t      ng-click="vm.deleteAttribute(key)"></span>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>\n\n\t\t\t</div>\n\n\t\t\t<div class="modal-footer">\n\t\t\t\t<cancel-button data-dismiss="modal"\n\t\t\t\t               ng-click="vm.exitAttributesEditor()"></cancel-button>\n\t\t\t\t<ok-button data-dismiss="modal"\n\t\t\t\t           ng-click="vm.saveAndExitAttributesEditor()"></ok-button>\n\t\t\t</div>\n\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1554);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "nav-graph-attributes-editor .col-sm-12{text-align:right}nav-graph-attributes-editor table{text-align:center;margin-bottom:0}nav-graph-attributes-editor table tr{border-bottom:1px solid #e6e6e6}nav-graph-attributes-editor table tr td{width:33%}nav-graph-attributes-editor table tr .bold-title{font-weight:700}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1556);
    var r = n(7)
      , o = function() {
        function t(t) {
            this.NavGraphService = t
        }
        return t.$inject = ["NavGraphService"],
        Object.defineProperty(t.prototype, "thresh", {
            get: function() {
                return this.NavGraphService.thresh
            },
            set: function(t) {
                var e = r.clone(this.NavGraphService.thresh);
                this.NavGraphService.thresh = t,
                t !== e && this.NavGraphService.constantsChanged.emit()
            },
            enumerable: !0,
            configurable: !0
        }),
        Object.defineProperty(t.prototype, "threshZ", {
            get: function() {
                return this.NavGraphService.threshZ
            },
            set: function(t) {
                var e = r.clone(this.NavGraphService.threshZ);
                this.NavGraphService.threshZ = t,
                t !== e && this.NavGraphService.constantsChanged.emit()
            },
            enumerable: !0,
            configurable: !0
        }),
        t
    }();
    e.NavGraphEditorAppearanceController = o;
    var a = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "NavGraphUI/NavGraphEditorAppearance.html",
            this.controller = o,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.NavGraphEditorAppearanceDirective = a,
    i.module("IVWebApp").directive("navGraphEditorAppearance", a.factory())
}
, function(t, e) {
    var n = "NavGraphUI/NavGraphEditorAppearance.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="collapsed"\n     data-toggle="collapse"\n     data-target="#nav-graph-editor-appearance">\n\t<i class="collapse-expand-chevron"></i>\n\t<strong translate translate-context="title">\n\t\tAppearance\n\t</strong>\n</div>\n<div id="nav-graph-editor-appearance" class="panel-collapse collapse">\n\t<div class="panel-body">\n\t\t<div class="row margin-top-small">\n\t\t\t<div class="col-sm-3 align-text" translate>\n\t\t\t\tVisibility radius\n\t\t\t</div>\n\t\t\t<div class="col-sm-6 align-slider">\n\t\t\t\t<div ui-slider\n\t\t\t\t     min="5"\n\t\t\t\t     max="50"\n\t\t\t\t     step="1"\n\t\t\t\t     ng-model="vm.thresh"></div>\n\t\t\t</div>\n\t\t\t<div class="col-sm-3 align-textbox">\n\t\t\t\t<input type="text" class="form-control"\n\t\t\t\t       ng-model="vm.thresh"/>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class="row">\n\t\t\t<div class="col-sm-3 align-text" translate>\n\t\t\t\tVertical visibility\n\t\t\t</div>\n\t\t\t<div class="col-sm-6 align-slider">\n\t\t\t\t<div ui-slider\n\t\t\t\t     min="1"\n\t\t\t\t     max="20"\n\t\t\t\t     step="1"\n\t\t\t\t     ng-model="vm.threshZ"></div>\n\t\t\t</div>\n\t\t\t<div class="col-sm-3 align-textbox">\n\t\t\t\t<input type="text" class="form-control"\n\t\t\t\t       ng-model="vm.threshZ"/>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    n.r(e),
    function(t) {
        var e = n(2)
          , i = n(4)
          , r = n(7)
          , o = (n(177),
        n(202),
        n(223))
          , a = n(25)
          , s = n(52)
          , c = n(107)
          , l = n(8);
        function u(t, e) {
            var n;
            if ("undefined" == typeof Symbol || null == t[Symbol.iterator]) {
                if (Array.isArray(t) || (n = function(t, e) {
                    if (!t)
                        return;
                    if ("string" == typeof t)
                        return d(t, e);
                    var n = Object.prototype.toString.call(t).slice(8, -1);
                    "Object" === n && t.constructor && (n = t.constructor.name);
                    if ("Map" === n || "Set" === n)
                        return Array.from(t);
                    if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                        return d(t, e)
                }(t)) || e && t && "number" == typeof t.length) {
                    n && (t = n);
                    var i = 0
                      , r = function() {};
                    return {
                        s: r,
                        n: function() {
                            return i >= t.length ? {
                                done: !0
                            } : {
                                done: !1,
                                value: t[i++]
                            }
                        },
                        e: function(t) {
                            throw t
                        },
                        f: r
                    }
                }
                throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
            }
            var o, a = !0, s = !1;
            return {
                s: function() {
                    n = t[Symbol.iterator]()
                },
                n: function() {
                    var t = n.next();
                    return a = t.done,
                    t
                },
                e: function(t) {
                    s = !0,
                    o = t
                },
                f: function() {
                    try {
                        a || null == n.return || n.return()
                    } finally {
                        if (s)
                            throw o
                    }
                }
            }
        }
        function d(t, e) {
            (null == e || e > t.length) && (e = t.length);
            for (var n = 0, i = new Array(e); n < e; n++)
                i[n] = t[n];
            return i
        }
        IndoorViewerWebApp.service("PolygonLayerFactory", ["gettextCatalog", "ConfigService", "VectorMapService", "$rootScope", "GeoTransformationService", "ModeService", "PoiTypeService", "FloorChangerService", "MessageReportingService", "IV", "PointCloudMenuService", "VectorLayerRepository", "VectorEntityRepository", "ViewService", function(n, d, p, h, f, m, g, v, y, b, w, S, x, M) {
            function E(n, h, b) {
                var w, E = this, C = !1, A = !1, T = [], O = null, _ = !1, P = new i.Object3D;
                P.name = "PolygonLayer",
                P.matrixAutoUpdate = !1;
                var I = {};
                b = b || {},
                E.loadEntities = void 0 === b.loadEntities || b.loadEntities,
                E.manualVisibility = void 0 !== b.manualVisibility && b.manualVisibility;
                var k = {}
                  , D = {}
                  , R = {
                    materials_solid: {},
                    materials_edge: {}
                };
                E.load = function(t) {
                    A || C && !t || (A = !0,
                    Object(c.promiseFinally)(Promise.all([d.initialized, f.initialized, g.initialized, p.initialized]).then((function() {
                        T = x.data,
                        L(),
                        ot(),
                        N(),
                        at()
                    }
                    )), (function() {
                        return A = !1
                    }
                    )).catch(l.handleWarning))
                }
                ,
                E.refresh = function() {
                    L(),
                    N()
                }
                ;
                var L = function() {
                    P.children.forEach((function(t) {
                        t.remove.apply(t, t.children)
                    }
                    )),
                    P.remove.apply(P, P.children)
                };
                E.unload = function() {
                    L(),
                    T = [],
                    P.children = [],
                    k = {},
                    C = !1
                }
                ;
                var N = function() {
                    0 !== T.length && (P.children = [],
                    k = {},
                    T.forEach((function(t) {
                        t.type === o.VectorEntityType.POLYGON ? tt(t) : t.type === o.VectorEntityType.LINE && Q(t)
                    }
                    )),
                    K(),
                    Z(),
                    S.data.forEach((function(t) {
                        P.add(q(t)),
                        X(t)
                    }
                    )),
                    "Map" === n.name && E.updateVisibilityBasedOnObserverHeight(),
                    _ = !0,
                    C = !0,
                    n.invalidateScene())
                }
                  , j = function(t) {
                    var e = M.isMapPrimaryView() ? F() : [];
                    0 === e.length && (e = t.image ? [t.image.globalFloorLocation.z] : []),
                    O = e,
                    U()
                }
                  , V = function(t) {
                    var e = [];
                    M.isMapPrimaryView() ? e = F() : t.currentFloors.length > 0 && (e = [t.currentFloors[0].getGlobalZMin()]),
                    O = e,
                    U()
                }
                  , F = function() {
                    var t = v.currentFloors;
                    return Object(r.map)(t, (function(t) {
                        return t.getGlobalZMin()
                    }
                    ))
                }
                  , U = function() {
                    P.parent || h.add(P),
                    G(),
                    n.invalidateScene()
                }
                  , B = function(t, e) {
                    var n = void 0 !== t.vectorLayerId ? t.vectorLayerId : e;
                    return function(t, e) {
                        return e = e || t,
                        void 0 === R.materials_solid[e] && (R.materials_solid[e] = new i.MeshBasicMaterial({
                            color: t,
                            transparent: !0,
                            depthWrite: !1,
                            wireframe: !1
                        })),
                        R.materials_solid[e]
                    }(t.color, n)
                }
                  , z = function(t) {
                    var n;
                    if (!((n = Object(e.isNumber)(t) ? t : t.id)in k)) {
                        var r = new i.Object3D;
                        r.matrixAutoUpdate = !1,
                        r.name = t.name,
                        k[n] = {
                            scene_group: r,
                            polygons: []
                        }
                    }
                    return k[n]
                };
                this.updateVisibilityBasedOnObserverHeight = function() {
                    var t = M.mainView.getImage();
                    O = t ? [t.globalFloorLocation.z] : void 0,
                    G()
                }
                ;
                var G = function() {
                    S.data.forEach((function(t) {
                        W(t)
                    }
                    )),
                    _ = !1
                };
                function H(t) {
                    if (void 0 !== t)
                        return f.toLocalHeight(t)
                }
                var W = function t(e) {
                    var n = H(e.zMin)
                      , i = H(e.zMax);
                    if (!E.manualVisibility || (q(e).visible = e.vectorMap.manualVisibility,
                    e.vectorMap.manualVisibility)) {
                        var o = !1;
                        if (O && O.length > 0) {
                            var a, s = u(O);
                            try {
                                for (s.s(); !(a = s.n()).done; ) {
                                    var c = a.value;
                                    null != n && null != i && Object(r.inRange)(c, n, i) && (o = !0)
                                }
                            } catch (t) {
                                s.e(t)
                            } finally {
                                s.f()
                            }
                        } else
                            o = !0;
                        var l, d = !(!v.getCurrentFloorName() || e.vectorMap.name != v.getCurrentFloorName() && 0 != e.vectorMap.name.indexOf("_")), p = null == e.visible_style_ || e.visible_style_;
                        l = E.manualVisibility ? e.visible && p && e.vectorMap.manualVisibility : e.visible && p && (o || d);
                        for (var h = 1 / (w * w), f = z(e).polygons, m = f.length, g = 0; g < m; ++g)
                            for (var y = f[g], b = !y.area || void 0 === h || y.area >= h, S = y.meshes.length, x = 0; x < S; ++x) {
                                var M = y.meshes[x];
                                M.visible = (void 0 === M.material || 0 != M.material.opacity && l) && b
                            }
                        e.derived_layer && (e.derived_layer.visible = e.visible,
                        t(e.derived_layer))
                    }
                }
                  , q = function(t) {
                    return z(t).scene_group
                }
                  , X = function t(e, n) {
                    var i = z(e).scene_group
                      , r = H(e.zMin)
                      , o = H(e.zMax)
                      , a = e.drawingOrder / 1e4;
                    return "MapScene" !== h.name ? i.position.z = n ? n + a : a : i.position.z = null != r ? r + a : 0 + a,
                    i.renderOrder = -1e3,
                    i.updateMatrix(),
                    e.derived_layer && (e.derived_layer.zMin = r,
                    e.derived_layer.zMax = o,
                    e.derived_layer.drawingOrder = e.drawingOrder + 1e-6,
                    t(e.derived_layer, n)),
                    W(e),
                    i
                }
                  , Y = function(t) {
                    if (null != t.vectorLayerId) {
                        var e = z(t.vectorLayerId);
                        t.meshes.forEach((function(t) {
                            e.scene_group.add(t)
                        }
                        )),
                        e.polygons.push(t)
                    }
                }
                  , K = function() {
                    var t, n = Object(e.copy)(D), i = d.getString(a.Configs.LAYERS_POLYGON_VECTOR_MAP_STYLE, "{}"), r = d.validators[a.Configs.LAYERS_POLYGON_VECTOR_MAP_STYLE], o = r.validate(i);
                    return o.valid ? t = JSON.parse(o.cleanedValue) : (t = {},
                    y.showMessage(r.title, o.reason)),
                    !Object(e.equals)(n, t) && (D = t,
                    Z(),
                    !0)
                }
                  , Z = function() {
                    S.data.forEach((function(t) {
                        J(t)
                    }
                    ))
                }
                  , J = function n(r) {
                    var o = {};
                    for (var a in D)
                        if (a && a.length && "#" == a[0]) {
                            var s = new RegExp(a.substring(1),"i");
                            null != r.name.match(s) && Object(e.extend)(o, D[a])
                        }
                    if (r.visible_style_ = void 0,
                    "visible"in o && (r.visible_style_ = 1 == o.visible),
                    "poi_types"in o) {
                        var c = !1;
                        o.poi_types.forEach((function(t) {
                            var e = g.isPoiTypeVisible(t);
                            c = c || void 0 === e || e
                        }
                        )),
                        r.visible_style_ = c
                    }
                    ("color"in o || "solid"in o) && z(r).polygons.forEach((function(t) {
                        "color"in o && (t.color = o.color),
                        "solid"in o && (t.solid = 1 == o.solid),
                        t.meshes.forEach((function(e) {
                            e.material = B(t),
                            e.material.color.set(t.color),
                            e.material.needsUpdate = !0
                        }
                        ))
                    }
                    ));
                    var l = o.zoom_min ? parseFloat(o.zoom_min) : void 0
                      , u = o.zoom_max ? parseFloat(o.zoom_max) : void 0;
                    if (z(r).polygons.forEach((function(t) {
                        var e = B(t);
                        e.userData || (e.userData = {}),
                        e.userData.zoom_min = l,
                        e.userData.zoom_max = u
                    }
                    )),
                    "outline"in o && !0 === o.outline && r.id >= 0) {
                        var d = t.extend({}, r);
                        d.name += ".outline",
                        d.id *= -1,
                        d.drawingOrder += 1e-6;
                        var p = z(d);
                        if (!p.polygons.length) {
                            r.derived_layer = d;
                            var h = {};
                            z(r).polygons.forEach((function(e) {
                                var n = t.extend({}, e);
                                n.solid = !1,
                                n.meshes = void 0,
                                n.id *= -1,
                                n.vectorLayerId *= -1,
                                n.color = new i.Color(n.color),
                                n.color.getHSL(h),
                                h.l += h.l > .5 ? -.4 : .4,
                                n.color.setHSL(h.h, h.s, h.l),
                                tt(n),
                                p.polygons.push(n)
                            }
                            )),
                            P.add(q(d)),
                            X(d)
                        }
                    }
                    W(r),
                    r.derived_layer && n(r.derived_layer)
                }
                  , Q = function(t) {
                    var e = performance.now();
                    t.meshes = $(t);
                    var n = performance.now() - e;
                    t.vectorLayerId in I || (I[t.vectorLayerId] = 0),
                    I[t.vectorLayerId] += n,
                    Y(t)
                }
                  , $ = function(t) {
                    var e = t.vectorEntityLocal
                      , n = new i.Line(e,B(t));
                    return n.matrixAutoUpdate = !1,
                    n.userData.raycastable = !1,
                    [n]
                }
                  , tt = function(t) {
                    var e = performance.now();
                    et(t);
                    var n = performance.now() - e;
                    t.vectorLayerId in I || (I[t.vectorLayerId] = 0),
                    I[t.vectorLayerId] += n,
                    Y(t)
                }
                  , et = function(t) {
                    t.meshes = nt(t)
                }
                  , nt = function(t) {
                    var e = B(t)
                      , n = t.vectorEntityLocal
                      , r = new i.Mesh(n,e);
                    return r.position.z = 0,
                    r.updateMatrix(),
                    r.matrixAutoUpdate = !1,
                    r.userData.raycastable = !1,
                    [r]
                };
                p.visibilityUpdateEvent.connect((function() {
                    null !== S.data && (S.data.forEach((function(t) {
                        X(t)
                    }
                    )),
                    G(),
                    n.invalidateScene())
                }
                )),
                p.vectorLayerRemoveEvent.connect((function(t) {
                    var e = q(t);
                    P.remove(e),
                    n.invalidateScene()
                }
                )),
                p.vectorMapRemoveEvent.connect((function(t) {
                    var e, i = u(t.vectorLayers);
                    try {
                        for (i.s(); !(e = i.n()).done; ) {
                            var r = e.value
                              , o = q(r);
                            P.remove(o),
                            n.invalidateScene()
                        }
                    } catch (t) {
                        i.e(t)
                    } finally {
                        i.f()
                    }
                }
                )),
                g.poiTypesChanged.connect((function() {
                    C && (Z(),
                    S.data.forEach((function(t) {
                        X(t)
                    }
                    )))
                }
                )),
                d.updated.connect((function() {
                    if (C && K()) {
                        var t, e = u(S.data);
                        try {
                            for (e.s(); !(t = e.n()).done; ) {
                                var n = t.value;
                                X(n)
                            }
                        } catch (t) {
                            e.e(t)
                        } finally {
                            e.f()
                        }
                    }
                }
                )),
                this.onBeforeRenderViewport = function(t) {
                    if (C) {
                        var e = t.getCamera()
                          , n = t.getWidth() / (e.right - e.left);
                        isNaN(n) ? P.visible = !1 : (_ |= w !== n,
                        w = n,
                        m.isSiteModelEditorMode() || m.isDatasetAlignmentMode() ? (P.visible = t.name === s.SplitViewportName.TOP_VIEW,
                        rt(R.materials_solid, .3),
                        rt(R.materials_edge, .3),
                        S.data.forEach((function(t) {
                            X(t, e.position.z - e.far)
                        }
                        ))) : (P.visible = "MapScene" === h.name,
                        _ |= it(R.materials_solid, n),
                        _ |= it(R.materials_edge, n, 4),
                        P.visible && "background-color"in D && (t.bgColor = new i.Color(D["background-color"]))),
                        _ && P.visible && G())
                    }
                }
                ;
                var it = function(t, e, n, i) {
                    var r = !1;
                    for (var o in t) {
                        var a = t[o]
                          , s = a.userData && a.userData.zoom_min || n
                          , c = a.userData && a.userData.zoom_max || i
                          , l = Math.min(void 0 !== c ? Math.min(1, 1 - (e - c) / c) : 1, void 0 !== s ? Math.max(0, (e - s) / s) : 1);
                        r |= 0 == a.opacity && l > 0 || a.opacity > 0 && 0 == l,
                        a.opacity = l
                    }
                    return r
                }
                  , rt = function(t, e) {
                    for (var n in t)
                        t[n].opacity = e
                };
                function ot() {
                    I = {}
                }
                var at = function() {
                    var t = {};
                    S.data.forEach((function(e) {
                        t[e.id] = e
                    }
                    ));
                    var e = 0
                      , n = Object.keys(I).sort((function(t, e) {
                        return I[t] - I[e]
                    }
                    ));
                    for (var i in n) {
                        var r = n[i];
                        if ("null" !== r) {
                            e++ || console.log("Polygon triangulation times (sorted in ascending order):");
                            var o = t[r < 0 ? -r : r]
                              , a = r < 0 ? " (outlines)" : "";
                            console.log(o.vectorMap.name + " / " + o.name + a + ": " + I[r].toFixed(1) + " ms")
                        }
                    }
                    ot()
                };
                M.onTransitionStart.connect(j),
                v.onFloorChange.connect(V),
                p.vectorMapsFetched.connect((function() {
                    E.loadEntities && E.load(!0)
                }
                )),
                x.transformLocationAction.connect((function() {
                    return E.refresh()
                }
                )),
                p.manualVisibilityChanged.connect((function() {
                    _ = !0,
                    n.invalidateScene()
                }
                ))
            }
            return {
                create: function(t, e, n) {
                    return new E(t,e,n)
                }
            }
        }
        ])
    }
    .call(this, n(19))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1559),
    n(1560),
    n(614),
    n(1567),
    n(1569);
    var r = function() {
        function t(t, e, n) {
            this.VectorMapService = t,
            this.VectorMapRepository = e,
            this.VectorLayerRepository = n,
            this.vectorMaps = e.data,
            this.vectorLayers = n.data
        }
        return t.$inject = ["VectorMapService", "VectorMapRepository", "VectorLayerRepository"],
        t.prototype.closeEditor = function() {
            for (var t = 0, e = this.vectorMaps; t < e.length; t++) {
                e[t].editing = !1
            }
        }
        ,
        t
    }();
    e.VectorMapEditorController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "VectorMapUI/VectorMapEditor.html",
            this.controller = r,
            this.controllerAs = "vm"
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.VectorMapEditorDirective = o,
    i.module("IVWebApp").directive("vectorMapEditor", o.factory())
}
, function(t, e) {
    var n = "VectorMapUI/VectorMapEditor.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<script type="text/ng-template" id="crs-popup.html">\n\t<a tabindex="-1">\n\t\t<div ng-bind-html="match.model.name + \', \' + match.model.description | typeaheadHighlight:query"></div>\n\t</a>\n<\/script>\n\n<div id="vector-map-editor">\n\n\t\x3c!-- Vector map editing panel --\x3e\n\t<div class="panel panel-default panel-sticky-header no-margin no-border no-shadow">\n\t\t<div class="panel-heading">\n\t\t\t<vector-map-toolbar></vector-map-toolbar>\n\t\t</div>\n\n\t\t<div class="panel-body">\n\t\t\t\x3c!--No vector maps--\x3e\n\t\t\t<div class="alert alert-info form-group" ng-if="vm.vectorMaps.length == 0" translate>\n\t\t\t\tNo vector layers are present in the database yet.\n\t\t\t</div>\n\t\t\t\x3c!--Vector map list--\x3e\n\t\t\t<vector-map-list vector-maps="vm.vectorMaps"></vector-map-list>\n\t\t</div>\n\t</div>\n\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1561);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "#vector-map-editor>.panel>.panel-body{padding:0}#vector-map-editor .list-group{margin:0 5px;cursor:default}#vector-map-editor .list-group-item{padding:0 .2em;border:0;margin-bottom:0}#vector-map-editor .list-group-item permission-editor>.form-group{margin-top:10px;margin-bottom:0}#vector-map-editor .list-group-item .panel-body>.list-group .row>div{padding-left:10px;padding-right:10px}#vector-map-editor .list-group-item .name{overflow-x:hidden}#vector-map-editor .list-group-item input{display:inline-block}#vector-map-editor .list-group-item input.name-input{width:calc(100% - 90px)}#vector-map-editor .list-group-item .selected{color:#fff;background-color:#3398c7}#vector-map-editor .list-group-item .selected .hidden-layers-icon{color:#fff}#vector-map-editor .list-group-item .selected .list-group-item{background-color:#3398c7}#vector-map-editor .list-group-item .row{padding-top:.3em;padding-bottom:.2em;align-items:center}#vector-map-editor .list-group-item .expand-icon{cursor:pointer}#vector-map-editor .list-group-item .map-row{height:50px;padding:5px 10px 5px 0}#vector-map-editor .list-group-item .map-row .height-visibility label{max-height:20px;margin-bottom:0;overflow:hidden}#vector-map-editor .list-group-item .map-row .height-visibility label span{word-break:break-all}#vector-map-editor .list-group-item .map-row.editing{height:auto;padding-top:5px;padding-bottom:5px}#vector-map-editor .list-group-item .map-row.editing .expand-icon{margin-top:19px;cursor:default}#vector-map-editor .list-group-item .map-row .badge{float:right;margin-top:1px}#vector-map-editor .hidden-layers-icon{float:right;margin-top:2px;margin-right:10px;color:#919191}#vector-map-editor .layer-row .badge{position:absolute;right:10px;bottom:1px}#vector-map-editor .edit-button{margin-right:10px}#vector-map-editor .btn-danger{padding:5px 12px}#vector-map-editor .toggle-visibility{padding-left:5px}#vector-map-editor .container{width:auto}", ""]),
    t.exports = e
}
, function(t, e) {
    var n = "VectorMapUI/VectorMapList.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<ul class="list-group">\n\t\x3c!--Maps--\x3e\n\t<vector-map ng-repeat="map in vm.vectorMaps | orderBy: \'name\'" class="list-group-item form-group"\n\t            ng-show="!vm.isAnyEditing() || map.editing"\n\t            map="map"\n\t            parent-controller="vm">\n\t</vector-map>\n</ul>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1564),
    n(1566);
    var r = function() {
        function t() {}
        return t.prototype.isAnyLayerVisible = function(t) {
            return t.vectorLayers.some((function(t) {
                return t.visible
            }
            ))
        }
        ,
        t.prototype.areAnyLayers = function(t) {
            return t.vectorLayers.length > 0
        }
        ,
        t
    }();
    e.VectorMapController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "VectorMapUI/VectorMap.html",
            this.controller = r,
            this.controllerAs = "vm",
            this.scope = {
                map: "=",
                parentController: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.VectorMapDirective = o,
    i.module("IVWebApp").directive("vectorMap", o.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1565);
    var r = function() {};
    e.VectorLayerController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "VectorMapUI/VectorLayer.html",
            this.controller = r,
            this.controllerAs = "vm",
            this.scope = {
                layer: "=",
                parentController: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.VectorLayerDirective = o,
    i.module("IVWebApp").directive("vectorLayer", o.factory())
}
, function(t, e) {
    var n = "VectorMapUI/VectorLayer.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="row layer-row"\n     ng-class="{\'selected\': layer.selected}"\n     ng-click="parentController.toggleLayerSelection(layer); $event.stopPropagation()">\n\n\t<div class="col-xs-11">\n\t\t<div class="data-set-icon thin-border-dark"\n\t\t     ng-style="{\'background-color\': layer.color}"></div>\n\t\t{{ layer.name }}\n\t\t\x3c!--Poly & vertex count badge--\x3e\n\t\t<span class="badge"\n\t\t      title="{{\'Features | Vertices\'|translate}}">\n\t\t\t\t\t\t\t\t{{layer.stats.features}} | {{layer.stats.vertices}}\n\t\t\t\t\t\t\t</span>\n\t</div>\n\t\x3c!--Visibility icon--\x3e\n\t<div class="col-xs-1 toggle-visibility clickable">\n\t\t<span class="glyphicon"\n\t\t      ng-class="layer.visible ? \'glyphicon-eye-open\' : \'glyphicon-eye-close\'"\n\t\t      ng-click="parentController.toggleLayerVisibility(layer); $event.stopPropagation()"></span>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "VectorMapUI/VectorMap.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div ng-class="{\'selected\': map.selected}" class="container row margin-top-small margin-bottom-small">\n\t<div class="row map-row" ng-class="{\'editing\': map.editing}"\n\t     ng-click="parentController.toggleMapSelection(map)">\n\n\t\t<div class="col-xs-1" style="height:100%">\n\t\t\t\x3c!-- chevron icon (expanded or collapsed) --\x3e\n\t\t\t<span class="icon expand-icon glyphicon center-vertical"\n\t\t\t      ng-class="(map.expanded && !map.editing) ? \'glyphicon-chevron-down\' : \'glyphicon-chevron-right\'"\n\t\t\t      ng-click="parentController.toggleMapExpansion(map); $event.stopPropagation()"\n\t\t\t      ng-show="vm.areAnyLayers(map)">\n\t\t</span>\n\t\t\t<i class="fa fa-circle center-vertical"\n\t\t\t   ng-show="!vm.areAnyLayers(map)"\n\t\t\t   aria-hidden="true"></i>\n\t\t</div>\n\n\t\t\x3c!--Info--\x3e\n\t\t<div ng-if="!map.editing" class="col-xs-11 no-padding-left no-padding-right">\n\t\t\t\x3c!--Name--\x3e\n\t\t\t<div class="name col-xs-12">\n\t\t\t\t<strong>{{map.name}}</strong>\n\t\t\t</div>\n\t\t\t<div class="name col-xs-12">\n\t\t\t\t\x3c!--Edit button--\x3e\n\t\t\t\t<span class="fa fa-pencil edit-button no-padding-left clickable" aria-hidden="true"\n\t\t\t\t      ng-show="map.canWrite"\n\t\t\t\t      ng-click="parentController.startEditing(map); $event.stopPropagation()">\n\t\t\t</span>\n\t\t\t\t\x3c!--Jump to the vector map--\x3e\n\t\t\t\t<span class="glyphicon glyphicon-share-alt clickable"\n\t\t\t\t      ng-show="vm.areAnyLayers(map)"\n\t\t\t\t      ng-click="parentController.jumpToMap(map); $event.stopPropagation()"\n\t\t\t\t      title="{{\'Jump to map\'|translate}}">\n\t\t\t</span>\n\t\t\t\t\x3c!-- Poly & vertex count badge --\x3e\n\t\t\t\t<span class="badge" title="{{\'Features | Vertices\'|translate}}">\n\t\t\t\t{{map.stats.features}} | {{map.stats.vertices}}\n\t\t\t</span>\n\t\t\t\t\x3c!--Hidden layers warning icon--\x3e\n\t\t\t\t<span class="glyphicon glyphicon-eye-close hidden-layers-icon"\n\t\t\t\t      ng-show="vm.areAnyLayers(map) && !vm.isAnyLayerVisible(map)"\n\t\t\t\t      title="{{\'All layers are hidden\'|translate}}">\n\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\n\t\t\x3c!--Editing--\x3e\n\t\t<div ng-if="map.editing" class="col-xs-11">\n\t\t\t\x3c!-- Input edit --\x3e\n\t\t\t<input class="name-input form-control form-group"\n\t\t\t       ng-model="parentController.model.name"\n\t\t\t       ng-if="map.editing"\n\t\t\t       press-key=\'{ "enter" : "parentController.acceptEditing(map)", "esc" : "parentController.cancelEditing(map)" }\'\n\t\t\t       init-focus\n\t\t\t       keep-focus>\n\t\t\t\x3c!--Accept editing--\x3e\n\t\t\t<button type="button"\n\t\t\t        class="btn btn-default"\n\t\t\t        ng-click="parentController.acceptEditing(map); $event.stopPropagation()">\n\t\t\t\t<span class="fa fa-check" aria-hidden="true"></span>\n\t\t\t</button>\n\t\t\t\x3c!--Cancel editing--\x3e\n\t\t\t<button type="button"\n\t\t\t        class="btn btn-default"\n\t\t\t        ng-click="parentController.cancelEditing(map); $event.stopPropagation()">\n\t\t\t\t<span class="fa fa-times" aria-hidden="true"></span>\n\t\t\t</button>\n\n\t\t\t\x3c!--Z min and max inputs--\x3e\n\t\t\t<div class="no-padding-right height-visibility">\n\t\t\t\t<div class="col-xs-6 form-group no-padding-left">\n\t\t\t\t\t<label translate>Min height</label>\n\t\t\t\t\t<unit-aware-input ng-model="parentController.model.zMin" fraction-size="2"\n\t\t\t\t\t                  allow-empty="true">\n\t\t\t\t\t</unit-aware-input>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="col-xs-6 form-group no-padding-left">\n\t\t\t\t\t<label translate>Max height</label>\n\t\t\t\t\t<unit-aware-input ng-model="parentController.model.zMax" fraction-size="2"\n\t\t\t\t\t                  allow-empty="true">\n\t\t\t\t\t</unit-aware-input>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\x3c!--Permissions Editor --\x3e\n\t\t\t<permission-editor ng-repeat="edited in [parentController.model]"\n\t\t\t                   model="edited" model-type="\'vector_map\'">\n\t\t\t</permission-editor>\n\t\t</div>\n\t</div>\n\n\t\x3c!-- required because of multiple cell issues, refs #14205 --\x3e\n\t<div class="clearfix"></div>\n\n\t\x3c!--Layers--\x3e\n\t<ul class="list-group-item list-group" ng-if="(map.expanded && !map.editing)">\n\t\t<li ng-repeat="layer in map.vectorLayers | orderBy: \'drawingOrder\'" class="list-group-item">\n\t\t\t<div class="container">\n\t\t\t\t<vector-layer layer="layer" parent-controller="parentController"></vector-layer>\n\t\t\t</div>\n\t\t</li>\n\t</ul>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1568);
    var r = n(614)
      , o = function() {
        function t(t, e, n) {
            this.VectorMapService = t,
            this.VectorMapRepository = e,
            this.VectorLayerRepository = n,
            this.vectorMaps = e.data,
            this.vectorLayers = n.data
        }
        return t.$inject = ["VectorMapService", "VectorMapRepository", "VectorLayerRepository"],
        t.prototype.selectAll = function() {
            for (var t = 0, e = this.vectorMaps; t < e.length; t++) {
                var n = e[t];
                n.selected = !0;
                for (var i = 0, r = n.vectorLayers; i < r.length; i++) {
                    r[i].selected = !0
                }
            }
        }
        ,
        t.prototype.removeSelection = function() {
            var t = r.VectorMapListController.getSelectedMaps(this.vectorMaps);
            this.VectorMapService.removeVectorMaps(r.VectorMapListController.getSelectedMaps(this.vectorMaps)),
            this.VectorMapService.removeVectorLayers(r.VectorMapListController.getSelectedLayers(this.vectorLayers, t))
        }
        ,
        t.prototype.deselectAll = function() {
            for (var t = 0, e = this.vectorMaps; t < e.length; t++) {
                var n = e[t];
                n.selected = !1;
                for (var i = 0, r = n.vectorLayers; i < r.length; i++) {
                    r[i].selected = !1
                }
            }
        }
        ,
        t.prototype.setSelectionVisibility = function(t) {
            for (var e = 0, n = r.VectorMapListController.getSelectedLayers(this.vectorLayers); e < n.length; e++) {
                n[e].visible = t
            }
            this.VectorMapService.updateVisibility()
        }
        ,
        t.prototype.anySelected = function() {
            return r.VectorMapListController.getSelectedMaps(this.vectorMaps).length > 0 || r.VectorMapListController.getSelectedLayers(this.vectorLayers).length > 0
        }
        ,
        t.prototype.checkSelectionWritePermissions = function() {
            var t = r.VectorMapListController.getSelectedMaps(this.vectorMaps)
              , e = r.VectorMapListController.getSelectedLayers(this.vectorLayers);
            return t.length === t.filter((function(t) {
                return t.canWrite
            }
            )).length && e.length === e.filter((function(t) {
                return t.vectorMap.canWrite
            }
            )).length
        }
        ,
        t
    }();
    e.VectorMapToolbarController = o;
    var a = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "VectorMapUI/VectorMapToolbar.html",
            this.controller = o,
            this.controllerAs = "vm",
            this.scope = {}
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.VectorMapToolbarDirective = a,
    i.module("IVWebApp").directive("vectorMapToolbar", a.factory())
}
, function(t, e) {
    var n = "VectorMapUI/VectorMapToolbar.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="btn-toolbar" role="toolbar">\n\t\x3c!--Select / deselect maps--\x3e\n\t<div class="btn-group margin-bottom-small" role="group">\n\t\t<button title="{{\'Select all\'|translate}}"\n\t\t        type="button" class="btn btn-default" ng-click="vm.selectAll()"\n\t\t        ng-disabled="vm.vectorLayers.length == 0">\n\t\t\t<span class="fa fa-check-square-o" aria-hidden="true"></span>\n\t\t</button>\n\t\t<button title="{{\'Deselect all\'|translate}}"\n\t\t        type="button" class="btn btn-default" ng-click="vm.deselectAll()"\n\t\t        ng-disabled="vm.vectorLayers.length == 0">\n\t\t\t<span class="fa fa-square-o" aria-hidden="true"></span>\n\t\t</button>\n\t</div>\n\n\t\x3c!--Show / hide layers--\x3e\n\t<div class="btn-group margin-bottom-small" role="group">\n\t\t<button title="{{\'Show selected layers\'|translate}}"\n\t\t        type="button" class="btn btn-default"\n\t\t        ng-click="vm.setSelectionVisibility(true)"\n\t\t        ng-disabled="!vm.anySelected() || !vm.checkSelectionWritePermissions()">\n\t\t\t<span class="glyphicon glyphicon-eye-open"></span>\n\t\t</button>\n\t\t<button title="{{\'Hide selected layers\'|translate}}"\n\t\t        type="button" class="btn btn-default"\n\t\t        ng-click="vm.setSelectionVisibility(false)"\n\t\t        ng-disabled="!vm.anySelected() || !vm.checkSelectionWritePermissions()">\n\t\t\t<span class="glyphicon glyphicon-eye-close"></span>\n\t\t</button>\n\t</div>\n\n\t\x3c!--Delete--\x3e\n\t<div class="btn-group margin-bottom-small" role="group">\n\t\t<delete-confirmation\n\t\t\t\tbutton-disabled="!vm.anySelected() || !vm.checkSelectionWritePermissions()"\n\t\t\t\ton-confirm-callback="vm.removeSelection()">\n\t\t\t<span translate>This action will delete the selected vector layers.</span>\n\t\t</delete-confirmation>\n\t</div>\n</div>\n\n<div class="btn-toolbar" role="toolbar">\n\t\x3c!--Add--\x3e\n\t<div class="btn-group margin-bottom-small" role="group">\n\t\t<default-button data-toggle="modal"\n\t\t                data-target="#vector-map-upload">\n\t\t\t<span translate>Add a DXF file</span>\n\t\t</default-button>\n\t</div>\n\n\t\x3c!--Manage transformations--\x3e\n\t<div class="btn-group" role="group">\n\t\t<default-button data-toggle="modal"\n\t\t                data-target="#affineRefSys">\n\t\t\t\t<span translate\n\t\t\t\t      title="{{\'Manage the custom affine reference systems\'|translate}}">Manage transformations</span>\n\t\t</default-button>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(7)
      , r = n(2);
    n(1570),
    n(1571);
    var o = n(20)
      , a = n(41)
      , s = function() {
        function t(t, e, n) {
            this.VectorMapService = t,
            this.UploadService = e,
            this.gettextCatalog = n,
            this.resetUploadStatus()
        }
        return t.$inject = ["VectorMapService", "UploadService", "gettextCatalog"],
        t.prototype.specifyCrs = function(t) {
            return this.VectorMapService.searchCrs(t, void 0)
        }
        ,
        t.prototype.uploadDxf = function(t) {
            var e = this;
            this.resetUploadStatus();
            for (var n = 0, i = t; n < i.length; n++) {
                var r = i[n];
                this.isUploadProgress = !0,
                this.UploadService.upload("api/vectormaps/upload?crs=" + encodeURIComponent(this.selectedCrs.name), r, "file").then((function(t) {
                    e.isUploadProgress = !1,
                    e.isUploadSuccess = !0,
                    e.uploadResult = t,
                    e.checkInvalidPolygons(t),
                    e.VectorMapService.fetch().catch((function() {}
                    ))
                }
                )).catch((function(t) {
                    e.isUploadProgress = !1,
                    e.isUploadError = !0;
                    var n = {
                        data: t ? t.data : void 0
                    };
                    e.errorMessage = a.ErrorService.getErrorMessage(n, e.gettextCatalog),
                    void 0 === e.errorMessage && (e.errorMessage = n.data ? n.data.msg : "")
                }
                ))
            }
        }
        ,
        t.prototype.resetUploadStatus = function() {
            this.isUploadProgress = !1,
            this.isUploadSuccess = !1,
            this.isUploadError = !1,
            o.invalidateAngular()
        }
        ,
        t.prototype.checkInvalidPolygons = function(t) {
            var e = this;
            this.layersWithInvalidPolygons = [],
            this.layersWithInvalidLoops = [],
            this.layersWithMessages = [],
            this.layersWithInvalidPolygonsData = new Map,
            this.layersWithInvalidLoopsData = new Map,
            this.layersWithInvalidLoopsDepthData = new Map,
            this.layersWithMessagesData = new Map,
            i.forEach(t.layer_metadata, (function(t, n) {
                t.invalid_polygons > 0 && e.layersWithInvalidPolygonsData.set(n, t.invalid_polygons),
                t.invalid_loops > 0 && (e.layersWithInvalidLoopsData.set(n, t.invalid_loops),
                e.layersWithInvalidLoopsDepthData.set(n, t.invalid_loops_depth)),
                t.message && e.layersWithMessagesData.set(n, t.message)
            }
            )),
            this.layersWithInvalidPolygonsData.forEach((function(t, n) {
                return e.layersWithInvalidPolygons.push(n)
            }
            )),
            this.layersWithInvalidLoopsData.forEach((function(t, n) {
                return e.layersWithInvalidLoops.push(n)
            }
            )),
            this.layersWithMessagesData.forEach((function(t, n) {
                return e.layersWithMessages.push(n)
            }
            ))
        }
        ,
        t
    }();
    e.VectorMapUploadController = s;
    var c = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "VectorMapUI/VectorMapUpload.html",
            this.controller = s,
            this.controllerAs = "vm",
            this.scope = {}
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.VectorMapUploadDirective = c,
    r.module("IVWebApp").directive("vectorMapUpload", c.factory())
}
, function(t, e, n) {
    var i = "VectorMapUI/VectorMapUpload.html"
      , r = '<modal>\n\t<div class="modal fade" id="vector-map-upload" tabindex="-1">\n\t\t<div class="modal-dialog">\n\t\t\t<div class="modal-content">\n\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<h4 translate translate-context="title">Add a DXF File</h4>\n\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t     data-dismiss="modal"\n\t\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}">\n\t\t\t\t</div>\n\n\t\t\t\t<div class="modal-body">\n\n\t\t\t\t\t<form>\n\t\t\t\t\t\t<div class="form-group" style="position:relative">\n\t\t\t\t\t\t\t<label translate>Source coordinate system</label>\n\t\t\t\t\t\t\t<input type="text" ng-model="vm.selectedCrs"\n\t\t\t\t\t\t\t       placeholder="EPSG:4326"\n\t\t\t\t\t\t\t       typeahead="crs as crs.name for crs in vm.specifyCrs($viewValue)"\n\t\t\t\t\t\t\t       typeahead-template-url="crs-popup.html"\n\t\t\t\t\t\t\t       typeahead-no-results="noResults" class="form-control form-group">\n\t\t\t\t\t\t\t<p ng-show="!vm.selectedCrs"\n\t\t\t\t\t\t\t   class="text-danger" translate>\n\t\t\t\t\t\t\t\tSource coordinate system cannot be empty\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t<div class="btn-group" role="group">\n\t\t\t\t\t\t\t\t<input-button class="btn-file" in-progress="vm.isUploadProgress"\n\t\t\t\t\t\t\t\t              ng-disabled="!vm.selectedCrs.name">\n\t\t\t\t\t\t\t\t\t<span translate>Upload DXF file</span>\n\t\t\t\t\t\t\t\t\t<input type="file" hidden\n\t\t\t\t\t\t\t\t\t       accept=".dxf, image/vnd.dxf"\n\t\t\t\t\t\t\t\t\t       ng-disabled="!vm.selectedCrs.name || vm.isUploadProgress"\n\t\t\t\t\t\t\t\t\t       ngf-select="vm.uploadDxf($files)">\n\t\t\t\t\t\t\t\t</input-button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div class="alert alert-warning"\n\t\t\t\t\t\t     ng-if="vm.isUploadSuccess && (vm.layersWithInvalidPolygons.length || vm.layersWithInvalidLoops.length || vm.layersWithMessages.length)">\n\t\t\t\t\t\t\t<label translate>\n\t\t\t\t\t\t\t\tLayers with problematic polygons\n\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t\t<li ng-repeat="layerName in vm.layersWithInvalidPolygons">\n\t\t\t\t\t\t\t\t\t<em>{{layerName}}:</em>\n\t\t\t\t\t\t\t\t\t<span translate translate-params-amount="vm.layersWithInvalidPolygonsData.get(layerName)">\n\t\t\t\t\t\t\t\t\t\t{{amount}} of problematic polygons\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t<li ng-repeat="layerName in vm.layersWithInvalidLoops">\n\t\t\t\t\t\t\t\t\t<em>{{layerName}}:</em>\n\t\t\t\t\t\t\t\t\t<span translate translate-params-amount="vm.layersWithInvalidLoopsData.get(layerName)">\n\t\t\t\t\t\t\t\t\t\t{{amount}} discarded boundary loops\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<span ng-if="vm.layersWithInvalidLoopsDepthData.get(layerName) > 0">\n\t\t\t\t\t\t\t\t\t\t<span translate\n\t\t\t\t\t\t\t\t\t\t      translate-context="The comma in the beginning is because this is added to the \'{{amount}} discarded boundary loops\' string."\n\t\t\t\t\t\t\t\t\t\t      translate-params-amount="vm.layersWithInvalidLoopsDepthData.get(layerName)">\n\t\t\t\t\t\t\t\t\t\t\t, {{amount}} discarded boundary loops because they are islands or intersect with another boundary loop\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t\t<li ng-repeat="layerName in vm.layersWithMessages">\n\t\t\t\t\t\t\t\t\t<em>{{layerName}}:</em>\n\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t{{vm.layersWithMessagesData.get(layerName)}}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t\t<div class="margin-top-small" translate>\n\t\t\t\t\t\t\t\tPlease simplify your DXF file.\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</form>\n\n\t\t\t\t</div>\n\n\n\t\t\t\t<div class="modal-footer" style="text-align: left;">\n\t\t\t\t\t<div class="alert alert-success" ng-if="vm.isUploadSuccess" style="margin-bottom:0"\n\t\t\t\t\t     translate translate-n="uploadResult.count_layers"\n\t\t\t\t\t     translate-params-amount="uploadResult.count_layers"\n\t\t\t\t\t     translate-plural="Upload successful: {{amount}} vector layers found.">\n\t\t\t\t\t\tUpload successful: one vector layer found.\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class="alert alert-danger" ng-if="vm.isUploadError" style="margin-bottom:0">\n\t\t\t\t\t\t<div translate>Upload failed</div>\n\t\t\t\t\t\t<div ng-show="vm.errorMessage" class="error-message">{{vm.errorMessage}}</div>\n\t\t\t\t\t</div>\n\n\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1572);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, ".error-message{font-family:monospace;font-size:.9em;background-color:#d3d3d3;color:#a94442}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    n(1574);
    var i = n(2)
      , r = function() {
        function t(t, e) {
            var n = this;
            this.VectorMapRepository = t,
            this.VectorMapService = e,
            this.VectorMapRepository.initialized.then((function() {
                n.vectorMaps = n.VectorMapRepository.data
            }
            )).catch((function() {}
            ))
        }
        return t.$inject = ["VectorMapRepository", "VectorMapService"],
        t.prototype.selectionChanged = function(t) {
            this.VectorMapService.manualVisibilityChanged.emit(t)
        }
        ,
        t
    }();
    e.VectorMapSelectionController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "VectorMapUI/VectorMapSelection.html",
            this.controller = r,
            this.controllerAs = "vmSelectionCtrl"
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.VectorMapSelectionDirective = o,
    i.module("IVWebApp").directive("vectorMapSelection", o.factory())
}
, function(t, e) {
    var n = "VectorMapUI/VectorMapSelection.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="panel panel-default" ng-show="vmSelectionCtrl.vectorMaps.length > 0">\n\t<div class="panel-heading" data-toggle="collapse" data-target="#vectorMapSelection">\n\t\t<i class="collapse-expand-chevron"></i>\n\t\t<span class="panel-title" translate translate-context="title">\n\t\t\tVector Map Selection\n\t\t</span>\n\t</div>\n\t<div id="vectorMapSelection" class="panel-collapse collapse in">\n\t\t<div class="panel-body">\n\t\t\t<div class="checkbox" ng-repeat="vectorMap in vmSelectionCtrl.vectorMaps">\n\t\t\t\t<label>\n\t\t\t\t\t<input type="checkbox" ng-model="vectorMap.manualVisibility"\n\t\t\t\t\t       ng-value="vectorMap.manualVisibility"\n\t\t\t\t\t       ng-change="vmSelectionCtrl.selectionChanged(vectorMap)">\n\t\t\t\t\t{{vectorMap.name}}\n\t\t\t\t</label>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(409);
    var r = n(7)
      , o = n(89)
      , a = n(8);
    n(1576),
    n(1577);
    var s = function() {
        function t(t, e, n) {
            var i = this;
            this.AffineRefSysRepository = t,
            this.VectorMapService = e,
            this.promiseWrapper = new o.PromiseProgressWrapper,
            n.find(".modal").on("show.bs.modal", (function() {
                i.AffineRefSysRepository.findAll().catch(a.handleWarning)
            }
            ))
        }
        return t.$inject = ["AffineRefSysRepository", "VectorMapService", "$element"],
        t.prototype.isSavingInProgress = function() {
            return this.promiseWrapper.isInProgress
        }
        ,
        t.prototype.save = function(t) {
            var e = this;
            this.promiseWrapper.wrap(this.AffineRefSysRepository.save([t])).then((function() {
                e.unsaved = void 0,
                t.dirty = !1
            }
            )).catch(a.handleWarning)
        }
        ,
        t.prototype.add = function() {
            this.unsaved = this.AffineRefSysRepository.create()
        }
        ,
        t.prototype.remove = function(t) {
            t.id ? this.AffineRefSysRepository.remove(t).catch(a.handleWarning) : this.unsaved = void 0
        }
        ,
        t.prototype.specifyCrs = function(t) {
            return this.VectorMapService.searchCrs(t, "GEODETIC")
        }
        ,
        t.prototype.alreadyExists = function(t) {
            return r.some(r.filter(this.AffineRefSysRepository.data, (function(e) {
                return !t.id || e.id !== t.id
            }
            )), (function(e) {
                return t.name === e.name
            }
            ))
        }
        ,
        t.prototype.getAllowedParents = function(t) {
            var e = this;
            return this.AffineRefSysRepository.data.filter((function(n) {
                return !e.isSameOrChild(n, t)
            }
            ))
        }
        ,
        t.prototype.isSameOrChild = function(t, e) {
            do {
                if (t === e)
                    return !0;
                t = t.parent
            } while (t);
            return !1
        }
        ,
        t
    }();
    e.AffineRefSysListComponent = s;
    var c = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "AffineRefSysUI/AffineRefSysList.html",
            this.controller = s,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.AffineRefSysListDirective = c,
    i.module("IVWebApp").directive("affineRefSysList", c.factory())
}
, function(t, e, n) {
    var i = "AffineRefSysUI/AffineRefSysList.html"
      , r = '<div class="modal fade" id="affineRefSys" tabindex="-1"\n     data-backdrop="static">\n\t<div class="modal-dialog">\n\t\t<div class="modal-content">\n\n\t\t\t<div class="modal-header">\n\t\t\t\t<h4 translate translate-context="title">Custom Coordinate Systems</h4>\n\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t     data-dismiss="modal"\n\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}">\n\t\t\t</div>\n\n\t\t\t<div class="modal-body">\n\t\t\t\t<div class="panel-group" id="affine_ref_sys_accordion" role="tablist">\n\n\t\t\t\t\t<div class="panel panel-default"\n\t\t\t\t\t     ng-show="vm.AffineRefSysRepository.data.length>0"\n\t\t\t\t\t     ng-repeat="affineRefSys in vm.AffineRefSysRepository.data">\n\t\t\t\t\t\t<affine-ref-sys-edit></affine-ref-sys-edit>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class="panel panel-default"\n\t\t\t\t\t     ng-if="vm.unsaved!=null"\n\t\t\t\t\t     ng-repeat="affineRefSys in [vm.unsaved]">\n\t\t\t\t\t\t<affine-ref-sys-edit></affine-ref-sys-edit>\n\t\t\t\t\t</div>\n\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="modal-footer">\n\t\t\t\t<default-button class="pull-left" ng-click="vm.add()" ng-show="vm.unsaved==null">\n\t\t\t\t\t<span translate>Add</span>\n\t\t\t\t</default-button>\n\t\t\t\t<close-button data-dismiss="modal"></close-button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1578);
    var r = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "AffineRefSysUI/AffineRefSysEdit.html",
            this.scope = !1
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.AffineRefSysEditDirective = r,
    i.module("IVWebApp").directive("affineRefSysEdit", r.factory())
}
, function(t, e) {
    var n = "AffineRefSysUI/AffineRefSysEdit.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="panel-heading" ng-if="affineRefSys.id">\n\t<span>\n\t\t<a role="button" data-toggle="collapse"\n\t\t   data-parent="#affine_ref_sys_accordion"\n\t\t   class="collapsed"\n\t\t   href="#collapse{{affineRefSys.id}}">\n\t\t\t{{affineRefSys.name}}\n\t\t</a>\n\t</span>\n</div>\n\n<div id="collapse{{affineRefSys.id ? affineRefSys.id : \'unknown\'}}"\n     class="panel-collapse collapse"\n     ng-class="{\'show\': affineRefSys.id === undefined}"\n     role="tabpanel">\n\t<div class="panel-body">\n\n\t\t<form>\n\t\t\t<div class="form-group">\n\t\t\t\t<label translate>Name</label>\n\t\t\t\t<input class="form-control form-group"\n\t\t\t\t       ng-model="affineRefSys.name" ng-change="affineRefSys.dirty=true; vm.error=null;">\n\t\t\t\t<p ng-show="vm.alreadyExists(affineRefSys)"\n\t\t\t\t   class="text-danger" translate>\n\t\t\t\t\tName is already being used\n\t\t\t\t</p>\n\t\t\t\t<p ng-show="!affineRefSys.name"\n\t\t\t\t   class="text-danger" translate>\n\t\t\t\t\tName cannot be empty\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t<div class="form-group" style="position: relative">\n\t\t\t\t<label translate>Reference SRID</label>\n\t\t\t\t<input type="search" ng-model="affineRefSys.spatialReference"\n\t\t\t\t       title="{{\'Source Coordinate System\'|translate}}"\n\t\t\t\t       typeahead="crs.name as crs.name for crs in vm.specifyCrs($viewValue)"\n\t\t\t\t       typeahead-template-url="crs-popup.html"\n\t\t\t\t       typeahead-no-results="noResults" class="form-control form-group"\n\t\t\t\t       ng-change="affineRefSys.dirty=true; vm.error=null;"\n\t\t\t\t       ng-disabled="affineRefSys.parent || affineRefSys.spatialReferenceString">\n\t\t\t\t<p ng-show="!affineRefSys.parent && !affineRefSys.spatialReference && !affineRefSys.spatialReferenceString"\n\t\t\t\t   class="text-danger" translate>\n\t\t\t\t\tRequired (alternatively, a parent coordinate system or a custom projection can be specified)\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t<div class="form-group">\n\t\t\t\t<label translate>Custom projection</label>\n\t\t\t\t<input class="form-control form-group"\n\t\t\t\t       ng-model="affineRefSys.spatialReferenceString"\n\t\t\t\t       ng-change="affineRefSys.dirty=true; vm.error=null;"\n\t\t\t\t       ng-disabled="affineRefSys.parent || affineRefSys.spatialReference">\n\t\t\t</div>\n\n\t\t\t<div class="form-group" style="position: relative">\n\t\t\t\t<label translate>Parent Coordinate System</label>\n\t\t\t\t<select class="form-control from-group"\n\t\t\t\t        ng-options="crs.name disable when crs.dirty for crs in vm.getAllowedParents(affineRefSys) track by crs.id"\n\t\t\t\t        ng-model="affineRefSys.parent"\n\t\t\t\t        ng-change="affineRefSys.dirty=true; vm.error=null;"\n\t\t\t\t        ng-disabled="affineRefSys.spatialReference || affineRefSys.spatialReferenceString">\n\t\t\t\t\t<option value="" translate>None</option>\n\t\t\t\t</select>\n\n\t\t\t\t<p ng-show="!affineRefSys.parent && !affineRefSys.spatialReference && !affineRefSys.spatialReferenceString"\n\t\t\t\t   class="text-danger" translate>\n\t\t\t\t\tRequired (alternatively, a reference SRID or a custom projection can be specified)\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t<table id="affine-ref-sys-table" class="table table-borderless">\n\t\t\t\t<col style="width:3%">\n\t\t\t\t<col style="width:6%">\n\t\t\t\t<col style="width:19%">\n\t\t\t\t<col style="width:19%">\n\t\t\t\t<col style="width:19%">\n\t\t\t\t<col style="width:16%">\n\t\t\t\t<col style="width:18%">\n\t\t\t\t<thead>\n\t\t\t\t</thead>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><i>x</i></td>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td class="border-left"><input class="form-control" ng-model="affineRefSys.rx"\n\t\t\t\t\t                               ng-change="affineRefSys.dirty=true; vm.error=null;">\n\t\t\t\t\t</td>\n\t\t\t\t\t<td><i>{{-affineRefSys.ry}}</i></td>\n\t\t\t\t\t<td class="border-right">0</td>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td class="right-column"><input class="form-control" ng-model="affineRefSys.tx"\n\t\t\t\t\t                                ng-change="affineRefSys.dirty=true; vm.error=null;">\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><i>y</i></td>\n\t\t\t\t\t<td>=</td>\n\t\t\t\t\t<td class="border-left"><input class="form-control" ng-model="affineRefSys.ry"\n\t\t\t\t\t                               ng-change="affineRefSys.dirty=true; vm.error=null;">\n\t\t\t\t\t</td>\n\t\t\t\t\t<td><i>{{affineRefSys.rx}}</i></td>\n\t\t\t\t\t<td class="border-right">0</td>\n\t\t\t\t\t<td><i class="fa fa-circle" aria-hidden="true"></i>\n\t\t\t\t\t\t<u class="vector-symbol">p</u>\n\t\t\t\t\t\t<span>+</span>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td class="right-column"><input class="form-control" ng-model="affineRefSys.ty"\n\t\t\t\t\t                                ng-change="affineRefSys.dirty=true; vm.error=null;">\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td><i>z</i></td>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td class="border-left">0</td>\n\t\t\t\t\t<td>0</td>\n\t\t\t\t\t<td class="border-right">1</td>\n\t\t\t\t\t<td></td>\n\t\t\t\t\t<td class="right-column"><input class="form-control" ng-model="affineRefSys.tz"\n\t\t\t\t\t                                ng-change="affineRefSys.dirty=true; vm.error=null;">\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\n\t\t\t<div class="form-group">\n\t\t\t\t<cancel-button ng-show="!affineRefSys.id" ng-click="vm.remove(affineRefSys)">\n\t\t\t\t</cancel-button>\n\t\t\t\t<delete-confirmation ng-show="affineRefSys.id" on-confirm-callback="vm.remove(affineRefSys)">\n\t\t\t\t</delete-confirmation>\n\t\t\t\t<save-button ng-click="vm.save(affineRefSys)"\n\t\t\t\t             ng-disabled="(!affineRefSys.parent &&\n\t\t\t\t                           !affineRefSys.spatialReference &&\n\t\t\t\t                           !affineRefSys.spatialReferenceString) ||\n\t\t\t\t                          !affineRefSys.name || vm.alreadyExists(affineRefSys) || !affineRefSys.dirty ||\n\t\t\t\t                          vm.isSavingInProgress()"\n\t\t\t\t             in-progress="vm.isSavingInProgress()">\n\t\t\t\t</save-button>\n\t\t\t</div>\n\n\t\t</form>\n\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(141)
      , o = n(25)
      , a = (n(15),
    n(38),
    n(147));
    n(1580),
    n(1584),
    n(204);
    var s = n(148)
      , c = n(21)
      , l = n(81)
      , u = n(6)
      , d = n(0)
      , p = n(0)
      , h = n(38)
      , f = n(15)
      , m = function() {
        function t(t, e, n) {
            this.SidebarMenuService = t,
            this.ConfigService = e,
            this.gettext = n,
            this.initSideMenuItem()
        }
        return t.prototype.initSideMenuItem = function() {
            var t = this
              , e = (new s.SidebarMenuItemBuilder).setKey(l.SidebarMenuItemsKey.SHARE).setTitle(this.gettext("Share", void 0, "title")).setIcon(new r.IconInfo("material-icons","share")).setIsVisible((function() {
                return t.ConfigService.getBoolean(o.Configs.MENU_SHARE_VISIBLE, !0)
            }
            )).setTemplate(c.TemplateName.SHARE_MENU).setClassCallback((function() {
                return "sidebar-menu-item-share"
            }
            )).setOrder(a.SidebarMenuItemsOrder.SHARE).build();
            this.SidebarMenuService.addItem(e)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(p.ɵɵinject(h.SidebarMenuService),p.ɵɵinject(f.ConfigService),p.ɵɵinject("gettext"))
        }
        ,
        t.ɵprov = p.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.ShareModule = m,
    p.ɵsetClassMetadata(m, [{
        type: d.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: h.SidebarMenuService
        }, {
            type: f.ConfigService
        }, {
            type: void 0,
            decorators: [{
                type: d.Inject,
                args: ["gettext"]
            }]
        }]
    }
    ), null),
    i.module("IVWebApp").service("ShareModule", u.downgradeInjectable(m))
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        }),
        n(1581),
        n(1583);
        var i = n(2)
          , r = n(40)
          , o = n(96)
          , a = n(55)
          , s = n(21)
          , c = n(392)
          , l = function() {
            function e(t, e, n, i, r, o, a, s, c, l, u, d) {
                this.UrlService = t,
                this.SocialService = e,
                this.IV = n,
                this.PoiService = i,
                this.$location = r,
                this.gettextCatalog = o,
                this.gettext = a,
                this.LanguageService = s,
                this.SiteModelService = c,
                this.isHtml5Mode = l,
                this.TrackingService = u,
                this.ViewService = d,
                this.shareUrl = "",
                this.mailToUrl = ""
            }
            return e.$inject = ["UrlService", "SocialService", "IV", "PoiService", "$location", "gettextCatalog", "gettext", "LanguageService", "SiteModelService", "isHtml5Mode", "TrackingService", "ViewService"],
            Object.defineProperty(e.prototype, "shareSmeType", {
                get: function() {
                    return this.SiteModelService.selectedModel.type === a.SiteModelType.CUSTOM ? this.gettext("site model entity") : this.SiteModelService.selectedModel.getTypeDisplayName()
                },
                enumerable: !0,
                configurable: !0
            }),
            e.prototype.openShareWindow = function(t) {
                var e = window.open();
                this.moveToShareUrl(e, t)
            }
            ,
            e.prototype.createLink = function() {
                return this.isLocation() ? (this.shareUrl = this.UrlService.generateShareUrl(),
                this.setMailToUrl(),
                this.shareUrl) : this.isPoi() ? (this.shareUrl = this.generatePoiShareUrl(),
                this.setMailToUrl(),
                this.shareUrl) : this.isCustomLocation() ? (this.shareUrl = this.generateShareCustomLocationPoi(),
                this.setMailToUrl(),
                this.shareUrl) : this.isSme() ? (this.shareUrl = this.generateSmeShareUrl(),
                this.setMailToUrl(),
                this.shareUrl) : ""
            }
            ,
            e.prototype.trackShareAction = function() {
                s.TrackingService.trackShareAction(this.shareType)
            }
            ,
            e.prototype.setMailToUrl = function() {
                this.mailToUrl = "mailto:?body=" + encodeURIComponent(this.shareUrl)
            }
            ,
            e.prototype.copyLink = function() {
                var e = t("#generatedLink");
                if (r.isPlatform(r.Platform.IOS)) {
                    var n = e.get(0)
                      , i = n.contentEditable
                      , o = n.readOnly
                      , a = document.createRange()
                      , s = window.getSelection();
                    n.contentEditable = "true",
                    n.readOnly = !1,
                    a.selectNodeContents(n),
                    s.removeAllRanges(),
                    s.addRange(a),
                    n.setSelectionRange(0, 999999),
                    n.contentEditable = i,
                    n.readOnly = o
                } else
                    e.select();
                document.execCommand("copy"),
                e.blur(),
                t("#copyButton").attr("title", this.gettextCatalog.getString("Copied link to clipboard")).tooltip("show"),
                this.trackShareAction()
            }
            ,
            e.prototype.onLeaveCopyButton = function() {
                t("#copyButton").tooltip("destroy")
            }
            ,
            e.prototype.generatePoiShareUrl = function() {
                return this.PoiService.openedPoi ? this.generateShareUrl("poi=" + this.PoiService.openedPoi.id) : ""
            }
            ,
            e.prototype.generateShareCustomLocationPoi = function() {
                var t = this.PoiService.openedPoi
                  , e = o.VectorFactory.toString(t.globalLocation);
                return this.generateShareUrl("poi=" + e)
            }
            ,
            e.prototype.generateSmeShareUrl = function() {
                return this.SiteModelService.selectedModel ? this.generateShareUrl("sme=" + this.SiteModelService.selectedModel.id + "&vlon=" + this.ViewService.mainView.getViewDir().lon.toFixed(2) + "&vlat=" + this.ViewService.mainView.getViewDir().lat.toFixed(2)) : ""
            }
            ,
            e.prototype.generateShareUrl = function(t) {
                var e = this.$location.absUrl();
                return this.UrlService.removeParamsFromUrl(e) + (this.isHtml5Mode ? "?" : "#?") + t + "&fov=" + this.ViewService.mainView.getFov().toFixed(1)
            }
            ,
            e.prototype.getTwitterUrl = function() {
                return this.UrlService.generateSocialNetworkShareUrl("twitter", this.createLink())
            }
            ,
            e.prototype.moveToShareUrl = function(t, e) {
                var n = this;
                if (this.isLocation()) {
                    var i = this.ViewService.mainView;
                    i.getImage() ? this.SocialService.moveToShareURLCommonCode(t, e, {
                        type: "image",
                        id: i.getImage().id,
                        lon: i.getViewDir().lon.toFixed(2),
                        lat: i.getViewDir().lat.toFixed(2)
                    }) : this.SocialService.moveToShareURLCommonCode(t, e, {})
                } else if (this.isPoi() || this.isSme()) {
                    var r = this.gettextCatalog.getString("Please wait for the page to load...");
                    t.document.writeln('<html></head><body bgcolor=white onLoad="self.focus()">' + r + "</body></html>"),
                    (this.isPoi() ? this.moveToPoiShareUrl() : this.moveToSmeShareUrl()).then((function() {
                        n.SocialService.moveToShareURLCommonCode(t, e, {
                            type: n.isPoi() ? c.ShareType.POI : c.ShareType.SME,
                            id: n.isPoi() ? n.PoiService.openedPoi.id : n.SiteModelService.selectedModel.id,
                            lang: n.LanguageService.dataLanguage
                        })
                    }
                    )).catch((function() {}
                    ))
                }
            }
            ,
            e.prototype.moveToPoiShareUrl = function() {
                return this.PoiService.goToPoi()
            }
            ,
            e.prototype.moveToSmeShareUrl = function() {
                return this.SiteModelService.selectModel(this.SiteModelService.selectedModel, !0),
                Promise.resolve()
            }
            ,
            e.prototype.isLocation = function() {
                return this.shareType === c.ShareType.LOCATION
            }
            ,
            e.prototype.isPoi = function() {
                return this.shareType === c.ShareType.POI
            }
            ,
            e.prototype.isSme = function() {
                return this.shareType === c.ShareType.SME
            }
            ,
            e.prototype.isCustomLocation = function() {
                return this.shareType === c.ShareType.CUSTOM_LOCATION
            }
            ,
            e.prototype.isTransitioning = function() {
                return this.isPoi() && this.PoiService.openedPoi && this.IV.isMovingToPoi()
            }
            ,
            e
        }();
        e.ShareMenuController = l;
        var u = function() {
            function t() {
                this.restrict = "E",
                this.templateUrl = "ShareMenu/ShareMenu.html",
                this.controller = l,
                this.controllerAs = "vm",
                this.scope = !0,
                this.bindToController = {
                    shareType: "@"
                }
            }
            return t.factory = function() {
                return function() {
                    return new t
                }
            }
            ,
            t
        }();
        e.ShareMenuDirective = u,
        i.module("IVWebApp").directive("shareMenu", u.factory())
    }
    ).call(this, n(19))
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1582);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, ".linkToCopy{padding:6px;width:100%;float:none}.linkToCopy .btn-default{height:34px;max-height:none}.custom-tooltip{display:inline-block}.tooltip{position:fixed}.azm-button-wrapper,.azm-social{display:inline-block}.azm-social{margin:0;padding:0;color:#fff;text-align:center;transition:all .3s}.azm-social>i{width:100%}.azm-size-42{width:42px;height:42px;padding-top:13px;font-size:14px;line-height:14px}.azm-size-42:not(:last-child){margin-right:5px}.azm-size-42:focus,.azm-size-42:hover{color:#fff}.azm-email{background:#9a9a9a}.azm-email:focus,.azm-email:hover{background:#797979}.azm-facebook{background:#4862a3}.azm-facebook:focus,.azm-facebook:hover{background:#384d80}.azm-twitter{background:#55acee}.azm-twitter:focus,.azm-twitter:hover{background:#2795e9}.azm-linkedin{background:#0177b5}.azm-linkedin:focus,.azm-linkedin:hover{background:#015682}.azm-xing{background:#006464}.azm-xing:focus,.azm-xing:hover{background:#003131}.azm-tumblr{background:#2c4762}.azm-tumblr:focus,.azm-tumblr:hover{background:#1c2e3f}", ""]),
    t.exports = e
}
, function(t, e, n) {
    var i = "ShareMenu/ShareMenu.html"
      , r = '<div class="form">\n\n\t<div class="form-group">\n\t\t<label ng-if="vm.isLocation()" translate>Web address</label>\n\t\t<label ng-if="vm.isPoi()" translate>Link to this POI</label>\n\t\t<label ng-if="vm.isCustomLocation()" translate>Link to this location</label>\n\t\t<label ng-if="vm.isSme()" translate translate-params-type="vm.shareSmeType | translate"\n\t\ttranslate-context="type is an already translated SiteModelEntity type, e.g. \'room\', \'floor\'">\n\t\t\tLink to this {{type}}\n\t\t</label>\n\t\t<br/>\n\t\t<div class="input-group col-sm-12 linkToCopy">\n\t\t\t<input readonly class="form-control"\n\t\t\t       id="generatedLink"\n\t\t\t       ng-value="vm.createLink()"\n\t\t\t       ng-click="vm.trackShareAction()"\n\t\t\t       onClick="this.select()">\n\t\t\t<span class="input-group-btn">\n\t\t\t\t<default-button id="copyButton"\n\t\t\t\t                ng-click="vm.copyLink()"\n\t\t\t\t                ng-mouseleave="vm.onLeaveCopyButton()"\n\t\t\t\t                data-container="false"\n\t\t\t\t                data-placement="top">\n\t\t\t\t\t<i class="fa fa-copy"></i>\n\t\t\t\t</default-button>\n\t\t\t</span>\n\t\t</div>\n\t</div>\n\n\t<div class="form-group no-margin-bottom" ng-if="!vm.isTransitioning()">\n\t\t<span class="margin-bottom-small azm-button-wrapper">\n\t\t\t<a href="{{vm.mailToUrl}}"\n\t\t\t   target="_blank"\n\t\t\t   iv-tooltip="{{\'Share via email\' | translate}}"\n\t\t\t   data-container="false"\n\t\t\t   class="btn azm-social azm-size-42 azm-email">\n\t\t\t\t<i class="fa fa-envelope"></i>\n\t\t\t</a>\n\t\t</span>\n\n\t\t<span class="margin-bottom-small azm-button-wrapper">\n\t\t\t<a ng-click="vm.openShareWindow(\'facebook\')"\n\t\t\t   iv-tooltip="{{\'Share on facebook\' | translate}}"\n\t\t\t   data-container="false"\n\t\t\t   class="btn azm-social azm-size-42 azm-facebook">\n\t\t\t\t<i class="fa fa-facebook"></i>\n\t\t\t</a>\n\t\t</span>\n\n\t\t<span class="margin-bottom-small azm-button-wrapper">\n\t\t\t<a target="_blank" ng-href="{{vm.getTwitterUrl()}}"\n\t\t\t   iv-tooltip="{{\'Share on Twitter\' | translate}}"\n\t\t\t   data-container="false"\n\t\t\t   class="btn azm-social azm-size-42 azm-twitter">\n\t\t\t\t<i class="fa fa-twitter"></i>\n\t\t\t</a>\n\t\t</span>\n\n\t\t<span class="margin-bottom-small azm-button-wrapper">\n\t\t\t<a ng-click="vm.openShareWindow(\'linkedin\')"\n\t\t\t   iv-tooltip="{{\'Share on LinkedIn\' | translate}}"\n\t\t\t   data-container="false"\n\t\t\t   class="btn azm-social azm-size-42 azm-linkedin">\n\t\t\t\t<i class="fa fa-linkedin"></i>\n\t\t\t</a>\n\t\t</span>\n\n\t\t<span class="margin-bottom-small azm-button-wrapper">\n\t\t\t<a ng-click="vm.openShareWindow(\'xing\')"\n\t\t\t   iv-tooltip="{{\'Share on XING\' | translate}}"\n\t\t\t   data-container="false"\n\t\t\t   class="btn azm-social azm-size-42 azm-xing">\n\t\t\t\t<i class="fa fa-xing"></i>\n\t\t\t</a>\n\t\t</span>\n\n\t\t<span class="margin-bottom-small azm-button-wrapper">\n\t\t\t<a ng-click="vm.openShareWindow(\'tumblr\')"\n\t\t\t   iv-tooltip="{{\'Share on Tumblr\' | translate}}"\n\t\t\t   data-container="false"\n\t\t\t   class="btn azm-social azm-size-42 azm-tumblr">\n\t\t\t\t<i class="fa fa-tumblr"></i>\n\t\t\t</a>\n\t\t</span>\n\t</div>\n\n\t<div class="form-group" ng-show="vm.isTransitioning()">\n\t\t<span class="spinner next-to-btngroup">\n\t\t\t<img class="in-btn-group" ng-src="' + n(94) + '">\n\t\t</span>\n\t</div>\n</div>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    n(204);
    var i = n(2)
      , r = n(67)
      , o = n(197)
      , a = (n(73),
    n(41),
    n(6))
      , s = n(0)
      , c = (n(17),
    n(0))
      , l = n(204)
      , u = n(73)
      , d = n(17)
      , p = n(41)
      , h = function() {
        function t(t, e, n, i, r) {
            this.UploadService = t,
            this.UrlService = e,
            this.ViewService = n,
            this.$location = i,
            this.lastLocation = "",
            this.shareUrl = "",
            this.errorWrapper = r.createDefaultWrapper()
        }
        return t.prototype.uploadScreenshot = function() {
            var t = this.ViewService.mainView.getScreenshot()
              , e = r.dataURItoBlob(t.data);
            return this.UploadService.upload("share/image", o.blobToFile(e)).then((function(e) {
                return {
                    url: e.url,
                    width: t.width,
                    height: t.height
                }
            }
            ))
        }
        ,
        t.prototype.moveToShareURLCommonCode = function(t, e, n) {
            var r = this
              , o = function() {
                t.location.href = r.UrlService.generateSocialNetworkShareUrl(e, r.shareUrl)
            };
            if (this.isLocationSame() && this.shareUrl)
                o();
            else {
                this.errorWrapper.wrap(this.uploadScreenshot().then((function(t) {
                    var e = r.UrlService.getProtocolBaseUrl()
                      , a = r.UrlService.removeParamsFromUrl(r.$location.absUrl())
                      , s = {
                        image: t.url,
                        width: t.width,
                        height: t.height,
                        fov: r.ViewService.mainView.getFov().toFixed(1),
                        iv_base: e,
                        backlink_base: void 0
                    };
                    e !== a && (s.backlink_base = a),
                    i.extend(s, n);
                    var c = JSON.stringify(s)
                      , l = btoa(c).replace("+", "-").replace("/", "_");
                    r.shareUrl = r.UrlService.getProtocolBaseUrl() + "share/link/" + l,
                    r.lastLocation = r.$location.absUrl(),
                    o()
                }
                )).catch((function(e) {
                    throw t.close(),
                    e
                }
                ))).catch((function() {}
                ))
            }
        }
        ,
        t.prototype.isLocationSame = function() {
            return this.lastLocation === this.$location.absUrl()
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(c.ɵɵinject(l.UploadService),c.ɵɵinject(u.UrlService),c.ɵɵinject(d.ViewService),c.ɵɵinject("$location"),c.ɵɵinject(p.ErrorService))
        }
        ,
        t.ɵprov = c.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.SocialService = h,
    c.ɵsetClassMetadata(h, [{
        type: s.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: l.UploadService
        }, {
            type: u.UrlService
        }, {
            type: d.ViewService
        }, {
            type: void 0,
            decorators: [{
                type: s.Inject,
                args: ["$location"]
            }]
        }, {
            type: p.ErrorService
        }]
    }
    ), null),
    i.module("IVWebApp").service("SocialService", a.downgradeInjectable(h))
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__awaiter || function(t, e, n, i) {
        return new (n || (n = Promise))((function(r, o) {
            function a(t) {
                try {
                    c(i.next(t))
                } catch (t) {
                    o(t)
                }
            }
            function s(t) {
                try {
                    c(i.throw(t))
                } catch (t) {
                    o(t)
                }
            }
            function c(t) {
                var e;
                t.done ? r(t.value) : (e = t.value,
                e instanceof n ? e : new n((function(t) {
                    t(e)
                }
                ))).then(a, s)
            }
            c((i = i.apply(t, e || [])).next())
        }
        ))
    }
      , r = this && this.__generator || function(t, e) {
        var n, i, r, o, a = {
            label: 0,
            sent: function() {
                if (1 & r[0])
                    throw r[1];
                return r[1]
            },
            trys: [],
            ops: []
        };
        return o = {
            next: s(0),
            throw: s(1),
            return: s(2)
        },
        "function" == typeof Symbol && (o[Symbol.iterator] = function() {
            return this
        }
        ),
        o;
        function s(o) {
            return function(s) {
                return function(o) {
                    if (n)
                        throw new TypeError("Generator is already executing.");
                    for (; a; )
                        try {
                            if (n = 1,
                            i && (r = 2 & o[0] ? i.return : o[0] ? i.throw || ((r = i.return) && r.call(i),
                            0) : i.next) && !(r = r.call(i, o[1])).done)
                                return r;
                            switch (i = 0,
                            r && (o = [2 & o[0], r.value]),
                            o[0]) {
                            case 0:
                            case 1:
                                r = o;
                                break;
                            case 4:
                                return a.label++,
                                {
                                    value: o[1],
                                    done: !1
                                };
                            case 5:
                                a.label++,
                                i = o[1],
                                o = [0];
                                continue;
                            case 7:
                                o = a.ops.pop(),
                                a.trys.pop();
                                continue;
                            default:
                                if (!(r = a.trys,
                                (r = r.length > 0 && r[r.length - 1]) || 6 !== o[0] && 2 !== o[0])) {
                                    a = 0;
                                    continue
                                }
                                if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
                                    a.label = o[1];
                                    break
                                }
                                if (6 === o[0] && a.label < r[1]) {
                                    a.label = r[1],
                                    r = o;
                                    break
                                }
                                if (r && a.label < r[2]) {
                                    a.label = r[2],
                                    a.ops.push(o);
                                    break
                                }
                                r[2] && a.ops.pop(),
                                a.trys.pop();
                                continue
                            }
                            o = e.call(t, a)
                        } catch (t) {
                            o = [6, t],
                            i = 0
                        } finally {
                            n = r = 0
                        }
                    if (5 & o[0])
                        throw o[1];
                    return {
                        value: o[0] ? o[1] : void 0,
                        done: !0
                    }
                }([o, s])
            }
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(0)
      , a = (n(131),
    n(203),
    n(38),
    n(148))
      , s = n(81)
      , c = n(141)
      , l = n(147)
      , u = n(2)
      , d = n(6)
      , p = n(8)
      , h = n(24)
      , f = (n(27),
    n(25))
      , m = (n(15),
    n(21),
    n(1586))
      , g = n(218)
      , v = n(0)
      , y = n(38)
      , b = n(131)
      , w = n(203)
      , S = n(24)
      , x = n(15)
      , M = n(27)
      , E = n(21)
      , C = function() {
        function t(t, e, n, o, u, d, v, y) {
            var b = this;
            this.SidebarMenuService = t,
            this.ToolboxMenuService = e,
            this.ModeSwitchService = n,
            this.ModeService = o,
            this.ConfigService = u,
            this.gettext = d,
            this.TrackingService = y,
            this.className = "sidebar-menu-item-measurements";
            var w = (new a.SidebarMenuItemBuilder).setTitle(this.gettext("Measurements", void 0, "title")).setKey(s.SidebarMenuItemsKey.MEASUREMENTS).setIcon(new c.IconInfo("material-icons","straighten")).setOrder(l.SidebarMenuItemsOrder.MEASUREMENTS).setClassCallback((function() {
                return b.ModeService.isMeasurementsMode() ? b.className + " active" : b.className
            }
            )).setOnClick((function() {
                return i(b, void 0, void 0, (function() {
                    return r(this, (function(t) {
                        switch (t.label) {
                        case 0:
                            return this.SidebarMenuService.closeMenu(),
                            this.ModeService.currentMode === h.ModeState.MEASUREMENTS ? [2] : [4, this.ToolboxMenuService.closeMenu().catch(p.handleWarning)];
                        case 1:
                            return t.sent(),
                            this.TrackingService.trackPreDefinedEvent((new m.MeasurementModeEnteredEvent).enteredFrom(g.MenuType.SidebarEditor)),
                            this.ModeSwitchService.switchToMode(h.ModeState.MEASUREMENTS).catch(p.handleWarning),
                            [2]
                        }
                    }
                    ))
                }
                ))
            }
            )).setIsVisible((function() {
                return v.canUseMeasurementTool() && b.ConfigService.getBoolean(f.Configs.MENU_MEASUREMENTS_VISIBLE, !0)
            }
            )).build();
            this.SidebarMenuService.addItem(w)
        }
        return t.ɵfac = function(e) {
            return new (e || t)(v.ɵɵinject(y.SidebarMenuService),v.ɵɵinject(b.ToolboxMenuService),v.ɵɵinject(w.ModeSwitchService),v.ɵɵinject(S.ModeService),v.ɵɵinject(x.ConfigService),v.ɵɵinject("gettext"),v.ɵɵinject(M.UserService),v.ɵɵinject(E.TrackingService))
        }
        ,
        t.ɵprov = v.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.MeasurementsModule = C,
    v.ɵsetClassMetadata(C, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: y.SidebarMenuService
        }, {
            type: b.ToolboxMenuService
        }, {
            type: w.ModeSwitchService
        }, {
            type: S.ModeService
        }, {
            type: x.ConfigService
        }, {
            type: void 0,
            decorators: [{
                type: o.Inject,
                args: ["gettext"]
            }]
        }, {
            type: M.UserService
        }, {
            type: E.TrackingService
        }]
    }
    ), null),
    u.module("IVWebApp").service("MeasurementsModule", d.downgradeInjectable(C))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(64)
      , a = n(218)
      , s = function(t) {
        function e() {
            return t.call(this, "MeasurementModeEntered") || this
        }
        return r(e, t),
        e.prototype.enteredFrom = function(t) {
            return this.withData("enteredFrom", a.MenuType[t]),
            this
        }
        ,
        e
    }(o.TrackingEvent);
    e.MeasurementModeEnteredEvent = s
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(141)
      , o = n(25);
    n(27);
    n(27);
    n(15),
    n(38),
    n(54);
    var a = n(57)
      , s = n(147);
    n(205),
    n(1591),
    n(1637),
    n(118),
    n(1641),
    n(1642);
    var c = n(148);
    n(1644),
    n(1650),
    n(1654);
    var l = n(92);
    n(1659);
    n(86);
    var u = n(21)
      , d = n(81)
      , p = n(6)
      , h = n(0);
    n(114);
    n(114);
    var f = n(8)
      , m = n(0)
      , g = n(27)
      , v = n(38)
      , y = n(15)
      , b = n(54)
      , w = n(86)
      , S = n(114)
      , x = function() {
        function t(t, e, n, i, r, o, a) {
            var s = this;
            this.UserService = t,
            this.SidebarMenuService = e,
            this.ConfigService = n,
            this.LicenseService = i,
            this.InstanceInformationService = r,
            this.GroupService = o,
            this.gettext = a;
            var c = this.InstanceInformationService.getInformation();
            Promise.all([c]).then((function(t) {
                var e = t[0];
                return s.initSideMenuItem(e)
            }
            )).catch(f.handleWarning)
        }
        return t.prototype.initSideMenuItem = function(t) {
            var e = this
              , n = [(new c.SidebarMenuItemBuilder).setKey(d.SidebarMenuItemsKey.SETTINGS_CONFIG).setTitle(this.gettext("Configuration", void 0, "title")).setIcon(new r.IconInfo("material-icons","tune")).setIsVisible((function() {
                return e.UserService.isAdmin()
            }
            )).setTemplate(u.TemplateName.CONFIG_SETTINGS).setClassCallback((function() {
                return "sidebar-menu-item-settings-config"
            }
            )).setOrder(s.SidebarMenuItemsOrder.SETTINGS_CONFIG).setIsFullscreen(!0).build(), (new c.SidebarMenuItemBuilder).setKey(d.SidebarMenuItemsKey.SETTINGS_SUBSCRIPTION).setTitle(t.isCloudInstance ? this.gettext("Subscription", void 0, "title") : this.gettext("Instance Key", void 0, "title")).setIcon(t.isCloudInstance ? new r.IconInfo("material-icons","monetization_on") : new r.IconInfo("material-icons","vpn_key")).setIsVisible((function() {
                return e.UserService.isAdmin()
            }
            )).setTemplate(u.TemplateName.INSTANCE_KEY_SUBSCRIPTION_SETTINGS).setClassCallback((function() {
                return "sidebar-menu-item-settings-license-subscription"
            }
            )).setOrder(s.SidebarMenuItemsOrder.SETTINGS_INSTANCE_KEY).setIsFullscreen(!0).build(), (new c.SidebarMenuItemBuilder).setKey(d.SidebarMenuItemsKey.SETTINGS_AUTHENTICATION).setTitle(this.gettext("Authentication", void 0, "title")).setIcon(new r.IconInfo("material-icons","security")).setIsVisible((function() {
                return e.UserService.isAdmin()
            }
            )).setTemplate(u.TemplateName.AUTH_SETTINGS).setClassCallback((function() {
                return "sidebar-menu-item-settings-authentication"
            }
            )).setOrder(s.SidebarMenuItemsOrder.SETTINGS_AUTH).setIsFullscreen(!0).build(), (new c.SidebarMenuItemBuilder).setKey(d.SidebarMenuItemsKey.SETTINGS_USERS).setTitle(this.gettext("Users", void 0, "title")).setIcon(new r.IconInfo("material-icons","person")).setIsVisible((function() {
                return !!e.UserService.isAdmin() && (!!e.LicenseService.isFeatureEnabled(l.LicenseFeatureType.USER_MANAGEMENT) || e.LicenseService.isLicenseRegisteredUsersAvailable() && e.LicenseService.isLicenseRegisteredUsersExceeded())
            }
            )).setTemplate(u.TemplateName.USERS_SETTINGS).setClassCallback((function() {
                return "sidebar-menu-item-settings-users"
            }
            )).setOrder(s.SidebarMenuItemsOrder.SETTINGS_USERS).setIsFullscreen(!0).build(), (new c.SidebarMenuItemBuilder).setKey(d.SidebarMenuItemsKey.SETTINGS_GROUPS).setTitle(this.gettext("Groups", void 0, "title")).setIcon(new r.IconInfo("material-icons","group")).setIsVisible((function() {
                if (!e.UserService.isAdmin())
                    return !1;
                var t = e.UserService.userInfo
                  , n = e.GroupService.getGroupsAsArray();
                return t && t.checkAttribute && t.checkAttribute(a.GroupAttributes.CAN_CREATE_USER_GROUPS) || n && n.some((function(t) {
                    return t.security.canWrite
                }
                ))
            }
            )).setTemplate(u.TemplateName.GROUPS_SETTINGS).setClassCallback((function() {
                return "sidebar-menu-item-settings-groups"
            }
            )).setOrder(s.SidebarMenuItemsOrder.SETTINGS_GROUPS).setIsFullscreen(!0).build(), (new c.SidebarMenuItemBuilder).setKey(d.SidebarMenuItemsKey.SETTINGS_DATASET_MANAGEMENT).setTitle(this.gettext("Dataset Management", void 0, "title")).setIcon(new r.IconInfo("material-icons","dns")).setIsVisible((function() {
                return e.UserService.isAdmin()
            }
            )).setTemplate(u.TemplateName.DATA_SETTINGS).setClassCallback((function() {
                return "sidebar-menu-item-settings-datasets"
            }
            )).setOrder(s.SidebarMenuItemsOrder.SETTINGS_DATASET_MANAGEMENT).setIsFullscreen(!0).build(), (new c.SidebarMenuItemBuilder).setKey(d.SidebarMenuItemsKey.SETTINGS_HIDDEN_IMAGES).setTitle(this.gettext("Hidden Images", void 0, "title")).setIcon(new r.IconInfo("material-icons","visibility_off")).setIsVisible((function() {
                return e.UserService.isAdmin()
            }
            )).setTemplate(u.TemplateName.HIDDENIMAGE_SETTINGS).setClassCallback((function() {
                return "sidebar-menu-item-settings-images"
            }
            )).setOrder(s.SidebarMenuItemsOrder.SETTINGS_HIDDEN_IMAGES).setIsFullscreen(!0).build(), (new c.SidebarMenuItemBuilder).setKey(d.SidebarMenuItemsKey.SETTINGS_AUDIT).setTitle(this.gettext("Audit", void 0, "title")).setIcon(new r.IconInfo("material-icons","assignment")).setIsVisible((function() {
                return e.UserService.canViewAuditPanel()
            }
            )).setTemplate(u.TemplateName.AUDIT_SETTINGS).setOrder(s.SidebarMenuItemsOrder.SETTINGS_AUDIT).setIsFullscreen(!0).build()]
              , i = (new c.SidebarMenuItemBuilder).setKey(d.SidebarMenuItemsKey.SETTINGS).setTitle(this.gettext("Settings", void 0, "title")).setIcon(new r.IconInfo("material-icons","settings")).setIsVisible((function() {
                var t = n.some((function(t) {
                    return t.isVisible()
                }
                ));
                return !(!t || !e.SidebarMenuService.isItemOnStack(i)) || !!e.ConfigService.getBoolean(o.Configs.MENU_SETTINGS_VISIBLE, !0) && t
            }
            )).setTemplate(u.TemplateName.SETTINGS).setClassCallback((function() {
                return "sidebar-menu-item-settings"
            }
            )).setOrder(s.SidebarMenuItemsOrder.SETTINGS).setItems(n).build();
            this.SidebarMenuService.addItem(i)
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(m.ɵɵinject(g.UserService),m.ɵɵinject(v.SidebarMenuService),m.ɵɵinject(y.ConfigService),m.ɵɵinject(b.LicenseService),m.ɵɵinject(w.InstanceInformationService),m.ɵɵinject(S.GroupService),m.ɵɵinject("gettext"))
        }
        ,
        t.ɵprov = m.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.SettingsModule = x,
    m.ɵsetClassMetadata(x, [{
        type: h.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: g.UserService
        }, {
            type: v.SidebarMenuService
        }, {
            type: y.ConfigService
        }, {
            type: b.LicenseService
        }, {
            type: w.InstanceInformationService
        }, {
            type: S.GroupService
        }, {
            type: void 0,
            decorators: [{
                type: h.Inject,
                args: ["gettext"]
            }]
        }]
    }
    ), null),
    i.module("IVWebApp").service("SettingsModule", p.downgradeInjectable(x))
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function() {
        function t(t) {
            this.datasetName = t
        }
        return t.prototype.toData = function() {
            var t = {};
            return t.dataset_name = this.datasetName,
            t
        }
        ,
        t.prototype.fillDto = function(t) {
            t.dataset_name = this.datasetName
        }
        ,
        t
    }();
    e.DatasetManagementRequest = o;
    var a = function(t) {
        function e(e, n, i, r) {
            var o = t.call(this, e) || this;
            return o.datasetLocation = n,
            o.datasetOrientation = i,
            o.referenceDatasetId = r,
            o
        }
        return r(e, t),
        e.prototype.toData = function() {
            var e = {};
            return t.prototype.fillDto.call(this, e),
            e.dataset_location = this.datasetLocation,
            e.dataset_orientation = this.datasetOrientation,
            e.reference_dataset_id = this.referenceDatasetId,
            e
        }
        ,
        e
    }(o);
    e.DatasetManagementImportRequest = a
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        this.name = t.name,
        this.inDatabase = t.in_database,
        this.onDisk = t.on_disk
    }
      , a = function(t) {
        function e(e) {
            var n = t.call(this, e) || this;
            return n.color = e.color,
            n.title = e.title,
            n.inBundleInDatabase = e.in_bundle_in_database,
            n.uniqueLocationCount = e.unique_location_count,
            n.locationCount = e.location_count,
            n
        }
        return r(e, t),
        e
    }(o);
    e.DatasetOnDisk = a;
    var s = function(t) {
        function e(e) {
            var n = t.call(this, e) || this;
            return n.serial = e.serial,
            n.file = e.file,
            n.nodesInDatabase = e.nodes_in_database,
            n.edgesInDatabase = e.edges_in_database,
            n.navgraphOnDisk = e.navgraph_on_disk,
            n.mapsInDatabase = e.maps_in_database,
            n.mapsOnDisk = e.maps_on_disk,
            n.floorMapsOnDisk = e.floor_maps_on_disk,
            n.datasetsInDatabase = e.datasets_in_database,
            n.datasetsWithSiteModel = e.datasets_with_site_model,
            n.wifiInDatabase = e.wifi_in_database,
            n.managed = e.managed,
            n.newMaps = e.new_maps,
            n.uniqueLocationsCount = e.unique_locations_count,
            n.locationsCount = e.locations_count,
            n.correctVisualIndexVersion = e.correct_visual_index_version,
            n
        }
        return r(e, t),
        e
    }(o);
    e.BundleOnDisk = s
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e(e) {
            var n = t.call(this) || this;
            return n.coloredMap = !1,
            n.bundleFilename = e,
            n
        }
        return r(e, t),
        e.prototype.toData = function() {
            var e = t.prototype.toData.call(this);
            return e.colored = this.coloredMap,
            e
        }
        ,
        e.prototype.setColoredMap = function(t) {
            this.coloredMap = t
        }
        ,
        e
    }(n(432).BundleManagementRequest);
    e.MapAndNavgraphGenerationRequest = o
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1592),
    n(1593),
    n(1595),
    n(1597),
    n(1602),
    n(1622),
    n(1627),
    n(1633),
    n(1635);
    var r = function() {
        function t(t, e) {
            var n = this;
            this.$scope = t,
            this.DatasetManagementService = e,
            this.DatasetManagementService.showModalOnRequestFinish = !1,
            this.$scope.$on("$destroy", (function() {
                n.DatasetManagementService.dataManagementRequestRunning && (n.DatasetManagementService.showModalOnRequestFinish = !0)
            }
            ))
        }
        return t.$inject = ["$scope", "DatasetManagementService"],
        t
    }()
      , o = function() {
        function t() {
            this.restrict = "E",
            this.controller = r,
            this.templateUrl = "DatasetManagementUI/DatasetManagement.html"
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.DatasetManagementDirective = o,
    i.module("IVWebApp").directive("datasetManagement", o.factory())
}
, function(t, e) {
    var n = "DatasetManagementUI/DatasetManagement.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div>\n\t<modal>\n\t\t<bundle-converter></bundle-converter>\n\t</modal>\n\n\t<div class="container-fluid row">\n\t\t<disk-space class="col-md-3 col-xs-12"></disk-space>\n\t\t<pano-count class="col-md-offset-1 col-md-3 col-xs-12"></pano-count>\n\t</div>\n\n\t<bundle-list></bundle-list>\n\n\t<datasets-without-bundle-list></datasets-without-bundle-list>\n\n\t<point-cloud-import></point-cloud-import>\n\n\t<job-list></job-list>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1594);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, ".z-index-1{box-shadow:none;position:relative;z-index:1}.z-index-2{box-shadow:0 1.5px 4px rgba(0,0,0,.24),0 1.5px 6px rgba(0,0,0,.12);position:relative;z-index:5}.z-index-3{box-shadow:0 3px 12px rgba(0,0,0,.23),0 3px 12px rgba(0,0,0,.16);position:relative;z-index:10}.z-index-4{box-shadow:0 6px 12px rgba(0,0,0,.23),0 10px 40px rgba(0,0,0,.19);position:relative;z-index:15}.z-index-5{box-shadow:0 10px 20px rgba(0,0,0,.22),0 14px 56px rgba(0,0,0,.25);position:relative;z-index:20}.front-element{z-index:1031}.full-window{position:fixed;margin:0;padding:0;left:0;right:0;top:0;bottom:0;z-index:1029;border-radius:0}.full-window-scroll{max-height:100vh}.full-window-scroll,.panel-autoscroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.panel-autoscroll{max-height:80vh}.autoscroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.fixed-top-right{position:fixed;top:10px;right:0}.center-vertical{position:absolute;top:50%;transform:translateY(-50%)}.float-left{float:left}.float-right{float:right}.margin-top-small,bundle-list>.panel .file-row:not(:first-of-type),datasets-without-bundle-list>.panel .file-row:not(:first-of-type),job-list>.panel .file-row:not(:first-of-type),point-cloud-import>.panel .file-row:not(:first-of-type){margin-top:5px!important}.margin-left-small{margin-left:5px!important}.margin-right-small{margin-right:5px!important}.margin-bottom-small{margin-bottom:5px!important}.margin-top,bundle-list>.panel .file-row:first-of-type,datasets-without-bundle-list>.panel .file-row:first-of-type,job-list>.panel .file-row:first-of-type,point-cloud-import>.panel .file-row:first-of-type{margin-top:15px!important}.margin-left{margin-left:15px!important}.margin-right{margin-right:15px!important}.margin-bottom{margin-bottom:15px!important}.margin-top-big{margin-top:25px!important}.margin-bottom-big{margin-bottom:25px!important}.no-margin{margin:0!important}.no-margin-bottom{margin-bottom:0!important}.padding-horizontal{padding-left:15px!important;padding-right:15px!important}.padding-top,.padding-vertical{padding-top:15px!important}.padding-bottom,.padding-vertical{padding-bottom:15px!important}.no-padding-top{padding-top:0!important}.no-padding-bottom{padding-bottom:0!important}.no-padding-horizontal,.no-padding-left{padding-left:0!important}.no-padding-horizontal,.no-padding-right{padding-right:0!important}.no-padding{padding:0!important}.border{border:1px solid #e6e6e6}.border-top{border-top:1px solid #e6e6e6}.border-bottom{border-bottom:1px solid #e6e6e6}.border-left{border-left:1px solid #e6e6e6}.border-right{border-right:1px solid #e6e6e6}.no-border{border:none;border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.no-border-width{border:none}.border-radius{border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}.border-radius,.border-radius-top{border-top-left-radius:4px!important;border-top-right-radius:4px!important}.border-radius-bottom{border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}.no-border-radius,bundle-list>.panel,bundle-list>.panel>.panel-heading,datasets-without-bundle-list>.panel,datasets-without-bundle-list>.panel>.panel-heading,job-list>.panel,job-list>.panel>.panel-heading,point-cloud-import>.panel,point-cloud-import>.panel>.panel-heading{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.indoorViewer.ios .no-hover-ios:hover{background-color:inherit!important}.no-shadow,bundle-list>.panel,datasets-without-bundle-list>.panel,job-list>.panel,point-cloud-import>.panel{box-shadow:none!important}.clear-background{border:0}.clear-background,.no-background{background:none!important}.no-overflow{overflow:hidden}.clickable,.clickable:hover{cursor:pointer}bundle-list>.panel,datasets-without-bundle-list>.panel,job-list>.panel,point-cloud-import>.panel{border-right:none;border-bottom:none;border-left:none}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2);
    n(1596);
    var a = n(185);
    n(205);
    var s = n(7)
      , c = function(t) {
        function e(e, n, i, r, o, a, s) {
            var c = t.call(this, e, n, i, r) || this;
            return c.BundleRepository = e,
            c.DatasetRepository = o,
            c.gettext = a,
            c.DatasetManagementService = s,
            c
        }
        return r(e, t),
        e.$inject = ["BundleRepository", "gettextCatalog", "$element", "ErrorService", "DatasetRepository", "gettext", "DatasetManagementService"],
        Object.defineProperty(e.prototype, "unconvertedBundles", {
            get: function() {
                var t = this;
                return s.sortBy(s.filter(this.DatasetManagementService.unmanagedBundles, (function(e) {
                    return !t.wasBundleConvertedBefore(e)
                }
                )), (function(e) {
                    return t.getDisplayName(e)
                }
                ))
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.isSelectedBundle = function(t) {
            return t === this.selectedBundle
        }
        ,
        e.prototype.isNoBundleSelected = function() {
            return this.DatasetManagementService.unmanagedBundles.indexOf(this.selectedBundle) < 0
        }
        ,
        e.prototype.selectBundle = function(t) {
            this.wasBundleConvertedBefore(t) || (this.selectedBundle = t)
        }
        ,
        e.prototype.wasBundleConvertedBefore = function(t) {
            return this.DatasetManagementService.bundles.some((function(e) {
                return e.serial === t.serial
            }
            ))
        }
        ,
        e.prototype.getTitle = function(t) {
            return this.wasBundleConvertedBefore(t) ? this.gettextCatalog.getString("This bundle file has already been imported.", void 0, void 0) : t.serial
        }
        ,
        e.prototype.getDisplayName = function(t) {
            return t.name ? t.name : t.file
        }
        ,
        e.prototype.convert = function() {
            var t = this;
            this.reportErrorInline(this.promiseProgressWrapper.wrap(this.DatasetManagementService.convertBundle(this.selectedBundle.file))).then((function() {
                return t.exitEditor(),
                t.DatasetManagementService.refresh()
            }
            )).catch((function() {}
            ))
        }
        ,
        e
    }(a.EntityEditorController);
    e.BundleConverterController = c;
    var l = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "Bundle/BundleConverter.html",
            this.controller = c,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.BundleConverterDirective = l,
    o.module("IVWebApp").directive("bundleConverter", l.factory())
}
, function(t, e, n) {
    var i = "Bundle/BundleConverter.html"
      , r = '\x3c!-- Bundle Converter Modal --\x3e\n<div class="modal fade" id="convertBundle" tabindex="-1" role="dialog"\n     aria-labelledby="convertBundle" aria-hidden="true" data-backdrop="static">\n\t<div class="modal-dialog">\n\t\t<div class="modal-content">\n\n\t\t\t<div class="modal-header">\n\t\t\t\t<img class="menu-close-button ic_svg" data-dismiss="modal"\n\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}">\n\t\t\t\t<h4 translate translate-context="title">\n\t\t\t\t\tImport Bundle File from Disk\n\t\t\t\t</h4>\n\t\t\t</div>\n\n\t\t\t<div class="modal-body">\n\n\t\t\t\t<ul class="margin-bottom-small list-group" ng-repeat="bundle in vm.unconvertedBundles">\n\t\t\t\t\t<button class="button list-group-item list-group-item-action"\n\t\t\t\t\t        ng-class="{active: vm.isSelectedBundle(bundle)}"\n\t\t\t\t\t        ng-click="vm.selectBundle(bundle)">\n\t\t\t\t\t\t<span iv-tooltip="{{vm.getTitle(bundle)}}"\n\t\t\t\t\t\t      data-container="false"\n\t\t\t\t\t\t      data-placement="top">\n\t\t\t\t\t\t\t{{vm.getDisplayName(bundle)}}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</button>\n\t\t\t\t</ul>\n\n\t\t\t</div>\n\n\t\t\t<div class="modal-footer">\n\t\t\t\t<cancel-button data-dismiss="modal"></cancel-button>\n\t\t\t\t<default-button ng-disabled="vm.isNoBundleSelected()"\n\t\t\t\t                ng-click="vm.convert()">\n\t\t\t\t\t<span translate translate-context="title">Import</span>\n\t\t\t\t</default-button>\n\t\t\t</div>\n\n\t\t</div>\n\t</div>\n</div>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1598),
    n(615);
    var r = function() {
        function t(t, e, n) {
            var i = this;
            this.StatusCheckService = t,
            this.fetchDiskSpaceInfo();
            var r = e.refreshed.connect((function() {
                return i.fetchDiskSpaceInfo()
            }
            ));
            n.$on("$destroy", (function() {
                return r.disconnect()
            }
            ))
        }
        return t.$inject = ["StatusCheckService", "DatasetManagementService", "$scope"],
        Object.defineProperty(t.prototype, "usedDiskSpace", {
            get: function() {
                return this.totalDiskSpace - this.freeDiskSpace
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.fetchDiskSpaceInfo = function() {
            var t = this;
            this.StatusCheckService.fetchServerHealth().then((function(e) {
                var n = e.components.diskSpace.details;
                t.setDiskSpace(n.free, n.total)
            }
            )).catch((function() {
                t.setDiskSpace(0, 0)
            }
            ))
        }
        ,
        t.prototype.setDiskSpace = function(t, e) {
            this.freeDiskSpace = t,
            this.totalDiskSpace = e
        }
        ,
        t.prototype.isInfoAvailable = function() {
            return void 0 !== this.freeDiskSpace && void 0 !== this.totalDiskSpace
        }
        ,
        t.prototype.isInfoValid = function() {
            return this.isInfoAvailable() && this.totalDiskSpace > 0
        }
        ,
        t
    }();
    e.DiskSpaceController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DatasetManagementUI/DiskSpace.html",
            this.controller = r,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.DiskSpaceDirective = o,
    i.module("IVWebApp").directive("diskSpace", o.factory())
}
, function(t, e) {
    var n = "DatasetManagementUI/DiskSpace.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '\x3c!--Fetching in progress--\x3e\n<span ng-if="!vm.isInfoAvailable()"\n      translate translate-context="Text indicating the disk usage is being calculated">\n\tCounting...\n</span>\n\x3c!--Fetching error--\x3e\n<span ng-if="vm.isInfoAvailable() && !vm.isInfoValid()" translate>\n\tCould not fetch disk space info from the server\n</span>\n\x3c!--Disk space info--\x3e\n<div ng-if="vm.isInfoValid()">\n\t<limit-display total="vm.totalDiskSpace" used="vm.usedDiskSpace" is-data="true">\n\t\t<span translate translate-context="title">Disk Capacity</span>\n\t</limit-display>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e) {
    var n = "LimitDisplay/LimitDisplay.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="title" ng-transclude>\n</div>\n<div class="flex-row">\n\t<div>\n\t\t<div ng-if="vm.isData" class="highlight-text">\n\t\t\t{{vm.total | uom:vm.DATA:1}}\n\t\t</div>\n\t\t<div ng-if="!vm.isData" class="highlight-text">\n\t\t\t{{vm.total}}\n\t\t</div>\n\t\t<div class="small-text" translate translate-context="As in: amount subscribed">\n\t\t\tSubscribed\n\t\t</div>\n\t</div>\n\t<div>\n\t\t<div ng-if="vm.isData" class="highlight-text">\n\t\t\t{{vm.used | uom:vm.DATA:1}}\n\t\t</div>\n\t\t<div ng-if="!vm.isData" class="highlight-text">\n\t\t\t{{vm.used}}\n\t\t</div>\n\t\t<div class="small-text" translate translate-context="As in: amount used">\n\t\t\tUsed\n\t\t</div>\n\t</div>\n\t<div>\n\t\t<div ng-if="vm.isData" class="highlight-text">\n\t\t\t{{vm.total - vm.used | uom:vm.DATA:1}}\n\t\t</div>\n\t\t<div ng-if="!vm.isData" class="highlight-text">\n\t\t\t{{vm.total - vm.used}}\n\t\t</div>\n\t\t<div class="small-text" translate translate-context="As in: amount free">\n\t\t\tFree\n\t\t</div>\n\t</div>\n</div>\n<div>\n\t<div class="progress">\n\t\t<div class="progress-bar" role="progressbar" ng-style="{width: vm.percent + \'%\'}"\n\t\t     ng-class="{\'progress-bar-warning\': vm.isWarning, \'progress-bar-danger\': vm.isDanger}">\n\t\t</div>\n\t</div>\n\t<div class="flex-row">\n\t\t<div class="small-text" translate translate-context="As in: amount used">\n\t\t\tUsed\n\t\t</div>\n\t\t<div class="small-text">\n\t\t\t{{vm.percent | number:0}}%\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1601);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "limit-display{padding:1.25em;color:#4a4a4a}limit-display .title{font-size:1.1em;margin-bottom:1.25em}limit-display .flex-row{display:flex;justify-content:space-between}limit-display .highlight-text{font-size:1.2em;color:#2e88b3}limit-display .small-text{font-size:.8em}limit-display .progress{margin-top:1.25em;margin-bottom:.25em;height:.75em}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1603),
    n(1605),
    n(1609),
    n(205),
    n(434),
    n(345);
    var r = n(283)
      , o = n(21);
    n(1610),
    n(1618),
    n(1620);
    var a = n(8)
      , s = function() {
        function t(t, e, n, i) {
            var r = this;
            this.DatasetManagementService = t,
            this.BundleRepository = e,
            this.JobListService = n,
            this.LicenseService = i,
            this.bundles = this.DatasetManagementService.bundles,
            this.progress = this.DatasetManagementService.progress,
            this.panoCountEnforced = !1,
            this.unmanagedBundles = this.DatasetManagementService.unmanagedBundles,
            this.visualIndexUploadCallback = function(t) {
                r.visualIndexUploader = t
            }
            ,
            this.DatasetManagementService.refresh(),
            this.BundleRepository.findAll().catch(a.handleWarning),
            this.panoCountEnforced = i.isLicenseMaxLocationsAvailable()
        }
        return t.$inject = ["DatasetManagementService", "BundleRepository", "JobListService", "LicenseService"],
        t.prototype.createBundle = function() {
            this.bundleToEdit = this.BundleRepository.create(),
            i.element("#editBundle").modal("show")
        }
        ,
        t.prototype.importBundle = function(t) {
            this.DatasetManagementService.importBundle(t),
            o.TrackingService.trackBundleLoaded()
        }
        ,
        t.prototype.removeBundleFromDisk = function(t) {
            this.DatasetManagementService.removeBundleFromDisk(t).catch((function() {}
            ))
        }
        ,
        t.prototype.unloadBundle = function(t) {
            this.DatasetManagementService.unloadBundle(t).catch((function() {}
            )),
            o.TrackingService.trackBundleUnloaded()
        }
        ,
        t.prototype.convertBundle = function(t) {
            this.DatasetManagementService.convertBundle(t.file).catch((function() {}
            ))
        }
        ,
        t.prototype.convertNewBundle = function() {
            i.element("#convertBundle").modal("show")
        }
        ,
        t.prototype.editBundle = function(t) {
            this.bundleToEdit = this.BundleRepository.create(),
            this.bundleToEdit.copy(this.BundleRepository.findCachedBySerial(t.serial)),
            i.element("#editBundle").modal("show")
        }
        ,
        t.prototype.downloadZip = function(t) {
            this.DatasetManagementService.downloadZip(t),
            o.TrackingService.trackBundleDownload()
        }
        ,
        t.prototype.showMapCreationModal = function(t) {
            i.element("#create-maps-" + t.serial).modal("show")
        }
        ,
        t.prototype.deleteVisualIndex = function(t) {
            this.DatasetManagementService.deleteVisualIndex(t).catch(a.handleWarning),
            t.correctVisualIndexVersion = void 0
        }
        ,
        t.prototype.doesBundleContainVisualIndex = function(t) {
            return void 0 !== t.correctVisualIndexVersion
        }
        ,
        t.prototype.importMaps = function(t) {
            this.DatasetManagementService.importMaps(t)
        }
        ,
        t.prototype.unloadMaps = function(t) {
            this.DatasetManagementService.unloadMaps(t).catch((function() {}
            )),
            o.TrackingService.trackMapsRemoved()
        }
        ,
        t.prototype.downloadMaps = function(t) {
            !1 !== t.floorMapsOnDisk ? (this.DatasetManagementService.downloadMaps(t),
            o.TrackingService.trackMapsDownloaded()) : i.element("#floor-maps-generation-modal-" + t.serial).modal("show")
        }
        ,
        t.prototype.generateFloorMaps = function(t) {
            i.element("#create-floor-maps-" + t.serial).modal("show")
        }
        ,
        t.prototype.createNavgraph = function(t) {
            this.DatasetManagementService.createNavgraph(t),
            o.TrackingService.trackNavGraphCreated()
        }
        ,
        t.prototype.importNavgraph = function(t) {
            this.DatasetManagementService.importNavgraph(t),
            o.TrackingService.trackNavGraphImported()
        }
        ,
        t.prototype.unloadNavgraph = function(t) {
            this.DatasetManagementService.unloadNavgraph(t).catch((function() {}
            )),
            o.TrackingService.trackNavGraphRemoved()
        }
        ,
        t.prototype.importWifi = function(t) {
            this.DatasetManagementService.importWifi(t),
            o.TrackingService.trackNavDataImported()
        }
        ,
        t.prototype.unloadWifi = function(t) {
            this.DatasetManagementService.unloadWifi(t).catch((function() {}
            )),
            o.TrackingService.trackNavDataRemoved()
        }
        ,
        t.prototype.getSiteModelWarning = function(t) {
            return this.DatasetManagementService.getSiteModelWarning(t)
        }
        ,
        t.prototype.isConvertNewBundleVisible = function() {
            var t = this;
            return this.unmanagedBundles.length > 0 && !this.unmanagedBundles.every((function(e) {
                return t.bundles.some((function(t) {
                    return t.serial === e.serial
                }
                ))
            }
            ))
        }
        ,
        t.prototype.isDataManagementRunning = function() {
            return this.JobListService.progress.jobRunning || this.DatasetManagementService.dataManagementRequestRunning || this.DatasetManagementService.dataManagementJobTriggered || this.DatasetManagementService.visualIndexUploadOngoing
        }
        ,
        t.prototype.isBundleImportJobRunning = function(t) {
            return this.isJobRunning(t, r.JobName.BUNDLE_IMPORT_JOB)
        }
        ,
        t.prototype.isMapsAndNavgraphGeneratorJobRunning = function(t) {
            return this.isJobRunning(t, r.JobName.MAPS_AND_NAVGRAPH_GENERATOR_JOB)
        }
        ,
        t.prototype.isMapsGeneratorJobRunning = function(t) {
            return this.isJobRunning(t, r.JobName.MAPS_GENERATOR_JOB)
        }
        ,
        t.prototype.isMapsTilerJobRunning = function(t) {
            return this.isJobRunning(t, r.JobName.FLOOR_MAPS_TILER_JOB)
        }
        ,
        t.prototype.areThereMaps = function(t) {
            return 0 !== t.mapsInDatabase && t.newMaps
        }
        ,
        t.prototype.isWifiImportJobRunning = function(t) {
            return this.isJobRunning(t, r.JobName.BUNDLE_WIFI_IMPORT_JOB)
        }
        ,
        t.prototype.isNavgraphImportJobRunning = function(t) {
            return this.isJobRunning(t, r.JobName.BUNDLE_NAVGRAPH_IMPORT_JOB)
        }
        ,
        t.prototype.isVisualIndexUploadOngoing = function() {
            return this.DatasetManagementService.visualIndexUploadOngoing
        }
        ,
        t.prototype.isNavgraphGeneratorJobRunning = function(t) {
            return this.isJobRunning(t, r.JobName.NAVGRAPH_GENERATOR_JOB)
        }
        ,
        t.prototype.isLoadDisabled = function(t) {
            return this.isDataManagementRunning() || this.bundleExceedsPanoLimit(t)
        }
        ,
        t.prototype.showExceedsWarning = function(t) {
            return !t.inDatabase && this.bundleExceedsPanoLimit(t)
        }
        ,
        t.prototype.showVisualIndexIncorrectVersionWarning = function(t) {
            return void 0 !== t.correctVisualIndexVersion && !1 === t.correctVisualIndexVersion
        }
        ,
        t.prototype.bundleExceedAmount = function(t) {
            if (!this.panoCountEnforced)
                return 0;
            var e = this.LicenseService.license
              , n = e.maxLocations - e.currentLocations;
            return t.uniqueLocationsCount - n
        }
        ,
        t.prototype.bundleExceedsPanoLimit = function(t) {
            return this.bundleExceedAmount(t) > 0
        }
        ,
        t.prototype.isJobRunning = function(t, e) {
            return t === this.DatasetManagementService.currentBundle && this.JobListService.jobs.some((function(t) {
                return t.busy && t.name === e
            }
            ))
        }
        ,
        t
    }();
    e.BundleListController = s;
    var c = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DatasetManagementUI/BundleList.html",
            this.controller = s,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.BundleListDirective = c,
    i.module("IVWebApp").directive("bundleList", c.factory())
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1604);
    var r = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "Core/ContinueConfirmation/ContinueConfirmation.html",
            this.transclude = {
                buttonContent: "?buttonContent"
            },
            this.scope = {
                modalId: "@",
                onConfirmCallback: "&",
                buttonDisabled: "=?",
                buttonClass: "@?"
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.ContinueConfirmationDirective = r,
    i.module("IVWebApp").directive("continueConfirmation", r.factory())
}
, function(t, e) {
    var n = "Core/ContinueConfirmation/ContinueConfirmation.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '\x3c!-- Continue confirm Modal --\x3e\n<modal>\n\t<div class="modal fade" id="{{modalId}}" tabindex="-1" role="dialog"\n\t     aria-labelledby="{{modalId}}" aria-hidden="true">\n\t\t<div class="modal-dialog" role="document">\n\t\t\t<div class="modal-content">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<h4 translate translate-context="title">Confirm</h4>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t<div ng-transclude>\n\t\t\t\t\t\t<span translate>Are you sure you want to continue?</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t<cancel-button class="btn btn-secondary" data-dismiss="modal"></cancel-button>\n\t\t\t\t\t<default-button class="btn btn-primary" data-dismiss="modal"\n\t\t\t\t\t                ng-click="onConfirmCallback()">\n\t\t\t\t\t\t<div ng-transclude="buttonContent">\n\t\t\t\t\t\t\t<span translate translate-context="title">\n\t\t\t\t\t\t\t\tConfirm\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</default-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2);
    n(1606),
    n(1607);
    var a = n(185)
      , s = n(7)
      , c = n(220)
      , l = n(89)
      , u = n(21)
      , d = function(t) {
        function e(e, n, i, r, o, a, s, u) {
            var d = t.call(this, e, n, i, r) || this;
            return d.BundleRepository = e,
            d.DatasetRepository = o,
            d.gettext = a,
            d.DatasetManagementService = s,
            d.TrackingService = u,
            d.removeDatasetsFromDisk = !1,
            d.removePromiseProgressWrapper = new l.PromiseProgressWrapper,
            d.selectedDatasets = new Set,
            d.bundleTreeConfig = c.DatasetTreeConfigurationFactory.createBundleEditorConfig(a("Datasets in Bundle", void 0, "title")),
            d.noBundleTreeConfig = c.DatasetTreeConfigurationFactory.createBundleEditorConfig(a("Datasets Without Bundle", void 0, "title")),
            d
        }
        return r(e, t),
        e.$inject = ["BundleRepository", "gettextCatalog", "$element", "ErrorService", "DatasetRepository", "gettext", "DatasetManagementService", "TrackingService"],
        Object.defineProperty(e.prototype, "model", {
            get: function() {
                return this._model
            },
            set: function(t) {
                this._model = t,
                this.removeDatasetsFromDisk = !1,
                this.updateDatasets()
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.areAllDatasetsSelected = function(t) {
            var e = this;
            return s.every(t, (function(t) {
                return e.isDatasetSelected(t)
            }
            ))
        }
        ,
        e.prototype.areNoDatasetsSelected = function(t) {
            var e = this;
            return s.every(t, (function(t) {
                return !e.isDatasetSelected(t)
            }
            ))
        }
        ,
        e.prototype.deselectDatasets = function(t) {
            for (var e = 0, n = t; e < n.length; e++) {
                var i = n[e];
                this.selectedDatasets.delete(i)
            }
        }
        ,
        e.prototype.selectDatasets = function(t) {
            for (var e = 0, n = t; e < n.length; e++) {
                var i = n[e];
                this.selectedDatasets.add(i)
            }
        }
        ,
        e.prototype.toggleSelection = function(t) {
            this.isDatasetSelected(t) ? this.deselectDatasets([t]) : this.selectDatasets([t])
        }
        ,
        e.prototype.isDatasetSelected = function(t) {
            return this.selectedDatasets.has(t)
        }
        ,
        e.prototype.isSavedBundle = function() {
            return this.model && void 0 !== this.model.id
        }
        ,
        e.prototype.areAnyBundleDatasetsSelected = function() {
            var t = this;
            return this.bundleDatasets.some((function(e) {
                return t.isDatasetSelected(e)
            }
            ))
        }
        ,
        e.prototype.areAnyNoBundleDatasetsSelected = function() {
            var t = this;
            return this.noBundleDatasets.some((function(e) {
                return t.isDatasetSelected(e)
            }
            ))
        }
        ,
        e.prototype.addSelectedDatasetsToBundle = function() {
            var t = this
              , e = s.filter(this.noBundleDatasets, (function(e) {
                return t.isDatasetSelected(e)
            }
            ));
            e.push.apply(e, this.bundleDatasets),
            this.bundleDatasets = e,
            this.noBundleDatasets = s.filter(this.noBundleDatasets, (function(e) {
                return !t.isDatasetSelected(e)
            }
            )),
            this.datasetsChanged = !0
        }
        ,
        e.prototype.removeSelectedDatasetsFromBundle = function() {
            var t = this
              , e = s.filter(this.bundleDatasets, (function(e) {
                return t.isDatasetSelected(e)
            }
            ));
            e.push.apply(e, this.noBundleDatasets),
            this.noBundleDatasets = e,
            this.bundleDatasets = s.filter(this.bundleDatasets, (function(e) {
                return !t.isDatasetSelected(e)
            }
            )),
            this.datasetsChanged = !0
        }
        ,
        e.prototype.saveDatasetsAndBundle = function() {
            var t = this;
            this.saveBundle().then((function(e) {
                return t.datasetsChanged ? (t.datasetsChanged = !1,
                t.reportErrorInline(t.promiseProgressWrapper.wrap(t.saveDatasets(e)))) : Promise.resolve([])
            }
            )).then((function() {
                return t.exitEditor(),
                t.refreshData()
            }
            )).catch((function() {}
            ))
        }
        ,
        e.prototype.saveBundle = function() {
            return this.model.id ? u.TrackingService.trackBundleEdited() : u.TrackingService.trackBundleCreated(),
            this.reportErrorInline(this.promiseProgressWrapper.wrap(this.BundleRepository.save(this.model, !1).then((function(t) {
                return t[0]
            }
            ))))
        }
        ,
        e.prototype.saveDatasets = function(t) {
            for (var e = 0, n = this.bundleDatasets; e < n.length; e++) {
                n[e].bundle = t
            }
            for (var i = 0, r = this.noBundleDatasets; i < r.length; i++) {
                r[i].bundle = void 0
            }
            var o = s.concat(this.noBundleDatasets, this.bundleDatasets);
            return this.DatasetRepository.save(o, !1)
        }
        ,
        e.prototype.updateDatasets = function() {
            var t = this;
            this.bundleDatasets = this.model && this.model.id ? s.filter(this.DatasetRepository.data, (function(e) {
                return e.bundle && e.bundle.id === t.model.id
            }
            )) : [],
            this.noBundleDatasets = s.filter(this.DatasetRepository.data, (function(t) {
                return void 0 === t.bundle
            }
            ))
        }
        ,
        e.prototype.remove = function() {
            var t = this;
            return this.removePromiseProgressWrapper.wrap(this.removeData().then((function() {
                return t.removeFinally()
            }
            )).catch((function() {
                return t.removeFinally()
            }
            )))
        }
        ,
        e.prototype.removeData = function() {
            var t = this
              , e = [this.repository.remove(this.model)];
            if (this.removeDatasetsFromDisk)
                for (var n = function(n) {
                    var r = i.DatasetManagementService.datasets.find((function(t) {
                        return t.name === n.name
                    }
                    ));
                    if (!r)
                        return "continue";
                    e.push(i.DatasetManagementService.unloadDataset(r, !0).then((function() {
                        return t.DatasetManagementService.removeDatasetFromDisk(r, !0)
                    }
                    )))
                }, i = this, r = 0, o = this.bundleDatasets; r < o.length; r++) {
                    n(o[r])
                }
            return Promise.all(e)
        }
        ,
        e.prototype.removeFinally = function() {
            this.exitEditor(),
            this.refreshData()
        }
        ,
        e.prototype.refreshData = function() {
            this.DatasetManagementService.refresh()
        }
        ,
        e.prototype.isRemovingInProgress = function() {
            return this.removePromiseProgressWrapper.isInProgress
        }
        ,
        e
    }(a.EntityEditorController);
    e.BundleEditorController = d;
    var p = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "Bundle/BundleEditor.html",
            this.controller = d,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                model: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.BundleEditorDirective = p,
    o.module("IVWebApp").directive("bundleEditor", p.factory())
}
, function(t, e, n) {
    var i = "Bundle/BundleEditor.html"
      , r = '\x3c!-- Bundle Editor Modal --\x3e\n<div class="modal fade" id="editBundle" tabindex="-1" role="dialog" aria-labelledby="editBundle"\n     aria-hidden="true" data-backdrop="static">\n\t<div class="modal-dialog">\n\t\t<div class="modal-content">\n\n\t\t\t<div class="modal-header">\n\t\t\t\t<img class="menu-close-button ic_svg" data-dismiss="modal"\n\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}">\n\t\t\t\t<h4 ng-if="vm.isSavedBundle()" translate translate-context="title">\n\t\t\t\t\tEdit Bundle\n\t\t\t\t</h4>\n\t\t\t\t<h4 ng-if="!vm.isSavedBundle()" translate translate-context="title">\n\t\t\t\t\tCreate Bundle\n\t\t\t\t</h4>\n\t\t\t</div>\n\n\t\t\t<div class="modal-body">\n\t\t\t\t<div class="tab-content">\n\t\t\t\t\t<div role="tabpanel" class="tab-pane active">\n\t\t\t\t\t\t<form class="form-horizontal" role="form">\n\t\t\t\t\t\t\t\x3c!--Bundle Name--\x3e\n\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t<label class="col-sm-2 control-label" for="bundleTitleEdit"\n\t\t\t\t\t\t\t\t       translate>\n\t\t\t\t\t\t\t\t\tName\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t<div class="col-sm-10">\n\t\t\t\t\t\t\t\t\t<input class="form-control" id="bundleTitleEdit" type="text"\n\t\t\t\t\t\t\t\t\t       ng-model="vm.model.name"\n\t\t\t\t\t\t\t\t\t       placeholder="{{\'Enter name of bundle\'|translate}}"\n\t\t\t\t\t\t\t\t\t       init-focus>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\x3c!--Permissions Editor --\x3e\n\t\t\t\t\t\t\t<permission-editor model="vm.model"\n\t\t\t\t\t\t\t                   model-type="\'bundle\'"\n\t\t\t\t\t\t\t                   col-span="2">\n\t\t\t\t\t\t\t</permission-editor>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<hr>\n\t\t\t\t<div class="row margin-top-big">\n\t\t\t\t\t<div class="col-sm-5">\n\t\t\t\t\t\t<dataset-tree parent-controller="vm"\n\t\t\t\t\t\t              datasets="vm.bundleDatasets"\n\t\t\t\t\t\t              tree-config="vm.bundleTreeConfig"\n\t\t\t\t\t\t              ng-if="vm.bundleDatasets.length">\n\t\t\t\t\t\t</dataset-tree>\n\t\t\t\t\t\t<h4 translate\n\t\t\t\t\t\t    ng-if="!vm.bundleDatasets.length">\n\t\t\t\t\t\t\tNo datasets added to the bundle\n\t\t\t\t\t\t</h4>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-sm-2">\n\t\t\t\t\t\t<div class="text-center mt-40">\n\t\t\t\t\t\t\t<button class="btn btn-default"\n\t\t\t\t\t\t\t        ng-click="vm.addSelectedDatasetsToBundle()"\n\t\t\t\t\t\t\t        ng-disabled="!vm.areAnyNoBundleDatasetsSelected()"\n\t\t\t\t\t\t\t        title="{{\'Add selected datasets to bundle\'|translate}}">\n\t\t\t\t\t\t\t\t<i class="fa fa-arrow-left"></i>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="text-center mt-10">\n\t\t\t\t\t\t\t<button class="btn btn-default"\n\t\t\t\t\t\t\t        ng-click="vm.removeSelectedDatasetsFromBundle()"\n\t\t\t\t\t\t\t        ng-disabled="!vm.areAnyBundleDatasetsSelected()"\n\t\t\t\t\t\t\t        title="{{\'Remove selected datasets from bundle\'|translate}}">\n\t\t\t\t\t\t\t\t<i class="fa fa-arrow-right"></i>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-sm-5">\n\t\t\t\t\t\t<dataset-tree parent-controller="vm"\n\t\t\t\t\t\t              datasets="vm.noBundleDatasets"\n\t\t\t\t\t\t              tree-config="vm.noBundleTreeConfig"\n\t\t\t\t\t\t              ng-if="vm.noBundleDatasets.length">\n\t\t\t\t\t\t</dataset-tree>\n\t\t\t\t\t\t<h4 translate\n\t\t\t\t\t\t    ng-if="!vm.noBundleDatasets.length">\n\t\t\t\t\t\t\tNo datasets without any bundle available\n\t\t\t\t\t\t</h4>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="row margin-top-big" ng-show="vm.error">\n\t\t\t\t\t<div class="col-sm-12">\n\t\t\t\t\t\t<span class="text-danger">\n\t\t\t\t\t\t\t{{vm.error.text}}: {{vm.error.statusText}} ({{vm.error.status}})\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<div ng-show="!!vm.error.details">\n\t\t\t\t\t\t\t{{vm.error.details}}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="modal-footer">\n\n\t\t\t\t<div class="margin-bottom">\n\t\t\t\t\t<span ng-if="!vm.bundleDatasets.length" translate>\n\t\t\t\t\t\tYou can only save a bundle which contains datasets.\n\t\t\t\t\t</span>\n\t\t\t\t\t<span ng-if="!vm.bundleDatasets.length && vm.isSavedBundle()" translate>\n\t\t\t\t\t\tTo remove all datasets from the bundle consider deleting it.\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\n\t\t\t\t<div>\n\t\t\t\t\t\x3c!--Delete--\x3e\n\t\t\t\t\t<delete-confirmation class="float-left"\n\t\t\t\t\t                     ng-if="vm.isSavedBundle()"\n\t\t\t\t\t                     on-confirm-callback="vm.remove()"\n\t\t\t\t\t                     button-disabled="vm.isRemovingInProgress()"\n\t\t\t\t\t                     in-progress="vm.isRemovingInProgress()">\n\t\t\t\t\t\t<span translate>The bundle file and directory on disk will be deleted</span>\n\t\t\t\t\t\t<div class="checkbox">\n\t\t\t\t\t\t\t<label>\n\t\t\t\t\t\t\t\t<input type="checkbox" ng-model="vm.removeDatasetsFromDisk">\n\t\t\t\t\t\t\t\t<span translate>Delete dataset directories from disk</span>\n\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</delete-confirmation>\n\n\t\t\t\t\t<cancel-button data-dismiss="modal"></cancel-button>\n\t\t\t\t\t<ok-button ng-click="vm.saveDatasetsAndBundle()"\n\t\t\t\t\t           ng-disabled="!vm.bundleDatasets.length">\n\t\t\t\t\t</ok-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t</div>\n\t</div>\n</div>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1608);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, ".z-index-1{box-shadow:none;position:relative;z-index:1}.z-index-2{box-shadow:0 1.5px 4px rgba(0,0,0,.24),0 1.5px 6px rgba(0,0,0,.12);position:relative;z-index:5}.z-index-3{box-shadow:0 3px 12px rgba(0,0,0,.23),0 3px 12px rgba(0,0,0,.16);position:relative;z-index:10}.z-index-4{box-shadow:0 6px 12px rgba(0,0,0,.23),0 10px 40px rgba(0,0,0,.19);position:relative;z-index:15}.z-index-5{box-shadow:0 10px 20px rgba(0,0,0,.22),0 14px 56px rgba(0,0,0,.25);position:relative;z-index:20}.front-element{z-index:1031}.full-window{position:fixed;margin:0;padding:0;left:0;right:0;top:0;bottom:0;z-index:1029;border-radius:0}.full-window-scroll{max-height:100vh}.full-window-scroll,.panel-autoscroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.panel-autoscroll{max-height:80vh}.autoscroll{overflow-y:auto;-webkit-overflow-scrolling:touch}.fixed-top-right{position:fixed;top:10px;right:0}.center-vertical{position:absolute;top:50%;transform:translateY(-50%)}.float-left{float:left}.float-right{float:right}.margin-top-small{margin-top:5px!important}.margin-left-small{margin-left:5px!important}.margin-right-small{margin-right:5px!important}.margin-bottom-small{margin-bottom:5px!important}.margin-top{margin-top:15px!important}.margin-left{margin-left:15px!important}.margin-right{margin-right:15px!important}.margin-bottom{margin-bottom:15px!important}.margin-top-big{margin-top:25px!important}.margin-bottom-big{margin-bottom:25px!important}.no-margin{margin:0!important}.no-margin-bottom{margin-bottom:0!important}.padding-horizontal{padding-left:15px!important;padding-right:15px!important}.padding-top,.padding-vertical{padding-top:15px!important}.padding-bottom,.padding-vertical{padding-bottom:15px!important}.no-padding-top{padding-top:0!important}.no-padding-bottom{padding-bottom:0!important}.no-padding-horizontal,.no-padding-left{padding-left:0!important}.no-padding-horizontal,.no-padding-right{padding-right:0!important}.no-padding{padding:0!important}.border{border:1px solid #e6e6e6}.border-top{border-top:1px solid #e6e6e6}.border-bottom{border-bottom:1px solid #e6e6e6}.border-left{border-left:1px solid #e6e6e6}.border-right{border-right:1px solid #e6e6e6}.no-border{border:none;border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.no-border-width{border:none}.border-radius{border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}.border-radius,.border-radius-top{border-top-left-radius:4px!important;border-top-right-radius:4px!important}.border-radius-bottom{border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important}.no-border-radius{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.indoorViewer.ios .no-hover-ios:hover{background-color:inherit!important}.no-shadow{box-shadow:none!important}.clear-background{border:0}.clear-background,.no-background{background:none!important}.no-overflow{overflow:hidden}.clickable,.clickable:hover{cursor:pointer}bundle-editor .modal-dialog{width:calc(100% - 20px);max-width:1022px}bundle-editor .tree-wrapper{background-color:#f0f0f0;border:1px solid #e6e6e6;border-top-left-radius:4px!important;border-top-right-radius:4px!important;border-bottom-right-radius:4px!important;border-bottom-left-radius:4px!important;padding:10px}bundle-editor .dataset-grp-toolbar,bundle-editor .list-group-item{background:transparent}bundle-editor hr{width:auto;margin:0 -15px -15px}", ""]),
    t.exports = e
}
, function(t, e, n) {
    var i = "DatasetManagementUI/BundleList.html"
      , r = '<div class="panel panel-default">\n\t<div class="panel-heading">\n\t\t<h4 translate translate-context="title">Alignment Bundles</h4>\n\t</div>\n\n\t<div class="panel-body">\n\t\t<div class="mb-10"\n\t\t     ng-show="vm.bundles.length == 0 && !vm.progress.loadingBundles"\n\t\t     translate>\n\t\t\tNo alignment bundles found\n\t\t</div>\n\t\t<span class="spinner" ng-show="vm.progress.loadingBundles">\n\t\t\t\t<img class="mb-10" ng-src="' + n(94) + '">\n\t\t\t</span>\n\n\t\t<div class="row margin-bottom-small" ng-repeat="bundle in vm.bundles">\n\t\t\t<div class="col-md-5 dataset-mgmt-row">\n\t\t\t\t<div>\n\t\t\t\t\t<strong ng-if="bundle.title">{{bundle.title}}: </strong>\n\t\t\t\t\t<span ng-if="bundle.name" title="{{bundle.serial}}">{{bundle.name}}</span>\n\t\t\t\t\t<span ng-if="!bundle.name && bundle.file" title="{{bundle.serial}}">{{bundle.file}}</span>\n\t\t\t\t\t<span ng-if="!bundle.name && !bundle.file" title="{{bundle.serial}}"\n\t\t\t\t\t      translate translate-context="Label displayed for unknown bundle">Unknown</span>\n\n\t\t\t\t\t\x3c!-- Show warning if visual_index folder exists but is old --\x3e\n\t\t\t\t\t<div ng-if="vm.doesBundleContainVisualIndex(bundle)"\n\t\t\t\t\t     class="dataset-mgmt-name">\n\t\t\t\t\t\t<span ng-if="bundle.correctVisualIndexVersion === true" translate>\n\t\t\t\t\t\t\tPositioning is available for this bundle.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span ng-if="bundle.correctVisualIndexVersion === false"\n\t\t\t\t\t\t      class="alert-warning" translate>\n\t\t\t\t\t\t\tPlease update the visual index in order to use indoor positioning.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div ng-if="bundle.inDatabase && bundle.managed" class="dataset-mgmt-name">\n\t\t\t\t\t\t<span ng-if="vm.panoCountEnforced" translate\n\t\t\t\t\t\t      translate-params-datasets="bundle.datasetsInDatabase"\n\t\t\t\t\t\t      translate-params-maps="bundle.mapsInDatabase"\n\t\t\t\t\t\t      translate-params-nodes="bundle.nodesInDatabase"\n\t\t\t\t\t\t      translate-params-edges="bundle.edgesInDatabase"\n\t\t\t\t\t\t      translate-params-unique-panoramas="bundle.uniqueLocationsCount"\n\t\t\t\t\t\t      translate-params-total-panoramas="bundle.locationsCount">\n\t\t\t\t\t\t\tdatasets: {{datasets}}, maps: {{maps}}, nodes: {{nodes}}, edges: {{edges}}, counted panoramas: {{uniquePanoramas}} out of {{totalPanoramas}}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span ng-if="!vm.panoCountEnforced" translate\n\t\t\t\t\t\t      translate-params-datasets="bundle.datasetsInDatabase"\n\t\t\t\t\t\t      translate-params-maps="bundle.mapsInDatabase"\n\t\t\t\t\t\t      translate-params-nodes="bundle.nodesInDatabase"\n\t\t\t\t\t\t      translate-params-edges="bundle.edgesInDatabase">\n\t\t\t\t\t\t\tdatasets: {{datasets}}, maps: {{maps}}, nodes: {{nodes}}, edges: {{edges}}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="col-md-7 dataset-mgmt-row">\n\t\t\t\t<div>\n\t\t\t\t\t\x3c!-- These span ng-if fix a styling issue related to button+tooltip, see also IV-1934 --\x3e\n\t\t\t\t\t<span ng-if="!bundle.inDatabase">\n\t\t\t\t\t\t<default-button ng-click="vm.importBundle(bundle)"\n\t\t\t\t\t\t                ng-disabled="vm.isLoadDisabled(bundle)"\n\t\t\t\t\t\t                in-progress="vm.isBundleImportJobRunning(bundle)"\n\t\t\t\t\t\t                button-tooltip="{{\'Load bundle\'|translate}}">\n\t\t\t\t\t\t\t<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>\n\t\t\t\t\t\t</default-button>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span ng-if="!bundle.inDatabase">\n\t\t\t\t\t\t<delete-confirmation\n\t\t\t\t\t\t\t\tbutton-disabled="vm.isDataManagementRunning()"\n\t\t\t\t\t\t\t\ton-confirm-callback="vm.removeBundleFromDisk(bundle)">\n\t\t\t\t\t\t\t<button-content>\n\t\t\t\t\t\t\t\t<i class="fa fa-trash-o"\n\t\t\t\t\t\t\t\t   iv-tooltip="{{\'Delete bundle from disk\' | translate}}">\n\t\t\t\t\t\t\t\t</i>\n\t\t\t\t\t\t\t</button-content>\n\n\t\t\t\t\t\t\t<span translate>The bundle file and directory on disk will be deleted</span>\n\t\t\t\t\t\t</delete-confirmation>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span ng-if="bundle.inDatabase">\n\t\t\t\t\t\t<default-button ng-click="vm.unloadBundle(bundle)"\n\t\t\t\t\t\t                ng-disabled="vm.isDataManagementRunning()"\n\t\t\t\t\t\t                button-tooltip="{{\'Unload bundle\'|translate}}">\n\t\t\t\t\t\t\t<span class="glyphicon glyphicon-minus" aria-hidden="true"></span>\n\t\t\t\t\t\t</default-button>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span ng-if="bundle.inDatabase && bundle.managed">\n\t\t\t\t\t\t\t<default-button button-tooltip="{{\'Edit bundle\' | translate}}"\n\t\t\t\t\t\t\t                ng-disabled="vm.isDataManagementRunning()"\n\t\t\t\t\t\t\t                ng-click="vm.editBundle(bundle)">\n\t\t\t\t\t\t\t<i class="fa fa-pencil"></i>\n\t\t\t\t\t\t</default-button>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span ng-if="bundle.inDatabase">\n\t\t\t\t\t\t<default-button ng-click="vm.downloadZip(bundle)"\n\t\t\t\t\t\t                ng-disabled="vm.isDataManagementRunning() || !bundle.onDisk"\n\t\t\t\t\t\t                button-tooltip="{{\'Download bundle archive\'|translate}}">\n\t\t\t\t\t\t\t<i class="fa fa-download"></i>\n\t\t\t\t\t\t</default-button>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span ng-if="bundle.inDatabase && bundle.managed && (!bundle.mapsOnDisk || !bundle.navgraphOnDisk)">\n\t\t\t\t\t\t<default-button ng-disabled="vm.isDataManagementRunning() || !bundle.onDisk"\n\t\t\t\t\t\t                title="{{vm.getSiteModelWarning(bundle)}}"\n\t\t\t\t\t\t                in-progress="vm.isMapsAndNavgraphGeneratorJobRunning(bundle)"\n\t\t\t\t\t\t                data-toggle="modal"\n\t\t\t\t\t\t                data-target="#create-maps-and-nav-{{bundle.serial}}">\n\t\t\t\t\t\t\t<span translate>Create maps and navgraph</span>\n\t\t\t\t\t\t\t<span class="fa fa-exclamation-triangle"\n\t\t\t\t\t\t\t      ng-if="vm.getSiteModelWarning(bundle)"></span>\n\t\t\t\t\t\t</default-button>\n\t\t\t\t\t\t<map-creation-modal map-creation-id="create-maps-and-nav-{{bundle.serial}}"\n\t\t\t\t\t\t                    with-navgraph="true"\n\t\t\t\t\t\t                    bundle="bundle">\n\t\t\t\t\t\t</map-creation-modal>\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<default-button ng-show="!bundle.managed"\n\t\t\t\t\t                ng-disabled="vm.isDataManagementRunning() || !bundle.onDisk"\n\t\t\t\t\t                data-toggle="modal"\n\t\t\t\t\t                data-target="#bundle-convert-to-managed-{{bundle.serial}}">\n\t\t\t\t\t\t<i class="fa fa-exchange" aria-hidden="true"></i>\n\t\t\t\t\t\t<span translate\n\t\t\t\t\t\t      translate-context="Button text for triggering the conversion from an unmanaged bundle to a managed one">\n\t\t\t\t\t\t\t\tConvert\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t</default-button>\n\n\t\t\t\t\t<continue-confirmation on-confirm-callback="vm.convertBundle(bundle)"\n\t\t\t\t\t                       modal-id="bundle-convert-to-managed-{{bundle.serial}}">\n\t\t\t\t\t\t<button-content>\n\t\t\t\t\t\t\t<i class="fa fa-exchange" aria-hidden="true"></i>\n\t\t\t\t\t\t\t<span translate\n\t\t\t\t\t\t\t      translate-context="Button text for triggering the conversion from an unmanaged bundle to a managed one">\n\t\t\t\t\t\t\t\tConvert\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</button-content>\n\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\tTo access advanced bundle features, you must convert to a managed bundle. No data will be changed in this process.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</continue-confirmation>\n\n\t\t\t\t\t<div class="btn-group dropdown"\n\t\t\t\t\t     ng-if="bundle.inDatabase && bundle.managed && bundle.onDisk">\n\t\t\t\t\t\t<default-button class="dropdown-toggle"\n\t\t\t\t\t\t                data-toggle="dropdown"\n\t\t\t\t\t\t                ng-disabled="vm.isDataManagementRunning()"\n\t\t\t\t\t\t                in-progress="vm.isNavgraphGeneratorJobRunning(bundle) ||\n\t\t\t\t\t\t\t                vm.isMapsGeneratorJobRunning(bundle) ||\n\t\t\t\t\t\t\t                vm.isMapsTilerJobRunning(bundle) ||\n\t\t\t\t\t\t\t                vm.isWifiImportJobRunning(bundle) ||\n\t\t\t\t\t\t\t                vm.isNavgraphImportJobRunning(bundle) ||\n\t\t\t\t\t\t\t\t\t\t\tvm.isVisualIndexUploadOngoing()">\n\t\t\t\t\t\t\t<span translate>Advanced</span>\n\t\t\t\t\t\t\t<span class="caret"></span>\n\t\t\t\t\t\t</default-button>\n\t\t\t\t\t\t<ul class="dropdown-menu">\n\t\t\t\t\t\t\t<li ng-click="vm.downloadMaps(bundle)" translate>\n\t\t\t\t\t\t\t\tDownload maps\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<continue-confirmation modal-id="floor-maps-generation-modal-{{bundle.serial}}"\n\t\t\t\t\t\t\t                       on-confirm-callback="vm.generateFloorMaps(bundle)">\n\t\t\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\t\t\tTo download maps they must be generated first. This may take some time. Start the map generation now?\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</continue-confirmation>\n\t\t\t\t\t\t\t<map-creation-modal\n\t\t\t\t\t\t\t\t\tmap-creation-id="create-floor-maps-{{bundle.serial}}"\n\t\t\t\t\t\t\t\t\tfloor-maps="true"\n\t\t\t\t\t\t\t\t\twith-navgraph="false"\n\t\t\t\t\t\t\t\t\tbundle="bundle">\n\t\t\t\t\t\t\t</map-creation-modal>\n\t\t\t\t\t\t\t<li ng-show="vm.areThereMaps(bundle)">\n\t\t\t\t\t\t\t\t<custom-map-upload bundle="bundle">\n\t\t\t\t\t\t\t\t</custom-map-upload>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<map-creation-modal map-creation-id="create-maps-{{bundle.serial}}"\n\t\t\t\t\t\t\t                    with-navgraph="false"\n\t\t\t\t\t\t\t                    bundle="bundle">\n\t\t\t\t\t\t\t</map-creation-modal>\n\t\t\t\t\t\t\t<li ng-show="bundle.inDatabase && !bundle.mapsOnDisk"\n\t\t\t\t\t\t\t    title="{{vm.getSiteModelWarning(bundle)}}"\n\t\t\t\t\t\t\t    ng-click="vm.showMapCreationModal(bundle)">\n\t\t\t\t\t\t\t\t<span translate>Create maps</span>\n\t\t\t\t\t\t\t\t<span class="fa fa-exclamation-triangle"\n\t\t\t\t\t\t\t\t      ng-if="vm.getSiteModelWarning(bundle)"></span>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li ng-show="bundle.inDatabase && bundle.mapsOnDisk"\n\t\t\t\t\t\t\t    title="{{vm.getSiteModelWarning(bundle)}}"\n\t\t\t\t\t\t\t    ng-click="vm.showMapCreationModal(bundle)">\n\t\t\t\t\t\t\t\t<span translate>Recreate maps</span>\n\t\t\t\t\t\t\t\t<span class="fa fa-exclamation-triangle"\n\t\t\t\t\t\t\t\t      ng-if="vm.getSiteModelWarning(bundle)"></span>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li ng-show="bundle.inDatabase && bundle.mapsOnDisk && !bundle.mapsInDatabase"\n\t\t\t\t\t\t\t    ng-click="vm.importMaps(bundle)"\n\t\t\t\t\t\t\t    translate>\n\t\t\t\t\t\t\t\tImport maps\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li ng-show="bundle.mapsInDatabase"\n\t\t\t\t\t\t\t    ng-click="vm.unloadMaps(bundle)"\n\t\t\t\t\t\t\t    translate>\n\t\t\t\t\t\t\t\tRemove maps\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li role="separator" class="divider"></li>\n\t\t\t\t\t\t\t<li ng-show="bundle.inDatabase && !bundle.navgraphOnDisk"\n\t\t\t\t\t\t\t    ng-click="vm.createNavgraph(bundle)"\n\t\t\t\t\t\t\t    translate>\n\t\t\t\t\t\t\t\tCreate navgraph\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li ng-show="bundle.inDatabase && bundle.navgraphOnDisk"\n\t\t\t\t\t\t\t    ng-click="vm.createNavgraph(bundle)"\n\t\t\t\t\t\t\t    translate>\n\t\t\t\t\t\t\t\tRecreate navgraph\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li ng-show="bundle.inDatabase && bundle.navgraphOnDisk && !bundle.nodesInDatabase"\n\t\t\t\t\t\t\t    ng-click="vm.importNavgraph(bundle)"\n\t\t\t\t\t\t\t    translate>\n\t\t\t\t\t\t\t\tImport navgraph\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li ng-show="bundle.nodesInDatabase"\n\t\t\t\t\t\t\t    ng-click="vm.unloadNavgraph(bundle)"\n\t\t\t\t\t\t\t    translate>\n\t\t\t\t\t\t\t\tRemove navgraph\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li role="separator" class="divider"></li>\n\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t<visual-index-upload bundle="bundle"\n\t\t\t\t\t\t\t\t                     on-upload-status-changed="vm.visualIndexUploadCallback">\n\t\t\t\t\t\t\t\t</visual-index-upload>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li ng-show="vm.doesBundleContainVisualIndex(bundle)"\n\t\t\t\t\t\t\t\tng-click="vm.deleteVisualIndex(bundle)"\n\t\t\t\t\t\t\t    translate>\n\t\t\t\t\t\t\t\tDelete visual index\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li role="separator" class="divider"></li>\n\t\t\t\t\t\t\t<li ng-show="!bundle.wifiInDatabase"\n\t\t\t\t\t\t\t    ng-click="vm.importWifi(bundle)"\n\t\t\t\t\t\t\t    translate>\n\t\t\t\t\t\t\t\tImport navigation app data\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t\t<li ng-show="bundle.wifiInDatabase"\n\t\t\t\t\t\t\t    ng-click="vm.unloadWifi(bundle)"\n\t\t\t\t\t\t\t    translate>\n\t\t\t\t\t\t\t\tRemove navigation app data\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\x3c!-- Pano warning --\x3e\n\t\t\t\t\t<span ng-if="vm.showExceedsWarning(bundle)" class="ml-10 text-warning">\n\t\t\t\t\t\t<span class="glyphicon glyphicon-alert" aria-hidden="true"></span>\n\t\t\t\t\t\t<span translate\n\t\t\t\t\t\t      translate-n="vm.bundleExceedAmount(bundle)"\n\t\t\t\t\t\t      translate-plural="Exceeds subscription by {{$count}} panoramas">\n\t\t\t\t\t\t\tExceeds subscription by one panorama\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class="margin-top">\n\t\t\t<default-button ng-click="vm.createBundle()"\n\t\t\t                ng-disabled="vm.isDataManagementRunning()">\n\t\t\t\t<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>\n\t\t\t\t<span translate>Create new bundle</span>\n\t\t\t</default-button>\n\n\t\t\t<default-button ng-show="vm.isConvertNewBundleVisible()"\n\t\t\t                ng-click="vm.convertNewBundle()"\n\t\t\t                ng-disabled="vm.isDataManagementRunning()">\n\t\t\t\t<span class="glyphicon glyphicon-import" aria-hidden="true"></span>\n\t\t\t\t<span translate>Import bundle file from disk</span>\n\t\t\t</default-button>\n\n\t\t\t<datasets-web-archive></datasets-web-archive>\n\t\t</div>\n\t\t<div class="margin-top">\n\t\t\t<upload-progress uploader="vm.visualIndexUploader">\n\t\t\t</upload-progress>\n\t\t</div>\n\t</div>\n</div>\n\n<modal>\n\t<bundle-editor model="vm.bundleToEdit"></bundle-editor>\n</modal>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    "use strict";
    var i = this && this.__decorate || function(t, e, n, i) {
        var r, o = arguments.length, a = o < 3 ? e : null === i ? i = Object.getOwnPropertyDescriptor(e, n) : i;
        if ("object" == typeof Reflect && "function" == typeof Reflect.decorate)
            a = Reflect.decorate(t, e, n, i);
        else
            for (var s = t.length - 1; s >= 0; s--)
                (r = t[s]) && (a = (o < 3 ? r(a) : o > 3 ? r(e, n, a) : r(e, n)) || a);
        return o > 3 && a && Object.defineProperty(e, n, a),
        a
    }
      , r = this && this.__metadata || function(t, e) {
        if ("object" == typeof Reflect && "function" == typeof Reflect.metadata)
            return Reflect.metadata(t, e)
    }
      , o = this && this.__param || function(t, e) {
        return function(n, i) {
            e(n, i, t)
        }
    }
    ;
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var a = n(2);
    n(1611),
    n(1614);
    var s = n(205)
      , c = n(21)
      , l = n(8)
      , u = n(0)
      , d = n(329)
      , p = n(328)
      , h = n(61)
      , f = n(188)
      , m = n(345)
      , g = n(1616)
      , v = n(1617)
      , y = function() {
        function t(t, e, n, i, r, o, a, s) {
            this.DatasetManagementService = t,
            this.gettextCatalog = e,
            this.DataGenerationService = n,
            this.DataManagementService = i,
            this.JobService = r,
            this.JobListService = o,
            this.MessageReportingService = a,
            this.TrackingService = s,
            this.floorMaps = !1
        }
        return t.$inject = ["DatasetManagementService", "gettextCatalog", "DataGenerationService", "DataManagementService", "JobService", "JobListService", "MessageReportingService", "TrackingService"],
        t.prototype.generateMaps = function(t) {
            if (void 0 === t && (t = !1),
            this.floorMaps) {
                this.createFloorMaps(t);
                var e = new v.FloorMapGenerationEvent;
                this.trackMapGenerationEvent(e, t)
            } else {
                var n = new g.MapGenerationEvent;
                if (this.trackMapGenerationEvent(n, t),
                this.withNavgraph)
                    return this.DatasetManagementService.createMapsAndNavgraph(this.bundle, t),
                    void c.TrackingService.trackNavGraphCreated();
                this.DatasetManagementService.createMaps(this.bundle, t)
            }
        }
        ,
        t.prototype.createFloorMaps = function(t) {
            var e = this;
            this.DatasetManagementService.doBeforeDataManagementJob(this.bundle);
            var n = this.DataGenerationService.createFloorMaps(this.bundle.file, t).then((function(t) {
                return e.JobService.waitOnJob(t.job_id)
            }
            )).then((function(t) {
                return t.success ? t : Promise.reject(t)
            }
            )).then((function() {
                e.DataManagementService.getBundlesOnDisk().catch(l.handleWarning),
                e.JobListService.showModalOnJobFinish(!1),
                e.DatasetManagementService.showModalOnRequestFinish = !1,
                e.MessageReportingService.showMessage(e.gettextCatalog.getString("Floor Maps Created", void 0, "title"), e.gettextCatalog.getString("The map generation has completed successfully. You can now download them from Dataset Management."))
            }
            ));
            this.DatasetManagementService.doDataManagementJob(n)
        }
        ,
        t.prototype.trackMapGenerationEvent = function(t, e) {
            e ? t.coloredMaps() : t.nonColoredMaps(),
            this.TrackingService.trackPreDefinedEvent(t)
        }
        ,
        t = i([o(1, u.Inject("gettextCatalog")), r("design:paramtypes", [s.DatasetManagementService, Object, d.DataGenerationService, p.DataManagementService, f.JobService, m.JobListService, h.MessageReportingService, c.TrackingService])], t)
    }();
    e.MapCreationModalController = y;
    var b = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DatasetManagementUI/MapCreationModal/MapCreationModal.html",
            this.controller = y,
            this.controllerAs = "vm",
            this.bindToController = {
                withNavgraph: "=",
                floorMaps: "=?",
                bundle: "="
            },
            this.scope = {
                mapCreationId: "@"
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.MapCreationModalDirective = b,
    a.module("IVWebApp").directive("mapCreationModal", b.factory())
}
, function(t, e, n) {
    var i = "DatasetManagementUI/MapCreationModal/MapCreationModal.html"
      , r = '<modal>\n\t<div class="modal fade map-creation-modal" id="{{mapCreationId}}" tabindex="-1" role="dialog"\n\t     aria-labelledby="{{mapCreationId}}" aria-hidden="true">\n\t\t<div class="modal-dialog" role="document">\n\t\t\t<div class="modal-content">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}"\n\t\t\t\t\t     data-dismiss="modal">\n\t\t\t\t\t<h4 translate translate-context="title">Choose a Map Style</h4>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t<span translate>You can generate a new map at any time.</span>\n\t\t\t\t\t<div class="row">\n\t\t\t\t\t\t<div class="col-md-5 col-md-offset-1">\n\t\t\t\t\t\t\t<div class="padding-top text-center">\n\t\t\t\t\t\t\t\t<img ng-src="' + n(1612) + '"\n\t\t\t\t\t\t\t\t     ng-class="\'map-image\'">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="padding-vertical text-center">\n\t\t\t\t\t\t\t\t<default-button\n\t\t\t\t\t\t\t\t\t\tng-click="vm.generateMaps(false)" data-dismiss="modal">\n\t\t\t\t\t\t\t\t\t<span translate>Simple Maps</span>\n\t\t\t\t\t\t\t\t</default-button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="col-md-5 col-md-offset-1">\n\t\t\t\t\t\t\t<div class="padding-top text-center">\n\t\t\t\t\t\t\t\t<img ng-src="' + n(1613) + '"\n\t\t\t\t\t\t\t\t     ng-class="\'map-image\'"/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class="padding-vertical text-center">\n\t\t\t\t\t\t\t\t<ok-button class="btn btn-primary" data-dismiss="modal"\n\t\t\t\t\t\t\t\t           ng-click="vm.generateMaps(true)">\n\t\t\t\t\t\t\t\t\t<span translate>Colored Maps</span>\n\t\t\t\t\t\t\t\t</ok-button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    t.exports = n.p + "5809e871e58d8a691e009cafd227b6ad.floor_plan_simple.jpg"
}
, function(t, e, n) {
    t.exports = n.p + "fa9ed8c780ef652b51b60426153915b7.floor_plan_colored.jpg"
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1615);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, ".map-creation-modal .map-image{width:200px}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return t.call(this, "settings_mapsCreated") || this
        }
        return r(e, t),
        e
    }(n(617).AbstractMapGenerationEvent);
    e.MapGenerationEvent = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = function(t) {
        function e() {
            return t.call(this, "settings_floorMapsCreated") || this
        }
        return r(e, t),
        e
    }(n(617).AbstractMapGenerationEvent);
    e.FloorMapGenerationEvent = o
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2);
    n(1619);
    var a = n(41)
      , s = n(330)
      , c = n(7)
      , l = n(21)
      , u = n(8)
      , d = function(t) {
        function e(e, n, i, r, o, a, s, c, l, u) {
            var d = t.call(this, a, o, r, n, i) || this;
            return d.apiEndpoint = e,
            d.JobService = s,
            d.BundleRepository = c,
            d.DataManagementService = l,
            d.DatasetManagementService = u,
            d.acceptedFileTypes = ".zip",
            d
        }
        return r(e, t),
        e.$inject = ["apiEndpoint", "MessageReportingService", "gettextCatalog", "StatusCheckService", "FlowService", "JobListService", "JobService", "BundleRepository", "DataManagementService", "DatasetManagementService"],
        Object.defineProperty(e.prototype, "targetUrl", {
            get: function() {
                return this.bundleId || (this.bundleId = this.BundleRepository.findCachedBySerial(this.bundle.serial).id),
                this.apiEndpoint + this.DataManagementService.basePath + "/bundle/" + this.bundleId.toString() + "/maps/upload"
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.mapFilesSubmitted = function(e) {
            if (e.length > 1) {
                for (var n = 0, i = c.tail(e); n < i.length; n++) {
                    i[n].cancel()
                }
                e = [e[0]]
            }
            this.DatasetManagementService.doBeforeDataManagementJob(this.bundle),
            t.prototype.filesSubmitted.call(this, e).catch(u.handleWarning)
        }
        ,
        e.prototype.uploadSuccess = function(e, n) {
            var i = this
              , r = o.fromJson(n).job_id;
            this.DatasetManagementService.doDataManagementJob(this.JobService.waitOnJob(r).then((function(t) {
                return t.success ? t : Promise.reject(t)
            }
            )).then((function() {
                i.MessageReportingService.showMessage(i.gettextCatalog.getString("Import Successful", void 0, "title"), i.gettextCatalog.getString("Maps have been uploaded successfully"))
            }
            ))),
            l.TrackingService.trackMapsUploaded(),
            t.prototype.uploadSuccess.call(this, e, n)
        }
        ,
        e.prototype.uploadError = function(e, n) {
            if (n) {
                var i = o.fromJson(n)
                  , r = {
                    data: {
                        msg: i.msg ? i.msg : i.message,
                        exception: i.exception
                    }
                }
                  , s = a.ErrorService.getErrorMessage(r, this.gettextCatalog);
                void 0 === s && (s = r.data.msg),
                this.MessageReportingService.showMessage(this.gettextCatalog.getString("Error", void 0, "title"), this.gettextCatalog.getString(s), !0)
            }
            t.prototype.uploadError.call(this, e, n)
        }
        ,
        e
    }(s.AbstractUploadController);
    e.CustomMapUploadController = d;
    var p = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DatasetManagementUI/CustomMapUpload/CustomMapUpload.html",
            this.controller = d,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                bundle: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.CustomMapUploadDirective = p,
    o.module("IVWebApp").directive("customMapUpload", p.factory())
}
, function(t, e) {
    var n = "DatasetManagementUI/CustomMapUpload/CustomMapUpload.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div flow-init\n     flow-object="vm.uploader"\n     flow-file-error="vm.uploadError($file, $message)"\n     flow-file-success="vm.uploadSuccess($file, $message)"\n     flow-files-submitted="vm.mapFilesSubmitted($files)"\n     flow-error="vm.uploadError($file, $message)">\n\n\t<div flow-btn flow-attrs="{accept: \'{{vm.acceptedFileTypes}}\'}">\n\t\t<span translate>Upload maps</span>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    var i, r = this && this.__extends || (i = function(t, e) {
        return (i = Object.setPrototypeOf || {
            __proto__: []
        }instanceof Array && function(t, e) {
            t.__proto__ = e
        }
        || function(t, e) {
            for (var n in e)
                e.hasOwnProperty(n) && (t[n] = e[n])
        }
        )(t, e)
    }
    ,
    function(t, e) {
        function n() {
            this.constructor = t
        }
        i(t, e),
        t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype,
        new n)
    }
    );
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var o = n(2);
    n(1621);
    var a = n(330)
      , s = n(7)
      , c = n(41)
      , l = n(8)
      , u = function(t) {
        function e(e, n, i, r, o, a, s, c, l, u) {
            var d = t.call(this, a, o, r, n, i) || this;
            return d.apiEndpoint = e,
            d.BundleRepository = s,
            d.DataManagementService = c,
            d.DatasetManagementService = l,
            d.JobService = u,
            d.acceptedFileTypes = ".zip, .nvi",
            d
        }
        return r(e, t),
        e.$inject = ["apiEndpoint", "MessageReportingService", "gettextCatalog", "StatusCheckService", "FlowService", "JobListService", "BundleRepository", "DataManagementService", "DatasetManagementService", "JobService"],
        Object.defineProperty(e.prototype, "targetUrl", {
            get: function() {
                return this.bundleId || (this.bundleId = this.BundleRepository.findCachedBySerial(this.bundle.serial).id),
                this.apiEndpoint + this.DataManagementService.basePath + "/bundle/" + this.bundleId.toString() + "/visual_index/upload"
            },
            enumerable: !0,
            configurable: !0
        }),
        e.prototype.visualIndexFilesSubmitted = function(e) {
            var n = this;
            if (e.length > 1) {
                for (var i = 0, r = s.tail(e); i < r.length; i++) {
                    r[i].cancel()
                }
                e = [e[0]]
            }
            this.DatasetManagementService.doBeforeDataManagementJob(this.bundle),
            this.DatasetManagementService.setVisualIndexUploadOngoing(!0),
            t.prototype.filesSubmitted.call(this, e).then((function() {
                n.onUploadStatusChanged(n.uploader)
            }
            )).catch(l.handleWarning)
        }
        ,
        e.prototype.uploadSuccess = function(t, e) {
            var n = this;
            this.DatasetManagementService.setVisualIndexUploadOngoing(!1);
            var i = o.fromJson(e).job_id;
            this.DatasetManagementService.doDataManagementJob(this.JobService.waitOnJob(i).then((function(t) {
                return t.success ? t : Promise.reject(t)
            }
            )).then((function() {
                n.bundle.correctVisualIndexVersion = !0,
                n.MessageReportingService.showMessage(n.gettextCatalog.getString("Upload Successful", void 0, "title"), n.gettextCatalog.getString("Visual index has been uploaded successfully")),
                n.onUploadStatusChanged(void 0)
            }
            )))
        }
        ,
        e.prototype.uploadError = function(t, e) {
            if (this.DatasetManagementService.setVisualIndexUploadOngoing(!1),
            e) {
                var n = o.fromJson(e)
                  , i = {
                    data: {
                        msg: n.msg ? n.msg : n.message,
                        exception: n.exception
                    }
                }
                  , r = c.ErrorService.getErrorMessage(i, this.gettextCatalog);
                void 0 === r && (r = i.data.msg),
                this.MessageReportingService.showMessage(this.gettextCatalog.getString("Error", void 0, "title"), this.gettextCatalog.getString(r), !0)
            }
            this.onUploadStatusChanged(void 0)
        }
        ,
        e
    }(a.AbstractUploadController);
    e.VisualIndexUploadController = u;
    var d = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DatasetManagementUI/VisualIndexUpload/VisualIndexUploadComponent.html",
            this.controller = u,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                bundle: "=",
                onUploadStatusChanged: "<"
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.VisualIndexUploadDirective = d,
    o.module("IVWebApp").directive("visualIndexUpload", d.factory())
}
, function(t, e) {
    var n = "DatasetManagementUI/VisualIndexUpload/VisualIndexUploadComponent.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div flow-init\n     flow-object="vm.uploader"\n     flow-file-error="vm.uploadError($file, $message)"\n     flow-file-success="vm.uploadSuccess($file, $message)"\n     flow-files-submitted="vm.visualIndexFilesSubmitted($files)"\n     flow-file-progress="vm.fileProgress($file)"\n     flow-error="vm.uploadError($file, $message)">\n\n\t<div flow-btn flow-attrs="{accept: \'{{vm.acceptedFileTypes}}\'}">\n\t\t<span translate>Upload visual index</span>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1623),
    n(205),
    n(619);
    var r = n(8)
      , o = n(21)
      , a = function() {
        function t(t, e, n, i) {
            this.DatasetManagementService = t,
            this.JobListService = e,
            this.LicenseService = n,
            this.TrackingService = i,
            this.LOCATION_PICKER_ID = "import-dataset-location-picker",
            this.progress = this.DatasetManagementService.progress,
            this.datasetsToAddNames = "",
            this.addingLocation = {},
            this.panoCountEnforced = !1,
            this.panoCountEnforced = n.isLicenseMaxLocationsAvailable()
        }
        return t.$inject = ["DatasetManagementService", "JobListService", "LicenseService", "TrackingService"],
        t.prototype.getDatasetsWithoutBundle = function() {
            return this.DatasetManagementService.datasets.filter((function(t) {
                return !t.inBundleInDatabase
            }
            ))
        }
        ,
        t.prototype.importDataset = function(t) {
            this.datasetsToAddNames = t.name,
            this.datasetToAdd = t,
            i.element("#" + this.LOCATION_PICKER_ID).modal("show")
        }
        ,
        t.prototype.addDatasetToDatabase = function() {
            o.TrackingService.trackDatasetLoaded(),
            this.DatasetManagementService.importDataset(this.datasetToAdd, this.addingLocation).catch(r.handleWarning)
        }
        ,
        t.prototype.unloadDataset = function(t) {
            o.TrackingService.trackDatasetUnloaded(),
            this.DatasetManagementService.unloadDataset(t).catch(r.handleWarning)
        }
        ,
        t.prototype.removeDatasetFromDisk = function(t) {
            this.DatasetManagementService.removeDatasetFromDisk(t).catch(r.handleWarning)
        }
        ,
        t.prototype.isDataManagementRunning = function() {
            return this.JobListService.progress.jobRunning || this.DatasetManagementService.dataManagementRequestRunning || this.DatasetManagementService.dataManagementJobTriggered
        }
        ,
        t.prototype.isLoadDisabled = function(t) {
            return this.isDataManagementRunning() || this.datasetExceedsPanoLimit(t)
        }
        ,
        t.prototype.showExceedsWarning = function(t) {
            return !t.inDatabase && this.datasetExceedsPanoLimit(t)
        }
        ,
        t.prototype.datasetExceedAmount = function(t) {
            if (!this.panoCountEnforced)
                return 0;
            var e = this.LicenseService.license
              , n = e.maxLocations - e.currentLocations;
            return t.uniqueLocationCount - n
        }
        ,
        t.prototype.datasetExceedsPanoLimit = function(t) {
            return this.datasetExceedAmount(t) > 0
        }
        ,
        t
    }();
    e.DatasetsWithoutBundleListController = a;
    var s = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DatasetManagementUI/DatasetsWithoutBundleList.html",
            this.controller = a,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.DatasetsWithoutBundleListDirective = s,
    i.module("IVWebApp").directive("datasetsWithoutBundleList", s.factory())
}
, function(t, e, n) {
    var i = "DatasetManagementUI/DatasetsWithoutBundleList.html"
      , r = '<div class="panel panel-default">\n\n\t<div class="panel-heading">\n\t\t<h4 translate translate-context="title">Datasets Without Bundle</h4>\n\t</div>\n\n\t<div class="panel-body">\n\t\t<span ng-show="vm.getDatasetsWithoutBundle().length == 0 && !vm.progress.loadingDatasets"\n\t\t      translate>\n\t\t\tNo datasets found\n\t\t</span>\n\t\t<span class="spinner" ng-show="vm.progress.loadingDatasets">\n\t\t\t<img ng-src="' + n(94) + '">\n\t\t</span>\n\t\t<div class="row margin-bottom-small"\n\t\t     ng-repeat="dataset in vm.getDatasetsWithoutBundle() | orderBy : \'title\'">\n\t\t\t<div class="col-sm-5 dataset-mgmt-row">\n\t\t\t\t<div class="dataset-mgmt-icon"\n\t\t\t\t     ng-style="{\'background-color\': dataset.color}">\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<div>{{dataset.title}}</div>\n\t\t\t\t\t<div ng-if="!vm.panoCountEnforced" class="dataset-mgmt-name">\n\t\t\t\t\t\t{{dataset.name}}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div ng-if="vm.panoCountEnforced" class="dataset-mgmt-name" translate\n\t\t\t\t\t     translate-params-name="dataset.name"\n\t\t\t\t\t     translate-params-unique-panoramas="dataset.uniqueLocationCount"\n\t\t\t\t\t     translate-params-total-panoramas="dataset.locationCount">\n\t\t\t\t\t\t{{name}}, counted panoramas: {{uniquePanoramas}} out of {{totalPanoramas}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="col-sm-7 dataset-mgmt-row">\n\t\t\t\t<div>\n\t\t\t\t\t\x3c!--Load dataset--\x3e\n\t\t\t\t\t<span ng-if="!dataset.inDatabase">\n\t\t\t\t\t\t<default-button ng-click="vm.importDataset(dataset)"\n\t\t\t\t\t\t                ng-disabled="vm.isLoadDisabled(dataset)"\n\t\t\t\t\t\t                button-tooltip="{{\'Load dataset\'|translate}}">\n\t\t\t\t\t\t\t<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>\n\t\t\t\t\t\t</default-button>\n\t\t\t\t\t</span>\n\t\t\t\t\t\x3c!--Unload dataset--\x3e\n\t\t\t\t\t<span ng-if="dataset.inDatabase">\n\t\t\t\t\t\t<default-button ng-click="vm.unloadDataset(dataset)"\n\t\t\t\t\t\t                ng-disabled="vm.isDataManagementRunning()"\n\t\t\t\t\t\t                button-tooltip="{{\'Unload dataset\'|translate}}">\n\t\t\t\t\t\t\t<span class="glyphicon glyphicon-minus" aria-hidden="true"></span>\n\t\t\t\t\t\t</default-button>\n\t\t\t\t\t</span>\n\t\t\t\t\t\x3c!--Remove dataset from disk--\x3e\n\t\t\t\t\t<delete-confirmation ng-hide="dataset.inDatabase"\n\t\t\t\t\t                     button-disabled="vm.isDataManagementRunning()"\n\t\t\t\t\t                     on-confirm-callback="vm.removeDatasetFromDisk(dataset)">\n\t\t\t\t\t\t<button-content>\n\t\t\t\t\t\t\t<i class="fa fa-trash-o"\n\t\t\t\t\t\t\t   iv-tooltip="{{\'Delete dataset directory from disk\' | translate}}">\n\t\t\t\t\t\t\t</i>\n\t\t\t\t\t\t</button-content>\n\n\t\t\t\t\t\t<span translate>The dataset directory on disk will be deleted</span>\n\t\t\t\t\t</delete-confirmation>\n\t\t\t\t\t\x3c!-- Pano warning --\x3e\n\t\t\t\t\t<span ng-if="vm.showExceedsWarning(dataset)" class="ml-10 text-warning">\n\t\t\t\t\t\t<span class="glyphicon glyphicon-alert" aria-hidden="true"></span>\n\t\t\t\t\t\t<span translate\n\t\t\t\t\t\t      translate-n="vm.datasetExceedAmount(dataset)"\n\t\t\t\t\t\t      translate-plural="Exceeds subscription by {{$count}} panoramas">\n\t\t\t\t\t\t\tExceeds subscription by one panorama\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\n\t<dataset-location-picker location-picker-id="{{vm.LOCATION_PICKER_ID}}"\n\t                         datasets-to-add-names="{{vm.datasetsToAddNames}}"\n\t                         adding-location="vm.addingLocation"\n\t                         on-add="vm.addDatasetToDatabase(location)">\n\t</dataset-location-picker>\n</div>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    var i = "DatasetManagementUI/DatasetLocationPicker.html"
      , r = '\x3c!-- Geo-registration for added datasets --\x3e\n<modal>\n\t<div class="modal fade" id="{{vm.locationPickerId}}" tabindex="-1" role="dialog"\n\t     aria-labelledby="dataset-location-modal" aria-hidden="true" data-backdrop="static"\n\t\t press-key=\'{"esc": "vm.onCancel()"}\'>\n\t\t<div class="modal-dialog">\n\t\t\t<div class="modal-content">\n\n\t\t\t\x3c!-- Heading --\x3e\n\t\t\t<div class="modal-header">\n\t\t\t\t<img class="menu-close-button ic_svg"\n\t\t\t\t     ng-src="' + n(35) + '" alt="{{\'Close\'|translate}}"\n\t\t\t\t     ng-click="vm.onCancel()"\n\t\t\t\t     data-dismiss="modal">\n\t\t\t\t<h4 translate translate-context="title">\n\t\t\t\t\tDataset Location\n\t\t\t\t</h4>\n\t\t\t</div>\n\n\t\t\t\x3c!-- Body --\x3e\n\t\t\t<div class="modal-body">\n\n\t\t\t\t\x3c!-- Heading with filenames summary --\x3e\n\t\t\t\t<p class="form-group truncated">\n\t\t\t\t\t<span translate>Choose a location for added datasets:</span>\n\t\t\t\t\t<b> {{vm.datasetsToAddNames}}</b>\n\t\t\t\t</p>\n\n\t\t\t\t\x3c!-- Radio control --\x3e\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t<div ng-show="vm.getDatasetsWithLocation().length">\n\t\t\t\t\t\t<label class="normal-font" ng-click="vm.initDatasetMode()">\n\t\t\t\t\t\t\t<input type="radio"\n\t\t\t\t\t\t\t       name="location-radio-control"\n\t\t\t\t\t\t\t       ng-model="vm.locationPickerMode"\n\t\t\t\t\t\t\t       value="{{vm.LOCATION_PICKER_MODE_DATASET}}">\n\t\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\t\tReference dataset\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<label class="normal-font" ng-click="vm.initCustomMode()">\n\t\t\t\t\t\t\t<input type="radio"\n\t\t\t\t\t\t\t       name="location-radio-control"\n\t\t\t\t\t\t\t       ng-model="vm.locationPickerMode"\n\t\t\t\t\t\t\t       value="{{vm.LOCATION_PICKER_MODE_CUSTOM}}">\n\t\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\t\tCustom location\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\x3c!-- Inputs --\x3e\n\t\t\t\t<div class="form-group">\n\t\t\t\t\t\x3c!-- Reference dataset location --\x3e\n\t\t\t\t\t<div class="relative"\n\t\t\t\t\t     id="dataset-management-reference-dataset"\n\t\t\t\t\t     ng-show="vm.locationPickerMode === vm.LOCATION_PICKER_MODE_DATASET">\n\t\t\t\t\t\t<p class="form-group" translate>\n\t\t\t\t\t\t\tChoose the location from a reference dataset.\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<select class="form-control"\n\t\t\t\t\t\t        title="{{\'Reference dataset location\'|translate}}"\n\t\t\t\t\t\t        ng-model="vm.locationReferenceDataset"\n\t\t\t\t\t\t        ng-options="dataset as dataset.name for dataset in vm.getDatasetsWithLocation() | orderBy : \'name\'"\n\t\t\t\t\t\t        ng-change="vm.updateMapForReferenceDataset()"\n\t\t\t\t\t\t        style="width:calc(100% - 48px)">\n\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\x3c!-- Focus on dataset --\x3e\n\t\t\t\t\t\t<button class="btn btn-default absolute-right" ng-click="vm.updateMapForReferenceDataset()"\n\t\t\t\t\t\t        title="{{\'Focus map on current reference dataset\' | translate}}"\n\t\t\t\t\t\t        style="bottom:1px">\n\t\t\t\t\t\t\t<i class="fa fa-crosshairs"></i>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t\x3c!-- Custom location --\x3e\n\t\t\t\t\t<div id="dataset-management-custom-location"\n\t\t\t\t\t     ng-show="vm.locationPickerMode === vm.LOCATION_PICKER_MODE_CUSTOM">\n\t\t\t\t\t\t<p class="form-group" translate>\n\t\t\t\t\t\t\tEnter an address or specify a custom location.\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\x3c!-- Search address --\x3e\n\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t<input class="form-control"\n\t\t\t\t\t\t\t\t       ng-model="vm.addressToSearch"\n\t\t\t\t\t\t\t\t       ng-change="vm.addressNotFound = false"\n\t\t\t\t\t\t\t\t       press-key=\'{ "enter" : "vm.searchAddress()" }\'\n\t\t\t\t\t\t\t\t       placeholder="{{\'Enter address here (e.g. \\\'Munich\\\')\'|translate}}"\n\t\t\t\t\t\t\t\t       style="max-height:32px">\n\t\t\t\t\t\t\t\t<div class="input-group-btn">\n\t\t\t\t\t\t\t\t\t<button type="button"\n\t\t\t\t\t\t\t\t\t        class="btn btn-primary"\n\t\t\t\t\t\t\t\t\t        ng-click="vm.searchAddress()" ng-disabled="!vm.addressToSearch.length">\n\t\t\t\t\t\t\t\t\t\t<i class="fa fa-search" aria-hidden="true"></i>\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<p ng-if="vm.addressNotFound" class="help-block" translate>Location for address not found</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\x3c!-- Custom location inputs --\x3e\n\t\t\t\t\t\t<div class="form-group row"\n\t\t\t\t\t\t     ng-class="vm.isLocationFieldValid(\'longitude\') ? \'has-success\' : \'has-error\'">\n\t\t\t\t\t\t\t<label class="col-xs-5 control-label normal-font" translate>Longitude</label>\n\t\t\t\t\t\t\t<div class="col-xs-5">\n\t\t\t\t\t\t\t\t<input class="form-control form-control-inline"\n\t\t\t\t\t\t\t\t       type="number" min="-180" max="180"\n\t\t\t\t\t\t\t\t       ng-model="vm.addingLocation.longitude"\n\t\t\t\t\t\t\t\t       ng-change="vm.updateMapForCustomLocation(true)">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="form-group row"\n\t\t\t\t\t\t     ng-class="vm.isLocationFieldValid(\'latitude\') ? \'has-success\' : \'has-error\'">\n\t\t\t\t\t\t\t<label class="col-xs-5 control-label normal-font" translate>Latitude</label>\n\t\t\t\t\t\t\t<div class="col-xs-5">\n\t\t\t\t\t\t\t\t<input class="form-control form-control-inline"\n\t\t\t\t\t\t\t\t       type="number" min="-90" max="90"\n\t\t\t\t\t\t\t\t       ng-model="vm.addingLocation.latitude"\n\t\t\t\t\t\t\t\t       ng-change="vm.updateMapForCustomLocation(true)">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="form-group row"\n\t\t\t\t\t\t     ng-class="vm.isLocationFieldValid(\'height\') ? \'has-success\' : \'has-error\'">\n\t\t\t\t\t\t\t<label class="col-xs-5 control-label normal-font" translate>Height</label>\n\t\t\t\t\t\t\t<div class="col-xs-5">\n\t\t\t\t\t\t\t\t<input class="form-control form-control-inline"\n\t\t\t\t\t\t\t\t       type="number"\n\t\t\t\t\t\t\t\t       ng-model="vm.addingLocation.height"\n\t\t\t\t\t\t\t\t       ng-change="vm.updateMapForCustomLocation(true)">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="form-group row relative"\n\t\t\t\t\t\t     ng-class="vm.isLocationFieldValid(\'orientation\') ? \'has-success\' : \'has-error\'">\n\t\t\t\t\t\t\t<label class="col-xs-5 control-label normal-font" translate>Orientation angle (degrees)</label>\n\t\t\t\t\t\t\t<div class="col-xs-5">\n\t\t\t\t\t\t\t\t<input class="form-control form-control-inline"\n\t\t\t\t\t\t\t\t       type="number"\n\t\t\t\t\t\t\t\t       ng-model="vm.addingLocation.orientation"\n\t\t\t\t\t\t\t\t       ng-change="vm.updateMapForCustomLocation(true)">\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\x3c!-- Focus on location --\x3e\n\t\t\t\t\t\t\t<button class="btn btn-default absolute-bottom"\n\t\t\t\t\t\t\t        ng-click="vm.updateMapForCustomLocation(true, true)"\n\t\t\t\t\t\t\t        ng-disabled="!vm.isLocationFieldValid(\'longitude\') || !vm.isLocationFieldValid(\'latitude\')"\n\t\t\t\t\t\t\t        title="{{\'Focus map on current location\' | translate}}"\n\t\t\t\t\t\t\t        style="right:15px">\n\t\t\t\t\t\t\t\t<i class="fa fa-crosshairs"></i>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\x3c!-- Map --\x3e\n\t\t\t\t<div id="{{vm.locationPickerId}}-open-layers-map"\n\t\t\t\t     class="open-layers-map open-layers-map-location-picker"\n\t\t\t\t     ng-class="{\'crosshair\': vm.locationPickerMode === vm.LOCATION_PICKER_MODE_CUSTOM}"\n\t\t\t\t     resize-event="vm.olMap.updateMapSize()" delay="100">\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t\x3c!-- Footer --\x3e\n\t\t\t<div class="modal-footer">\n\t\t\t\t<cancel-button ng-click="vm.onCancel()"\n\t\t\t\t               data-dismiss="modal">\n\t\t\t\t</cancel-button>\n\t\t\t\t<ok-button ng-disabled="!vm.isAddingLocationValid()"\n\t\t\t\t           ng-click="vm.onAdd()"\n\t\t\t\t           data-dismiss="modal">\n\t\t\t\t\t<span translate>Add</span>\n\t\t\t\t</ok-button>\n\t\t\t</div>\n\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</modal>\n';
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(i, r)
    }
    ]),
    t.exports = i
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1626);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, ".open-layers-map-location-picker{height:400px}.open-layers-map-location-picker.crosshair{cursor:crosshair}.form-control-inline{display:inline-block;max-height:24px;padding:0 6px}.form-group.truncated{overflow:hidden;text-overflow:ellipsis}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1628),
    n(619),
    n(620);
    var r = n(20)
      , o = n(144)
      , a = function() {
        function t(t, e, n, i, r) {
            this.DatasetManagementService = t,
            this.FlowService = e,
            this.JobListService = n,
            this.MessageReportingService = i,
            this.gettextCatalog = r,
            this.datasetsToAddNames = "",
            this.addingLocation = {},
            this.targetUrl = "api/dataset/upload"
        }
        return t.$inject = ["DatasetManagementService", "FlowService", "JobListService", "MessageReportingService", "gettextCatalog"],
        t.prototype.filesSubmitted = function(t) {
            return this.defer = new o.Deferred,
            0 === t.length ? (this.defer.reject(),
            this.MessageReportingService.showMessage(this.gettextCatalog.getString("Upload in Progress", void 0, "title"), this.gettextCatalog.getString("This file is already being uploaded.")),
            this.defer.promise) : (this.datasetsToAddNames = t.map((function(t) {
                return t.name
            }
            )).join(", "),
            this.submittedFiles = t,
            this.addLocationParameterToEachRequest(),
            i.element("#import-point-cloud-location-picker").modal("show"),
            this.defer.promise)
        }
        ,
        t.prototype.addLocationParameterToEachRequest = function() {
            var t = this;
            this.FlowService.setDatasetQuery(this.targetUrl, (function(e) {
                var n = t.DatasetManagementService.locations[e.uniqueIdentifier]
                  , i = {
                    longitude: n.longitude,
                    latitude: n.latitude,
                    height: n.height,
                    orientation: r.degreesToRadians(n.orientation)
                };
                return n.referenceDatasetId && (i.referenceDatasetId = n.referenceDatasetId),
                i
            }
            ))
        }
        ,
        t.prototype.uploadFiles = function() {
            for (var t = 0, e = this.submittedFiles; t < e.length; t++) {
                var n = e[t];
                this.DatasetManagementService.locations[n.uniqueIdentifier] = this.addingLocation
            }
            this.defer.resolve()
        }
        ,
        t.prototype.cancelUpload = function() {
            this.defer.reject()
        }
        ,
        t.prototype.uploadSuccess = function(t, e) {
            delete this.DatasetManagementService.locations[t.uniqueIdentifier]
        }
        ,
        t.prototype.uploadError = function(t, e) {
            e && delete this.DatasetManagementService.locations[t.uniqueIdentifier]
        }
        ,
        t
    }();
    e.PointCloudImportController = a;
    var s = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "PointCloud/PointCloudImport.html",
            this.controller = a,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.PointCloudImportDirective = s,
    i.module("IVWebApp").directive("pointCloudImport", s.factory())
}
, function(t, e) {
    var n = "PointCloud/PointCloudImport.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="panel panel-default">\n\t<div class="panel-heading">\n\t\t<h4 translate translate-context="title">\n\t\t\tImport Point Clouds\n\t\t</h4>\n\t</div>\n\n\t<div class="panel-body">\n\t\t<upload button-title="{{\'Upload point cloud\' | translate}}"\n\t\t        target-url="{{vm.targetUrl}}"\n\t\t        accepted-file-types=".e57, .pts, .ptx, .ply, .xyz"\n\t\t        on-file-picked="vm.filesSubmitted(files)"\n\t\t        on-upload-error="vm.uploadError(file, response)"\n\t\t        on-upload-success="vm.uploadSuccess(file, response)">\n\t\t</upload>\n\n\t\t<dataset-location-picker location-picker-id="import-point-cloud-location-picker"\n\t\t                         datasets-to-add-names="{{vm.datasetsToAddNames}}"\n\t\t                         adding-location="vm.addingLocation"\n\t\t                         on-add="vm.uploadFiles()"\n\t\t                         on-cancel="vm.cancelUpload()">\n\t\t</dataset-location-picker>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1630),
    n(1631);
    var r = n(330)
      , o = function() {
        function t(t) {
            this.JobListService = t
        }
        return t.$inject = ["JobListService"],
        t.prototype.isWaitingToRetryUpload = function(t) {
            return t.retryEnabled && t.retryCountdown < r.AbstractUploadController.RETRY_PERIOD
        }
        ,
        t.prototype.isUploadInProgress = function(t) {
            return !t.error && !t.isComplete() && !this.isWaitingToRetryUpload(t)
        }
        ,
        t.prototype.isUploadComplete = function(t) {
            return !t.error && t.isComplete()
        }
        ,
        t.prototype.isCancelFileUploadPossible = function(t) {
            return t.isUploading() || t.paused || this.isWaitingToRetryUpload(t)
        }
        ,
        t.prototype.isContinueFileUploadPossible = function(t) {
            return t.paused || this.isWaitingToRetryUpload(t)
        }
        ,
        t.prototype.cancelFileUpload = function(t) {
            t.retryEnabled = !1,
            t.cancel()
        }
        ,
        t.prototype.pauseFileUpload = function(t) {
            t.retryEnabled = !1,
            t.pause()
        }
        ,
        t.prototype.resumeFileUpload = function(t) {
            this.isWaitingToRetryUpload(t) ? t.retryCountdown = 0 : (t.retryEnabled = !1,
            t.resume())
        }
        ,
        t.prototype.hasJobFailed = function(t) {
            return this.JobListService.hasJobFailed(t)
        }
        ,
        t.prototype.isJobBusy = function(t) {
            return this.JobListService.isJobBusy(t)
        }
        ,
        t.prototype.areUploadAndProcessingSuccessful = function(t) {
            return this.isUploadComplete(t) && !this.isJobBusy(t.jobId) && !this.hasJobFailed(t.jobId)
        }
        ,
        t.prototype.hasUploadCompletedAndJobFailed = function(t) {
            return this.isUploadComplete(t) && this.hasJobFailed(t.jobId)
        }
        ,
        t
    }();
    e.UploadProgressController = o;
    var a = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "Upload/UploadProgress.html",
            this.controller = o,
            this.controllerAs = "vm",
            this.scope = !0,
            this.bindToController = {
                uploader: "="
            }
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.UploadProgressDirective = a,
    i.module("IVWebApp").directive("uploadProgress", a.factory())
}
, function(t, e) {
    var n = "Upload/UploadProgress.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '\x3c!-- Files upload progress bars --\x3e\n<div class="container" *ngIf="vm.uploader !== undefined">\n\t<div class="row animate-repeat" ng-repeat="file in vm.uploader.files">\n\t\t<div class="col-md-3">\n\t\t\t\t<span title="{{file.name}}">\n\t\t\t\t\t{{file.name}}\n\t\t\t\t</span>\n\t\t</div>\n\t\t<div class="col-md-6">\n\t\t\t<div class="progress">\n\t\t\t\t<div class="progress-bar"\n\t\t\t\t     ng-class="{\n\t\t\t\t\t\t    \'progress-bar-warning active\': file.isUploading(),\n\t\t\t\t\t\t    \'progress-bar-danger\': file.error || vm.hasJobFailed(file.jobId),\n\t\t\t\t\t\t\t\'progress-bar-success\': file.isComplete() && !vm.isJobBusy(file.jobId),\n\t\t\t\t\t\t\t\'progress-bar-warning progress-bar-striped active\':\n\t\t\t\t\t\t\t\tfile.isComplete() && vm.isJobBusy(file.jobId)\n\t\t\t\t\t\t }"\n\t\t\t\t     role="progressbar"\n\t\t\t\t     aria-valuenow="{{ file.percent }}" aria-valuemin="0"\n\t\t\t\t     aria-valuemax="100"\n\t\t\t\t     ng-style="{\n\t\t\t\t\t        width: vm.isWaitingToRetryUpload(file) ? \'100%\' : file.percent + \'%\'\n                         }"\n\t\t\t\t     style="min-width: 2em;">\n\n\t\t\t\t\t\x3c!--Upload in progress--\x3e\n\t\t\t\t\t<span ng-if="vm.isUploadInProgress(file)" translate\n\t\t\t\t\t      translate-params-percent="file.percent | number:0">\n\t\t\t\t\t\t\t{{percent}}% complete\n\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\x3c!--Disconnected--\x3e\n\t\t\t\t\t<span ng-if="vm.isWaitingToRetryUpload(file)" translate\n\t\t\t\t\t      translate-params-counter="file.retryCountdown">\n\t\t\t\t\t\t\tDisconnected, retrying in {{counter}} seconds\n\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\x3c!--File error--\x3e\n\t\t\t\t\t<span ng-if="file.error">\n\t\t\t\t\t\t\t{{file.errorMessage}}\n\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\x3c!--Job busy--\x3e\n\t\t\t\t\t<span ng-if="vm.isUploadComplete(file) && vm.isJobBusy(file.jobId)">\n\t\t\t\t\t\t\t{{vm.jobs[file.jobId].lastOutput}}\n\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\x3c!--Upload and Processing successful--\x3e\n\t\t\t\t\t<span ng-if="vm.areUploadAndProcessingSuccessful(file)"\n\t\t\t\t\t      translate>\n\t\t\t\t\t\t\tUpload and processing done\n\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\x3c!--Failed task--\x3e\n\t\t\t\t\t<span ng-if="vm.hasUploadCompletedAndJobFailed(file)"\n\t\t\t\t\t      translate>\n\t\t\t\t\t\t\tTask has failed. Please check the Task Manager for more information.\n\t\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class="col-md-3">\n\t\t\t<button class="btn btn-default btn-xs"\n\t\t\t        ng-show="vm.isCancelFileUploadPossible(file)"\n\t\t\t        ng-click="vm.cancelFileUpload(file)">\n\t\t\t\t<i class="fa fa-times"></i>\n\t\t\t</button>\n\t\t\t<button class="btn btn-default btn-xs"\n\t\t\t        ng-show="!file.paused && file.isUploading()"\n\t\t\t        ng-click="vm.pauseFileUpload(file)">\n\t\t\t\t<span class="glyphicon glyphicon-pause"></span>\n\t\t\t</button>\n\t\t\t<button class="btn btn-default btn-xs"\n\t\t\t        ng-show="vm.isContinueFileUploadPossible(file)"\n\t\t\t        ng-click="vm.resumeFileUpload(file)">\n\t\t\t\t<span class="glyphicon glyphicon-play"></span>\n\t\t\t</button>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1632);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "upload-progress em{margin-left:1em}upload-progress .progress-bar{min-width:2em}upload-progress .container{margin-left:0}upload-progress .col-md-3{overflow:hidden;text-overflow:ellipsis}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    (function(t) {
        Object.defineProperty(e, "__esModule", {
            value: !0
        });
        var i = n(2);
        n(1634),
        n(345);
        var r = function() {
            function e(e, n, i, r, o) {
                var a = this;
                this.JobListService = e,
                this.$scope = n,
                this.DatasetManagementService = i,
                this.IV = r,
                this.FlowService = o;
                var s = t("#job-panel");
                s.on("hide.bs.collapse", (function() {
                    return a.JobListService.clearTimeouts(!0)
                }
                )),
                s.on("show.bs.collapse", (function(e) {
                    var n = Number.parseInt(t(e.target).attr("data-job-id"), 10);
                    a.JobListService.refreshJobDetails(n)
                }
                )),
                this.JobListService.refreshJobList(),
                this.JobListService.showModalOnJobFinish(!1),
                this.$scope.$on("$destroy", (function() {
                    a.JobListService.progress.jobRunning || a.FlowService.isUploading() ? a.JobListService.showModalOnJobFinish(!0) : a.JobListService.clearTimeouts(),
                    a.DatasetManagementService.reInitOnExit && (a.IV.reinit(),
                    a.DatasetManagementService.reInitOnExit = !1)
                }
                ))
            }
            return e.$inject = ["JobListService", "$scope", "DatasetManagementService", "IV", "FlowService"],
            e.prototype.showCancelModal = function(e, n) {
                n.stopPropagation(),
                this.jobToCancel = e,
                t("#confirmJobCancel.modal").modal("show")
            }
            ,
            e.prototype.confirmJobCancel = function() {
                this.JobListService.cancelJob(this.jobToCancel).catch((function() {}
                ))
            }
            ,
            e
        }();
        e.JobListController = r;
        var o = function() {
            function t() {
                this.restrict = "E",
                this.templateUrl = "Job/JobList.html",
                this.controller = r,
                this.controllerAs = "vm",
                this.scope = !0
            }
            return t.factory = function() {
                return function() {
                    return new t
                }
            }
            ,
            t
        }();
        e.JobListDirective = o,
        i.module("IVWebApp").directive("jobList", o.factory())
    }
    ).call(this, n(19))
}
, function(t, e) {
    var n = "Job/JobList.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="panel panel-default">\n\n\t<div class="panel-heading">\n\t\t<h4 translate translate-context="title">Task Manager</h4>\n\t</div>\n\n\t<div id="job-panel" class="panel-body">\n\t\t\t<span ng-show="vm.JobListService.jobs.length === 0"\n\t\t\t      translate>\n\t\t\t\tNo tasks found\n\t\t\t</span>\n\n\t\t<div class="panel panel-default" ng-class="{\'panel-warning\': job.busy}"\n\t\t     ng-repeat="job in vm.JobListService.jobs | reverse track by $index"\n\t\t     ng-if="job.jobId">\n\t\t\t<div ng-class="!!job.output ? \'panel-heading\' : \'panel-heading empty-job-output\'" data-toggle="collapse"\n\t\t\t     data-target="#{{\'job-\'+job.jobId}}" data-parent="#job-panel">\n\t\t\t\t<div class="row">\n\t\t\t\t\t<div class="col-md-9">\n\t\t\t\t\t\t\x3c!-- spinning fa icon has to be wrapped in aditional span if combined with ng-show directive --\x3e\n\t\t\t\t\t\t<span ng-show="job.busy"><span class="fa fa-spin fa-circle-o-notch"\n\t\t\t\t\t\t                               title="{{\'Task is running\'|translate}}"></span></span>\n\t\t\t\t\t\t<span class="text-success fa fa-check-circle-o"\n\t\t\t\t\t\t      ng-show="!job.busy && job.success"\n\t\t\t\t\t\t      title="{{\'Task has successfully finished\'|translate}}"></span>\n\t\t\t\t\t\t<span class="text-danger fa fa-exclamation-circle"\n\t\t\t\t\t\t      ng-show="!job.busy && !job.success"\n\t\t\t\t\t\t      title="{{\'Task has failed\'|translate}}"></span>\n\t\t\t\t\t\t<strong>{{job.label}}</strong>\n\t\t\t\t\t\t<span>({{job.title}})</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="col-md-3 text-right">\n\t\t\t\t\t\t<span ng-show="!job.busy">{{ job.startTime | date:\'yyyy-MM-dd HH:mm:ss\' }}</span>\n\t\t\t\t\t\t<span class="fa fa-times-circle-o" ng-show="job.busy"\n\t\t\t\t\t\t      title="{{\'Cancel task\'|translate}}"\n\t\t\t\t\t\t      ng-click="vm.showCancelModal(job, $event)"></span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div id="{{\'job-\'+job.jobId}}" data-job-id="{{job.jobId}}"\n\t\t\t     class="collapse job-details" class="panel-body" scroll-glue>\n\t\t\t\t<pre ng-if="!!job.output || !!job.errors || job.processingToolFailed()">\x3c!--\n\t\t\t\t\t--\x3e<code>{{job.output}}\x3c!--\n\t\t\t\t\t\t--\x3e<span ng-if="!!job.errors">\n\x3c!--\t\t\t\t\t\t--\x3e{{job.errors}}\x3c!--\n\t\t\t\t\t\t--\x3e</span>\x3c!--\n\t\t\t\t\t\t--\x3e<span ng-if="job.processingToolFailed()">\n\x3c!--\t\t\t\t\t\t--\x3e<span translate>There was an error while running the processing tool</span> ({{job.status}}). \x3c!--\n\t\t\t\t\t\t\t--\x3e<span ng-if="job.processingToolOutOfMemory()" translate>Possible reason: out of memory.</span>\x3c!--\n\t\t\t\t\t\t--\x3e</span>\x3c!--\n\t\t\t\t\t--\x3e</code>\x3c!--\n\t\t\t\t--\x3e</pre>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\n\t<modal>\n\t\t<div class="modal fade" id="confirmJobCancel" tabindex="-1" role="dialog"\n\t\t     aria-labelledby="confirmJobCancel" aria-hidden="true" data-backdrop="static">\n\t\t\t<div class="modal-dialog">\n\t\t\t\t<div class="modal-content">\n\t\t\t\t\t<div class="modal-header">\n\t\t\t\t\t\t<button type="button" class="close" data-dismiss="modal"\n\t\t\t\t\t\t        aria-hidden="true">&times;</button>\n\t\t\t\t\t\t<h4 translate translate-context="title">\n\t\t\t\t\t\t\tConfirm\n\t\t\t\t\t\t</h4>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="modal-body" translate>\n\t\t\t\t\t\tDo you really want to cancel this task?\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t\t<close-button data-dismiss="modal"></close-button>\n\t\t\t\t\t\t<ok-button data-dismiss="modal" ng-click="vm.confirmJobCancel()"></ok-button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</modal>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1636),
    n(615);
    var r = function() {
        function t(t, e, n) {
            var i = this;
            this.LicenseService = t,
            this.fetchPanoInformation(!1);
            var r = e.refreshed.connect((function() {
                return i.fetchPanoInformation(!0)
            }
            ));
            n.$on("$destroy", (function() {
                return r.disconnect()
            }
            ))
        }
        return t.$inject = ["LicenseService", "DatasetManagementService", "$scope"],
        t.prototype.fetchPanoInformation = function(t) {
            var e = this;
            this.LicenseService.initialize(t).then((function(t) {
                e.setPanoInfo(t.maxLocations, t.currentLocations)
            }
            )).catch((function() {
                e.setPanoInfo(0, 0)
            }
            ))
        }
        ,
        t.prototype.setPanoInfo = function(t, e) {
            this.totalPanos = t,
            this.usedPanos = e
        }
        ,
        t.prototype.isInfoValid = function() {
            return void 0 !== this.totalPanos && void 0 !== this.usedPanos && this.totalPanos > 0
        }
        ,
        t
    }();
    e.PanoCountController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DatasetManagementUI/PanoCount.html",
            this.controller = r,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.PanoCountDirective = o,
    i.module("IVWebApp").directive("panoCount", o.factory())
}
, function(t, e) {
    var n = "DatasetManagementUI/PanoCount.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div ng-if="vm.isInfoValid()">\n\t<limit-display total="vm.totalPanos" used="vm.usedPanos">\n\t\t<span translate translate-context="title">Panoramic Images</span>\n\t\t<div class="glyphicon glyphicon-question-sign"\n\t\t     iv-tooltip="{{\'Within each dataset, only those panoramas that are two meters or more away from all the other panoramas are counted towards the subscription.\' | translate}}"\n\t\t     data-placement="right">\n\t\t</div>\n\t</limit-display>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1638),
    n(435),
    n(616),
    n(620),
    n(1639);
    var r = function() {
        function t(t) {
            this.DatasetManagementService = t
        }
        return t.$inject = ["DatasetManagementService"],
        t.prototype.updateDatasetManagement = function() {
            this.DatasetManagementService.refresh()
        }
        ,
        t
    }();
    e.DatasetsWebArchiveController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "DatasetsWebArchive/DatasetsWebArchive.html",
            this.controller = r,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.DatasetsWebArchiveDirective = o,
    i.module("IVWebApp").directive("datasetsWebArchive", o.factory())
}
, function(t, e) {
    var n = "DatasetsWebArchive/DatasetsWebArchive.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<upload\n\tbutton-title="{{\'Upload bundle or dataset\' | translate}}"\n\ttarget-url="api/bundles/archive"\n\taccepted-file-types=".bundle, .nvd, .xml"\n\ton-upload-error="vm.updateDatasetManagement()"\n\ton-upload-success="vm.updateDatasetManagement()">\n</upload>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1640);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "datasets-web-archive>upload>div{padding-top:15px}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    n.r(e);
    var i = n(2)
      , r = n(118)
      , o = n(92)
      , a = n(57)
      , s = n(114);
    function c(t, e) {
        var n;
        if ("undefined" == typeof Symbol || null == t[Symbol.iterator]) {
            if (Array.isArray(t) || (n = function(t, e) {
                if (!t)
                    return;
                if ("string" == typeof t)
                    return l(t, e);
                var n = Object.prototype.toString.call(t).slice(8, -1);
                "Object" === n && t.constructor && (n = t.constructor.name);
                if ("Map" === n || "Set" === n)
                    return Array.from(t);
                if ("Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                    return l(t, e)
            }(t)) || e && t && "number" == typeof t.length) {
                n && (t = n);
                var i = 0
                  , r = function() {};
                return {
                    s: r,
                    n: function() {
                        return i >= t.length ? {
                            done: !0
                        } : {
                            done: !1,
                            value: t[i++]
                        }
                    },
                    e: function(t) {
                        throw t
                    },
                    f: r
                }
            }
            throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")
        }
        var o, a = !0, s = !1;
        return {
            s: function() {
                n = t[Symbol.iterator]()
            },
            n: function() {
                var t = n.next();
                return a = t.done,
                t
            },
            e: function(t) {
                s = !0,
                o = t
            },
            f: function() {
                try {
                    a || null == n.return || n.return()
                } finally {
                    if (s)
                        throw o
                }
            }
        }
    }
    function l(t, e) {
        (null == e || e > t.length) && (e = t.length);
        for (var n = 0, i = new Array(e); n < e; n++)
            i[n] = t[n];
        return i
    }
    function u(t, e, n, l, u, d, p, h, f) {
        var m;
        t.GroupService = l,
        t.UserService = u,
        t.attributeNames = l.getGroupAttributesNames(),
        t.allAttributesText = e.getString("All", null, "As in 'All group attributes'"),
        t.noAttributesText = e.getString("None", null, "As in 'No group attributes'"),
        t.permissionsData = t.permissionsData || {},
        t.groupsTree = (m = {
            showChecks: !1,
            selectable: !0,
            showAttributes: !0,
            attributeNames: t.attributeNames,
            allAttributesText: t.allAttributesText,
            noAttributesText: t.noAttributesText,
            excludeGroupId: u.isAdmin() ? void 0 : s.GroupService.publicGroupId
        },
        new r.GroupsTree(l,m)),
        t.addingInProgressCount = 0,
        t.warningDialogConfig = {
            TITLE: n("Unsaved Changes", void 0, "title"),
            TEXT: n("Your changes are not saved and will be lost if you proceed. Are you sure you want to leave?")
        },
        t.current_page = "GROUPS",
        t.resetGroups = M,
        t.saveGroups = function() {
            C(),
            g.length && (t.addingInProgressCount = g.length,
            function n() {
                if (0 == g.length)
                    return;
                var r = g.shift()
                  , o = t.groupsTree.getParentGroup(r, T());
                if (!o)
                    return;
                function a() {
                    x().then((function() {
                        --t.addingInProgressCount,
                        n()
                    }
                    ))
                }
                l.addGroup(r.name, o.id, o.id, r.attributes).then((function(e) {
                    t.groupsTree.initGroup(e);
                    var n = b.indexOf(r.local_id);
                    n > -1 && (b[n] = e.local_id),
                    Object(i.forEach)(r.childGroups, (function(t) {
                        t.parent = e
                    }
                    )),
                    a()
                }
                ), (function() {
                    d.showMessage(e.getString("Error While Adding the Group {{name}}", {
                        name: r.name
                    }, "title"), e.getString("The group and its subgroups have not been added.")),
                    a()
                }
                ))
            }());
            v.length && (n = [],
            Object(i.forEach)(v, (function(i) {
                var r = l.updateGroup(i.id, i.name, i.attributes).catch((function() {
                    var n = t.groupsTree.getGroupById(i.id, O());
                    d.showMessage(e.getString("Error While Updating the Group {{name}}", {
                        name: n.name
                    }, "title"), e.getString("The group has not been updated. Restoring the last correct state."))
                }
                ));
                n.push(r)
            }
            )),
            Promise.all(n).then(x, x),
            v = []);
            var n;
            y.length && function() {
                var n = [];
                Object(i.forEach)(y, (function(i) {
                    if (t.groupsTree.getParentGroup(i, T())) {
                        var r = l.removeGroup(i).catch((function(t) {
                            var n = 409 === t.status ? e.getString("The group or its subgroup is used by content (buildings, datasets, POIs, or POI categories).") : t.data.msg;
                            d.showMessage(e.getString("Error While Removing the Group {{name}}", {
                                name: i.name
                            }, "title"), n)
                        }
                        ));
                        n.push(r)
                    }
                }
                )),
                n.length && Promise.all(n).then(x, x);
                y = []
            }()
        }
        ,
        t.isDataChanged = E,
        t.mouseOverGroup = function(e) {
            t.groupsTree.hoverGroups(T(), !1),
            t.groupsTree.hoverGroup(e, !0)
        }
        ,
        t.mouseLeaveGroup = function(e) {
            t.groupsTree.mouseLeaveGroup(e)
        }
        ,
        t.toggleGroupExpanded = function(e) {
            t.groupsTree.toggleGroupExpanded(e)
        }
        ,
        t.toggleGroupSelected = function(e) {
            var n = !t.groupsTree.isGroupSelected(e);
            t.groupsTree.selectGroups(T(), !1),
            t.groupsTree.selectGroup(e, n)
        }
        ,
        t.addGroupInAddingState = function(e) {
            t.groupsTree.addGroupInAddingState(e, T()),
            A()
        }
        ,
        t.acceptAddingGroup = function(e) {
            var n = t.groupsTree.acceptAddingGroup(e, T());
            g.push(n)
        }
        ,
        t.cancelAddingGroup = function(e) {
            t.groupsTree.cancelAddingGroup(e, T())
        }
        ,
        t.goToGroupEditState = function(e) {
            t.groupsTree.goToGroupEditState(e, T())
        }
        ,
        t.acceptUpdatingGroupName = function(e) {
            var n = t.groupsTree.getGroupByLocalId(e, T())
              , i = (t.groupsTree.getParentGroup(n, T()),
            t.groupsTree.getGroupById(n.id, O()))
              , r = g.indexOf(n)
              , o = v.indexOf(n);
            i && n.name === i.name ? o > -1 && v.splice(o, 1) : -1 == r && -1 == o && v.push(n);
            r > -1 ? t.groupsTree.goToGroupAddedState(n) : t.groupsTree.goToGroupNormalState(n)
        }
        ,
        t.cancelUpdatingGroupName = function(e) {
            t.groupsTree.cancelUpdatingGroupName(e, T())
        }
        ,
        t.removeGroup = function(e) {
            t.groupsTree.getGroupWithDescendants(e);
            t.groupsTree.selectGroup(e, !1);
            var n = t.groupsTree.getParentGroup(e, T());
            if (n) {
                var r = n.childGroups.indexOf(e);
                r > -1 && n.childGroups.splice(r, 1)
            }
            null == e.id ? function(e) {
                var n = t.groupsTree.getGroupWithDescendants(e);
                Object(i.forEach)(n, (function(t) {
                    var e = g.indexOf(t);
                    e > -1 && g.splice(e, 1)
                }
                ))
            }(e) : y.push(e);
            A()
        }
        ,
        t.toggleGroupAttribute = function(e, n) {
            if (!t.isUserAllowedToChangeAttribute(n))
                return;
            e.toggleAttribute(n),
            function(t, e) {
                if (0 !== t.id)
                    return;
                if (t.isAttributeEnabled(e))
                    switch (e) {
                    case a.GroupAttributes.CAN_CREATE_POIS:
                    case a.GroupAttributes.CAN_CREATE_POI_GROUPS:
                        t.setAttribute(a.GroupAttributes.CAN_MAKE_PUBLIC, !0)
                    }
                else
                    switch (e) {
                    case a.GroupAttributes.CAN_MAKE_PUBLIC:
                        t.setAttribute(a.GroupAttributes.CAN_CREATE_POIS, !1),
                        t.setAttribute(a.GroupAttributes.CAN_CREATE_POI_GROUPS, !1)
                    }
            }(e, n);
            var r = t.groupsTree.getGroupById(e.id, O())
              , o = v.indexOf(e);
            if (r) {
                var s = Object(i.equals)(e.attributes, r.attributes);
                s || -1 != o ? s && o > -1 && v.splice(o, 1) : v.push(e)
            }
            t.groupsTree.updateGroupAttributesString(e)
        }
        ,
        t.isUserAllowedToChangeAttribute = function(t) {
            return T().some((function(e) {
                return e.isAttributeEnabled(t)
            }
            ))
        }
        ,
        t.getGroupNotWritableText = function(t) {
            return !t || t.security.canWrite ? "" : e.getString("You do not have permission to edit this group")
        }
        ,
        t.hasValidLicenseModule = function() {
            return p.isFeatureEnabled(o.LicenseFeatureType.USER_MANAGEMENT)
        }
        ,
        t.warningContinueHandler = function() {
            M(),
            f.continueHoldAction(),
            Object(i.element)(document.getElementById("groups-unsaved-changes-modal")).modal("hide")
        }
        ,
        t.canCreateUserGroups = function() {
            return u.userInfo.checkAttribute(a.GroupAttributes.CAN_CREATE_USER_GROUPS)
        }
        ;
        var g = []
          , v = []
          , y = []
          , b = []
          , w = [];
        function S() {
            return !!E() && (Object(i.element)(document.getElementById("groups-unsaved-changes-modal")).modal("show"),
            !0)
        }
        function x(e) {
            var n = u.userInfo
              , r = l.getGroupsAsTree(n.primaryGroups);
            return e && l.clearGroups(),
            l.getGroupsAsTree(n.primaryGroups).then((function(e) {
                t.permissionsData.groups = [];
                var n, i = c(e);
                try {
                    for (i.s(); !(n = i.n()).done; ) {
                        var r = n.value
                          , s = new a.GroupEntity;
                        s.copy(r),
                        t.permissionsData.groups.push(s)
                    }
                } catch (t) {
                    i.e(t)
                } finally {
                    i.f()
                }
                o()
            }
            ), (function() {
                l.setGroups(r),
                t.permissionsData.groups = Object(i.copy)(r),
                o()
            }
            ));
            function o() {
                var e;
                t.permissionsData.isDataChanged = E,
                t.groupsTree.setGroups(t.permissionsData.groups),
                A(),
                e = b.map((function(e) {
                    return t.groupsTree.getGroupByLocalId(e, T())
                }
                )).filter(Boolean),
                t.groupsTree.expandGroups(e, !0)
            }
        }
        function M() {
            g = [],
            v = [],
            y = [],
            C(),
            x()
        }
        function E() {
            return g.length > 0 || v.length > 0 || y.length > 0
        }
        function C() {
            b = T().filter(t.groupsTree.isGroupExpanded).map((function(t) {
                return t.local_id
            }
            ))
        }
        function A() {
            w = l.createGroupsArray(t.permissionsData.groups)
        }
        function T() {
            return w
        }
        function O() {
            return l.getGroupsAsArray()
        }
        !function() {
            var t = f.getActiveItem();
            t && (t.onExit = S);
            h.initialized.then((function() {
                x(!0)
            }
            ))
        }()
    }
    u.$inject = ["$scope", "gettextCatalog", "gettext", "GroupService", "UserService", "MessageReportingService", "LicenseService", "AuthenticationService", "SidebarMenuService"],
    Object(i.module)("IVWebApp").controller("GroupController", u)
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    n(1643);
    var i = n(2)
      , r = n(8)
      , o = n(136)
      , a = function() {
        function t(t, e, n) {
            var i = this;
            this.SidebarMenuService = e,
            this.IV = n,
            this.hiddenImages = [],
            t.filter((new o.ImageRestFilterBuilder).hidden(!0).build()).then((function(t) {
                return i.hiddenImages = t
            }
            )).catch(r.handleWarning)
        }
        return t.$inject = ["ImageRepository", "SidebarMenuService", "IV"],
        t.prototype.moveToImage = function(t) {
            this.SidebarMenuService.closeMenu(),
            this.IV.moveToImage(t).catch(r.handleWarning)
        }
        ,
        t
    }();
    e.HiddenImagesController = a;
    var s = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "ImageUI/HiddenImages.html",
            this.controller = a,
            this.controllerAs = "vm"
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.HiddenImagesDirective = s,
    i.module("IVWebApp").directive("hiddenImages", s.factory())
}
, function(t, e) {
    var n = "ImageUI/HiddenImages.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="panel panel-default">\n\t<div class="panel-body">\n\t\t<div class="row">\n\t\t\t<div class="col-md-12" translate>The following images are hidden and will not be used:\n\t\t\t</div>\n\t\t</div>\n\t\t<br/>\n\t\t<div class="row">\n\t\t\t<div class="col-md-1" ng-repeat="image in vm.hiddenImages">\n\t\t\t\t<a ng-click="vm.moveToImage(image); $event.stopPropagation()"\n\t\t\t\t   class="clickable">{{image.id}}</a>\n\t\t\t</div>\n\t\t\t<div class="col-md-12" ng-show="!vm.hiddenImages.length" translate>\n\t\t\t\tThere are no hidden images\n\t\t\t</div>\n\t\t</div>\n\t\t<br/>\n\t\t<div class="row">\n\t\t\t<div class="col-md-12" translate>Note: to unhide, click on a link above and use the option "Unhide current location" from the right-click menu.\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1645),
    n(1646);
    var r = n(1648)
      , o = n(525)
      , a = n(89)
      , s = n(522);
    n(1649);
    var c = n(25)
      , l = n(7)
      , u = n(8)
      , d = function() {
        function t(t, e, n, i, r, o, l, u, d) {
            this.ConfigService = t,
            this.ErrorService = e,
            this.gettextCatalog = n,
            this.SidebarMenuService = i,
            this.TextGenService = r,
            this.LicenseService = o,
            this.UrlService = l,
            this.PoiTypeService = u,
            this.RestService = d,
            this.groupedConfigs = this.ConfigService.groupedConfigs,
            this.loginIconElem = '<i class="glyphicon glyphicon-user"></i>',
            this.settingIconElem = '<i class="glyphicon glyphicon-cog"></i>',
            this.progressWrapper = new a.PromiseProgressWrapper,
            this.errorWrapper = this.ErrorService.newWrapper().report().network().detector(new s.GenericDetector(this.gettextCatalog,"Network error")).build(),
            this.loginUrl = this.UrlService.generateUrl(c.Configs.MENU_LOGIN_VISIBLE, "true", c.Configs.MENU_SETTINGS_VISIBLE, "true")
        }
        return t.$inject = ["ConfigService", "ErrorService", "gettextCatalog", "SidebarMenuService", "TextGenService", "LicenseService", "UrlService", "PoiTypeService", "RestService"],
        t.prototype.getTranslationKey = function(t) {
            return this.TextGenService.getText("ConfigurationEditor", t.toUpperCase().split(".").join("_"))
        }
        ,
        t.prototype.getConfigUnavailableText = function(t) {
            return this.isConfigDisabled(t) ? this.gettextCatalog.getString("This option is not available") : ""
        }
        ,
        t.prototype.getStartupViewDisabledText = function() {
            return this.isStartupConfigDisabled() ? this.gettextCatalog.getString("You do not have permission to change the startup view") : ""
        }
        ,
        t.prototype.discardChangedConfigs = function() {
            for (var t in this.ConfigService.changedConfigs) {
                var e = this.ConfigService.changedConfigs[t];
                this.ConfigService.changedConfigs[t].value = this.getSavedConfigValue(e)
            }
            this.clearChangedConfigs()
        }
        ,
        t.prototype.saveChangedConfigs = function() {
            var t = this;
            this.ConfigService.validateConfigs(this.ConfigService.changedConfigs) && r.wrap(this.ConfigService.saveConfigs(this.ConfigService.changedConfigs), this.errorWrapper, this.progressWrapper).then((function() {
                t.clearChangedConfigs(),
                t.SidebarMenuService.itemsVisibilityUpdated.emit(),
                t.PoiTypeService.initPoiTypesVisibility().catch(u.handleWarning)
            }
            )).catch((function() {}
            ))
        }
        ,
        t.prototype.changeConfig = function(t) {
            this.ConfigService.changedConfigs[t.name] ? this.ConfigService.changedConfigs[t.name] && this.ConfigService.changedConfigs[t.name].value === this.getSavedConfigValue(t) && delete this.ConfigService.changedConfigs[t.name] : this.ConfigService.changedConfigs[t.name] = t
        }
        ,
        t.prototype.noConfigsChanged = function() {
            return 0 === Object.keys(this.ConfigService.changedConfigs).length
        }
        ,
        t.prototype.isConfigDisabled = function(t) {
            var e = !0
              , n = this.ConfigService.getLicensableConfigFeature(t.name);
            return n && (e = this.LicenseService.isFeatureEnabled(n)),
            !(e && t.canWrite)
        }
        ,
        t.prototype.isStartupConfigDisabled = function() {
            var t = this;
            return l.some(this.ConfigService.configArray, (function(e) {
                return e.category === o.ConfigCategory.STARTUP_VIEW && t.isConfigDisabled(e)
            }
            ))
        }
        ,
        t.prototype.clearChangedConfigs = function() {
            this.ConfigService.changedConfigs = {}
        }
        ,
        t.prototype.getSavedConfigValue = function(t) {
            return t.type === o.ConfigType.BOOLEAN ? this.ConfigService.getBoolean(t.name, !1) : this.ConfigService.getString(t.name, "")
        }
        ,
        t.prototype.isSelectInput = function(t) {
            return t.type === o.ConfigType.ENUM
        }
        ,
        t.prototype.isTextInput = function(t) {
            return t.type === o.ConfigType.STRING || t.type === o.ConfigType.CSV || t.type === o.ConfigType.NUMBER
        }
        ,
        t.prototype.isCheckboxInput = function(t) {
            return t.type === o.ConfigType.BOOLEAN || void 0 === t.type
        }
        ,
        t.prototype.isTextareaInput = function(t) {
            return t.type === o.ConfigType.MULTILINE
        }
        ,
        t.prototype.isMenuVisibility = function(t) {
            return t.category === o.ConfigCategory.MENU_VISIBILITY
        }
        ,
        t.prototype.downloadLogs = function() {
            this.RestService.directDownload("logs", {})
        }
        ,
        t
    }();
    e.ConfigEditorController = d;
    var p = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "ConfigUI/ConfigEditor.html",
            this.controller = d,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.ConfigEditorDirective = p,
    i.module("IVWebApp").directive("configEditor", p.factory())
}
, function(t, e) {
    var n = "ConfigUI/ConfigEditor.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div id="settings-config-panel"\n     class="panel panel-default panel-sticky-header">\n\t<div class="panel-heading">\n\t\t<div class="control-buttons">\n\t\t\t<discard-button ng-click="vm.discardChangedConfigs()"\n\t\t\t                ng-disabled="vm.noConfigsChanged() || vm.progressWrapper.isInProgress"></discard-button>\n\t\t\t<save-button ng-click="vm.saveChangedConfigs()"\n\t\t\t             ng-disabled="vm.noConfigsChanged() || vm.progressWrapper.isInProgress"\n\t\t\t             in-progress="vm.progressWrapper.isInProgress"></save-button>\n\t\t</div>\n\t</div>\n\t<div class="panel-body">\n\t\t<form>\n\t\t\t<div class="row">\n\n\t\t\t\t\x3c!-- Configs --\x3e\n\t\t\t\t<div ng-repeat="groupedConfig in vm.groupedConfigs">\n\n\t\t\t\t\t<div ng-if="$even" class="clearfix"></div>\n\n\t\t\t\t\t<div class="col-sm-6 panel-config-column">\n\t\t\t\t\t\t<div class="panel panel-default">\n\t\t\t\t\t\t\t<div class="panel-heading">\n\t\t\t\t\t\t\t\t<label>{{vm.getTranslationKey(groupedConfig.category) | translate:"title"}}</label>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<div class="panel-body">\n\t\t\t\t\t\t\t\t<div class="form-group"\n\t\t\t\t\t\t\t\t     ng-hide="config.hide"\n\t\t\t\t\t\t\t\t     ng-repeat="config in groupedConfig | orderBy : \'name\'">\n\n\t\t\t\t\t\t\t\t\t<div ng-if="vm.isSelectInput(config)"\n\t\t\t\t\t\t\t\t\t     title="{{vm.getConfigUnavailableText(config)}}">\n\t\t\t\t\t\t\t\t\t\t<p>{{vm.getTranslationKey(config.name) | translate}}</p>\n\t\t\t\t\t\t\t\t\t\t<select class="form-control config-form-control"\n\t\t\t\t\t\t\t\t\t\t        ng-model="config.value"\n\t\t\t\t\t\t\t\t\t\t        ng-options="val for val in config.possibleValues"\n\t\t\t\t\t\t\t\t\t\t        ng-disabled="vm.isConfigDisabled(config)"\n\t\t\t\t\t\t\t\t\t\t        ng-change="vm.changeConfig(config)">\n\t\t\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t<div ng-if="vm.isTextInput(config)"\n\t\t\t\t\t\t\t\t\t     title="{{vm.getConfigUnavailableText(config)}}">\n\t\t\t\t\t\t\t\t\t\t<p>{{vm.getTranslationKey(config.name) | translate}}</p>\n\t\t\t\t\t\t\t\t\t\t<input class="form-control config-form-control"\n\t\t\t\t\t\t\t\t\t\t       ng-model="config.value"\n\t\t\t\t\t\t\t\t\t\t       ng-disabled="vm.isConfigDisabled(config)"\n\t\t\t\t\t\t\t\t\t\t       ng-change="vm.changeConfig(config)">\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t<div class="checkbox"\n\t\t\t\t\t\t\t\t\t     ng-if="vm.isCheckboxInput(config)"\n\t\t\t\t\t\t\t\t\t     title="{{vm.getConfigUnavailableText(config)}}">\n\t\t\t\t\t\t\t\t\t\t<label>\n\t\t\t\t\t\t\t\t\t\t\t<input type="checkbox"\n\t\t\t\t\t\t\t\t\t\t\t       ng-model="config.value"\n\t\t\t\t\t\t\t\t\t\t\t       ng-disabled="vm.isConfigDisabled(config)"\n\t\t\t\t\t\t\t\t\t\t\t       ng-change="vm.changeConfig(config)">\n\t\t\t\t\t\t\t\t\t\t\t\t{{vm.getTranslationKey(config.name) | translate}}\n\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t<div ng-if="vm.isTextareaInput(config)"\n\t\t\t\t\t\t\t\t\t     title="{{vm.getConfigUnavailableText(config)}}">\n\t\t\t\t\t\t\t\t\t\t<p>{{vm.getTranslationKey(config.name) | translate}}</p>\n\t\t\t\t\t\t\t\t\t\t<textarea class="form-control"\n\t\t\t\t\t\t\t\t\t\t          rows="3"\n\t\t\t\t\t\t\t\t\t\t          ng-model="config.value"\n\t\t\t\t\t\t\t\t\t\t          ng-disabled="vm.isConfigDisabled(config)"\n\t\t\t\t\t\t\t\t\t\t          ng-change="vm.changeConfig(config)"></textarea>\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\x3c!-- Show login & settings note for the menu visibility section --\x3e\n\t\t\t\t\t\t\t\t<div ng-if="vm.isMenuVisibility(groupedConfig)" class="alert alert-info">\n\t\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\t\t<span translate-html-params-login-icon="vm.loginIconElem"\n\t\t\t\t\t\t\t\t\t\t      translate-html-params-setting-icon="vm.settingIconElem" translate>\n\t\t\t\t\t\t\t\t\t\t\tIf you hide the sign in menu ({{loginIcon}}) or the settings menu ({{settingIcon}}), bookmark this link to temporarily re-enable it and access this page:\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t<a href="{{vm.loginUrl}}" target="_blank">{{vm.loginUrl}}</a>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div ng-if="!$even" class="clearfix"></div>\n\n\t\t\t\t\x3c!-- Startup View --\x3e\n\t\t\t\t<div class="col-sm-6 panel-config-column">\n\t\t\t\t\t<div class="panel panel-default">\n\t\t\t\t\t\t<div class="panel-heading">\n\t\t\t\t\t\t\t<label translate translate-context="title">Starting Location</label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class="panel-body">\n\t\t\t\t\t\t\t<div class="form-group"\n\t\t\t\t\t\t\t     title="{{vm.getStartupViewDisabledText()}}">\n\t\t\t\t\t\t\t\t<p translate>Set current view as global startup view</p>\n\n\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t<button class="btn btn-default margin-bottom-small"\n\t\t\t\t\t\t\t\t\t        data-toggle="modal"\n\t\t\t\t\t\t\t\t\t        data-target="#setStartupViewModal"\n\t\t\t\t\t\t\t\t\t        ng-disabled="vm.isStartupConfigDisabled()">\n\t\t\t\t\t\t\t\t\t\t<span class="glyphicon glyphicon-screenshot"></span>\n\t\t\t\t\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\t\t\t\t\tSet startup view\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t<button class="btn btn-danger margin-bottom-small"\n\t\t\t\t\t\t\t\t\t        data-toggle="modal"\n\t\t\t\t\t\t\t\t\t        data-target="#resetStartupViewModal"\n\t\t\t\t\t\t\t\t\t        ng-disabled="vm.isStartupConfigDisabled()">\n\t\t\t\t\t\t\t\t\t\t<span class="glyphicon glyphicon-trash"></span>\n\t\t\t\t\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\t\t\t\t\tReset startup view\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t\x3c!-- Troubleshooting --\x3e\n\t\t\t\t<div class="col-sm-6 panel-config-column">\n\t\t\t\t\t<div class="panel panel-default">\n\t\t\t\t\t\t<div class="panel-heading">\n\t\t\t\t\t\t\t<label translate translate-context="title">Troubleshooting</label>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div class="panel-body">\n\t\t\t\t\t\t\t<button class="btn btn-default margin-bottom-small"\n\t\t\t\t\t\t\t        ng-click="vm.downloadLogs()">\n\t\t\t\t\t\t\t\t<span class="glyphicon glyphicon-save-file"></span>\n\t\t\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\t\t\tDownload logs\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t</div>\n\n\t\t</form>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1647);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "config-editor .btn,config-editor .config-form-control{width:auto}config-editor .panel-config-column .panel .panel-heading label{margin-bottom:0}.indoorViewer.desktop config-editor .panel-config-column{padding-left:5px;padding-right:5px}.indoorViewer.mobile-small config-editor .panel-config-column{padding-left:0;padding-right:0}.indoorViewer.mobile-small config-editor .panel-config-column .panel{margin-bottom:0;border-left:none;border-right:none;border-bottom:none;border-radius:0;box-shadow:none}.indoorViewer.mobile config-editor .panel-config-column{padding-left:0;padding-right:0}.indoorViewer.mobile config-editor .panel-config-column .panel{margin-bottom:0;border-left:none;border-right:none;border-bottom:none;border-radius:0;box-shadow:none}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    e.wrap = function(t) {
        for (var e = [], n = 1; n < arguments.length; n++)
            e[n - 1] = arguments[n];
        for (var i = 0, r = e; i < r.length; i++) {
            var o = r[i];
            t = o.wrap(t)
        }
        return t
    }
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2)
      , r = n(6)
      , o = n(0)
      , a = n(0)
      , s = function() {
        function t(t) {
            this.gettext = t,
            this.translationTable = {
                ConfigurationEditor: this.initializeConfigurationEditorMap()
            }
        }
        return t.prototype.getText = function(t, e) {
            var n = this.translationTable[t][e];
            return n || (console.warn("WARNING: getText failed lookup:", t, e),
            "FAILED TEXT LOOKUP")
        }
        ,
        t.prototype.initializeConfigurationEditorMap = function() {
            return {
                LON: this.gettext("Geographic latitude of the startup location. A panorama close to this point is chosen as the starting location"),
                LAT: this.gettext("Geographic longitude of the startup location"),
                Z: this.gettext("Height of the startup location"),
                CORE_INIT_IMAGE: this.gettext("Startup image database ID"),
                CORE_INIT_LON: this.gettext("Horizontal view direction"),
                CORE_INIT_LAT: this.gettext("Vertical view direction"),
                CORE_INIT_VIEW: this.gettext('Primary startup view for desktop devices, either "panorama" (default) or "map"'),
                CORE_INIT_VIEW_MOBILE: this.gettext('Primary startup view for mobile devices, either "panorama" or "map" (default)'),
                MENU_DATASETS_VISIBLE: this.gettext("Datasets"),
                MENU_LOGIN_VISIBLE: this.gettext("Sign in"),
                MENU_VIEW_VISIBLE: this.gettext("View"),
                MENU_POI_VISIBLE: this.gettext("POIs"),
                MENU_POINTCLOUD_VISIBLE: this.gettext("Point cloud"),
                MENU_MODE_VISIBLE: this.gettext("Mode"),
                MENU_SHARE_VISIBLE: this.gettext("Share"),
                MENU_ABOUT_VISIBLE: this.gettext("Info menu (do not hide this menu, it is required to comply with third party licenses)"),
                MENU_SETTINGS_VISIBLE: this.gettext("Settings"),
                MENU_NEWWINDOW_VISIBLE: this.gettext("New Window"),
                LAYERS_POINTCLOUD_VISIBLE: this.gettext("Point cloud"),
                LAYERS_PANORAMAS_VISIBLE: this.gettext("Panorama images"),
                LAYERS_LOCATIONS_VISIBLE: this.gettext("Location markers (image locations on floor)"),
                LAYERS_CAMERAFOV_MOBILE_VISIBLE: this.gettext("Panorama position indicator (location dot) on mobile"),
                LAYERS_MAP_VISIBLE: this.gettext("Secondary view window"),
                POI_SHARE_ENABLED: this.gettext("Share button on the POI panel"),
                POI_FULLSCREEN: this.gettext("Show POI and site model details as full screen dialog"),
                POI_NAMES_MAP: this.gettext('Show POI names in the "map" view'),
                POI_NAMES_PANORAMAS: this.gettext('Show POI names in the "panorama" view'),
                POI_VISIBILITYCHECK_ENABLED: this.gettext("Check and adjust POI visibility"),
                UI_POI_PANEL_VISIBLE: this.gettext("Detail panels"),
                UI_FLOORCHANGER_VISIBLE: this.gettext("Floor changer widget"),
                UI_SEARCH_VISIBLE: this.gettext("Search box"),
                UI_STATUSCHECK_VISIBLE: this.gettext("Status check"),
                LAYERS_POINTCLOUD_SAME_RES: this.gettext("Disable level-of-detail mechanism for point clouds (all points are loaded with selected resolution, do NOT use this in production)"),
                ROUTING_ENABLED: this.gettext("Enable routing"),
                CORE_MAP_BG: this.gettext("Background color (RGBA) of map (integer), e.g. 0xFFFFFFFF for white + fully opaque or 0 for black + fully transparent"),
                CORE_MAP_FOV_COLOR: this.gettext("Color (RGB) of field of view indicator"),
                CORE_MAP_FOV_BLENDING: this.gettext("Blending mode for field of view indicator (NoBlending = 0, NormalBlending = 1, AdditiveBlending = 2, SubtractiveBlending = 3, MultiplyBlending = 4)"),
                CORE_MAP_MARKER_COLOR: this.gettext("Color (RGB) of location markers in map view (in panorama view they are always white)"),
                CORE_MAP_MARKER_BLENDING: this.gettext("Blending mode for location markers (see core.map.fov.blending)"),
                CORE_MAP_BASEMAP: this.gettext("Base map"),
                CORE_MAP_TILE_URL: this.gettext("Map tile URL"),
                CORE_MAP_TILE_MIN_ZOOM: this.gettext("Minimum map tile zoom level"),
                CORE_MAP_TILE_MAX_ZOOM: this.gettext("Maximum map tile zoom level"),
                CORE_MAP_ATTRIBUTION: this.gettext("Map attribution"),
                CORE_SECURITY_CORS: this.gettext("Allowed origins for cross-origin requests (one origin per line, e.g. https://www.example.org, or leave empty to deny cross-origin requests)"),
                LAYERS_PANORAMAS_MOBILE_MAX_RES: this.gettext("Maximum resolution of the panorama images loaded for mobile users (use 2 or 1)"),
                POI_TYPES: this.gettext("Only show POIs from categories in the comma separated list (e.g. 11,17,18), note: the category numbers are shown in the POI category panel in edit mode"),
                INFO_TERMS_PRIVACY: this.gettext("HTML to show as privacy policy in about box"),
                INFO_TERMS_EXTRA: this.gettext("HTML to show as extra credits in about box"),
                FEEDBACK_EMAIL_FROM_DOMAIN: this.gettext("Domain of from address"),
                FEEDBACK_EMAIL_RECIPIENT_EMAIL: this.gettext("Recipient email"),
                FEEDBACK_EMAIL_RECIPIENT_SMTPHOST: this.gettext("SMTP server"),
                FEEDBACK_PRIVACY_HTML: this.gettext("HTML to show the data privacy statement in the feedback form"),
                FEEDBACK_PRIVACY_TEXT_CHECKBOX: this.gettext("Show checkbox with consent"),
                FEEDBACK_PRIVACY_TEXT_TEXT: this.gettext("Consent text for the data privacy statement"),
                TRACKING_ENABLED: this.gettext("Enable tracking"),
                TRACKING_CODE: this.gettext("Javascript tracking code for statistics (only actually inserted into the page header if tracking is enabled)"),
                SITE_MODEL_SEARCH_ENABLED: this.gettext("Enable site model search"),
                LAYERS_POLYGON_VECTOR_MAP_STYLE: this.gettext("Vector map style sheet"),
                MENU_VISIBILITY: this.gettext("Menu Visibility", void 0, "title"),
                UI_ELEMENTS: this.gettext("Visibility of Built-in UI Elements", void 0, "title"),
                LAYER_VISIBILITY: this.gettext("Layer Visibility", void 0, "title"),
                CUSTOMIZABLE_CONTENT: this.gettext("Customizable Content", void 0, "title"),
                FUNCTIONALITY: this.gettext("Functionality", void 0, "title"),
                APPEARANCE: this.gettext("Appearance", void 0, "title"),
                MAIN_SCENE: this.gettext("Primary View", void 0, "title"),
                FEEDBACK_TO_EMAIL: this.gettext("Email Feedback from Users", void 0, "title"),
                SECURITY: this.gettext("Security", void 0, "title"),
                MAP_APPEARANCE: this.gettext("Map Appearance", void 0, "title")
            }
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(a.ɵɵinject("gettext"))
        }
        ,
        t.ɵprov = a.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.TextGenService = s,
    a.ɵsetClassMetadata(s, [{
        type: o.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: void 0,
            decorators: [{
                type: o.Inject,
                args: ["gettext"]
            }]
        }]
    }
    ), null),
    i.module("IVWebApp").service("TextGenService", r.downgradeInjectable(s))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1651),
    n(1652);
    var r = function() {
        function t(t) {
            this.LicenseService = t,
            this.URL = '<a href="https://portal.4dkankan.com" target="_blank">portal.4dkankan.com</a>',
            this.permissionsData = {
                users: void 0,
                groups: void 0,
                isDataChanged: void 0
            }
        }
        return t.$inject = ["LicenseService"],
        Object.defineProperty(t.prototype, "daysUntilExpire", {
            get: function() {
                return this.LicenseService.daysUntilExpire
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.isExpirationPeriod = function() {
            return this.LicenseService.isExpirationPeriod()
        }
        ,
        t
    }();
    e.LicenseExpiredWarningController = r;
    var o = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "LicenseWarning/LicenseExpiredWarning.html",
            this.controller = r,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.LicenseExpiredWarningDirective = o,
    i.module("IVWebApp").directive("licenseExpiredWarning", o.factory())
}
, function(t, e) {
    var n = "LicenseWarning/LicenseExpiredWarning.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div>\n\t\x3c!-- License is going to expire soon warning --\x3e\n\t<div class="alert alert-warning license-expiration-warning iv-panel-warning"\n\t     ng-if="vm.isExpirationPeriod()">\n\t\t<span class="fa fa-exclamation-triangle" aria-hidden="true"></span>\n\t\t<div>\n\t\t\t<p><strong translate>Instance key is going to expire soon!</strong></p>\n\t\t\t<p translate\n\t\t\t   translate-html-params-link="vm.URL">\n\t\t\t\tYour instance key of 4dkankan is going to expire soon. Please extend it on {{link}} and import into this 4dkankan instance using the administration panel in the settings. In case of any further questions, contact your service provider.\n\t\t\t</p>\n\t\t\t<p translate translate-params-days="vm.daysUntilExpire">{{days}} days remaining</p>\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1653);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "license-expired-warning .license-expiration-warning{margin:20px 10px}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1655),
    n(1656);
    var r = n(152)
      , o = n(621)
      , a = n(92)
      , s = n(622)
      , c = n(20)
      , l = n(8);
    n(649);
    var u = function() {
        function t(t, e, n) {
            this.LicenseService = t,
            this.$element = e,
            this.ConfigService = n,
            this.userAuthConfigState = o.ConfigState.PROVIDE_CONFIG,
            this.isOpenIdEnabled = !1,
            this.isFederatedAuthenticationEnabled = !1,
            this.federatedAuthenticationPanel = this.$element.find("#federatedAuthenticationPanel"),
            this.openIdPanel = this.$element.find("#openIdPanel"),
            this.resetAuthenticationConfig(this.ConfigService)
        }
        return t.$inject = ["LicenseService", "$element", "ConfigService"],
        t.prototype.resetAuthenticationConfig = function(t) {
            var e = this;
            s.AuthenticationConfiguration.factory()(t).then((function(t) {
                e.authConfig = t,
                e.toggleCollapse(e.openIdPanel, t.isOpenIdAuthenticationConfigEmpty(), (function(t) {
                    return e.isOpenIdEnabled = t
                }
                )),
                e.toggleCollapse(e.federatedAuthenticationPanel, c.isBlank(t.federatedJwkSetUri), (function(t) {
                    return e.isFederatedAuthenticationEnabled = t
                }
                ))
            }
            )).catch(l.handleWarning)
        }
        ,
        t.prototype.toggleCollapse = function(t, e, n) {
            e ? (n(!1),
            t.collapse("hide")) : (n(!0),
            t.collapse("show"))
        }
        ,
        t.prototype.handleCheckboxChange = function(t, e, n, i) {
            t.hasClass("collapsing") ? n(!e()) : e() ? t.collapse("show") : (i(),
            t.collapse("hide"))
        }
        ,
        t.prototype.canSaveChanges = function() {
            return !!this.authConfig && (this.authConfig.canSave() && !this.isUserAuthConfigStateInProgress())
        }
        ,
        t.prototype.canDiscardChanges = function() {
            return !!this.authConfig && (this.authConfig.isDirty() && !this.isUserAuthConfigStateInProgress())
        }
        ,
        t.prototype.saveChanges = function() {
            var t = this;
            this.userAuthConfigState = o.ConfigState.IN_PROGRESS,
            this.authConfig.save().then((function() {
                return t.userAuthConfigState = o.ConfigState.SUCCESS
            }
            )).catch((function() {
                return t.userAuthConfigState = o.ConfigState.ERROR
            }
            ))
        }
        ,
        t.prototype.copyIndoorViewerHostUrlToConfig = function() {
            this.authConfig && (this.authConfig.oauthHostUrl = r.getBaseUrl())
        }
        ,
        t.prototype.isUserAuthFeatureEnabled = function() {
            return this.LicenseService.isFeatureEnabled(a.LicenseFeatureType.USER_MANAGEMENT)
        }
        ,
        t.prototype.isUserAuthConfigStateInProgress = function() {
            return this.userAuthConfigState === o.ConfigState.IN_PROGRESS
        }
        ,
        t.prototype.isUserAuthConfigStateSuccessful = function() {
            return this.userAuthConfigState === o.ConfigState.SUCCESS
        }
        ,
        t.prototype.isUserAuthConfigStateError = function() {
            return this.userAuthConfigState === o.ConfigState.ERROR
        }
        ,
        t.prototype.isBlank = function(t) {
            return c.isBlank(t)
        }
        ,
        t.prototype.handleOpenIdCheckboxChange = function() {
            var t = this;
            this.handleCheckboxChange(this.openIdPanel, (function() {
                return t.isOpenIdEnabled
            }
            ), (function(e) {
                return t.isOpenIdEnabled = e
            }
            ), (function() {
                return t.authConfig.clearOpenIdConfiguration()
            }
            ))
        }
        ,
        t.prototype.handleFederatedAuthenticationCheckboxChange = function() {
            var t = this;
            this.handleCheckboxChange(this.federatedAuthenticationPanel, (function() {
                return t.isFederatedAuthenticationEnabled
            }
            ), (function(e) {
                return t.isFederatedAuthenticationEnabled = e
            }
            ), (function() {
                return t.authConfig.federatedJwkSetUri = ""
            }
            ))
        }
        ,
        t.prototype.discardChanges = function() {
            this.resetAuthenticationConfig(this.ConfigService),
            this.userAuthConfigState = o.ConfigState.PROVIDE_CONFIG
        }
        ,
        t
    }();
    e.UserAuthConfigController = u;
    var d = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "Settings/UserAuthConfig.html",
            this.controller = u,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.UserAuthConfigDirective = d,
    i.module("IVWebApp").directive("userAuthConfig", d.factory())
}
, function(t, e) {
    var n = "Settings/UserAuthConfig.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="panel panel-default panel-sticky-header">\n\t<div class="panel-heading">\n\t\t<div class="control-buttons text-right">\n\t\t\t<discard-button ng-click="vm.discardChanges()"\n\t\t\t                ng-disabled="!vm.canDiscardChanges()">\n\t\t\t\t<span translate>Discard</span>\n\t\t\t</discard-button>\n\t\t\t<save-button ng-click="vm.saveChanges()"\n\t\t\t             ng-disabled="!vm.canSaveChanges()">\n\t\t\t</save-button>\n\t\t</div>\n\t</div>\n\t<div class="panel-body">\n\t\t<div class="row">\n\t\t\t<div class="col-md-6">\n\t\t\t\t<h4 translate translate-context="title">\n\t\t\t\t\tPrivate Mode\n\t\t\t\t</h4>\n\t\t\t\t<p translate>\n\t\t\t\t\tHere you can enable or disable private mode for this instance.\n\t\t\t\t</p>\n\t\t\t\t<div class="checkbox">\n\t\t\t\t\t<label>\n\t\t\t\t\t\t<input type="checkbox" ng-model="vm.authConfig.isPrivateModeEnabled"/>\n\t\t\t\t\t\t<span translate>Enable private mode</span>\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class="row">\n\t\t\t<div class="col-md-6">\n\t\t\t\t<form class="form-horizontal">\n\t\t\t\t\t<h4 translate>OpenID Connect</h4>\n\t\t\t\t\t\x3c!-- user authentication not enabled in a license --\x3e\n\t\t\t\t\t<div class="alert alert-warning"\n\t\t\t\t\t     ng-if="!vm.isUserAuthFeatureEnabled()">\n\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\tA fully functional User Authentication module is not available for this instance. Please upgrade your instance key and import it into 4dkankan.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="checkbox">\n\t\t\t\t\t\t<label>\n\t\t\t\t\t\t\t<input type="checkbox" id="enableCheckbox"\n\t\t\t\t\t\t\t       ng-change="vm.handleOpenIdCheckboxChange()"\n\t\t\t\t\t\t\t       ng-model="vm.isOpenIdEnabled"\n\t\t\t\t\t\t\t       ng-disabled="vm.isUserAuthConfigStateInProgress() || !vm.isUserAuthFeatureEnabled()"/>\n\t\t\t\t\t\t\t<span translate>Enable OpenID Connect</span>\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- user authentication can be enabled - fill in form with config data --\x3e\n\t\t\t\t\t<div #openIdPanel id="openIdPanel" class="collapse">\n\t\t\t\t\t\t<div class="row form-group open-id-form container-fluid">\n\t\t\t\t\t\t\t<div class="col-md-9">\n\t\t\t\t\t\t\t\t<div class="form-group"\n\t\t\t\t\t\t\t\t     ng-class="{\'has-success\' : !vm.isBlank(vm.authConfig.oauthHostUrl),\n\t\t\t\t\t\t\t\t\t\t\t\t\'has-error\'   : vm.isBlank(vm.authConfig.oauthHostUrl)}">\n\t\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\t\t\t\t\tIV instance host URL\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t<i class="fa fa-files-o"\n\t\t\t\t\t\t\t\t\t\t   ng-click="vm.copyIndoorViewerHostUrlToConfig()"\n\t\t\t\t\t\t\t\t\t\t   title="{{\'Paste host URL of the current IV instance\' | translate}}"></i>\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t<input class="form-control"\n\t\t\t\t\t\t\t\t\t       ng-model="vm.authConfig.oauthHostUrl"\n\t\t\t\t\t\t\t\t\t       ng-disabled="!vm.authConfig">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="form-group"\n\t\t\t\t\t\t\t\t     ng-class="{\'has-success\' : !vm.isBlank(vm.authConfig.oauthIssuerUrl),\n\t\t\t\t\t\t\t\t\t\t\t\t\'has-error\'   : vm.isBlank(vm.authConfig.oauthIssuerUrl)}">\n\t\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\t\t\t\t\tOIDC Issuer\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t<input class="form-control"\n\t\t\t\t\t\t\t\t\t       ng-model="vm.authConfig.oauthIssuerUrl"\n\t\t\t\t\t\t\t\t\t       ng-disabled="!vm.authConfig">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="form-group"\n\t\t\t\t\t\t\t\t     ng-class="{\'has-success\' : !vm.isBlank(vm.authConfig.oauthClientId),\n\t\t\t\t\t\t\t\t\t\t\t    \'has-error\'   : vm.isBlank(vm.authConfig.oauthClientId)}">\n\t\t\t\t\t\t\t\t\t<p>Client ID</p>\n\t\t\t\t\t\t\t\t\t<input class="form-control"\n\t\t\t\t\t\t\t\t\t       ng-model="vm.authConfig.oauthClientId"\n\t\t\t\t\t\t\t\t\t       ng-disabled="!vm.authConfig">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="form-group"\n\t\t\t\t\t\t\t\t     ng-class="{\'has-success\' : !vm.isBlank(vm.authConfig.oauthClientSecret),\n\t\t\t\t\t\t\t\t\t\t\t\t\'has-error\'   : vm.isBlank(vm.authConfig.oauthClientSecret)}">\n\t\t\t\t\t\t\t\t\t<p>Client Secret</p>\n\t\t\t\t\t\t\t\t\t<input class="form-control"\n\t\t\t\t\t\t\t\t\t       ng-model="vm.authConfig.oauthClientSecret"\n\t\t\t\t\t\t\t\t\t       ng-disabled="!vm.authConfig">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="form-group"\n\t\t\t\t\t\t\t\t     ng-class="{\'has-success\' : !vm.isBlank(vm.authConfig.oauthRedirectUrls),\n\t\t\t\t\t\t\t\t\t\t\t\t\'has-error\'   : vm.isBlank(vm.authConfig.oauthRedirectUrls)}">\n\t\t\t\t\t\t\t\t\t<p translate>Redirect URIs (separate multiple with spaces)</p>\n\t\t\t\t\t\t\t\t\t<input class="form-control"\n\t\t\t\t\t\t\t\t\t       ng-model="vm.authConfig.oauthRedirectUrls"\n\t\t\t\t\t\t\t\t\t       ng-disabled="!vm.authConfig">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t<div class="checkbox">\n\t\t\t\t\t\t\t\t\t\t<label>\n\t\t\t\t\t\t\t\t\t\t\t<input type="checkbox" id="enableOidcGroupsMapping"\n\t\t\t\t\t\t\t\t\t\t\t       ng-model="vm.authConfig.oauthUseGroupsInToken"\n\t\t\t\t\t\t\t\t\t\t\t       ng-disabled="vm.isUserAuthConfigStateInProgress() || !vm.isUserAuthFeatureEnabled()"/>\n\t\t\t\t\t\t\t\t\t\t\t<span translate>Map user groups from OIDC access token</span>\n\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t\t<user-auth-group-digest [config]="vm.authConfig"></user-auth-group-digest>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div id="externalGroupsPanelOidc"\n\t\t\t\t\t\t\t\t\t     ng-hide="(!vm.authConfig.oauthUseGroupsInToken)">\n\t\t\t\t\t\t\t\t\t\t<div class="row form-group open-id-form container-fluid">\n\t\t\t\t\t\t\t\t\t\t\t<div class="col-md-9">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group"\n\t\t\t\t\t\t\t\t\t\t\t\t     ng-class="{\'has-success\' : !vm.isBlank(vm.authConfig.oauthGroupsClaimArrayKey)}">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\t\t\t\t\tOverride OIDC group array JWT claim\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<input class="form-control"\n\t\t\t\t\t\t\t\t\t\t\t\t\t       placeholder="Default: $.group"\n\t\t\t\t\t\t\t\t\t\t\t\t\t       ng-model="vm.authConfig.oauthGroupsClaimArrayKey"\n\t\t\t\t\t\t\t\t\t\t\t\t\t       ng-disabled="!vm.authConfig">\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</form>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class="row">\n\t\t\t<div class="col-md-6">\n\t\t\t\t<form class="form-horizontal">\n\t\t\t\t\t<h4 translate>Resource Server</h4>\n\t\t\t\t\t\x3c!-- user authentication not enabled in a license --\x3e\n\t\t\t\t\t<div class="alert alert-warning"\n\t\t\t\t\t     ng-if="!vm.isUserAuthFeatureEnabled()">\n\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\tA fully functional User Authentication module is not available for this instance. Please upgrade your instance key and import it into 4dkankan.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="checkbox">\n\t\t\t\t\t\t<label>\n\t\t\t\t\t\t\t<input type="checkbox" id="enableFederated"\n\t\t\t\t\t\t\t       ng-change="vm.handleFederatedAuthenticationCheckboxChange()"\n\t\t\t\t\t\t\t       ng-model="vm.isFederatedAuthenticationEnabled"\n\t\t\t\t\t\t\t       ng-disabled="vm.isUserAuthConfigStateInProgress() || !vm.isUserAuthFeatureEnabled()"/>\n\t\t\t\t\t\t\t<span translate>Enable Resource Server</span>\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</div>\n\t\t\t\t\t\x3c!-- user authentication can be enabled - fill in form with config data --\x3e\n\t\t\t\t\t<div #federatedAuthenticationPanel id="federatedAuthenticationPanel"\n\t\t\t\t\t     class="collapse">\n\t\t\t\t\t\t<div class="row form-group open-id-form container-fluid">\n\t\t\t\t\t\t\t<div class="col-md-9">\n\t\t\t\t\t\t\t\t<div class="form-group"\n\t\t\t\t\t\t\t\t     ng-class="{\'has-success\' : !vm.isBlank(vm.authConfig.federatedJwkSetUri),\n\t\t\t\t\t\t\t\t\t\t\t\t\'has-error\' : vm.isBlank(vm.authConfig.federatedJwkSetUri)}">\n\t\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\t\t\t\t\tJWKS public key URL\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t<input class="form-control"\n\t\t\t\t\t\t\t\t\t       ng-model="vm.authConfig.federatedJwkSetUri"\n\t\t\t\t\t\t\t\t\t       ng-disabled="!vm.authConfig">\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class="form-group">\n\t\t\t\t\t\t\t\t\t<div class="checkbox">\n\t\t\t\t\t\t\t\t\t\t<label>\n\t\t\t\t\t\t\t\t\t\t\t<input type="checkbox" id="enableFederatedGroupsMapping"\n\t\t\t\t\t\t\t\t\t\t\t       ng-model="vm.authConfig.federatedUseGroupsInToken"\n\t\t\t\t\t\t\t\t\t\t\t       ng-disabled="vm.isUserAuthConfigStateInProgress() || !vm.isUserAuthFeatureEnabled()"/>\n\t\t\t\t\t\t\t\t\t\t\t<span translate>Map user groups from Resource Server access token</span>\n\t\t\t\t\t\t\t\t\t\t\t<user-auth-group-digest [config]="vm.authConfig"></user-auth-group-digest>\n\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div id="externalGroupsPanel"\n\t\t\t\t\t\t\t\t\t     ng-hide="(!vm.authConfig.federatedUseGroupsInToken)">\n\t\t\t\t\t\t\t\t\t\t<div class="row form-group open-id-form container-fluid">\n\t\t\t\t\t\t\t\t\t\t\t<div class="col-md-9">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class="form-group"\n\t\t\t\t\t\t\t\t\t\t\t\t     ng-class="{\'has-success\' : !vm.isBlank(vm.authConfig.federatedGroupsClaimArrayKey)}">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\t\t<span translate>\n\t\t\t\t\t\t\t\t\t\t\tOverride Resource Server group array JWT claim\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<input class="form-control"\n\t\t\t\t\t\t\t\t\t\t\t\t\t       placeholder="Default: $.group"\n\t\t\t\t\t\t\t\t\t\t\t\t\t       ng-model="vm.authConfig.federatedGroupsClaimArrayKey"\n\t\t\t\t\t\t\t\t\t\t\t\t\t       ng-disabled="!vm.authConfig">\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</form>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\n\t\x3c!-- user authentication configuration in progress --\x3e\n\t<div class="col-xs-12 mt-10" ng-show="vm.isUserAuthConfigStateInProgress()">\n\t\t<div class="alert alert-info" translate>\n\t\t\tConfiguring user authentication...\n\t\t</div>\n\t</div>\n\t\x3c!-- user authentication successfully configured --\x3e\n\t<div class="col-xs-12 mt-10" ng-if="vm.isUserAuthConfigStateSuccessful()">\n\t\t<div class="alert alert-success" translate>\n\t\t\tUser authentication configuration saved successfully\n\t\t</div>\n\t</div>\n\t\x3c!-- user authentication configuration error --\x3e\n\t<div class="col-xs-12 mt-10" ng-if="vm.isUserAuthConfigStateError()">\n\t\t<div class="alert alert-danger" translate>\n\t\t\tCould not save user authentication configuration\n\t\t</div>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1657);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    (e = n(10)(!1)).push([t.i, "user-auth-config .open-id-form{margin-top:15px}user-auth-config .fa-files-o{margin-left:5px;cursor:pointer}", ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = function() {
        function t() {
            this.width = "700px"
        }
        return t.default = function() {
            return new t
        }
        ,
        t
    }();
    e.ModalStyleLarge = i
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(2);
    n(1660),
    n(1661),
    n(1663);
    var r = n(8)
      , o = function() {
        function t(t) {
            var e = this;
            t.getInformation().then((function(t) {
                e.isCloud = t.isCloudInstance
            }
            )).catch(r.handleWarning)
        }
        return t.$inject = ["InstanceInformationService"],
        t
    }();
    e.LicenseSubscriptionPanelController = o;
    var a = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "LicenseSubscriptionPanelUI/LicenseSubscriptionPanel.html",
            this.controller = o,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.LicenseSubscriptionPanelDirective = a,
    i.module("IVWebApp").directive("licenseSubscriptionPanel", a.factory())
}
, function(t, e) {
    var n = "LicenseSubscriptionPanelUI/LicenseSubscriptionPanel.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="panel panel-default">\n\t<div class="panel-body">\n\t\t<form>\n\t\t\t\x3c!-- administration panel --\x3e\n\t\t\t<div id="license-subscription-panel">\n\t\t\t\t<div ng-if="vm.isCloud === false" id="admin-license">\n\t\t\t\t\t<license-config></license-config>\n\t\t\t\t</div>\n\t\t\t\t<div ng-if="vm.isCloud === true" id="admin-subscription">\n\t\t\t\t\t<subscription-info></subscription-info>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</form>\n\t</div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    n(1662);
    var i = n(2)
      , r = n(8)
      , o = n(21)
      , a = function() {
        function t(t, e) {
            this.LicenseService = t,
            this.TrackingService = e,
            this.maxUsersWithGroups = 0,
            this.maxPanoramas = 0,
            this.licensableSquareMeters = 0,
            this.currentUsersWithGroups = 0,
            this.updateInformation()
        }
        return t.$inject = ["LicenseService", "TrackingService"],
        t.prototype.isMaxLocationsEnforced = function() {
            return void 0 !== this.maxPanoramas
        }
        ,
        t.prototype.isMaxUsersEnforced = function() {
            return void 0 !== this.maxUsersWithGroups
        }
        ,
        t.prototype.trackSubscriptionLinkClick = function() {
            o.TrackingService.trackSubscriptionLinkClick()
        }
        ,
        t.prototype.updateInformation = function() {
            var t = this;
            this.LicenseService.initialize().then((function(e) {
                t.subject = e.subject,
                t.maxPanoramas = e.maxLocations,
                t.maxUsersWithGroups = e.maxUsersWithGroups,
                t.licensableSquareMeters = e.licensableSquareMeters,
                t.currentUsersWithGroups = e.currentUsersWithGroups
            }
            )).catch(r.handleWarning)
        }
        ,
        t
    }();
    e.SubscriptionInfoController = a;
    var s = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "LicenseSubscriptionPanelUI/SubscriptionInfo.html",
            this.controller = a,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.SubscriptionInfoDirective = s,
    i.module("IVWebApp").directive("subscriptionInfo", s.factory())
}
, function(t, e) {
    var n = "LicenseSubscriptionPanelUI/SubscriptionInfo.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '<div class="container-fluid">\n    <div class="row">\n        <dl class="col-sm-6 dl-horizontal">\n            <dt translate translate-context="Subscription plan">\n                Plan\n            </dt>\n            <dd>\n                {{vm.subject}}\n            </dd>\n            \x3c!--<dt translate>--\x3e\n                \x3c!--Disk space--\x3e\n            \x3c!--</dt>--\x3e\n            \x3c!--<dd>--\x3e\n                \x3c!--TODO--\x3e\n            \x3c!--</dd>--\x3e\n            <dt translate>\n                Panoramas\n            </dt>\n            <dd ng-if="vm.isMaxLocationsEnforced()">\n                <span translate translate-params-amount="vm.maxPanoramas">{{amount}} images</span>\n                <required></required>\n            </dd>\n            <dd ng-if="!vm.isMaxLocationsEnforced()" translate>\n                Unlimited\n            </dd>\n            <dt translate>\n                Currently in database\n            </dt>\n            <dd>\n                {{ vm.licensableSquareMeters | number:0 }} m<sup>2</sup>\n            </dd>\n            <dt translate>\n                Licensed users\n            </dt>\n            <dd ng-if="vm.isMaxUsersEnforced()" translate translate-params-amount="vm.maxUsersWithGroups">\n                {{amount}} including administrator\n            </dd>\n            <dd ng-if="!vm.isMaxUsersEnforced()" translate>\n                Unlimited\n            </dd>\n            <dt translate>\n                Counted users\n            </dt>\n            <dd>\n                {{vm.currentUsersWithGroups}}\n            </dd>\n\n        </dl>\n    </div>\n    <div class="row form-group">\n        <div class="col-sm-6">\n            <a href="https://www.iv.4dkankan.com" target="_blank" ng-click="GoogleTagManagerService.trackSubscriptionLinkClick()" translate>\n                Manage subscription in 4dkankan Cloud\n            </a>\n        </div>\n    </div>\n    <div class="row form-group">\n        <dl class="col-sm-6">\n            <dt>\n                <required></required>\n                <span translate>How do we count panoramas?</span>\n            </dt>\n            <dd translate>\n                Only those panoramas that are two meters or more apart from all the other panoramas are counted towards the subscription.\n            </dd>\n        </dl>\n    </div>\n</div>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    }),
    n(1664);
    var i = n(2)
      , r = n(621)
      , o = function() {
        function t(t) {
            this.LicenseService = t,
            this.licenseConfigState = r.ConfigState.PROVIDE_CONFIG
        }
        return t.$inject = ["LicenseService"],
        Object.defineProperty(t.prototype, "license", {
            get: function() {
                return this.LicenseService.license
            },
            enumerable: !0,
            configurable: !0
        }),
        t.prototype.saveLicense = function(t) {
            var e = this;
            this.licenseConfigState = r.ConfigState.IN_PROGRESS,
            this.LicenseService.saveLicense(t).then((function() {
                return e.saveLicenseSuccess()
            }
            )).catch((function() {
                return e.saveLicenseError()
            }
            ))
        }
        ,
        t.prototype.saveLicenseSuccess = function() {
            this.licenseConfigState = r.ConfigState.SUCCESS,
            this.LicenseService.initialize().catch((function() {}
            ))
        }
        ,
        t.prototype.saveLicenseError = function() {
            this.licenseConfigState = r.ConfigState.ERROR
        }
        ,
        t.prototype.isLicenseConfigStateInProgress = function() {
            return this.licenseConfigState === r.ConfigState.IN_PROGRESS
        }
        ,
        t.prototype.isLicenseConfigStateSuccess = function() {
            return this.licenseConfigState === r.ConfigState.SUCCESS
        }
        ,
        t.prototype.isLicenseConfigStateError = function() {
            return this.licenseConfigState === r.ConfigState.ERROR
        }
        ,
        t
    }();
    e.LicenseConfigController = o;
    var a = function() {
        function t() {
            this.restrict = "E",
            this.templateUrl = "LicenseUI/LicenseConfig.html",
            this.controller = o,
            this.controllerAs = "vm",
            this.scope = !0
        }
        return t.factory = function() {
            return function() {
                return new t
            }
        }
        ,
        t
    }();
    e.LicenseConfigDirective = a,
    i.module("IVWebApp").directive("licenseConfig", a.factory())
}
, function(t, e) {
    var n = "LicenseUI/LicenseConfig.html";
    window.angular.module("ng").run(["$templateCache", function(t) {
        t.put(n, '\x3c!-- Invalid license annoyance box --\x3e\n<div ng-show="vm.LicenseService.licenseFetched && !vm.LicenseService.isLicenseValid"\n     class="alert alert-danger">\n\t<div>\n\t\t<strong translate>\n\t\t\tInvalid instance key!\n\t\t</strong>\n\t\t<span translate ng-if="vm.LicenseService.isLicenseExpired()">\n\t\t\tThe existing instance key is either not yet valid or has expired.\n\t\t</span>\n\t\t<span translate ng-if="vm.LicenseService.isLicenseAreaExceeded()">\n\t\t\tThe licensed area is smaller than the hosted area.\n\t\t</span>\n\t\t<span translate ng-if="vm.LicenseService.isLicenseSignatureInvalid()">\n\t\t\tThe license signature is invalid.\n\t\t</span>\n\t\t<span translate>\n\t\t\tPlease contact your service provider to get a valid key.\n\t\t</span>\n\t</div>\n</div>\n\n\x3c!-- license present --\x3e\n<div class="container-fluid">\n\t<div class="row">\n\t\t<dl class="col-sm-6 dl-horizontal">\n\t\t\t<dt ng-class="{\'text-danger\': vm.LicenseService.isLicenseExpired()}" translate\n\t\t\t    ng-if="vm.LicenseService.isLicenseValidFromAvailable()">\n\t\t\t\tValid from\n\t\t\t</dt>\n\t\t\t<dd ng-class="{\'text-danger\': vm.LicenseService.isLicenseExpired()}"\n\t\t\t    ng-if="vm.LicenseService.isLicenseValidFromAvailable()">\n\t\t\t\t{{ vm.license.validFrom | date : \'mediumDate\'}}\n\t\t\t</dd>\n\t\t\t<dt ng-class="{\'text-danger\': vm.LicenseService.isLicenseExpired()}" translate\n\t\t\t    ng-if="vm.LicenseService.isLicenseValidToAvailable()">\n\t\t\t\tExpires on\n\t\t\t</dt>\n\t\t\t<dd ng-class="{\'text-danger\': vm.LicenseService.isLicenseExpired()}"\n\t\t\t    ng-if="vm.LicenseService.isLicenseValidToAvailable()">\n\t\t\t\t{{ vm.license.validTo | date : \'mediumDate\'}}\n\t\t\t</dd>\n\t\t\t<dt ng-class="{\'text-danger\': vm.LicenseService.isLicenseRegisteredUsersExceeded()}"\n\t\t\t     ng-if="vm.LicenseService.isLicenseRegisteredUsersAvailable()" translate>\n\t\t\t\tLicensed users\n\t\t\t</dt>\n\t\t\t<dd ng-class="{\'text-danger\': vm.LicenseService.isLicenseRegisteredUsersExceeded()}"\n\t\t\t    ng-if="vm.LicenseService.isLicenseRegisteredUsersAvailable()">\n\t\t\t\t{{ vm.license.maxUsersWithGroups }}\n\t\t\t</dd>\n\t\t\t<dt ng-class="{\'text-danger\': vm.LicenseService.isLicenseRegisteredUsersExceeded()}"\n\t\t\t    ng-if="vm.LicenseService.isLicenseRegisteredUsersAvailable()" translate>\n\t\t\t\tCounted users\n\t\t\t</dt>\n\t\t\t<dd ng-class="{\'text-danger\': vm.LicenseService.isLicenseRegisteredUsersExceeded()}"\n\t\t\t    ng-if="vm.LicenseService.isLicenseRegisteredUsersAvailable()">\n\t\t\t\t{{ vm.license.currentUsersWithGroups }}\n\t\t\t</dd>\n\t\t\t<dt ng-class="{\'text-danger\': vm.LicenseService.isLicenseMaxLocationsExceeded()}"\n\t\t\t    ng-if="vm.LicenseService.isLicenseMaxLocationsAvailable()" translate>\n\t\t\t\tLicensed panoramas\n\t\t\t</dt>\n\t\t\t<dd ng-class="{\'text-danger\': vm.LicenseService.isLicenseMaxLocationsExceeded()}"\n\t\t\t    ng-if="vm.LicenseService.isLicenseMaxLocationsAvailable()">\n\t\t\t\t{{ vm.license.maxLocations }}\n\t\t\t</dd>\n\t\t\t<dt ng-class="{\'text-danger\': vm.LicenseService.isLicenseMaxLocationsExceeded()}"\n\t\t\t    ng-if="vm.LicenseService.isLicenseMaxLocationsAvailable()" translate>\n\t\t\t\tCurrent panoramas\n\t\t\t</dt>\n\t\t\t<dd ng-class="{\'text-danger\': vm.LicenseService.isLicenseMaxLocationsExceeded()}"\n\t\t\t    ng-if="vm.LicenseService.isLicenseMaxLocationsAvailable()">\n\t\t\t\t{{ vm.license.currentLocations }}\n\t\t\t</dd>\n\t\t\t<dt ng-class="{\'text-danger\': vm.LicenseService.isLicenseAreaExceeded()}" translate\n\t\t\tng-if="vm.LicenseService.isLicenseAreaAvailable()">\n\t\t\t\tLicensed area\n\t\t\t</dt>\n\t\t\t<dd ng-class="{\'text-danger\': vm.LicenseService.isLicenseAreaExceeded()}"\n\t\t\tng-if="vm.LicenseService.isLicenseAreaAvailable()">\n\t\t\t\t{{ vm.license.area | number:0 }} m<sup>2</sup>\n\t\t\t</dd>\n\t\t\t<dt ng-class="{\'text-danger\': vm.LicenseService.isLicenseAreaExceeded()}" translate>\n\t\t\t\tCurrently in database\n\t\t\t</dt>\n\t\t\t<dd ng-class="{\'text-danger\': vm.LicenseService.isLicenseAreaExceeded()}">\n\t\t\t\t{{ vm.license.licensableSquareMeters | number:0 }} m<sup>2</sup>\n\t\t\t</dd>\n\t\t</dl>\n\t\t<div class="col-sm-6">\n\t\t\t<strong translate>\n\t\t\t\tModules\n\t\t\t</strong>\n\n\t\t\t<ul class="list-unstyled">\n\t\t\t\t<li ng-repeat="feature in vm.license.features">\n\t\t\t\t\t<i class="glyphicon" ng-class="feature.enabled ? \'text-success glyphicon-ok-circle\' : \'text-muted glyphicon-ban-circle\'"></i>\n\t\t\t\t\t<span>{{ feature.displayName | translate }}</span>\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</div>\n\t</div>\n</div>\n\n<h4 translate translate-context="title">\n\tInsert Instance Key\n</h4>\n\n\x3c!-- License pasting --\x3e\n\n<form>\n\t\x3c!-- text input to paste the license --\x3e\n\t<div class="row">\n\t\t<div class="col-xs-12">\n\t\t\t\x3c!-- license input --\x3e\n\t\t\t<textarea class="form-control form-group" rows="8"\n\t\t\t\t\t  ng-model="license_text"\n\t\t\t\t\t  placeholder="{{\'Please paste the instance key here\'|translate}}">\n\t\t\t</textarea>\n\n\t\t\t\x3c!-- in progress --\x3e\n\t\t\t<div class="alert alert-info"\n\t\t\t\t ng-show="vm.isLicenseConfigStateInProgress()" translate>\n\t\t\t\tAttempting to apply new instance key...\n\t\t\t</div>\n\n\t\t\t\x3c!-- success --\x3e\n\t\t\t<div class="alert alert-success"\n\t\t\t\t ng-show="vm.isLicenseConfigStateSuccess()" translate>\n\t\t\t\tNew instance key has been successfully set\n\t\t\t</div>\n\n\t\t\t\x3c!-- error --\x3e\n\t\t\t<div class="alert alert-danger"\n\t\t\t\t ng-show="vm.isLicenseConfigStateError()" translate>\n\t\t\t\tSorry, there was an error applying the instance key\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\n\t\x3c!-- button controls --\x3e\n\t<div class="text-right">\n\t\t\x3c!-- save --\x3e\n\t\t<button type="button"\n\t\t\t\tclass="btn btn-primary panel-control-button"\n\t\t\t\tng-click="vm.saveLicense(license_text)"\n\t\t\t\tng-disabled="!license_text"\n\t\t\t\ttranslate>\n\t\t\tSave\n\t\t</button>\n\t</div>\n\n</form>\n')
    }
    ]),
    t.exports = n
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    var i = n(0)
      , r = (n(38),
    n(148))
      , o = n(81)
      , a = n(141)
      , s = n(147)
      , c = n(2)
      , l = n(6)
      , u = (n(27),
    n(120),
    n(232))
      , d = n(348)
      , p = (n(15),
    n(25))
      , h = (n(21),
    n(0))
      , f = n(38)
      , m = n(27)
      , g = n(120)
      , v = n(15)
      , y = n(21)
      , b = function() {
        function t(t, e, n, i, c, l) {
            var h = this;
            this.SidebarMenuService = t,
            this.UserService = e,
            this.FeatureFlagsService = n,
            this.ConfigService = i,
            this.TrackingService = c,
            this.gettext = l,
            this.featureKey = u.FeatureFlag.CLOUD_PROCESSING;
            var f = (new r.SidebarMenuItemBuilder).setKey(o.SidebarMenuItemsKey.CLOUD_PROCESSING).setTitle(this.gettext("Cloud Processing", void 0, "title")).setIcon(new a.IconInfo("material-icons","cloud")).setOnClick((function() {
                return h.TrackingService.trackCloudProcessingEnterEvent()
            }
            )).setIsVisible((function() {
                return h.UserService.isAdmin() && h.ConfigService.getBoolean(p.Configs.MENU_CLOUD_PROCESSING_VISIBLE, !0)
            }
            )).setOrder(s.SidebarMenuItemsOrder.CLOUD_PROCESSING).setItems([this.createUploadedDataItem(), this.createProcessingTasksItem(), this.createProcessedDataItem()]).build();
            this.FeatureFlagsService.isEnabled(this.featureKey).then((function() {
                return h.SidebarMenuService.addItem(f)
            }
            )).catch(d.handleDisabledFeature)
        }
        return t.prototype.createUploadedDataItem = function() {
            var t = this;
            return (new r.SidebarMenuItemBuilder).setTitle(this.gettext("Upload Data", void 0, "title")).setKey(o.SidebarMenuItemsKey.CLOUD_PROCESSING_UPLOADED_DATA).setIcon(new a.IconInfo("material-icons","cloud_upload")).setTemplate("templates/cloudprocessing/UploadedData.html").setOnClick((function() {
                return t.TrackingService.trackUploadDataEnterEvent()
            }
            )).setOrder(s.SidebarMenuItemsOrder.CLOUD_PROCESSING_UPLOADED_DATA).setIsFullscreen(!0).build()
        }
        ,
        t.prototype.createProcessingTasksItem = function() {
            var t = this;
            return (new r.SidebarMenuItemBuilder).setTitle(this.gettext("Processing Tasks", void 0, "title")).setKey(o.SidebarMenuItemsKey.CLOUD_PROCESSING_PROCESSING_TASKS).setIcon(new a.IconInfo("material-icons","settings")).setTemplate("templates/cloudprocessing/ProcessingTasks.html").setOnClick((function() {
                return t.TrackingService.trackProcessingTaskEnterEvent()
            }
            )).setOrder(s.SidebarMenuItemsOrder.CLOUD_PROCESSING_PROCESSING_TASKS).setIsFullscreen(!0).build()
        }
        ,
        t.prototype.createProcessedDataItem = function() {
            var t = this;
            return (new r.SidebarMenuItemBuilder).setTitle(this.gettext("Processed Data", void 0, "title")).setKey(o.SidebarMenuItemsKey.CLOUD_PROCESSING_PROCESSED_DATA).setIcon(new a.IconInfo("material-icons","cloud_done")).setTemplate("templates/cloudprocessing/ProcessedData.html").setOnClick((function() {
                return t.TrackingService.trackProcessedDataEnterEvent()
            }
            )).setOrder(s.SidebarMenuItemsOrder.CLOUD_PROCESSING_PROCESSED_DATA).setIsFullscreen(!0).build()
        }
        ,
        t.ɵfac = function(e) {
            return new (e || t)(h.ɵɵinject(f.SidebarMenuService),h.ɵɵinject(m.UserService),h.ɵɵinject(g.FeatureFlagsService),h.ɵɵinject(v.ConfigService),h.ɵɵinject(y.TrackingService),h.ɵɵinject("gettext"))
        }
        ,
        t.ɵprov = h.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.CloudProcessingModule = b,
    h.ɵsetClassMetadata(b, [{
        type: i.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: f.SidebarMenuService
        }, {
            type: m.UserService
        }, {
            type: g.FeatureFlagsService
        }, {
            type: v.ConfigService
        }, {
            type: y.TrackingService
        }, {
            type: void 0,
            decorators: [{
                type: i.Inject,
                args: ["gettext"]
            }]
        }]
    }
    ), null),
    c.module("IVWebApp").service("CloudProcessingModule", l.downgradeInjectable(b))
}
, function(t, e, n) {
    "use strict";
    Object.defineProperty(e, "__esModule", {
        value: !0
    });
    n(38);
    var i = n(148)
      , r = n(81)
      , o = n(141)
      , a = n(147)
      , s = n(0)
      , c = n(6)
      , l = n(2)
      , u = (n(120),
    n(232))
      , d = n(348)
      , p = n(21)
      , h = n(0)
      , f = n(38)
      , m = n(120)
      , g = function() {
        function t(t, e, n) {
            var s = this;
            this.SidebarMenuService = t,
            this.gettext = e;
            var c = (new i.SidebarMenuItemBuilder).setKey(r.SidebarMenuItemsKey.SETTINGS_THEME).setTitle(this.gettext("Theme", void 0, "title")).setIcon(new o.IconInfo("material-icons","palette")).setTemplate(p.TemplateName.THEME_SETTINGS).setOrder(a.SidebarMenuItemsOrder.SETTINGS_THEME_PANEL).setIsFullscreen(!0).build()
              , l = (new i.SidebarMenuItemBuilder).setKey(r.SidebarMenuItemsKey.DEVELOPER).setTitle(this.gettext("Developer", void 0, "title")).setIcon(new o.IconInfo("material-icons","bug_report")).setTemplate("templates/menu/DeveloperMenu.html").setOrder(a.SidebarMenuItemsOrder.DEVELOPER).setItems([c]).build();
            n.isEnabled(u.FeatureFlag.DEVELOPER_MENU).then((function() {
                return s.SidebarMenuService.addItem(l)
            }
            )).catch(d.handleDisabledFeature)
        }
        return t.ɵfac = function(e) {
            return new (e || t)(h.ɵɵinject(f.SidebarMenuService),h.ɵɵinject("gettext"),h.ɵɵinject(m.FeatureFlagsService))
        }
        ,
        t.ɵprov = h.ɵɵdefineInjectable({
            token: t,
            factory: t.ɵfac,
            providedIn: "root"
        }),
        t
    }();
    e.DeveloperModule = g,
    h.ɵsetClassMetadata(g, [{
        type: s.Injectable,
        args: [{
            providedIn: "root"
        }]
    }], (function() {
        return [{
            type: f.SidebarMenuService
        }, {
            type: void 0,
            decorators: [{
                type: s.Inject,
                args: ["gettext"]
            }]
        }, {
            type: m.FeatureFlagsService
        }]
    }
    ), null),
    l.module("IVWebApp").service("DeveloperModule", c.downgradeInjectable(g))
}
, function(t, e, n) {
    var i = n(11)
      , r = n(1668);
    "string" == typeof (r = r.__esModule ? r.default : r) && (r = [[t.i, r, ""]]);
    var o = {
        insert: "head",
        singleton: !1
    };
    i(r, o);
    t.exports = r.locals || {}
}
, function(t, e, n) {
    var i = n(10)
      , r = n(211)
      , o = n(515)
      , a = n(516)
      , s = n(517);
    e = i(!1);
    var c = r(o)
      , l = r(a)
      , u = r(s);
    e.push([t.i, "@font-face{font-family:Open Sans;src:url(" + c + ') format("woff")}@font-face{font-family:Open Sans;font-weight:700;src:url(' + l + ') format("woff")}@font-face{font-family:Material Icons;font-style:normal;font-weight:400;src:url(' + u + ') format("woff")}.material-icons{font-family:Material Icons,sans-serif;font-weight:400;font-style:normal;font-size:24px;display:inline-block;line-height:1;text-transform:none;letter-spacing:normal;word-wrap:normal;white-space:nowrap;direction:ltr;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga"}.mat-badge-content{font-family:Roboto,Helvetica Neue,sans-serif}.mat-h1,.mat-headline,.mat-typography h1{font:400 24px/32px Roboto,Helvetica Neue,sans-serif}.mat-h2,.mat-title,.mat-typography h2{font:500 20px/32px Roboto,Helvetica Neue,sans-serif}.mat-h3,.mat-subheading-2,.mat-typography h3{font:400 16px/28px Roboto,Helvetica Neue,sans-serif}.mat-h4,.mat-subheading-1,.mat-typography h4{font:400 15px/24px Roboto,Helvetica Neue,sans-serif}.mat-h5,.mat-typography h5{font:400 11.62px/20px Roboto,Helvetica Neue,sans-serif}.mat-h6,.mat-typography h6{font:400 9.38px/20px Roboto,Helvetica Neue,sans-serif}.mat-body-2,.mat-body-strong{font:500 14px/24px Roboto,Helvetica Neue,sans-serif}.mat-body,.mat-body-1,.mat-typography{font:400 14px/20px Roboto,Helvetica Neue,sans-serif}.mat-caption,.mat-small{font:400 12px/20px Roboto,Helvetica Neue,sans-serif}.mat-display-4,.mat-typography .mat-display-4{font:300 112px/112px Roboto,Helvetica Neue,sans-serif}.mat-display-3,.mat-typography .mat-display-3{font:400 56px/56px Roboto,Helvetica Neue,sans-serif}.mat-display-2,.mat-typography .mat-display-2{font:400 45px/48px Roboto,Helvetica Neue,sans-serif}.mat-display-1,.mat-typography .mat-display-1{font:400 34px/40px Roboto,Helvetica Neue,sans-serif}.mat-bottom-sheet-container{font:400 14px/20px Roboto,Helvetica Neue,sans-serif}.mat-button,.mat-button-toggle,.mat-calendar,.mat-card,.mat-checkbox,.mat-fab,.mat-flat-button,.mat-icon-button,.mat-mini-fab,.mat-raised-button,.mat-stroked-button,.mat-table{font-family:Roboto,Helvetica Neue,sans-serif}.mat-dialog-title{font:500 20px/32px Roboto,Helvetica Neue,sans-serif}.mat-expansion-panel-header{font-family:Roboto,Helvetica Neue,sans-serif}.mat-expansion-panel-content{font:400 14px/20px Roboto,Helvetica Neue,sans-serif}.mat-form-field{font-family:Roboto,Helvetica Neue,sans-serif}.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.34375em) scale(.75);width:133.33333%}.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.34374em) scale(.75);width:133.33334%}.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(-1.28125em) scale(.75);width:133.33333%}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.00101px);-ms-transform:translateY(-1.28124em) scale(.75);width:133.33334%}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.00102px);-ms-transform:translateY(-1.28123em) scale(.75);width:133.33335%}@media print{.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28122em) scale(.75)}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28121em) scale(.75)}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.2812em) scale(.75)}}.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-.59375em) scale(.75);width:133.33333%}.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-.59374em) scale(.75);width:133.33334%}.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.59375em) scale(.75);width:133.33333%}.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.59374em) scale(.75);width:133.33334%}.mat-menu-item,.mat-paginator,.mat-paginator-page-size .mat-select-trigger,.mat-radio-button,.mat-select,.mat-slide-toggle-content,.mat-slider-thumb-label-text,.mat-stepper-horizontal,.mat-stepper-vertical,.mat-tab-group,.mat-tab-label,.mat-tab-link{font-family:Roboto,Helvetica Neue,sans-serif}.mat-toolbar,.mat-toolbar h1,.mat-toolbar h2,.mat-toolbar h3,.mat-toolbar h4,.mat-toolbar h5,.mat-toolbar h6{font:500 20px/32px Roboto,Helvetica Neue,sans-serif}.mat-list-base .mat-subheader,.mat-list-base[dense] .mat-subheader,.mat-list-item,.mat-list-option,.mat-option,.mat-tooltip{font-family:Roboto,Helvetica Neue,sans-serif}.mat-optgroup-label{font:500 14px/24px Roboto,Helvetica Neue,sans-serif}.mat-simple-snackbar,.mat-tree{font-family:Roboto,Helvetica Neue,sans-serif}.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale(0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;outline:0;-webkit-appearance:none;-moz-appearance:none}.cdk-global-overlay-wrapper,.cdk-overlay-container{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper,.cdk-overlay-pane{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{pointer-events:auto;box-sizing:border-box;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}@media screen and (-ms-high-contrast:active){.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop,.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}@keyframes cdk-text-field-autofill-start{/*!*/}@keyframes cdk-text-field-autofill-end{/*!*/}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{height:auto!important;overflow:hidden!important;padding:2px 0!important;box-sizing:content-box!important}.mat-ripple-element{background-color:rgba(0,0,0,.1)}.mat-option{color:rgba(0,0,0,.87)}.mat-option.mat-active,.mat-option.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled),.mat-option:focus:not(.mat-option-disabled),.mat-option:hover:not(.mat-option-disabled){background:rgba(0,0,0,.04)}.mat-option.mat-active{color:rgba(0,0,0,.87)}.mat-option.mat-option-disabled{color:rgba(0,0,0,.38)}.mat-primary .mat-option.mat-selected:not(.mat-option-disabled){color:#3398c7}.mat-accent .mat-option.mat-selected:not(.mat-option-disabled){color:#33c7ac}.mat-warn .mat-option.mat-selected:not(.mat-option-disabled){color:#f44336}.mat-optgroup-label{color:rgba(0,0,0,.54)}.mat-optgroup-disabled .mat-optgroup-label{color:rgba(0,0,0,.38)}.mat-pseudo-checkbox{color:rgba(0,0,0,.54)}.mat-pseudo-checkbox:after{color:#fafafa}.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked,.mat-primary .mat-pseudo-checkbox-indeterminate{background:#3398c7}.mat-accent .mat-pseudo-checkbox-checked,.mat-accent .mat-pseudo-checkbox-indeterminate,.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-indeterminate{background:#33c7ac}.mat-warn .mat-pseudo-checkbox-checked,.mat-warn .mat-pseudo-checkbox-indeterminate{background:#f44336}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled{background:#b0b0b0}.mat-elevation-z0{box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.mat-elevation-z1{box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12)}.mat-elevation-z2{box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mat-elevation-z3{box-shadow:0 3px 3px -2px rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12)}.mat-elevation-z4{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.mat-elevation-z5{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)}.mat-elevation-z6{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.mat-elevation-z7{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.mat-elevation-z8{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.mat-elevation-z9{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.mat-elevation-z10{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)}.mat-elevation-z11{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)}.mat-elevation-z12{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.mat-elevation-z13{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)}.mat-elevation-z14{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)}.mat-elevation-z15{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)}.mat-elevation-z16{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.mat-elevation-z17{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)}.mat-elevation-z18{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)}.mat-elevation-z19{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)}.mat-elevation-z20{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)}.mat-elevation-z21{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)}.mat-elevation-z22{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)}.mat-elevation-z23{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)}.mat-elevation-z24{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}.mat-app-background{background-color:#fafafa;color:rgba(0,0,0,.87)}.mat-theme-loaded-marker{display:none}.mat-autocomplete-panel{background:#fff;color:rgba(0,0,0,.87)}.mat-autocomplete-panel:not([class*=mat-elevation-z]){box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover){background:#fff}.mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover):not(.mat-option-disabled){color:rgba(0,0,0,.87)}.mat-badge-content{color:#fff;background:#3398c7}.cdk-high-contrast-active .mat-badge-content{outline:1px solid;border-radius:0}.mat-badge-accent .mat-badge-content{background:#33c7ac;color:rgba(0,0,0,.87)}.mat-badge-warn .mat-badge-content{color:#fff;background:#f44336}.mat-badge{position:relative}.mat-badge-hidden .mat-badge-content{display:none}.mat-badge-disabled .mat-badge-content{background:#b9b9b9;color:rgba(0,0,0,.38)}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none}.mat-badge-content._mat-animation-noopable,.ng-animate-disabled .mat-badge-content{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}.mat-bottom-sheet-container{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);background:#fff;color:rgba(0,0,0,.87)}.mat-button,.mat-icon-button,.mat-stroked-button{color:inherit;background:transparent}.mat-button.mat-primary,.mat-icon-button.mat-primary,.mat-stroked-button.mat-primary{color:#3398c7}.mat-button.mat-accent,.mat-icon-button.mat-accent,.mat-stroked-button.mat-accent{color:#33c7ac}.mat-button.mat-warn,.mat-icon-button.mat-warn,.mat-stroked-button.mat-warn{color:#f44336}.mat-button.mat-accent[disabled],.mat-button.mat-primary[disabled],.mat-button.mat-warn[disabled],.mat-button[disabled][disabled],.mat-icon-button.mat-accent[disabled],.mat-icon-button.mat-primary[disabled],.mat-icon-button.mat-warn[disabled],.mat-icon-button[disabled][disabled],.mat-stroked-button.mat-accent[disabled],.mat-stroked-button.mat-primary[disabled],.mat-stroked-button.mat-warn[disabled],.mat-stroked-button[disabled][disabled]{color:rgba(0,0,0,.26)}.mat-button.mat-primary .mat-button-focus-overlay,.mat-icon-button.mat-primary .mat-button-focus-overlay,.mat-stroked-button.mat-primary .mat-button-focus-overlay{background-color:#3398c7}.mat-button.mat-accent .mat-button-focus-overlay,.mat-icon-button.mat-accent .mat-button-focus-overlay,.mat-stroked-button.mat-accent .mat-button-focus-overlay{background-color:#33c7ac}.mat-button.mat-warn .mat-button-focus-overlay,.mat-icon-button.mat-warn .mat-button-focus-overlay,.mat-stroked-button.mat-warn .mat-button-focus-overlay{background-color:#f44336}.mat-button[disabled] .mat-button-focus-overlay,.mat-icon-button[disabled] .mat-button-focus-overlay,.mat-stroked-button[disabled] .mat-button-focus-overlay{background-color:transparent}.mat-button .mat-ripple-element,.mat-icon-button .mat-ripple-element,.mat-stroked-button .mat-ripple-element{opacity:.1;background-color:currentColor}.mat-button-focus-overlay{background:#000}.mat-stroked-button:not([disabled]){border-color:rgba(0,0,0,.12)}.mat-fab,.mat-flat-button,.mat-mini-fab,.mat-raised-button{color:rgba(0,0,0,.87);background-color:#fff}.mat-fab.mat-primary,.mat-flat-button.mat-primary,.mat-mini-fab.mat-primary,.mat-raised-button.mat-primary{color:#fff}.mat-fab.mat-accent,.mat-flat-button.mat-accent,.mat-mini-fab.mat-accent,.mat-raised-button.mat-accent{color:rgba(0,0,0,.87)}.mat-fab.mat-warn,.mat-flat-button.mat-warn,.mat-mini-fab.mat-warn,.mat-raised-button.mat-warn{color:#fff}.mat-fab.mat-accent[disabled],.mat-fab.mat-primary[disabled],.mat-fab.mat-warn[disabled],.mat-fab[disabled][disabled],.mat-flat-button.mat-accent[disabled],.mat-flat-button.mat-primary[disabled],.mat-flat-button.mat-warn[disabled],.mat-flat-button[disabled][disabled],.mat-mini-fab.mat-accent[disabled],.mat-mini-fab.mat-primary[disabled],.mat-mini-fab.mat-warn[disabled],.mat-mini-fab[disabled][disabled],.mat-raised-button.mat-accent[disabled],.mat-raised-button.mat-primary[disabled],.mat-raised-button.mat-warn[disabled],.mat-raised-button[disabled][disabled]{color:rgba(0,0,0,.26)}.mat-fab.mat-primary,.mat-flat-button.mat-primary,.mat-mini-fab.mat-primary,.mat-raised-button.mat-primary{background-color:#3398c7}.mat-fab.mat-accent,.mat-flat-button.mat-accent,.mat-mini-fab.mat-accent,.mat-raised-button.mat-accent{background-color:#33c7ac}.mat-fab.mat-warn,.mat-flat-button.mat-warn,.mat-mini-fab.mat-warn,.mat-raised-button.mat-warn{background-color:#f44336}.mat-fab.mat-accent[disabled],.mat-fab.mat-primary[disabled],.mat-fab.mat-warn[disabled],.mat-fab[disabled][disabled],.mat-flat-button.mat-accent[disabled],.mat-flat-button.mat-primary[disabled],.mat-flat-button.mat-warn[disabled],.mat-flat-button[disabled][disabled],.mat-mini-fab.mat-accent[disabled],.mat-mini-fab.mat-primary[disabled],.mat-mini-fab.mat-warn[disabled],.mat-mini-fab[disabled][disabled],.mat-raised-button.mat-accent[disabled],.mat-raised-button.mat-primary[disabled],.mat-raised-button.mat-warn[disabled],.mat-raised-button[disabled][disabled]{background-color:rgba(0,0,0,.12)}.mat-fab.mat-primary .mat-ripple-element,.mat-flat-button.mat-primary .mat-ripple-element,.mat-mini-fab.mat-primary .mat-ripple-element,.mat-raised-button.mat-primary .mat-ripple-element{background-color:hsla(0,0%,100%,.1)}.mat-fab.mat-accent .mat-ripple-element,.mat-flat-button.mat-accent .mat-ripple-element,.mat-mini-fab.mat-accent .mat-ripple-element,.mat-raised-button.mat-accent .mat-ripple-element{background-color:rgba(0,0,0,.1)}.mat-fab.mat-warn .mat-ripple-element,.mat-flat-button.mat-warn .mat-ripple-element,.mat-mini-fab.mat-warn .mat-ripple-element,.mat-raised-button.mat-warn .mat-ripple-element{background-color:hsla(0,0%,100%,.1)}.mat-flat-button:not([class*=mat-elevation-z]),.mat-stroked-button:not([class*=mat-elevation-z]){box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.mat-raised-button:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mat-raised-button:not([disabled]):active:not([class*=mat-elevation-z]){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.mat-raised-button[disabled]:not([class*=mat-elevation-z]){box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.mat-fab:not([class*=mat-elevation-z]),.mat-mini-fab:not([class*=mat-elevation-z]){box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.mat-fab:not([disabled]):active:not([class*=mat-elevation-z]),.mat-mini-fab:not([disabled]):active:not([class*=mat-elevation-z]){box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.mat-fab[disabled]:not([class*=mat-elevation-z]),.mat-mini-fab[disabled]:not([class*=mat-elevation-z]){box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.mat-button-toggle-group,.mat-button-toggle-standalone{box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mat-button-toggle-group-appearance-standard,.mat-button-toggle-standalone.mat-button-toggle-appearance-standard{box-shadow:none}.mat-button-toggle{color:rgba(0,0,0,.38)}.mat-button-toggle .mat-button-toggle-focus-overlay{background-color:rgba(0,0,0,.12)}.mat-button-toggle-appearance-standard{color:rgba(0,0,0,.87);background:#fff}.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:#000}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:1px solid rgba(0,0,0,.12)}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:1px solid rgba(0,0,0,.12)}.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:none;border-top:1px solid rgba(0,0,0,.12)}.mat-button-toggle-checked{background-color:#e0e0e0;color:rgba(0,0,0,.54)}.mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:rgba(0,0,0,.87)}.mat-button-toggle-disabled{color:rgba(0,0,0,.26);background-color:#eee}.mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:#fff}.mat-button-toggle-disabled.mat-button-toggle-checked{background-color:#bdbdbd}.mat-button-toggle-group-appearance-standard,.mat-button-toggle-standalone.mat-button-toggle-appearance-standard{border:1px solid rgba(0,0,0,.12)}.mat-card{background:#fff;color:rgba(0,0,0,.87)}.mat-card:not([class*=mat-elevation-z]){box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12)}.mat-card.mat-card-flat:not([class*=mat-elevation-z]){box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.mat-card-subtitle{color:rgba(0,0,0,.54)}.mat-checkbox-frame{border-color:rgba(0,0,0,.54)}.mat-checkbox-checkmark{fill:#fafafa}.mat-checkbox-checkmark-path{stroke:#fafafa!important}.mat-checkbox-mixedmark{background-color:#fafafa}.mat-checkbox-checked.mat-primary .mat-checkbox-background,.mat-checkbox-indeterminate.mat-primary .mat-checkbox-background{background-color:#3398c7}.mat-checkbox-checked.mat-accent .mat-checkbox-background,.mat-checkbox-indeterminate.mat-accent .mat-checkbox-background{background-color:#33c7ac}.mat-checkbox-checked.mat-warn .mat-checkbox-background,.mat-checkbox-indeterminate.mat-warn .mat-checkbox-background{background-color:#f44336}.mat-checkbox-disabled.mat-checkbox-checked .mat-checkbox-background,.mat-checkbox-disabled.mat-checkbox-indeterminate .mat-checkbox-background{background-color:#b0b0b0}.mat-checkbox-disabled:not(.mat-checkbox-checked) .mat-checkbox-frame{border-color:#b0b0b0}.mat-checkbox-disabled .mat-checkbox-label{color:rgba(0,0,0,.54)}.mat-checkbox .mat-ripple-element{background-color:#000}.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element,.mat-checkbox:active:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element{background:#3398c7}.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element,.mat-checkbox:active:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element{background:#33c7ac}.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element,.mat-checkbox:active:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element{background:#f44336}.mat-chip.mat-standard-chip{background-color:#e0e0e0;color:rgba(0,0,0,.87)}.mat-chip.mat-standard-chip .mat-chip-remove{color:rgba(0,0,0,.87);opacity:.4}.mat-chip.mat-standard-chip:not(.mat-chip-disabled):active{box-shadow:0 3px 3px -2px rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 1px 8px 0 rgba(0,0,0,.12)}.mat-chip.mat-standard-chip:not(.mat-chip-disabled) .mat-chip-remove:hover{opacity:.54}.mat-chip.mat-standard-chip.mat-chip-disabled{opacity:.4}.mat-chip.mat-standard-chip:after{background:#000}.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary{background-color:#3398c7;color:#fff}.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-chip-remove{color:#fff;opacity:.4}.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-ripple-element{background-color:hsla(0,0%,100%,.1)}.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn{background-color:#f44336;color:#fff}.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-chip-remove{color:#fff;opacity:.4}.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-ripple-element{background-color:hsla(0,0%,100%,.1)}.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent{background-color:#33c7ac;color:rgba(0,0,0,.87)}.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-chip-remove{color:rgba(0,0,0,.87);opacity:.4}.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-ripple-element{background-color:rgba(0,0,0,.1)}.mat-table{background:#fff}.mat-table-sticky,.mat-table tbody,.mat-table tfoot,.mat-table thead,[mat-footer-row],[mat-header-row],[mat-row],mat-footer-row,mat-header-row,mat-row{background:inherit}mat-footer-row,mat-header-row,mat-row,td.mat-cell,td.mat-footer-cell,th.mat-header-cell{border-bottom-color:rgba(0,0,0,.12)}.mat-header-cell{color:rgba(0,0,0,.54)}.mat-cell,.mat-footer-cell{color:rgba(0,0,0,.87)}.mat-calendar-arrow{border-top-color:rgba(0,0,0,.54)}.mat-datepicker-content .mat-calendar-next-button,.mat-datepicker-content .mat-calendar-previous-button,.mat-datepicker-toggle{color:rgba(0,0,0,.54)}.mat-calendar-table-header{color:rgba(0,0,0,.38)}.mat-calendar-table-header-divider:after{background:rgba(0,0,0,.12)}.mat-calendar-body-label{color:rgba(0,0,0,.54)}.mat-calendar-body-cell-content{color:rgba(0,0,0,.87);border-color:transparent}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){color:rgba(0,0,0,.38)}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected),.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){background-color:rgba(0,0,0,.04)}.mat-calendar-body-today:not(.mat-calendar-body-selected){border-color:rgba(0,0,0,.38)}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected){border-color:rgba(0,0,0,.18)}.mat-calendar-body-selected{background-color:#3398c7;color:#fff}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:rgba(51,152,199,.4)}.mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);background-color:#fff;color:rgba(0,0,0,.87)}.mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:#33c7ac;color:rgba(0,0,0,.87)}.mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:rgba(51,199,172,.4)}.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px rgba(0,0,0,.87)}.mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:#f44336;color:#fff}.mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:rgba(244,67,54,.4)}.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content-touch{box-shadow:0 0 0 0 rgba(0,0,0,.2),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12)}.mat-datepicker-toggle-active{color:#3398c7}.mat-datepicker-toggle-active.mat-accent{color:#33c7ac}.mat-datepicker-toggle-active.mat-warn{color:#f44336}.mat-dialog-container{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12);background:#fff;color:rgba(0,0,0,.87)}.mat-divider{border-top-color:rgba(0,0,0,.12)}.mat-divider-vertical{border-right-color:rgba(0,0,0,.12)}.mat-expansion-panel{background:#fff;color:rgba(0,0,0,.87)}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.mat-action-row{border-top-color:rgba(0,0,0,.12)}.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]),.mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]),.mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){background:rgba(0,0,0,.04)}@media (hover:none){.mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background:#fff}}.mat-expansion-panel-header-title{color:rgba(0,0,0,.87)}.mat-expansion-indicator:after,.mat-expansion-panel-header-description{color:rgba(0,0,0,.54)}.mat-expansion-panel-header[aria-disabled=true]{color:rgba(0,0,0,.26)}.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description,.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title{color:inherit}.mat-form-field-label,.mat-hint{color:rgba(0,0,0,.6)}.mat-form-field.mat-focused .mat-form-field-label{color:#3398c7}.mat-form-field.mat-focused .mat-form-field-label.mat-accent{color:#33c7ac}.mat-form-field.mat-focused .mat-form-field-label.mat-warn{color:#f44336}.mat-focused .mat-form-field-required-marker{color:#33c7ac}.mat-form-field-ripple{background-color:rgba(0,0,0,.87)}.mat-form-field.mat-focused .mat-form-field-ripple{background-color:#3398c7}.mat-form-field.mat-focused .mat-form-field-ripple.mat-accent{background-color:#33c7ac}.mat-form-field.mat-focused .mat-form-field-ripple.mat-warn{background-color:#f44336}.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid) .mat-form-field-infix:after{color:#3398c7}.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-accent .mat-form-field-infix:after{color:#33c7ac}.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-warn .mat-form-field-infix:after,.mat-form-field.mat-form-field-invalid .mat-form-field-label,.mat-form-field.mat-form-field-invalid .mat-form-field-label.mat-accent,.mat-form-field.mat-form-field-invalid .mat-form-field-label .mat-form-field-required-marker{color:#f44336}.mat-form-field.mat-form-field-invalid .mat-form-field-ripple,.mat-form-field.mat-form-field-invalid .mat-form-field-ripple.mat-accent{background-color:#f44336}.mat-error{color:#f44336}.mat-form-field-appearance-legacy .mat-form-field-label,.mat-form-field-appearance-legacy .mat-hint{color:rgba(0,0,0,.54)}.mat-form-field-appearance-legacy .mat-form-field-underline{background-color:rgba(0,0,0,.42)}.mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline{background-image:linear-gradient(90deg,rgba(0,0,0,.42) 0,rgba(0,0,0,.42) 33%,transparent 0);background-size:4px 100%;background-repeat:repeat-x}.mat-form-field-appearance-standard .mat-form-field-underline{background-color:rgba(0,0,0,.42)}.mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline{background-image:linear-gradient(90deg,rgba(0,0,0,.42) 0,rgba(0,0,0,.42) 33%,transparent 0);background-size:4px 100%;background-repeat:repeat-x}.mat-form-field-appearance-fill .mat-form-field-flex{background-color:rgba(0,0,0,.04)}.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-flex{background-color:rgba(0,0,0,.02)}.mat-form-field-appearance-fill .mat-form-field-underline:before{background-color:rgba(0,0,0,.42)}.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-label{color:rgba(0,0,0,.38)}.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-underline:before{background-color:transparent}.mat-form-field-appearance-outline .mat-form-field-outline{color:rgba(0,0,0,.12)}.mat-form-field-appearance-outline .mat-form-field-outline-thick{color:rgba(0,0,0,.87)}.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick{color:#3398c7}.mat-form-field-appearance-outline.mat-focused.mat-accent .mat-form-field-outline-thick{color:#33c7ac}.mat-form-field-appearance-outline.mat-focused.mat-warn .mat-form-field-outline-thick,.mat-form-field-appearance-outline.mat-form-field-invalid.mat-form-field-invalid .mat-form-field-outline-thick{color:#f44336}.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-label{color:rgba(0,0,0,.38)}.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{color:rgba(0,0,0,.06)}.mat-icon.mat-primary{color:#3398c7}.mat-icon.mat-accent{color:#33c7ac}.mat-icon.mat-warn{color:#f44336}.mat-form-field-type-mat-native-select .mat-form-field-infix:after{color:rgba(0,0,0,.54)}.mat-form-field-type-mat-native-select.mat-form-field-disabled .mat-form-field-infix:after,.mat-input-element:disabled{color:rgba(0,0,0,.38)}.mat-input-element{caret-color:#3398c7}.mat-input-element::placeholder{color:rgba(0,0,0,.42)}.mat-input-element::-moz-placeholder{color:rgba(0,0,0,.42)}.mat-input-element::-webkit-input-placeholder{color:rgba(0,0,0,.42)}.mat-input-element:-ms-input-placeholder{color:rgba(0,0,0,.42)}.mat-accent .mat-input-element{caret-color:#33c7ac}.mat-form-field-invalid .mat-input-element,.mat-warn .mat-input-element{caret-color:#f44336}.mat-form-field-type-mat-native-select.mat-form-field-invalid .mat-form-field-infix:after{color:#f44336}.mat-list-base .mat-list-item,.mat-list-base .mat-list-option{color:rgba(0,0,0,.87)}.mat-list-base .mat-subheader{color:rgba(0,0,0,.54)}.mat-list-item-disabled{background-color:#eee}.mat-action-list .mat-list-item:focus,.mat-action-list .mat-list-item:hover,.mat-list-option:focus,.mat-list-option:hover,.mat-nav-list .mat-list-item:focus,.mat-nav-list .mat-list-item:hover{background:rgba(0,0,0,.04)}.mat-list-single-selected-option,.mat-list-single-selected-option:focus,.mat-list-single-selected-option:hover{background:rgba(0,0,0,.12)}.mat-menu-panel{background:#fff}.mat-menu-panel:not([class*=mat-elevation-z]){box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.mat-menu-item{background:transparent;color:rgba(0,0,0,.87)}.mat-menu-item[disabled],.mat-menu-item[disabled]:after{color:rgba(0,0,0,.38)}.mat-menu-item-submenu-trigger:after,.mat-menu-item .mat-icon-no-color{color:rgba(0,0,0,.54)}.mat-menu-item-highlighted:not([disabled]),.mat-menu-item.cdk-keyboard-focused:not([disabled]),.mat-menu-item.cdk-program-focused:not([disabled]),.mat-menu-item:hover:not([disabled]){background:rgba(0,0,0,.04)}.mat-paginator{background:#fff}.mat-paginator,.mat-paginator-page-size .mat-select-trigger{color:rgba(0,0,0,.54)}.mat-paginator-decrement,.mat-paginator-increment{border-top:2px solid rgba(0,0,0,.54);border-right:2px solid rgba(0,0,0,.54)}.mat-paginator-first,.mat-paginator-last{border-top:2px solid rgba(0,0,0,.54)}.mat-icon-button[disabled] .mat-paginator-decrement,.mat-icon-button[disabled] .mat-paginator-first,.mat-icon-button[disabled] .mat-paginator-increment,.mat-icon-button[disabled] .mat-paginator-last{border-color:rgba(0,0,0,.38)}.mat-progress-bar-background{fill:#52a7cf}.mat-progress-bar-buffer{background-color:#52a7cf}.mat-progress-bar-fill:after{background-color:#3398c7}.mat-progress-bar.mat-accent .mat-progress-bar-background{fill:#52cfb8}.mat-progress-bar.mat-accent .mat-progress-bar-buffer{background-color:#52cfb8}.mat-progress-bar.mat-accent .mat-progress-bar-fill:after{background-color:#33c7ac}.mat-progress-bar.mat-warn .mat-progress-bar-background{fill:#ffcdd2}.mat-progress-bar.mat-warn .mat-progress-bar-buffer{background-color:#ffcdd2}.mat-progress-bar.mat-warn .mat-progress-bar-fill:after{background-color:#f44336}.mat-progress-spinner circle,.mat-spinner circle{stroke:#3398c7}.mat-progress-spinner.mat-accent circle,.mat-spinner.mat-accent circle{stroke:#33c7ac}.mat-progress-spinner.mat-warn circle,.mat-spinner.mat-warn circle{stroke:#f44336}.mat-radio-outer-circle{border-color:rgba(0,0,0,.54)}.mat-radio-button.mat-primary.mat-radio-checked .mat-radio-outer-circle{border-color:#3398c7}.mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple,.mat-radio-button.mat-primary .mat-radio-inner-circle,.mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple),.mat-radio-button.mat-primary:active .mat-radio-persistent-ripple{background-color:#3398c7}.mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle{border-color:#33c7ac}.mat-radio-button.mat-accent.mat-radio-checked .mat-radio-persistent-ripple,.mat-radio-button.mat-accent .mat-radio-inner-circle,.mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple),.mat-radio-button.mat-accent:active .mat-radio-persistent-ripple{background-color:#33c7ac}.mat-radio-button.mat-warn.mat-radio-checked .mat-radio-outer-circle{border-color:#f44336}.mat-radio-button.mat-warn.mat-radio-checked .mat-radio-persistent-ripple,.mat-radio-button.mat-warn .mat-radio-inner-circle,.mat-radio-button.mat-warn .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple),.mat-radio-button.mat-warn:active .mat-radio-persistent-ripple{background-color:#f44336}.mat-radio-button.mat-radio-disabled.mat-radio-checked .mat-radio-outer-circle,.mat-radio-button.mat-radio-disabled .mat-radio-outer-circle{border-color:rgba(0,0,0,.38)}.mat-radio-button.mat-radio-disabled .mat-radio-inner-circle,.mat-radio-button.mat-radio-disabled .mat-radio-ripple .mat-ripple-element{background-color:rgba(0,0,0,.38)}.mat-radio-button.mat-radio-disabled .mat-radio-label-content{color:rgba(0,0,0,.38)}.mat-radio-button .mat-ripple-element{background-color:#000}.mat-select-value{color:rgba(0,0,0,.87)}.mat-select-placeholder{color:rgba(0,0,0,.42)}.mat-select-disabled .mat-select-value{color:rgba(0,0,0,.38)}.mat-select-arrow{color:rgba(0,0,0,.54)}.mat-select-panel{background:#fff}.mat-select-panel:not([class*=mat-elevation-z]){box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple){background:rgba(0,0,0,.12)}.mat-form-field.mat-focused.mat-primary .mat-select-arrow{color:#3398c7}.mat-form-field.mat-focused.mat-accent .mat-select-arrow{color:#33c7ac}.mat-form-field.mat-focused.mat-warn .mat-select-arrow,.mat-form-field .mat-select.mat-select-invalid .mat-select-arrow{color:#f44336}.mat-form-field .mat-select.mat-select-disabled .mat-select-arrow{color:rgba(0,0,0,.38)}.mat-drawer-container{background-color:#fafafa;color:rgba(0,0,0,.87)}.mat-drawer{color:rgba(0,0,0,.87)}.mat-drawer,.mat-drawer.mat-drawer-push{background-color:#fff}.mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.mat-drawer-side{border-right:1px solid rgba(0,0,0,.12)}.mat-drawer-side.mat-drawer-end,[dir=rtl] .mat-drawer-side{border-left:1px solid rgba(0,0,0,.12);border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-left:none;border-right:1px solid rgba(0,0,0,.12)}.mat-drawer-backdrop.mat-drawer-shown{background-color:rgba(0,0,0,.6)}.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb{background-color:#33c7ac}.mat-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:rgba(51,199,172,.54)}.mat-slide-toggle.mat-checked .mat-ripple-element{background-color:#33c7ac}.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb{background-color:#3398c7}.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar{background-color:rgba(51,152,199,.54)}.mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element{background-color:#3398c7}.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb{background-color:#f44336}.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar{background-color:rgba(244,67,54,.54)}.mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element{background-color:#f44336}.mat-slide-toggle:not(.mat-checked) .mat-ripple-element{background-color:#000}.mat-slide-toggle-thumb{box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);background-color:#fafafa}.mat-slide-toggle-bar{background-color:rgba(0,0,0,.38)}.mat-slider-track-background{background-color:rgba(0,0,0,.26)}.mat-primary .mat-slider-thumb,.mat-primary .mat-slider-thumb-label,.mat-primary .mat-slider-track-fill{background-color:#3398c7}.mat-primary .mat-slider-thumb-label-text{color:#fff}.mat-accent .mat-slider-thumb,.mat-accent .mat-slider-thumb-label,.mat-accent .mat-slider-track-fill{background-color:#33c7ac}.mat-accent .mat-slider-thumb-label-text{color:rgba(0,0,0,.87)}.mat-warn .mat-slider-thumb,.mat-warn .mat-slider-thumb-label,.mat-warn .mat-slider-track-fill{background-color:#f44336}.mat-warn .mat-slider-thumb-label-text{color:#fff}.mat-slider-focus-ring{background-color:rgba(51,199,172,.2)}.cdk-focused .mat-slider-track-background,.mat-slider:hover .mat-slider-track-background{background-color:rgba(0,0,0,.38)}.mat-slider-disabled .mat-slider-thumb,.mat-slider-disabled .mat-slider-track-background,.mat-slider-disabled .mat-slider-track-fill,.mat-slider-disabled:hover .mat-slider-track-background{background-color:rgba(0,0,0,.26)}.mat-slider-min-value .mat-slider-focus-ring{background-color:rgba(0,0,0,.12)}.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb,.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb-label{background-color:rgba(0,0,0,.87)}.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb,.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb-label{background-color:rgba(0,0,0,.26)}.mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb{border-color:rgba(0,0,0,.26);background-color:transparent}.mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused .mat-slider-thumb,.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover .mat-slider-thumb{border-color:rgba(0,0,0,.38)}.mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused.mat-slider-disabled .mat-slider-thumb,.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover.mat-slider-disabled .mat-slider-thumb{border-color:rgba(0,0,0,.26)}.mat-slider-has-ticks .mat-slider-wrapper:after{border-color:rgba(0,0,0,.7)}.mat-slider-horizontal .mat-slider-ticks{background-image:repeating-linear-gradient(90deg,rgba(0,0,0,.7),rgba(0,0,0,.7) 2px,transparent 0,transparent);background-image:-moz-repeating-linear-gradient(.0001deg,rgba(0,0,0,.7),rgba(0,0,0,.7) 2px,transparent 0,transparent)}.mat-slider-vertical .mat-slider-ticks{background-image:repeating-linear-gradient(180deg,rgba(0,0,0,.7),rgba(0,0,0,.7) 2px,transparent 0,transparent)}.mat-step-header.cdk-keyboard-focused,.mat-step-header.cdk-program-focused,.mat-step-header:hover{background-color:rgba(0,0,0,.04)}@media (hover:none){.mat-step-header:hover{background:none}}.mat-step-header .mat-step-label,.mat-step-header .mat-step-optional{color:rgba(0,0,0,.54)}.mat-step-header .mat-step-icon{background-color:rgba(0,0,0,.54);color:#fff}.mat-step-header .mat-step-icon-selected,.mat-step-header .mat-step-icon-state-done,.mat-step-header .mat-step-icon-state-edit{background-color:#3398c7;color:#fff}.mat-step-header .mat-step-icon-state-error{background-color:transparent;color:#f44336}.mat-step-header .mat-step-label.mat-step-label-active{color:rgba(0,0,0,.87)}.mat-step-header .mat-step-label.mat-step-label-error{color:#f44336}.mat-stepper-horizontal,.mat-stepper-vertical{background-color:#fff}.mat-stepper-vertical-line:before{border-left-color:rgba(0,0,0,.12)}.mat-horizontal-stepper-header:after,.mat-horizontal-stepper-header:before,.mat-stepper-horizontal-line{border-top-color:rgba(0,0,0,.12)}.mat-sort-header-arrow{color:#757575}.mat-tab-header,.mat-tab-nav-bar{border-bottom:1px solid rgba(0,0,0,.12)}.mat-tab-group-inverted-header .mat-tab-header,.mat-tab-group-inverted-header .mat-tab-nav-bar{border-top:1px solid rgba(0,0,0,.12);border-bottom:none}.mat-tab-label,.mat-tab-link{color:rgba(0,0,0,.87)}.mat-tab-label.mat-tab-disabled,.mat-tab-link.mat-tab-disabled{color:rgba(0,0,0,.38)}.mat-tab-header-pagination-chevron{border-color:rgba(0,0,0,.87)}.mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron{border-color:rgba(0,0,0,.38)}.mat-tab-group[class*=mat-background-] .mat-tab-header,.mat-tab-nav-bar[class*=mat-background-]{border-bottom:none;border-top:none}.mat-tab-group.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-group.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled){background-color:rgba(82,167,207,.3)}.mat-tab-group.mat-primary .mat-ink-bar,.mat-tab-nav-bar.mat-primary .mat-ink-bar{background-color:#3398c7}.mat-tab-group.mat-primary.mat-background-primary .mat-ink-bar,.mat-tab-nav-bar.mat-primary.mat-background-primary .mat-ink-bar{background-color:#fff}.mat-tab-group.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-group.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled){background-color:rgba(82,207,184,.3)}.mat-tab-group.mat-accent .mat-ink-bar,.mat-tab-nav-bar.mat-accent .mat-ink-bar{background-color:#33c7ac}.mat-tab-group.mat-accent.mat-background-accent .mat-ink-bar,.mat-tab-nav-bar.mat-accent.mat-background-accent .mat-ink-bar{background-color:rgba(0,0,0,.87)}.mat-tab-group.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-group.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled){background-color:rgba(255,205,210,.3)}.mat-tab-group.mat-warn .mat-ink-bar,.mat-tab-nav-bar.mat-warn .mat-ink-bar{background-color:#f44336}.mat-tab-group.mat-warn.mat-background-warn .mat-ink-bar,.mat-tab-nav-bar.mat-warn.mat-background-warn .mat-ink-bar{background-color:#fff}.mat-tab-group.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled){background-color:rgba(82,167,207,.3)}.mat-tab-group.mat-background-primary .mat-tab-header,.mat-tab-group.mat-background-primary .mat-tab-header-pagination,.mat-tab-group.mat-background-primary .mat-tab-links,.mat-tab-nav-bar.mat-background-primary .mat-tab-header,.mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination,.mat-tab-nav-bar.mat-background-primary .mat-tab-links{background-color:#3398c7}.mat-tab-group.mat-background-primary .mat-tab-label,.mat-tab-group.mat-background-primary .mat-tab-link,.mat-tab-nav-bar.mat-background-primary .mat-tab-label,.mat-tab-nav-bar.mat-background-primary .mat-tab-link{color:#fff}.mat-tab-group.mat-background-primary .mat-tab-label.mat-tab-disabled,.mat-tab-group.mat-background-primary .mat-tab-link.mat-tab-disabled,.mat-tab-nav-bar.mat-background-primary .mat-tab-label.mat-tab-disabled,.mat-tab-nav-bar.mat-background-primary .mat-tab-link.mat-tab-disabled{color:hsla(0,0%,100%,.4)}.mat-tab-group.mat-background-primary .mat-tab-header-pagination-chevron,.mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination-chevron{border-color:#fff}.mat-tab-group.mat-background-primary .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,.mat-tab-nav-bar.mat-background-primary .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron{border-color:hsla(0,0%,100%,.4)}.mat-tab-group.mat-background-primary .mat-ripple-element,.mat-tab-nav-bar.mat-background-primary .mat-ripple-element{background-color:hsla(0,0%,100%,.12)}.mat-tab-group.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled){background-color:rgba(82,207,184,.3)}.mat-tab-group.mat-background-accent .mat-tab-header,.mat-tab-group.mat-background-accent .mat-tab-header-pagination,.mat-tab-group.mat-background-accent .mat-tab-links,.mat-tab-nav-bar.mat-background-accent .mat-tab-header,.mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination,.mat-tab-nav-bar.mat-background-accent .mat-tab-links{background-color:#33c7ac}.mat-tab-group.mat-background-accent .mat-tab-label,.mat-tab-group.mat-background-accent .mat-tab-link,.mat-tab-nav-bar.mat-background-accent .mat-tab-label,.mat-tab-nav-bar.mat-background-accent .mat-tab-link{color:rgba(0,0,0,.87)}.mat-tab-group.mat-background-accent .mat-tab-label.mat-tab-disabled,.mat-tab-group.mat-background-accent .mat-tab-link.mat-tab-disabled,.mat-tab-nav-bar.mat-background-accent .mat-tab-label.mat-tab-disabled,.mat-tab-nav-bar.mat-background-accent .mat-tab-link.mat-tab-disabled{color:rgba(0,0,0,.4)}.mat-tab-group.mat-background-accent .mat-tab-header-pagination-chevron,.mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination-chevron{border-color:rgba(0,0,0,.87)}.mat-tab-group.mat-background-accent .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,.mat-tab-nav-bar.mat-background-accent .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron{border-color:rgba(0,0,0,.4)}.mat-tab-group.mat-background-accent .mat-ripple-element,.mat-tab-nav-bar.mat-background-accent .mat-ripple-element{background-color:rgba(0,0,0,.12)}.mat-tab-group.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-group.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled){background-color:rgba(255,205,210,.3)}.mat-tab-group.mat-background-warn .mat-tab-header,.mat-tab-group.mat-background-warn .mat-tab-header-pagination,.mat-tab-group.mat-background-warn .mat-tab-links,.mat-tab-nav-bar.mat-background-warn .mat-tab-header,.mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination,.mat-tab-nav-bar.mat-background-warn .mat-tab-links{background-color:#f44336}.mat-tab-group.mat-background-warn .mat-tab-label,.mat-tab-group.mat-background-warn .mat-tab-link,.mat-tab-nav-bar.mat-background-warn .mat-tab-label,.mat-tab-nav-bar.mat-background-warn .mat-tab-link{color:#fff}.mat-tab-group.mat-background-warn .mat-tab-label.mat-tab-disabled,.mat-tab-group.mat-background-warn .mat-tab-link.mat-tab-disabled,.mat-tab-nav-bar.mat-background-warn .mat-tab-label.mat-tab-disabled,.mat-tab-nav-bar.mat-background-warn .mat-tab-link.mat-tab-disabled{color:hsla(0,0%,100%,.4)}.mat-tab-group.mat-background-warn .mat-tab-header-pagination-chevron,.mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination-chevron{border-color:#fff}.mat-tab-group.mat-background-warn .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,.mat-tab-nav-bar.mat-background-warn .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron{border-color:hsla(0,0%,100%,.4)}.mat-tab-group.mat-background-warn .mat-ripple-element,.mat-tab-nav-bar.mat-background-warn .mat-ripple-element{background-color:hsla(0,0%,100%,.12)}.mat-toolbar{background:#f5f5f5;color:rgba(0,0,0,.87)}.mat-toolbar.mat-primary{background:#3398c7;color:#fff}.mat-toolbar.mat-accent{background:#33c7ac;color:rgba(0,0,0,.87)}.mat-toolbar.mat-warn{background:#f44336;color:#fff}.mat-toolbar .mat-focused .mat-form-field-ripple,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-form-field-underline{background-color:currentColor}.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-select-value{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-tooltip{background:rgba(97,97,97,.9)}.mat-tree{background:#fff}.mat-nested-tree-node,.mat-tree-node{color:rgba(0,0,0,.87)}.mat-snack-bar-container{color:hsla(0,0%,100%,.7);background:#323232;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.mat-simple-snackbar-action{color:#33c7ac}.mat-badge-content{font-weight:600;font-size:12px;font-family:Open Sans}.mat-badge-small .mat-badge-content{font-size:9px}.mat-badge-large .mat-badge-content{font-size:24px}.mat-h1,.mat-headline,.mat-typography h1{font:400 24px/32px Open Sans;letter-spacing:normal;margin:0 0 16px}.mat-h2,.mat-title,.mat-typography h2{font:500 20px/32px Open Sans;letter-spacing:normal;margin:0 0 16px}.mat-h3,.mat-subheading-2,.mat-typography h3{font:400 16px/28px Open Sans;letter-spacing:normal;margin:0 0 16px}.mat-h4,.mat-subheading-1,.mat-typography h4{font:400 15px/24px Open Sans;letter-spacing:normal;margin:0 0 16px}.mat-h5,.mat-typography h5{font:400 11.62px/20px Open Sans;margin:0 0 12px}.mat-h6,.mat-typography h6{font:400 9.38px/20px Open Sans;margin:0 0 12px}.mat-body-2,.mat-body-strong{font:500 14px/24px Open Sans;letter-spacing:normal}.mat-body,.mat-body-1,.mat-typography{font:400 14px/20px Open Sans;letter-spacing:normal}.mat-body-1 p,.mat-body p,.mat-typography p{margin:0 0 12px}.mat-caption,.mat-small{font:400 12px/20px Open Sans;letter-spacing:normal}.mat-display-4,.mat-typography .mat-display-4{font:300 112px/112px Open Sans;letter-spacing:-.05em;margin:0 0 56px}.mat-display-3,.mat-typography .mat-display-3{font:400 56px/56px Open Sans;letter-spacing:-.02em;margin:0 0 64px}.mat-display-2,.mat-typography .mat-display-2{font:400 45px/48px Open Sans;letter-spacing:-.005em;margin:0 0 64px}.mat-display-1,.mat-typography .mat-display-1{font:400 34px/40px Open Sans;letter-spacing:normal;margin:0 0 64px}.mat-bottom-sheet-container{font:400 14px/20px Open Sans;letter-spacing:normal}.mat-button,.mat-fab,.mat-flat-button,.mat-icon-button,.mat-mini-fab,.mat-raised-button,.mat-stroked-button{font-family:Open Sans;font-size:14px;font-weight:500}.mat-button-toggle,.mat-card{font-family:Open Sans}.mat-card-title{font-size:24px;font-weight:500}.mat-card-header .mat-card-title{font-size:20px}.mat-card-content,.mat-card-subtitle{font-size:14px}.mat-checkbox{font-family:Open Sans}.mat-checkbox-layout .mat-checkbox-label{line-height:24px}.mat-chip{font-size:14px;font-weight:500}.mat-chip .mat-chip-remove.mat-icon,.mat-chip .mat-chip-trailing-icon.mat-icon{font-size:18px}.mat-table{font-family:Open Sans}.mat-header-cell{font-size:12px;font-weight:500}.mat-cell,.mat-footer-cell{font-size:14px}.mat-calendar{font-family:Open Sans}.mat-calendar-body{font-size:13px}.mat-calendar-body-label,.mat-calendar-period-button{font-size:14px;font-weight:500}.mat-calendar-table-header th{font-size:11px;font-weight:400}.mat-dialog-title{font:500 20px/32px Open Sans;letter-spacing:normal}.mat-expansion-panel-header{font-family:Open Sans;font-size:15px;font-weight:400}.mat-expansion-panel-content{font:400 14px/20px Open Sans;letter-spacing:normal}.mat-form-field{font-size:inherit;font-weight:400;line-height:1.125;font-family:Open Sans;letter-spacing:normal}.mat-form-field-wrapper{padding-bottom:1.34375em}.mat-form-field-prefix .mat-icon,.mat-form-field-suffix .mat-icon{font-size:150%;line-height:1.125}.mat-form-field-prefix .mat-icon-button,.mat-form-field-suffix .mat-icon-button{height:1.5em;width:1.5em}.mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field-suffix .mat-icon-button .mat-icon{height:1.125em;line-height:1.125}.mat-form-field-infix{padding:.5em 0;border-top:.84375em solid transparent}.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.34373em) scale(.75);width:133.33335%}.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.34372em) scale(.75);width:133.33336%}.mat-form-field-label-wrapper{top:-.84375em;padding-top:.84375em}.mat-form-field-label{top:1.34375em}.mat-form-field-underline{bottom:1.34375em}.mat-form-field-subscript-wrapper{font-size:75%;margin-top:.66667em;top:calc(100% - 1.79167em)}.mat-form-field-appearance-legacy .mat-form-field-wrapper{padding-bottom:1.25em}.mat-form-field-appearance-legacy .mat-form-field-infix{padding:.4375em 0}.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.00106px);-ms-transform:translateY(-1.28119em) scale(.75);width:133.33339%}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.00107px);-ms-transform:translateY(-1.28118em) scale(.75);width:133.3334%}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.00108px);-ms-transform:translateY(-1.28117em) scale(.75);width:133.33341%}.mat-form-field-appearance-legacy .mat-form-field-label{top:1.28125em}.mat-form-field-appearance-legacy .mat-form-field-underline{bottom:1.25em}.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper{margin-top:.54167em;top:calc(100% - 1.66667em)}@media print{.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28116em) scale(.75)}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28115em) scale(.75)}.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.28114em) scale(.75)}}.mat-form-field-appearance-fill .mat-form-field-infix{padding:.25em 0 .75em}.mat-form-field-appearance-fill .mat-form-field-label{top:1.09375em;margin-top:-.5em}.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-.59373em) scale(.75);width:133.33335%}.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-.59372em) scale(.75);width:133.33336%}.mat-form-field-appearance-outline .mat-form-field-infix{padding:1em 0}.mat-form-field-appearance-outline .mat-form-field-label{top:1.84375em;margin-top:-.25em}.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.59373em) scale(.75);width:133.33335%}.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown)+.mat-form-field-label-wrapper .mat-form-field-label{transform:translateY(-1.59372em) scale(.75);width:133.33336%}.mat-grid-tile-footer,.mat-grid-tile-header{font-size:14px}.mat-grid-tile-footer .mat-line,.mat-grid-tile-header .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-grid-tile-footer .mat-line:nth-child(n+2),.mat-grid-tile-header .mat-line:nth-child(n+2){font-size:12px}input.mat-input-element{margin-top:-.0625em}.mat-menu-item{font-family:Open Sans;font-size:14px;font-weight:400}.mat-paginator,.mat-paginator-page-size .mat-select-trigger{font-family:Open Sans;font-size:12px}.mat-radio-button,.mat-select{font-family:Open Sans}.mat-select-trigger{height:1.125em}.mat-slide-toggle-content{font-family:Open Sans}.mat-slider-thumb-label-text{font-family:Open Sans;font-size:12px;font-weight:500}.mat-stepper-horizontal,.mat-stepper-vertical{font-family:Open Sans}.mat-step-label{font-size:14px;font-weight:400}.mat-step-sub-label-error{font-weight:400}.mat-step-label-error{font-size:14px}.mat-step-label-selected{font-size:14px;font-weight:500}.mat-tab-group{font-family:Open Sans}.mat-tab-label,.mat-tab-link{font-family:Open Sans;font-size:14px;font-weight:500}.mat-toolbar,.mat-toolbar h1,.mat-toolbar h2,.mat-toolbar h3,.mat-toolbar h4,.mat-toolbar h5,.mat-toolbar h6{font:500 20px/32px Open Sans;letter-spacing:normal;margin:0}.mat-tooltip{font-family:Open Sans;font-size:10px;padding-top:6px;padding-bottom:6px}.mat-tooltip-handset{font-size:14px;padding-top:8px;padding-bottom:8px}.mat-list-item,.mat-list-option{font-family:Open Sans}.mat-list-base .mat-list-item{font-size:16px}.mat-list-base .mat-list-item .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-list-base .mat-list-item .mat-line:nth-child(n+2){font-size:14px}.mat-list-base .mat-list-option{font-size:16px}.mat-list-base .mat-list-option .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-list-base .mat-list-option .mat-line:nth-child(n+2){font-size:14px}.mat-list-base .mat-subheader{font-family:Open Sans;font-size:14px;font-weight:500}.mat-list-base[dense] .mat-list-item{font-size:12px}.mat-list-base[dense] .mat-list-item .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2),.mat-list-base[dense] .mat-list-option{font-size:12px}.mat-list-base[dense] .mat-list-option .mat-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;box-sizing:border-box}.mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2){font-size:12px}.mat-list-base[dense] .mat-subheader{font-family:Open Sans;font-size:12px;font-weight:500}.mat-option{font-family:Open Sans;font-size:16px}.mat-optgroup-label{font:500 14px/24px Open Sans;letter-spacing:normal}.mat-simple-snackbar{font-family:Open Sans;font-size:14px}.mat-simple-snackbar-action{line-height:1;font-family:inherit;font-size:inherit;font-weight:500}.mat-tree{font-family:Open Sans}.mat-nested-tree-node,.mat-tree-node{font-weight:400;font-size:14px}.mat-dialog-actions{min-height:68px!important;box-sizing:border-box}.mat-form-field.mat-form-field-type-mat-input.mat-form-field-appearance-outline .mat-form-field-prefix,.mat-form-field.mat-form-field-type-mat-input.mat-form-field-appearance-outline>.mat-form-field-wrapper>.mat-form-field-flex>.mat-form-field-suffix{top:0}.mat-form-field.mat-form-field-type-mat-input.mat-form-field-appearance-outline .mat-form-field-prefix>.mat-icon-button,.mat-form-field.mat-form-field-type-mat-input.mat-form-field-appearance-outline>.mat-form-field-wrapper>.mat-form-field-flex>.mat-form-field-suffix>.mat-icon-button{top:.4em}.mat-form-field.mat-form-field-type-mat-input.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float>.mat-form-field-wrapper>.mat-form-field-flex>.mat-form-field-infix>.mat-form-field-label-wrapper>.mat-form-field-label{transform:translateY(-1.88em) scale(.75);width:133.33335%}.mat-form-field.mat-form-field-type-mat-input.mat-form-field-appearance-outline>.mat-form-field-wrapper>.mat-form-field-flex{padding:0 16px}.mat-form-field.mat-form-field-type-mat-input.mat-form-field-appearance-outline>.mat-form-field-wrapper>.mat-form-field-flex>.mat-form-field-outline{top:0}.mat-form-field.mat-form-field-type-mat-input.mat-form-field-appearance-outline>.mat-form-field-wrapper>.mat-form-field-flex>.mat-form-field-infix{border-top:0;padding:1.465em 0}.mat-form-field.mat-form-field-type-mat-input.mat-form-field-appearance-outline>.mat-form-field-wrapper>.mat-form-field-flex>.mat-form-field-infix>.mat-form-field-label-wrapper>.mat-form-field-label{top:2.29em;margin-top:0}.mat-button>.mat-button-wrapper{display:flex;align-items:center}.mat-button>.mat-button-wrapper>.mat-icon{margin-right:-8px}.mat-button-toggle-group-appearance-standard .mat-button-toggle{margin:2px;flex:1 1 0}.mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;margin-left:0}.mat-button-toggle-group-appearance-standard .mat-button-toggle.mat-button-toggle-checked{background-color:#3398c7;color:#fff}.mat-button-toggle-group-appearance-standard .mat-button-toggle.mat-button-toggle-checked>.mat-button-toggle-focus-overlay{border-bottom:48px solid}.mat-button-toggle-group-appearance-standard .mat-button-toggle.mat-button-toggle-checked:first-child{border-radius:3px 0 0 3px}.mat-button-toggle-group-appearance-standard .mat-button-toggle.mat-button-toggle-checked:last-child{border-radius:0 3px 3px 0}label.mat-checkbox-layout{font-weight:inherit;margin-bottom:unset;max-width:unset}.full-screen-modal{max-width:unset!important;margin:0!important;width:100%;height:100%}.full-screen-modal .mat-dialog-container{max-width:100vw;max-height:100vh;height:100%;width:100%;border-radius:0;display:flex;flex-direction:column}.full-screen-modal .mat-dialog-container .mat-dialog-content{max-height:unset!important;flex-grow:1;display:flex;flex-direction:column}.full-height-modal .mat-dialog-content{max-height:unset}.modal-content-full-size .mat-dialog-container{padding:0;position:relative}.mat-radio-button .mat-radio-label .mat-radio-label-content{font-weight:400}', ""]),
    t.exports = e
}
, function(t, e, n) {
    "use strict";
    n.r(e);
    var i = 484813681109536e-20
      , r = Math.PI / 2
      , o = .017453292519943295
      , a = 57.29577951308232
      , s = Math.PI / 4
      , c = 2 * Math.PI
      , l = 3.14159265359
      , u = {
        greenwich: 0,
        lisbon: -9.131906111111,
        paris: 2.337229166667,
        bogota: -74.080916666667,
        madrid: -3.687938888889,
        rome: 12.452333333333,
        bern: 7.439583333333,
        jakarta: 106.807719444444,
        ferro: -17.666666666667,
        brussels: 4.367975,
        stockholm: 18.058277777778,
        athens: 23.7163375,
        oslo: 10.722916666667
    }
      , d = {
        ft: {
            to_meter: .3048
        },
        "us-ft": {
            to_meter: 1200 / 3937
        }
    }
      , p = /[\s_\-\/\(\)]/g;
    function h(t, e) {
        if (t[e])
            return t[e];
        for (var n, i = Object.keys(t), r = e.toLowerCase().replace(p, ""), o = -1; ++o < i.length; )
            if ((n = i[o]).toLowerCase().replace(p, "") === r)
                return t[n]
    }
    var f = function(t) {
        var e, n, i, r = {}, a = t.split("+").map((function(t) {
            return t.trim()
        }
        )).filter((function(t) {
            return t
        }
        )).reduce((function(t, e) {
            var n = e.split("=");
            return n.push(!0),
            t[n[0].toLowerCase()] = n[1],
            t
        }
        ), {}), s = {
            proj: "projName",
            datum: "datumCode",
            rf: function(t) {
                r.rf = parseFloat(t)
            },
            lat_0: function(t) {
                r.lat0 = t * o
            },
            lat_1: function(t) {
                r.lat1 = t * o
            },
            lat_2: function(t) {
                r.lat2 = t * o
            },
            lat_ts: function(t) {
                r.lat_ts = t * o
            },
            lon_0: function(t) {
                r.long0 = t * o
            },
            lon_1: function(t) {
                r.long1 = t * o
            },
            lon_2: function(t) {
                r.long2 = t * o
            },
            alpha: function(t) {
                r.alpha = parseFloat(t) * o
            },
            lonc: function(t) {
                r.longc = t * o
            },
            x_0: function(t) {
                r.x0 = parseFloat(t)
            },
            y_0: function(t) {
                r.y0 = parseFloat(t)
            },
            k_0: function(t) {
                r.k0 = parseFloat(t)
            },
            k: function(t) {
                r.k0 = parseFloat(t)
            },
            a: function(t) {
                r.a = parseFloat(t)
            },
            b: function(t) {
                r.b = parseFloat(t)
            },
            r_a: function() {
                r.R_A = !0
            },
            zone: function(t) {
                r.zone = parseInt(t, 10)
            },
            south: function() {
                r.utmSouth = !0
            },
            towgs84: function(t) {
                r.datum_params = t.split(",").map((function(t) {
                    return parseFloat(t)
                }
                ))
            },
            to_meter: function(t) {
                r.to_meter = parseFloat(t)
            },
            units: function(t) {
                r.units = t;
                var e = h(d, t);
                e && (r.to_meter = e.to_meter)
            },
            from_greenwich: function(t) {
                r.from_greenwich = t * o
            },
            pm: function(t) {
                var e = h(u, t);
                r.from_greenwich = (e || parseFloat(t)) * o
            },
            nadgrids: function(t) {
                "@null" === t ? r.datumCode = "none" : r.nadgrids = t
            },
            axis: function(t) {
                3 === t.length && -1 !== "ewnsud".indexOf(t.substr(0, 1)) && -1 !== "ewnsud".indexOf(t.substr(1, 1)) && -1 !== "ewnsud".indexOf(t.substr(2, 1)) && (r.axis = t)
            }
        };
        for (e in a)
            n = a[e],
            e in s ? "function" == typeof (i = s[e]) ? i(n) : r[i] = n : r[e] = n;
        return "string" == typeof r.datumCode && "WGS84" !== r.datumCode && (r.datumCode = r.datumCode.toLowerCase()),
        r
    }
      , m = function(t) {
        return new S(t).output()
    }
      , g = /\s/
      , v = /[A-Za-z]/
      , y = /[A-Za-z84]/
      , b = /[,\]]/
      , w = /[\d\.E\-\+]/;
    function S(t) {
        if ("string" != typeof t)
            throw new Error("not a string");
        this.text = t.trim(),
        this.level = 0,
        this.place = 0,
        this.root = null,
        this.stack = [],
        this.currentObject = null,
        this.state = 1
    }
    function x(t, e, n) {
        Array.isArray(e) && (n.unshift(e),
        e = null);
        var i = e ? {} : t
          , r = n.reduce((function(t, e) {
            return M(e, t),
            t
        }
        ), i);
        e && (t[e] = r)
    }
    function M(t, e) {
        if (Array.isArray(t)) {
            var n = t.shift();
            if ("PARAMETER" === n && (n = t.shift()),
            1 === t.length)
                return Array.isArray(t[0]) ? (e[n] = {},
                void M(t[0], e[n])) : void (e[n] = t[0]);
            if (t.length)
                if ("TOWGS84" !== n) {
                    if ("AXIS" === n)
                        return n in e || (e[n] = []),
                        void e[n].push(t);
                    var i;
                    switch (Array.isArray(n) || (e[n] = {}),
                    n) {
                    case "UNIT":
                    case "PRIMEM":
                    case "VERT_DATUM":
                        return e[n] = {
                            name: t[0].toLowerCase(),
                            convert: t[1]
                        },
                        void (3 === t.length && M(t[2], e[n]));
                    case "SPHEROID":
                    case "ELLIPSOID":
                        return e[n] = {
                            name: t[0],
                            a: t[1],
                            rf: t[2]
                        },
                        void (4 === t.length && M(t[3], e[n]));
                    case "PROJECTEDCRS":
                    case "PROJCRS":
                    case "GEOGCS":
                    case "GEOCCS":
                    case "PROJCS":
                    case "LOCAL_CS":
                    case "GEODCRS":
                    case "GEODETICCRS":
                    case "GEODETICDATUM":
                    case "EDATUM":
                    case "ENGINEERINGDATUM":
                    case "VERT_CS":
                    case "VERTCRS":
                    case "VERTICALCRS":
                    case "COMPD_CS":
                    case "COMPOUNDCRS":
                    case "ENGINEERINGCRS":
                    case "ENGCRS":
                    case "FITTED_CS":
                    case "LOCAL_DATUM":
                    case "DATUM":
                        return t[0] = ["name", t[0]],
                        void x(e, n, t);
                    default:
                        for (i = -1; ++i < t.length; )
                            if (!Array.isArray(t[i]))
                                return M(t, e[n]);
                        return x(e, n, t)
                    }
                } else
                    e[n] = t;
            else
                e[n] = !0
        } else
            e[t] = !0
    }
    S.prototype.readCharicter = function() {
        var t = this.text[this.place++];
        if (4 !== this.state)
            for (; g.test(t); ) {
                if (this.place >= this.text.length)
                    return;
                t = this.text[this.place++]
            }
        switch (this.state) {
        case 1:
            return this.neutral(t);
        case 2:
            return this.keyword(t);
        case 4:
            return this.quoted(t);
        case 5:
            return this.afterquote(t);
        case 3:
            return this.number(t);
        case -1:
            return
        }
    }
    ,
    S.prototype.afterquote = function(t) {
        if ('"' === t)
            return this.word += '"',
            void (this.state = 4);
        if (b.test(t))
            return this.word = this.word.trim(),
            void this.afterItem(t);
        throw new Error("havn't handled \"" + t + '" in afterquote yet, index ' + this.place)
    }
    ,
    S.prototype.afterItem = function(t) {
        return "," === t ? (null !== this.word && this.currentObject.push(this.word),
        this.word = null,
        void (this.state = 1)) : "]" === t ? (this.level--,
        null !== this.word && (this.currentObject.push(this.word),
        this.word = null),
        this.state = 1,
        this.currentObject = this.stack.pop(),
        void (this.currentObject || (this.state = -1))) : void 0
    }
    ,
    S.prototype.number = function(t) {
        if (!w.test(t)) {
            if (b.test(t))
                return this.word = parseFloat(this.word),
                void this.afterItem(t);
            throw new Error("havn't handled \"" + t + '" in number yet, index ' + this.place)
        }
        this.word += t
    }
    ,
    S.prototype.quoted = function(t) {
        '"' !== t ? this.word += t : this.state = 5
    }
    ,
    S.prototype.keyword = function(t) {
        if (y.test(t))
            this.word += t;
        else {
            if ("[" === t) {
                var e = [];
                return e.push(this.word),
                this.level++,
                null === this.root ? this.root = e : this.currentObject.push(e),
                this.stack.push(this.currentObject),
                this.currentObject = e,
                void (this.state = 1)
            }
            if (!b.test(t))
                throw new Error("havn't handled \"" + t + '" in keyword yet, index ' + this.place);
            this.afterItem(t)
        }
    }
    ,
    S.prototype.neutral = function(t) {
        if (v.test(t))
            return this.word = t,
            void (this.state = 2);
        if ('"' === t)
            return this.word = "",
            void (this.state = 4);
        if (w.test(t))
            return this.word = t,
            void (this.state = 3);
        if (!b.test(t))
            throw new Error("havn't handled \"" + t + '" in neutral yet, index ' + this.place);
        this.afterItem(t)
    }
    ,
    S.prototype.output = function() {
        for (; this.place < this.text.length; )
            this.readCharicter();
        if (-1 === this.state)
            return this.root;
        throw new Error('unable to parse string "' + this.text + '". State is ' + this.state)
    }
    ;
    function E(t) {
        return .017453292519943295 * t
    }
    var C = function(t) {
        var e = m(t)
          , n = e.shift()
          , i = e.shift();
        e.unshift(["name", i]),
        e.unshift(["type", n]);
        var r = {};
        return M(e, r),
        function(t) {
            if ("GEOGCS" === t.type ? t.projName = "longlat" : "LOCAL_CS" === t.type ? (t.projName = "identity",
            t.local = !0) : "object" == typeof t.PROJECTION ? t.projName = Object.keys(t.PROJECTION)[0] : t.projName = t.PROJECTION,
            t.AXIS) {
                for (var e = "", n = 0, i = t.AXIS.length; n < i; ++n) {
                    var r = t.AXIS[n][0].toLowerCase();
                    -1 !== r.indexOf("north") ? e += "n" : -1 !== r.indexOf("south") ? e += "s" : -1 !== r.indexOf("east") ? e += "e" : -1 !== r.indexOf("west") && (e += "w")
                }
                2 === e.length && (e += "u"),
                3 === e.length && (t.axis = e)
            }
            t.UNIT && (t.units = t.UNIT.name.toLowerCase(),
            "metre" === t.units && (t.units = "meter"),
            t.UNIT.convert && ("GEOGCS" === t.type ? t.DATUM && t.DATUM.SPHEROID && (t.to_meter = t.UNIT.convert * t.DATUM.SPHEROID.a) : t.to_meter = t.UNIT.convert));
            var o = t.GEOGCS;
            function a(e) {
                return e * (t.to_meter || 1)
            }
            "GEOGCS" === t.type && (o = t),
            o && (o.DATUM ? t.datumCode = o.DATUM.name.toLowerCase() : t.datumCode = o.name.toLowerCase(),
            "d_" === t.datumCode.slice(0, 2) && (t.datumCode = t.datumCode.slice(2)),
            "new_zealand_geodetic_datum_1949" !== t.datumCode && "new_zealand_1949" !== t.datumCode || (t.datumCode = "nzgd49"),
            "wgs_1984" !== t.datumCode && "world_geodetic_system_1984" !== t.datumCode || ("Mercator_Auxiliary_Sphere" === t.PROJECTION && (t.sphere = !0),
            t.datumCode = "wgs84"),
            "_ferro" === t.datumCode.slice(-6) && (t.datumCode = t.datumCode.slice(0, -6)),
            "_jakarta" === t.datumCode.slice(-8) && (t.datumCode = t.datumCode.slice(0, -8)),
            ~t.datumCode.indexOf("belge") && (t.datumCode = "rnb72"),
            o.DATUM && o.DATUM.SPHEROID && (t.ellps = o.DATUM.SPHEROID.name.replace("_19", "").replace(/[Cc]larke\_18/, "clrk"),
            "international" === t.ellps.toLowerCase().slice(0, 13) && (t.ellps = "intl"),
            t.a = o.DATUM.SPHEROID.a,
            t.rf = parseFloat(o.DATUM.SPHEROID.rf, 10)),
            o.DATUM && o.DATUM.TOWGS84 && (t.datum_params = o.DATUM.TOWGS84),
            ~t.datumCode.indexOf("osgb_1936") && (t.datumCode = "osgb36"),
            ~t.datumCode.indexOf("osni_1952") && (t.datumCode = "osni52"),
            (~t.datumCode.indexOf("tm65") || ~t.datumCode.indexOf("geodetic_datum_of_1965")) && (t.datumCode = "ire65"),
            "ch1903+" === t.datumCode && (t.datumCode = "ch1903"),
            ~t.datumCode.indexOf("israel") && (t.datumCode = "isr93")),
            t.b && !isFinite(t.b) && (t.b = t.a),
            [["standard_parallel_1", "Standard_Parallel_1"], ["standard_parallel_2", "Standard_Parallel_2"], ["false_easting", "False_Easting"], ["false_northing", "False_Northing"], ["central_meridian", "Central_Meridian"], ["latitude_of_origin", "Latitude_Of_Origin"], ["latitude_of_origin", "Central_Parallel"], ["scale_factor", "Scale_Factor"], ["k0", "scale_factor"], ["latitude_of_center", "Latitude_Of_Center"], ["latitude_of_center", "Latitude_of_center"], ["lat0", "latitude_of_center", E], ["longitude_of_center", "Longitude_Of_Center"], ["longitude_of_center", "Longitude_of_center"], ["longc", "longitude_of_center", E], ["x0", "false_easting", a], ["y0", "false_northing", a], ["long0", "central_meridian", E], ["lat0", "latitude_of_origin", E], ["lat0", "standard_parallel_1", E], ["lat1", "standard_parallel_1", E], ["lat2", "standard_parallel_2", E], ["azimuth", "Azimuth"], ["alpha", "azimuth", E], ["srsCode", "name"]].forEach((function(e) {
                return n = t,
                r = (i = e)[0],
                o = i[1],
                void (!(r in n) && o in n && (n[r] = n[o],
                3 === i.length && (n[r] = i[2](n[r]))));
                var n, i, r, o
            }
            )),
            t.long0 || !t.longc || "Albers_Conic_Equal_Area" !== t.projName && "Lambert_Azimuthal_Equal_Area" !== t.projName || (t.long0 = t.longc),
            t.lat_ts || !t.lat1 || "Stereographic_South_Pole" !== t.projName && "Polar Stereographic (variant B)" !== t.projName || (t.lat0 = E(t.lat1 > 0 ? 90 : -90),
            t.lat_ts = t.lat1)
        }(r),
        r
    };
    function A(t) {
        var e = this;
        if (2 === arguments.length) {
            var n = arguments[1];
            "string" == typeof n ? "+" === n.charAt(0) ? A[t] = f(arguments[1]) : A[t] = C(arguments[1]) : A[t] = n
        } else if (1 === arguments.length) {
            if (Array.isArray(t))
                return t.map((function(t) {
                    Array.isArray(t) ? A.apply(e, t) : A(t)
                }
                ));
            if ("string" == typeof t) {
                if (t in A)
                    return A[t]
            } else
                "EPSG"in t ? A["EPSG:" + t.EPSG] = t : "ESRI"in t ? A["ESRI:" + t.ESRI] = t : "IAU2000"in t ? A["IAU2000:" + t.IAU2000] = t : console.log(t);
            return
        }
    }
    !function(t) {
        t("EPSG:4326", "+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees"),
        t("EPSG:4269", "+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees"),
        t("EPSG:3857", "+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs"),
        t.WGS84 = t["EPSG:4326"],
        t["EPSG:3785"] = t["EPSG:3857"],
        t.GOOGLE = t["EPSG:3857"],
        t["EPSG:900913"] = t["EPSG:3857"],
        t["EPSG:102113"] = t["EPSG:3857"]
    }(A);
    var T = A;
    var O = ["PROJECTEDCRS", "PROJCRS", "GEOGCS", "GEOCCS", "PROJCS", "LOCAL_CS", "GEODCRS", "GEODETICCRS", "GEODETICDATUM", "ENGCRS", "ENGINEERINGCRS"];
    var _ = ["3857", "900913", "3785", "102113"];
    var P = function(t) {
        if (!function(t) {
            return "string" == typeof t
        }(t))
            return t;
        if (function(t) {
            return t in T
        }(t))
            return T[t];
        if (function(t) {
            return O.some((function(e) {
                return t.indexOf(e) > -1
            }
            ))
        }(t)) {
            var e = C(t);
            if (function(t) {
                var e = h(t, "authority");
                if (e) {
                    var n = h(e, "epsg");
                    return n && _.indexOf(n) > -1
                }
            }(e))
                return T["EPSG:3857"];
            var n = function(t) {
                var e = h(t, "extension");
                if (e)
                    return h(e, "proj4")
            }(e);
            return n ? f(n) : e
        }
        return function(t) {
            return "+" === t[0]
        }(t) ? f(t) : void 0
    }
      , I = function(t, e) {
        var n, i;
        if (t = t || {},
        !e)
            return t;
        for (i in e)
            void 0 !== (n = e[i]) && (t[i] = n);
        return t
    }
      , k = function(t, e, n) {
        var i = t * e;
        return n / Math.sqrt(1 - i * i)
    }
      , D = function(t) {
        return t < 0 ? -1 : 1
    }
      , R = function(t) {
        return Math.abs(t) <= l ? t : t - D(t) * c
    }
      , L = function(t, e, n) {
        var i = t * n
          , o = .5 * t;
        return i = Math.pow((1 - i) / (1 + i), o),
        Math.tan(.5 * (r - e)) / i
    }
      , N = function(t, e) {
        for (var n, i, o = .5 * t, a = r - 2 * Math.atan(e), s = 0; s <= 15; s++)
            if (n = t * Math.sin(a),
            a += i = r - 2 * Math.atan(e * Math.pow((1 - n) / (1 + n), o)) - a,
            Math.abs(i) <= 1e-10)
                return a;
        return -9999
    };
    function j(t) {
        return t
    }
    var V = [{
        init: function() {
            var t = this.b / this.a;
            this.es = 1 - t * t,
            "x0"in this || (this.x0 = 0),
            "y0"in this || (this.y0 = 0),
            this.e = Math.sqrt(this.es),
            this.lat_ts ? this.sphere ? this.k0 = Math.cos(this.lat_ts) : this.k0 = k(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) : this.k0 || (this.k ? this.k0 = this.k : this.k0 = 1)
        },
        forward: function(t) {
            var e, n, i = t.x, o = t.y;
            if (o * a > 90 && o * a < -90 && i * a > 180 && i * a < -180)
                return null;
            if (Math.abs(Math.abs(o) - r) <= 1e-10)
                return null;
            if (this.sphere)
                e = this.x0 + this.a * this.k0 * R(i - this.long0),
                n = this.y0 + this.a * this.k0 * Math.log(Math.tan(s + .5 * o));
            else {
                var c = Math.sin(o)
                  , l = L(this.e, o, c);
                e = this.x0 + this.a * this.k0 * R(i - this.long0),
                n = this.y0 - this.a * this.k0 * Math.log(l)
            }
            return t.x = e,
            t.y = n,
            t
        },
        inverse: function(t) {
            var e, n, i = t.x - this.x0, o = t.y - this.y0;
            if (this.sphere)
                n = r - 2 * Math.atan(Math.exp(-o / (this.a * this.k0)));
            else {
                var a = Math.exp(-o / (this.a * this.k0));
                if (-9999 === (n = N(this.e, a)))
                    return null
            }
            return e = R(this.long0 + i / (this.a * this.k0)),
            t.x = e,
            t.y = n,
            t
        },
        names: ["Mercator", "Popular Visualisation Pseudo Mercator", "Mercator_1SP", "Mercator_Auxiliary_Sphere", "merc"]
    }, {
        init: function() {},
        forward: j,
        inverse: j,
        names: ["longlat", "identity"]
    }]
      , F = {}
      , U = [];
    function B(t, e) {
        var n = U.length;
        return t.names ? (U[n] = t,
        t.names.forEach((function(t) {
            F[t.toLowerCase()] = n
        }
        )),
        this) : (console.log(e),
        !0)
    }
    var z = {
        start: function() {
            V.forEach(B)
        },
        add: B,
        get: function(t) {
            if (!t)
                return !1;
            var e = t.toLowerCase();
            return void 0 !== F[e] && U[F[e]] ? U[F[e]] : void 0
        }
    }
      , G = {
        MERIT: {
            a: 6378137,
            rf: 298.257,
            ellipseName: "MERIT 1983"
        },
        SGS85: {
            a: 6378136,
            rf: 298.257,
            ellipseName: "Soviet Geodetic System 85"
        },
        GRS80: {
            a: 6378137,
            rf: 298.257222101,
            ellipseName: "GRS 1980(IUGG, 1980)"
        },
        IAU76: {
            a: 6378140,
            rf: 298.257,
            ellipseName: "IAU 1976"
        },
        airy: {
            a: 6377563.396,
            b: 6356256.91,
            ellipseName: "Airy 1830"
        },
        APL4: {
            a: 6378137,
            rf: 298.25,
            ellipseName: "Appl. Physics. 1965"
        },
        NWL9D: {
            a: 6378145,
            rf: 298.25,
            ellipseName: "Naval Weapons Lab., 1965"
        },
        mod_airy: {
            a: 6377340.189,
            b: 6356034.446,
            ellipseName: "Modified Airy"
        },
        andrae: {
            a: 6377104.43,
            rf: 300,
            ellipseName: "Andrae 1876 (Den., Iclnd.)"
        },
        aust_SA: {
            a: 6378160,
            rf: 298.25,
            ellipseName: "Australian Natl & S. Amer. 1969"
        },
        GRS67: {
            a: 6378160,
            rf: 298.247167427,
            ellipseName: "GRS 67(IUGG 1967)"
        },
        bessel: {
            a: 6377397.155,
            rf: 299.1528128,
            ellipseName: "Bessel 1841"
        },
        bess_nam: {
            a: 6377483.865,
            rf: 299.1528128,
            ellipseName: "Bessel 1841 (Namibia)"
        },
        clrk66: {
            a: 6378206.4,
            b: 6356583.8,
            ellipseName: "Clarke 1866"
        },
        clrk80: {
            a: 6378249.145,
            rf: 293.4663,
            ellipseName: "Clarke 1880 mod."
        },
        clrk58: {
            a: 6378293.645208759,
            rf: 294.2606763692654,
            ellipseName: "Clarke 1858"
        },
        CPM: {
            a: 6375738.7,
            rf: 334.29,
            ellipseName: "Comm. des Poids et Mesures 1799"
        },
        delmbr: {
            a: 6376428,
            rf: 311.5,
            ellipseName: "Delambre 1810 (Belgium)"
        },
        engelis: {
            a: 6378136.05,
            rf: 298.2566,
            ellipseName: "Engelis 1985"
        },
        evrst30: {
            a: 6377276.345,
            rf: 300.8017,
            ellipseName: "Everest 1830"
        },
        evrst48: {
            a: 6377304.063,
            rf: 300.8017,
            ellipseName: "Everest 1948"
        },
        evrst56: {
            a: 6377301.243,
            rf: 300.8017,
            ellipseName: "Everest 1956"
        },
        evrst69: {
            a: 6377295.664,
            rf: 300.8017,
            ellipseName: "Everest 1969"
        },
        evrstSS: {
            a: 6377298.556,
            rf: 300.8017,
            ellipseName: "Everest (Sabah & Sarawak)"
        },
        fschr60: {
            a: 6378166,
            rf: 298.3,
            ellipseName: "Fischer (Mercury Datum) 1960"
        },
        fschr60m: {
            a: 6378155,
            rf: 298.3,
            ellipseName: "Fischer 1960"
        },
        fschr68: {
            a: 6378150,
            rf: 298.3,
            ellipseName: "Fischer 1968"
        },
        helmert: {
            a: 6378200,
            rf: 298.3,
            ellipseName: "Helmert 1906"
        },
        hough: {
            a: 6378270,
            rf: 297,
            ellipseName: "Hough"
        },
        intl: {
            a: 6378388,
            rf: 297,
            ellipseName: "International 1909 (Hayford)"
        },
        kaula: {
            a: 6378163,
            rf: 298.24,
            ellipseName: "Kaula 1961"
        },
        lerch: {
            a: 6378139,
            rf: 298.257,
            ellipseName: "Lerch 1979"
        },
        mprts: {
            a: 6397300,
            rf: 191,
            ellipseName: "Maupertius 1738"
        },
        new_intl: {
            a: 6378157.5,
            b: 6356772.2,
            ellipseName: "New International 1967"
        },
        plessis: {
            a: 6376523,
            rf: 6355863,
            ellipseName: "Plessis 1817 (France)"
        },
        krass: {
            a: 6378245,
            rf: 298.3,
            ellipseName: "Krassovsky, 1942"
        },
        SEasia: {
            a: 6378155,
            b: 6356773.3205,
            ellipseName: "Southeast Asia"
        },
        walbeck: {
            a: 6376896,
            b: 6355834.8467,
            ellipseName: "Walbeck"
        },
        WGS60: {
            a: 6378165,
            rf: 298.3,
            ellipseName: "WGS 60"
        },
        WGS66: {
            a: 6378145,
            rf: 298.25,
            ellipseName: "WGS 66"
        },
        WGS7: {
            a: 6378135,
            rf: 298.26,
            ellipseName: "WGS 72"
        }
    }
      , H = G.WGS84 = {
        a: 6378137,
        rf: 298.257223563,
        ellipseName: "WGS 84"
    };
    G.sphere = {
        a: 6370997,
        b: 6370997,
        ellipseName: "Normal Sphere (r=6370997)"
    };
    var W = {};
    W.wgs84 = {
        towgs84: "0,0,0",
        ellipse: "WGS84",
        datumName: "WGS84"
    },
    W.ch1903 = {
        towgs84: "674.374,15.056,405.346",
        ellipse: "bessel",
        datumName: "swiss"
    },
    W.ggrs87 = {
        towgs84: "-199.87,74.79,246.62",
        ellipse: "GRS80",
        datumName: "Greek_Geodetic_Reference_System_1987"
    },
    W.nad83 = {
        towgs84: "0,0,0",
        ellipse: "GRS80",
        datumName: "North_American_Datum_1983"
    },
    W.nad27 = {
        nadgrids: "@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",
        ellipse: "clrk66",
        datumName: "North_American_Datum_1927"
    },
    W.potsdam = {
        towgs84: "606.0,23.0,413.0",
        ellipse: "bessel",
        datumName: "Potsdam Rauenberg 1950 DHDN"
    },
    W.carthage = {
        towgs84: "-263.0,6.0,431.0",
        ellipse: "clark80",
        datumName: "Carthage 1934 Tunisia"
    },
    W.hermannskogel = {
        towgs84: "653.0,-212.0,449.0",
        ellipse: "bessel",
        datumName: "Hermannskogel"
    },
    W.osni52 = {
        towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",
        ellipse: "airy",
        datumName: "Irish National"
    },
    W.ire65 = {
        towgs84: "482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",
        ellipse: "mod_airy",
        datumName: "Ireland 1965"
    },
    W.rassadiran = {
        towgs84: "-133.63,-157.5,-158.62",
        ellipse: "intl",
        datumName: "Rassadiran"
    },
    W.nzgd49 = {
        towgs84: "59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",
        ellipse: "intl",
        datumName: "New Zealand Geodetic Datum 1949"
    },
    W.osgb36 = {
        towgs84: "446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",
        ellipse: "airy",
        datumName: "Airy 1830"
    },
    W.s_jtsk = {
        towgs84: "589,76,480",
        ellipse: "bessel",
        datumName: "S-JTSK (Ferro)"
    },
    W.beduaram = {
        towgs84: "-106,-87,188",
        ellipse: "clrk80",
        datumName: "Beduaram"
    },
    W.gunung_segara = {
        towgs84: "-403,684,41",
        ellipse: "bessel",
        datumName: "Gunung Segara Jakarta"
    },
    W.rnb72 = {
        towgs84: "106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1",
        ellipse: "intl",
        datumName: "Reseau National Belge 1972"
    };
    var q = function(t, e, n, r, o, a) {
        var s = {};
        return s.datum_type = void 0 === t || "none" === t ? 5 : 4,
        e && (s.datum_params = e.map(parseFloat),
        0 === s.datum_params[0] && 0 === s.datum_params[1] && 0 === s.datum_params[2] || (s.datum_type = 1),
        s.datum_params.length > 3 && (0 === s.datum_params[3] && 0 === s.datum_params[4] && 0 === s.datum_params[5] && 0 === s.datum_params[6] || (s.datum_type = 2,
        s.datum_params[3] *= i,
        s.datum_params[4] *= i,
        s.datum_params[5] *= i,
        s.datum_params[6] = s.datum_params[6] / 1e6 + 1))),
        s.a = n,
        s.b = r,
        s.es = o,
        s.ep2 = a,
        s
    };
    function X(t, e) {
        if (!(this instanceof X))
            return new X(t);
        e = e || function(t) {
            if (t)
                throw t
        }
        ;
        var n = P(t);
        if ("object" == typeof n) {
            var i = X.projections.get(n.projName);
            if (i) {
                if (n.datumCode && "none" !== n.datumCode) {
                    var r = h(W, n.datumCode);
                    r && (n.datum_params = r.towgs84 ? r.towgs84.split(",") : null,
                    n.ellps = r.ellipse,
                    n.datumName = r.datumName ? r.datumName : n.datumCode)
                }
                n.k0 = n.k0 || 1,
                n.axis = n.axis || "enu",
                n.ellps = n.ellps || "wgs84";
                var o, a, s, c, l, u, d, p = function(t, e, n, i, r) {
                    if (!t) {
                        var o = h(G, i);
                        o || (o = H),
                        t = o.a,
                        e = o.b,
                        n = o.rf
                    }
                    return n && !e && (e = (1 - 1 / n) * t),
                    (0 === n || Math.abs(t - e) < 1e-10) && (r = !0,
                    e = t),
                    {
                        a: t,
                        b: e,
                        rf: n,
                        sphere: r
                    }
                }(n.a, n.b, n.rf, n.ellps, n.sphere), f = (o = p.a,
                a = p.b,
                p.rf,
                s = n.R_A,
                u = ((c = o * o) - (l = a * a)) / c,
                d = 0,
                s ? (c = (o *= 1 - u * (.16666666666666666 + u * (.04722222222222222 + .022156084656084655 * u))) * o,
                u = 0) : d = Math.sqrt(u),
                {
                    es: u,
                    e: d,
                    ep2: (c - l) / l
                }), m = n.datum || q(n.datumCode, n.datum_params, p.a, p.b, f.es, f.ep2);
                I(this, n),
                I(this, i),
                this.a = p.a,
                this.b = p.b,
                this.rf = p.rf,
                this.sphere = p.sphere,
                this.es = f.es,
                this.e = f.e,
                this.ep2 = f.ep2,
                this.datum = m,
                this.init(),
                e(null, this)
            } else
                e(t)
        } else
            e(t)
    }
    X.projections = z,
    X.projections.start();
    var Y = X;
    function K(t, e, n) {
        var i, o, a, s, c = t.x, l = t.y, u = t.z ? t.z : 0;
        if (l < -r && l > -1.001 * r)
            l = -r;
        else if (l > r && l < 1.001 * r)
            l = r;
        else {
            if (l < -r)
                return {
                    x: -1 / 0,
                    y: -1 / 0,
                    z: t.z
                };
            if (l > r)
                return {
                    x: 1 / 0,
                    y: 1 / 0,
                    z: t.z
                }
        }
        return c > Math.PI && (c -= 2 * Math.PI),
        o = Math.sin(l),
        s = Math.cos(l),
        a = o * o,
        {
            x: ((i = n / Math.sqrt(1 - e * a)) + u) * s * Math.cos(c),
            y: (i + u) * s * Math.sin(c),
            z: (i * (1 - e) + u) * o
        }
    }
    function Z(t, e, n, i) {
        var o, a, s, c, l, u, d, p, h, f, m, g, v, y, b, w = t.x, S = t.y, x = t.z ? t.z : 0;
        if (o = Math.sqrt(w * w + S * S),
        a = Math.sqrt(w * w + S * S + x * x),
        o / n < 1e-12) {
            if (y = 0,
            a / n < 1e-12)
                return r,
                b = -i,
                {
                    x: t.x,
                    y: t.y,
                    z: t.z
                }
        } else
            y = Math.atan2(S, w);
        s = x / a,
        p = (c = o / a) * (1 - e) * (l = 1 / Math.sqrt(1 - e * (2 - e) * c * c)),
        h = s * l,
        v = 0;
        do {
            v++,
            u = e * (d = n / Math.sqrt(1 - e * h * h)) / (d + (b = o * p + x * h - d * (1 - e * h * h))),
            g = (m = s * (l = 1 / Math.sqrt(1 - u * (2 - u) * c * c))) * p - (f = c * (1 - u) * l) * h,
            p = f,
            h = m
        } while (g * g > 1e-24 && v < 30);
        return {
            x: y,
            y: Math.atan(m / Math.abs(f)),
            z: b
        }
    }
    function J(t) {
        return 1 === t || 2 === t
    }
    var Q = function(t, e, n) {
        return function(t, e) {
            return t.datum_type === e.datum_type && (!(t.a !== e.a || Math.abs(t.es - e.es) > 5e-11) && (1 === t.datum_type ? t.datum_params[0] === e.datum_params[0] && t.datum_params[1] === e.datum_params[1] && t.datum_params[2] === e.datum_params[2] : 2 !== t.datum_type || t.datum_params[0] === e.datum_params[0] && t.datum_params[1] === e.datum_params[1] && t.datum_params[2] === e.datum_params[2] && t.datum_params[3] === e.datum_params[3] && t.datum_params[4] === e.datum_params[4] && t.datum_params[5] === e.datum_params[5] && t.datum_params[6] === e.datum_params[6]))
        }(t, e) || 5 === t.datum_type || 5 === e.datum_type ? n : t.es !== e.es || t.a !== e.a || J(t.datum_type) || J(e.datum_type) ? (n = K(n, t.es, t.a),
        J(t.datum_type) && (n = function(t, e, n) {
            if (1 === e)
                return {
                    x: t.x + n[0],
                    y: t.y + n[1],
                    z: t.z + n[2]
                };
            if (2 === e) {
                var i = n[0]
                  , r = n[1]
                  , o = n[2]
                  , a = n[3]
                  , s = n[4]
                  , c = n[5]
                  , l = n[6];
                return {
                    x: l * (t.x - c * t.y + s * t.z) + i,
                    y: l * (c * t.x + t.y - a * t.z) + r,
                    z: l * (-s * t.x + a * t.y + t.z) + o
                }
            }
        }(n, t.datum_type, t.datum_params)),
        J(e.datum_type) && (n = function(t, e, n) {
            if (1 === e)
                return {
                    x: t.x - n[0],
                    y: t.y - n[1],
                    z: t.z - n[2]
                };
            if (2 === e) {
                var i = n[0]
                  , r = n[1]
                  , o = n[2]
                  , a = n[3]
                  , s = n[4]
                  , c = n[5]
                  , l = n[6]
                  , u = (t.x - i) / l
                  , d = (t.y - r) / l
                  , p = (t.z - o) / l;
                return {
                    x: u + c * d - s * p,
                    y: -c * u + d + a * p,
                    z: s * u - a * d + p
                }
            }
        }(n, e.datum_type, e.datum_params)),
        Z(n, e.es, e.a, e.b)) : n
    }
      , $ = function(t, e, n) {
        var i, r, o, a = n.x, s = n.y, c = n.z || 0, l = {};
        for (o = 0; o < 3; o++)
            if (!e || 2 !== o || void 0 !== n.z)
                switch (0 === o ? (i = a,
                r = -1 !== "ew".indexOf(t.axis[o]) ? "x" : "y") : 1 === o ? (i = s,
                r = -1 !== "ns".indexOf(t.axis[o]) ? "y" : "x") : (i = c,
                r = "z"),
                t.axis[o]) {
                case "e":
                case "w":
                case "n":
                case "s":
                    l[r] = i;
                    break;
                case "u":
                    void 0 !== n[r] && (l.z = i);
                    break;
                case "d":
                    void 0 !== n[r] && (l.z = -i);
                    break;
                default:
                    return null
                }
        return l
    }
      , tt = function(t) {
        var e = {
            x: t[0],
            y: t[1]
        };
        return t.length > 2 && (e.z = t[2]),
        t.length > 3 && (e.m = t[3]),
        e
    };
    function et(t) {
        if ("function" == typeof Number.isFinite) {
            if (Number.isFinite(t))
                return;
            throw new TypeError("coordinates must be finite numbers")
        }
        if ("number" != typeof t || t != t || !isFinite(t))
            throw new TypeError("coordinates must be finite numbers")
    }
    function nt(t, e, n) {
        var i;
        if (Array.isArray(n) && (n = tt(n)),
        function(t) {
            et(t.x),
            et(t.y)
        }(n),
        t.datum && e.datum && function(t, e) {
            return (1 === t.datum.datum_type || 2 === t.datum.datum_type) && "WGS84" !== e.datumCode || (1 === e.datum.datum_type || 2 === e.datum.datum_type) && "WGS84" !== t.datumCode
        }(t, e) && (n = nt(t, i = new Y("WGS84"), n),
        t = i),
        "enu" !== t.axis && (n = $(t, !1, n)),
        "longlat" === t.projName)
            n = {
                x: n.x * o,
                y: n.y * o,
                z: n.z || 0
            };
        else if (t.to_meter && (n = {
            x: n.x * t.to_meter,
            y: n.y * t.to_meter,
            z: n.z || 0
        }),
        !(n = t.inverse(n)))
            return;
        return t.from_greenwich && (n.x += t.from_greenwich),
        n = Q(t.datum, e.datum, n),
        e.from_greenwich && (n = {
            x: n.x - e.from_greenwich,
            y: n.y,
            z: n.z || 0
        }),
        "longlat" === e.projName ? n = {
            x: n.x * a,
            y: n.y * a,
            z: n.z || 0
        } : (n = e.forward(n),
        e.to_meter && (n = {
            x: n.x / e.to_meter,
            y: n.y / e.to_meter,
            z: n.z || 0
        })),
        "enu" !== e.axis ? $(e, !0, n) : n
    }
    var it = Y("WGS84");
    function rt(t, e, n) {
        var i, r, o;
        return Array.isArray(n) ? (i = nt(t, e, n) || {
            x: NaN,
            y: NaN
        },
        n.length > 2 ? void 0 !== t.name && "geocent" === t.name || void 0 !== e.name && "geocent" === e.name ? "number" == typeof i.z ? [i.x, i.y, i.z].concat(n.splice(3)) : [i.x, i.y, n[2]].concat(n.splice(3)) : [i.x, i.y].concat(n.splice(2)) : [i.x, i.y]) : (r = nt(t, e, n),
        2 === (o = Object.keys(n)).length || o.forEach((function(i) {
            if (void 0 !== t.name && "geocent" === t.name || void 0 !== e.name && "geocent" === e.name) {
                if ("x" === i || "y" === i || "z" === i)
                    return
            } else if ("x" === i || "y" === i)
                return;
            r[i] = n[i]
        }
        )),
        r)
    }
    function ot(t) {
        return t instanceof Y ? t : t.oProj ? t.oProj : Y(t)
    }
    var at = function(t, e, n) {
        t = ot(t);
        var i, r = !1;
        return void 0 === e ? (e = t,
        t = it,
        r = !0) : (void 0 !== e.x || Array.isArray(e)) && (n = e,
        e = t,
        t = it,
        r = !0),
        e = ot(e),
        n ? rt(t, e, n) : (i = {
            forward: function(n) {
                return rt(t, e, n)
            },
            inverse: function(n) {
                return rt(e, t, n)
            }
        },
        r && (i.oProj = e),
        i)
    }
      , st = 73
      , ct = 79
      , lt = {
        forward: ut,
        inverse: function(t) {
            var e = ft(vt(t.toUpperCase()));
            if (e.lat && e.lon)
                return [e.lon, e.lat, e.lon, e.lat];
            return [e.left, e.bottom, e.right, e.top]
        },
        toPoint: dt
    };
    function ut(t, e) {
        return e = e || 5,
        function(t, e) {
            var n = "00000" + t.easting
              , i = "00000" + t.northing;
            return t.zoneNumber + t.zoneLetter + (h = t.easting,
            f = t.northing,
            m = t.zoneNumber,
            g = gt(m),
            v = Math.floor(h / 1e5),
            y = Math.floor(f / 1e5) % 20,
            r = v,
            o = y,
            a = g,
            s = a - 1,
            c = "AJSAJS".charCodeAt(s),
            l = "AFAFAF".charCodeAt(s),
            u = c + r - 1,
            d = l + o,
            p = !1,
            u > 90 && (u = u - 90 + 65 - 1,
            p = !0),
            (u === st || c < st && u > st || (u > st || c < st) && p) && u++,
            (u === ct || c < ct && u > ct || (u > ct || c < ct) && p) && ++u === st && u++,
            u > 90 && (u = u - 90 + 65 - 1),
            d > 86 ? (d = d - 86 + 65 - 1,
            p = !0) : p = !1,
            (d === st || l < st && d > st || (d > st || l < st) && p) && d++,
            (d === ct || l < ct && d > ct || (d > ct || l < ct) && p) && ++d === st && d++,
            d > 86 && (d = d - 86 + 65 - 1),
            String.fromCharCode(u) + String.fromCharCode(d)) + n.substr(n.length - 5, e) + i.substr(i.length - 5, e);
            var r, o, a, s, c, l, u, d, p;
            var h, f, m, g, v, y
        }(function(t) {
            var e, n, i, r, o, a, s, c = t.lat, l = t.lon, u = 6378137, d = pt(c), p = pt(l);
            s = Math.floor((l + 180) / 6) + 1,
            180 === l && (s = 60);
            c >= 56 && c < 64 && l >= 3 && l < 12 && (s = 32);
            c >= 72 && c < 84 && (l >= 0 && l < 9 ? s = 31 : l >= 9 && l < 21 ? s = 33 : l >= 21 && l < 33 ? s = 35 : l >= 33 && l < 42 && (s = 37));
            a = pt(6 * (s - 1) - 180 + 3),
            .006739496752268451,
            e = u / Math.sqrt(1 - .00669438 * Math.sin(d) * Math.sin(d)),
            n = Math.tan(d) * Math.tan(d),
            i = .006739496752268451 * Math.cos(d) * Math.cos(d),
            r = Math.cos(d) * (p - a),
            o = u * (.9983242984503243 * d - .002514607064228144 * Math.sin(2 * d) + 2639046602129982e-21 * Math.sin(4 * d) - 3.418046101696858e-9 * Math.sin(6 * d));
            var h = .9996 * e * (r + (1 - n + i) * r * r * r / 6 + (5 - 18 * n + n * n + 72 * i - .39089081163157013) * r * r * r * r * r / 120) + 5e5
              , f = .9996 * (o + e * Math.tan(d) * (r * r / 2 + (5 - n + 9 * i + 4 * i * i) * r * r * r * r / 24 + (61 - 58 * n + n * n + 600 * i - 2.2240339282485886) * r * r * r * r * r * r / 720));
            c < 0 && (f += 1e7);
            return {
                northing: Math.round(f),
                easting: Math.round(h),
                zoneNumber: s,
                zoneLetter: mt(c)
            }
        }({
            lat: t[1],
            lon: t[0]
        }), e)
    }
    function dt(t) {
        var e = ft(vt(t.toUpperCase()));
        return e.lat && e.lon ? [e.lon, e.lat] : [(e.left + e.right) / 2, (e.top + e.bottom) / 2]
    }
    function pt(t) {
        return t * (Math.PI / 180)
    }
    function ht(t) {
        return t / Math.PI * 180
    }
    function ft(t) {
        var e = t.northing
          , n = t.easting
          , i = t.zoneLetter
          , r = t.zoneNumber;
        if (r < 0 || r > 60)
            return null;
        var o, a, s, c, l, u, d, p, h = 6378137, f = (1 - Math.sqrt(.99330562)) / (1 + Math.sqrt(.99330562)), m = n - 5e5, g = e;
        i < "N" && (g -= 1e7),
        u = 6 * (r - 1) - 180 + 3,
        p = (d = g / .9996 / 6367449.145945056) + (3 * f / 2 - 27 * f * f * f / 32) * Math.sin(2 * d) + (21 * f * f / 16 - 55 * f * f * f * f / 32) * Math.sin(4 * d) + 151 * f * f * f / 96 * Math.sin(6 * d),
        o = h / Math.sqrt(1 - .00669438 * Math.sin(p) * Math.sin(p)),
        a = Math.tan(p) * Math.tan(p),
        s = .006739496752268451 * Math.cos(p) * Math.cos(p),
        c = .99330562 * h / Math.pow(1 - .00669438 * Math.sin(p) * Math.sin(p), 1.5),
        l = m / (.9996 * o);
        var v = p - o * Math.tan(p) / c * (l * l / 2 - (5 + 3 * a + 10 * s - 4 * s * s - .06065547077041606) * l * l * l * l / 24 + (61 + 90 * a + 298 * s + 45 * a * a - 1.6983531815716497 - 3 * s * s) * l * l * l * l * l * l / 720);
        v = ht(v);
        var y, b = (l - (1 + 2 * a + s) * l * l * l / 6 + (5 - 2 * s + 28 * a - 3 * s * s + .05391597401814761 + 24 * a * a) * l * l * l * l * l / 120) / Math.cos(p);
        if (b = u + ht(b),
        t.accuracy) {
            var w = ft({
                northing: t.northing + t.accuracy,
                easting: t.easting + t.accuracy,
                zoneLetter: t.zoneLetter,
                zoneNumber: t.zoneNumber
            });
            y = {
                top: w.lat,
                right: w.lon,
                bottom: v,
                left: b
            }
        } else
            y = {
                lat: v,
                lon: b
            };
        return y
    }
    function mt(t) {
        var e = "Z";
        return 84 >= t && t >= 72 ? e = "X" : 72 > t && t >= 64 ? e = "W" : 64 > t && t >= 56 ? e = "V" : 56 > t && t >= 48 ? e = "U" : 48 > t && t >= 40 ? e = "T" : 40 > t && t >= 32 ? e = "S" : 32 > t && t >= 24 ? e = "R" : 24 > t && t >= 16 ? e = "Q" : 16 > t && t >= 8 ? e = "P" : 8 > t && t >= 0 ? e = "N" : 0 > t && t >= -8 ? e = "M" : -8 > t && t >= -16 ? e = "L" : -16 > t && t >= -24 ? e = "K" : -24 > t && t >= -32 ? e = "J" : -32 > t && t >= -40 ? e = "H" : -40 > t && t >= -48 ? e = "G" : -48 > t && t >= -56 ? e = "F" : -56 > t && t >= -64 ? e = "E" : -64 > t && t >= -72 ? e = "D" : -72 > t && t >= -80 && (e = "C"),
        e
    }
    function gt(t) {
        var e = t % 6;
        return 0 === e && (e = 6),
        e
    }
    function vt(t) {
        if (t && 0 === t.length)
            throw "MGRSPoint coverting from nothing";
        for (var e, n = t.length, i = null, r = "", o = 0; !/[A-Z]/.test(e = t.charAt(o)); ) {
            if (o >= 2)
                throw "MGRSPoint bad conversion from: " + t;
            r += e,
            o++
        }
        var a = parseInt(r, 10);
        if (0 === o || o + 3 > n)
            throw "MGRSPoint bad conversion from: " + t;
        var s = t.charAt(o++);
        if (s <= "A" || "B" === s || "Y" === s || s >= "Z" || "I" === s || "O" === s)
            throw "MGRSPoint zone letter " + s + " not handled: " + t;
        i = t.substring(o, o += 2);
        for (var c = gt(a), l = function(t, e) {
            var n = "AJSAJS".charCodeAt(e - 1)
              , i = 1e5
              , r = !1;
            for (; n !== t.charCodeAt(0); ) {
                if (++n === st && n++,
                n === ct && n++,
                n > 90) {
                    if (r)
                        throw "Bad character: " + t;
                    n = 65,
                    r = !0
                }
                i += 1e5
            }
            return i
        }(i.charAt(0), c), u = function(t, e) {
            if (t > "V")
                throw "MGRSPoint given invalid Northing " + t;
            var n = "AFAFAF".charCodeAt(e - 1)
              , i = 0
              , r = !1;
            for (; n !== t.charCodeAt(0); ) {
                if (++n === st && n++,
                n === ct && n++,
                n > 86) {
                    if (r)
                        throw "Bad character: " + t;
                    n = 65,
                    r = !0
                }
                i += 1e5
            }
            return i
        }(i.charAt(1), c); u < yt(s); )
            u += 2e6;
        var d = n - o;
        if (d % 2 != 0)
            throw "MGRSPoint has to have an even number \nof digits after the zone letter and two 100km letters - front \nhalf for easting meters, second half for \nnorthing meters" + t;
        var p, h, f, m = d / 2, g = 0, v = 0;
        return m > 0 && (p = 1e5 / Math.pow(10, m),
        h = t.substring(o, o + m),
        g = parseFloat(h) * p,
        f = t.substring(o + m),
        v = parseFloat(f) * p),
        {
            easting: g + l,
            northing: v + u,
            zoneLetter: s,
            zoneNumber: a,
            accuracy: p
        }
    }
    function yt(t) {
        var e;
        switch (t) {
        case "C":
            e = 11e5;
            break;
        case "D":
            e = 2e6;
            break;
        case "E":
            e = 28e5;
            break;
        case "F":
            e = 37e5;
            break;
        case "G":
            e = 46e5;
            break;
        case "H":
            e = 55e5;
            break;
        case "J":
            e = 64e5;
            break;
        case "K":
            e = 73e5;
            break;
        case "L":
            e = 82e5;
            break;
        case "M":
            e = 91e5;
            break;
        case "N":
            e = 0;
            break;
        case "P":
            e = 8e5;
            break;
        case "Q":
            e = 17e5;
            break;
        case "R":
            e = 26e5;
            break;
        case "S":
            e = 35e5;
            break;
        case "T":
            e = 44e5;
            break;
        case "U":
            e = 53e5;
            break;
        case "V":
            e = 62e5;
            break;
        case "W":
            e = 7e6;
            break;
        case "X":
            e = 79e5;
            break;
        default:
            e = -1
        }
        if (e >= 0)
            return e;
        throw "Invalid zone letter: " + t
    }
    function bt(t, e, n) {
        if (!(this instanceof bt))
            return new bt(t,e,n);
        if (Array.isArray(t))
            this.x = t[0],
            this.y = t[1],
            this.z = t[2] || 0;
        else if ("object" == typeof t)
            this.x = t.x,
            this.y = t.y,
            this.z = t.z || 0;
        else if ("string" == typeof t && void 0 === e) {
            var i = t.split(",");
            this.x = parseFloat(i[0], 10),
            this.y = parseFloat(i[1], 10),
            this.z = parseFloat(i[2], 10) || 0
        } else
            this.x = t,
            this.y = e,
            this.z = n || 0;
        console.warn("proj4.Point will be removed in version 3, use proj4.toPoint")
    }
    bt.fromMGRS = function(t) {
        return new bt(dt(t))
    }
    ,
    bt.prototype.toMGRS = function(t) {
        return ut([this.x, this.y], t)
    }
    ;
    var wt = bt
      , St = .01068115234375
      , xt = function(t) {
        var e = [];
        e[0] = 1 - t * (.25 + t * (.046875 + t * (.01953125 + t * St))),
        e[1] = t * (.75 - t * (.046875 + t * (.01953125 + t * St)));
        var n = t * t;
        return e[2] = n * (.46875 - t * (.013020833333333334 + .007120768229166667 * t)),
        n *= t,
        e[3] = n * (.3645833333333333 - .005696614583333333 * t),
        e[4] = n * t * .3076171875,
        e
    }
      , Mt = function(t, e, n, i) {
        return n *= e,
        e *= e,
        i[0] * t - n * (i[1] + e * (i[2] + e * (i[3] + e * i[4])))
    }
      , Et = function(t, e, n) {
        for (var i = 1 / (1 - e), r = t, o = 20; o; --o) {
            var a = Math.sin(r)
              , s = 1 - e * a * a;
            if (r -= s = (Mt(r, a, Math.cos(r), n) - t) * (s * Math.sqrt(s)) * i,
            Math.abs(s) < 1e-10)
                return r
        }
        return r
    };
    var Ct = {
        init: function() {
            this.x0 = void 0 !== this.x0 ? this.x0 : 0,
            this.y0 = void 0 !== this.y0 ? this.y0 : 0,
            this.long0 = void 0 !== this.long0 ? this.long0 : 0,
            this.lat0 = void 0 !== this.lat0 ? this.lat0 : 0,
            this.es && (this.en = xt(this.es),
            this.ml0 = Mt(this.lat0, Math.sin(this.lat0), Math.cos(this.lat0), this.en))
        },
        forward: function(t) {
            var e, n, i, r = t.x, o = t.y, a = R(r - this.long0), s = Math.sin(o), c = Math.cos(o);
            if (this.es) {
                var l = c * a
                  , u = Math.pow(l, 2)
                  , d = this.ep2 * Math.pow(c, 2)
                  , p = Math.pow(d, 2)
                  , h = Math.abs(c) > 1e-10 ? Math.tan(o) : 0
                  , f = Math.pow(h, 2)
                  , m = Math.pow(f, 2);
                e = 1 - this.es * Math.pow(s, 2),
                l /= Math.sqrt(e);
                var g = Mt(o, s, c, this.en);
                n = this.a * (this.k0 * l * (1 + u / 6 * (1 - f + d + u / 20 * (5 - 18 * f + m + 14 * d - 58 * f * d + u / 42 * (61 + 179 * m - m * f - 479 * f))))) + this.x0,
                i = this.a * (this.k0 * (g - this.ml0 + s * a * l / 2 * (1 + u / 12 * (5 - f + 9 * d + 4 * p + u / 30 * (61 + m - 58 * f + 270 * d - 330 * f * d + u / 56 * (1385 + 543 * m - m * f - 3111 * f)))))) + this.y0
            } else {
                var v = c * Math.sin(a);
                if (Math.abs(Math.abs(v) - 1) < 1e-10)
                    return 93;
                if (n = .5 * this.a * this.k0 * Math.log((1 + v) / (1 - v)) + this.x0,
                i = c * Math.cos(a) / Math.sqrt(1 - Math.pow(v, 2)),
                (v = Math.abs(i)) >= 1) {
                    if (v - 1 > 1e-10)
                        return 93;
                    i = 0
                } else
                    i = Math.acos(i);
                o < 0 && (i = -i),
                i = this.a * this.k0 * (i - this.lat0) + this.y0
            }
            return t.x = n,
            t.y = i,
            t
        },
        inverse: function(t) {
            var e, n, i, o, a = (t.x - this.x0) * (1 / this.a), s = (t.y - this.y0) * (1 / this.a);
            if (this.es)
                if (e = this.ml0 + s / this.k0,
                n = Et(e, this.es, this.en),
                Math.abs(n) < r) {
                    var c = Math.sin(n)
                      , l = Math.cos(n)
                      , u = Math.abs(l) > 1e-10 ? Math.tan(n) : 0
                      , d = this.ep2 * Math.pow(l, 2)
                      , p = Math.pow(d, 2)
                      , h = Math.pow(u, 2)
                      , f = Math.pow(h, 2);
                    e = 1 - this.es * Math.pow(c, 2);
                    var m = a * Math.sqrt(e) / this.k0
                      , g = Math.pow(m, 2);
                    i = n - (e *= u) * g / (1 - this.es) * .5 * (1 - g / 12 * (5 + 3 * h - 9 * d * h + d - 4 * p - g / 30 * (61 + 90 * h - 252 * d * h + 45 * f + 46 * d - g / 56 * (1385 + 3633 * h + 4095 * f + 1574 * f * h)))),
                    o = R(this.long0 + m * (1 - g / 6 * (1 + 2 * h + d - g / 20 * (5 + 28 * h + 24 * f + 8 * d * h + 6 * d - g / 42 * (61 + 662 * h + 1320 * f + 720 * f * h)))) / l)
                } else
                    i = r * D(s),
                    o = 0;
            else {
                var v = Math.exp(a / this.k0)
                  , y = .5 * (v - 1 / v)
                  , b = this.lat0 + s / this.k0
                  , w = Math.cos(b);
                e = Math.sqrt((1 - Math.pow(w, 2)) / (1 + Math.pow(y, 2))),
                i = Math.asin(e),
                s < 0 && (i = -i),
                o = 0 === y && 0 === w ? 0 : R(Math.atan2(y, w) + this.long0)
            }
            return t.x = o,
            t.y = i,
            t
        },
        names: ["Transverse_Mercator", "Transverse Mercator", "tmerc"]
    }
      , At = function(t) {
        var e = Math.exp(t);
        return e = (e - 1 / e) / 2
    }
      , Tt = function(t, e) {
        t = Math.abs(t),
        e = Math.abs(e);
        var n = Math.max(t, e)
          , i = Math.min(t, e) / (n || 1);
        return n * Math.sqrt(1 + Math.pow(i, 2))
    }
      , Ot = function(t) {
        var e = Math.abs(t);
        return e = function(t) {
            var e = 1 + t
              , n = e - 1;
            return 0 === n ? t : t * Math.log(e) / n
        }(e * (1 + e / (Tt(1, e) + 1))),
        t < 0 ? -e : e
    }
      , _t = function(t, e) {
        for (var n, i = 2 * Math.cos(2 * e), r = t.length - 1, o = t[r], a = 0; --r >= 0; )
            n = i * o - a + t[r],
            a = o,
            o = n;
        return e + n * Math.sin(2 * e)
    }
      , Pt = function(t, e, n) {
        for (var i, r, o = Math.sin(e), a = Math.cos(e), s = At(n), c = function(t) {
            var e = Math.exp(t);
            return e = (e + 1 / e) / 2
        }(n), l = 2 * a * c, u = -2 * o * s, d = t.length - 1, p = t[d], h = 0, f = 0, m = 0; --d >= 0; )
            i = f,
            r = h,
            p = l * (f = p) - i - u * (h = m) + t[d],
            m = u * f - r + l * h;
        return [(l = o * c) * p - (u = a * s) * m, l * m + u * p]
    };
    var It = {
        init: function() {
            if (void 0 === this.es || this.es <= 0)
                throw new Error("incorrect elliptical usage");
            this.x0 = void 0 !== this.x0 ? this.x0 : 0,
            this.y0 = void 0 !== this.y0 ? this.y0 : 0,
            this.long0 = void 0 !== this.long0 ? this.long0 : 0,
            this.lat0 = void 0 !== this.lat0 ? this.lat0 : 0,
            this.cgb = [],
            this.cbg = [],
            this.utg = [],
            this.gtu = [];
            var t = this.es / (1 + Math.sqrt(1 - this.es))
              , e = t / (2 - t)
              , n = e;
            this.cgb[0] = e * (2 + e * (-2 / 3 + e * (e * (116 / 45 + e * (26 / 45 + e * (-2854 / 675))) - 2))),
            this.cbg[0] = e * (e * (2 / 3 + e * (4 / 3 + e * (-82 / 45 + e * (32 / 45 + e * (4642 / 4725))))) - 2),
            n *= e,
            this.cgb[1] = n * (7 / 3 + e * (e * (-227 / 45 + e * (2704 / 315 + e * (2323 / 945))) - 1.6)),
            this.cbg[1] = n * (5 / 3 + e * (-16 / 15 + e * (-13 / 9 + e * (904 / 315 + e * (-1522 / 945))))),
            n *= e,
            this.cgb[2] = n * (56 / 15 + e * (-136 / 35 + e * (-1262 / 105 + e * (73814 / 2835)))),
            this.cbg[2] = n * (-26 / 15 + e * (34 / 21 + e * (1.6 + e * (-12686 / 2835)))),
            n *= e,
            this.cgb[3] = n * (4279 / 630 + e * (-332 / 35 + e * (-399572 / 14175))),
            this.cbg[3] = n * (1237 / 630 + e * (e * (-24832 / 14175) - 2.4)),
            n *= e,
            this.cgb[4] = n * (4174 / 315 + e * (-144838 / 6237)),
            this.cbg[4] = n * (-734 / 315 + e * (109598 / 31185)),
            n *= e,
            this.cgb[5] = n * (601676 / 22275),
            this.cbg[5] = n * (444337 / 155925),
            n = Math.pow(e, 2),
            this.Qn = this.k0 / (1 + e) * (1 + n * (1 / 4 + n * (1 / 64 + n / 256))),
            this.utg[0] = e * (e * (2 / 3 + e * (-37 / 96 + e * (1 / 360 + e * (81 / 512 + e * (-96199 / 604800))))) - .5),
            this.gtu[0] = e * (.5 + e * (-2 / 3 + e * (5 / 16 + e * (41 / 180 + e * (-127 / 288 + e * (7891 / 37800)))))),
            this.utg[1] = n * (-1 / 48 + e * (-1 / 15 + e * (437 / 1440 + e * (-46 / 105 + e * (1118711 / 3870720))))),
            this.gtu[1] = n * (13 / 48 + e * (e * (557 / 1440 + e * (281 / 630 + e * (-1983433 / 1935360))) - .6)),
            n *= e,
            this.utg[2] = n * (-17 / 480 + e * (37 / 840 + e * (209 / 4480 + e * (-5569 / 90720)))),
            this.gtu[2] = n * (61 / 240 + e * (-103 / 140 + e * (15061 / 26880 + e * (167603 / 181440)))),
            n *= e,
            this.utg[3] = n * (-4397 / 161280 + e * (11 / 504 + e * (830251 / 7257600))),
            this.gtu[3] = n * (49561 / 161280 + e * (-179 / 168 + e * (6601661 / 7257600))),
            n *= e,
            this.utg[4] = n * (-4583 / 161280 + e * (108847 / 3991680)),
            this.gtu[4] = n * (34729 / 80640 + e * (-3418889 / 1995840)),
            n *= e,
            this.utg[5] = n * (-20648693 / 638668800),
            this.gtu[5] = .6650675310896665 * n;
            var i = _t(this.cbg, this.lat0);
            this.Zb = -this.Qn * (i + function(t, e) {
                for (var n, i = 2 * Math.cos(e), r = t.length - 1, o = t[r], a = 0; --r >= 0; )
                    n = i * o - a + t[r],
                    a = o,
                    o = n;
                return Math.sin(e) * n
            }(this.gtu, 2 * i))
        },
        forward: function(t) {
            var e = R(t.x - this.long0)
              , n = t.y;
            n = _t(this.cbg, n);
            var i = Math.sin(n)
              , r = Math.cos(n)
              , o = Math.sin(e)
              , a = Math.cos(e);
            n = Math.atan2(i, a * r),
            e = Math.atan2(o * r, Tt(i, r * a)),
            e = Ot(Math.tan(e));
            var s, c, l = Pt(this.gtu, 2 * n, 2 * e);
            return n += l[0],
            e += l[1],
            Math.abs(e) <= 2.623395162778 ? (s = this.a * (this.Qn * e) + this.x0,
            c = this.a * (this.Qn * n + this.Zb) + this.y0) : (s = 1 / 0,
            c = 1 / 0),
            t.x = s,
            t.y = c,
            t
        },
        inverse: function(t) {
            var e, n, i = (t.x - this.x0) * (1 / this.a), r = (t.y - this.y0) * (1 / this.a);
            if (r = (r - this.Zb) / this.Qn,
            i /= this.Qn,
            Math.abs(i) <= 2.623395162778) {
                var o = Pt(this.utg, 2 * r, 2 * i);
                r += o[0],
                i += o[1],
                i = Math.atan(At(i));
                var a = Math.sin(r)
                  , s = Math.cos(r)
                  , c = Math.sin(i)
                  , l = Math.cos(i);
                r = Math.atan2(a * l, Tt(c, l * s)),
                i = Math.atan2(c, l * s),
                e = R(i + this.long0),
                n = _t(this.cgb, r)
            } else
                e = 1 / 0,
                n = 1 / 0;
            return t.x = e,
            t.y = n,
            t
        },
        names: ["Extended_Transverse_Mercator", "Extended Transverse Mercator", "etmerc"]
    };
    var kt = {
        init: function() {
            var t = function(t, e) {
                if (void 0 === t) {
                    if ((t = Math.floor(30 * (R(e) + Math.PI) / Math.PI) + 1) < 0)
                        return 0;
                    if (t > 60)
                        return 60
                }
                return t
            }(this.zone, this.long0);
            if (void 0 === t)
                throw new Error("unknown utm zone");
            this.lat0 = 0,
            this.long0 = (6 * Math.abs(t) - 183) * o,
            this.x0 = 5e5,
            this.y0 = this.utmSouth ? 1e7 : 0,
            this.k0 = .9996,
            It.init.apply(this),
            this.forward = It.forward,
            this.inverse = It.inverse
        },
        names: ["Universal Transverse Mercator System", "utm"],
        dependsOn: "etmerc"
    }
      , Dt = function(t, e) {
        return Math.pow((1 - t) / (1 + t), e)
    };
    var Rt = {
        init: function() {
            var t = Math.sin(this.lat0)
              , e = Math.cos(this.lat0);
            e *= e,
            this.rc = Math.sqrt(1 - this.es) / (1 - this.es * t * t),
            this.C = Math.sqrt(1 + this.es * e * e / (1 - this.es)),
            this.phic0 = Math.asin(t / this.C),
            this.ratexp = .5 * this.C * this.e,
            this.K = Math.tan(.5 * this.phic0 + s) / (Math.pow(Math.tan(.5 * this.lat0 + s), this.C) * Dt(this.e * t, this.ratexp))
        },
        forward: function(t) {
            var e = t.x
              , n = t.y;
            return t.y = 2 * Math.atan(this.K * Math.pow(Math.tan(.5 * n + s), this.C) * Dt(this.e * Math.sin(n), this.ratexp)) - r,
            t.x = this.C * e,
            t
        },
        inverse: function(t) {
            for (var e = t.x / this.C, n = t.y, i = Math.pow(Math.tan(.5 * n + s) / this.K, 1 / this.C), o = 20; o > 0 && (n = 2 * Math.atan(i * Dt(this.e * Math.sin(t.y), -.5 * this.e)) - r,
            !(Math.abs(n - t.y) < 1e-14)); --o)
                t.y = n;
            return o ? (t.x = e,
            t.y = n,
            t) : null
        },
        names: ["gauss"]
    };
    var Lt = {
        init: function() {
            Rt.init.apply(this),
            this.rc && (this.sinc0 = Math.sin(this.phic0),
            this.cosc0 = Math.cos(this.phic0),
            this.R2 = 2 * this.rc,
            this.title || (this.title = "Oblique Stereographic Alternative"))
        },
        forward: function(t) {
            var e, n, i, r;
            return t.x = R(t.x - this.long0),
            Rt.forward.apply(this, [t]),
            e = Math.sin(t.y),
            n = Math.cos(t.y),
            i = Math.cos(t.x),
            r = this.k0 * this.R2 / (1 + this.sinc0 * e + this.cosc0 * n * i),
            t.x = r * n * Math.sin(t.x),
            t.y = r * (this.cosc0 * e - this.sinc0 * n * i),
            t.x = this.a * t.x + this.x0,
            t.y = this.a * t.y + this.y0,
            t
        },
        inverse: function(t) {
            var e, n, i, r, o;
            if (t.x = (t.x - this.x0) / this.a,
            t.y = (t.y - this.y0) / this.a,
            t.x /= this.k0,
            t.y /= this.k0,
            o = Math.sqrt(t.x * t.x + t.y * t.y)) {
                var a = 2 * Math.atan2(o, this.R2);
                e = Math.sin(a),
                n = Math.cos(a),
                r = Math.asin(n * this.sinc0 + t.y * e * this.cosc0 / o),
                i = Math.atan2(t.x * e, o * this.cosc0 * n - t.y * this.sinc0 * e)
            } else
                r = this.phic0,
                i = 0;
            return t.x = i,
            t.y = r,
            Rt.inverse.apply(this, [t]),
            t.x = R(t.x + this.long0),
            t
        },
        names: ["Stereographic_North_Pole", "Oblique_Stereographic", "Polar_Stereographic", "sterea", "Oblique Stereographic Alternative", "Double_Stereographic"]
    };
    var Nt = {
        init: function() {
            this.coslat0 = Math.cos(this.lat0),
            this.sinlat0 = Math.sin(this.lat0),
            this.sphere ? 1 === this.k0 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= 1e-10 && (this.k0 = .5 * (1 + D(this.lat0) * Math.sin(this.lat_ts))) : (Math.abs(this.coslat0) <= 1e-10 && (this.lat0 > 0 ? this.con = 1 : this.con = -1),
            this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e)),
            1 === this.k0 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= 1e-10 && (this.k0 = .5 * this.cons * k(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / L(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts))),
            this.ms1 = k(this.e, this.sinlat0, this.coslat0),
            this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - r,
            this.cosX0 = Math.cos(this.X0),
            this.sinX0 = Math.sin(this.X0))
        },
        forward: function(t) {
            var e, n, i, o, a, s, c = t.x, l = t.y, u = Math.sin(l), d = Math.cos(l), p = R(c - this.long0);
            return Math.abs(Math.abs(c - this.long0) - Math.PI) <= 1e-10 && Math.abs(l + this.lat0) <= 1e-10 ? (t.x = NaN,
            t.y = NaN,
            t) : this.sphere ? (e = 2 * this.k0 / (1 + this.sinlat0 * u + this.coslat0 * d * Math.cos(p)),
            t.x = this.a * e * d * Math.sin(p) + this.x0,
            t.y = this.a * e * (this.coslat0 * u - this.sinlat0 * d * Math.cos(p)) + this.y0,
            t) : (n = 2 * Math.atan(this.ssfn_(l, u, this.e)) - r,
            o = Math.cos(n),
            i = Math.sin(n),
            Math.abs(this.coslat0) <= 1e-10 ? (a = L(this.e, l * this.con, this.con * u),
            s = 2 * this.a * this.k0 * a / this.cons,
            t.x = this.x0 + s * Math.sin(c - this.long0),
            t.y = this.y0 - this.con * s * Math.cos(c - this.long0),
            t) : (Math.abs(this.sinlat0) < 1e-10 ? (e = 2 * this.a * this.k0 / (1 + o * Math.cos(p)),
            t.y = e * i) : (e = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * i + this.cosX0 * o * Math.cos(p))),
            t.y = e * (this.cosX0 * i - this.sinX0 * o * Math.cos(p)) + this.y0),
            t.x = e * o * Math.sin(p) + this.x0,
            t))
        },
        inverse: function(t) {
            var e, n, i, o, a;
            t.x -= this.x0,
            t.y -= this.y0;
            var s = Math.sqrt(t.x * t.x + t.y * t.y);
            if (this.sphere) {
                var c = 2 * Math.atan(s / (2 * this.a * this.k0));
                return e = this.long0,
                n = this.lat0,
                s <= 1e-10 ? (t.x = e,
                t.y = n,
                t) : (n = Math.asin(Math.cos(c) * this.sinlat0 + t.y * Math.sin(c) * this.coslat0 / s),
                e = Math.abs(this.coslat0) < 1e-10 ? this.lat0 > 0 ? R(this.long0 + Math.atan2(t.x, -1 * t.y)) : R(this.long0 + Math.atan2(t.x, t.y)) : R(this.long0 + Math.atan2(t.x * Math.sin(c), s * this.coslat0 * Math.cos(c) - t.y * this.sinlat0 * Math.sin(c))),
                t.x = e,
                t.y = n,
                t)
            }
            if (Math.abs(this.coslat0) <= 1e-10) {
                if (s <= 1e-10)
                    return n = this.lat0,
                    e = this.long0,
                    t.x = e,
                    t.y = n,
                    t;
                t.x *= this.con,
                t.y *= this.con,
                i = s * this.cons / (2 * this.a * this.k0),
                n = this.con * N(this.e, i),
                e = this.con * R(this.con * this.long0 + Math.atan2(t.x, -1 * t.y))
            } else
                o = 2 * Math.atan(s * this.cosX0 / (2 * this.a * this.k0 * this.ms1)),
                e = this.long0,
                s <= 1e-10 ? a = this.X0 : (a = Math.asin(Math.cos(o) * this.sinX0 + t.y * Math.sin(o) * this.cosX0 / s),
                e = R(this.long0 + Math.atan2(t.x * Math.sin(o), s * this.cosX0 * Math.cos(o) - t.y * this.sinX0 * Math.sin(o)))),
                n = -1 * N(this.e, Math.tan(.5 * (r + a)));
            return t.x = e,
            t.y = n,
            t
        },
        names: ["stere", "Stereographic_South_Pole", "Polar Stereographic (variant B)"],
        ssfn_: function(t, e, n) {
            return e *= n,
            Math.tan(.5 * (r + t)) * Math.pow((1 - e) / (1 + e), .5 * n)
        }
    };
    var jt = {
        init: function() {
            var t = this.lat0;
            this.lambda0 = this.long0;
            var e = Math.sin(t)
              , n = this.a
              , i = 1 / this.rf
              , r = 2 * i - Math.pow(i, 2)
              , o = this.e = Math.sqrt(r);
            this.R = this.k0 * n * Math.sqrt(1 - r) / (1 - r * Math.pow(e, 2)),
            this.alpha = Math.sqrt(1 + r / (1 - r) * Math.pow(Math.cos(t), 4)),
            this.b0 = Math.asin(e / this.alpha);
            var a = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2))
              , s = Math.log(Math.tan(Math.PI / 4 + t / 2))
              , c = Math.log((1 + o * e) / (1 - o * e));
            this.K = a - this.alpha * s + this.alpha * o / 2 * c
        },
        forward: function(t) {
            var e = Math.log(Math.tan(Math.PI / 4 - t.y / 2))
              , n = this.e / 2 * Math.log((1 + this.e * Math.sin(t.y)) / (1 - this.e * Math.sin(t.y)))
              , i = -this.alpha * (e + n) + this.K
              , r = 2 * (Math.atan(Math.exp(i)) - Math.PI / 4)
              , o = this.alpha * (t.x - this.lambda0)
              , a = Math.atan(Math.sin(o) / (Math.sin(this.b0) * Math.tan(r) + Math.cos(this.b0) * Math.cos(o)))
              , s = Math.asin(Math.cos(this.b0) * Math.sin(r) - Math.sin(this.b0) * Math.cos(r) * Math.cos(o));
            return t.y = this.R / 2 * Math.log((1 + Math.sin(s)) / (1 - Math.sin(s))) + this.y0,
            t.x = this.R * a + this.x0,
            t
        },
        inverse: function(t) {
            for (var e = t.x - this.x0, n = t.y - this.y0, i = e / this.R, r = 2 * (Math.atan(Math.exp(n / this.R)) - Math.PI / 4), o = Math.asin(Math.cos(this.b0) * Math.sin(r) + Math.sin(this.b0) * Math.cos(r) * Math.cos(i)), a = Math.atan(Math.sin(i) / (Math.cos(this.b0) * Math.cos(i) - Math.sin(this.b0) * Math.tan(r))), s = this.lambda0 + a / this.alpha, c = 0, l = o, u = -1e3, d = 0; Math.abs(l - u) > 1e-7; ) {
                if (++d > 20)
                    return;
                c = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + o / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(l)) / 2)),
                u = l,
                l = 2 * Math.atan(Math.exp(c)) - Math.PI / 2
            }
            return t.x = s,
            t.y = l,
            t
        },
        names: ["somerc"]
    };
    var Vt = {
        init: function() {
            this.no_off = this.no_off || !1,
            this.no_rot = this.no_rot || !1,
            isNaN(this.k0) && (this.k0 = 1);
            var t = Math.sin(this.lat0)
              , e = Math.cos(this.lat0)
              , n = this.e * t;
            this.bl = Math.sqrt(1 + this.es / (1 - this.es) * Math.pow(e, 4)),
            this.al = this.a * this.bl * this.k0 * Math.sqrt(1 - this.es) / (1 - n * n);
            var i, r, o = L(this.e, this.lat0, t), a = this.bl / e * Math.sqrt((1 - this.es) / (1 - n * n));
            if (a * a < 1 && (a = 1),
            isNaN(this.longc)) {
                var s = L(this.e, this.lat1, Math.sin(this.lat1))
                  , c = L(this.e, this.lat2, Math.sin(this.lat2));
                this.lat0 >= 0 ? this.el = (a + Math.sqrt(a * a - 1)) * Math.pow(o, this.bl) : this.el = (a - Math.sqrt(a * a - 1)) * Math.pow(o, this.bl);
                var l = Math.pow(s, this.bl)
                  , u = Math.pow(c, this.bl);
                r = .5 * ((i = this.el / l) - 1 / i);
                var d = (this.el * this.el - u * l) / (this.el * this.el + u * l)
                  , p = (u - l) / (u + l)
                  , h = R(this.long1 - this.long2);
                this.long0 = .5 * (this.long1 + this.long2) - Math.atan(d * Math.tan(.5 * this.bl * h) / p) / this.bl,
                this.long0 = R(this.long0);
                var f = R(this.long1 - this.long0);
                this.gamma0 = Math.atan(Math.sin(this.bl * f) / r),
                this.alpha = Math.asin(a * Math.sin(this.gamma0))
            } else
                i = this.lat0 >= 0 ? a + Math.sqrt(a * a - 1) : a - Math.sqrt(a * a - 1),
                this.el = i * Math.pow(o, this.bl),
                r = .5 * (i - 1 / i),
                this.gamma0 = Math.asin(Math.sin(this.alpha) / a),
                this.long0 = this.longc - Math.asin(r * Math.tan(this.gamma0)) / this.bl;
            this.no_off ? this.uc = 0 : this.lat0 >= 0 ? this.uc = this.al / this.bl * Math.atan2(Math.sqrt(a * a - 1), Math.cos(this.alpha)) : this.uc = -1 * this.al / this.bl * Math.atan2(Math.sqrt(a * a - 1), Math.cos(this.alpha))
        },
        forward: function(t) {
            var e, n, i, o = t.x, a = t.y, c = R(o - this.long0);
            if (Math.abs(Math.abs(a) - r) <= 1e-10)
                i = a > 0 ? -1 : 1,
                n = this.al / this.bl * Math.log(Math.tan(s + i * this.gamma0 * .5)),
                e = -1 * i * r * this.al / this.bl;
            else {
                var l = L(this.e, a, Math.sin(a))
                  , u = this.el / Math.pow(l, this.bl)
                  , d = .5 * (u - 1 / u)
                  , p = .5 * (u + 1 / u)
                  , h = Math.sin(this.bl * c)
                  , f = (d * Math.sin(this.gamma0) - h * Math.cos(this.gamma0)) / p;
                n = Math.abs(Math.abs(f) - 1) <= 1e-10 ? Number.POSITIVE_INFINITY : .5 * this.al * Math.log((1 - f) / (1 + f)) / this.bl,
                e = Math.abs(Math.cos(this.bl * c)) <= 1e-10 ? this.al * this.bl * c : this.al * Math.atan2(d * Math.cos(this.gamma0) + h * Math.sin(this.gamma0), Math.cos(this.bl * c)) / this.bl
            }
            return this.no_rot ? (t.x = this.x0 + e,
            t.y = this.y0 + n) : (e -= this.uc,
            t.x = this.x0 + n * Math.cos(this.alpha) + e * Math.sin(this.alpha),
            t.y = this.y0 + e * Math.cos(this.alpha) - n * Math.sin(this.alpha)),
            t
        },
        inverse: function(t) {
            var e, n;
            this.no_rot ? (n = t.y - this.y0,
            e = t.x - this.x0) : (n = (t.x - this.x0) * Math.cos(this.alpha) - (t.y - this.y0) * Math.sin(this.alpha),
            e = (t.y - this.y0) * Math.cos(this.alpha) + (t.x - this.x0) * Math.sin(this.alpha),
            e += this.uc);
            var i = Math.exp(-1 * this.bl * n / this.al)
              , o = .5 * (i - 1 / i)
              , a = .5 * (i + 1 / i)
              , s = Math.sin(this.bl * e / this.al)
              , c = (s * Math.cos(this.gamma0) + o * Math.sin(this.gamma0)) / a
              , l = Math.pow(this.el / Math.sqrt((1 + c) / (1 - c)), 1 / this.bl);
            return Math.abs(c - 1) < 1e-10 ? (t.x = this.long0,
            t.y = r) : Math.abs(c + 1) < 1e-10 ? (t.x = this.long0,
            t.y = -1 * r) : (t.y = N(this.e, l),
            t.x = R(this.long0 - Math.atan2(o * Math.cos(this.gamma0) - s * Math.sin(this.gamma0), Math.cos(this.bl * e / this.al)) / this.bl)),
            t
        },
        names: ["Hotine_Oblique_Mercator", "Hotine Oblique Mercator", "Hotine_Oblique_Mercator_Azimuth_Natural_Origin", "Hotine_Oblique_Mercator_Azimuth_Center", "omerc"]
    };
    var Ft = {
        init: function() {
            if (this.lat2 || (this.lat2 = this.lat1),
            this.k0 || (this.k0 = 1),
            this.x0 = this.x0 || 0,
            this.y0 = this.y0 || 0,
            !(Math.abs(this.lat1 + this.lat2) < 1e-10)) {
                var t = this.b / this.a;
                this.e = Math.sqrt(1 - t * t);
                var e = Math.sin(this.lat1)
                  , n = Math.cos(this.lat1)
                  , i = k(this.e, e, n)
                  , r = L(this.e, this.lat1, e)
                  , o = Math.sin(this.lat2)
                  , a = Math.cos(this.lat2)
                  , s = k(this.e, o, a)
                  , c = L(this.e, this.lat2, o)
                  , l = L(this.e, this.lat0, Math.sin(this.lat0));
                Math.abs(this.lat1 - this.lat2) > 1e-10 ? this.ns = Math.log(i / s) / Math.log(r / c) : this.ns = e,
                isNaN(this.ns) && (this.ns = e),
                this.f0 = i / (this.ns * Math.pow(r, this.ns)),
                this.rh = this.a * this.f0 * Math.pow(l, this.ns),
                this.title || (this.title = "Lambert Conformal Conic")
            }
        },
        forward: function(t) {
            var e = t.x
              , n = t.y;
            Math.abs(2 * Math.abs(n) - Math.PI) <= 1e-10 && (n = D(n) * (r - 2e-10));
            var i, o, a = Math.abs(Math.abs(n) - r);
            if (a > 1e-10)
                i = L(this.e, n, Math.sin(n)),
                o = this.a * this.f0 * Math.pow(i, this.ns);
            else {
                if ((a = n * this.ns) <= 0)
                    return null;
                o = 0
            }
            var s = this.ns * R(e - this.long0);
            return t.x = this.k0 * (o * Math.sin(s)) + this.x0,
            t.y = this.k0 * (this.rh - o * Math.cos(s)) + this.y0,
            t
        },
        inverse: function(t) {
            var e, n, i, o, a, s = (t.x - this.x0) / this.k0, c = this.rh - (t.y - this.y0) / this.k0;
            this.ns > 0 ? (e = Math.sqrt(s * s + c * c),
            n = 1) : (e = -Math.sqrt(s * s + c * c),
            n = -1);
            var l = 0;
            if (0 !== e && (l = Math.atan2(n * s, n * c)),
            0 !== e || this.ns > 0) {
                if (n = 1 / this.ns,
                i = Math.pow(e / (this.a * this.f0), n),
                -9999 === (o = N(this.e, i)))
                    return null
            } else
                o = -r;
            return a = R(l / this.ns + this.long0),
            t.x = a,
            t.y = o,
            t
        },
        names: ["Lambert Tangential Conformal Conic Projection", "Lambert_Conformal_Conic", "Lambert_Conformal_Conic_2SP", "lcc"]
    };
    var Ut = {
        init: function() {
            this.a = 6377397.155,
            this.es = .006674372230614,
            this.e = Math.sqrt(this.es),
            this.lat0 || (this.lat0 = .863937979737193),
            this.long0 || (this.long0 = .4334234309119251),
            this.k0 || (this.k0 = .9999),
            this.s45 = .785398163397448,
            this.s90 = 2 * this.s45,
            this.fi0 = this.lat0,
            this.e2 = this.es,
            this.e = Math.sqrt(this.e2),
            this.alfa = Math.sqrt(1 + this.e2 * Math.pow(Math.cos(this.fi0), 4) / (1 - this.e2)),
            this.uq = 1.04216856380474,
            this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa),
            this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2),
            this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g,
            this.k1 = this.k0,
            this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2)),
            this.s0 = 1.37008346281555,
            this.n = Math.sin(this.s0),
            this.ro0 = this.k1 * this.n0 / Math.tan(this.s0),
            this.ad = this.s90 - this.uq
        },
        forward: function(t) {
            var e, n, i, r, o, a, s, c = t.x, l = t.y, u = R(c - this.long0);
            return e = Math.pow((1 + this.e * Math.sin(l)) / (1 - this.e * Math.sin(l)), this.alfa * this.e / 2),
            n = 2 * (Math.atan(this.k * Math.pow(Math.tan(l / 2 + this.s45), this.alfa) / e) - this.s45),
            i = -u * this.alfa,
            r = Math.asin(Math.cos(this.ad) * Math.sin(n) + Math.sin(this.ad) * Math.cos(n) * Math.cos(i)),
            o = Math.asin(Math.cos(n) * Math.sin(i) / Math.cos(r)),
            a = this.n * o,
            s = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(r / 2 + this.s45), this.n),
            t.y = s * Math.cos(a) / 1,
            t.x = s * Math.sin(a) / 1,
            this.czech || (t.y *= -1,
            t.x *= -1),
            t
        },
        inverse: function(t) {
            var e, n, i, r, o, a, s, c = t.x;
            t.x = t.y,
            t.y = c,
            this.czech || (t.y *= -1,
            t.x *= -1),
            o = Math.sqrt(t.x * t.x + t.y * t.y),
            r = Math.atan2(t.y, t.x) / Math.sin(this.s0),
            i = 2 * (Math.atan(Math.pow(this.ro0 / o, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45),
            e = Math.asin(Math.cos(this.ad) * Math.sin(i) - Math.sin(this.ad) * Math.cos(i) * Math.cos(r)),
            n = Math.asin(Math.cos(i) * Math.sin(r) / Math.cos(e)),
            t.x = this.long0 - n / this.alfa,
            a = e,
            s = 0;
            var l = 0;
            do {
                t.y = 2 * (Math.atan(Math.pow(this.k, -1 / this.alfa) * Math.pow(Math.tan(e / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(a)) / (1 - this.e * Math.sin(a)), this.e / 2)) - this.s45),
                Math.abs(a - t.y) < 1e-10 && (s = 1),
                a = t.y,
                l += 1
            } while (0 === s && l < 15);
            return l >= 15 ? null : t
        },
        names: ["Krovak", "krovak"]
    }
      , Bt = function(t, e, n, i, r) {
        return t * r - e * Math.sin(2 * r) + n * Math.sin(4 * r) - i * Math.sin(6 * r)
    }
      , zt = function(t) {
        return 1 - .25 * t * (1 + t / 16 * (3 + 1.25 * t))
    }
      , Gt = function(t) {
        return .375 * t * (1 + .25 * t * (1 + .46875 * t))
    }
      , Ht = function(t) {
        return .05859375 * t * t * (1 + .75 * t)
    }
      , Wt = function(t) {
        return t * t * t * (35 / 3072)
    }
      , qt = function(t, e, n) {
        var i = e * n;
        return t / Math.sqrt(1 - i * i)
    }
      , Xt = function(t) {
        return Math.abs(t) < r ? t : t - D(t) * Math.PI
    }
      , Yt = function(t, e, n, i, r) {
        var o, a;
        o = t / e;
        for (var s = 0; s < 15; s++)
            if (o += a = (t - (e * o - n * Math.sin(2 * o) + i * Math.sin(4 * o) - r * Math.sin(6 * o))) / (e - 2 * n * Math.cos(2 * o) + 4 * i * Math.cos(4 * o) - 6 * r * Math.cos(6 * o)),
            Math.abs(a) <= 1e-10)
                return o;
        return NaN
    };
    var Kt = {
        init: function() {
            this.sphere || (this.e0 = zt(this.es),
            this.e1 = Gt(this.es),
            this.e2 = Ht(this.es),
            this.e3 = Wt(this.es),
            this.ml0 = this.a * Bt(this.e0, this.e1, this.e2, this.e3, this.lat0))
        },
        forward: function(t) {
            var e, n, i = t.x, r = t.y;
            if (i = R(i - this.long0),
            this.sphere)
                e = this.a * Math.asin(Math.cos(r) * Math.sin(i)),
                n = this.a * (Math.atan2(Math.tan(r), Math.cos(i)) - this.lat0);
            else {
                var o = Math.sin(r)
                  , a = Math.cos(r)
                  , s = qt(this.a, this.e, o)
                  , c = Math.tan(r) * Math.tan(r)
                  , l = i * Math.cos(r)
                  , u = l * l
                  , d = this.es * a * a / (1 - this.es);
                e = s * l * (1 - u * c * (1 / 6 - (8 - c + 8 * d) * u / 120)),
                n = this.a * Bt(this.e0, this.e1, this.e2, this.e3, r) - this.ml0 + s * o / a * u * (.5 + (5 - c + 6 * d) * u / 24)
            }
            return t.x = e + this.x0,
            t.y = n + this.y0,
            t
        },
        inverse: function(t) {
            t.x -= this.x0,
            t.y -= this.y0;
            var e, n, i = t.x / this.a, o = t.y / this.a;
            if (this.sphere) {
                var a = o + this.lat0;
                e = Math.asin(Math.sin(a) * Math.cos(i)),
                n = Math.atan2(Math.tan(i), Math.cos(a))
            } else {
                var s = this.ml0 / this.a + o
                  , c = Yt(s, this.e0, this.e1, this.e2, this.e3);
                if (Math.abs(Math.abs(c) - r) <= 1e-10)
                    return t.x = this.long0,
                    t.y = r,
                    o < 0 && (t.y *= -1),
                    t;
                var l = qt(this.a, this.e, Math.sin(c))
                  , u = l * l * l / this.a / this.a * (1 - this.es)
                  , d = Math.pow(Math.tan(c), 2)
                  , p = i * this.a / l
                  , h = p * p;
                e = c - l * Math.tan(c) / u * p * p * (.5 - (1 + 3 * d) * p * p / 24),
                n = p * (1 - h * (d / 3 + (1 + 3 * d) * d * h / 15)) / Math.cos(c)
            }
            return t.x = R(n + this.long0),
            t.y = Xt(e),
            t
        },
        names: ["Cassini", "Cassini_Soldner", "cass"]
    }
      , Zt = function(t, e) {
        var n;
        return t > 1e-7 ? (1 - t * t) * (e / (1 - (n = t * e) * n) - .5 / t * Math.log((1 - n) / (1 + n))) : 2 * e
    };
    var Jt = {
        init: function() {
            var t, e = Math.abs(this.lat0);
            if (Math.abs(e - r) < 1e-10 ? this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE : Math.abs(e) < 1e-10 ? this.mode = this.EQUIT : this.mode = this.OBLIQ,
            this.es > 0)
                switch (this.qp = Zt(this.e, 1),
                this.mmf = .5 / (1 - this.es),
                this.apa = function(t) {
                    var e, n = [];
                    return n[0] = .3333333333333333 * t,
                    e = t * t,
                    n[0] += .17222222222222222 * e,
                    n[1] = .06388888888888888 * e,
                    e *= t,
                    n[0] += .10257936507936508 * e,
                    n[1] += .0664021164021164 * e,
                    n[2] = .016415012942191543 * e,
                    n
                }(this.es),
                this.mode) {
                case this.N_POLE:
                case this.S_POLE:
                    this.dd = 1;
                    break;
                case this.EQUIT:
                    this.rq = Math.sqrt(.5 * this.qp),
                    this.dd = 1 / this.rq,
                    this.xmf = 1,
                    this.ymf = .5 * this.qp;
                    break;
                case this.OBLIQ:
                    this.rq = Math.sqrt(.5 * this.qp),
                    t = Math.sin(this.lat0),
                    this.sinb1 = Zt(this.e, t) / this.qp,
                    this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1),
                    this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * t * t) * this.rq * this.cosb1),
                    this.ymf = (this.xmf = this.rq) / this.dd,
                    this.xmf *= this.dd
                }
            else
                this.mode === this.OBLIQ && (this.sinph0 = Math.sin(this.lat0),
                this.cosph0 = Math.cos(this.lat0))
        },
        forward: function(t) {
            var e, n, i, o, a, c, l, u, d, p, h = t.x, f = t.y;
            if (h = R(h - this.long0),
            this.sphere) {
                if (a = Math.sin(f),
                p = Math.cos(f),
                i = Math.cos(h),
                this.mode === this.OBLIQ || this.mode === this.EQUIT) {
                    if ((n = this.mode === this.EQUIT ? 1 + p * i : 1 + this.sinph0 * a + this.cosph0 * p * i) <= 1e-10)
                        return null;
                    e = (n = Math.sqrt(2 / n)) * p * Math.sin(h),
                    n *= this.mode === this.EQUIT ? a : this.cosph0 * a - this.sinph0 * p * i
                } else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {
                    if (this.mode === this.N_POLE && (i = -i),
                    Math.abs(f + this.lat0) < 1e-10)
                        return null;
                    n = s - .5 * f,
                    e = (n = 2 * (this.mode === this.S_POLE ? Math.cos(n) : Math.sin(n))) * Math.sin(h),
                    n *= i
                }
            } else {
                switch (l = 0,
                u = 0,
                d = 0,
                i = Math.cos(h),
                o = Math.sin(h),
                a = Math.sin(f),
                c = Zt(this.e, a),
                this.mode !== this.OBLIQ && this.mode !== this.EQUIT || (l = c / this.qp,
                u = Math.sqrt(1 - l * l)),
                this.mode) {
                case this.OBLIQ:
                    d = 1 + this.sinb1 * l + this.cosb1 * u * i;
                    break;
                case this.EQUIT:
                    d = 1 + u * i;
                    break;
                case this.N_POLE:
                    d = r + f,
                    c = this.qp - c;
                    break;
                case this.S_POLE:
                    d = f - r,
                    c = this.qp + c
                }
                if (Math.abs(d) < 1e-10)
                    return null;
                switch (this.mode) {
                case this.OBLIQ:
                case this.EQUIT:
                    d = Math.sqrt(2 / d),
                    n = this.mode === this.OBLIQ ? this.ymf * d * (this.cosb1 * l - this.sinb1 * u * i) : (d = Math.sqrt(2 / (1 + u * i))) * l * this.ymf,
                    e = this.xmf * d * u * o;
                    break;
                case this.N_POLE:
                case this.S_POLE:
                    c >= 0 ? (e = (d = Math.sqrt(c)) * o,
                    n = i * (this.mode === this.S_POLE ? d : -d)) : e = n = 0
                }
            }
            return t.x = this.a * e + this.x0,
            t.y = this.a * n + this.y0,
            t
        },
        inverse: function(t) {
            t.x -= this.x0,
            t.y -= this.y0;
            var e, n, i, o, a, s, c, l, u, d, p = t.x / this.a, h = t.y / this.a;
            if (this.sphere) {
                var f, m = 0, g = 0;
                if ((n = .5 * (f = Math.sqrt(p * p + h * h))) > 1)
                    return null;
                switch (n = 2 * Math.asin(n),
                this.mode !== this.OBLIQ && this.mode !== this.EQUIT || (g = Math.sin(n),
                m = Math.cos(n)),
                this.mode) {
                case this.EQUIT:
                    n = Math.abs(f) <= 1e-10 ? 0 : Math.asin(h * g / f),
                    p *= g,
                    h = m * f;
                    break;
                case this.OBLIQ:
                    n = Math.abs(f) <= 1e-10 ? this.lat0 : Math.asin(m * this.sinph0 + h * g * this.cosph0 / f),
                    p *= g * this.cosph0,
                    h = (m - Math.sin(n) * this.sinph0) * f;
                    break;
                case this.N_POLE:
                    h = -h,
                    n = r - n;
                    break;
                case this.S_POLE:
                    n -= r
                }
                e = 0 !== h || this.mode !== this.EQUIT && this.mode !== this.OBLIQ ? Math.atan2(p, h) : 0
            } else {
                if (c = 0,
                this.mode === this.OBLIQ || this.mode === this.EQUIT) {
                    if (p /= this.dd,
                    h *= this.dd,
                    (s = Math.sqrt(p * p + h * h)) < 1e-10)
                        return t.x = this.long0,
                        t.y = this.lat0,
                        t;
                    o = 2 * Math.asin(.5 * s / this.rq),
                    i = Math.cos(o),
                    p *= o = Math.sin(o),
                    this.mode === this.OBLIQ ? (c = i * this.sinb1 + h * o * this.cosb1 / s,
                    a = this.qp * c,
                    h = s * this.cosb1 * i - h * this.sinb1 * o) : (c = h * o / s,
                    a = this.qp * c,
                    h = s * i)
                } else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {
                    if (this.mode === this.N_POLE && (h = -h),
                    !(a = p * p + h * h))
                        return t.x = this.long0,
                        t.y = this.lat0,
                        t;
                    c = 1 - a / this.qp,
                    this.mode === this.S_POLE && (c = -c)
                }
                e = Math.atan2(p, h),
                l = Math.asin(c),
                u = this.apa,
                d = l + l,
                n = l + u[0] * Math.sin(d) + u[1] * Math.sin(d + d) + u[2] * Math.sin(d + d + d)
            }
            return t.x = R(this.long0 + e),
            t.y = n,
            t
        },
        names: ["Lambert Azimuthal Equal Area", "Lambert_Azimuthal_Equal_Area", "laea"],
        S_POLE: 1,
        N_POLE: 2,
        EQUIT: 3,
        OBLIQ: 4
    }
      , Qt = function(t) {
        return Math.abs(t) > 1 && (t = t > 1 ? 1 : -1),
        Math.asin(t)
    };
    var $t = {
        init: function() {
            Math.abs(this.lat1 + this.lat2) < 1e-10 || (this.temp = this.b / this.a,
            this.es = 1 - Math.pow(this.temp, 2),
            this.e3 = Math.sqrt(this.es),
            this.sin_po = Math.sin(this.lat1),
            this.cos_po = Math.cos(this.lat1),
            this.t1 = this.sin_po,
            this.con = this.sin_po,
            this.ms1 = k(this.e3, this.sin_po, this.cos_po),
            this.qs1 = Zt(this.e3, this.sin_po, this.cos_po),
            this.sin_po = Math.sin(this.lat2),
            this.cos_po = Math.cos(this.lat2),
            this.t2 = this.sin_po,
            this.ms2 = k(this.e3, this.sin_po, this.cos_po),
            this.qs2 = Zt(this.e3, this.sin_po, this.cos_po),
            this.sin_po = Math.sin(this.lat0),
            this.cos_po = Math.cos(this.lat0),
            this.t3 = this.sin_po,
            this.qs0 = Zt(this.e3, this.sin_po, this.cos_po),
            Math.abs(this.lat1 - this.lat2) > 1e-10 ? this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1) : this.ns0 = this.con,
            this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1,
            this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0)
        },
        forward: function(t) {
            var e = t.x
              , n = t.y;
            this.sin_phi = Math.sin(n),
            this.cos_phi = Math.cos(n);
            var i = Zt(this.e3, this.sin_phi, this.cos_phi)
              , r = this.a * Math.sqrt(this.c - this.ns0 * i) / this.ns0
              , o = this.ns0 * R(e - this.long0)
              , a = r * Math.sin(o) + this.x0
              , s = this.rh - r * Math.cos(o) + this.y0;
            return t.x = a,
            t.y = s,
            t
        },
        inverse: function(t) {
            var e, n, i, r, o, a;
            return t.x -= this.x0,
            t.y = this.rh - t.y + this.y0,
            this.ns0 >= 0 ? (e = Math.sqrt(t.x * t.x + t.y * t.y),
            i = 1) : (e = -Math.sqrt(t.x * t.x + t.y * t.y),
            i = -1),
            r = 0,
            0 !== e && (r = Math.atan2(i * t.x, i * t.y)),
            i = e * this.ns0 / this.a,
            this.sphere ? a = Math.asin((this.c - i * i) / (2 * this.ns0)) : (n = (this.c - i * i) / this.ns0,
            a = this.phi1z(this.e3, n)),
            o = R(r / this.ns0 + this.long0),
            t.x = o,
            t.y = a,
            t
        },
        names: ["Albers_Conic_Equal_Area", "Albers", "aea"],
        phi1z: function(t, e) {
            var n, i, r, o, a = Qt(.5 * e);
            if (t < 1e-10)
                return a;
            for (var s = t * t, c = 1; c <= 25; c++)
                if (a += o = .5 * (r = 1 - (i = t * (n = Math.sin(a))) * i) * r / Math.cos(a) * (e / (1 - s) - n / r + .5 / t * Math.log((1 - i) / (1 + i))),
                Math.abs(o) <= 1e-7)
                    return a;
            return null
        }
    };
    var te = {
        init: function() {
            this.sin_p14 = Math.sin(this.lat0),
            this.cos_p14 = Math.cos(this.lat0),
            this.infinity_dist = 1e3 * this.a,
            this.rc = 1
        },
        forward: function(t) {
            var e, n, i, r, o, a, s, c = t.x, l = t.y;
            return i = R(c - this.long0),
            e = Math.sin(l),
            n = Math.cos(l),
            r = Math.cos(i),
            1,
            (o = this.sin_p14 * e + this.cos_p14 * n * r) > 0 || Math.abs(o) <= 1e-10 ? (a = this.x0 + 1 * this.a * n * Math.sin(i) / o,
            s = this.y0 + 1 * this.a * (this.cos_p14 * e - this.sin_p14 * n * r) / o) : (a = this.x0 + this.infinity_dist * n * Math.sin(i),
            s = this.y0 + this.infinity_dist * (this.cos_p14 * e - this.sin_p14 * n * r)),
            t.x = a,
            t.y = s,
            t
        },
        inverse: function(t) {
            var e, n, i, r, o, a;
            return t.x = (t.x - this.x0) / this.a,
            t.y = (t.y - this.y0) / this.a,
            t.x /= this.k0,
            t.y /= this.k0,
            (e = Math.sqrt(t.x * t.x + t.y * t.y)) ? (r = Math.atan2(e, this.rc),
            n = Math.sin(r),
            i = Math.cos(r),
            a = Qt(i * this.sin_p14 + t.y * n * this.cos_p14 / e),
            o = Math.atan2(t.x * n, e * this.cos_p14 * i - t.y * this.sin_p14 * n),
            o = R(this.long0 + o)) : (a = this.phic0,
            o = 0),
            t.x = o,
            t.y = a,
            t
        },
        names: ["gnom"]
    };
    var ee = {
        init: function() {
            this.sphere || (this.k0 = k(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)))
        },
        forward: function(t) {
            var e, n, i = t.x, r = t.y, o = R(i - this.long0);
            if (this.sphere)
                e = this.x0 + this.a * o * Math.cos(this.lat_ts),
                n = this.y0 + this.a * Math.sin(r) / Math.cos(this.lat_ts);
            else {
                var a = Zt(this.e, Math.sin(r));
                e = this.x0 + this.a * this.k0 * o,
                n = this.y0 + this.a * a * .5 / this.k0
            }
            return t.x = e,
            t.y = n,
            t
        },
        inverse: function(t) {
            var e, n;
            return t.x -= this.x0,
            t.y -= this.y0,
            this.sphere ? (e = R(this.long0 + t.x / this.a / Math.cos(this.lat_ts)),
            n = Math.asin(t.y / this.a * Math.cos(this.lat_ts))) : (n = function(t, e) {
                var n = 1 - (1 - t * t) / (2 * t) * Math.log((1 - t) / (1 + t));
                if (Math.abs(Math.abs(e) - n) < 1e-6)
                    return e < 0 ? -1 * r : r;
                for (var i, o, a, s, c = Math.asin(.5 * e), l = 0; l < 30; l++)
                    if (o = Math.sin(c),
                    a = Math.cos(c),
                    s = t * o,
                    c += i = Math.pow(1 - s * s, 2) / (2 * a) * (e / (1 - t * t) - o / (1 - s * s) + .5 / t * Math.log((1 - s) / (1 + s))),
                    Math.abs(i) <= 1e-10)
                        return c;
                return NaN
            }(this.e, 2 * t.y * this.k0 / this.a),
            e = R(this.long0 + t.x / (this.a * this.k0))),
            t.x = e,
            t.y = n,
            t
        },
        names: ["cea"]
    };
    var ne = {
        init: function() {
            this.x0 = this.x0 || 0,
            this.y0 = this.y0 || 0,
            this.lat0 = this.lat0 || 0,
            this.long0 = this.long0 || 0,
            this.lat_ts = this.lat_ts || 0,
            this.title = this.title || "Equidistant Cylindrical (Plate Carre)",
            this.rc = Math.cos(this.lat_ts)
        },
        forward: function(t) {
            var e = t.x
              , n = t.y
              , i = R(e - this.long0)
              , r = Xt(n - this.lat0);
            return t.x = this.x0 + this.a * i * this.rc,
            t.y = this.y0 + this.a * r,
            t
        },
        inverse: function(t) {
            var e = t.x
              , n = t.y;
            return t.x = R(this.long0 + (e - this.x0) / (this.a * this.rc)),
            t.y = Xt(this.lat0 + (n - this.y0) / this.a),
            t
        },
        names: ["Equirectangular", "Equidistant_Cylindrical", "eqc"]
    };
    var ie = {
        init: function() {
            this.temp = this.b / this.a,
            this.es = 1 - Math.pow(this.temp, 2),
            this.e = Math.sqrt(this.es),
            this.e0 = zt(this.es),
            this.e1 = Gt(this.es),
            this.e2 = Ht(this.es),
            this.e3 = Wt(this.es),
            this.ml0 = this.a * Bt(this.e0, this.e1, this.e2, this.e3, this.lat0)
        },
        forward: function(t) {
            var e, n, i, r = t.x, o = t.y, a = R(r - this.long0);
            if (i = a * Math.sin(o),
            this.sphere)
                Math.abs(o) <= 1e-10 ? (e = this.a * a,
                n = -1 * this.a * this.lat0) : (e = this.a * Math.sin(i) / Math.tan(o),
                n = this.a * (Xt(o - this.lat0) + (1 - Math.cos(i)) / Math.tan(o)));
            else if (Math.abs(o) <= 1e-10)
                e = this.a * a,
                n = -1 * this.ml0;
            else {
                var s = qt(this.a, this.e, Math.sin(o)) / Math.tan(o);
                e = s * Math.sin(i),
                n = this.a * Bt(this.e0, this.e1, this.e2, this.e3, o) - this.ml0 + s * (1 - Math.cos(i))
            }
            return t.x = e + this.x0,
            t.y = n + this.y0,
            t
        },
        inverse: function(t) {
            var e, n, i, r, o, a, s, c, l;
            if (i = t.x - this.x0,
            r = t.y - this.y0,
            this.sphere)
                if (Math.abs(r + this.a * this.lat0) <= 1e-10)
                    e = R(i / this.a + this.long0),
                    n = 0;
                else {
                    var u;
                    for (a = this.lat0 + r / this.a,
                    s = i * i / this.a / this.a + a * a,
                    c = a,
                    o = 20; o; --o)
                        if (c += l = -1 * (a * (c * (u = Math.tan(c)) + 1) - c - .5 * (c * c + s) * u) / ((c - a) / u - 1),
                        Math.abs(l) <= 1e-10) {
                            n = c;
                            break
                        }
                    e = R(this.long0 + Math.asin(i * Math.tan(c) / this.a) / Math.sin(n))
                }
            else if (Math.abs(r + this.ml0) <= 1e-10)
                n = 0,
                e = R(this.long0 + i / this.a);
            else {
                var d, p, h, f, m;
                for (a = (this.ml0 + r) / this.a,
                s = i * i / this.a / this.a + a * a,
                c = a,
                o = 20; o; --o)
                    if (m = this.e * Math.sin(c),
                    d = Math.sqrt(1 - m * m) * Math.tan(c),
                    p = this.a * Bt(this.e0, this.e1, this.e2, this.e3, c),
                    h = this.e0 - 2 * this.e1 * Math.cos(2 * c) + 4 * this.e2 * Math.cos(4 * c) - 6 * this.e3 * Math.cos(6 * c),
                    c -= l = (a * (d * (f = p / this.a) + 1) - f - .5 * d * (f * f + s)) / (this.es * Math.sin(2 * c) * (f * f + s - 2 * a * f) / (4 * d) + (a - f) * (d * h - 2 / Math.sin(2 * c)) - h),
                    Math.abs(l) <= 1e-10) {
                        n = c;
                        break
                    }
                d = Math.sqrt(1 - this.es * Math.pow(Math.sin(n), 2)) * Math.tan(n),
                e = R(this.long0 + Math.asin(i * d / this.a) / Math.sin(n))
            }
            return t.x = e,
            t.y = n,
            t
        },
        names: ["Polyconic", "poly"]
    };
    var re = {
        init: function() {
            this.A = [],
            this.A[1] = .6399175073,
            this.A[2] = -.1358797613,
            this.A[3] = .063294409,
            this.A[4] = -.02526853,
            this.A[5] = .0117879,
            this.A[6] = -.0055161,
            this.A[7] = .0026906,
            this.A[8] = -.001333,
            this.A[9] = 67e-5,
            this.A[10] = -34e-5,
            this.B_re = [],
            this.B_im = [],
            this.B_re[1] = .7557853228,
            this.B_im[1] = 0,
            this.B_re[2] = .249204646,
            this.B_im[2] = .003371507,
            this.B_re[3] = -.001541739,
            this.B_im[3] = .04105856,
            this.B_re[4] = -.10162907,
            this.B_im[4] = .01727609,
            this.B_re[5] = -.26623489,
            this.B_im[5] = -.36249218,
            this.B_re[6] = -.6870983,
            this.B_im[6] = -1.1651967,
            this.C_re = [],
            this.C_im = [],
            this.C_re[1] = 1.3231270439,
            this.C_im[1] = 0,
            this.C_re[2] = -.577245789,
            this.C_im[2] = -.007809598,
            this.C_re[3] = .508307513,
            this.C_im[3] = -.112208952,
            this.C_re[4] = -.15094762,
            this.C_im[4] = .18200602,
            this.C_re[5] = 1.01418179,
            this.C_im[5] = 1.64497696,
            this.C_re[6] = 1.9660549,
            this.C_im[6] = 2.5127645,
            this.D = [],
            this.D[1] = 1.5627014243,
            this.D[2] = .5185406398,
            this.D[3] = -.03333098,
            this.D[4] = -.1052906,
            this.D[5] = -.0368594,
            this.D[6] = .007317,
            this.D[7] = .0122,
            this.D[8] = .00394,
            this.D[9] = -.0013
        },
        forward: function(t) {
            var e, n = t.x, r = t.y - this.lat0, o = n - this.long0, a = r / i * 1e-5, s = o, c = 1, l = 0;
            for (e = 1; e <= 10; e++)
                c *= a,
                l += this.A[e] * c;
            var u, d = l, p = s, h = 1, f = 0, m = 0, g = 0;
            for (e = 1; e <= 6; e++)
                u = f * d + h * p,
                h = h * d - f * p,
                f = u,
                m = m + this.B_re[e] * h - this.B_im[e] * f,
                g = g + this.B_im[e] * h + this.B_re[e] * f;
            return t.x = g * this.a + this.x0,
            t.y = m * this.a + this.y0,
            t
        },
        inverse: function(t) {
            var e, n, r = t.x, o = t.y, a = r - this.x0, s = (o - this.y0) / this.a, c = a / this.a, l = 1, u = 0, d = 0, p = 0;
            for (e = 1; e <= 6; e++)
                n = u * s + l * c,
                l = l * s - u * c,
                u = n,
                d = d + this.C_re[e] * l - this.C_im[e] * u,
                p = p + this.C_im[e] * l + this.C_re[e] * u;
            for (var h = 0; h < this.iterations; h++) {
                var f, m = d, g = p, v = s, y = c;
                for (e = 2; e <= 6; e++)
                    f = g * d + m * p,
                    m = m * d - g * p,
                    g = f,
                    v += (e - 1) * (this.B_re[e] * m - this.B_im[e] * g),
                    y += (e - 1) * (this.B_im[e] * m + this.B_re[e] * g);
                m = 1,
                g = 0;
                var b = this.B_re[1]
                  , w = this.B_im[1];
                for (e = 2; e <= 6; e++)
                    f = g * d + m * p,
                    m = m * d - g * p,
                    g = f,
                    b += e * (this.B_re[e] * m - this.B_im[e] * g),
                    w += e * (this.B_im[e] * m + this.B_re[e] * g);
                var S = b * b + w * w;
                d = (v * b + y * w) / S,
                p = (y * b - v * w) / S
            }
            var x = d
              , M = p
              , E = 1
              , C = 0;
            for (e = 1; e <= 9; e++)
                E *= x,
                C += this.D[e] * E;
            var A = this.lat0 + C * i * 1e5
              , T = this.long0 + M;
            return t.x = T,
            t.y = A,
            t
        },
        names: ["New_Zealand_Map_Grid", "nzmg"]
    };
    var oe = {
        init: function() {},
        forward: function(t) {
            var e = t.x
              , n = t.y
              , i = R(e - this.long0)
              , r = this.x0 + this.a * i
              , o = this.y0 + this.a * Math.log(Math.tan(Math.PI / 4 + n / 2.5)) * 1.25;
            return t.x = r,
            t.y = o,
            t
        },
        inverse: function(t) {
            t.x -= this.x0,
            t.y -= this.y0;
            var e = R(this.long0 + t.x / this.a)
              , n = 2.5 * (Math.atan(Math.exp(.8 * t.y / this.a)) - Math.PI / 4);
            return t.x = e,
            t.y = n,
            t
        },
        names: ["Miller_Cylindrical", "mill"]
    };
    var ae = {
        init: function() {
            this.sphere ? (this.n = 1,
            this.m = 0,
            this.es = 0,
            this.C_y = Math.sqrt((this.m + 1) / this.n),
            this.C_x = this.C_y / (this.m + 1)) : this.en = xt(this.es)
        },
        forward: function(t) {
            var e, n, i = t.x, r = t.y;
            if (i = R(i - this.long0),
            this.sphere) {
                if (this.m)
                    for (var o = this.n * Math.sin(r), a = 20; a; --a) {
                        var s = (this.m * r + Math.sin(r) - o) / (this.m + Math.cos(r));
                        if (r -= s,
                        Math.abs(s) < 1e-10)
                            break
                    }
                else
                    r = 1 !== this.n ? Math.asin(this.n * Math.sin(r)) : r;
                e = this.a * this.C_x * i * (this.m + Math.cos(r)),
                n = this.a * this.C_y * r
            } else {
                var c = Math.sin(r)
                  , l = Math.cos(r);
                n = this.a * Mt(r, c, l, this.en),
                e = this.a * i * l / Math.sqrt(1 - this.es * c * c)
            }
            return t.x = e,
            t.y = n,
            t
        },
        inverse: function(t) {
            var e, n, i, o;
            return t.x -= this.x0,
            i = t.x / this.a,
            t.y -= this.y0,
            e = t.y / this.a,
            this.sphere ? (e /= this.C_y,
            i /= this.C_x * (this.m + Math.cos(e)),
            this.m ? e = Qt((this.m * e + Math.sin(e)) / this.n) : 1 !== this.n && (e = Qt(Math.sin(e) / this.n)),
            i = R(i + this.long0),
            e = Xt(e)) : (e = Et(t.y / this.a, this.es, this.en),
            (o = Math.abs(e)) < r ? (o = Math.sin(e),
            n = this.long0 + t.x * Math.sqrt(1 - this.es * o * o) / (this.a * Math.cos(e)),
            i = R(n)) : o - 1e-10 < r && (i = this.long0)),
            t.x = i,
            t.y = e,
            t
        },
        names: ["Sinusoidal", "sinu"]
    };
    var se = {
        init: function() {},
        forward: function(t) {
            for (var e = t.x, n = t.y, i = R(e - this.long0), r = n, o = Math.PI * Math.sin(n); ; ) {
                var a = -(r + Math.sin(r) - o) / (1 + Math.cos(r));
                if (r += a,
                Math.abs(a) < 1e-10)
                    break
            }
            r /= 2,
            Math.PI / 2 - Math.abs(n) < 1e-10 && (i = 0);
            var s = .900316316158 * this.a * i * Math.cos(r) + this.x0
              , c = 1.4142135623731 * this.a * Math.sin(r) + this.y0;
            return t.x = s,
            t.y = c,
            t
        },
        inverse: function(t) {
            var e, n;
            t.x -= this.x0,
            t.y -= this.y0,
            n = t.y / (1.4142135623731 * this.a),
            Math.abs(n) > .999999999999 && (n = .999999999999),
            e = Math.asin(n);
            var i = R(this.long0 + t.x / (.900316316158 * this.a * Math.cos(e)));
            i < -Math.PI && (i = -Math.PI),
            i > Math.PI && (i = Math.PI),
            n = (2 * e + Math.sin(2 * e)) / Math.PI,
            Math.abs(n) > 1 && (n = 1);
            var r = Math.asin(n);
            return t.x = i,
            t.y = r,
            t
        },
        names: ["Mollweide", "moll"]
    };
    var ce = {
        init: function() {
            Math.abs(this.lat1 + this.lat2) < 1e-10 || (this.lat2 = this.lat2 || this.lat1,
            this.temp = this.b / this.a,
            this.es = 1 - Math.pow(this.temp, 2),
            this.e = Math.sqrt(this.es),
            this.e0 = zt(this.es),
            this.e1 = Gt(this.es),
            this.e2 = Ht(this.es),
            this.e3 = Wt(this.es),
            this.sinphi = Math.sin(this.lat1),
            this.cosphi = Math.cos(this.lat1),
            this.ms1 = k(this.e, this.sinphi, this.cosphi),
            this.ml1 = Bt(this.e0, this.e1, this.e2, this.e3, this.lat1),
            Math.abs(this.lat1 - this.lat2) < 1e-10 ? this.ns = this.sinphi : (this.sinphi = Math.sin(this.lat2),
            this.cosphi = Math.cos(this.lat2),
            this.ms2 = k(this.e, this.sinphi, this.cosphi),
            this.ml2 = Bt(this.e0, this.e1, this.e2, this.e3, this.lat2),
            this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1)),
            this.g = this.ml1 + this.ms1 / this.ns,
            this.ml0 = Bt(this.e0, this.e1, this.e2, this.e3, this.lat0),
            this.rh = this.a * (this.g - this.ml0))
        },
        forward: function(t) {
            var e, n = t.x, i = t.y;
            if (this.sphere)
                e = this.a * (this.g - i);
            else {
                var r = Bt(this.e0, this.e1, this.e2, this.e3, i);
                e = this.a * (this.g - r)
            }
            var o = this.ns * R(n - this.long0)
              , a = this.x0 + e * Math.sin(o)
              , s = this.y0 + this.rh - e * Math.cos(o);
            return t.x = a,
            t.y = s,
            t
        },
        inverse: function(t) {
            var e, n, i, r;
            t.x -= this.x0,
            t.y = this.rh - t.y + this.y0,
            this.ns >= 0 ? (n = Math.sqrt(t.x * t.x + t.y * t.y),
            e = 1) : (n = -Math.sqrt(t.x * t.x + t.y * t.y),
            e = -1);
            var o = 0;
            if (0 !== n && (o = Math.atan2(e * t.x, e * t.y)),
            this.sphere)
                return r = R(this.long0 + o / this.ns),
                i = Xt(this.g - n / this.a),
                t.x = r,
                t.y = i,
                t;
            var a = this.g - n / this.a;
            return i = Yt(a, this.e0, this.e1, this.e2, this.e3),
            r = R(this.long0 + o / this.ns),
            t.x = r,
            t.y = i,
            t
        },
        names: ["Equidistant_Conic", "eqdc"]
    };
    var le = {
        init: function() {
            this.R = this.a
        },
        forward: function(t) {
            var e, n, i = t.x, o = t.y, a = R(i - this.long0);
            Math.abs(o) <= 1e-10 && (e = this.x0 + this.R * a,
            n = this.y0);
            var s = Qt(2 * Math.abs(o / Math.PI));
            (Math.abs(a) <= 1e-10 || Math.abs(Math.abs(o) - r) <= 1e-10) && (e = this.x0,
            n = o >= 0 ? this.y0 + Math.PI * this.R * Math.tan(.5 * s) : this.y0 + Math.PI * this.R * -Math.tan(.5 * s));
            var c = .5 * Math.abs(Math.PI / a - a / Math.PI)
              , l = c * c
              , u = Math.sin(s)
              , d = Math.cos(s)
              , p = d / (u + d - 1)
              , h = p * p
              , f = p * (2 / u - 1)
              , m = f * f
              , g = Math.PI * this.R * (c * (p - m) + Math.sqrt(l * (p - m) * (p - m) - (m + l) * (h - m))) / (m + l);
            a < 0 && (g = -g),
            e = this.x0 + g;
            var v = l + p;
            return g = Math.PI * this.R * (f * v - c * Math.sqrt((m + l) * (l + 1) - v * v)) / (m + l),
            n = o >= 0 ? this.y0 + g : this.y0 - g,
            t.x = e,
            t.y = n,
            t
        },
        inverse: function(t) {
            var e, n, i, r, o, a, s, c, l, u, d, p;
            return t.x -= this.x0,
            t.y -= this.y0,
            d = Math.PI * this.R,
            o = (i = t.x / d) * i + (r = t.y / d) * r,
            d = 3 * (r * r / (c = -2 * (a = -Math.abs(r) * (1 + o)) + 1 + 2 * r * r + o * o) + (2 * (s = a - 2 * r * r + i * i) * s * s / c / c / c - 9 * a * s / c / c) / 27) / (l = (a - s * s / 3 / c) / c) / (u = 2 * Math.sqrt(-l / 3)),
            Math.abs(d) > 1 && (d = d >= 0 ? 1 : -1),
            p = Math.acos(d) / 3,
            n = t.y >= 0 ? (-u * Math.cos(p + Math.PI / 3) - s / 3 / c) * Math.PI : -(-u * Math.cos(p + Math.PI / 3) - s / 3 / c) * Math.PI,
            e = Math.abs(i) < 1e-10 ? this.long0 : R(this.long0 + Math.PI * (o - 1 + Math.sqrt(1 + 2 * (i * i - r * r) + o * o)) / 2 / i),
            t.x = e,
            t.y = n,
            t
        },
        names: ["Van_der_Grinten_I", "VanDerGrinten", "vandg"]
    };
    var ue = {
        init: function() {
            this.sin_p12 = Math.sin(this.lat0),
            this.cos_p12 = Math.cos(this.lat0)
        },
        forward: function(t) {
            var e, n, i, o, a, s, c, l, u, d, p, h, f, m, g, v, y, b, w, S, x, M, E = t.x, C = t.y, A = Math.sin(t.y), T = Math.cos(t.y), O = R(E - this.long0);
            return this.sphere ? Math.abs(this.sin_p12 - 1) <= 1e-10 ? (t.x = this.x0 + this.a * (r - C) * Math.sin(O),
            t.y = this.y0 - this.a * (r - C) * Math.cos(O),
            t) : Math.abs(this.sin_p12 + 1) <= 1e-10 ? (t.x = this.x0 + this.a * (r + C) * Math.sin(O),
            t.y = this.y0 + this.a * (r + C) * Math.cos(O),
            t) : (b = this.sin_p12 * A + this.cos_p12 * T * Math.cos(O),
            y = (v = Math.acos(b)) ? v / Math.sin(v) : 1,
            t.x = this.x0 + this.a * y * T * Math.sin(O),
            t.y = this.y0 + this.a * y * (this.cos_p12 * A - this.sin_p12 * T * Math.cos(O)),
            t) : (e = zt(this.es),
            n = Gt(this.es),
            i = Ht(this.es),
            o = Wt(this.es),
            Math.abs(this.sin_p12 - 1) <= 1e-10 ? (a = this.a * Bt(e, n, i, o, r),
            s = this.a * Bt(e, n, i, o, C),
            t.x = this.x0 + (a - s) * Math.sin(O),
            t.y = this.y0 - (a - s) * Math.cos(O),
            t) : Math.abs(this.sin_p12 + 1) <= 1e-10 ? (a = this.a * Bt(e, n, i, o, r),
            s = this.a * Bt(e, n, i, o, C),
            t.x = this.x0 + (a + s) * Math.sin(O),
            t.y = this.y0 + (a + s) * Math.cos(O),
            t) : (c = A / T,
            l = qt(this.a, this.e, this.sin_p12),
            u = qt(this.a, this.e, A),
            d = Math.atan((1 - this.es) * c + this.es * l * this.sin_p12 / (u * T)),
            w = 0 === (p = Math.atan2(Math.sin(O), this.cos_p12 * Math.tan(d) - this.sin_p12 * Math.cos(O))) ? Math.asin(this.cos_p12 * Math.sin(d) - this.sin_p12 * Math.cos(d)) : Math.abs(Math.abs(p) - Math.PI) <= 1e-10 ? -Math.asin(this.cos_p12 * Math.sin(d) - this.sin_p12 * Math.cos(d)) : Math.asin(Math.sin(O) * Math.cos(d) / Math.sin(p)),
            h = this.e * this.sin_p12 / Math.sqrt(1 - this.es),
            v = l * w * (1 - (S = w * w) * (g = (f = this.e * this.cos_p12 * Math.cos(p) / Math.sqrt(1 - this.es)) * f) * (1 - g) / 6 + (x = S * w) / 8 * (m = h * f) * (1 - 2 * g) + (M = x * w) / 120 * (g * (4 - 7 * g) - 3 * h * h * (1 - 7 * g)) - M * w / 48 * m),
            t.x = this.x0 + v * Math.sin(p),
            t.y = this.y0 + v * Math.cos(p),
            t))
        },
        inverse: function(t) {
            var e, n, i, o, a, s, c, l, u, d, p, h, f, m, g, v, y, b, w, S, x, M, E;
            if (t.x -= this.x0,
            t.y -= this.y0,
            this.sphere) {
                if ((e = Math.sqrt(t.x * t.x + t.y * t.y)) > 2 * r * this.a)
                    return;
                return n = e / this.a,
                i = Math.sin(n),
                o = Math.cos(n),
                a = this.long0,
                Math.abs(e) <= 1e-10 ? s = this.lat0 : (s = Qt(o * this.sin_p12 + t.y * i * this.cos_p12 / e),
                c = Math.abs(this.lat0) - r,
                a = Math.abs(c) <= 1e-10 ? this.lat0 >= 0 ? R(this.long0 + Math.atan2(t.x, -t.y)) : R(this.long0 - Math.atan2(-t.x, t.y)) : R(this.long0 + Math.atan2(t.x * i, e * this.cos_p12 * o - t.y * this.sin_p12 * i))),
                t.x = a,
                t.y = s,
                t
            }
            return l = zt(this.es),
            u = Gt(this.es),
            d = Ht(this.es),
            p = Wt(this.es),
            Math.abs(this.sin_p12 - 1) <= 1e-10 ? (h = this.a * Bt(l, u, d, p, r),
            e = Math.sqrt(t.x * t.x + t.y * t.y),
            s = Yt((h - e) / this.a, l, u, d, p),
            a = R(this.long0 + Math.atan2(t.x, -1 * t.y)),
            t.x = a,
            t.y = s,
            t) : Math.abs(this.sin_p12 + 1) <= 1e-10 ? (h = this.a * Bt(l, u, d, p, r),
            e = Math.sqrt(t.x * t.x + t.y * t.y),
            s = Yt((e - h) / this.a, l, u, d, p),
            a = R(this.long0 + Math.atan2(t.x, t.y)),
            t.x = a,
            t.y = s,
            t) : (e = Math.sqrt(t.x * t.x + t.y * t.y),
            g = Math.atan2(t.x, t.y),
            f = qt(this.a, this.e, this.sin_p12),
            v = Math.cos(g),
            b = -(y = this.e * this.cos_p12 * v) * y / (1 - this.es),
            w = 3 * this.es * (1 - b) * this.sin_p12 * this.cos_p12 * v / (1 - this.es),
            M = 1 - b * (x = (S = e / f) - b * (1 + b) * Math.pow(S, 3) / 6 - w * (1 + 3 * b) * Math.pow(S, 4) / 24) * x / 2 - S * x * x * x / 6,
            m = Math.asin(this.sin_p12 * Math.cos(x) + this.cos_p12 * Math.sin(x) * v),
            a = R(this.long0 + Math.asin(Math.sin(g) * Math.sin(x) / Math.cos(m))),
            E = Math.sin(m),
            s = Math.atan2((E - this.es * M * this.sin_p12) * Math.tan(m), E * (1 - this.es)),
            t.x = a,
            t.y = s,
            t)
        },
        names: ["Azimuthal_Equidistant", "aeqd"]
    };
    var de = {
        init: function() {
            this.sin_p14 = Math.sin(this.lat0),
            this.cos_p14 = Math.cos(this.lat0)
        },
        forward: function(t) {
            var e, n, i, r, o, a, s, c = t.x, l = t.y;
            return i = R(c - this.long0),
            e = Math.sin(l),
            n = Math.cos(l),
            r = Math.cos(i),
            1,
            ((o = this.sin_p14 * e + this.cos_p14 * n * r) > 0 || Math.abs(o) <= 1e-10) && (a = 1 * this.a * n * Math.sin(i),
            s = this.y0 + 1 * this.a * (this.cos_p14 * e - this.sin_p14 * n * r)),
            t.x = a,
            t.y = s,
            t
        },
        inverse: function(t) {
            var e, n, i, o, a, s, c;
            return t.x -= this.x0,
            t.y -= this.y0,
            e = Math.sqrt(t.x * t.x + t.y * t.y),
            n = Qt(e / this.a),
            i = Math.sin(n),
            o = Math.cos(n),
            s = this.long0,
            Math.abs(e) <= 1e-10 ? (c = this.lat0,
            t.x = s,
            t.y = c,
            t) : (c = Qt(o * this.sin_p14 + t.y * i * this.cos_p14 / e),
            a = Math.abs(this.lat0) - r,
            Math.abs(a) <= 1e-10 ? (s = this.lat0 >= 0 ? R(this.long0 + Math.atan2(t.x, -t.y)) : R(this.long0 - Math.atan2(-t.x, t.y)),
            t.x = s,
            t.y = c,
            t) : (s = R(this.long0 + Math.atan2(t.x * i, e * this.cos_p14 * o - t.y * this.sin_p14 * i)),
            t.x = s,
            t.y = c,
            t))
        },
        names: ["ortho"]
    }
      , pe = 1
      , he = 2
      , fe = 3
      , me = 4
      , ge = 5
      , ve = 6
      , ye = 1
      , be = 2
      , we = 3
      , Se = 4;
    function xe(t, e, n, i) {
        var o;
        return t < 1e-10 ? (i.value = ye,
        o = 0) : (o = Math.atan2(e, n),
        Math.abs(o) <= s ? i.value = ye : o > s && o <= r + s ? (i.value = be,
        o -= r) : o > r + s || o <= -(r + s) ? (i.value = we,
        o = o >= 0 ? o - l : o + l) : (i.value = Se,
        o += r)),
        o
    }
    function Me(t, e) {
        var n = t + e;
        return n < -l ? n += c : n > +l && (n -= c),
        n
    }
    var Ee = {
        init: function() {
            this.x0 = this.x0 || 0,
            this.y0 = this.y0 || 0,
            this.lat0 = this.lat0 || 0,
            this.long0 = this.long0 || 0,
            this.lat_ts = this.lat_ts || 0,
            this.title = this.title || "Quadrilateralized Spherical Cube",
            this.lat0 >= r - s / 2 ? this.face = ge : this.lat0 <= -(r - s / 2) ? this.face = ve : Math.abs(this.long0) <= s ? this.face = pe : Math.abs(this.long0) <= r + s ? this.face = this.long0 > 0 ? he : me : this.face = fe,
            0 !== this.es && (this.one_minus_f = 1 - (this.a - this.b) / this.a,
            this.one_minus_f_squared = this.one_minus_f * this.one_minus_f)
        },
        forward: function(t) {
            var e, n, i, o, a, c, u = {
                x: 0,
                y: 0
            }, d = {
                value: 0
            };
            if (t.x -= this.long0,
            e = 0 !== this.es ? Math.atan(this.one_minus_f_squared * Math.tan(t.y)) : t.y,
            n = t.x,
            this.face === ge)
                o = r - e,
                n >= s && n <= r + s ? (d.value = ye,
                i = n - r) : n > r + s || n <= -(r + s) ? (d.value = be,
                i = n > 0 ? n - l : n + l) : n > -(r + s) && n <= -s ? (d.value = we,
                i = n + r) : (d.value = Se,
                i = n);
            else if (this.face === ve)
                o = r + e,
                n >= s && n <= r + s ? (d.value = ye,
                i = -n + r) : n < s && n >= -s ? (d.value = be,
                i = -n) : n < -s && n >= -(r + s) ? (d.value = we,
                i = -n - r) : (d.value = Se,
                i = n > 0 ? -n + l : -n - l);
            else {
                var p, h, f, m, g, v;
                this.face === he ? n = Me(n, +r) : this.face === fe ? n = Me(n, +l) : this.face === me && (n = Me(n, -r)),
                m = Math.sin(e),
                g = Math.cos(e),
                v = Math.sin(n),
                p = g * Math.cos(n),
                h = g * v,
                f = m,
                this.face === pe ? i = xe(o = Math.acos(p), f, h, d) : this.face === he ? i = xe(o = Math.acos(h), f, -p, d) : this.face === fe ? i = xe(o = Math.acos(-p), f, -h, d) : this.face === me ? i = xe(o = Math.acos(-h), f, p, d) : (o = i = 0,
                d.value = ye)
            }
            return c = Math.atan(12 / l * (i + Math.acos(Math.sin(i) * Math.cos(s)) - r)),
            a = Math.sqrt((1 - Math.cos(o)) / (Math.cos(c) * Math.cos(c)) / (1 - Math.cos(Math.atan(1 / Math.cos(i))))),
            d.value === be ? c += r : d.value === we ? c += l : d.value === Se && (c += 1.5 * l),
            u.x = a * Math.cos(c),
            u.y = a * Math.sin(c),
            u.x = u.x * this.a + this.x0,
            u.y = u.y * this.a + this.y0,
            t.x = u.x,
            t.y = u.y,
            t
        },
        inverse: function(t) {
            var e, n, i, o, a, s, c, u, d, p, h, f, m = {
                lam: 0,
                phi: 0
            }, g = {
                value: 0
            };
            if (t.x = (t.x - this.x0) / this.a,
            t.y = (t.y - this.y0) / this.a,
            n = Math.atan(Math.sqrt(t.x * t.x + t.y * t.y)),
            e = Math.atan2(t.y, t.x),
            t.x >= 0 && t.x >= Math.abs(t.y) ? g.value = ye : t.y >= 0 && t.y >= Math.abs(t.x) ? (g.value = be,
            e -= r) : t.x < 0 && -t.x >= Math.abs(t.y) ? (g.value = we,
            e = e < 0 ? e + l : e - l) : (g.value = Se,
            e += r),
            d = l / 12 * Math.tan(e),
            a = Math.sin(d) / (Math.cos(d) - 1 / Math.sqrt(2)),
            s = Math.atan(a),
            (c = 1 - (i = Math.cos(e)) * i * (o = Math.tan(n)) * o * (1 - Math.cos(Math.atan(1 / Math.cos(s))))) < -1 ? c = -1 : c > 1 && (c = 1),
            this.face === ge)
                u = Math.acos(c),
                m.phi = r - u,
                g.value === ye ? m.lam = s + r : g.value === be ? m.lam = s < 0 ? s + l : s - l : g.value === we ? m.lam = s - r : m.lam = s;
            else if (this.face === ve)
                u = Math.acos(c),
                m.phi = u - r,
                g.value === ye ? m.lam = -s + r : g.value === be ? m.lam = -s : g.value === we ? m.lam = -s - r : m.lam = s < 0 ? -s - l : -s + l;
            else {
                var v, y, b;
                d = (v = c) * v,
                y = (d += (b = d >= 1 ? 0 : Math.sqrt(1 - d) * Math.sin(s)) * b) >= 1 ? 0 : Math.sqrt(1 - d),
                g.value === be ? (d = y,
                y = -b,
                b = d) : g.value === we ? (y = -y,
                b = -b) : g.value === Se && (d = y,
                y = b,
                b = -d),
                this.face === he ? (d = v,
                v = -y,
                y = d) : this.face === fe ? (v = -v,
                y = -y) : this.face === me && (d = v,
                v = y,
                y = -d),
                m.phi = Math.acos(-b) - r,
                m.lam = Math.atan2(y, v),
                this.face === he ? m.lam = Me(m.lam, -r) : this.face === fe ? m.lam = Me(m.lam, -l) : this.face === me && (m.lam = Me(m.lam, +r))
            }
            return 0 !== this.es && (p = m.phi < 0 ? 1 : 0,
            h = Math.tan(m.phi),
            f = this.b / Math.sqrt(h * h + this.one_minus_f_squared),
            m.phi = Math.atan(Math.sqrt(this.a * this.a - f * f) / (this.one_minus_f * f)),
            p && (m.phi = -m.phi)),
            m.lam += this.long0,
            t.x = m.lam,
            t.y = m.phi,
            t
        },
        names: ["Quadrilateralized Spherical Cube", "Quadrilateralized_Spherical_Cube", "qsc"]
    }
      , Ce = [[1, 22199e-21, -715515e-10, 31103e-10], [.9986, -482243e-9, -24897e-9, -13309e-10], [.9954, -83103e-8, -448605e-10, -9.86701e-7], [.99, -.00135364, -59661e-9, 36777e-10], [.9822, -.00167442, -449547e-11, -572411e-11], [.973, -.00214868, -903571e-10, 1.8736e-8], [.96, -.00305085, -900761e-10, 164917e-11], [.9427, -.00382792, -653386e-10, -26154e-10], [.9216, -.00467746, -10457e-8, 481243e-11], [.8962, -.00536223, -323831e-10, -543432e-11], [.8679, -.00609363, -113898e-9, 332484e-11], [.835, -.00698325, -640253e-10, 9.34959e-7], [.7986, -.00755338, -500009e-10, 9.35324e-7], [.7597, -.00798324, -35971e-9, -227626e-11], [.7186, -.00851367, -701149e-10, -86303e-10], [.6732, -.00986209, -199569e-9, 191974e-10], [.6213, -.010418, 883923e-10, 624051e-11], [.5722, -.00906601, 182e-6, 624051e-11], [.5322, -.00677797, 275608e-9, 624051e-11]]
      , Ae = [[-520417e-23, .0124, 121431e-23, -845284e-16], [.062, .0124, -1.26793e-9, 4.22642e-10], [.124, .0124, 5.07171e-9, -1.60604e-9], [.186, .0123999, -1.90189e-8, 6.00152e-9], [.248, .0124002, 7.10039e-8, -2.24e-8], [.31, .0123992, -2.64997e-7, 8.35986e-8], [.372, .0124029, 9.88983e-7, -3.11994e-7], [.434, .0123893, -369093e-11, -4.35621e-7], [.4958, .0123198, -102252e-10, -3.45523e-7], [.5571, .0121916, -154081e-10, -5.82288e-7], [.6176, .0119938, -241424e-10, -5.25327e-7], [.6769, .011713, -320223e-10, -5.16405e-7], [.7346, .0113541, -397684e-10, -6.09052e-7], [.7903, .0109107, -489042e-10, -104739e-11], [.8435, .0103431, -64615e-9, -1.40374e-9], [.8936, .00969686, -64636e-9, -8547e-9], [.9394, .00840947, -192841e-9, -42106e-10], [.9761, .00616527, -256e-6, -42106e-10], [1, .00328947, -319159e-9, -42106e-10]]
      , Te = a / 5
      , Oe = function(t, e) {
        return t[0] + e * (t[1] + e * (t[2] + e * t[3]))
    };
    var _e = {
        init: function() {
            this.x0 = this.x0 || 0,
            this.y0 = this.y0 || 0,
            this.long0 = this.long0 || 0,
            this.es = 0,
            this.title = this.title || "Robinson"
        },
        forward: function(t) {
            var e = R(t.x - this.long0)
              , n = Math.abs(t.y)
              , i = Math.floor(n * Te);
            i < 0 ? i = 0 : i >= 18 && (i = 17);
            var r = {
                x: Oe(Ce[i], n = a * (n - .08726646259971647 * i)) * e,
                y: Oe(Ae[i], n)
            };
            return t.y < 0 && (r.y = -r.y),
            r.x = r.x * this.a * .8487 + this.x0,
            r.y = r.y * this.a * 1.3523 + this.y0,
            r
        },
        inverse: function(t) {
            var e = {
                x: (t.x - this.x0) / (.8487 * this.a),
                y: Math.abs(t.y - this.y0) / (1.3523 * this.a)
            };
            if (e.y >= 1)
                e.x /= Ce[18][0],
                e.y = t.y < 0 ? -r : r;
            else {
                var n = Math.floor(18 * e.y);
                for (n < 0 ? n = 0 : n >= 18 && (n = 17); ; )
                    if (Ae[n][0] > e.y)
                        --n;
                    else {
                        if (!(Ae[n + 1][0] <= e.y))
                            break;
                        ++n
                    }
                var i = Ae[n]
                  , a = 5 * (e.y - i[0]) / (Ae[n + 1][0] - i[0]);
                a = function(t, e, n, i) {
                    for (var r = e; i; --i) {
                        var o = t(r);
                        if (r -= o,
                        Math.abs(o) < n)
                            break
                    }
                    return r
                }((function(t) {
                    return (Oe(i, t) - e.y) / function(t, e) {
                        return t[1] + e * (2 * t[2] + 3 * e * t[3])
                    }(i, t)
                }
                ), a, 1e-10, 100),
                e.x /= Oe(Ce[n], a),
                e.y = (5 * n + a) * o,
                t.y < 0 && (e.y = -e.y)
            }
            return e.x = R(e.x + this.long0),
            e
        },
        names: ["Robinson", "robin"]
    };
    var Pe, Ie = {
        init: function() {
            this.name = "geocent"
        },
        forward: function(t) {
            return K(t, this.es, this.a)
        },
        inverse: function(t) {
            return Z(t, this.es, this.a, this.b)
        },
        names: ["Geocentric", "geocentric", "geocent", "Geocent"]
    };
    at.defaultDatum = "WGS84",
    at.Proj = Y,
    at.WGS84 = new at.Proj("WGS84"),
    at.Point = wt,
    at.toPoint = tt,
    at.defs = T,
    at.transform = nt,
    at.mgrs = lt,
    at.version = "__VERSION__",
    (Pe = at).Proj.projections.add(Ct),
    Pe.Proj.projections.add(It),
    Pe.Proj.projections.add(kt),
    Pe.Proj.projections.add(Lt),
    Pe.Proj.projections.add(Nt),
    Pe.Proj.projections.add(jt),
    Pe.Proj.projections.add(Vt),
    Pe.Proj.projections.add(Ft),
    Pe.Proj.projections.add(Ut),
    Pe.Proj.projections.add(Kt),
    Pe.Proj.projections.add(Jt),
    Pe.Proj.projections.add($t),
    Pe.Proj.projections.add(te),
    Pe.Proj.projections.add(ee),
    Pe.Proj.projections.add(ne),
    Pe.Proj.projections.add(ie),
    Pe.Proj.projections.add(re),
    Pe.Proj.projections.add(oe),
    Pe.Proj.projections.add(ae),
    Pe.Proj.projections.add(se),
    Pe.Proj.projections.add(ce),
    Pe.Proj.projections.add(le),
    Pe.Proj.projections.add(ue),
    Pe.Proj.projections.add(de),
    Pe.Proj.projections.add(Ee),
    Pe.Proj.projections.add(_e),
    Pe.Proj.projections.add(Ie);
    e.default = at
}
]);